diff --git a/.circleci/config.yml b/.circleci/config.yml index bf6513533..749402c7f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -670,6 +670,13 @@ jobs: - run: name: test:coverage:jest command: yarn test:coverage:jest + - run: + name: Validate coverage thresholds + command: | + if ! git diff --exit-code jest.config.js development/jest.config.js; then + echo "Detected changes in coverage thresholds" + exit 1 + fi - persist_to_workspace: root: . paths: diff --git a/.circleci/scripts/chrome-install.sh b/.circleci/scripts/chrome-install.sh index 8be51ad30..441e61124 100755 --- a/.circleci/scripts/chrome-install.sh +++ b/.circleci/scripts/chrome-install.sh @@ -5,12 +5,12 @@ set -u set -o pipefail # To get the latest version, see -CHROME_VERSION='100.0.4896.60-1' +CHROME_VERSION='101.0.4951.54-1' CHROME_BINARY="google-chrome-stable_${CHROME_VERSION}_amd64.deb" CHROME_BINARY_URL="https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/${CHROME_BINARY}" # To retrieve this checksum, run the `wget` and `shasum` commands below -CHROME_BINARY_SHA512SUM='d7a98777650e8218fef4acc8466d4ddf5e234b97fbc16c33f38f69f9ebfe7b6bb6827a90aad15ea729d7c1bacfa78488c5d5194b531f00f454302dd9c0957e4e' +CHROME_BINARY_SHA512SUM='46ebc53c806f179a5f9ab570c1097c2d35fc437dd4f5bd3fb34e758dc4f306771ceb05f8df7d450584355abf35bae34c0e70903e4f0312e2d3caa34491c8f622' wget -O "${CHROME_BINARY}" -t 5 "${CHROME_BINARY_URL}" diff --git a/.circleci/scripts/yarn-audit.sh b/.circleci/scripts/yarn-audit.sh index f9e83e654..80f23aadf 100755 --- a/.circleci/scripts/yarn-audit.sh +++ b/.circleci/scripts/yarn-audit.sh @@ -6,13 +6,13 @@ set -x set -o pipefail # use `improved-yarn-audit` since that allows for exclude -# exclude 1002401 until we remove use of 3Box, 1002581 until we can find a better solution -yarn run improved-yarn-audit --ignore-dev-deps --min-severity moderate --exclude GHSA-93q8-gq69-wqmw,GHSA-257v-vj4p-3w2h,GHSA-fwr7-v2mv-hh25 -audit_status="$?" +# exclusions are in .iyarc now +yarn run improved-yarn-audit \ + --ignore-dev-deps \ + --min-severity moderate \ + --fail-on-missing-exclusions -# Use a bitmask to ignore INFO and LOW severity audit results -# See here: https://yarnpkg.com/lang/en/docs/cli/audit/ -audit_status="$(( audit_status & 11100 ))" +audit_status="$?" if [[ "$audit_status" != 0 ]] then diff --git a/.eslintrc.js b/.eslintrc.js index 98a57e079..2001994f4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -44,14 +44,6 @@ module.exports = { path.resolve(__dirname, '.eslintrc.babel.js'), path.resolve(__dirname, '.eslintrc.typescript-compat.js'), ], - parserOptions: { - sourceType: 'module', - }, - rules: { - // This rule does not work with CommonJS modules. We will just have to - // trust that all of the files specified above are indeed modules. - 'import/unambiguous': 'off', - }, settings: { 'import/resolver': { // When determining the location of a `require()` call, use Node's diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 889bd9d1b..90450a395 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -1,7 +1,7 @@ name: Bug Report description: Using MetaMask, but it's not working as you expect? title: "[Bug]: " -labels: ["bug"] +labels: ["type-bug"] body: - type: markdown attributes: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index da7708be2..6df4c6e65 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -15,7 +15,7 @@ This is a problem because ... In order to solve this problem, this pull request ... --> -## More information +## More Information -## Manual testing steps +## Manual Testing Steps + +## Pre-Merge Checklist + +- [ ] PR template is filled out +- [ ] **IF** this PR fixes a bug, a test that _would have_ caught the bug has been added +- [ ] PR is linked to the appropriate GitHub issue +- [ ] PR has been added to the appropriate release Milestone + +### + If there are functional changes: + +- [ ] Manual testing complete & passed +- [ ] "Extension QA Board" label has been applied diff --git a/.github/workflows/crowdin_action.yml b/.github/workflows/crowdin_action.yml index 9ddc21705..a77592321 100644 --- a/.github/workflows/crowdin_action.yml +++ b/.github/workflows/crowdin_action.yml @@ -21,7 +21,7 @@ jobs: uses: actions/checkout@v2 - name: crowdin action - uses: crowdin/github-action@9237b4cb361788dfce63feb2e2f15c09e2fe7415 + uses: crowdin/github-action@a3160b9e5a9e00739392c23da5e580c6cabe526d with: upload_translations: true download_translations: true diff --git a/.iyarc b/.iyarc new file mode 100644 index 000000000..66e5dd446 --- /dev/null +++ b/.iyarc @@ -0,0 +1,4 @@ +# improved-yarn-audit advisory exclusions +GHSA-93q8-gq69-wqmw +GHSA-257v-vj4p-3w2h +GHSA-wm7h-9275-46v2 diff --git a/.storybook/3.COLORS.stories.mdx b/.storybook/3.COLORS.stories.mdx index b694a721a..507fade1c 100644 --- a/.storybook/3.COLORS.stories.mdx +++ b/.storybook/3.COLORS.stories.mdx @@ -67,6 +67,7 @@ var(--color-text-muted) /** Icons */ var(--color-icon-default) +var(--color-icon-alternative) var(--color-icon-muted) /** Borders */ @@ -75,20 +76,20 @@ var(--color-border-muted) /** Overlays */ var(--color-overlay-default) -var(--color-overlay-inverse) +var(--color-overlay-inverse) [DEPRECATED] /** User Actions */ var(--color-primary-default) var(--color-primary-alternative) var(--color-primary-muted) var(--color-primary-inverse) -var(--color-primary-disabled) +var(--color-primary-disabled) [DEPRECATED] -var(--color-secondary-default) -var(--color-secondary-alternative) -var(--color-secondary-muted) -var(--color-secondary-inverse) -var(--color-secondary-disabled) +var(--color-secondary-default) [DEPRECATED] +var(--color-secondary-alternative) [DEPRECATED] +var(--color-secondary-muted) [DEPRECATED] +var(--color-secondary-inverse) [DEPRECATED] +var(--color-secondary-disabled) [DEPRECATED] /** States */ /** Error */ @@ -96,28 +97,28 @@ var(--color-error-default) var(--color-error-alternative) var(--color-error-muted) var(--color-error-inverse) -var(--color-error-disabled) +var(--color-error-disabled) [DEPRECATED] /** Warning */ var(--color-warning-default) -var(--color-warning-alternative) +var(--color-warning-alternative) [DEPRECATED] var(--color-warning-muted) var(--color-warning-inverse) -var(--color-warning-disabled) +var(--color-warning-disabled) [DEPRECATED] /** Success */ var(--color-success-default) -var(--color-success-alternative) +var(--color-success-alternative) [DEPRECATED] var(--color-success-muted) var(--color-success-inverse) -var(--color-success-disabled) +var(--color-success-disabled) [DEPRECATED] /** Info */ var(--color-info-default) -var(--color-info-alternative) +var(--color-info-alternative) [DEPRECATED] var(--color-info-muted) var(--color-info-inverse) -var(--color-info-disabled) +var(--color-info-disabled) [DEPRECATED] ``` ### **Component colors** (tier 3) diff --git a/.storybook/test-data.js b/.storybook/test-data.js index 6188a6122..44038239d 100644 --- a/.storybook/test-data.js +++ b/.storybook/test-data.js @@ -112,6 +112,65 @@ const state = { ], metamask: { tokenList: { + '0x514910771af9ca656af840dff83e8264ecf986ca': { + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + symbol: 'LINK', + decimals: 18, + name: 'ChainLink Token', + iconUrl: 'https://crypto.com/price/coin-data/icon/LINK/color_icon.png', + aggregators: [ + 'Aave', + 'Bancor', + 'CMC', + 'Crypto.com', + 'CoinGecko', + '1inch', + 'Paraswap', + 'PMM', + 'Zapper', + 'Zerion', + '0x', + ], + occurrences: 12, + unlisted: false + }, + '0xc00e94cb662c3520282e6f5717214004a7f26888': { + address: '0xc00e94cb662c3520282e6f5717214004a7f26888', + symbol: 'COMP', + decimals: 18, + name: 'Compound', + iconUrl: 'https://crypto.com/price/coin-data/icon/COMP/color_icon.png', + aggregators: [ + 'Bancor', + 'CMC', + 'Crypto.com', + 'CoinGecko', + '1inch', + 'Paraswap', + 'PMM', + 'Zapper', + 'Zerion', + '0x', + ], + occurrences: 12, + unlisted: false + }, + '0xfffffffff15abf397da76f1dcc1a1604f45126db': { + address: '0xfffffffff15abf397da76f1dcc1a1604f45126db', + symbol: 'FSW', + decimals: 18, + name: 'Falconswap', + iconUrl: 'https://assets.coingecko.com/coins/images/12256/thumb/falconswap.png?1598534184', + aggregators: [ + 'CoinGecko', + '1inch', + 'Paraswap', + 'Zapper', + 'Zerion', + ], + occurrences: 12, + unlisted: false + }, '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f': { address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', symbol: 'SNX', @@ -425,6 +484,35 @@ const state = { decimals: 18, }, ], + detectedTokens: [ + { + address: "0x514910771AF9Ca656af840dff83E8264EcF986CA", + decimals: 18, + symbol: "LINK", + image: "https://crypto.com/price/coin-data/icon/LINK/color_icon.png", + aggregators:[ + "coinGecko","oneInch","paraswap","zapper","zerion" + ] + }, + { + address: "0xc00e94Cb662C3520282E6f5717214004A7f26888", + decimals: 18, + symbol: "COMP", + image: "https://crypto.com/price/coin-data/icon/COMP/color_icon.png", + aggregators:[ + "bancor","cmc","cryptocom","coinGecko","oneInch","paraswap","pmm","zapper","zerion","zeroEx" + ] + }, + { + address: "0xfffffffFf15AbF397dA76f1dcc1A1604F45126DB", + decimals: 18, + symbol: "FSW", + image: "https://assets.coingecko.com/coins/images/12256/thumb/falconswap.png?1598534184", + aggregators:[ + "aave", "cmc","coinGecko","oneInch","paraswap","zapper","zerion" + ] + } + ], pendingTokens: {}, customNonceValue: '', send: { @@ -1248,20 +1336,7 @@ const state = { method: 'eth_accounts', methodType: 'restricted', origin: 'https://metamask.io', - request: { - method: 'eth_accounts', - params: [], - jsonrpc: '2.0', - id: 522690215, - origin: 'https://metamask.io', - tabId: 5, - }, requestTime: 1602643170686, - response: { - id: 522690215, - jsonrpc: '2.0', - result: [], - }, responseTime: 1602643170688, success: true, }, @@ -1270,20 +1345,7 @@ const state = { method: 'eth_accounts', methodType: 'restricted', origin: 'https://widget.getacute.io', - request: { - method: 'eth_accounts', - params: [], - jsonrpc: '2.0', - id: 1620464600, - origin: 'https://widget.getacute.io', - tabId: 5, - }, requestTime: 1602643172935, - response: { - id: 1620464600, - jsonrpc: '2.0', - result: [], - }, responseTime: 1602643172935, success: true, }, @@ -1292,19 +1354,7 @@ const state = { method: 'eth_accounts', methodType: 'restricted', origin: 'https://app.uniswap.org', - request: { - method: 'eth_accounts', - jsonrpc: '2.0', - id: 4279100021, - origin: 'https://app.uniswap.org', - tabId: 5, - }, requestTime: 1620710669962, - response: { - id: 4279100021, - jsonrpc: '2.0', - result: [], - }, responseTime: 1620710669963, success: true, }, @@ -1313,19 +1363,7 @@ const state = { method: 'eth_requestAccounts', methodType: 'restricted', origin: 'https://app.uniswap.org', - request: { - method: 'eth_requestAccounts', - jsonrpc: '2.0', - id: 4279100022, - origin: 'https://app.uniswap.org', - tabId: 5, - }, requestTime: 1620710686872, - response: { - id: 4279100022, - jsonrpc: '2.0', - result: ['0x64a845a5b02460acf8a3d84503b0d68d028b4bb4'], - }, responseTime: 1620710693187, success: true, }, @@ -1334,19 +1372,7 @@ const state = { method: 'eth_requestAccounts', methodType: 'restricted', origin: 'https://app.uniswap.org', - request: { - method: 'eth_requestAccounts', - jsonrpc: '2.0', - id: 4279100023, - origin: 'https://app.uniswap.org', - tabId: 5, - }, requestTime: 1620710693204, - response: { - id: 4279100023, - jsonrpc: '2.0', - result: ['0x64a845a5b02460acf8a3d84503b0d68d028b4bb4'], - }, responseTime: 1620710693213, success: true, }, @@ -1355,20 +1381,7 @@ const state = { method: 'eth_accounts', methodType: 'restricted', origin: 'https://app.uniswap.org', - request: { - method: 'eth_accounts', - params: [], - jsonrpc: '2.0', - id: 4279100034, - origin: 'https://app.uniswap.org', - tabId: 5, - }, requestTime: 1620710712072, - response: { - id: 4279100034, - jsonrpc: '2.0', - result: ['0x64a845a5b02460acf8a3d84503b0d68d028b4bb4'], - }, responseTime: 1620710712075, success: true, }, diff --git a/README.md b/README.md index d609aafd2..1a4e7ca70 100644 --- a/README.md +++ b/README.md @@ -60,9 +60,23 @@ You can run the linter by itself with `yarn lint`, and you can automatically fix Our e2e test suite can be run on either Firefox or Chrome. In either case, start by creating a test build by running `yarn build:test`. -Firefox e2e tests can be run with `yarn test:e2e:firefox`. +- Firefox e2e tests can be run with `yarn test:e2e:firefox`. -Chrome e2e tests can be run with `yarn test:e2e:chrome`, but they will only work if you have Chrome v79 installed. Update the `chromedriver` package to a version matching your local Chrome installation to run e2e tests on newer Chrome versions. +- Chrome e2e tests can be run with `yarn test:e2e:chrome`. The `chromedriver` package major version must match the major version of your local Chrome installation. If they don't match, update whichever is behind before running Chrome e2e tests. + +- Single e2e tests can be run with `yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js` along with the options below. + +```console +--browser Set the browser used; either 'chrome' or 'firefox'. + +--leave-running Leaves the browser running after a test fails, along with anything else + that the test used (ganache, the test dapp, etc.). + +--retries Set how many times the test should be retried upon failure. Default is 0. +``` + +An example for running `account-details` testcase with chrome and leaving the browser open would be: +`yarn test:e2e:single test/e2e/tests/account-details.spec.js --browser=chrome --leave-running` ### Changing dependencies diff --git a/app/_locales/am/messages.json b/app/_locales/am/messages.json index bfbbac952..6a3d69bc2 100644 --- a/app/_locales/am/messages.json +++ b/app/_locales/am/messages.json @@ -131,10 +131,10 @@ "message": "ማሰሺያዎት አልተደገፈም..." }, "buyWithWyre": { - "message": "ETH በ Wyre ይግዙ" + "message": "$1 በ Wyre ይግዙ" }, "buyWithWyreDescription": { - "message": "Wyre ክሬዲት ካርድ ተጠቅመው ETH በቀጥታ በ MetaMask መለያዎ ላይ እንዲያስቀምጡ ያስችልዎታል።" + "message": "Wyre ክሬዲት ካርድ ተጠቅመው $1 በቀጥታ በ MetaMask መለያዎ ላይ እንዲያስቀምጡ ያስችልዎታል።" }, "bytes": { "message": "ባይት" diff --git a/app/_locales/ar/messages.json b/app/_locales/ar/messages.json index e87624ee2..6d99fc54b 100644 --- a/app/_locales/ar/messages.json +++ b/app/_locales/ar/messages.json @@ -148,7 +148,7 @@ "message": "قم بشراء عملة إيثير بواسطة Wyre" }, "buyWithWyreDescription": { - "message": "يتيح لك Wyre استخدام بطاقة ائتمان لإيداع ETH مباشرة في حساب MetaMask الخاص بك." + "message": "يتيح لك Wyre استخدام بطاقة ائتمان لإيداع 1$ مباشرة في حساب MetaMask الخاص بك." }, "bytes": { "message": "بايتات" diff --git a/app/_locales/bg/messages.json b/app/_locales/bg/messages.json index 9d4534adb..49b768365 100644 --- a/app/_locales/bg/messages.json +++ b/app/_locales/bg/messages.json @@ -137,10 +137,10 @@ "message": "Браузърът ви не се поддържа ..." }, "buyWithWyre": { - "message": "Купете ETH с Wyre" + "message": "Купете $1 с Wyre" }, "buyWithWyreDescription": { - "message": "Wyre ви позволява да използвате кредитна карта, за да депозирате ETH право във вашата MetaMask сметка." + "message": "Wyre ви позволява да използвате кредитна карта, за да депозирате $1 право във вашата MetaMask сметка." }, "bytes": { "message": "Байта" diff --git a/app/_locales/bn/messages.json b/app/_locales/bn/messages.json index 7dd74c5eb..88fedac63 100644 --- a/app/_locales/bn/messages.json +++ b/app/_locales/bn/messages.json @@ -137,10 +137,10 @@ "message": "আপনার ব্রাউজার সমর্থিত নয়..." }, "buyWithWyre": { - "message": "Wyre দিয়ে ETH ক্রয় করুন" + "message": "Wyre দিয়ে $1 ক্রয় করুন" }, "buyWithWyreDescription": { - "message": "Wyre আপনার MetaMask অ্যাকাউন্টে সরাসরি ETH জমা করতে আপনাকে একটি ক্রেডিট কার্ড ব্যবহার করতে দেয়।" + "message": "Wyre আপনার MetaMask অ্যাকাউন্টে সরাসরি $1 জমা করতে আপনাকে একটি ক্রেডিট কার্ড ব্যবহার করতে দেয়।" }, "bytes": { "message": "বাইটস" diff --git a/app/_locales/ca/messages.json b/app/_locales/ca/messages.json index 34abb31dc..3bdaf93ba 100644 --- a/app/_locales/ca/messages.json +++ b/app/_locales/ca/messages.json @@ -137,10 +137,10 @@ "message": "El teu navegador no és suportat..." }, "buyWithWyre": { - "message": "Compra ETH amb Wyre" + "message": "Compra $1 amb Wyre" }, "buyWithWyreDescription": { - "message": "Wyre et permet utilitzar una targeta de crèdit per dipositar ETH directe al teu compte MetaMask." + "message": "Wyre et permet utilitzar una targeta de crèdit per dipositar $1 directe al teu compte MetaMask." }, "cancel": { "message": "Cancel·la" diff --git a/app/_locales/da/messages.json b/app/_locales/da/messages.json index 248404f43..4b642ef37 100644 --- a/app/_locales/da/messages.json +++ b/app/_locales/da/messages.json @@ -137,10 +137,10 @@ "message": "Din browser er ikke understøttet..." }, "buyWithWyre": { - "message": "Køb ETH med Wyre" + "message": "Køb $1 med Wyre" }, "buyWithWyreDescription": { - "message": "Wyre lader dig bruge et kreditkort til at indbetale ETH på din MetaMask-konto." + "message": "Wyre lader dig bruge et kreditkort til at indbetale $1 på din MetaMask-konto." }, "bytes": { "message": "Byte" diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index e6d28003d..94f6d1846 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -58,6 +58,10 @@ "message": "$1 kann bis zu diesem maximalen Betrag abrufen und ausgeben", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 kann auf dieses Asset zugreifen und es ausgeben", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Zugriff auf Ihre Kamera …" }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Accountdetails" }, + "accountIdenticon": { + "message": "Konto-Identicon" + }, "accountName": { "message": "Accountname" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Ein neues Netzwerk hinzufügen" }, + "addANetworkManually": { + "message": "Ein Netzwerk manuell hinzufügen" + }, "addANickname": { "message": "Spitznamen hinzufügen" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Freunde und Adressen hinzufügen, welchen Sie vertrauen" }, + "addFromAListOfPopularNetworks": { + "message": "Fügen Sie ein Netzwerk aus einer Liste beliebter Netzwerke hinzu oder fügen Sie es manuell hinzu. Interagieren Sie nur mit Organisationen, denen Sie vertrauen." + }, "addMemo": { "message": "Notiz hinzufügen" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Ich stimme zu" }, - "aggregatorFeeCost": { - "message": "Aggregator-Netzwerkgebühr" + "airgapVault": { + "message": "AirGap-Tresor" + }, + "airgapVaultTutorial": { + "message": " (Tutorials)" }, "alertDisableTooltip": { "message": "Dies kann in \"Einstellungen > Warnungen\" geändert werden" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Netzwerkgebühr für Freigabe und Aggregator" - }, - "approvalTxGasCost": { - "message": "Tx-Gaskosten genehmigen" - }, "approve": { "message": "Genehmigen" }, + "approveAndInstall": { + "message": "Genehmigen und installieren" + }, "approveButtonText": { "message": "Genehmigen" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Genehmigter Betrag:" }, + "approvedAsset": { + "message": "Genehmigtes Asset" + }, + "areYouDeveloper": { + "message": "Sind Sie ein Entwickler?" + }, + "areYouSure": { + "message": "Sind Sie sicher?" + }, "asset": { "message": "Vermögenswert" }, @@ -356,6 +378,9 @@ "message": "Konto bei $1 anzeigen", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "Ihr Browser wird nicht unterstützt …" }, @@ -371,11 +396,30 @@ "buy": { "message": "Kaufen" }, + "buyAsset": { + "message": "$1 kaufen", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "$1 mit MoonPay kaufen", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay unterstützt gängige Zahlungsmethoden, einschließlich Visa, Mastercard, Apple/Google/ Samsung Pay und Banküberweisungen in über 145 Ländern. Token werden auf Ihr MetaMask-Konto eingezahlt." + }, + "buyCryptoWithTransak": { + "message": "$1 mit Transak kaufen", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak unterstützt Kredit- und Debitkarten, Apple Pay, MobiKwik und Banküberweisungen (je nach Standort) in über 100 Ländern. $1-Einzahlungen direkt auf Ihr MetaMask-Konto.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "ETH mit Wyre kaufen" + "message": "$1 mit Wyre kaufen" }, "buyWithWyreDescription": { - "message": "Wyre ermöglicht Ihnen die Verwendung einer Kreditkarte zum direkten Einzahlen von ETH auf Ihr MetaMask-Konto." + "message": "Wyre ermöglicht Ihnen die Verwendung einer Kreditkarte zum direkten Einzahlen von $1 auf Ihr MetaMask-Konto." }, "bytes": { "message": "Bytes" @@ -403,6 +447,9 @@ "message": "Für eine Transaktion im Wert von $1 muss die Gasgebühr um mindestens 10 % erhöht werden, damit sie vom Netz erkannt wird.", "description": "$1 is string 'cancel' or 'speed up'" }, + "cancelSwap": { + "message": "Swap abbrechen" + }, "cancellationGasFee": { "message": "Stornierungs-Gasgebühr" }, @@ -418,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "Diese Ketten-ID wird derzeit vom $1-Netzwerk verwendet." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Das Netzwerk mit der Chain-ID $1 verwendet möglicherweise ein anderes Währungssymbol ($2) als das, das Sie eingegeben haben. Bitte überprüfen Sie dies, bevor Sie fortfahren.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Sie müssen MetaMask unter Google Chrome nutzen, um sich mit Ihrem Hardware-Wallet zu verbinden." }, @@ -431,6 +482,13 @@ "close": { "message": "Schließen" }, + "collectibleAddFailedMessage": { + "message": "NFT kann nicht hinzugefügt werden, da die Eigentumsangaben nicht übereinstimmen. Stellen Sie sicher, dass Sie die richtigen Informationen eingegeben haben." + }, + "collectibleAddressError": { + "message": "Dieses Token ist ein NFT. Bei $1 hinzufügen", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Bestätigen" }, @@ -514,6 +572,10 @@ "message": "$1 ist mit keiner Site verbunden.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "$1-Snap ist mit diesen Sites verbunden. Sie haben Zugriff auf die oben aufgeführten Berechtigungen.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Verbinden..." }, @@ -544,6 +606,9 @@ "continue": { "message": "Weiter" }, + "continueToMoonPay": { + "message": "Weiter zu MoonPay" + }, "continueToTransak": { "message": "Weiter zur Transaktion" }, @@ -565,6 +630,12 @@ "contractInteraction": { "message": "Vertragsinteraktion" }, + "convertTokenToNFTDescription": { + "message": "Wir haben festgestellt, dass dieses Asset eine NFT ist. Metamask hat jetzt volle native Unterstützung für NFTs. Möchten Sie es aus Ihrer Tokenliste entfernen und als NFT hinzufügen?" + }, + "convertTokenToNFTExistDescription": { + "message": "Wir haben festgestellt, dass dieses Asset als NFT hinzugefügt wurde. Möchten Sie es aus Ihrer Token-Liste entfernen?" + }, "copiedExclamation": { "message": "Kopiert!" }, @@ -622,12 +693,28 @@ "currentlyUnavailable": { "message": "Nicht verfügbar in diesem Netzwerk" }, + "curveHighGasEstimate": { + "message": "Aggressives Gasschätzungsdiagramm" + }, + "curveLowGasEstimate": { + "message": "Diagramm für eine niedrige Gasschätzung" + }, + "curveMediumGasEstimate": { + "message": "Markt-Gasschätzungsdiagramm" + }, "custom": { "message": "Erweitert" }, + "customContentSearch": { + "message": "Suche nach einem zuvor hinzugefügten Netzwerk" + }, "customGas": { "message": "Gas anpassen" }, + "customGasSettingToolTipMessage": { + "message": "$1 verwenden, um den Gaspreis anzupassen. Das kann verwirrend sein, wenn Sie damit nicht vertraut sind. Interaktion auf eigene Gefahr.", + "description": "$1 is key 'advanced' (text: 'Advanced') separated here so that it can be passed in with bold fontweight" + }, "customGasSubTitle": { "message": "Höhere Gebühren können Bearbeitungszeiten verkürzen, wofür es allerdings keine Garantie gibt." }, @@ -637,6 +724,15 @@ "customToken": { "message": "Custom-Token" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "Die Token-Erkennung ist in diesem Netzwerk noch nicht verfügbar. Bitte importieren Sie das Token manuell und stellen Sie sicher, dass Sie ihm vertrauen. Erfahren Sie mehr über $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Vergewissern Sie sich vor dem manuellen Importieren eines Tokens, dass Sie ihm vertrauen. Erfahren Sie mehr über $1." + }, + "customerSupport": { + "message": "Kundensupport" + }, "dappSuggested": { "message": "Seite vorgeschlagen" }, @@ -651,6 +747,9 @@ "message": "$1 hat diesen Preis vorgeschlagen.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Dunkel" + }, "data": { "message": "Daten" }, @@ -658,7 +757,7 @@ "message": "Einige Ihrer Kontodaten wurden während einer früheren MetaMask-Installation gesichert. Dies könnte Ihre Einstellungen, Kontakte und Token umfassen. Möchten Sie diese Daten jetzt wiederherstellen?" }, "dataHex": { - "message": "Hex" + "message": "Hexadezimal" }, "decimal": { "message": "Dezimalangabe der Präzision" @@ -698,12 +797,22 @@ "deleteNetworkDescription": { "message": "Sind Sie sicher, dass Sie dieses Netzwerk löschen möchten?" }, + "depositCrypto": { + "message": "$1 einzahlen", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Beschreibung" }, "details": { "message": "Details" }, + "directDepositCrypto": { + "message": "Direkt $1 einzahlen" + }, + "directDepositCryptoExplainer": { + "message": "Wenn Sie bereits über $1 verfügen, ist eine direkte Einzahlung der schnellste Weg, um $1 auf Ihr Konto einzuzahlen." + }, "disabledGasOptionToolTipMessage": { "message": "“$1” ist deaktiviert, weil es nicht das Minimum einer zehnprozentigen Erhöhung gegenüber der ursprünglichen Gasgebühr erfüllt.", "description": "$1 is gas estimate type which can be market or aggressive" @@ -741,6 +850,9 @@ "dontShowThisAgain": { "message": "Nicht mehr anzeigen" }, + "downArrow": { + "message": "Pfeil nach unten" + }, "downloadGoogleChrome": { "message": "Google Chrome herunterladen" }, @@ -890,6 +1002,22 @@ "enableAutoDetect": { "message": " Auto-Erkennung aktivieren" }, + "enableEIP1559V2": { + "message": "Verbesserte Gasgebühr-UI aktivieren" + }, + "enableEIP1559V2AlertMessage": { + "message": "Wir haben die Funktionsweise der Gaspreisschätzung und -anpassung aktualisiert." + }, + "enableEIP1559V2ButtonText": { + "message": "Verbesserte Gaspreis-UI in Einstellungen einschalten" + }, + "enableEIP1559V2Description": { + "message": "Wir haben die Funktionsweise der Gasschätzung und -anpassung aktualisiert. Schalten Sie ein, wenn Sie das neue Gaserlebnis nutzen möchten. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Neues Gaserlebnis" + }, "enableFromSettings": { "message": " In den Einstellungen aktivieren." }, @@ -899,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "Verwenden Sie die OpenSea's API, um NFT-Daten abzurufen. Die NFT-Auto-Erkennung basiert auf der OpenSea's API und wird nicht verfügbar sein, wenn diese deaktiviert ist." }, + "enableSmartTransactions": { + "message": "Intelligente Transaktionen ermöglichen" + }, "enableToken": { "message": "$1 aktivieren", "description": "$1 is a token symbol, e.g. ETH" @@ -941,6 +1072,10 @@ "endOfFlowMessage9": { "message": "Mehr hierzu." }, + "endpointReturnedDifferentChainId": { + "message": "Die von Ihnen eingegebene RPC-URL hat eine andere Chain-ID ($1) zurückgegeben. Bitte aktualisieren Sie die Chain-ID, damit sie mit der RPC-URL des Netzwerks übereinstimmt, das Sie hinzufügen möchten.", + "description": "$1 is the return value of eth_chainId from an RPC endpoint" + }, "ensIllegalCharacter": { "message": "Unzulässiges Zeichen für ENS." }, @@ -1015,6 +1150,9 @@ "etherscanViewOn": { "message": "Auf Etherscan anzeigen" }, + "expandExperience": { + "message": "Erweitern Sie Ihre Web3-Erfahrung" + }, "expandView": { "message": "Ansicht erweitern" }, @@ -1027,16 +1165,15 @@ "externalExtension": { "message": "Externe Erweiterung" }, - "extraApprovalGas": { - "message": "+$1 Genehmigungsgas", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Fehlgeschlagen" }, "failedToFetchChainId": { "message": "Konnte die Ketten-ID nicht abrufen. Ist Ihre RPC-URL korrekt?" }, + "failedToFetchTickerSymbolData": { + "message": "Daten zur Überprüfung des Tickersymbols sind derzeit nicht verfügbar. Vergewissern Sie sich, dass das von Ihnen eingegebene Symbol korrekt ist. Es wirkt sich auf die Umrechnungskurse aus, die Sie für dieses Netzwerk sehen" + }, "failureMessage": { "message": "Etwas ist schief gelaufen und wir konnten die Aktion nicht abschließen" }, @@ -1072,6 +1209,26 @@ "message": "von", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "Sie sollten diese Erweiterung deinstallieren", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask ist für Entwickler gedacht, um mit neuen instabilen APIs zu experimentieren. Wenn Sie kein Entwickler oder Beta-Tester sind, $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Wir übernehmen keine Garantie für die Sicherheit oder Stabilität dieser Erweiterung. Die neuen von Flask angebotenen APIs sind nicht gegen Phishing-Angriffe gehärtet. Das bedeutet, dass jede Website oder jeder Snap, der Flask benötigt, ein böswilliger Versuch sein könnte, Ihre Assets zu stehlen.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Alle Flask-APIs sind experimentell. Sie können ohne Vorankündigung geändert oder entfernt werden oder sie können auf unbestimmte Zeit in Flask bleiben, ohne jemals in die stabile MetaMask migriert zu werden. Die Verwendung erfolgt auf eigene Gefahr.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Ich akzeptiere die Risiken", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Folgen Sie uns auf Twitter" }, @@ -1081,6 +1238,9 @@ "forgetDevice": { "message": "Dieses Gerät entfernen" }, + "forgotPassword": { + "message": "Passwort vergessen?" + }, "from": { "message": "Von" }, @@ -1088,6 +1248,9 @@ "message": "Von: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "Von Token-Liste: $1" + }, "functionApprove": { "message": "Funktion: Freigabe" }, @@ -1107,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Unsere niedrigen, mittleren und hohen Schätzungen sind nicht verfügbar." }, + "gasFee": { + "message": "Gasgebühr" + }, "gasLimit": { "message": "Gaslimit" }, "gasLimitInfoTooltipContent": { "message": "Die Gasgrenze ist die Höchstmenge an Gaseinheiten, die Sie auszugeben bereit sind." }, + "gasLimitRecommended": { + "message": "Empfohlenes Gaslimit ist $1. Wenn das Gaslimit weniger beträgt, kann es fehlschlagen." + }, "gasLimitTooLow": { "message": "Gaslimit muss mindestens 21000 betragen" }, @@ -1153,7 +1322,7 @@ "description": "$1 represents a number of minutes" }, "gasTimingMinutesShort": { - "message": "$1 min", + "message": "Min. $1", "description": "$1 represents a number of minutes" }, "gasTimingNegative": { @@ -1206,9 +1375,15 @@ "goerli": { "message": "Goerli Testnetzwerk" }, + "gotIt": { + "message": "Verstanden!" + }, "grantedToWithColon": { "message": "Ermöglicht zu:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Wir freuen uns, Sie zu sehen." }, @@ -1241,6 +1416,12 @@ "hide": { "message": "Ausblenden" }, + "hideSeedPhrase": { + "message": "Seed-Phrase ausblenden" + }, + "hideToken": { + "message": "Token ausblenden" + }, "hideTokenPrompt": { "message": "Token ausblenden?" }, @@ -1254,6 +1435,10 @@ "high": { "message": "Aggressiv" }, + "highGasSettingToolTipMessage": { + "message": "Hohe Wahrscheinlichkeit, auch in volatilen Märkten. Verwenden Sie $1, um Schwankungen im Netzwerkverkehr, die z. B. durch den Ausfall beliebter NFTs entstehen, abzudecken.", + "description": "$1 is key 'high' (text: 'Aggressive') separated here so that it can be passed in with bold fontweight" + }, "highLowercase": { "message": "hoch" }, @@ -1279,6 +1464,18 @@ "importMyWallet": { "message": "Meine Wallet importieren" }, + "importNFT": { + "message": "NFT importieren" + }, + "importNFTAddressToolTip": { + "message": "Auf OpenSea gibt es zum Beispiel auf der NFT-Seite unter Details einen blauen Hyperlink mit der Bezeichnung „Vertragsadresse“. Wenn Sie darauf klicken, werden Sie zur Adresse des Vertrags auf Etherscan weitergeleitet. Oben links auf der Seite sollte ein Symbol mit der Aufschrift „Vertrag“ zu sehen sein und rechts daneben eine lange Reihe von Buchstaben und Zahlen. Dies ist die Adresse des Vertrags, mit dem Ihr NFT erstellt wurde. Klicken Sie auf das „Kopieren“-Symbol rechts neben der Adresse und Sie haben sie in Ihrer Zwischenablage." + }, + "importNFTPage": { + "message": "NFT-Seite importieren" + }, + "importNFTTokenIdToolTip": { + "message": "Die ID eines Sammelobjekts ist eine eindeutige Kennung, da keine zwei NFTs gleich sind. Auch diese Nummer finden Sie in OpenSea unter „Details“. Notieren Sie sie oder kopieren Sie diese in Ihre Zwischenablage." + }, "importNFTs": { "message": "NFTs importieren" }, @@ -1314,6 +1511,14 @@ "insufficientBalance": { "message": "Guthaben reicht nicht aus." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "Sie haben nicht genügen $1 auf Ihrem Konto, um die Transaktionsgebühren im $2-Netzwerk zu zahlen. $3 oder von einem anderen Konto einzahlen.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "Sie haben nicht genügen $1 auf Ihrem Konto, um die Transaktionsgebühren im $2-Netzwerk zu zahlen. $1 von einem anderen Konto einzahlen.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Nicht genügend Guthaben." }, @@ -1332,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "Kein ETH-Netzwerk, auf Kleinschreibung gesetzt" }, + "invalidAssetType": { + "message": "Dieses Asset ist ein NFT und muss auf der Seite „NFTs importieren“ unter dem Tab NFTs erneut hinzugefügt werden" + }, "invalidBlockExplorerURL": { "message": "Ungültige Block Explorer URI" }, @@ -1374,11 +1582,17 @@ "message": "Ungültiger Seedschlüssel" }, "ipfsGateway": { - "message": "IPFS Gateway" + "message": "IPFS-Gateway" }, "ipfsGatewayDescription": { "message": "Geben Sie die URL des IPFS CID Gateways ein, das für die Auflösung der ENS Inhalte verwendet werden soll." }, + "jazzAndBlockies": { + "message": "Jazzicons und Blockies sind zwei verschiedene Arten von einzigartigen Symbolen, mit denen Sie ein Konto auf einen Blick erkennen können." + }, + "jazzicons": { + "message": "Jazzicons" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1395,6 +1609,9 @@ "knownAddressRecipient": { "message": "Bekannte Vertragsadresse." }, + "knownTokenWarning": { + "message": "Mit dieser Aktion werden Token bearbeitet, die bereits in Ihrer Wallet aufgelistet sind und die dazu verwendet werden können, Sie zu betrügen. Genehmigen Sie diese Aktion nur, wenn Sie sicher sind, dass Sie den Wert dieser Token ändern wollen. Erfahren Sie mehr über $1" + }, "kovan": { "message": "Kovan Testnetzwerk" }, @@ -1450,7 +1667,7 @@ "description": "The name of a desktop app that can be used with your ledger device. We can also use it to connect a users Ledger device to MetaMask." }, "ledgerLiveApp": { - "message": "Ledger Live App" + "message": "Ledger Live-App" }, "ledgerLocked": { "message": "Keine Verbindung zum Ledger-Gerät. Bitte stellen Sie sicher, dass Ihr Gerät entsperrt ist und die Ethereum-App geöffnet ist." @@ -1468,6 +1685,9 @@ "letsGoSetUp": { "message": "Ja, legen wir los!" }, + "levelArrow": { + "message": "Richtungspfeil" + }, "likeToImportTokens": { "message": "Möchtest du diese Token hinzufügen?" }, @@ -1483,6 +1703,9 @@ "loading": { "message": "Laden..." }, + "loadingNFTs": { + "message": "NFTs werden geladen ..." + }, "loadingTokens": { "message": "Token laden..." }, @@ -1495,6 +1718,10 @@ "lockTimeTooGreat": { "message": "Sperrzeit ist zu groß" }, + "logo": { + "message": "$1-Logo", + "description": "$1 is the name of the ticker" + }, "low": { "message": "Niedrig" }, @@ -1505,9 +1732,15 @@ "lowLowercase": { "message": "niedrig" }, + "lowPriorityMessage": { + "message": "Künftige Transaktionen werden nach dieser in die Warteschlange gestellt." + }, "mainnet": { "message": "Ethereum Hauptnetz" }, + "mainnetToken": { + "message": "Diese Adresse stimmt mit einer bekannten Ethereum-Mainnet-Token-Adresse überein. Überprüfen Sie erneut die Vertragsadresse und das Netzwerk für das Token, das Sie hinzufügen möchten." + }, "makeAnotherSwap": { "message": "Eine neue Wallet erstellen" }, @@ -1515,8 +1748,14 @@ "message": "Stellen Sie sicher, dass niemand Ihren Bildschirm beobachtet", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Fehlerhafte Daten" + }, + "manageSnaps": { + "message": "Verwalten Sie Ihre installierten Snaps" + }, "max": { - "message": "Max" + "message": "Max." }, "maxBaseFee": { "message": "Max. Basisgebühr" @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "Sie sehen Ihr NFT nicht?" }, + "missingSetting": { + "message": "Sie können eine Einstellung nicht finden?" + }, + "missingSettingRequest": { + "message": "Hier anfragen" + }, "missingToken": { "message": "Sie sehen Ihren Token nicht?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Name" }, + "needCryptoInWallet": { + "message": "Um mit dezentralen Anwendungen zu interagieren, die MetaMask verwenden, benötigen Sie $1 in Ihrer Wallet.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Brauchen Sie Hilfe? Kontaktieren Sie $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1644,7 +1893,7 @@ "message": "Teilen Sie Ihr Feedback" }, "needHelpLinkText": { - "message": "MetaMask Support" + "message": "MetaMask-Support" }, "needHelpSubmitTicket": { "message": "Ticket übermitteln" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Negative ETH Beträge können nicht versendet werden." }, + "network": { + "message": "Netzwerk:" + }, "networkDetails": { "message": "Netzwerkdetails" }, + "networkIsBusy": { + "message": "Das Netzwerk ist ausgelastet. Die Gaspreise sind hoch und die Schätzungen sind weniger genau." + }, "networkName": { "message": "Netzwerkname" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "Neuer Smart Contract" }, + "newNFTDetectedMessage": { + "message": "Erlauben Sie MetaMask, automatisch NFTs von Opensea zu erkennen und in Ihrem Wallet anzuzeigen." + }, "newNFTsDetected": { "message": "Neu! NFT-Erkennung" }, @@ -1756,6 +2017,9 @@ "message": "Nonce ist höher als vorgeschlagen nonce von $1", "description": "The next nonce according to MetaMask's internal logic" }, + "nftTokenIdPlaceholder": { + "message": "Token-ID eingeben" + }, "nfts": { "message": "NFTs" }, @@ -1780,9 +2044,15 @@ "noNFTs": { "message": "Noch keine NFTs" }, + "noSnaps": { + "message": "Keine Snaps installiert" + }, "noThanks": { "message": "Nein Danke" }, + "noThanksVariant2": { + "message": "Nein, danke." + }, "noTransactions": { "message": "Keine Transaktionen" }, @@ -1793,7 +2063,7 @@ "message": "Webcam nicht gefunden" }, "nonce": { - "message": "Nonce" + "message": "Unbekannt" }, "nonceField": { "message": "Transaktion nonce anpassen" @@ -1813,6 +2083,37 @@ "notEnoughGas": { "message": "Nicht genügend Gas" }, + "notifications10ActionText": { + "message": "Einstellungen ansehen", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Die verbesserte Token-Erkennung ist derzeit in den Netzwerken Ethereum Mainnet, Polygon, BSC und Avalanche verfügbar. Es gibt bald mehr!" + }, + "notifications10DescriptionThree": { + "message": "Die Token-Erkennungsfunktion ist standardmäßig eingeschaltet. Sie können sie jedoch in den Einstellungen deaktivieren." + }, + "notifications10DescriptionTwo": { + "message": "Wir beziehen Token von Token-Listen Dritter. Token, die in mehr als zwei Token-Listen aufgeführt sind, werden automatisch erkannt." + }, + "notifications10Title": { + "message": "Die verbesserte Token-Erkennung ist da" + }, + "notifications11Description": { + "message": "Token können von jedem erstellt werden und können doppelte Namen haben. Wenn Sie ein Token sehen, dem Sie nicht vertrauen oder mit dem Sie noch nie interagiert haben, ist es sicherer, ihm nicht zu vertrauen." + }, + "notifications11Title": { + "message": "Betrug und Sicherheitsrisiken" + }, + "notifications12ActionText": { + "message": "Dunkelmodus aktivieren" + }, + "notifications12Description": { + "message": "Der Dunkelmodus wird für neue Benutzer je nach ihren Systemeinstellungen aktiviert. Für bestehende Benutzer aktivieren Sie den Dunkelmodus manuell unter Einstellungen -> Experimentell." + }, + "notifications12Title": { + "message": "Wann Dunkelmodus? Jetzt Dunkelmodus! 🕶️🦊" + }, "notifications1Description": { "message": "Mobile MetaMask-Anwender können jetzt Token in ihren mobilen Wallets swappen. Scannen Sie den QR-Code, um die mobile App zu erhalten und mit dem Swapping zu beginnen.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1902,6 +2203,10 @@ "notifications9Title": { "message": "👓 Wir machen Transaktionen leichter lesbar." }, + "numberOfNewTokensDetected": { + "message": "$1 neue Tokens in diesem Konto gefunden\n", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "von" }, @@ -1981,6 +2286,9 @@ "message": "Öffnen Sie MetaMask im Vollbildmodus, um Ihren Ledger über WebHID zu verbinden.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Prüfen Sie den Quellcode" + }, "optional": { "message": "Optional" }, @@ -2011,6 +2319,13 @@ "passwordSetupDetails": { "message": "Dieses Passwort wird Ihre MetaMask Wallet nur auf diesem Gerät entsperren. MetaMask kann dieses Passwort nicht wiederherstellen." }, + "passwordStrength": { + "message": "Passwortstärke: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Ein starkes Passwort kann die Sicherheit Ihres Wallet erhöhen, falls Ihr Gerät gestohlen oder kompromittiert wird." + }, "passwordTermsWarning": { "message": "Ich verstehe, dass MetaMask dieses Passwort für mich nicht wiederherstellen kann. $1" }, @@ -2037,16 +2352,50 @@ "permissionRequest": { "message": "Berechtigungsanfrage" }, + "permissionRequestCapitalized": { + "message": "Berechtigungsanfrage" + }, + "permission_accessNetwork": { + "message": "Zugriff auf das Internet.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Verbinden Sie sich mit dem $1-Snap.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Bestätigung in MetaMask anzeigen.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Siehe Adresse, Kontostand, Aktivität und Einleitung von Transaktionen", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Verwalten Sie Ihre „$1“-Konten und Vermögenswerte.", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Ihre Saten speichern und auf Ihrem Gerät verwalten.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Benachrichtigungen anzeigen.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Unbekannte Berechtigung: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Berechtigungen" }, "personalAddressDetected": { "message": "Personalisierte Adresse identifiziert. Bitte füge die Token Contract Adresse ein." }, + "pleaseConfirm": { + "message": "Bitte bestätigen" + }, "plusXMore": { "message": "+ $1 mehr", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2055,6 +2404,9 @@ "message": "Bevorzugter Ledger-Verbindungstyp", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Swap wird vorbereitet ..." + }, "prev": { "message": "Zurück" }, @@ -2101,6 +2453,12 @@ "queued": { "message": "In Warteschlange" }, + "reAddAccounts": { + "message": "alle anderen Konten erneut hinzuzufügen" + }, + "reAdded": { + "message": "erneut hinzugefügt" + }, "readdToken": { "message": "Du kannst diesen Token immer erneut hinzufügen, indem du in den Menüpunkt \"Token hinzufügen\" in den Einstellungen deines Accounts gehst." }, @@ -2176,6 +2534,16 @@ "removeNFT": { "message": "NFT entfernen" }, + "removeSnap": { + "message": "Snap entfernen" + }, + "removeSnapConfirmation": { + "message": "Sind Sie sicher, dass Sie $1 entfernen möchten?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Diese Aktion wird diesen Snap und seine Daten löschen sowie alle von Ihnen erteilten Berechtigungen entziehen." + }, "replace": { "message": "ersetzen" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "Durch das Zurücksetzen Ihres Kontos wird Ihr Transaktionsverlauf gelöscht." }, + "resetWallet": { + "message": "Wallet zurücksetzen" + }, + "resetWalletSubHeader": { + "message": "MetaMask speichert keine Kopie Ihres Passworts. Wenn Sie Probleme haben, Ihr Konto zu entsperren, müssen Sie Ihre Wallet zurücksetzen. Sie können dies tun, indem Sie die geheime Wiederherstellungsphrase angeben, die Sie bei der Einrichtung Ihrer Wallet verwendet haben." + }, + "resetWalletUsingSRP": { + "message": "Diese Aktion löscht Ihr aktuelles Wallet und die geheime Wiederherstellungsphrase von diesem Gerät zusammen mit der Liste der Konten, die Sie erstellt haben. Nach dem Zurücksetzen mit einer geheimen Wiederherstellungsphrase sehen Sie eine Liste von Konten, die auf der geheimen Wiederherstellungsphrase basiert, die Sie zum Zurücksetzen verwenden. Diese neue Liste enthält automatisch Konten, die ein Guthaben aufweisen. Sie können auch $1, die zuvor erstellt wurden. Benutzerdefinierte Konten, die Sie importiert haben, müssen $2 sein und alle benutzerdefinierten Token, die Sie einem Konto hinzugefügt haben, müssen ebenfalls $3 sein." + }, + "resetWalletWarning": { + "message": "Vergewissern Sie sich, dass Sie die richtige geheime Wiederherstellungsphrase verwenden, bevor Sie fortfahren. Sie können dies nicht mehr rückgängig machen." + }, "restore": { "message": "Wiederherstellen" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "Zeigen Sie diesen Schlüssel KEINER ANDEREN PERSON!" }, + "revealTheSeedPhrase": { + "message": "Seed-Phrase anzeigen" + }, "rinkeby": { "message": "Rinkeby Testnetzwerk" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "Neue RPC-URL" }, + "safeTransferFrom": { + "message": "Sicherer Transfer von" + }, "save": { "message": "Speichern" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Suchergebnisse" }, + "searchSettings": { + "message": "In Einstellungen suchen" + }, "searchTokens": { "message": "Token suchen" }, @@ -2333,6 +2722,9 @@ "selectAHigherGasFee": { "message": "Wählen Sie eine höhere Gasgebühr, um die Abwicklung Ihrer Transaktion zu beschleunigen.*" }, + "selectAccounts": { + "message": "Wählen Sie das Konto/die Konten aus, um sie auf dieser Seite zu verwenden" + }, "selectAll": { "message": "\nAlle auswählen" }, @@ -2376,6 +2768,9 @@ "sendTokens": { "message": "Token senden" }, + "sendingDisabled": { + "message": "Das Senden von ERC-1155 NFT-Assets wird noch nicht unterstützt." + }, "sendingNativeAsset": { "message": "$1 senden", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2389,6 +2784,13 @@ "settings": { "message": "Einstellungen" }, + "settingsSearchMatchingNotFound": { + "message": "Keine passenden Ergebnisse gefunden." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Zeigen" }, @@ -2467,6 +2869,46 @@ "slow": { "message": "Langsam" }, + "smartTransaction": { + "message": "Intelligente Transaktionen" + }, + "snapAccess": { + "message": "$1-Snap hat Zugriff auf:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Am $1 von $2 hinzugefügt", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Snap-Fehler: '$1'. Fehler-Code: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Snap installieren" + }, + "snapInstallWarningCheck": { + "message": "Um zu bestätigen, dass Sie alles verstanden haben, kreuzen Sie alles an." + }, + "snapInstallWarningKeyAccess": { + "message": "Sie gewähren dem Snap „$1“ wichtige Zugriffsrechte. Dies kann nicht rückgängig gemacht werden und gibt „$1“ Kontrolle über Ihre Konten und Vermögenswerte. Stellen Sie sicher, dass Sie „$1“ vertrauen, bevor Sie fortfahren.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Für diesen Snap werden die folgenden Berechtigungen beantragt:" + }, + "snaps": { + "message": "Snaps" + }, + "snapsSettingsDescription": { + "message": "Verwalten Sie Ihre Snaps" + }, + "snapsStatus": { + "message": "Snap-Status ist von der Aktivität abhängig." + }, + "snapsToggle": { + "message": "Ein Snap wird nur ausgeführt, wenn er aktiviert ist" + }, "somethingWentWrong": { "message": "Hoppla! Da hat etwas nicht geklappt." }, @@ -2510,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Ausgabelimit zu groß" }, + "srpInputNumberOfWords": { + "message": "Ich habe eine $1-Wort-Phrase", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Das Einfügen schlug fehl, weil sie mehr als 24 Wörter enthielt. Eine geheime Wiederherstellungsphrase darf maximal 24 Wörter enthalten.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Sie können Ihre gesamte geheime Wiederherstellungsphrase in ein beliebiges Feld einfügen", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Dieses Wort der geheimen Wiederherstellungsphrase anzeigen/ausblenden", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Dieses Wort ist ausgeblendet", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Dieses Wort wird angezeigt", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Stabil" }, @@ -2528,6 +2994,9 @@ "stateLogsDescription": { "message": "Statelogs zeigen die Public Adresse und die gesendeten Transaktionen deines Accounts." }, + "status": { + "message": "Status" + }, "statusConnected": { "message": "Verbinden" }, @@ -2565,6 +3034,101 @@ "storePhrase": { "message": "Speichern Sie diesen Schlüssel in einem Passwortmanager wie 1Password." }, + "strong": { + "message": "Stark" + }, + "stxAreHere": { + "message": "Intelligente Transaktionen sind da!" + }, + "stxBenefit1": { + "message": "Transaktionskosten minimieren" + }, + "stxBenefit2": { + "message": "Transaktionsausfälle reduzieren" + }, + "stxBenefit3": { + "message": "Steckengebliebene Transaktionen eliminieren" + }, + "stxBenefit4": { + "message": "Front-Running verhindern" + }, + "stxCancelled": { + "message": "Swap wäre gescheitert" + }, + "stxCancelledDescription": { + "message": "Ihre Transaktion wäre fehlgeschlagen und wurde storniert, um Sie vor unnötigen Gasgebühren zu schützen." + }, + "stxCancelledSubDescription": { + "message": "Versuchen Sie Ihren Swap erneut. Wir werden hier sein, um Sie beim nächsten Mal vor ähnlichen Risiken zu schützen." + }, + "stxDescription": { + "message": "MetaMask-Swap ist jetzt viel intelligenter geworden! Wenn Sie intelligente Transaktionen aktivieren, kann MetaMask Ihren Swap programmgesteuert optimieren, um Ihnen zu helfen:" + }, + "stxErrorNotEnoughFunds": { + "message": "Nicht genügend Mittel für eine intelligente Transaktion." + }, + "stxErrorUnavailable": { + "message": "Intelligente Transaktionen sind vorübergehend nicht verfügbar." + }, + "stxFailure": { + "message": "Swap fehlgeschlagen" + }, + "stxFailureDescription": { + "message": "Plötzliche Marktveränderungen können zu Ausfällen führen. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Intelligente Transaktionen sind vorübergehend nicht verfügbar, weil Sie eine ausstehende Transaktion haben." + }, + "stxFallbackUnavailable": { + "message": "Sie können Ihre Token immer noch tauschen, selbst während intelligente Transaktionen nicht verfügbar sind." + }, + "stxPendingFinalizing": { + "message": "Wird finalisiert ..." + }, + "stxPendingOptimizingGas": { + "message": "Gas wird optimiert ..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Swap wird privat eingereicht ..." + }, + "stxSubDescription": { + "message": "* Intelligente Transaktionen versuchen mehrmals, Ihre Transaktion privat zu übermitteln. Wenn alle Versuche fehlschlagen, wird die Transaktion öffentlich übertragen, um sicherzustellen, dass Ihr Swap erfolgreich durchgeführt wird." + }, + "stxSuccess": { + "message": "Swap abgeschlossen!" + }, + "stxSuccessDescription": { + "message": "Ihr $1 ist jetzt verfügbar.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Simulieren Sie Transaktionen vor der Übermittlung, um die Transaktionskosten zu senken und Ausfälle zu vermeiden." + }, + "stxTryRegular": { + "message": "Versuchen Sie einen normalen Swap." + }, + "stxTryingToCancel": { + "message": "Es wird versucht, Ihre Transaktion abzubrechen ..." + }, + "stxUnavailable": { + "message": "Intelligente Transaktionen sind deaktiviert" + }, + "stxUnknown": { + "message": "Status unbekannt" + }, + "stxUnknownDescription": { + "message": "Eine Transaktion war erfolgreich, aber wir sind uns nicht sicher, um welche es sich handelt. Dies kann darauf zurückzuführen sein, dass eine andere Transaktion eingereicht wurde, während dieser Swap bearbeitet wurde." + }, + "stxUserCancelled": { + "message": "Swap abgebrochen" + }, + "stxUserCancelledDescription": { + "message": "Ihre Transaktion wurde abgebrochen und Sie haben keine unnötigen Gasgebühren gezahlt." + }, + "stxYouCanOptOut": { + "message": "Sie können sich in den erweiterten Einstellungen jederzeit abmelden." + }, "submit": { "message": "Abschicken" }, @@ -2604,6 +3168,10 @@ "message": "Sie benötigen $1 mehr $2, um diesen Swap abzuschließen", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Sie benötigen mehr als $1, um diesen Swap mit Hilfe intelligenter Transaktionen durchzuführen.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "Die besten $1 Kurse.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2612,6 +3180,10 @@ "message": "Keine Token verfügbar mit $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Swap abgeschlossen in <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Mit Ihrer Hardware-Wallet bestätigen" }, @@ -2654,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Swap fehlgeschlagen" }, + "swapFetchingQuoteNofN": { + "message": "Angebot $1 von $2 ", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Preisangaben abrufen" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Testfaucet" }, + "testNetworks": { + "message": "Test-Netzwerke" + }, + "theme": { + "message": "Motiv" + }, + "themeDescription": { + "message": "Wählen Sie Ihr bevorzugtes MetaMask-Motiv aus." + }, "thisWillCreate": { "message": "Hierdurch werden ein neues Wallet und eine mnemonische Phrase erzeugt" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Token" }, + "tokenAddress": { + "message": "Token-Adresse" + }, "tokenAlreadyAdded": { "message": "Der Token wurde bereits hinzugefügt." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Token Dezimalstellen erforderlich." }, + "tokenDecimalTitle": { + "message": "Token-Dezimale:" + }, + "tokenDetails": { + "message": "Token-Details" + }, + "tokenDetection": { + "message": "Token-Erkennung" + }, + "tokenDetectionAlertMessage": { + "message": "Die Token-Erkennung ist derzeit für $1 verfügbar. $2" + }, "tokenDetectionAnnouncement": { "message": "Neu! Verbesserte Token Erkennung ist im Ethereum Mainnet als experimentelle Funktion verfügbar. $1" }, + "tokenDetectionToggleDescription": { + "message": "Die Token-API von ConsenSys sammelt eine Liste von Token aus verschiedenen Token-Listen von Drittanbietern. Wenn Sie diese Funktion deaktivieren, werden keine neuen Token mehr erkannt, die zu Ihrer Wallet hinzugefügt werden, aber die Option zur Suche nach Token für den Import bleibt erhalten." + }, + "tokenId": { + "message": "Token-ID" + }, + "tokenList": { + "message": "Token-Listen:" + }, "tokenSymbol": { "message": "Tokensymbol" }, @@ -3178,6 +3787,12 @@ "message": "Verwenden von Sammelbaren (ERC-721) Token wird derzeit nicht unterstützt", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Wir können diesen Vertrag nicht verifizieren. Stellen Sie sicher, dass Sie dieser Adresse vertrauen." + }, + "upArrow": { + "message": "Aufwärtspfeil" + }, "updatedWithDate": { "message": "$1 aktualisiert" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Wir verwenden Drittanbieter-API, um neue an Ihre Wallet gesendete Token zu erkennen und anzuzeigen. Deaktivieren Sie diese, wenn Sie nicht möchten, dass MetaMask Daten von diesen Diensten abruft." }, + "useTokenDetectionPrivacyDesc": { + "message": "Die automatische Anzeige der an Ihr Konto gesendeten Token erfordert die Kommunikation mit Servern von Drittanbietern, um die Bilder der Token abzurufen. Diese Server haben Zugriff auf Ihre IP-Adresse." + }, "usedByClients": { "message": "Verwendet von einer Reihe verschiedenen Kunden" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Wallet-Erstellung erfolgreich" }, + "weak": { + "message": "Schwach" + }, "web3ShimUsageNotification": { "message": "Wir haben festgestellt, dass die aktuelle Website versucht hat, die entfernte window.web3 API zu verwenden. Sollte die Site defekt sein, klicken Sie bitte auf $1 für weitere Informationen.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1 von $2 ausstehend", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Ja" + }, "yesLetsTry": { "message": "Ja, versuchen wir es" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 0ba089f74..2e5e1fe0b 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -58,6 +58,10 @@ "message": "$1 μπορεί να έχει πρόσβαση και να ξοδέψει μέχρι αυτό το μέγιστο ποσό", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "Το $1 ίσως αποκτήσει πρόσβαση και δαπανήσει αυτό το περιουσιακό στοιχείο", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Πρόσβαση στην κάμερά σας..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Λεπτομέρειες Λογαριασμού" }, + "accountIdenticon": { + "message": "Identicon λογαριασμού" + }, "accountName": { "message": "Όνομα Λογαριασμού" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Προσθήκη ενός Δικτύου" }, + "addANetworkManually": { + "message": "Προσθήκη δικτύου με μη αυτόματο τρόπο" + }, "addANickname": { "message": "Προσθήκη ενός ψευδωνύμου" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Προσθέστε φίλους και διευθύνσεις που εμπιστεύεστε" }, + "addFromAListOfPopularNetworks": { + "message": "Προσθέστε από μια λίστα δημοφιλών δικτύων ή προσθέστε ένα δίκτυο με μη αυτόματο τρόπο. Να αλληλεπιδράτε μόνο με άτομα/οργανισμούς που εμπιστεύεστε." + }, "addMemo": { "message": "Προσθήκη σημειώματος" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Συμφωνώ" }, - "aggregatorFeeCost": { - "message": "Αμοιβή ανταλλακτηρίου" + "airgapVault": { + "message": "Θησαυροφυλάκιο AirGap" + }, + "airgapVaultTutorial": { + "message": " (Μαθήματα)" }, "alertDisableTooltip": { "message": "Αυτό μπορεί να αλλάξει στο \"Ρυθμίσεις > Ειδοποιήσεις\"" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Τέλος έγκρισης και δικτύου ανταλλακτηρίου" - }, - "approvalTxGasCost": { - "message": "Έγκριση Tx τέλους συναλλαγής" - }, "approve": { "message": "Έγκριση" }, + "approveAndInstall": { + "message": "Έγκριση και Εγκατάσταση" + }, "approveButtonText": { "message": "Έγκριση" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Εγκεκριμένο ποσό:" }, + "approvedAsset": { + "message": "Εγκεκριμένο περιουσιακό στοιχείο" + }, + "areYouDeveloper": { + "message": "Είστε προγραμματιστής;" + }, + "areYouSure": { + "message": "Είστε βέβαιος/η;" + }, "asset": { "message": "Στοιχείο ενεργητικού" }, @@ -356,6 +378,9 @@ "message": "Προβολή λογαριασμού με $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "Το Πρόγραμμα Περιήγησής σας δεν υποστηρίζεται..." }, @@ -371,11 +396,30 @@ "buy": { "message": "Αγορά" }, + "buyAsset": { + "message": "Αγορά $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Αγορά $1 με MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay supports popular payment methods, including Visa, Mastercard, Apple / Google / Samsung Pay, and bank transfers in 145+ countries. Tokens deposit into your MetaMask account." + }, + "buyCryptoWithTransak": { + "message": "Αγορά $1 με Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Η Transak υποστηρίζει πιστωτικές και χρεωστικές κάρτες, Apple Pay, MobiKwik και τραπεζικές μεταφορές (ανάλογα με την τοποθεσία) σε περισσότερες από 145 χώρες. Τα $1 κατατίθενται απευθείας στον λογαριασμό σας στο MetaMask.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Αγοράστε ETH με το Wyre" + "message": "Αγοράστε $1 με το Wyre" }, "buyWithWyreDescription": { - "message": "Το Wyre σας επιτρέπει να χρησιμοποιήσετε μια πιστωτική κάρτα για να καταθέσετε ETH απευθείας στον λογαριασμό σας MetaTask." + "message": "Το Wyre σας επιτρέπει να χρησιμοποιήσετε μια πιστωτική κάρτα για να καταθέσετε $1 απευθείας στον λογαριασμό σας MetaTask." }, "bytes": { "message": "Bytes" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "ακύρωση ή επιτάχυνση μιας συναλλαγής." }, + "cancelSpeedUpLabel": { + "message": "Αυτά τα τέλη συναλλαγής θα $1 τα αρχικά.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Για να $1 τη συναλλαγή, τα τέλη συναλλαγής πρέπει να αυξηθούν κατά τουλάχιστον 10% ώστε να αναγνωριστούν από το δίκτυο.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Ακύρωση ανταλλαγής" + }, "cancellationGasFee": { "message": "Ακύρωση Χρέωσης Αερίου" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "Αυτό το αναγνωριστικό αλυσίδας χρησιμοποιείται επί του παρόντος από το δίκτυο $1." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Το δίκτυο με αναγνωριστικό αλυσίδας $1 ενδέχεται να χρησιμοποιεί διαφορετικό σύμβολο νομίσματος ($2) από αυτό που έχετε εισαγάγει. Παρακαλούμε επιβεβαιώστε το πριν συνεχίσετε.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Θα πρέπει να χρησιμοποιήσετε το MetaMask στο Google Chrome για να συνδεθείτε στο Πορτοφόλι Υλικού." }, @@ -423,6 +482,13 @@ "close": { "message": "Κλείσιμο" }, + "collectibleAddFailedMessage": { + "message": "Τα NFT δεν μπορούν να προστεθούν, διότι τα στοιχεία της κυριότητας δεν ταυτίζονται. Σιγουρευτείτε ότι έχετε εισαγάγει τα σωστά στοιχεία." + }, + "collectibleAddressError": { + "message": "Αυτό το token είναι NFT. Προσθήκη στο $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Επιβεβαίωση" }, @@ -506,6 +572,10 @@ "message": "$1 δεν είναι συνδεδεμένο με καμία τοποθεσία.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "Το snap $1 συνδέεται με αυτούς τους ιστότοπους. Έχουν πρόσβαση στις παραπάνω άδειες.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Σύνδεση..." }, @@ -536,6 +606,9 @@ "continue": { "message": "Συνέχεια" }, + "continueToMoonPay": { + "message": "Συνέχεια στη MoonPay" + }, "continueToTransak": { "message": "Συνεχίστε στο Transak" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "Αλληλεπίδραση Σύμβασης" }, + "convertTokenToNFTDescription": { + "message": "Εντοπίσαμε ότι αυτό το περιουσιακό στοιχείο είναι NFT. Το Metamask υποστηρίζει πλέον εξ'ορισμού πλήρως τα NFT. Θέλετε να το αφαιρέσετε από τη λίστα των token σας και να το προσθέσετε ως NFT;" + }, + "convertTokenToNFTExistDescription": { + "message": "Εντοπίσαμε ότι αυτό το περιουσιακό στοιχείο προστέθηκε ως NFT. Θέλετε να το αφαιρέσετε από τη λίστα των token σας;" + }, "copiedExclamation": { "message": "Έγινε αντιγραφή!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "Μη διαθέσιμο σε αυτό το δίκτυο" }, + "curveHighGasEstimate": { + "message": "Γράφημα επιθετικών τελών συναλλαγής" + }, + "curveLowGasEstimate": { + "message": "Γράφημα χαμηλών τελών συναλλαγής" + }, + "curveMediumGasEstimate": { + "message": "Γράφημα εκτιμώμενων τελών συναλλαγής αγοράς" + }, "custom": { "message": "Σύνθετες" }, + "customContentSearch": { + "message": "Αναζήτηση δικτύου που προστέθηκε προηγουμένως" + }, "customGas": { "message": "Προσαρμογή Gas" }, @@ -633,6 +724,15 @@ "customToken": { "message": "Προσαρμοσμένο Token" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "Ο εντοπισμός token δεν είναι ακόμη διαθέσιμος σε αυτό το δίκτυο. Εισαγάγετε το token με μη αυτόματο τρόπο και βεβαιωθείτε ότι το εμπιστεύεστε. Μάθετε σχετικά με $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Πριν εισαγάγετε το token με μη αυτόματο τρόπο, βεβαιωθείτε ότι το εμπιστεύεστε. Μάθετε σχετικά με $1." + }, + "customerSupport": { + "message": "υποστήριξη πελατών" + }, "dappSuggested": { "message": "Προτεινόμενο από την ιστοσελίδα" }, @@ -647,6 +747,9 @@ "message": "Το $1 έχει προτείνει αυτή την τιμή.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Σκούρο" + }, "data": { "message": "Δεδομένα" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "Θέλετε σίγουρα να διαγράψετε αυτό το δίκτυο;" }, + "depositCrypto": { + "message": "Κατάθεση $1", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Περιγραφή" }, "details": { "message": "Λεπτομέρειες" }, + "directDepositCrypto": { + "message": "Απευθείας κατάθεση $1" + }, + "directDepositCryptoExplainer": { + "message": "Εάν έχετε ήδη μερικά $1, ο γρηγορότερος τρόπος για να βάλετε $1 στο νέο σας πορτοφόλι είναι η απευθείας κατάθεση." + }, + "disabledGasOptionToolTipMessage": { + "message": "Το \"1$\" είναι απενεργοποιημένο επειδή δεν πληροί την ελάχιστη αύξηση 10% σε σχέση με τα αρχικά τέλη συναλλαγής.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Αποσύνδεση" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "Να μην εμφανιστεί ξανά" }, + "downArrow": { + "message": "κάτω βέλος" + }, "downloadGoogleChrome": { "message": "Κατεβάστε το Google Chrome" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "Επεξεργασία ψευδωνύμου διεύθυνσης" }, + "editCancellationGasFeeModalTitle": { + "message": "Επεξεργασία τελών ακύρωσης συναλλαγής" + }, "editContact": { "message": "Επεξεργασία Επαφής" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "Επεξεργαστείτε τα Δικαιώματα" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Επεξεργασία τελών επίσπευσης συναλλαγής" + }, "enableAutoDetect": { "message": " Ενεργοποίηση Αυτόματου Εντοπισμού" }, + "enableEIP1559V2": { + "message": "Ενεργοποίηση βελτιωμένου περιβάλλοντος χρήστη για τέλη συναλλαγής" + }, + "enableEIP1559V2AlertMessage": { + "message": "Ενημερώσαμε τον τρόπο με τον οποίο λειτουργεί η εκτίμηση και η προσαρμογή των τελών συναλλαγής." + }, + "enableEIP1559V2ButtonText": { + "message": "Ενεργοποίηση βελτιωμένου περιβάλλοντος χρήστη για τέλη συναλλαγής στις Ρυθμίσεις" + }, + "enableEIP1559V2Description": { + "message": "Ενημερώσαμε τον τρόπο με τον οποίο λειτουργεί η εκτίμηση και η προσαρμογή των τελών συναλλαγής. Ενεργοποιήστε εάν θέλετε να χρησιμοποιήσετε τα νέα τέλη συναλλαγής. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Νέα εμπειρία τελών συναλλαγής" + }, "enableFromSettings": { "message": " Ενεργοποίηση του από τις Ρυθμίσεις." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "Χρησιμοποιήστε το API OpenSea για λήψη δεδομένων NFT. Η αυτόματη ανίχνευση NFT βασίζεται στο API του OpenSea, και δεν θα είναι διαθέσιμη όταν αυτό είναι απενεργοποιημένο." }, + "enableSmartTransactions": { + "message": "Ενεργοποίηση Έξυπνων Συναλλαγών" + }, "enableToken": { "message": "ενεργοποίηση $1", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Προβολή στην Etherscan" }, + "expandExperience": { + "message": "Επεκτείνετε την εμπειρία σας στο web3" + }, "expandView": { "message": "Ανάπτυξη Προβολής" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "Εξωτερική Επέκταση" }, - "extraApprovalGas": { - "message": "+$1 τέλος συναλλαγής", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Απέτυχε" }, "failedToFetchChainId": { "message": "Αδύνατη η λήψη του αναγνωριστικού αλυσίδας. Είναι το URL του RPC σας σωστό;" }, + "failedToFetchTickerSymbolData": { + "message": "Τα δεδομένα επιβεβαίωσης αυτού του συμβόλου είναι προς το παρόν μη διαθέσιμα. Βεβαιωθείτε ότι το σύμβολο που εισαγάγατε είναι σωστό. Αυτό θα έχει αντίκτυπο στις τιμές μετατροπών που βλέπετε για αυτό το δίκτυο" + }, "failureMessage": { "message": "Κάτι πήγε λάθος και δεν μπορέσαμε να ολοκληρώσουμε την ενέργεια" }, @@ -1062,6 +1209,26 @@ "message": "από", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "θα πρέπει να καταργήσετε την εγκατάσταση αυτής της επέκτασης", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Το Flask έχει δημιουργηθεί για προγραμματιστές, οι οποίοι θέλουν να πειραματιστούν με νέα, ασταθή API. Εάν δεν είστε προγραμματιστής ή δοκιμαστής beta, $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Δεν εγγυόμαστε την ασφάλεια ή τη σταθερότητα αυτής της επέκτασης. Τα νέα API που προσφέρονται από το Flask δεν παρέχουν ισχυρή προστασία κατά των επιθέσεων phishing, πράγμα που σημαίνει ότι οποιοσδήποτε ιστότοπος ή snap απαιτεί το Flask, ενδέχεται να είναι μια κακόβουλη απόπειρα κλοπής των περιουσιακών στοιχείων σας.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Όλα τα API του Flask είναι πειραματικά. Μπορεί να αλλάξουν ή να αφαιρεθούν χωρίς προειδοποίηση ή μπορεί να παραμείνουν στο Flask επ' αόριστον, χωρίς ποτέ να μεταφερθούν στο σταθερό MetaMask. Χρησιμοποιήστε τα με δική σας ευθύνη.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Αποδέχομαι τον κίνδυνο", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Ακολουθήστε μας στο Twitter" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "Διαγραφή αυτής της συσκευής" }, + "forgotPassword": { + "message": "Ξεχάσατε τον κωδικό πρόσβασής σας;" + }, "from": { "message": "Από" }, @@ -1078,6 +1248,9 @@ "message": "Από: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "Από λίστες token: $1" + }, "functionApprove": { "message": "Λειτουργία: Έγκριση" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Οι χαμηλές, μεσαίες και υψηλές εκτιμήσεις μας δεν είναι διαθέσιμες." }, + "gasFee": { + "message": "Τέλη Συναλλαγής" + }, "gasLimit": { "message": "Όριο Καυσίμου" }, "gasLimitInfoTooltipContent": { "message": "Το όριο αερίου είναι το μέγιστο ποσό μονάδων αερίου τι οποίες είστε διατεθειμένοι να δαπανήσετε." }, + "gasLimitRecommended": { + "message": "Το προτεινόμενο όριο τελών συναλλαγής είναι $1. Εάν το όριο τελών συναλλαγής είναι μικρότερο από αυτό, η συναλλαγή ενδέχεται να αποτύχει." + }, "gasLimitTooLow": { "message": "Το όριο αερίου πρέπει να είναι τουλάχιστον 21000" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Δοκιμαστικό Δίκτυο Goerli" }, + "gotIt": { + "message": "Το κατάλαβα!" + }, "grantedToWithColon": { "message": "Χορηγήθηκε στο:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Χαιρόμαστε που σας βλέπουμε." }, @@ -1231,6 +1416,12 @@ "hide": { "message": "Απόκρυψη" }, + "hideSeedPhrase": { + "message": "Απόκρυψη φράσης ανάκτησης" + }, + "hideToken": { + "message": "Απόκρυψη token" + }, "hideTokenPrompt": { "message": "Απόκρυψη του Token;" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "Εισαγωγή Πορτοφολιού μου" }, + "importNFT": { + "message": "Εισαγωγή NFT" + }, + "importNFTAddressToolTip": { + "message": "Στο OpenSea, για παράδειγμα, στη σελίδα των NFΤ στην ενότητα Λεπτομέρειες, υπάρχει ένας υπερσύνδεσμος σε μπλε χρώμα με την ένδειξη «Διεύθυνση σύμβασης». Εάν κάνετε κλικ σε αυτόν τον υπερσύνδεσμο, θα σας μεταφέρει στη διεύθυνση της σύμβασης στο Etherscan. Στο επάνω αριστερό μέρος εκείνης της σελίδας, θα πρέπει να υπάρχει ένα εικονίδιο με την ένδειξη «Σύμβαση» και στα δεξιά, μια μεγάλη σειρά από γράμματα και αριθμούς. Αυτή είναι η διεύθυνση της σύμβασης που δημιούργησε το NFT σας. Κάντε κλικ στο εικονίδιο «αντιγραφή» στα δεξιά της διεύθυνσης για να το αντιγράψετε στο πρόχειρό σας." + }, + "importNFTPage": { + "message": "Σελίδα Εισαγωγής NFT" + }, + "importNFTTokenIdToolTip": { + "message": "Το συλλεκτικό αναγνωριστικό είναι ένα μοναδικό αναγνωριστικό, καθώς όλα τα NFT είναι διαφορετικά μεταξύ τους. Μιλώντας και πάλι για το OpenSea, αυτός ο αριθμός βρίσκεται στην ενότητα «Λεπτομέρειες». Σημειώστε τον ή αντιγράψτε τον στο πρόχειρό σας." + }, "importNFTs": { "message": "Εισαγωγή NFT" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "Ανεπαρκές υπόλοιπο." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "Δεν έχετε αρκετά $1 στον λογαριασμό σας για να πληρώσετε τα τέλη της συναλλαγής στο δίκτυο $2. $3 ή πραγματοποιήστε κατάθεση από άλλον λογαριασμό.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "Δεν έχετε αρκετά $1 στον λογαριασμό σας για να πληρώσετε τα τέλη της συναλλαγής στο δίκτυο $2. Καταθέστε $1 από άλλον λογαριασμό.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Ανεπαρκείς πόροι." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "Δίκτυο μη ETH, ρυθμίστε σε μικρούς χαρακτήρες" }, + "invalidAssetType": { + "message": "Αυτό το περιουσιακό στοιχείο είναι NFT και πρέπει να προστεθεί ξανά στη σελίδα «Εισαγωγή NFT» που βρίσκεται στην καρτέλα των NFT" + }, "invalidBlockExplorerURL": { "message": "Μη έγκυρο Block Explorer URL" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "Εισάγετε τη διεύθυνση URL της πύλης IPFS CID που θα χρησιμοποιηθεί για την ανάλυση περιεχομένου ENS." }, + "jazzAndBlockies": { + "message": "Τα Jazzicons και τα Blockies είναι δύο διαφορετικά στυλ μοναδικών εικονιδίων που σας βοηθούν να αναγνωρίζετε έναν λογαριασμό με μια ματιά." + }, + "jazzicons": { + "message": "Jazzicons" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "Ναι, ας το εγκαταστήσουμε!" }, + "levelArrow": { + "message": "βέλος αλλαγής επιπέδου" + }, "likeToImportTokens": { "message": "Θέλετε να προσθέσετε αυτά τα token;" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "Φόρτωση..." }, + "loadingNFTs": { + "message": "Φόρτωση NFT..." + }, "loadingTokens": { "message": "Φόρτωση Tokens..." }, @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "Ο χρόνος κλειδώματος είναι πολύ μεγάλος" }, + "logo": { + "message": "Λογότυπο $1", + "description": "$1 is the name of the ticker" + }, "low": { "message": "Χαμηλό" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "Κύριο Δίκτυο Ethereum" }, + "mainnetToken": { + "message": "Αυτή η διεύθυνση ταυτίζεται με μια γνωστή διεύθυνση token στο Mainnet της Ethereum. Ελέγξτε ξανά τη διεύθυνση της σύμβασης και το δίκτυο για το token που προσπαθείτε να προσθέσετε." + }, "makeAnotherSwap": { "message": "Δημιουργία νέας ανταλλαγής" }, @@ -1515,6 +1748,12 @@ "message": "Βεβαιωθείτε ότι κανείς δεν παρακολουθεί την οθόνη σας", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Παραμορφωμένα δεδομένα" + }, + "manageSnaps": { + "message": "Διαχειριστείτε τα εγκατεστημένα Snaps σας" + }, "max": { "message": "Μέγ." }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "Δεν βλέπετε το NFT σας;" }, + "missingSetting": { + "message": "Δεν μπορείτε να βρείτε μια ρύθμιση;" + }, + "missingSettingRequest": { + "message": "Υποβάλετε αίτημα εδώ" + }, "missingToken": { "message": "Δεν βλέπετε το token σας;" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Όνομα" }, + "needCryptoInWallet": { + "message": "Για να αλληλεπιδράσετε με αποκεντρωμένες εφαρμογές χρησιμοποιώντας το MetaMask, θα χρειαστείτε $1 στο πορτοφόλι σας.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Χρειάζεστε βοήθεια; Επικοινωνήστε με $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Δεν μπορεί να γίνει αποστολή αρνητικών ποσών ETH." }, + "network": { + "message": "Δίκτυο:" + }, "networkDetails": { "message": "Λεπτομέρειες Δικτύου" }, + "networkIsBusy": { + "message": "Το δίκτυο είναι απασχολημένο. Τα τέλη συναλλαγής είναι υψηλά και οι εκτιμήσεις λιγότερο ακριβείς." + }, "networkName": { "message": "Ονομασία Δικτύου" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "Νέα Σύμβαση" }, + "newNFTDetectedMessage": { + "message": "Να επιτρέπεται στο MetaMask να εντοπίζει αυτόματα τα NFT από το Opensea και να τα εμφανίζει στο πορτοφόλι σας." + }, "newNFTsDetected": { "message": "Νέο! Εντοπισμός NFT" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "Δεν υπάρχουν NFT ακόμα" }, + "noSnaps": { + "message": "Δεν εγκαταστάθηκαν Snaps" + }, "noThanks": { "message": "Όχι Ευχαριστώ" }, + "noThanksVariant2": { + "message": "Όχι, ευχαριστώ." + }, "noTransactions": { "message": "Δεν έχετε καμιά συναλλαγή" }, @@ -1796,7 +2063,7 @@ "message": "Η διαδικτυακή κάμερα δεν βρέθηκε" }, "nonce": { - "message": "Nonce" + "message": "Αριθμολέξημα" }, "nonceField": { "message": "Προσαρμόστε τη συναλλαγή nonce" @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "Δεν Υπάρχει Αρκετό Αέριο" }, + "notifications10ActionText": { + "message": "Μετάβαση στις Ρυθμίσεις", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Ο βελτιωμένος εντοπισμός token είναι προς το παρόν διαθέσιμος στα δίκτυα Ethereum Mainnet, Polygon, BSC και Avalanche. Περισσότερα προσεχώς!" + }, + "notifications10DescriptionThree": { + "message": "Η λειτουργία εντοπισμού token είναι ΕΝΕΡΓΟΠΟΙΗΜΕΝΗ από προεπιλογή. Μπορείτε να την απενεργοποιήσετε από τις Ρυθμίσεις." + }, + "notifications10DescriptionTwo": { + "message": "Σας βρίσκουμε token από λίστες token τρίτων. Τα token που περιλαμβάνονται σε περισσότερες από δύο λίστες token θα εντοπίζονται αυτόματα." + }, + "notifications10Title": { + "message": "Ο βελτιωμένος εντοπισμός token είναι εδώ" + }, + "notifications11Description": { + "message": "Τα token μπορούν να δημιουργηθούν από τον καθένα και ενδέχεται να έχουν διπλότυπα ονόματα. Αν δείτε να εμφανίζεται ένα token που δεν εμπιστεύεστε ή με το οποίο δεν έχετε αλληλεπιδράσει, η ασφαλέστερη επιλογή είναι να μην το εμπιστευτείτε." + }, + "notifications11Title": { + "message": "Κίνδυνοι εξαπάτησης και ασφάλειας" + }, + "notifications12ActionText": { + "message": "Ενεργοποίηση dark mode" + }, + "notifications12Description": { + "message": "Το Dark Mode (σκουρόχρωμη λειτουργία) θα ενεργοποιηθεί για νέους χρήστες ανάλογα με τις προτιμήσεις του συστήματός τους. Εάν είστε ήδη χρήστης, ενεργοποιήστε τo dark mode με μη αυτόματο τρόπο στην ενότητα Ρυθμίσεις -> Πειραματικές." + }, + "notifications12Title": { + "message": "Θέλετε dark mode; Τώρα έχετε dark mode! 🕶️🦊" + }, "notifications1Description": { "message": "Οι χρήστες του MetaMask Mobile μπορούν τώρα να ανταλλάξουν tokens μέσα στο κινητό τους πορτοφόλι. Σαρώστε τον κωδικό QR για να πάρετε την εφαρμογή για κινητά και να αρχίσετε να ανταλλάζετε.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 Κάνουμε τις συναλλαγές ευκολότερες στο διάβασμα." }, + "numberOfNewTokensDetected": { + "message": "$1 νέα token βρέθηκαν σε αυτόν τον λογαριασμό", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "από" }, @@ -1984,6 +2286,9 @@ "message": "Ανοίξτε το MetaMask σε πλήρη οθόνη για να συνδέσετε το ledger σας μέσω WebHID.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Ελέγξτε τον πηγαίο κώδικα" + }, "optional": { "message": "Προαιρετικό" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "Αυτός ο κωδικός πρόσβασης θα ξεκλειδώσει το πορτοφόλι σας MetaMask μόνο σε αυτήν τη συσκευή. Το MetaMask δεν μπορεί να ανακτήσει αυτόν τον κωδικό πρόσβασης." }, + "passwordStrength": { + "message": "Ισχύς κωδικού πρόσβασης: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Ένας ισχυρός κωδικός πρόσβασης μπορεί να βελτιώσει την ασφάλεια του πορτοφολιού σας εάν η συσκευή σας κλαπεί ή παραβιαστεί." + }, "passwordTermsWarning": { "message": "Καταλαβαίνω ότι το MetaMask δεν μπορεί να ανακτήσει αυτόν τον κωδικό πρόσβασης για μένα. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "Αίτημα άδειας" }, + "permissionRequestCapitalized": { + "message": "Αίτημα άδειας" + }, + "permission_accessNetwork": { + "message": "Πρόσβαση στο Διαδίκτυο.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Συνδεθείτε στο Snap $1.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Εμφάνιση επιβεβαίωσης στο MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Βλέπε διεύθυνση, υπόλοιπο λογαριασμού, δραστηριότητα και έναρξη συναλλαγών", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Ελέγξτε τους λογαριασμούς και τα περιουσιακά σας στοιχεία σας στο \"$1\".", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Αποθηκεύστε και διαχειριστείτε τα δεδομένα του στη συσκευή σας.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Εμφάνιση ειδοποιήσεων.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Άγνωστη άδεια: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Άδειες" }, "personalAddressDetected": { "message": "Η προσωπική διεύθυνση εντοπίστηκε. Καταχωρίστε τη διεύθυνση συμβολαίου διακριτικού." }, + "pleaseConfirm": { + "message": "Επιβεβαιώστε" + }, "plusXMore": { "message": "+ $1 ακόμη", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "Προτιμώμενος Τύπος Σύνδεσης Ledger", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Προετοιμασία ανταλλαγής..." + }, "prev": { "message": "Προηγούμενο" }, @@ -2104,6 +2453,12 @@ "queued": { "message": "Σε Αναμονή" }, + "reAddAccounts": { + "message": "προσθέστε εκ νέου τυχόν άλλους λογαριασμούς" + }, + "reAdded": { + "message": "προστέθηκαν εκ νέου" + }, "readdToken": { "message": "Μπορείτε να προσθέσετε ξανά αυτό το διακριτικό στο μέλλον μεταβαίνοντας στο \"Πρόσθεση διακριτικού\" στο μενού επιλογών των λογαριασμών σας." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "Αφαίρεση NFT" }, + "removeSnap": { + "message": "Αφαίρεση Snap" + }, + "removeSnapConfirmation": { + "message": "Επιθυμείτε σίγουρα να αφαιρέσετε το $1;", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Αυτή η ενέργεια θα διαγράψει το snap, τα δεδομένα του και θα ανακαλέσει τις άδειες που έχετε παραχωρήσει." + }, + "replace": { + "message": "αντικατάσταση" + }, "requestsAwaitingAcknowledgement": { "message": "αιτήματα τα οποία αναμένουν να αναγνωριστούν" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "Με την επαναφορά του λογαριασμού σας εκκαθαρίζεται το ιστορικό των συναλλαγών σας." }, + "resetWallet": { + "message": "Επαναφορά Πορτοφολιού" + }, + "resetWalletSubHeader": { + "message": "Το MetaMask δεν διατηρεί αντίγραφο του κωδικού πρόσβασής σας. Εάν αντιμετωπίζετε κάποιο πρόβλημα με το ξεκλείδωμα του λογαριασμού σας, θα χρειαστεί να πραγματοποιήσετε επαναφορά του πορτοφολιού σας. Μπορείτε να το κάνετε μέσω της Μυστικής Φράσης Ανάκτησης που χρησιμοποιήσατε όταν δημιουργήσατε το πορτοφόλι σας." + }, + "resetWalletUsingSRP": { + "message": "Αυτή η ενέργεια θα διαγράψει το τρέχον πορτοφόλι σας και την Μυστική Φράση Ανάκτησής σας από αυτή τη συσκευή, μαζί με τη λίστα λογαριασμών που χειρίζεστε. Αφού κάνετε επαναφορά με την Μυστική Φράση Ανάκτησής σας, θα δείτε μια λίστα με λογαριασμούς με βάση τη Μυστική Φράση Ανάκτησης που χρησιμοποιήσατε για την επαναφορά. Αυτή η νέα λίστα θα περιλαμβάνει αυτόματα λογαριασμούς που έχουν κάποιο υπόλοιπο. Θα μπορείτε επίσης να $1 που δημιουργήθηκε προηγουμένως. Οι προσαρμοσμένοι λογαριασμοί που έχετε εισαγάγει θα χρειαστεί να είναι $2 και κάθε προσαρμοσμένο token που προσθέσατε στον λογαριασμό θα πρέπει επίσης να $3." + }, + "resetWalletWarning": { + "message": "Βεβαιωθείτε ότι χρησιμοποιείτε τη σωστή Μυστική Φράση Ανάκτησης πριν συνεχίσετε. Αυτή η ενέργεια είναι μη αναστρέψιμη." + }, "restore": { "message": "Επαναφορά" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "ΜΗΝ ΜΟΙΡΑΣΤΕΙΤΕ αυτήν τη φράση με κανέναν!" }, + "revealTheSeedPhrase": { + "message": "Αποκάλυψη φράσης ανάκτησης" + }, "rinkeby": { "message": "Δοκιμαστικό Δίκτυο Rinkeby" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "Νέο RPC URL" }, + "safeTransferFrom": { + "message": "Ασφαλής μεταφορά από" + }, "save": { "message": "Αποθήκευση" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Αποτελέσματα Αναζήτησης" }, + "searchSettings": { + "message": "Αναζήτηση στις ρυθμίσεις" + }, "searchTokens": { "message": "Αναζήτηση Tokens" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "Στείλτε Tokens" }, + "sendingDisabled": { + "message": "Η αποστολή περιουσιακών στοιχείων ERC-1155 NFT δεν υποστηρίζεται ακόμη." + }, "sendingNativeAsset": { "message": "Αποστολή $1", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "Ρυθμίσεις" }, + "settingsSearchMatchingNotFound": { + "message": "Δε βρέθηκαν αποτελέσματα που να ταιριάζουν." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Εμφάνιση" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "Αργά" }, + "smartTransaction": { + "message": "Έξυπνη Συναλλαγή" + }, + "snapAccess": { + "message": "Το snap $1 έχει πρόσβαση σε:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Προστέθηκε στις $1 από $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Σφάλμα Snap: '$1'. Κωδικός Σφάλματος: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Εγκατάσταση Snap" + }, + "snapInstallWarningCheck": { + "message": "Για να επιβεβαιώσετε ότι καταλαβαίνετε, επιλέξτε όλα τα πλαίσια ελέγχου." + }, + "snapInstallWarningKeyAccess": { + "message": "Παρέχετε βασική πρόσβαση στο snap \"$1\". Αυτή η ενέργεια είναι μη αναστρέψιμη και παραχωρεί στο \"$1\" τον έλεγχο των λογαριασμών και των περιουσιακών σας στοιχείων. Βεβαιωθείτε ότι εμπιστεύεστε το \"$1\" πριν συνεχίσετε.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Αυτό το snap αιτείται τις παρακάτω άδειες:" + }, + "snaps": { + "message": "Snaps" + }, + "snapsSettingsDescription": { + "message": "Διαχειριστείτε τα Snaps σας" + }, + "snapsStatus": { + "message": "Η κατάσταση του Snap εξαρτάται από τη δραστηριότητα." + }, + "snapsToggle": { + "message": "Ένα snap θα εκτελεστεί μόνο εάν είναι ενεργοποιημένο" + }, "somethingWentWrong": { "message": "Ουπς! Κάτι πήγε στραβά." }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Πολύ μεγάλο όριο δαπανών" }, + "srpInputNumberOfWords": { + "message": "Έχω μια φράση $1 λέξεων", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Η επικόλληση απέτυχε επειδή περιείχε περισσότερες από 24 λέξεις. Μια μυστική φράση ανάκτησης μπορεί να αποτελείται από το πολύ 24 λέξεις.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Μπορείτε να επικολλήσετε ολόκληρη τη μυστική φράση ανάκτησής σας σε οποιοδήποτε πεδίο", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Εμφάνιση/Απόκρυψη αυτής της λέξης από τη μυστική φράση ανάκτησης", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Αυτή η λέξη είναι κρυμμένη", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Αυτή η λέξη εμφανίζεται", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Σταθερό" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "Τα αρχεία καταγραφής κατάστασης περιέχουν τις διευθύνσεις του δημόσιου λογαριασμού σας και τις συναλλαγές οι οποίες έχουν αποσταλεί." }, + "status": { + "message": "Κατάσταση" + }, "statusConnected": { "message": "Συνδεδεμένο" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "Αποθηκεύστε αυτήν τη φράση σε έναν διαχειριστή κωδικών πρόσβασης όπως το 1Password." }, + "strong": { + "message": "Ισχυρός" + }, + "stxAreHere": { + "message": "Οι Έξυπνες Συναλλαγές είναι εδώ!" + }, + "stxBenefit1": { + "message": "Ελαχιστοποίηση του κόστους συναλλαγής" + }, + "stxBenefit2": { + "message": "Μείωση των αποτυχιών συναλλαγών" + }, + "stxBenefit3": { + "message": "Εξάλειψη των συναλλαγών που κολλούν" + }, + "stxBenefit4": { + "message": "Αποτροπή προπορευόμενων συναλλαγών (front-running)" + }, + "stxCancelled": { + "message": "Η ανταλλαγή θα είχε αποτύχει" + }, + "stxCancelledDescription": { + "message": "Η συναλλαγή σας θα είχε αποτύχει και ακυρώθηκε για να προστατευτείτε από την πληρωμή περιττών τελών συναλλαγής." + }, + "stxCancelledSubDescription": { + "message": "Προσπαθήστε ξανά να κάνετε ανταλλαγή. Θα είμαστε εδώ για να σας προστατεύσουμε από παρόμοιους κινδύνους και την επόμενη φορά." + }, + "stxDescription": { + "message": "Οι Ανταλλαγές MetaMask μόλις έγιναν πολύ πιο έξυπνες! Η ενεργοποίηση των Έξυπνων Συναλλαγών θα επιτρέψει στο MetaMask να βελτιώσει προγραμματικά τις Ανταλλαγές σας ώστε να απολαμβάνετε:" + }, + "stxErrorNotEnoughFunds": { + "message": "Δεν υπάρχουν αρκετοί πόροι για αυτή την έξυπνη συναλλαγή." + }, + "stxErrorUnavailable": { + "message": "Οι Έξυπνες Συναλλαγές είναι προσωρινά μη διαθέσιμες." + }, + "stxFailure": { + "message": "Η Ανταλλαγή απέτυχε" + }, + "stxFailureDescription": { + "message": "Οι ξαφνικές μεταβολές της αγοράς ενδέχεται να προκαλέσουν αποτυχίες. Εάν το πρόβλημα επιμένει, παρακαλούμε επικοινωνήστε με το $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Οι Έξυπνες Συναλλαγές είναι προσωρινά μη διαθέσιμες, επειδή έχετε μια συναλλαγή που εκκρεμεί." + }, + "stxFallbackUnavailable": { + "message": "Μπορείτε να ανταλλάξετε ακόμα τα token σας, ακόμα και αν οι Έξυπνες Συναλλαγές δεν είναι διαθέσιμες." + }, + "stxPendingFinalizing": { + "message": "Ολοκλήρωση..." + }, + "stxPendingOptimizingGas": { + "message": "Βελτιστοποίηση τελών συναλλαγής..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Ιδιωτική υποβολή της Ανταλλαγής..." + }, + "stxSubDescription": { + "message": "* Οι Έξυπνες Συναλλαγές θα προσπαθήσουν να υποβάλουν τη συναλλαγή σας ιδιωτικά, πολλές φορές. Εάν όλες οι προσπάθειες αποτύχουν, η συναλλαγή θα μεταδοθεί δημόσια για να διασφαλιστεί η επιτυχής πραγματοποίηση της ανταλλαγής σας." + }, + "stxSuccess": { + "message": "Η ανταλλαγή ολοκληρώθηκε!" + }, + "stxSuccessDescription": { + "message": "Τα $1 σας είναι πλέον διαθέσιμα.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Προσομοίωση συναλλαγών πριν από την υποβολή για μείωση του κόστους συναλλαγής και των αποτυχιών." + }, + "stxTryRegular": { + "message": "Δοκιμάστε μια κανονική ανταλλαγή." + }, + "stxTryingToCancel": { + "message": "Γίνεται προσπάθεια ακύρωσης της συναλλαγής σας..." + }, + "stxUnavailable": { + "message": "Οι Έξυπνες Συναλλαγές είναι απενεργοποιημένες" + }, + "stxUnknown": { + "message": "Άγνωστη κατάσταση" + }, + "stxUnknownDescription": { + "message": "Μια συναλλαγή ήταν επιτυχής, αλλά δε γνωρίζουμε σίγουρα τι είναι. Αυτό μπορεί να οφείλεται στην υποβολή άλλης συναλλαγής κατά τη διάρκεια επεξεργασίας αυτής της ανταλλαγής." + }, + "stxUserCancelled": { + "message": "Η ανταλλαγή ακυρώθηκε" + }, + "stxUserCancelledDescription": { + "message": "Η συναλλαγή σας ακυρώθηκε και δεν πληρώσατε περιττά τέλη συναλλαγής." + }, + "stxYouCanOptOut": { + "message": "Μπορείτε να επιλέξετε να μη συμμετέχετε ανά πάσα στιγμή, από τις ρυθμίσεις για προχωρημένους." + }, "submit": { "message": "Υποβολή" }, @@ -2607,6 +3168,10 @@ "message": "Χρειάζεστε $1 περισσότερα $2 για να ολοκληρώσετε αυτήν την ανταλλαγή", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Χρειάζεστε περισσότερα $1 για να ολοκληρώσετε αυτήν την ανταλλαγή χρησιμοποιώντας τη λειτουργία των έξυπνων συναλλαγών.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "Το καλύτερο από $1 προσφορές.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "Δεν υπάρχουν διαθέσιμα tokens που να ταιριάζουν σε $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Η ανταλλαγή θα ολοκληρωθεί σε <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Επιβεβαιώστε με το υλικό πορτοφόλι σας" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Η αλλαγή απέτυχε" }, + "swapFetchingQuoteNofN": { + "message": "Λήψη προσφοράς $1 από $2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Λήψη προσφορών" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "Το 3Box έχει απενεργοποιηθεί λόγω σφάλματος κατά τον αρχικό συγχρονισμό" }, + "tenPercentIncreased": { + "message": "10% αύξηση" + }, "terms": { "message": "Όροι Χρήσης" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Έλεγχος Βαλβίδας" }, + "testNetworks": { + "message": "Δοκιμαστικά δίκτυα" + }, + "theme": { + "message": "Θέμα" + }, + "themeDescription": { + "message": "Επιλέξτε το προτιμώμενο θέμα σας για το MetaMask." + }, "thisWillCreate": { "message": "Αυτό θα δημιουργήσει ένα νέο πορτοφόλι και Μυστική Φράση Ανάκτησης" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Διακριτικό" }, + "tokenAddress": { + "message": "Διεύθυνση token" + }, "tokenAlreadyAdded": { "message": "Το διακριτικό έχει ήδη προστεθεί." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Απαιτείται δεκαδικό Token." }, + "tokenDecimalTitle": { + "message": "Δεκαδικά Ψηφία Ακριβείας token:" + }, + "tokenDetails": { + "message": "Λεπτομέρειες token" + }, + "tokenDetection": { + "message": "Εντοπισμός token" + }, + "tokenDetectionAlertMessage": { + "message": "Ο εντοπισμός token είναι επί του παρόντος διαθέσιμος στο $1. $2" + }, "tokenDetectionAnnouncement": { "message": "Νέο! Η βελτιωμένη ανίχνευση token είναι διαθέσιμη στο Ethereum Mainnet ως πειραματικό χαρακτηριστικό. $1" }, + "tokenDetectionToggleDescription": { + "message": "Το token API της ConsenSys δημιουργεί μια λίστα με token από διάφορες λίστες token τρίτων. Εάν το απενεργοποιήσετε, θα σταματήσει ο εντοπισμός νέων token που προστίθενται στο πορτοφόλι σας, αλλά θα διατηρηθεί η επιλογή αναζήτησης token για εισαγωγή." + }, + "tokenId": { + "message": "Αναγνωριστικό token" + }, + "tokenList": { + "message": "Λίστες token:" + }, "tokenSymbol": { "message": "Σύμβολο Token" }, @@ -3178,6 +3787,12 @@ "message": "Η αποστολή συλλεκτικών (ERC-721) δεν υποστηρίζεται προς το παρόν", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Δεν μπορούμε να επαληθεύσουμε αυτή τη σύμβαση. Βεβαιωθείτε ότι εμπιστεύεστε αυτήν τη διεύθυνση." + }, + "upArrow": { + "message": "πάνω βέλος" + }, "updatedWithDate": { "message": "Ενημερώθηκε το $1" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Χρησιμοποιούμε API τρίτων για να εντοπίσουμε και να εμφανίσουμε νέα tokens που αποστέλλονται στο πορτοφόλι σας. Απενεργοποιήστε αν δεν θέλετε το MetaMask να τραβήξει δεδομένα από αυτές τις υπηρεσίες." }, + "useTokenDetectionPrivacyDesc": { + "message": "Η αυτόματη εμφάνιση των token που αποστέλλονται στον λογαριασμό σας συνεπάγεται επικοινωνία με διακομιστές τρίτων για τη λήψη εικόνων των token. Αυτοί οι διακομιστές θα έχουν πρόσβαση στη διεύθυνση IP σας." + }, "usedByClients": { "message": "Χρησιμοποιείται από μια ποικιλία διαφορετικών πελατών" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Επιτυχής δημιουργία πορτοφολιού" }, + "weak": { + "message": "Αδύναμος" + }, "web3ShimUsageNotification": { "message": "Παρατηρήσαμε ότι η τρέχουσα ιστοσελίδα προσπάθησε να χρησιμοποιήσει το αφαιρεθέν window.web3 API. Αν η ιστοσελίδα φαίνεται να έχει παραβιαστεί, κάντε κλικ στο $1 για περισσότερες πληροφορίες.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1 από $2 σε εκκρεμότητα", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Ναι" + }, "yesLetsTry": { "message": "Ναι, ας δοκιμάσουμε" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 27b711cd9..2542f85d9 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -160,6 +160,10 @@ "addNetwork": { "message": "Add Network" }, + "addNetworkTooltipWarning": { + "message": "This network connection relies on third parties. This connection may be less reliable or enable third-parties to track activity. $1", + "description": "$1 is Learn more link" + }, "addSuggestedTokens": { "message": "Add Suggested Tokens" }, @@ -199,9 +203,6 @@ "affirmAgree": { "message": "I Agree" }, - "aggregatorFeeCost": { - "message": "Aggregator network fee" - }, "airgapVault": { "message": "AirGap Vault" }, @@ -259,12 +260,6 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Approval and aggregator network fee" - }, - "approvalTxGasCost": { - "message": "Approval Tx Gas Cost" - }, "approve": { "message": "Approve spend limit" }, @@ -416,6 +411,14 @@ "message": "Buy $1", "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" }, + "buyCryptoWithCoinbasePay": { + "message": "Buy $1 with Coinbase Pay", + "description": "$1 represents the crypto symbol to be purchased" + }, + "buyCryptoWithCoinbasePayDescription": { + "message": "You can easily buy or transfer crypto with your Coinbase account.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyCryptoWithMoonPay": { "message": "Buy $1 with MoonPay", "description": "$1 represents the cypto symbol to be purchased" @@ -432,10 +435,10 @@ "description": "$1 represents the crypto symbol to be purchased" }, "buyWithWyre": { - "message": "Buy ETH with Wyre" + "message": "Buy $1 with Wyre" }, "buyWithWyreDescription": { - "message": "Wyre lets you use a debit card to deposit ETH right in to your MetaMask account." + "message": "Easy onboarding for purchases up to $ 1000. Fast interactive high limit purchase verification. Supports Debit/Credit Card, Apple Pay, Bank Transfers. Available in 100+ countries. Tokens deposit into your MetaMask Account" }, "bytes": { "message": "Bytes" @@ -622,6 +625,9 @@ "continue": { "message": "Continue" }, + "continueToCoinbasePay": { + "message": "Continue to Coinbase Pay" + }, "continueToMoonPay": { "message": "Continue to MoonPay" }, @@ -734,9 +740,6 @@ "customGasSubTitle": { "message": "Increasing fee may decrease processing times, but it is not guaranteed." }, - "customNetworks": { - "message": "Custom networks" - }, "customSpendLimit": { "message": "Custom Spend Limit" }, @@ -804,9 +807,6 @@ "decryptRequest": { "message": "Decrypt request" }, - "defaultTheme": { - "message": "Default" - }, "delete": { "message": "Delete" }, @@ -1187,10 +1187,6 @@ "externalExtension": { "message": "External Extension" }, - "extraApprovalGas": { - "message": "+$1 approval gas", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Failed" }, @@ -1251,6 +1247,10 @@ "message": "All Flask APIs are experimental. They may be changed or removed without notice, or they might stay on Flask indefinitely without ever being migrated to stable MetaMask. Use them at your own risk.", "description": "This message warns developers about unstable Flask APIs" }, + "flaskWelcomeWarning4": { + "message": "Make sure to disable your regular MetaMask extension when using Flask.", + "description": "This message calls to pay attention about multiple versions of MetaMask running on the same site (Flask + Prod)" + }, "flaskWelcomeWarningAcceptButton": { "message": "I accept the risks", "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" @@ -1442,6 +1442,9 @@ "hide": { "message": "Hide" }, + "hideFullTransactionDetails": { + "message": "Hide full transaction details" + }, "hideSeedPhrase": { "message": "Hide seed phrase" }, @@ -1471,6 +1474,12 @@ "history": { "message": "History" }, + "ignoreAll": { + "message": "Ignore all" + }, + "ignoreTokenWarning": { + "message": "If you hide tokens, they will not be shown in your wallet. However, you can still add them by searching for them." + }, "import": { "message": "Import", "description": "Button to import an account from a selected file" @@ -1520,6 +1529,10 @@ "importWallet": { "message": "Import wallet" }, + "importWithCount": { + "message": "Import $1", + "description": "$1 will the number of detected tokens that are selected for importing, if all of them are selected then $1 will be all" + }, "importYourExisting": { "message": "Import your existing wallet using a Secret Recovery Phrase" }, @@ -1714,6 +1727,9 @@ "levelArrow": { "message": "level arrow" }, + "lightTheme": { + "message": "Light" + }, "likeToImportTokens": { "message": "Would you like to import these tokens?" }, @@ -2027,6 +2043,13 @@ "newToMetaMask": { "message": "New to MetaMask?" }, + "newTokensImportedMessage": { + "message": "You’ve successfully imported $1.", + "description": "$1 is the string of symbols of all the tokens imported" + }, + "newTokensImportedTitle": { + "message": "Token imported" + }, "newTotal": { "message": "New Total" }, @@ -2109,6 +2132,9 @@ "notEnoughGas": { "message": "Not Enough Gas" }, + "notifications": { + "message": "Notifications" + }, "notifications10ActionText": { "message": "Visit in settings", "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." @@ -2131,6 +2157,15 @@ "notifications11Title": { "message": "Scam and security risks" }, + "notifications12ActionText": { + "message": "Enable dark mode" + }, + "notifications12Description": { + "message": "Dark mode on Extension is finally here! To turn it on, go to Settings -> Experimental and select one of the display options: Light, Dark, System." + }, + "notifications12Title": { + "message": "Wen dark mode? Now dark mode! 🕶️🦊" + }, "notifications1Description": { "message": "MetaMask Mobile users can now swap tokens inside their mobile wallet. Scan the QR code to get the mobile app and start swapping.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -2220,6 +2255,19 @@ "notifications9Title": { "message": "👓 We are making transactions easier to read." }, + "notificationsEmptyText": { + "message": "Nothing to see here." + }, + "notificationsHeader": { + "message": "Notifications" + }, + "notificationsInfos": { + "message": "$1 from $2", + "description": "$1 is the date at which the notification has been dispatched and $2 is the link to the snap that dispatched the notification." + }, + "notificationsMarkAllAsRead": { + "message": "Mark all as read" + }, "numberOfNewTokensDetected": { "message": "$1 new tokens found in this account", "description": "$1 is the number of new tokens detected" @@ -2299,9 +2347,6 @@ "onlyConnectTrust": { "message": "Only connect with sites you trust." }, - "onlyInteractWith": { - "message": "Only interact with entities you trust." - }, "openFullScreenForLedgerWebHid": { "message": "Open MetaMask in full screen to connect your ledger via WebHID.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." @@ -2321,6 +2366,9 @@ "origin": { "message": "Origin" }, + "osTheme": { + "message": "System" + }, "padlock": { "message": "Padlock" }, @@ -2394,6 +2442,10 @@ "message": "See address, account balance, activity and suggest transactions to approve", "description": "The description for the `eth_accounts` permission" }, + "permission_longRunning": { + "message": "Run indefinitely.", + "description": "The description for the `endowment:long-running` permission" + }, "permission_manageBip44Keys": { "message": "Control your \"$1\" accounts and assets.", "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." @@ -2423,6 +2475,9 @@ "message": "+ $1 more", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" }, + "popularCustomNetworks": { + "message": "Popular custom networks" + }, "preferredLedgerConnectionType": { "message": "Preferred Ledger Connection Type", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" @@ -3621,6 +3676,10 @@ "tokenSymbol": { "message": "Token Symbol" }, + "tokensFoundTitle": { + "message": "$1 new tokens found", + "description": "$1 is the number of new tokens detected" + }, "tooltipApproveButton": { "message": "I understand" }, @@ -3926,6 +3985,9 @@ "walletCreationSuccessTitle": { "message": "Wallet creation successful" }, + "warning": { + "message": "Warning" + }, "weak": { "message": "Weak" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 7f1cca3fd..e1f39c1d7 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -1,4 +1,49 @@ { + "QRHardwareInvalidTransactionTitle": { + "message": "Error" + }, + "QRHardwareMismatchedSignId": { + "message": "Datos de transacción incongruentes. Compruebe los detalles." + }, + "QRHardwarePubkeyAccountOutOfRange": { + "message": "No hay más cuentas. Para acceder a otra cuenta que no figura en la lista, vuelva a conectar su cartera de hardware y selecciónela." + }, + "QRHardwareScanInstructions": { + "message": "Coloque el código QR delante de la cámara. La pantalla está borrosa, pero no afectará la lectura." + }, + "QRHardwareSignRequestCancel": { + "message": "Rechazar" + }, + "QRHardwareSignRequestDescription": { + "message": "Después de firmar con su cartera, haga clic en \"Obtener firma\" para recibir la firma" + }, + "QRHardwareSignRequestGetSignature": { + "message": "Obtener firma" + }, + "QRHardwareSignRequestSubtitle": { + "message": "Escanee código QR con su cartera" + }, + "QRHardwareSignRequestTitle": { + "message": "Solicitar firma" + }, + "QRHardwareUnknownQRCodeTitle": { + "message": "Error" + }, + "QRHardwareUnknownWalletQRCode": { + "message": "Código QR no válido. Escanee el QR sincronizado de la cartera de hardware." + }, + "QRHardwareWalletImporterTitle": { + "message": "Escanear código QR" + }, + "QRHardwareWalletSteps1Description": { + "message": "Conecte una cartera de hardware airgapped que se comunique por códigos QR. Las carteras de hardware con soporte oficial incluyen:" + }, + "QRHardwareWalletSteps1Title": { + "message": "Cartera HW con QR" + }, + "QRHardwareWalletSteps2Description": { + "message": "AirGap Vault y Ngrave (próximamente)" + }, "about": { "message": "Acerca de" }, @@ -13,6 +58,10 @@ "message": "$1 puede acceder y gastar hasta este importe máximo", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 puede acceder y gastar este activo", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Accediendo a la cámara…" }, @@ -22,9 +71,16 @@ "accountDetails": { "message": "Detalles de la cuenta" }, + "accountIdenticon": { + "message": "Identicon de cuenta" + }, "accountName": { "message": "Nombre de la cuenta" }, + "accountNameDuplicate": { + "message": "Este nombre de cuenta ya existe", + "description": "This is an error message shown when the user enters a new account name that matches an existing account name" + }, "accountOptions": { "message": "Opciones de la cuenta" }, @@ -40,6 +96,18 @@ "activityLog": { "message": "registro de actividad" }, + "add": { + "message": "Agregar" + }, + "addANetwork": { + "message": "Agregar una red" + }, + "addANetworkManually": { + "message": "Agregar una red manualmente" + }, + "addANickname": { + "message": "Añadir un apodo" + }, "addAcquiredTokens": { "message": "Agregar los tokens que adquirió con MetaMask" }, @@ -49,6 +117,9 @@ "addContact": { "message": "Agregar contacto" }, + "addCustomToken": { + "message": "Añadir token personalizado" + }, "addCustomTokenByContractAddress": { "message": "¿No encuentra un token? Puede agregar cualquier token si copia su dirección. Puede encontrar la dirección de contrato del token en $1.", "description": "$1 is a blockchain explorer for a specific network, e.g. Etherscan for Ethereum" @@ -73,6 +144,12 @@ "addFriendsAndAddresses": { "message": "Agregue amigos y direcciones de confianza" }, + "addFromAListOfPopularNetworks": { + "message": "Agregue desde una lista de redes populares o agregue una red manualmente. Interactúe solo con las entidades en las que confía." + }, + "addMemo": { + "message": "Añadir memo" + }, "addNetwork": { "message": "Agregar red" }, @@ -82,17 +159,44 @@ "addToken": { "message": "Agregar token" }, + "address": { + "message": "Dirección" + }, + "addressBookIcon": { + "message": "Icono de libreta de direcciones" + }, "advanced": { "message": "Avanzado" }, + "advancedBaseGasFeeToolTip": { + "message": "Cuando su transacción se incluya en el bloque, se reembolsará cualquier diferencia entre su tarifa base máxima y la tarifa base real. El importe total se calcula como tarifa base máxima (en GWEI) * límite de gas." + }, + "advancedGasFeeDefaultOptIn": { + "message": "Guarda estos 1$ como mi valor predeterminado para \"Avanzado\"" + }, + "advancedGasFeeDefaultOptOut": { + "message": "Usar siempre estos valores y la configuración avanzada como valores predeterminados." + }, + "advancedGasFeeModalTitle": { + "message": "Tarifa de gas avanzada" + }, + "advancedGasPriceTitle": { + "message": "Precio del gas" + }, "advancedOptions": { "message": "Opciones avanzadas" }, + "advancedPriorityFeeToolTip": { + "message": "La tarifa de prioridad (también llamada “propina del minero”) va directamente a los mineros para incentivarlos a priorizar su transacción." + }, "affirmAgree": { "message": "Acepto" }, - "aggregatorFeeCost": { - "message": "Cuota de red de agregador" + "airgapVault": { + "message": "Bóveda AirGap" + }, + "airgapVaultTutorial": { + "message": " (Tutoriales)" }, "alertDisableTooltip": { "message": "Esto se puede modificar en \"Configuración > Alertas\"" @@ -115,6 +219,10 @@ "allowExternalExtensionTo": { "message": "Permitir que esta extensión externa haga lo siguiente:" }, + "allowSpendToken": { + "message": "¿Dar permiso para acceder a su $1?", + "description": "$1 is the symbol of the token that are requesting to spend" + }, "allowThisSiteTo": { "message": "Permitir que este sitio haga lo siguiente:" }, @@ -141,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Cuota de red de agregador y aprobación" - }, - "approvalTxGasCost": { - "message": "Costo de gas por transacción de aprobación" - }, "approve": { "message": "Aprobar límite de gastos" }, + "approveAndInstall": { + "message": "Aprobar e instalar" + }, "approveButtonText": { "message": "Aprobar" }, @@ -160,6 +265,18 @@ "approved": { "message": "Aprobado" }, + "approvedAmountWithColon": { + "message": "Monto aprobado:" + }, + "approvedAsset": { + "message": "Activo aprobado" + }, + "areYouDeveloper": { + "message": "¿Usted es desarrollador?" + }, + "areYouSure": { + "message": "¿Está seguro?" + }, "asset": { "message": "Activo" }, @@ -214,9 +331,43 @@ "balanceOutdated": { "message": "Es posible que el saldo esté desactualizado" }, + "baseFee": { + "message": "Tarifa base" + }, "basic": { "message": "Básico" }, + "betaMetamaskDescription": { + "message": "Con la confianza de millones de usuarios, MetaMask es una cartera segura que permite que todos puedan acceder al mundo de Web3." + }, + "betaMetamaskDescriptionExplanation": { + "message": "Use esta versión para probar las próximas funcionalidades antes de su lanzamiento. Su uso y comentarios nos ayudan a construir la mejor versión de MetaMask posible. Su uso de MetaMask Beta quedará sujeto a nuestra tarifa estándar de $1 y $2. Como Beta, puede haber un mayor riesgo de errores. Al proceder, usted acepta y reconoce estos riesgos, así como los que se encuentran en nuestros Términos y en los Términos de Beta.", + "description": "$1 represents localization item betaMetamaskDescriptionExplanationTermsLinkText. $2 represents localization item betaMetamaskDescriptionExplanationBetaTermsLinkText" + }, + "betaMetamaskDescriptionExplanationBetaTermsLinkText": { + "message": "Términos Beta adicionales" + }, + "betaMetamaskDescriptionExplanationTermsLinkText": { + "message": "Términos" + }, + "betaMetamaskVersion": { + "message": "Versión Beta de MetaMask" + }, + "betaWelcome": { + "message": "Bienvenido a MetaMask Beta" + }, + "blockExplorerAccountAction": { + "message": "Cuenta", + "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Account in Explorer" + }, + "blockExplorerAssetAction": { + "message": "Activo", + "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Asset in Explorer" + }, + "blockExplorerSwapAction": { + "message": "Canjear", + "description": "This is used with viewOnEtherscan e.g View Swap on Etherscan" + }, "blockExplorerUrl": { "message": "Dirección URL del explorador de bloques" }, @@ -227,20 +378,51 @@ "message": "Ver cuenta en $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "El explorador no es compatible…" }, "buildContactList": { "message": "Cree su lista de contactos" }, + "builtAroundTheWorld": { + "message": "MetaMask está diseñado y construido en todo el mundo." + }, + "busy": { + "message": "Ocupado" + }, "buy": { "message": "Comprar" }, + "buyAsset": { + "message": "Comprar $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Comprar $1 con MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay admite métodos de pago populares, incluidos Visa, Mastercard, Apple/Google/Samsung Pay y transferencias bancarias en más de 145 países. Depósito de tokens en su cuenta MetaMask." + }, + "buyCryptoWithTransak": { + "message": "Comprar $1 con Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak admite tarjetas de crédito y débito, Apple Pay, MobiKwik y transferencias bancarias (según la ubicación) en más de 100 países. Depósitos de $1 directamente en su cuenta MetaMask.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Comprar ETH con Wyre" + "message": "Comprar $1 con Wyre" }, "buyWithWyreDescription": { - "message": "Wyre le permite usar una tarjeta de débito para depositar ETH directamente en su cuenta de MetaMask." + "message": "Acceso fácil a transacciones de $ 1,000 o menos con verificación rápida y efectiva. Aceptamos tarjetas débito, crédito, Apple Pay y transferencias bancarias en más de 100 países. Tokens serán depósitados en su MetaMask." + }, + "bytes": { + "message": "Bytes" }, "canToggleInSettings": { "message": "Puede volver a activar esta notificación desde Configuración -> Alertas." @@ -248,6 +430,26 @@ "cancel": { "message": "Cancelar" }, + "cancelEdit": { + "message": "Cancelar Editar" + }, + "cancelPopoverTitle": { + "message": "Cancelar transacción" + }, + "cancelSpeedUp": { + "message": "cancelar o acelerar una transacción." + }, + "cancelSpeedUpLabel": { + "message": "Esta tarifa de gas va a $1 el original.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Para $1 una transacción, la tarifa de gas debe aumentar al menos un 10% para que sea reconocida por la red.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Cancelar swap" + }, "cancellationGasFee": { "message": "Cuota de gas por cancelación" }, @@ -263,21 +465,39 @@ "chainIdExistsErrorMsg": { "message": "En este momento, la red $1 está utilizando este identificador de cadena." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "La red con ID de cadena $1 puede usar un símbolo de moneda diferente ($2) al que ingresó. Verifique antes de continuar.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Debe usar MetaMask en Google Chrome para poder conectarse a su cartera de hardware." }, + "clickToConnectLedgerViaWebHID": { + "message": "Haga clic aquí para conectar su Ledger a través de WebHID", + "description": "Text that can be clicked to open a browser popup for connecting the ledger device via webhid" + }, "clickToRevealSeed": { "message": "Haga clic aquí para revelar las palabras secretas" }, "close": { "message": "Cerrar" }, + "collectibleAddFailedMessage": { + "message": "No se puede agregar NFT porque los detalles de propiedad no coinciden. Asegúrese de haber ingresado la información correcta." + }, + "collectibleAddressError": { + "message": "Este token es un NFT. Añadir a $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Confirmar" }, "confirmPassword": { "message": "Confirmar contraseña" }, + "confirmRecoveryPhrase": { + "message": "Confirmar frase secreta de recuperación" + }, "confirmSecretBackupPhrase": { "message": "Confirmar la frase secreta de respaldo" }, @@ -352,6 +572,10 @@ "message": "$1 no está conectado a ningún sitio.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "El complemento de $1 está conectado a estos sitios. Tienen acceso a los permisos enumerados anteriormente.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Estableciendo conexión…" }, @@ -382,12 +606,21 @@ "continue": { "message": "Continuar" }, + "continueToMoonPay": { + "message": "Continuar a MoonPay" + }, + "continueToTransak": { + "message": "Continuar a Transak" + }, "continueToWyre": { "message": "Continuar a Wyre" }, "contract": { "message": "Contrato" }, + "contractAddress": { + "message": "Dirección de contrato" + }, "contractAddressError": { "message": "Está enviando tokens a la dirección de contrato del token. Esto puede provocar la pérdida de los tokens." }, @@ -397,6 +630,12 @@ "contractInteraction": { "message": "Interacción con el contrato" }, + "convertTokenToNFTDescription": { + "message": "Hemos detectado que este activo es un NFT. Metamask ahora tiene soporte nativo completo para NFTs. ¿Quieres eliminarlo de tu lista de tokens y añadirlo como un NFT?" + }, + "convertTokenToNFTExistDescription": { + "message": "Hemos detectado que este recurso se ha agregado como NFT. ¿Quiere eliminarlo de su lista de tokens?" + }, "copiedExclamation": { "message": "¡Copiado!" }, @@ -406,6 +645,9 @@ "copyPrivateKey": { "message": "Esta es su clave privada (haga clic para copiarla)" }, + "copyRawTransactionData": { + "message": "Copiar los datos de las transacciones en bruto" + }, "copyToClipboard": { "message": "Copiar al Portapapeles" }, @@ -421,6 +663,9 @@ "createAccount": { "message": "Crear cuenta" }, + "createNewWallet": { + "message": "Crear una cartera nueva" + }, "createPassword": { "message": "Crear contraseña" }, @@ -442,9 +687,34 @@ "currentLanguage": { "message": "Idioma actual" }, + "currentTitle": { + "message": "Actual:" + }, + "currentlyUnavailable": { + "message": "No disponible en esta red" + }, + "curveHighGasEstimate": { + "message": "Gráfico de estimación de gas alto" + }, + "curveLowGasEstimate": { + "message": "Gráfico de estimación de gas bajo" + }, + "curveMediumGasEstimate": { + "message": "Gráfico de estimación de gas de mercado" + }, + "custom": { + "message": "Avanzado" + }, + "customContentSearch": { + "message": "Buscar una red agregada anteriormente" + }, "customGas": { "message": "Personalizar gas" }, + "customGasSettingToolTipMessage": { + "message": "Use $1 para personalizar el precio de gas. Esto puede ser confuso si no está familiarizado. Interactúe bajo su propio riesgo.", + "description": "$1 is key 'advanced' (text: 'Advanced') separated here so that it can be passed in with bold fontweight" + }, "customGasSubTitle": { "message": "Aumentar la cuota puede disminuir los tiempos de procesamiento, pero no está garantizado." }, @@ -454,9 +724,41 @@ "customToken": { "message": "Token personalizado" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "La detección de token aún no está disponible en esta red. Importe el token de forma manual y asegúrese de que confía en él. Más información sobre $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Antes de importar un tóken de forma manual, asegúrese de que confía en él. Más información sobre $1." + }, + "customerSupport": { + "message": "atención al cliente" + }, + "dappSuggested": { + "message": "Sitio sugerido" + }, + "dappSuggestedGasSettingToolTipMessage": { + "message": "$1 ha sugerido este precio.", + "description": "$1 is url for the dapp that has suggested gas settings" + }, + "dappSuggestedShortLabel": { + "message": "Sitio" + }, + "dappSuggestedTooltip": { + "message": "$1 ha recomendado este precio.", + "description": "$1 represents the Dapp's origin" + }, + "darkTheme": { + "message": "Oscuro" + }, + "data": { + "message": "Datos" + }, "dataBackupFoundInfo": { "message": "Se crearon copias de seguridad de algunos de los datos de la cuenta durante una instalación anterior de MetaMask. Esto podría incluir configuraciones, contactos y tokens. ¿Le gustaría restaurar estos datos ahora?" }, + "dataHex": { + "message": "Hex" + }, "decimal": { "message": "Decimales del token" }, @@ -495,9 +797,26 @@ "deleteNetworkDescription": { "message": "¿Está seguro de que quiere eliminar esta red?" }, + "depositCrypto": { + "message": "Deposite $1", + "description": "$1 represents the cypto symbol to be purchased" + }, + "description": { + "message": "Descripción" + }, "details": { "message": "Detalles" }, + "directDepositCrypto": { + "message": "Deposite directamente $1" + }, + "directDepositCryptoExplainer": { + "message": "Si ya tiene algo de $1, la forma más rápida de obtener $1 en su nueva billetera mediante depósito directo." + }, + "disabledGasOptionToolTipMessage": { + "message": "\"1$\" está desactivado porque no cumple el mínimo de un aumento del 10% respecto a la tarifa de gas original.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Desconectar" }, @@ -531,6 +850,9 @@ "dontShowThisAgain": { "message": "No volver a mostrar" }, + "downArrow": { + "message": "flecha hacia abajo" + }, "downloadGoogleChrome": { "message": "Descargar Google Chrome" }, @@ -546,9 +868,125 @@ "edit": { "message": "Editar" }, + "editANickname": { + "message": "Editar alias" + }, + "editAddressNickname": { + "message": "Editar apodo de dirección" + }, + "editCancellationGasFeeModalTitle": { + "message": "Editar tarifa de cancelación de gas" + }, "editContact": { "message": "Editar contacto" }, + "editGasEducationButtonText": { + "message": "¿Cómo debo elegir?" + }, + "editGasEducationHighExplanation": { + "message": "Esto es lo más conveniente para transacciones con límite de tiempo (como Swaps/Intercambios) ya que aumenta la probabilidad de que la transacción sea exitosa. Si un intercambio tarda demasiado en procesarse, puede que falle y esto resulte en la pérdida de parte de su tarifa de gas." + }, + "editGasEducationLowExplanation": { + "message": "Una tarifa de gas más baja debería utilizarse solo cuando el tiempo de procesamiento es menos importante. Las tarifas reducidas dificultan la predicción de cuándo (o si) su transacción tendrá éxito." + }, + "editGasEducationMediumExplanation": { + "message": "Una tarifa de gas media es buena para enviar, retirar u otras transacciones sin límites de tiempo. Esta configuración será exitosa en la mayoría de los casos." + }, + "editGasEducationModalIntro": { + "message": "Seleccionar la tarifa de gas adecuada depende del tipo de transacción y de la importancia que tenga para usted." + }, + "editGasEducationModalTitle": { + "message": "¿Cómo elegir?" + }, + "editGasFeeModalTitle": { + "message": "Editar cuota de Gas" + }, + "editGasHigh": { + "message": "Alto" + }, + "editGasLimitOutOfBounds": { + "message": "El límite de gas debe ser al menos $1" + }, + "editGasLimitOutOfBoundsV2": { + "message": "El límite de gas debe ser superior a $1 e inferior a $2", + "description": "$1 is the minimum limit for gas and $2 is the maximum limit" + }, + "editGasLimitTooltip": { + "message": "El límite de gas es el máximo de unidades de gas que está dispuesto a utilizar. Las unidades de gas son un multiplicador de la \"Tarifa de prioridad máxima\" y de la \"Tarifa máxima\"." + }, + "editGasLow": { + "message": "Bajo" + }, + "editGasMaxBaseFeeGWEIImbalance": { + "message": "La tarifa base máxima no puede ser inferior a la tarifa de prioridad" + }, + "editGasMaxBaseFeeHigh": { + "message": "La tarifa base máxima es más alta de lo necesario" + }, + "editGasMaxBaseFeeLow": { + "message": "La tarifa base máxima es baja para las condiciones actuales de la red" + }, + "editGasMaxFeeHigh": { + "message": "La tarifa base máxima es más alta de lo necesario" + }, + "editGasMaxFeeLow": { + "message": "Tarifa máxima demasiado baja para las condiciones de red" + }, + "editGasMaxFeePriorityImbalance": { + "message": "La tarifa base máxima no puede ser inferior a la tarifa de prioridad máxima" + }, + "editGasMaxFeeTooltip": { + "message": "La tarifa máxima es lo máximo que se pagará (tarifa básica + tarifa de prioridad)." + }, + "editGasMaxPriorityFeeBelowMinimum": { + "message": "La tarifa máxima de prioridad debe ser superior a 0 GWEI" + }, + "editGasMaxPriorityFeeBelowMinimumV2": { + "message": "La tarifa de prioridad debe ser superior a 0." + }, + "editGasMaxPriorityFeeHigh": { + "message": "La tarifa máxima de prioridad es más alta de lo necesario. Es posible que pague más de lo necesario." + }, + "editGasMaxPriorityFeeHighV2": { + "message": "La tarifa de prioridad es más alta de lo necesario. Es posible que pague más de lo necesario" + }, + "editGasMaxPriorityFeeLow": { + "message": "La tarifa de prioridad máxima es baja para las condiciones actuales de la red" + }, + "editGasMaxPriorityFeeLowV2": { + "message": "La tarifa de prioridad es baja para las condiciones actuales de la red" + }, + "editGasMaxPriorityFeeTooltip": { + "message": "La tarifa de prioridad máxima (también llamada “propina del minero”) va directamente a los mineros para incentivarlos a priorizar su transacción. Lo más habitual es que se pague la configuración máxima" + }, + "editGasMedium": { + "message": "Medio" + }, + "editGasPriceTooLow": { + "message": "El precio del gas debe ser superior a 0" + }, + "editGasPriceTooltip": { + "message": "Esta red requiere un campo \"Precio del gas\" cuando se envía una transacción. El precio del gas es la cantidad que se pagará por unidad de gas." + }, + "editGasSubTextAmountLabel": { + "message": "Cantidad máxima:", + "description": "This is meant to be used as the $1 substitution editGasSubTextAmount" + }, + "editGasSubTextFeeLabel": { + "message": "Tarifa máxima:" + }, + "editGasTitle": { + "message": "Editar prioridad" + }, + "editGasTooLow": { + "message": "Se desconoce el tiempo de procesamiento" + }, + "editGasTooLowTooltip": { + "message": "Su tarifa máxima o su tarifa prioritaria máxima pueden ser bajas para las condiciones actuales del mercado. No sabemos cuándo (o si) se procesará su transacción. " + }, + "editGasTooLowWarningTooltip": { + "message": "Esto reduce su tarifa máxima, pero si el tráfico de la red aumenta, su transacción puede retrasarse o resultar fallida." + }, "editNonceField": { "message": "Editar nonce" }, @@ -558,6 +996,44 @@ "editPermission": { "message": "Editar permiso" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Editar la tarifa de aceleración de gas" + }, + "enableAutoDetect": { + "message": " Activar autodetección" + }, + "enableEIP1559V2": { + "message": "Activar interfaz de tarifa de gas mejorada" + }, + "enableEIP1559V2AlertMessage": { + "message": "Hemos actualizado la forma en que funciona la estimación y la personalización de la tarifa de gas." + }, + "enableEIP1559V2ButtonText": { + "message": "Activar interfaz de tarifa de gas mejorada en Configuración" + }, + "enableEIP1559V2Description": { + "message": "Hemos actualizado la forma en que funciona la estimación y la personalización de la tarifa de gas. Actívela si desea utilizar la nueva experiencia de gas. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Nueva experiencia de gas" + }, + "enableFromSettings": { + "message": " Actívela en Configuración." + }, + "enableOpenSeaAPI": { + "message": "Habilite el API de OpenSea" + }, + "enableOpenSeaAPIDescription": { + "message": "Utilice la API de OpenSea para obtener los datos de NFT. La autodetección de NFT depende de la API de OpenSea y no estará disponible si la API está desactivada." + }, + "enableSmartTransactions": { + "message": "Habilitar transacciones inteligentes" + }, + "enableToken": { + "message": "activar $1", + "description": "$1 is a token symbol, e.g. ETH" + }, "encryptionPublicKeyNotice": { "message": "$1 quisiera su clave pública de cifrado. Al aceptar, este sitio podrá redactar mensajes cifrados para usted.", "description": "$1 is the web3 site name" @@ -600,12 +1076,21 @@ "message": "El punto de conexión devolvió un id. de cadena diferente: $1", "description": "$1 is the return value of eth_chainId from an RPC endpoint" }, + "ensIllegalCharacter": { + "message": "Caracter ilegal para ENS." + }, "ensNotFoundOnCurrentNetwork": { "message": "El nombre de ENS no se encuentra en la red actual. Intente cambiar a la red principal de Ethereum." }, + "ensNotSupportedOnNetwork": { + "message": "La red no admite ENS" + }, "ensRegistrationError": { "message": "Error en el registro del nombre de ENS" }, + "ensUnknownError": { + "message": "Error al buscar ENS." + }, "enterMaxSpendLimit": { "message": "Escribir límite máximo de gastos" }, @@ -656,31 +1141,45 @@ "ethereumPublicAddress": { "message": "Dirección pública de Ethereum" }, + "etherscan": { + "message": "Etherscan" + }, "etherscanView": { "message": "Ver cuenta en Etherscan" }, + "etherscanViewOn": { + "message": "Ver en Etherscan" + }, + "expandExperience": { + "message": "Amplíe su experiencia web3" + }, "expandView": { "message": "Expandir vista" }, + "experimental": { + "message": "Experimental" + }, "exportPrivateKey": { "message": "Exportar clave privada" }, "externalExtension": { "message": "Extensión externa" }, - "extraApprovalGas": { - "message": "+$1 gas por aprobación", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Con errores" }, "failedToFetchChainId": { "message": "No se pudo capturar el id. de cadena. ¿La dirección URL de RPC es correcta?" }, + "failedToFetchTickerSymbolData": { + "message": "Los datos de verificación del símbolo de teletipo no están disponibles actualmente, asegúrese de que el símbolo que ingresó sea correcto. Tendrá un impacto en las tasas de conversión que vea para esta red" + }, "failureMessage": { "message": "Se produjo un error y no pudimos completar la acción" }, + "fakeTokenWarning": { + "message": "Cualquiera puede crear un token, incluso crear versiones falsas de tokens existentes. Aprenda más sobre $1" + }, "fast": { "message": "Rápido" }, @@ -698,12 +1197,50 @@ "message": "¿No funciona la importación del archivo? Haga clic aquí.", "description": "Helps user import their account from a JSON file" }, + "flaskSnapSettingsCardButtonCta": { + "message": "Ver detalles", + "description": "Call to action a user can take to see more information about the Snap that is installed" + }, + "flaskSnapSettingsCardDateAddedOn": { + "message": "Añadido el", + "description": "Start of the sentence describing when and where snap was added" + }, + "flaskSnapSettingsCardFrom": { + "message": "de", + "description": "Part of the sentence describing when and where snap was added" + }, + "flaskWelcomeUninstall": { + "message": "le recomendamos que desinstale esta extensión", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask es para que los desarrolladores experimenten con nuevas API inestables. A menos que usted sea desarrollador o probador beta, 1$.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "No garantizamos la seguridad o estabilidad de esta extensión. Las nuevas API ofrecidas por Flask no están protegidas contra los ataques de phishing, lo que significa que cualquier sitio o snap que requiera Flask podría ser un intento malicioso de robar sus activos.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Todas las API de Flask son experimentales. Se pueden cambiar o eliminadar sin previo aviso o pueden permanecer en Flask indefinidamente sin ser migradas a MetaMask estable. Úselas bajo su propia responsabilidad.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Acepto los riesgos", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, + "followUsOnTwitter": { + "message": "Síganos en Twitter" + }, "forbiddenIpfsGateway": { "message": "Puerta de enlace de IPFS prohibida: especifique una puerta de enlace de CID" }, "forgetDevice": { "message": "Olvidar este dispositivo" }, + "forgotPassword": { + "message": "¿Olvidó su contraseña?" + }, "from": { "message": "De" }, @@ -711,18 +1248,40 @@ "message": "De: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "De las listas de tóken: $1" + }, "functionApprove": { "message": "Función: Aprobar" }, "functionType": { "message": "Tipo de función" }, + "gas": { + "message": "Gas" + }, + "gasDisplayAcknowledgeDappButtonText": { + "message": "Editar tarifa de gas sugerida" + }, + "gasDisplayDappWarning": { + "message": "Esta tarifa de gas ha sido sugerida por $1. Anularla puede causar un problema con su transacción. Comuníquese con $1 si tiene preguntas.", + "description": "$1 represents the Dapp's origin" + }, + "gasEstimatesUnavailableWarning": { + "message": "Nuestras estimaciones bajas, medias y altas no están disponibles." + }, + "gasFee": { + "message": "Cuota de gas" + }, "gasLimit": { "message": "Límite de gas" }, "gasLimitInfoTooltipContent": { "message": "El límite de gas es la cantidad máxima de unidades de gas que está dispuesto a gastar." }, + "gasLimitRecommended": { + "message": "El límite de gas recomendado es de $1. Si el límite de gas está por debajo de ese nivel, puede fallar." + }, "gasLimitTooLow": { "message": "El límite de gas debe ser al menos 21 000" }, @@ -730,6 +1289,12 @@ "message": "El límite de gas debe ser al menos $1", "description": "$1 is the custom gas limit, in decimal." }, + "gasLimitV2": { + "message": "Límite de gas" + }, + "gasOption": { + "message": "Opción de gas" + }, "gasPrice": { "message": "Precio de gas (GWEI)" }, @@ -748,6 +1313,38 @@ "gasPriceInfoTooltipContent": { "message": "El precio de gas especifica la cantidad de ethers que está dispuesto a pagar por cada unidad de gas." }, + "gasTimingHoursShort": { + "message": "$1 horas", + "description": "$1 represents a number of hours" + }, + "gasTimingMinutes": { + "message": "$1 minutos", + "description": "$1 represents a number of minutes" + }, + "gasTimingMinutesShort": { + "message": "$1 min", + "description": "$1 represents a number of minutes" + }, + "gasTimingNegative": { + "message": "Quizás en $1", + "description": "$1 represents an amount of time" + }, + "gasTimingPositive": { + "message": "Probablemente en < $1", + "description": "$1 represents an amount of time" + }, + "gasTimingSeconds": { + "message": "$1 segundos", + "description": "$1 represents a number of seconds" + }, + "gasTimingSecondsShort": { + "message": "$1 s", + "description": "$1 represents a number of seconds" + }, + "gasTimingVeryPositive": { + "message": "Muy probable en < $1", + "description": "$1 represents an amount of time" + }, "gasUsed": { "message": "Gas usado" }, @@ -759,6 +1356,9 @@ "message": "Política de privacidad aquí", "description": "this translation is intended to be exclusively used as the replacement for the $1 in the gdprMessage translation" }, + "general": { + "message": "General" + }, "getEther": { "message": "Obtener ether" }, @@ -769,15 +1369,34 @@ "getStarted": { "message": "Empezar" }, + "goBack": { + "message": "Volver" + }, "goerli": { "message": "Red de prueba Goerli" }, + "gotIt": { + "message": "Entendido" + }, + "grantedToWithColon": { + "message": "Concedido a:" + }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Nos alegra verlo." }, + "hardware": { + "message": "Hardware" + }, "hardwareWalletConnected": { "message": "Cartera de hardware conectada" }, + "hardwareWalletLegacyDescription": { + "message": "(antiguo)", + "description": "Text representing the MEW path" + }, "hardwareWalletSupportLinkConversion": { "message": "Haga clic aquí" }, @@ -797,6 +1416,12 @@ "hide": { "message": "Ocultar" }, + "hideSeedPhrase": { + "message": "Ocultar frase inicial" + }, + "hideToken": { + "message": "Ocultar token" + }, "hideTokenPrompt": { "message": "¿Ocultar token?" }, @@ -807,6 +1432,16 @@ "hideZeroBalanceTokens": { "message": "Ocultar tokens sin saldo" }, + "high": { + "message": "Agresivo" + }, + "highGasSettingToolTipMessage": { + "message": "Alta probabilidad, incluso en mercados volátiles. Use $1 para cubrir aumentos repentinos en el tráfico de la red debido a cosas como caídas de NFT populares.", + "description": "$1 is key 'high' (text: 'Aggressive') separated here so that it can be passed in with bold fontweight" + }, + "highLowercase": { + "message": "alto" + }, "history": { "message": "Historial" }, @@ -817,18 +1452,45 @@ "importAccount": { "message": "Importar cuenta" }, + "importAccountError": { + "message": "Error al importar la cuenta." + }, "importAccountMsg": { "message": " Las cuentas importadas no se asociarán con la frase secreta de recuperación de la cuenta original de MetaMask. Más información sobre las cuentas importadas " }, "importAccountSeedPhrase": { "message": "Importar una cuenta con la frase secreta de recuperación" }, + "importMyWallet": { + "message": "Importar Mi cartera" + }, + "importNFT": { + "message": "Agregar NFT" + }, + "importNFTAddressToolTip": { + "message": "En OpenSea, por ejemplo, en la página de NFT en Detalles, hay un un vínculo azul etiquetado como 'Dirección del contrato'. Si haces clic en esto, te llevará a la dirección del contrato en Etherscan; en la parte superior izquierda de esa página, debe haber un icono etiquetado como 'Contrato' y, a la derecha, una larga cadena de letras y números. Esta es la dirección del contrato que creó tu NFT. Haz clic en el icono de 'copiar' que aparece a la derecha de la dirección, y la tendrás en el portapapeles." + }, + "importNFTPage": { + "message": "Importar página de NFT" + }, + "importNFTTokenIdToolTip": { + "message": "El ID de un coleccionable es un identificador único, ya que no hay dos NFT iguales. Nuevamente, en OpenSea este número está en 'Detalles'. Anótalo o cópialo en tu portapapeles." + }, + "importNFTs": { + "message": "AGREGAR NFT" + }, "importTokenQuestion": { "message": "¿Desea importar el token?" }, "importTokenWarning": { "message": "Toda persona puede crear un token con cualquier nombre, incluso versiones falsas de tokens existentes. ¡Agréguelo y realice transacciones bajo su propio riesgo!" }, + "importTokens": { + "message": "agregar activo" + }, + "importTokensCamelCase": { + "message": "AGREGAR TOKENS" + }, "importWallet": { "message": "Importar cartera" }, @@ -849,9 +1511,20 @@ "insufficientBalance": { "message": "Saldo insuficiente." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "No tiene suficiente $1 en su cuenta para pagar las tarifas de transacción en la red de $2. $3 o deposite desde otra cuenta.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "No tiene suficiente $1 en su cuenta para pagar las tarifas de transacción en la red de $2. Deposite $1 desde otra cuenta.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Fondos insuficientes." }, + "insufficientFundsForGas": { + "message": "Fondos insuficientes para el gas" + }, "insufficientTokens": { "message": "Tokens insuficientes." }, @@ -864,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "No es una red ETH; configurar en minúsculas" }, + "invalidAssetType": { + "message": "Este activo es un NFT y debe volver a añadirse en la página de Importar NFTs que se encuentra en la pestaña de NFTs" + }, "invalidBlockExplorerURL": { "message": "Dirección URL del explorador de bloques no válida" }, @@ -911,10 +1587,25 @@ "ipfsGatewayDescription": { "message": "Escriba la dirección URL de la puerta de enlace de IPFS CID para usar la resolución de contenido de ENS." }, + "jazzAndBlockies": { + "message": "Jazzicons y Blockies son dos estilos distintos de íconos únicos que pueden ayudarlo a identificar rápidamente una cuenta." + }, + "jazzicons": { + "message": "Jazzicons" + }, + "jsDeliver": { + "message": "jsDeliver" + }, "jsonFile": { "message": "Archivo JSON", "description": "format for importing an account" }, + "keystone": { + "message": "Keystone" + }, + "keystoneTutorial": { + "message": " (Tutoriales)" + }, "knownAddressRecipient": { "message": "Dirección de contrato conocida." }, @@ -927,12 +1618,54 @@ "lastConnected": { "message": "Última conexión" }, + "learmMoreAboutGas": { + "message": "¿Quiere $1 sobre el gas?" + }, + "learnCancelSpeeedup": { + "message": "Aprenda cómo $1", + "description": "$1 is link to cancel or speed up transactions" + }, "learnMore": { "message": "Más información" }, + "learnMoreUpperCase": { + "message": "Más información" + }, + "learnScamRisk": { + "message": "estafas y riesgos en seguridad." + }, "ledgerAccountRestriction": { "message": "Debe usar su última cuenta antes de poder agregar una nueva." }, + "ledgerConnectionInstructionCloseOtherApps": { + "message": "Cierre cualquier otro software conectado a su dispositivo y haga clic aquí para actualizar." + }, + "ledgerConnectionInstructionHeader": { + "message": "Antes de hacer clic en Confirmar:" + }, + "ledgerConnectionInstructionStepFour": { + "message": "Habilite \"datos de contrato inteligente\" o \"firma ciega\" en su dispositivo Ledger" + }, + "ledgerConnectionInstructionStepOne": { + "message": "Habilite el uso de Ledger Live en Configuración > Avanzada" + }, + "ledgerConnectionInstructionStepThree": { + "message": "Conecte su dispositivo Ledger y seleccione la aplicación Ethereum" + }, + "ledgerConnectionInstructionStepTwo": { + "message": "Abra y desbloquee la aplicación Ledger Live" + }, + "ledgerConnectionPreferenceDescription": { + "message": "Personalice la forma de conectar su Ledger a MetaMask. Se recomienda $1, pero hay otras opciones disponibles. Lea más aquí: $2", + "description": "A description that appears above a dropdown where users can select between up to three options - Ledger Live, U2F or WebHID - depending on what is supported in their browser. $1 is the recommended browser option, it will be either WebHID or U2f. $2 is a link to an article where users can learn more, but will be the translation of the learnMore message." + }, + "ledgerDeviceOpenFailureMessage": { + "message": "El dispositivo Ledger no pudo abrirse. Su Ledger podría estar conectado a otro software. Cierre Ledger Live u otras aplicaciones conectadas a su dispositivo Ledger, e intente conectarse de nuevo." + }, + "ledgerLive": { + "message": "Ledger Live", + "description": "The name of a desktop app that can be used with your ledger device. We can also use it to connect a users Ledger device to MetaMask." + }, "ledgerLiveApp": { "message": "Aplicación de Ledger Live" }, @@ -942,12 +1675,25 @@ "ledgerTimeout": { "message": "Ledger Live tardó mucho en responder o se excedió el tiempo de espera de la conexión. Asegúrese de que la aplicación de Ledger Live está abierta y que su dispositivo está desbloqueado." }, + "ledgerTransportChangeWarning": { + "message": "Si su aplicación Ledger Live está abierta, desconecte todas las conexiones abiertas de Ledger Live y cierre la aplicación." + }, + "ledgerWebHIDNotConnectedErrorMessage": { + "message": "El dispositivo Ledger no se ha conectado. Si desea conectar su Ledger, haga clic de nuevo en 'Continuar' y apruebe la conexión HID", + "description": "An error message shown to the user during the hardware connect flow." + }, "letsGoSetUp": { "message": "Sí, vamos a establecer la configuración." }, + "levelArrow": { + "message": "flecha de nivel" + }, "likeToImportTokens": { "message": "¿Le gustaría agregar estos tokens?" }, + "link": { + "message": "Vínculo" + }, "links": { "message": "Vínculos" }, @@ -957,6 +1703,9 @@ "loading": { "message": "Cargando…" }, + "loadingNFTs": { + "message": "Cargando NFT..." + }, "loadingTokens": { "message": "Cargando tokens…" }, @@ -969,15 +1718,61 @@ "lockTimeTooGreat": { "message": "El tiempo de bloqueo es demasiado largo" }, + "logo": { + "message": "Logo de $1", + "description": "$1 is the name of the ticker" + }, + "low": { + "message": "Bajo" + }, + "lowGasSettingToolTipMessage": { + "message": "Utilice $1 para esperar un precio más bajo. Las estimaciones de tiempo son mucho menos precisas ya que los precios son algo imprevisibles.", + "description": "$1 is key 'low' separated here so that it can be passed in with bold fontweight" + }, + "lowLowercase": { + "message": "bajo" + }, + "lowPriorityMessage": { + "message": "Las transacciones futuras se pondrán en espera después de esta." + }, "mainnet": { "message": "Red principal de Ethereum" }, + "mainnetToken": { + "message": "Esta dirección coincide con una dirección conocida de token en la Mainnet de Ethereum. Vuelve a comprobar la dirección del contrato y la red correspondiente al token que intentas añadir." + }, "makeAnotherSwap": { "message": "Crear un nuevo canje" }, + "makeSureNoOneWatching": { + "message": "Asegúrese de que no haya nadie mirando la pantalla", + "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" + }, + "malformedData": { + "message": "Datos con formato incorrecto" + }, + "manageSnaps": { + "message": "Administre sus complementos instalados" + }, "max": { "message": "Máx." }, + "maxBaseFee": { + "message": "Tarifa base máxima" + }, + "maxFee": { + "message": "Tarifa máxima" + }, + "maxPriorityFee": { + "message": "Tarifa máxima de prioridad" + }, + "medium": { + "message": "Mercado" + }, + "mediumGasSettingToolTipMessage": { + "message": "Utilice $1 para un procesamiento rápido al precio actual del mercado.", + "description": "$1 is key 'medium' (text: 'Market') separated here so that it can be passed in with bold fontweight" + }, "memo": { "message": "memorándum" }, @@ -1008,6 +1803,9 @@ "metametricsCommitmentsAllowOptOut": { "message": "Permitirle siempre optar por no participar a través de Configuración" }, + "metametricsCommitmentsAllowOptOut2": { + "message": "Siempre podrá excluirse a través de la Configuración" + }, "metametricsCommitmentsBoldNever": { "message": "Nunca", "description": "This string is localized separately from some of the commitments so that we can bold it" @@ -1015,6 +1813,9 @@ "metametricsCommitmentsIntro": { "message": "MetaMask…" }, + "metametricsCommitmentsNeverCollect": { + "message": "Nunca recopilará claves, direcciones, transacciones, saldos, hashes o cualquier otra información personal" + }, "metametricsCommitmentsNeverCollectIP": { "message": "$1 recopilará su dirección IP completa", "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" @@ -1023,6 +1824,12 @@ "message": "$1 recopilará claves, direcciones, transacciones, saldos, hashes o cualquier otra información personal", "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" }, + "metametricsCommitmentsNeverIP": { + "message": "Nunca recolectará su dirección IP completa" + }, + "metametricsCommitmentsNeverSell": { + "message": "Nunca venderá datos con afán de lucro. ¡Jamás!" + }, "metametricsCommitmentsNeverSellDataForProfit": { "message": "$1 venderá datos con afán de lucro. ¡Jamás!", "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" @@ -1036,6 +1843,12 @@ "metametricsOptInDescription": { "message": "A MetaMask le gustaría recopilar datos de uso para entender mejor cómo los usuarios interactúan con la extensión. Estos datos se usarán para mejorar de manera continua la usabilidad y la experiencia de usuario de nuestro producto y del ecosistema de Ethereum." }, + "metametricsOptInDescription2": { + "message": "Nos gustaría recopilar datos básicos de uso para mejorar la usabilidad de nuestro producto. Estos indicadores..." + }, + "metametricsTitle": { + "message": "Únase a más de 6 millones de usuarios para mejorar MetaMask" + }, "mismatchedChain": { "message": "Los detalles de la red de este identificador de cadena no coinciden con nuestros registros. Antes de continuar, le recomendamos que $1.", "description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key" @@ -1044,6 +1857,21 @@ "message": "verifique los detalles de la red", "description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key." }, + "missingNFT": { + "message": "¿No ve su NFT?" + }, + "missingSetting": { + "message": "¿No puede encontrar un ajuste?" + }, + "missingSettingRequest": { + "message": "Solicítelo aquí" + }, + "missingToken": { + "message": "¿No ve su token?" + }, + "mobileSyncWarning": { + "message": "La función 'Sincronizar con la extensión' está temporalmente desactivada. Si desea utilizar su cartera de extensión en MetaMask móvil, haga lo siguiente en la aplicación móvil: vuelva a las opciones de configuración de la cartera y seleccione la opción 'Importar con frase secreta de recuperación'. Use la frase secreta de su cartera de extensión para importar su cartera al móvil." + }, "mustSelectOne": { "message": "Debe seleccionar al menos 1 token." }, @@ -1053,13 +1881,23 @@ "name": { "message": "Nombre" }, + "needCryptoInWallet": { + "message": "Para interactuar con aplicaciones descentralizadas usando MetaMask, necesitará $1 en su billetera.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "¿Necesita ayuda? Comuníquese con $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" }, + "needHelpFeedback": { + "message": "Comparta su opinión" + }, "needHelpLinkText": { "message": "Soporte de MetaMask" }, + "needHelpSubmitTicket": { + "message": "Enviar un ticket" + }, "needImportFile": { "message": "Debe seleccionar un archivo para la importación.", "description": "User is important an account and needs to add a file to continue" @@ -1067,21 +1905,56 @@ "negativeETH": { "message": "No se pueden enviar cantidades negativas de ETH." }, + "network": { + "message": "Red:" + }, "networkDetails": { "message": "Detalles de la red" }, + "networkIsBusy": { + "message": "La red está ocupada. Los precios del gas son altos y las estimaciones son menos precisas." + }, "networkName": { "message": "Nombre de la red" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, + "networkNameBSC": { + "message": "BSC" + }, "networkNameDefinition": { "message": "El nombre asociado a esta red." }, + "networkNameEthereum": { + "message": "Ethereum" + }, + "networkNamePolygon": { + "message": "Polygon" + }, + "networkNameRinkeby": { + "message": "Rinkeby" + }, "networkNameTestnet": { "message": "Red de prueba" }, "networkSettingsChainIdDescription": { "message": "El id. de la cadena se usa para firmar transacciones. Debe coincidir con el id. de la cadena que devuelve la red. Puede escribir un número decimal o un número hexadecimal con el prefijo “0x”, pero el número se mostrará en decimal." }, + "networkStatus": { + "message": "Estado de la red" + }, + "networkStatusBaseFeeTooltip": { + "message": "La tarifa base la fija la red y cambia cada 13-14 segundos. Nuestras opciones $1 y $2 dan cuenta de los aumentos repentinos.", + "description": "$1 and $2 are bold text for Medium and Aggressive respectively." + }, + "networkStatusPriorityFeeTooltip": { + "message": "Rango de tarifas de prioridad (también llamada “propina del minero”): esto va directamente a los mineros para incentivarlos a priorizar su transacción." + }, + "networkStatusStabilityFeeTooltip": { + "message": "Las tarifas del gas son de $1 en relación con las últimas 72 horas.", + "description": "$1 is networks stability value - stable, low, high" + }, "networkURL": { "message": "Dirección URL de la red" }, @@ -1104,12 +1977,24 @@ "message": "Cuenta $1", "description": "Default name of next account to be created on create account screen" }, + "newCollectibleAddedMessage": { + "message": "¡El coleccionable fue añadido con éxito!" + }, "newContact": { "message": "Contacto nuevo" }, "newContract": { "message": "Contrato nuevo" }, + "newNFTDetectedMessage": { + "message": "Permita que MetaMask detecte de forma automática los NFT de Opensea y los muestre en su cartera." + }, + "newNFTsDetected": { + "message": "¡Nuevo! Detección NFT" + }, + "newNetworkAdded": { + "message": "¡\"$1\" se añadió con éxito!" + }, "newPassword": { "message": "Contraseña nueva (mín. de 8 caracteres)" }, @@ -1122,6 +2007,9 @@ "newTransactionFee": { "message": "Cuota de transacción nueva" }, + "newValues": { + "message": "nuevos valores" + }, "next": { "message": "Siguiente" }, @@ -1129,6 +2017,15 @@ "message": "El nonce es superior al nonce sugerido de $1", "description": "The next nonce according to MetaMask's internal logic" }, + "nftTokenIdPlaceholder": { + "message": "Ingresa el ID del token" + }, + "nfts": { + "message": "NFT" + }, + "nickname": { + "message": "Apodo" + }, "noAccountsFound": { "message": "No se encuentran cuentas para la consulta de búsqueda determinada" }, @@ -1138,12 +2035,24 @@ "noAlreadyHaveSeed": { "message": "No, ya tengo una frase secreta de recuperación" }, + "noConversionDateAvailable": { + "message": "No hay fecha de conversión de moneda disponible" + }, "noConversionRateAvailable": { "message": "No hay tasa de conversión disponible" }, + "noNFTs": { + "message": "No hay ningún NFT aún" + }, + "noSnaps": { + "message": "No hay complementos instalados" + }, "noThanks": { "message": "No, gracias" }, + "noThanksVariant2": { + "message": "No, gracias." + }, "noTransactions": { "message": "No tiene transacciones" }, @@ -1153,6 +2062,9 @@ "noWebcamFoundTitle": { "message": "No se encontró cámara web" }, + "nonce": { + "message": "Mientras tanto" + }, "nonceField": { "message": "Personalizar nonce de transacción" }, @@ -1162,12 +2074,46 @@ "nonceFieldHeading": { "message": "Nonce personalizado" }, + "notBusy": { + "message": "No ocupado" + }, "notCurrentAccount": { "message": "¿Esta es la cuenta correcta? Es distinta de la cuenta seleccionada actualmente en la cartera" }, "notEnoughGas": { "message": "No hay gas suficiente" }, + "notifications10ActionText": { + "message": "Vaya a configuración", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "En este momento, la detección mejorada de token está disponible en las redes Ethereum Mainnet, Polygon, BSC y Avalanche. ¡Y habrá más!" + }, + "notifications10DescriptionThree": { + "message": "La función de detección de tóken está ACTIVADA de forma predeterminada. Pero puede desactivarla en Configuración." + }, + "notifications10DescriptionTwo": { + "message": "Obtenemos los tokens de listas de tokens de terceros. Los tokens enumerados en más de dos listas de tokens se detectarán automáticamente." + }, + "notifications10Title": { + "message": "Ya llegó la detección mejorada de tokens" + }, + "notifications11Description": { + "message": "Cualquier persona puede crear los tokens, y estos pueden tener nombres duplicados. Si ve aparecer un token en el que no confía o con el que no ha interactuado, es más seguro que no confíe en él." + }, + "notifications11Title": { + "message": "Riesgos de estafa y seguridad" + }, + "notifications12ActionText": { + "message": "Habilitar modo oscuro" + }, + "notifications12Description": { + "message": "Se habilitará el modo oscuro para los nuevos usuarios según las preferencias de su sistema. Para usuarios existentes, habilite el modo oscuro de forma manual en Configuración -> Experimental." + }, + "notifications12Title": { + "message": "¿Cuándo estará disponible el modo oscuro? ¡Ahora! 🕶️🦊" + }, "notifications1Description": { "message": "Los usuarios de la aplicación móvil de MetaMask ahora pueden canjear tokens en su cartera móvil. Escanee el código QR para obtener la aplicación móvil y comience a canjear.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1220,6 +2166,47 @@ "message": "Actualización del soporte para Ledger destinada a usuarios de Chrome", "description": "Title for a notification in the 'See What's New' popup. Lets users know about the Ledger support update" }, + "notifications7DescriptionOne": { + "message": "MetaMask v10.1.0 incluyó nuevo soporte para las transacciones EIP-1559 al utilizar dispositivos Ledger.", + "description": "Description of a notification in the 'See What's New' popup. Describes changes for ledger and EIP1559 in v10.1.0" + }, + "notifications7DescriptionTwo": { + "message": "Para llevar a cabo transacciones en el Mainnet de Ethereum, asegúrese de que su dispositivo Ledger tenga el último firmware.", + "description": "Description of a notification in the 'See What's New' popup. Describes the need to update ledger firmware." + }, + "notifications7Title": { + "message": "Actualización de firmware de Ledger", + "description": "Title for a notification in the 'See What's New' popup. Notifies ledger users of the need to update firmware." + }, + "notifications8ActionText": { + "message": "Ir a Configuración Avanzada", + "description": "Description on an action button that appears in the What's New popup. Tells the user that if they click it, they will go to our Advanced Settings page." + }, + "notifications8DescriptionOne": { + "message": "A partir de MetaMask v10.4.0, ya no necesita Ledger Live para conectar su dispositivo Ledger a MetaMask.", + "description": "Description of a notification in the 'See What's New' popup. Describes changes for how Ledger Live is no longer needed to connect the device." + }, + "notifications8DescriptionTwo": { + "message": "Para una experiencia más fácil y estable, vaya a la pestaña de Configuración Avanzada y cambie el 'Tipo de Conexión de Ledger Preferida' a 'WebHID'.", + "description": "Description of a notification in the 'See What's New' popup. Describes how the user can turn off the Ledger Live setting." + }, + "notifications8Title": { + "message": "Mejora de la conexión de Ledger", + "description": "Title for a notification in the 'See What's New' popup. Notifies ledger users that there is an improvement in how they can connect their device." + }, + "notifications9DescriptionOne": { + "message": "Ahora le ofrecemos más información en la pestaña \"Datos\" al confirmar las transacciones de contratos inteligentes." + }, + "notifications9DescriptionTwo": { + "message": "Ahora puede entender mejor los detalles de la transacción antes de confirmarla y añadir más fácilmente las direcciones de las transacciones a su libreta de direcciones, lo que le ayudará a tomar decisiones seguras e informadas." + }, + "notifications9Title": { + "message": "👓 Estamos facilitando la lectura de las transacciones." + }, + "numberOfNewTokensDetected": { + "message": "Se encontraron tokens nuevos de $1 en esta cuenta", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "de" }, @@ -1235,16 +2222,82 @@ "on": { "message": "Activado" }, + "onboardingCreateWallet": { + "message": "Crear una cartera nueva" + }, + "onboardingImportWallet": { + "message": "Importar una cartera existente" + }, + "onboardingPinExtensionBillboardAccess": { + "message": "Acceso completo" + }, + "onboardingPinExtensionBillboardDescription": { + "message": "Estas extensiones pueden ver y cambiar la información" + }, + "onboardingPinExtensionBillboardDescription2": { + "message": "en este sitio." + }, + "onboardingPinExtensionBillboardTitle": { + "message": "Extensiones" + }, + "onboardingPinExtensionChrome": { + "message": "Haga clic en el icono de la extensión del navegador" + }, + "onboardingPinExtensionDescription": { + "message": "Ancle MetaMask en su navegador para que sea accesible y las confirmaciones de las transacciones se vean fácilmente." + }, + "onboardingPinExtensionDescription2": { + "message": "Para abrir MetaMask haga clic en la extensión y acceda a su cartera con 1 clic." + }, + "onboardingPinExtensionDescription3": { + "message": "Haga clic en el icono de la extensión del navegador para tener acceso instantáneo" + }, + "onboardingPinExtensionLabel": { + "message": "Ancle MetaMask" + }, + "onboardingPinExtensionStep1": { + "message": "1" + }, + "onboardingPinExtensionStep2": { + "message": "2" + }, + "onboardingPinExtensionTitle": { + "message": "¡Su instalación de MetaMask ha finalizado!" + }, "onboardingReturnNotice": { "message": "\"$1\" cerrará esta pestaña y lo dirigirá de nuevo a $2", "description": "Return the user to the site that initiated onboarding" }, + "onboardingShowIncomingTransactionsDescription": { + "message": "Mostrar las transacciones entrantes en su cartera depende de la comunicación con $1. Etherscan tendrá acceso a su dirección de Ethereum y a su dirección IP. Ver 2$.", + "description": "$1 is a clickable link with text defined by the 'etherscan' key. $2 is a clickable link with text defined by the 'privacyMsg' key." + }, + "onboardingUsePhishingDetectionDescription": { + "message": "Las alertas de detección de phishing se basan en la comunicación con $1. jsDeliver tendrá acceso a su dirección IP. Ver 2$.", + "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" + }, "onlyAddTrustedNetworks": { "message": "Un proveedor de red malintencionado puede mentir sobre el estado de la cadena de bloques y registrar su actividad de red. Agregue solo redes personalizadas de confianza." }, "onlyConnectTrust": { "message": "Conéctese solo con sitios de confianza." }, + "openFullScreenForLedgerWebHid": { + "message": "Abra MetaMask en pantalla completa para conectar su Ledger a través de WebHID.", + "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." + }, + "openSourceCode": { + "message": "Compruebe el código fuente" + }, + "optional": { + "message": "Opcional" + }, + "optionalWithParanthesis": { + "message": "(Opcional)" + }, + "or": { + "message": "o" + }, "origin": { "message": "Origen" }, @@ -1263,6 +2316,19 @@ "passwordNotLongEnough": { "message": "La contraseña no es suficientemente larga" }, + "passwordSetupDetails": { + "message": "Esta contraseña desbloqueará su cartera MetaMask solo en este dispositivo. MetaMask no puede recuperar esta contraseña." + }, + "passwordStrength": { + "message": "Solidez de la contraseña: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Una contraseña segura puede mejorar la protección de su billetera en caso de que le roben el dispositivo o esté comprometido." + }, + "passwordTermsWarning": { + "message": "Entiendo que MetaMask no me puede recuperar esta contraseña. $1" + }, "passwordsDontMatch": { "message": "Las contraseñas no coinciden" }, @@ -1273,20 +2339,74 @@ "pending": { "message": "Pendiente" }, + "pendingTransactionInfo": { + "message": "Esta transacción no se procesará hasta que aquella haya finalizado." + }, + "pendingTransactionMultiple": { + "message": "Tiene ($1) transacciones pendientes." + }, + "pendingTransactionSingle": { + "message": "Tiene (1) transacción pendiente.", + "description": "$1 is count of pending transactions" + }, + "permissionRequest": { + "message": "Solicitud de permiso" + }, + "permissionRequestCapitalized": { + "message": "Solicitud de permiso" + }, + "permission_accessNetwork": { + "message": "Acceda a Internet.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Conéctese al complemento de $1.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Mostrar una confirmación en MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Ver las direcciones de las cuentas permitidas (requerido)", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Controle sus cuentas y activos \"$1\".", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Almacene y administre sus datos en su dispositivo.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Mostrar notificaciones.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Permiso desconocido: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Permisos" }, "personalAddressDetected": { "message": "Se detectó una dirección personal. Ingrese la dirección de contrato del token." }, + "pleaseConfirm": { + "message": "Confirmar" + }, "plusXMore": { "message": "+ $1 más", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" }, + "preferredLedgerConnectionType": { + "message": "Tipo de conexión de Ledger preferida", + "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" + }, + "preparingSwap": { + "message": "Preparando swap..." + }, "prev": { "message": "Ant." }, @@ -1296,6 +2416,12 @@ "primaryCurrencySettingDescription": { "message": "Seleccione Nativa para dar prioridad a mostrar los valores en la moneda nativa de la cadena (p. ej., ETH). Seleccione Fiduciaria para dar prioridad a mostrar los valores en la moneda fiduciaria seleccionada." }, + "priorityFee": { + "message": "Tarifa de prioridad" + }, + "priorityFeeProperCase": { + "message": "Tarifa de prioridad" + }, "privacyMsg": { "message": "Política de privacidad" }, @@ -1309,6 +2435,9 @@ "privateNetwork": { "message": "Red privada" }, + "proceedWithTransaction": { + "message": "Quiero continuar de todos modos" + }, "proposedApprovalLimit": { "message": "Límite de aprobación propuesto" }, @@ -1324,6 +2453,12 @@ "queued": { "message": "En cola" }, + "reAddAccounts": { + "message": "volver a agregar cualquier otra cuenta" + }, + "reAdded": { + "message": "agregada nuevamente" + }, "readdToken": { "message": "Puede volver a agregar este token en el futuro desde “Agregar token” en el menú de opciones de las cuentas." }, @@ -1336,6 +2471,9 @@ "recipientAddressPlaceholder": { "message": "Búsqueda, dirección pública (0x) o ENS" }, + "recommendedGasLabel": { + "message": "Recomendado" + }, "recoveryPhraseReminderBackupStart": { "message": "Iniciar aquí" }, @@ -1360,6 +2498,9 @@ "recoveryPhraseReminderTitle": { "message": "Proteja sus fondos." }, + "refreshList": { + "message": "Actualizar lista" + }, "reject": { "message": "Rechazar" }, @@ -1375,6 +2516,9 @@ "rejected": { "message": "Rechazado" }, + "remember": { + "message": "Recuerde:" + }, "remindMeLater": { "message": "Recordarme más adelante" }, @@ -1387,6 +2531,22 @@ "removeAccountDescription": { "message": "Esta cuenta se quitará de la cartera. Antes de continuar, asegúrese de tener la frase secreta de recuperación original o la clave privada de esta cuenta importada. Puede importar o crear cuentas nuevamente en la lista desplegable de la cuenta. " }, + "removeNFT": { + "message": "Eliminar NFT" + }, + "removeSnap": { + "message": "Eliminar complemento" + }, + "removeSnapConfirmation": { + "message": "¿Está seguro de que desea eliminar $1?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Esta acción eliminará el complemento, sus datos y revocará los permisos otorgados." + }, + "replace": { + "message": "reemplazar" + }, "requestsAwaitingAcknowledgement": { "message": "solicitudes en espera de confirmación" }, @@ -1402,6 +2562,18 @@ "resetAccountDescription": { "message": "Restablecer la cuenta borrará el historial de transacciones. Esto no cambiará los saldos de las cuentas ni se le pedirá que vuelva a escribir la frase secreta de recuperación." }, + "resetWallet": { + "message": "Restablecer cartera" + }, + "resetWalletSubHeader": { + "message": "MetaMask no guarda una copia de su contraseña. Si tiene problemas para desbloquear su cuenta, deberá restablecer su billetera. Puede hacerlo proporcionando la frase de recuperación secreta que utilizó cuando configuró su billetera." + }, + "resetWalletUsingSRP": { + "message": "Esta acción eliminará su billetera actual y la frase de recuperación secreta de este dispositivo, junto con la lista de cuentas que ha seleccionado. Después de restablecer con una frase de recuperación secreta, verá una lista de cuentas basada en la frase de recuperación secreta que usa para restablecer. Esta nueva lista incluirá automáticamente las cuentas que tengan saldo. También podrá $1 creado anteriormente. Las cuentas personalizadas que haya importado deberán costar $2, y cualquier token personalizado que haya agregado a una cuenta también deberá costar $3." + }, + "resetWalletWarning": { + "message": "Asegúrese de usar la frase de recuperación secreta correcta antes de continuar. No podrá deshacer esto." + }, "restore": { "message": "Restaurar" }, @@ -1427,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "NO comparta esta frase con nadie." }, + "revealTheSeedPhrase": { + "message": "Revelar frase semilla" + }, "rinkeby": { "message": "Red de prueba Rinkeby" }, @@ -1436,6 +2611,9 @@ "rpcUrl": { "message": "Nueva dirección URL de RPC" }, + "safeTransferFrom": { + "message": "Transferencia segura desde" + }, "save": { "message": "Guardar" }, @@ -1460,6 +2638,9 @@ "searchResults": { "message": "Resultados de la búsqueda" }, + "searchSettings": { + "message": "Buscar en configuración" + }, "searchTokens": { "message": "Buscar tokens" }, @@ -1472,9 +2653,27 @@ "secretPhrase": { "message": "Ingrese su frase secreta aquí para restaurar su bóveda." }, + "secretRecoveryPhrase": { + "message": "Frase secreta de recuperación" + }, + "secureWallet": { + "message": "Cartera segura" + }, "securityAndPrivacy": { "message": "Seguridad y privacidad" }, + "seedPhraseConfirm": { + "message": "Confirmar frase secreta de recuperación" + }, + "seedPhraseEnterMissingWords": { + "message": "Confirmar frase secreta de recuperación" + }, + "seedPhraseIntroNotRecommendedButtonCopy": { + "message": "Recordarme más tarde (no recomendado)" + }, + "seedPhraseIntroRecommendedButtonCopy": { + "message": "Asegurar mi cartera (recomendado)" + }, "seedPhraseIntroSidebarBulletFour": { "message": "Escríbala y guárdela en varios lugares secretos." }, @@ -1514,6 +2713,12 @@ "seedPhraseReq": { "message": "Las frases secretas de recuperación contienen 12, 15, 18, 21 o 24 palabras" }, + "seedPhraseWriteDownDetails": { + "message": "Escriba esta frase secreta de recuperación de 12 palabras y guárdela en un lugar de confianza al que solo usted pueda acceder." + }, + "seedPhraseWriteDownHeader": { + "message": "Anote la frase secreta de recuperación" + }, "selectAHigherGasFee": { "message": "Seleccione una cuota de gas más alta para acelerar el procesamiento de la transacción.*" }, @@ -1535,6 +2740,9 @@ "selectHdPath": { "message": "Seleccione la ruta de acceso al disco duro" }, + "selectNFTPrivacyPreference": { + "message": "Active la detección de NFT en Configuraciones" + }, "selectPathHelp": { "message": "Si no ve sus cuentas existentes en Ledger a continuación, intente cambiar de ruta de acceso a \"Legacy (MEW / MyCrypto)\"" }, @@ -1554,12 +2762,38 @@ "message": "Enviar $1", "description": "Symbol of the specified token" }, + "sendTo": { + "message": "Enviar a" + }, "sendTokens": { "message": "Enviar tokens" }, + "sendingDisabled": { + "message": "Todavía no se admite el envío de activos ERC-1155 NFT." + }, + "sendingNativeAsset": { + "message": "Enviando $1", + "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" + }, + "setAdvancedPrivacySettings": { + "message": "Configuración avanzada de privacidad" + }, + "setAdvancedPrivacySettingsDetails": { + "message": "MetaMask utiliza estos servicios de terceros de confianza para mejorar la usabilidad y la seguridad de los productos." + }, "settings": { "message": "Configuración" }, + "settingsSearchMatchingNotFound": { + "message": "No se encontraron resultados coincidentes." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, + "show": { + "message": "Mostrar" + }, "showAdvancedGasInline": { "message": "Controles avanzados de gas" }, @@ -1578,6 +2812,9 @@ "showHexDataDescription": { "message": "Seleccione esta opción para mostrar el campo de datos hexadecimales en la pantalla de envío" }, + "showHide": { + "message": "Mostrar/ocultar" + }, "showIncomingTransactions": { "message": "Mostrar transacciones entrantes" }, @@ -1590,6 +2827,15 @@ "showPrivateKeys": { "message": "Mostrar claves privadas" }, + "showRecommendations": { + "message": "Mostrar recomendaciones" + }, + "showTestnetNetworks": { + "message": "Mostrar redes de prueba" + }, + "showTestnetNetworksDescription": { + "message": "Seleccione esta opción para mostrar las redes de prueba en la lista de redes" + }, "sigRequest": { "message": "Solicitud de firma" }, @@ -1608,18 +2854,82 @@ "signed": { "message": "Firmado" }, + "simulationErrorMessageV2": { + "message": "No pudimos estimar el gas. Podría haber un error en el contrato y esta transacción podría fallar." + }, + "skip": { + "message": "Omitir" + }, + "skipAccountSecurity": { + "message": "¿Omitir la seguridad de la cuenta?" + }, + "skipAccountSecurityDetails": { + "message": "Entiendo que hasta que no haga una copia de seguridad de mi frase secreta de recuperación, puedo perder mis cuentas y todos los activos asociados." + }, "slow": { "message": "Lento" }, + "smartTransaction": { + "message": "Transacción inteligente" + }, + "snapAccess": { + "message": "El complemento de $1 tiene acceso a:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Se agregó en $1 de $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Error de complemento: '$1'. Código de error: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Instalar complemento" + }, + "snapInstallWarningCheck": { + "message": "Para confirmar que comprende, marque todo." + }, + "snapInstallWarningKeyAccess": { + "message": "Está otorgando acceso clave al complemento \"$1\". Esto es irrevocable y le otorga a \"$1\" el control de sus cuentas y activos. Asegúrese de confiar en \"$1\" antes de continuar.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Este complemento solicita los siguientes permisos:" + }, + "snaps": { + "message": "Complementos" + }, + "snapsSettingsDescription": { + "message": "Administre sus complementos" + }, + "snapsStatus": { + "message": "El estado del complemento depende de la actividad." + }, + "snapsToggle": { + "message": "Un complemento solo se ejecutará si está habilitado" + }, "somethingWentWrong": { "message": "Lo lamentamos, se produjo un error." }, + "source": { + "message": "Fuente" + }, "speedUp": { "message": "Acelerar" }, "speedUpCancellation": { "message": "Acelerar esta cancelación" }, + "speedUpExplanation": { + "message": "Hemos actualizado la tarifa de gas en función de las condiciones actuales de la red y la hemos aumentado al menos un 10% (exigido por la red)." + }, + "speedUpPopoverTitle": { + "message": "Agilizar transacción" + }, + "speedUpTooltipText": { + "message": "Nueva tarifa de gas" + }, "speedUpTransaction": { "message": "Acelerar esta transacción" }, @@ -1642,6 +2952,36 @@ "spendLimitTooLarge": { "message": "El límite de gastos es demasiado alto" }, + "srpInputNumberOfWords": { + "message": "Tengo una frase de $1 palabras", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Pegar falló porque contenía más de 24 palabras. Una frase de recuperación secreta puede tener un máximo de 24 palabras.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Puede pegar toda su frase secreta de recuperación en cualquier campo", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Mostrar/Ocultar esta palabra de la frase secreta de recuperación", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Esta palabra está escondida", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Esta palabra se está mostrando", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, + "stable": { + "message": "Estable" + }, + "stableLowercase": { + "message": "estable" + }, "stateLogError": { "message": "Error al recuperar los registros de estado." }, @@ -1654,12 +2994,22 @@ "stateLogsDescription": { "message": "Los registros de estado contienen sus direcciones de cuentas públicas y las transacciones enviadas." }, + "status": { + "message": "Estado" + }, "statusConnected": { "message": "Conectado" }, "statusNotConnected": { "message": "No conectado" }, + "step1LatticeWallet": { + "message": "Asegúrese de que su Lattice1 esté listo para conectarse" + }, + "step1LatticeWalletMsg": { + "message": "Puede conectar MetaMask a su dispositivo Lattice1 una vez que esté configurado y en línea. Desbloquee su dispositivo y tenga a mano el ID correspondiente. Para más información sobre el uso de carteras de hardware, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1LedgerWallet": { "message": "Descargar la aplicación de Ledger" }, @@ -1684,6 +3034,101 @@ "storePhrase": { "message": "Guarde esta frase en un administrador de contraseñas como 1Password." }, + "strong": { + "message": "Fuerte" + }, + "stxAreHere": { + "message": "¡Las transacciones inteligentes están aquí!" + }, + "stxBenefit1": { + "message": "Minimizar los costos de transacción" + }, + "stxBenefit2": { + "message": "Reducir las fallas en las transacciones" + }, + "stxBenefit3": { + "message": "Eliminar las transacciones atascadas" + }, + "stxBenefit4": { + "message": "Prevenir la inversión ventajista" + }, + "stxCancelled": { + "message": "El swap habría fallado" + }, + "stxCancelledDescription": { + "message": "Su transacción habría fallado y fue cancelada para protegerlo de pagar comisiones de gas innecesarias." + }, + "stxCancelledSubDescription": { + "message": "Intente su swap nuevamente. Estaremos aquí para protegerlo contra riesgos similares la próxima vez." + }, + "stxDescription": { + "message": "¡MetaMask Swaps ahora es mucho más inteligente! Habilitar transacciones inteligentes permitirá que MetaMask optimice mediante programación su swap para ayudar:" + }, + "stxErrorNotEnoughFunds": { + "message": "No hay suficientes fondos para una transacción inteligente." + }, + "stxErrorUnavailable": { + "message": "Las transacciones inteligentes no están disponibles temporalmente." + }, + "stxFailure": { + "message": "Error al canjear" + }, + "stxFailureDescription": { + "message": "Los cambios repentinos del mercado pueden causar fallas. Si el problema persiste, comuníquese con $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Las transacciones inteligentes no están disponibles temporalmente porque tiene una transacción pendiente." + }, + "stxFallbackUnavailable": { + "message": "Todavía puede intercambiar sus tokens incluso cuando las transacciones inteligentes no están disponibles." + }, + "stxPendingFinalizing": { + "message": "Finalizando…" + }, + "stxPendingOptimizingGas": { + "message": "Optimizando gas..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Enviando el Swap de forma privada..." + }, + "stxSubDescription": { + "message": "* Transacciones inteligentes intentará enviar su transacción de forma privada varias veces. Si todos los intentos fallan, la transacción se transmitirá públicamente para garantizar que su swap se realice con éxito." + }, + "stxSuccess": { + "message": "¡Swap finalizado!" + }, + "stxSuccessDescription": { + "message": "Su $1 ya está disponible.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Simule transacciones antes de enviarlas para disminuir los costos de transacción y reducir las fallas." + }, + "stxTryRegular": { + "message": "Pruebe con un swap regular." + }, + "stxTryingToCancel": { + "message": "Intentando cancelar su transacción..." + }, + "stxUnavailable": { + "message": "Las transacciones inteligentes están deshabilitadas" + }, + "stxUnknown": { + "message": "Estado desconocido" + }, + "stxUnknownDescription": { + "message": "Una transacción se ha realizado correctamente, pero no estamos seguros de qué se trata. Esto puede deberse a que envió otra transacción mientras se procesaba este swap." + }, + "stxUserCancelled": { + "message": "Swap cancelado" + }, + "stxUserCancelledDescription": { + "message": "Su transacción ha sido cancelada y no pagó ninguna comisión de gas innecesaria." + }, + "stxYouCanOptOut": { + "message": "Puede darse de baja en la configuración avanzada en cualquier momento." + }, "submit": { "message": "Enviar" }, @@ -1723,10 +3168,22 @@ "message": "Necesita $1 más $2 para completar este canje", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Necesita más $1 para finalizar este swap mediante transacciones inteligentes.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, + "swapBestOfNQuotes": { + "message": "Mejor cotización de $1.", + "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" + }, "swapBuildQuotePlaceHolderText": { "message": "No hay tokens disponibles que coincidan con $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Swap finalizado en <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Confirmar con la cartera de hardware" }, @@ -1742,6 +3199,9 @@ "swapDecentralizedExchange": { "message": "Intercambio descentralizado" }, + "swapDirectContract": { + "message": "Contrato directo" + }, "swapEditLimit": { "message": "Editar límite" }, @@ -1749,6 +3209,10 @@ "message": "Esta acción es obligatoria y le da permiso a MetaMask para canjear su $1.", "description": "Gives the user info about the required approval transaction for swaps. $1 will be the symbol of a token being approved for swaps." }, + "swapEnableTokenForSwapping": { + "message": "Esto será $1 por intercambiar", + "description": "$1 is for the 'enableToken' key, e.g. 'enable ETH'" + }, "swapEstimatedNetworkFees": { "message": "Cuotas de red estimadas" }, @@ -1762,6 +3226,13 @@ "swapFailedErrorTitle": { "message": "Error al canjear" }, + "swapFetchingQuoteNofN": { + "message": "Obtener cotización $1 de $2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, + "swapFetchingQuotes": { + "message": "Obtener cotizaciones" + }, "swapFetchingQuotesErrorDescription": { "message": "Se produjo un error. Vuelva a intentarlo o, si el error persiste, póngase en contacto con el soporte al cliente." }, @@ -1775,12 +3246,26 @@ "message": "El canje de $1 por $2", "description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token" }, + "swapGasFeesDetails": { + "message": "Las tarifas de gas son estimadas y fluctuarán en función del tráfico de la red y la complejidad de las transacciones." + }, + "swapGasFeesLearnMore": { + "message": "Obtenga más información sobre las cuotas de Gas" + }, "swapGasFeesSplit": { "message": "Las cuotas de gas en la pantalla anterior se dividen entre estas dos transacciones." }, + "swapGasFeesSummary": { + "message": "Las tarifas de gas se pagan a los mineros de criptomonedas que procesan transacciones en la red $1. MetaMask no se beneficia de las tarifas de gas.", + "description": "$1 is the selected network, e.g. Ethereum or BSC" + }, "swapHighSlippageWarning": { "message": "El monto del desfase es muy alto." }, + "swapIncludesMMFee": { + "message": "Incluye una tasa de MetaMask del $1%.", + "description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number." + }, "swapLowSlippageError": { "message": "Es posible que la transacción tenga errores, el desfase máximo es demasiado bajo." }, @@ -1794,6 +3279,10 @@ "message": "Buscamos el mejor precio en las fuentes de liquidez más importantes, todo el tiempo. Se incorpora de manera automática a esta cotización una cuota del $1 %.", "description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number." }, + "swapNQuotesWithDot": { + "message": "$1 cotizaciones.", + "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" + }, "swapNewQuoteIn": { "message": "Cotizaciones nuevas en $1", "description": "Tells the user the amount of time until the currently displayed quotes are update. $1 is a time that is counting down from 1:00 to 0:00" @@ -1882,6 +3371,12 @@ "swapSourceInfo": { "message": "Buscamos varias fuentes de liquidez (creadores de mercado profesionales, agregadores y sitios de intercambio) para obtener las mejores tarifas y las cuotas de red más bajas." }, + "swapSuggested": { + "message": "Swap sugerido" + }, + "swapSuggestedGasSettingToolTipMessage": { + "message": "Los swaps son transacciones complejas y urgentes. Recomendamos esta tarifa de gas para lograr un buen equilibrio entre el costo y la garantía de un swap exitoso." + }, "swapSwapFrom": { "message": "Canjear de" }, @@ -1920,6 +3415,10 @@ "message": "Verificar en $1 fuentes.", "description": "Indicates the number of token information sources that recognize the symbol + address. $1 is a decimal number." }, + "swapTooManyDecimalsError": { + "message": "$1 permite hasta $2 decimales", + "description": "$1 is a token symbol and $2 is the max. number of decimals allowed for the token" + }, "swapTransactionComplete": { "message": "Transacción completa" }, @@ -1980,6 +3479,12 @@ "symbolBetweenZeroTwelve": { "message": "El símbolo debe tener 11 caracteres o menos." }, + "syncFailed": { + "message": "Error al sincronizar" + }, + "syncInProgress": { + "message": "Sincronización en progreso" + }, "syncWithMobile": { "message": "Sincronizar con dispositivo móvil" }, @@ -2010,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "3Box se deshabilitó debido a un error durante la sincronización inicial" }, + "tenPercentIncreased": { + "message": "10% de aumento" + }, "terms": { "message": "Términos de uso" }, @@ -2019,9 +3527,21 @@ "testFaucet": { "message": "Probar faucet" }, + "testNetworks": { + "message": "Redes de prueba" + }, + "theme": { + "message": "Tema" + }, + "themeDescription": { + "message": "Elija su tema MetaMask preferido." + }, "thisWillCreate": { "message": "Esto creará una cartera y una frase secreta de recuperación nuevas" }, + "time": { + "message": "Tiempo" + }, "tips": { "message": "Sugerencias" }, @@ -2032,6 +3552,16 @@ "message": "Para: $1", "description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress" }, + "toggleTestNetworks": { + "message": "$1 redes de prueba", + "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open to the advanced settings where users can enable the display of test networks in the network dropdown." + }, + "token": { + "message": "Token" + }, + "tokenAddress": { + "message": "Dirección del token" + }, "tokenAlreadyAdded": { "message": "Ya se agregó el token." }, @@ -2041,12 +3571,39 @@ "tokenDecimalFetchFailed": { "message": "Se requieren los decimales del token." }, + "tokenDecimalTitle": { + "message": "Decimales del token:" + }, + "tokenDetails": { + "message": "Detalles del token" + }, + "tokenDetection": { + "message": "Detección del token" + }, + "tokenDetectionAlertMessage": { + "message": "La detección de tókens está actualmente disponible en $1. $2" + }, + "tokenDetectionAnnouncement": { + "message": "¡Nuevo! La detección de tokens mejorada está disponible en la Mainnet de Ethereum como funcionalidad experimental. $1" + }, + "tokenDetectionToggleDescription": { + "message": "La API de tokens de ConsenSys agrega una lista de tokens de varias listas de tokens de terceros. Al desactivarla se dejará de detectar nuevos tokens agregados a su billetera, pero se mantendrá la opción de buscar tokens para importar." + }, + "tokenId": { + "message": "Identificador de Token" + }, + "tokenList": { + "message": "Listas de tokens:" + }, "tokenSymbol": { "message": "Símbolo del token" }, "tooltipApproveButton": { "message": "Comprendo" }, + "total": { + "message": "Total" + }, "transaction": { "message": "transacción" }, @@ -2062,6 +3619,48 @@ "transactionCreated": { "message": "La transacción se creó con un valor de $1 en $2." }, + "transactionData": { + "message": "Datos de transacción" + }, + "transactionDecodingAccreditationDecoded": { + "message": "Decodificado por Truffle" + }, + "transactionDecodingAccreditationVerified": { + "message": "Contrato verificado en $1" + }, + "transactionDecodingUnsupportedNetworkError": { + "message": "La decodificación de la transacción no está disponible para chainId $1" + }, + "transactionDetailDappGasMoreInfo": { + "message": "Sitio sugerido" + }, + "transactionDetailDappGasTooltip": { + "message": "Editar para utilizar la tarifa de gas recomendada por MetaMask según el último bloque." + }, + "transactionDetailGasHeading": { + "message": "Tarifa estimada de gas" + }, + "transactionDetailGasInfoV2": { + "message": "estimada" + }, + "transactionDetailGasTooltipConversion": { + "message": "Obtenga más información sobre las cuotas de Gas" + }, + "transactionDetailGasTooltipExplanation": { + "message": "Las tarifas de gas las establece la red y fluctúan según el tráfico y la complejidad de la transacción." + }, + "transactionDetailGasTooltipIntro": { + "message": "Las tarifas de gas se pagan a los mineros de criptomonedas que procesan transacciones en la red $1. MetaMask no se beneficia de las tarifas de gas." + }, + "transactionDetailGasTotalSubtitle": { + "message": "Cantidad + tarifa de gas" + }, + "transactionDetailLayer2GasHeading": { + "message": "Tarifa de gas de la capa 2" + }, + "transactionDetailMultiLayerTotalSubtitle": { + "message": "Monto + cargos" + }, "transactionDropped": { "message": "La transacción se abandonó en $2." }, @@ -2077,6 +3676,27 @@ "transactionFee": { "message": "Cuota de transacción" }, + "transactionHistoryBaseFee": { + "message": "Tarifa base (GWEI)" + }, + "transactionHistoryL1GasLabel": { + "message": "Tarifa total de gas L1" + }, + "transactionHistoryL2GasLimitLabel": { + "message": "Límite de gas L2" + }, + "transactionHistoryL2GasPriceLabel": { + "message": "Precio de gas L2" + }, + "transactionHistoryMaxFeePerGas": { + "message": "Tarifa máxima por gas" + }, + "transactionHistoryPriorityFee": { + "message": "Tarifa de prioridad (GWEI)" + }, + "transactionHistoryTotalGasFee": { + "message": "Tarifa total de gas" + }, "transactionResubmitted": { "message": "Transacción reenviada con la cuota de gas aumentada a $1 en $2" }, @@ -2103,12 +3723,28 @@ "message": "Tuvimos problemas al cargar los saldos de token. Puede verlos ", "description": "Followed by a link (here) to view token balances" }, + "trustSiteApprovePermission": { + "message": "Al conceder el permiso, usted permite que los siguientes $1 tengan acceso a sus fondos" + }, "tryAgain": { "message": "Vuelva a intentarlo" }, + "turnOnTokenDetection": { + "message": "Activar la detección mejorada de tokens" + }, + "twelveHrTitle": { + "message": "12 horas:" + }, + "txInsightsNotSupported": { + "message": "En este momento no se admiten informaciones sobre las transacciones para este contrato." + }, "typePassword": { "message": "Escriba su contraseña de MetaMask" }, + "u2f": { + "message": "U2F", + "description": "A name on an API for the browser to interact with devices that support the U2F protocol. On some browsers we use it to connect MetaMask to Ledger devices." + }, "unapproved": { "message": "No aprobado" }, @@ -2147,6 +3783,16 @@ "message": "verifique los detalles de la red", "description": "Serves as link text for the 'unrecognizedChain' key. This text will be embedded inside the translation for that key." }, + "unsendableAsset": { + "message": "El envío de tokens coleccionables (ERC-721) no se admite actualmente", + "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" + }, + "unverifiedContractAddressMessage": { + "message": "No podemos verificar este contrato. Asegúrese de que confía en esta dirección." + }, + "upArrow": { + "message": "flecha ascendente" + }, "updatedWithDate": { "message": "$1 actualizado" }, @@ -2156,12 +3802,27 @@ "urlExistsErrorMsg": { "message": "En este momento, la red $1 está utilizando esta dirección URL." }, + "useCollectibleDetection": { + "message": "Detectar NFTs automáticamente" + }, + "useCollectibleDetectionDescription": { + "message": "La visualización de medios y datos de NFT puede exponer su dirección IP a servidores centralizados. Las API de terceros (como OpenSea) se utilizan para detectar NFT en su cartera. Esto expone la dirección de su cuenta con esos servicios. Deje esta opción desactivada si no quiere que la aplicación extraiga datos de esos servicios." + }, "usePhishingDetection": { "message": "Usar detección de phishing" }, "usePhishingDetectionDescription": { "message": "Mostrar una advertencia respecto de los dominios de phishing dirigidos a los usuarios de Ethereum" }, + "useTokenDetection": { + "message": "Usar detección de token" + }, + "useTokenDetectionDescription": { + "message": "Utilizamos API de terceros para detectar y mostrar nuevos tokens enviados a su cartera. Desactive si no desea que MetaMask extraiga datos de esos servicios." + }, + "useTokenDetectionPrivacyDesc": { + "message": "La visualización automática de tokens enviados a su cuenta implica la comunicación con servidores de terceros para obtener imágenes de tokens. Esos servicios tendrán acceso a su dirección IP." + }, "usedByClients": { "message": "Usado por una variedad de clientes distintos" }, @@ -2189,25 +3850,91 @@ "viewContact": { "message": "Ver contacto" }, + "viewFullTransactionDetails": { + "message": "Ver detalles completos de la transacción" + }, "viewMore": { "message": "Ver más" }, + "viewOnBlockExplorer": { + "message": "Ver en el explorador de bloques" + }, + "viewOnCustomBlockExplorer": { + "message": "Ver $1 en $2", + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + }, + "viewOnEtherscan": { + "message": "Ver $1 en Etherscan", + "description": "$1 is the action type. e.g (Account, Transaction, Swap)" + }, + "viewOnOpensea": { + "message": "Ver en Opensea" + }, + "viewinExplorer": { + "message": "Ver $1 en el explorador", + "description": "$1 is the action type. e.g (Account, Transaction, Swap)" + }, "visitWebSite": { "message": "Visite nuestro sitio web" }, "walletConnectionGuide": { "message": "nuestra guía de conexión de la cartera de hardware" }, + "walletCreationSuccessDetail": { + "message": "Ha protegido con éxito su cartera. Mantenga su frase secreta de recuperación a salvo y en secreto: ¡es su responsabilidad!" + }, + "walletCreationSuccessReminder1": { + "message": "MetaMask no puede recuperar su frase secreta de recuperación." + }, + "walletCreationSuccessReminder2": { + "message": "MetaMask nunca le pedirá su frase secreta de recuperación." + }, + "walletCreationSuccessReminder3": { + "message": "$1 con nadie o se arriesga a que le roben los fondos", + "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" + }, + "walletCreationSuccessReminder3BoldSection": { + "message": "Nunca comparta su frase secreta de recuperación", + "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" + }, + "walletCreationSuccessTitle": { + "message": "Creación exitosa de la cartera" + }, + "weak": { + "message": "Débil" + }, "web3ShimUsageNotification": { "message": "Parece que el sitio web actual intentó utilizar la API de window.web3 que se eliminó. Si el sitio no funciona, haga clic en $1 para obtener más información.", "description": "$1 is a clickable link." }, + "webhid": { + "message": "WebHID", + "description": "Refers to a interface for connecting external devices to the browser. Used for connecting ledger to the browser. Read more here https://developer.mozilla.org/en-US/docs/Web/API/WebHID_API" + }, "welcome": { "message": "Bienvenido a MetaMask" }, "welcomeBack": { "message": "Hola de nuevo" }, + "welcomeExploreDescription": { + "message": "Almacenar, enviar y gastar criptomonedas y activos." + }, + "welcomeExploreTitle": { + "message": "Explorar aplicaciones descentralizadas" + }, + "welcomeLoginDescription": { + "message": "Use su MetaMask para acceder a aplicaciones descentralizadas, sin necesidad de registrarse." + }, + "welcomeLoginTitle": { + "message": "Diga hola a su cartera" + }, + "welcomeToMetaMask": { + "message": "Comencemos" + }, + "welcomeToMetaMaskIntro": { + "message": "Con la confianza de millones de usuarios, MetaMask es una cartera segura que permite que todos puedan acceder al mundo de Web3." + }, "whatsNew": { "message": "Novedades", "description": "This is the title of a popup that gives users notifications about new features and updates to MetaMask." @@ -2226,6 +3953,9 @@ "message": "$1 de $2 están pendientes", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Sí" + }, "yesLetsTry": { "message": "Sí, intentémoslo" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index 3ac62593e..32b5cbe35 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -179,9 +179,6 @@ "affirmAgree": { "message": "Acepto" }, - "aggregatorFeeCost": { - "message": "Cuota de red de agregador" - }, "alertDisableTooltip": { "message": "Esto se puede modificar en \"Configuración > Alertas\"" }, @@ -233,12 +230,6 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Cuota de red de agregador y aprobación" - }, - "approvalTxGasCost": { - "message": "Costo de gas por transacción de aprobación" - }, "approve": { "message": "Aprobar límite de gastos" }, @@ -372,10 +363,10 @@ "message": "Comprar" }, "buyWithWyre": { - "message": "Comprar ETH con Wyre" + "message": "Comprar $1 con Wyre" }, "buyWithWyreDescription": { - "message": "Wyre le permite usar una tarjeta de débito para depositar ETH directamente en su cuenta de MetaMask." + "message": "Wyre le permite usar una tarjeta de débito para depositar $1 directamente en su cuenta de MetaMask." }, "bytes": { "message": "Bytes" @@ -1047,10 +1038,6 @@ "externalExtension": { "message": "Extensión externa" }, - "extraApprovalGas": { - "message": "+$1 de gas por aprobación", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Con errores" }, diff --git a/app/_locales/et/messages.json b/app/_locales/et/messages.json index bb5be3a52..1b1a38720 100644 --- a/app/_locales/et/messages.json +++ b/app/_locales/et/messages.json @@ -137,10 +137,10 @@ "message": "Teie lehitsejat ei toetata..." }, "buyWithWyre": { - "message": "Ostke ETH-d Wyre'iga" + "message": "Ostke $1 -d Wyre'iga" }, "buyWithWyreDescription": { - "message": "Wyre võimaldab kasutada krediitkaarti, et teha ETH sissemakse otse MetaMaski kontole." + "message": "Wyre võimaldab kasutada krediitkaarti, et teha $1 sissemakse otse MetaMaski kontole." }, "bytes": { "message": "Baidid" diff --git a/app/_locales/fa/messages.json b/app/_locales/fa/messages.json index 2669d7321..ab74d3482 100644 --- a/app/_locales/fa/messages.json +++ b/app/_locales/fa/messages.json @@ -137,10 +137,10 @@ "message": "مرورگر شما پشتیبانی نمیشود" }, "buyWithWyre": { - "message": "ETH را توسط Wyre خریداری نمایید" + "message": "$1 را توسط Wyre خریداری نمایید" }, "buyWithWyreDescription": { - "message": "Wyre به شما اجازه میدهد تا یک کردیت کارت را جهت پرداخت ETH مستقیمًا به حساب MetaMask تان استفاده نمایید." + "message": "Wyre به شما اجازه میدهد تا یک کردیت کارت را جهت پرداخت 1$ مستقیمًا به حساب MetaMask تان استفاده نمایید." }, "bytes": { "message": "بایت ها" diff --git a/app/_locales/fi/messages.json b/app/_locales/fi/messages.json index 08e734237..496475976 100644 --- a/app/_locales/fi/messages.json +++ b/app/_locales/fi/messages.json @@ -137,10 +137,10 @@ "message": "Selaintasi ei tueta..." }, "buyWithWyre": { - "message": "Osta ETH:ta Wyrella" + "message": "Osta $1 :ta Wyrella" }, "buyWithWyreDescription": { - "message": "Wyre antaa sinun käyttää luottokorttia, jotta voit tallettaa ETH:ta suoraan MetaMask-tilillesi." + "message": "Wyre antaa sinun käyttää luottokorttia, jotta voit tallettaa $1 :ta suoraan MetaMask-tilillesi." }, "bytes": { "message": "Tavua" diff --git a/app/_locales/fil/messages.json b/app/_locales/fil/messages.json index 54a59f2ad..6ed19fecd 100644 --- a/app/_locales/fil/messages.json +++ b/app/_locales/fil/messages.json @@ -122,10 +122,10 @@ "message": "Hindi sinusuportahan ang iyong Browser..." }, "buyWithWyre": { - "message": "Bumili ng ETH gamit ang Wyre" + "message": "Bumili ng $1 gamit ang Wyre" }, "buyWithWyreDescription": { - "message": "Binibigyang-daan ka ng Wyre na gumamit ng credit card para magdeposito ng ETH nang direkta sa iyong MetaMask account." + "message": "Binibigyang-daan ka ng Wyre na gumamit ng credit card para magdeposito ng $1 nang direkta sa iyong MetaMask account." }, "cancel": { "message": "Kanselahin" diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 0f74f00c7..f78a1f24d 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -58,6 +58,10 @@ "message": "$1 peut accéder et dépenser jusqu’à ce montant maximal", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 peut accéder à cet actif et le dépenser", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Accès à votre appareil photo..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Détails du compte" }, + "accountIdenticon": { + "message": "Identicon de compte" + }, "accountName": { "message": "Nom du compte" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Ajouter un réseau" }, + "addANetworkManually": { + "message": "Ajouter manuellement un réseau" + }, "addANickname": { "message": "Ajouter un pseudo" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Ajoutez uniquement des amis et des adresses de confiance" }, + "addFromAListOfPopularNetworks": { + "message": "Ajoutez à partir d’une liste de réseaux populaires ou ajoutez un réseau manuellement. Interagissez uniquement avec les entités en lesquelles vous avez confiance." + }, "addMemo": { "message": "Ajouter un mémo" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Je suis d’accord" }, - "aggregatorFeeCost": { - "message": "Frais de réseau de l’agrégateur" + "airgapVault": { + "message": "Coffre-fort AirGap" + }, + "airgapVaultTutorial": { + "message": " (Tutoriels)" }, "alertDisableTooltip": { "message": "Vous pouvez modifier ceci dans « Paramètres > Alertes »" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Approbation et frais du réseau d’agrégateur" - }, - "approvalTxGasCost": { - "message": "Approbation du coût de carburant Tx" - }, "approve": { "message": "Approuver" }, + "approveAndInstall": { + "message": "Approuver et installer" + }, "approveButtonText": { "message": "Approuver" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Montant approuvé :" }, + "approvedAsset": { + "message": "Actif approuvé" + }, + "areYouDeveloper": { + "message": "Êtes-vous un(e) développeur(-se) ?" + }, + "areYouSure": { + "message": "En êtes-vous sûr(e) ?" + }, "asset": { "message": "Actif" }, @@ -356,6 +378,9 @@ "message": "Afficher le compte à $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "Votre navigateur internet n’est pas supporté..." }, @@ -371,11 +396,30 @@ "buy": { "message": "Acheter" }, + "buyAsset": { + "message": "Acheter $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Acheter $1 avec MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay prend en charge les moyens de paiement populaires, incluant Visa, Mastercard, Apple / Google / Samsung Pay et les virements bancaires dans plus de 145 pays. Les tokens sont déposés sur votre compte MetaMask." + }, + "buyCryptoWithTransak": { + "message": "Acheter $1 avec Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak prend en charge les cartes de crédit et de débit, Apple Pay, MobiKwik et les virements bancaires (selon l’emplacement) dans plus de 100 pays. Les tokens $1 sont directement déposés sur votre compte MetaMask.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Acheter des ETH avec Wyre" + "message": "Acheter des $1 avec Wyre" }, "buyWithWyreDescription": { - "message": "Wyre vous permet d’utiliser une carte de crédit pour déposer des ETH directement sur votre compte MetaMask." + "message": "Wyre vous permet d’utiliser une carte de crédit pour déposer des $1 directement sur votre compte MetaMask." }, "bytes": { "message": "Octets" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "annuler ou accélérer une transaction." }, + "cancelSpeedUpLabel": { + "message": "Ces gas fees vont $1 les frais initiaux.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Pour $1 la transaction, les gas fees doivent être augmentés d’au moins 10 % pour être reconnus par le réseau.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Annuler le swap" + }, "cancellationGasFee": { "message": "Frais d’annulation de carburant" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "Cet ID de chaîne est actuellement utilisé par le réseau $1." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Le réseau avec l’ID de chaîne $1 peut utiliser un symbole de devise différent ($2) de celui que vous avez saisi. Veuillez vérifier avant de continuer.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Pour connecter votre portefeuille matériel, vous devez utiliser MetaMask pour Google Chrome." }, @@ -423,6 +482,13 @@ "close": { "message": "Fermer" }, + "collectibleAddFailedMessage": { + "message": "Ce NFT ne peut pas être ajouté, car les informations de propriété ne correspondent pas. Vérifiez que votre saisie est correcte." + }, + "collectibleAddressError": { + "message": "Ce token est un NFT. Ajouter sur la $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Confirmer" }, @@ -506,6 +572,10 @@ "message": "$1 n’est connecté à aucun site.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "Le snap $1 est connecté à ces sites. Ils ont accès aux autorisations énumérées ci-dessus.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Connexion…" }, @@ -536,6 +606,9 @@ "continue": { "message": "Continuer" }, + "continueToMoonPay": { + "message": "Continuer vers MoonPay" + }, "continueToTransak": { "message": "Continuer vers Transak" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "Interaction avec un contrat" }, + "convertTokenToNFTDescription": { + "message": "Nous avons détecté que cet actif est un NFT. Metamask prend désormais nativement en charge les NFT. Voulez-vous le retirer de votre liste de tokens et l’ajouter comme un NFT ?" + }, + "convertTokenToNFTExistDescription": { + "message": "Nous avons détecté que cet actif a été ajouté en tant que NFT. Souhaitez-vous le retirer de votre liste de tokens ?" + }, "copiedExclamation": { "message": "Copié!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "Indisponible sur ce réseau" }, + "curveHighGasEstimate": { + "message": "Graphique d’estimation de gas agressif" + }, + "curveLowGasEstimate": { + "message": "Graphique d’estimation de gas basse" + }, + "curveMediumGasEstimate": { + "message": "Graphique d’estimation de gas du marché" + }, "custom": { "message": "Paramètres avancés" }, + "customContentSearch": { + "message": "Chercher un réseau ajouté précédemment" + }, "customGas": { "message": "Personnaliser le gaz" }, @@ -633,6 +724,15 @@ "customToken": { "message": "Jeton personnalisé" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "La détection de token n’est pas encore disponible sur ce réseau. Veuillez importer le token manuellement et vous assurer que vous lui faites bien confiance. En savoir plus sur $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Avant d’importer manuellement un token, assurez-vous que vous lui faites bien confiance. En savoir plus sur $1." + }, + "customerSupport": { + "message": "service client" + }, "dappSuggested": { "message": "Site suggéré" }, @@ -647,6 +747,9 @@ "message": "$1 a recommandé ce prix.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Sombre" + }, "data": { "message": "Données" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "Souhaitez-vous vraiment supprimer ce réseau ?" }, + "depositCrypto": { + "message": "Effectuer un dépôt de $1", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Description" }, "details": { "message": "Détails" }, + "directDepositCrypto": { + "message": "Dépôt directement de $1" + }, + "directDepositCryptoExplainer": { + "message": "Si vous avez déjà un peu de $1, la façon la plus rapide d’obtenir $1 dans votre nouveau portefeuille est par dépôt direct." + }, + "disabledGasOptionToolTipMessage": { + "message": "« $1 » est désactivé parce qu’il ne correspond pas au minimum d’augmentation de 10 % par rapport aux gas fees initiaux.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Déconnecter" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "Ne plus afficher ceci" }, + "downArrow": { + "message": "flèche vers le bas" + }, "downloadGoogleChrome": { "message": "Télécharger Google Chrome" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "Modifier le pseudo de l’adresse" }, + "editCancellationGasFeeModalTitle": { + "message": "Modifier les gas fees d’annulation" + }, "editContact": { "message": "Modifier le contact" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "Modifier l’autorisation" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Modifier les gas fees d’accélération" + }, "enableAutoDetect": { "message": " Activer la détection automatique" }, + "enableEIP1559V2": { + "message": "Active l’interface utilisateur améliorée des gas fees" + }, + "enableEIP1559V2AlertMessage": { + "message": "Nous avons mis à jour le fonctionnement de l’estimation et de la personnalisation des gas fees." + }, + "enableEIP1559V2ButtonText": { + "message": "Activer l’interface utilisateur améliorée des gas fees dans les Paramètres" + }, + "enableEIP1559V2Description": { + "message": "Nous avons mis à jour le fonctionnement de l’estimation et de la personnalisation du gas. À activer si vous souhaitez utiliser la nouvelle expérience de gas. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Nouvelle expérience de gas" + }, "enableFromSettings": { "message": " Activez-la depuis les Paramètres." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "Utilisez l’API OpenSea pour récupérer les données de NFT. La détection automatique de NFT repose sur l’API OpenSea et ne sera pas disponible si elle est désactivée." }, + "enableSmartTransactions": { + "message": "Activer les transactions intelligentes" + }, "enableToken": { "message": "activer $1", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Afficher sur Etherscan" }, + "expandExperience": { + "message": "Développez votre expérience web3" + }, "expandView": { "message": "Agrandir la vue" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "Extension externe" }, - "extraApprovalGas": { - "message": "+$1 de carburant approuvé", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Échec" }, "failedToFetchChainId": { "message": "Impossible de récupérer l’ID de la chaîne. Votre URL de RPC est-elle correcte ?" }, + "failedToFetchTickerSymbolData": { + "message": "Les données de vérification de code mnémonique sont actuellement indisponibles. Assurez-vous que le code que vous avez saisi est correct. Il aura une incidence sur les taux de conversion que vous voyez pour ce réseau" + }, "failureMessage": { "message": "Un problème est survenu et nous n’avons pas pu mener à bien l’action" }, @@ -1062,6 +1209,26 @@ "message": "de", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "vous devriez désinstaller cette extension", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask permet aux développeurs d’expérimenter de nouvelles API instables. À moins que vous ne soyez développeur(-se) ou bêta testeur(-se), $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Nous ne garantissons ni la sécurité ni la stabilité de cette extension. Les nouvelles API proposées par Flask ne sont pas protégées contre les attaques d’hameçonnage, ce qui signifie que tout site ou snap nécessitant Flask pourrait être une tentative malveillante de voler vos actifs.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Toutes les API de Flask sont expérimentales. Elles peuvent être modifiées ou supprimées sans préavis. Elles peuvent aussi rester sur Flask indéfiniment sans jamais être migrées vers le MetaMask stable. Utilisez-les à vos risques et périls.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "J’accepte les risques", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Suivez-nous sur Twitter" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "Oublier cet appareil" }, + "forgotPassword": { + "message": "Mot de passe oublié ?" + }, "from": { "message": "de" }, @@ -1078,6 +1248,9 @@ "message": "De : $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "À partir des listes de tokens : $1" + }, "functionApprove": { "message": "Fonction : approuver" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Nos estimations basses, moyennes et hautes ne sont pas disponibles." }, + "gasFee": { + "message": "Gas fees" + }, "gasLimit": { "message": "Limite carburant" }, "gasLimitInfoTooltipContent": { "message": "La limite de carburant est la quantité maximale d’unités d’essence que vous consentez à dépenser." }, + "gasLimitRecommended": { + "message": "La limite recommandée de gas est de $1. Si la limite de gas est inférieure à cette valeur, l'opération peut échouer." + }, "gasLimitTooLow": { "message": "La limite de carburant doit être d’au moins 21000" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Réseau de test Goerli" }, + "gotIt": { + "message": "J'ai compris !" + }, "grantedToWithColon": { "message": "Accordé à :" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Nous sommes ravis de vous voir." }, @@ -1231,6 +1416,12 @@ "hide": { "message": "Masquer" }, + "hideSeedPhrase": { + "message": "Masquer la phrase mnémonique" + }, + "hideToken": { + "message": "Masquer le token" + }, "hideTokenPrompt": { "message": "Masquer le jeton ?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "Importer mon portefeuille" }, + "importNFT": { + "message": "Importer le NFT" + }, + "importNFTAddressToolTip": { + "message": "Sur OpenSea, par exemple, sur la page des NFT, dans la section Détails, se trouve une valeur avec un hyperlien bleu intitulée « Adresse de contrat ». Si vous cliquez dessus, vous serez redirigé vers l’adresse du contrat sur Etherscan. En haut à gauche de cette page, il devrait y avoir une icône intitulée « Contrat » et à droite, une longue chaîne de lettres et de chiffres. C’est l’adresse du contrat qui a créé votre NFT. Cliquez sur l’icône « Copier » à droite de l’adresse pour la copier dans votre presse-papiers." + }, + "importNFTPage": { + "message": "page Importer des NFT" + }, + "importNFTTokenIdToolTip": { + "message": "L’ID d’un collectible est un identifiant unique puisqu’il n’y a pas deux NFT identiques. Encore une fois, sur OpenSea, ce numéro se trouve dans la section « Détails ». Prenez-en note ou copiez-le dans votre presse-papiers." + }, "importNFTs": { "message": "Importer des NFT" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "Solde insuffisant." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "Vous n’avez pas assez de $1 sur votre compte pour payer les frais de transaction sur le réseau de $2. $3 ou effectuez un dépôt depuis un autre compte.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "Vous n’avez pas assez de $1 sur votre compte pour payer les frais de transaction sur le réseau de $2. Effectuez un dépôt de $1 à partir d’un autre compte.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Fonds insuffisants." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "Pas de réseau ETH, régler en minuscules" }, + "invalidAssetType": { + "message": "Cet actif est un NFT et doit être ajouté de nouveau à la page Importer des NFT qui se trouve sous l’onglet NFT" + }, "invalidBlockExplorerURL": { "message": "URL de l’explorateur de blocs invalide" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "Entrez l’URL de la passerelle CID IPFS à utiliser pour résoudre les contenus ENS." }, + "jazzAndBlockies": { + "message": "Les Jazzicons et les Blockies sont deux styles différents d’icônes uniques qui vous aident à identifier un compte en un coup d’œil." + }, + "jazzicons": { + "message": "Jazzicons" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "Oui, passons à la configuration !" }, + "levelArrow": { + "message": "flèche de niveau" + }, "likeToImportTokens": { "message": "Souhaitez-vous ajouter ces jetons ?" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "Chargement..." }, + "loadingNFTs": { + "message": "Chargement des NFT..." + }, "loadingTokens": { "message": "Chargement des jetons..." }, @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "Le temps de verrouillage est trop important" }, + "logo": { + "message": "Logo $1", + "description": "$1 is the name of the ticker" + }, "low": { "message": "Bas" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "Réseau principal Ethereum" }, + "mainnetToken": { + "message": "Cette adresse correspond à une adresse connue du token Ethereum Mainnet. Revérifiez l’adresse du contrat et le réseau en cherchant le token que vous essayez d’ajouter." + }, "makeAnotherSwap": { "message": "Créer un nouveau swap" }, @@ -1515,6 +1748,12 @@ "message": "Assurez-vous que personne ne regarde votre écran", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Données malformées" + }, + "manageSnaps": { + "message": "Gérez vos Snaps installés" + }, "max": { "message": "Max." }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "Vous ne voyez pas votre NFT ?" }, + "missingSetting": { + "message": "Vous ne trouvez pas un paramètre ?" + }, + "missingSettingRequest": { + "message": "Demandez ici" + }, "missingToken": { "message": "Vous ne voyez pas votre jeton ?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Nom" }, + "needCryptoInWallet": { + "message": "Pour interagir avec des applications décentralisées à l’aide de MetaMask, vous devrez avoir $1 dans votre portefeuille.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Vous avez besoin d’aide ? Contactez $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Vous ne pouvez envoyer des montants négatifs d’ETH." }, + "network": { + "message": "Réseau :" + }, "networkDetails": { "message": "Détails du réseau" }, + "networkIsBusy": { + "message": "Le réseau est occupé. Les gas fees sont élevés et les estimations sont moins précises." + }, "networkName": { "message": "Nom du réseau" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "Nouveau contrat" }, + "newNFTDetectedMessage": { + "message": "Cela permet à MetaMask de détecter automatiquement les NFT d’OpenSea et de les afficher dans votre portefeuille." + }, "newNFTsDetected": { "message": "Nouveau ! Détection de NFT" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "Aucun NFT pour le moment" }, + "noSnaps": { + "message": "Aucun Snap installé" + }, "noThanks": { "message": "Non merci" }, + "noThanksVariant2": { + "message": "Non merci." + }, "noTransactions": { "message": "Aucune transaction" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "Pas assez de carburant" }, + "notifications10ActionText": { + "message": "Ouvrir les paramètres", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Une détection améliorée des tokens est actuellement disponible sur les réseaux Ethereum Mainnet, Polygon, BSC et Avalanche. Il y aura bientôt d’autres nouveautés !" + }, + "notifications10DescriptionThree": { + "message": "La fonction de détection des tokens est ACTIVÉE par défaut. Mais vous pouvez la désactiver dans les Paramètres." + }, + "notifications10DescriptionTwo": { + "message": "Nous créons des tokens à partir de listes de tokens externes. Les tokens présents sur plus de deux listes seront automatiquement détectés." + }, + "notifications10Title": { + "message": "L’amélioration de la détection des tokens est là" + }, + "notifications11Description": { + "message": "Les tokens peuvent être créés par n’importe qui et peuvent avoir un nom dupliqué. Si vous voyez apparaître un token suspect ou avec lequel vous n’avez jamais interagi, il vaut mieux ne pas lui faire confiance." + }, + "notifications11Title": { + "message": "Risques de fraude et de sécurité" + }, + "notifications12ActionText": { + "message": "Activer le mode sombre" + }, + "notifications12Description": { + "message": "Le mode sombre sera activé pour les nouveaux utilisateurs en fonction de leurs préférences système. Les utilisateurs existants peuvent activer manuellement le mode sombre dans Paramètres -> Expérimental." + }, + "notifications12Title": { + "message": "Mode sombre, quand ? Mode sombre maintenant ! 🕶️🦊" + }, "notifications1Description": { "message": "Les utilisateurs de MetaMask Mobile peuvent désormais échanger des jetons dans leur portefeuille mobile. Scannez le code QR pour obtenir l’application mobile et commencez à échanger.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 Nous simplifions la lisibilité des transactions." }, + "numberOfNewTokensDetected": { + "message": "$1 nouveaux jetons trouvés dans ce compte", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "de" }, @@ -1984,6 +2286,9 @@ "message": "Ouvrez MetaMask en mode plein écran pour connecter votre Ledger via WebHID.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Vérifier le code source" + }, "optional": { "message": "Facultatif" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "Ce mot de passe permet de déverrouiller votre portefeuille MetaMask uniquement sur cet appareil. MetaMask ne peut pas récupérer ce mot de passe." }, + "passwordStrength": { + "message": "Robustesse du mot de passe : $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Un mot de passe robuste peut améliorer la sécurité de votre portefeuille en cas de vol ou de compromission de votre appareil." + }, "passwordTermsWarning": { "message": "Je comprends que MetaMask ne peut pas me récupérer ce mot de passe. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "Demande d’autorisation" }, + "permissionRequestCapitalized": { + "message": "Demande d’autorisation" + }, + "permission_accessNetwork": { + "message": "Accéder à internet.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Connexion au Snap $1.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Afficher une confirmation dans MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Consultez l’adresse, le solde du compte et l’activité, et lancez des transactions", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Contrôlez vos comptes et actifs « $1 ».", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Stockez et gérez ses données sur votre appareil.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Afficher les notifications.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Autorisation inconnue : $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Autorisations" }, "personalAddressDetected": { "message": "Votre adresse personnelle a été détectée. Veuillez saisir à la place l’adresse du contrat du jeton." }, + "pleaseConfirm": { + "message": "Veuillez confirmer" + }, "plusXMore": { "message": "+ $1 de plus", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "Type de connexion Ledger préféré", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Préparation du swap..." + }, "prev": { "message": "Préc." }, @@ -2104,6 +2453,12 @@ "queued": { "message": "En attente" }, + "reAddAccounts": { + "message": "ajouter de nouveau tous les autres comptes" + }, + "reAdded": { + "message": "ajouté à nouveau" + }, "readdToken": { "message": "Vous pourrez ajouter à nouveau ce jeton en allant sur « Ajouter un jeton » dans le menu des options de votre compte." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "Supprimer le NFT" }, + "removeSnap": { + "message": "Supprimer le Snap" + }, + "removeSnapConfirmation": { + "message": "Voulez-vous vraiment supprimer $1 ?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Cette action supprimera le snap, ses données et révoquera vos autorisations." + }, + "replace": { + "message": "remplacer" + }, "requestsAwaitingAcknowledgement": { "message": "demandes en attente d’un accusé de réception" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "La réinitialisation de votre compte effacera l’historique de vos transactions. Les soldes de vos comptes ne seront pas modifiés. Vous ne serez pas obligé de saisir à nouveau votre phrase secrète de récupération." }, + "resetWallet": { + "message": "Réinitialiser le portefeuille" + }, + "resetWalletSubHeader": { + "message": "MetaMask ne conserve pas de copie de votre mot de passe. Si vous avez des difficultés à déverrouiller votre compte, vous devrez réinitialiser votre portefeuille. Vous pouvez le faire en fournissant la phrase de récupération secrète que vous avez saisie lors de la configuration de votre portefeuille." + }, + "resetWalletUsingSRP": { + "message": "Cette action supprimera votre portefeuille actuel et votre phrase de récupération secrète de cet appareil, ainsi que la liste des comptes que vous avez sélectionnés. Après la réinitialisation avec une phrase de récupération secrète, vous verrez une liste de comptes basés sur la phrase de récupération secrète que vous utilisez pour réinitialiser. Cette nouvelle liste comprendra automatiquement les comptes qui ont un solde. Vous pourrez également $1 créé auparavant. Les comptes personnalisés que vous avez importés devront être $2 et tous les jetons personnalisés que vous avez ajoutés à un compte devront également être $3." + }, + "resetWalletWarning": { + "message": "Vérifiez que vous avez saisi correctement la phrase de récupération secrète avant de continuer. Vous ne pourrez pas annuler cette action." + }, "restore": { "message": "Restaurer" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "Ne communiquez PAS cette phrase à quelqu’un !" }, + "revealTheSeedPhrase": { + "message": "Révéler la phrase mnémonique" + }, "rinkeby": { "message": "Réseau de test Rinkeby" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "Nouvelle URL de RPC" }, + "safeTransferFrom": { + "message": "Transfert sécurisé depuis" + }, "save": { "message": "Enregistrer" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Resultats de la recherche" }, + "searchSettings": { + "message": "Recherche dans les paramètres" + }, "searchTokens": { "message": "Rechercher des jetons" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "Envoyer des jetons" }, + "sendingDisabled": { + "message": "L’envoi d’actifs ERC-1155 NFT n’est pas encore pris en charge." + }, "sendingNativeAsset": { "message": "Envoi de $1", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "Paramètres" }, + "settingsSearchMatchingNotFound": { + "message": "Aucun résultat correspondant trouvé." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Afficher" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "Lente" }, + "smartTransaction": { + "message": "Transaction intelligente" + }, + "snapAccess": { + "message": "Le snap $1 peut accéder à :", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Ajouté le $1 à partir de $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Erreur de snap : « $1 ». Code d’erreur : « $2 »", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Installer Snap" + }, + "snapInstallWarningCheck": { + "message": "Pour confirmer que vous comprenez, cochez tout." + }, + "snapInstallWarningKeyAccess": { + "message": "Vous accordez un accès de clé au snap « $1 ». Cette action est irrévocable et accorde à « $1 » le contrôle de vos comptes et actifs. Vérifiez que vous pouvez faire confiance à « $1 » avant de continuer.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Ce snap demande les autorisations suivantes :" + }, + "snaps": { + "message": "Snaps" + }, + "snapsSettingsDescription": { + "message": "Gérez vos Snaps" + }, + "snapsStatus": { + "message": "L’état du Snap dépend de l’activité." + }, + "snapsToggle": { + "message": "Un snap ne s’exécute que s’il est activé" + }, "somethingWentWrong": { "message": "Oups ! Quelque chose a mal tourné. " }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Limite de dépenses trop élevée" }, + "srpInputNumberOfWords": { + "message": "J’ai une phrase de $1 mots", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Le collage a échoué parce que la phrase contenait plus de 24 mots. Une phrase secrète de récupération peut contenir un maximum de 24 mots.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Vous pouvez coller toute votre phrase de récupération secrète dans n’importe quel champ", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Afficher / Masquer ce mot de la phrase de récupération secrète", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Ce mot est caché", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Ce mot est affiché", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Stable" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "Les journaux d’état contiennent les adresses publiques de vos comptes et vos transactions envoyées." }, + "status": { + "message": "État" + }, "statusConnected": { "message": "Connecté" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "Stockez cette phrase dans un gestionnaire de mots de passe comme 1Password." }, + "strong": { + "message": "Robuste" + }, + "stxAreHere": { + "message": "Les transactions intelligentes sont là !" + }, + "stxBenefit1": { + "message": "Minimise les frais de transaction" + }, + "stxBenefit2": { + "message": "Réduit les échecs de transaction" + }, + "stxBenefit3": { + "message": "Élimine les blocages de transaction" + }, + "stxBenefit4": { + "message": "Empêcher le favoritisme" + }, + "stxCancelled": { + "message": "Le swap aurait échoué" + }, + "stxCancelledDescription": { + "message": "Votre transaction aurait échoué et a été annulée pour vous protéger des gas fees inutiles." + }, + "stxCancelledSubDescription": { + "message": "Réessayez le swap. Nous serons là pour vous protéger contre des risques similaires la prochaine fois." + }, + "stxDescription": { + "message": "MetaMask Swaps vient de devenir beaucoup plus intelligent ! Si vous activez les transactions intelligentes, MetaMask pourra optimiser programmatiquement votre swap pour vous aider à :" + }, + "stxErrorNotEnoughFunds": { + "message": "Fonds insuffisants pour une transaction intelligente." + }, + "stxErrorUnavailable": { + "message": "Les transactions intelligentes sont temporairement indisponibles." + }, + "stxFailure": { + "message": "Échec du swap" + }, + "stxFailureDescription": { + "message": "Les fluctuations soudaines du marché peuvent provoquer des échecs. Si le problème persiste, veuillez contacter $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Les transactions intelligentes sont temporairement indisponibles parce que vous avez une transaction en attente." + }, + "stxFallbackUnavailable": { + "message": "Vous pouvez toujours faire un swap de tokens, même si les transactions intelligentes ne sont pas disponibles." + }, + "stxPendingFinalizing": { + "message": "Finalisation..." + }, + "stxPendingOptimizingGas": { + "message": "Optimisation des gas fees..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Soumission privée du swap..." + }, + "stxSubDescription": { + "message": "* Avec les transactions intelligentes, votre transaction sera soumise plusieurs fois en privé. Si toutes les tentatives échouent, la transaction sera diffusée publiquement pour s’assurer de la réussite de votre swap." + }, + "stxSuccess": { + "message": "Swap terminé !" + }, + "stxSuccessDescription": { + "message": "Votre $1 est maintenant disponible.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Simulez les transactions avant de les soumettre pour réduire les coûts et les échecs de transaction." + }, + "stxTryRegular": { + "message": "Essayez un swap normal." + }, + "stxTryingToCancel": { + "message": "Tentative d’annulation de votre transaction..." + }, + "stxUnavailable": { + "message": "Transactions intelligentes désactivées" + }, + "stxUnknown": { + "message": "État inconnu" + }, + "stxUnknownDescription": { + "message": "Une transaction a réussi, mais nous ne la reconnaissons pas. Cela peut être dû à la soumission d’une autre transaction pendant le traitement de ce swap." + }, + "stxUserCancelled": { + "message": "Swap annulé" + }, + "stxUserCancelledDescription": { + "message": "Votre transaction a été annulée et vous n’avez pas payé inutilement de gas fees." + }, + "stxYouCanOptOut": { + "message": "Vous pouvez vous désinscrire dans les paramètres avancés à tout moment." + }, "submit": { "message": "Envoyer" }, @@ -2607,6 +3168,10 @@ "message": "Vous avez besoin de $1 $2 de plus pour effectuer ce swap", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Vous avez besoin de plus de $1 pour effectuer cet échange en utilisant des transactions intelligentes.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "Meilleures cotations de $1.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "Aucun jeton disponible correspondant à $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Swap terminé dans <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Confirmez avec votre portefeuille matériel" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Échec du swap" }, + "swapFetchingQuoteNofN": { + "message": "Récupération de cotation $1 sur $2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Récupération des cotations" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "3Box a été désactivé en raison d’une erreur lors de la synchronisation initiale" }, + "tenPercentIncreased": { + "message": "Augmentation de 10 %" + }, "terms": { "message": "Conditions d’utilisation" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Faucet Testnet" }, + "testNetworks": { + "message": "Réseaux de test" + }, + "theme": { + "message": "Thème" + }, + "themeDescription": { + "message": "Choisissez votre thème MetaMask préféré." + }, "thisWillCreate": { "message": "Cela créera un nouveau portefeuille et une nouvelle phrase mnémotechnique" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Jeton" }, + "tokenAddress": { + "message": "Adresse du token" + }, "tokenAlreadyAdded": { "message": "Ce jeton a déjà été ajouté." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Décimale de jeton requise." }, + "tokenDecimalTitle": { + "message": "Décimales du token :" + }, + "tokenDetails": { + "message": "Détails du token" + }, + "tokenDetection": { + "message": "Détection du token" + }, + "tokenDetectionAlertMessage": { + "message": "La détection du token est actuellement disponible sur $1. $2" + }, "tokenDetectionAnnouncement": { "message": "Nouveau ! Une détection améliorée des jetons est disponible sur le Mainnet d’Ethereum en tant que fonctionnalité expérimentale. $1" }, + "tokenDetectionToggleDescription": { + "message": "L’API des tokens de ConsenSys regroupe une liste de tokens provenant de diverses listes de tokens externes. Sa désactivation arrêtera la détection de nouveaux tokens ajoutés à votre portefeuille, mais conservera l’option de recherche de tokens à importer." + }, + "tokenId": { + "message": "ID de token" + }, + "tokenList": { + "message": "Listes de tokens :" + }, "tokenSymbol": { "message": "Symbole du jeton" }, @@ -3178,6 +3787,12 @@ "message": "L’envoi de jetons collectibles (ERC-721) n’est pas pris en charge actuellement", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Nous ne pouvons pas vérifier ce contrat. Assurez-vous que vous faites confiance à cette adresse." + }, + "upArrow": { + "message": "flèche vers le haut" + }, "updatedWithDate": { "message": "Mis à jour $1" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Nous utilisons des API tierces pour détecter et afficher les nouveaux jetons envoyés à votre portefeuille. Désactivez cette option si vous ne souhaitez pas que MetaMask récupère les données de ces services." }, + "useTokenDetectionPrivacyDesc": { + "message": "L’affichage automatique des tokens envoyés sur votre compte implique une communication avec des serveurs externes afin de récupérer les images des tokens. Ces serveurs auront accès à votre adresse IP." + }, "usedByClients": { "message": "Utilisé par plusieurs clients différents" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Portefeuille créé avec succès" }, + "weak": { + "message": "Faible" + }, "web3ShimUsageNotification": { "message": "Nous avons remarqué que ce site Web a essayé d’utiliser l’API window.web3 supprimée. Si le site semble être défectueux, veuillez cliquer sur $1 pour plus d’informations.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1 sur $2 en attente", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Oui" + }, "yesLetsTry": { "message": "Oui, essayons" }, diff --git a/app/_locales/he/messages.json b/app/_locales/he/messages.json index 1a9b8a265..9bfd09d99 100644 --- a/app/_locales/he/messages.json +++ b/app/_locales/he/messages.json @@ -140,7 +140,7 @@ "message": "רכישת את'ר עם Wyre" }, "buyWithWyreDescription": { - "message": "Wyre מאפשרת לך להשתמש בכרטיס אשראי כדי להפקיד ETH ישירות בחשבון ה-MetaMask שלך." + "message": "Wyre מאפשרת לך להשתמש בכרטיס אשראי כדי להפקיד $1 ישירות בחשבון ה-MetaMask שלך." }, "bytes": { "message": "בייטים" diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index d7e126397..755646a6e 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -58,6 +58,10 @@ "message": "$1 इस अधिकतम राशि तक पहुंच सकते हैं और खर्च कर सकते हैं", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 एक्सेस कर सकता है और इस एसेट को खर्च कर सकता है", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "आपके कैमरे तक पहुँच रहा है..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "खाता विवरण" }, + "accountIdenticon": { + "message": "अकाउंट आइडेंटिकॉन" + }, "accountName": { "message": "खाते का नाम" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "एक नेटवर्क जोड़ें" }, + "addANetworkManually": { + "message": "मैन्युअल रूप से नेटवर्क जोड़ें" + }, "addANickname": { "message": "एक उपनाम जोड़ें" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "उन मित्रों और पतों को जोड़ें, जिन पर आप भरोसा करते हैं" }, + "addFromAListOfPopularNetworks": { + "message": "लोकप्रिय नेटवर्क की सूची से जोड़ें या मैन्युअल रूप से नेटवर्क जोड़ें। केवल उन संस्थाओं के साथ संवाद करें जिन पर आप भरोसा करते हैं।" + }, "addMemo": { "message": "मेमो जोड़ें" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "मैं सहमत हूं" }, - "aggregatorFeeCost": { - "message": "एग्रीगेटर नेटवर्क शुल्क" + "airgapVault": { + "message": "AirGap का वॉल्ट" + }, + "airgapVaultTutorial": { + "message": " (ट्यूटोरियल्स)" }, "alertDisableTooltip": { "message": "इसे \"सेटिंग > अलर्ट\" में बदला जा सकता है" @@ -230,18 +246,15 @@ "description": "The name of the application (Beta)" }, "appNameFlask": { - "message": "MetaMask Flask", + "message": "MetaMask Fask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "अनुमोदन और एग्रीगेटर नेटवर्क शुल्क" - }, - "approvalTxGasCost": { - "message": "अनुमोदन Tx गैस कीमत" - }, "approve": { "message": "खर्च सीमा अनुमोदित करें" }, + "approveAndInstall": { + "message": "स्वीकृति दें और इंस्टॉल करें" + }, "approveButtonText": { "message": "अनुमोदित करें" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "स्वीकृत राशि:" }, + "approvedAsset": { + "message": "स्वीकृत एसेट" + }, + "areYouDeveloper": { + "message": "क्या आप एक डेवलपर हैं?" + }, + "areYouSure": { + "message": "क्या आप सुनिश्चित हैं?" + }, "asset": { "message": "परिसंपत्ति" }, @@ -356,6 +378,9 @@ "message": "$1 पर खाता देखें", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "ब्लॉकीज़" + }, "browserNotSupported": { "message": "आपका ब्राउज़र समर्थित नहीं है..." }, @@ -371,11 +396,30 @@ "buy": { "message": "खरीदें" }, + "buyAsset": { + "message": "$1 खरीदें", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "MoonPay से $1 खरीदें", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay कई लोकप्रिय भुगतान विधियों को सपोर्ट करता है, जिसमें Visa, Mastercard, Apple / Google / Samsung Pay और 145+ देशों में बैंक हस्तांतरण शामिल हैं। टोकन आपके MetaMask के अकाउंट में जमा होते हैं।" + }, + "buyCryptoWithTransak": { + "message": "Transak से $1 खरीदें", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak 100+ देशों में क्रेडिट और डेबिट कार्ड, Apple Pay, MobiKwik और बैंक ट्रांसफ़र (स्थान के आधार पर) को सपोर्ट करता है। $1 सीधे आपके MetaMask के अकाउंट में जमा होता है।", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Wyre के जरिए ETH खरीदें" + "message": "Wyre के जरिए $1 खरीदें" }, "buyWithWyreDescription": { - "message": "Wyre आपको अपने MetaMask खाते में ETH जमा करने के लिए डेबिट कार्ड का उपयोग करने की सुविधा देता है।" + "message": "Wyre आपको अपने MetaMask खाते में $1 जमा करने के लिए डेबिट कार्ड का उपयोग करने की सुविधा देता है।" }, "bytes": { "message": "बाइट" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "किसी लेन-देन को रद्द या तेज करें।" }, + "cancelSpeedUpLabel": { + "message": "ये गैस शुल्क मूल को $1 करेगा।", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "किसी लेनदेन को $1 करने के लिए गैस शुल्क में कम से कम 10% की वृद्धि की जानी चाहिए ताकि उसे नेटवर्क द्वारा मान्यता मिल सके।", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "स्वैप रद्द करें" + }, "cancellationGasFee": { "message": "रद्दीकरण गैस शुल्क" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "यह चेन ID वर्तमान में $1 नेटवर्क द्वारा उपयोग की जाती है।" }, + "chainListReturnedDifferentTickerSymbol": { + "message": "चेन आईडी $1 वाला नेटवर्क आपके द्वारा दर्ज किए गए मुद्रा चिह्न ($2) से भिन्न मुद्रा चिह्न का उपयोग कर सकता है। कृपया जारी रखने से पहले सत्यापित करें।", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "अपने हार्डवेयर वॉलेट से कनेक्ट करने के लिए आपको Google Chrome पर MetaMask का उपयोग करने की आवश्यकता है।" }, @@ -423,6 +482,13 @@ "close": { "message": "बंद करें" }, + "collectibleAddFailedMessage": { + "message": "एनएफटी जोड़ा नहीं जा सकता क्योंकि स्वामित्व विवरण मेल नहीं खा रहे हैं। सुनिश्चित करें कि आपने सही जानकारी दर्ज की है।" + }, + "collectibleAddressError": { + "message": "ये टोकन एक एनएफटी है। $1 पर जोड़ें", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "पुष्टि करें" }, @@ -506,6 +572,10 @@ "message": "$1 किसी भी साइट से कनेक्ट नहीं है।", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "$1 स्नैप इन साइटों से जुड़ा है। वे ऊपर सूचीबद्ध अनुमतियों को एक्सेस कर सकती हैं।", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "कनेक्ट किया जा रहा है..." }, @@ -536,6 +606,9 @@ "continue": { "message": "जारी रखें" }, + "continueToMoonPay": { + "message": "MoonPay के लिए जारी रखें" + }, "continueToTransak": { "message": "Transak के लिए जारी रखें" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "अनुबंध इंटरैक्शन" }, + "convertTokenToNFTDescription": { + "message": "हमने पाया है कि ये एसेट एक एनएफटी है। MetaMask के पास अब एनएफटी के लिए पूर्ण स्थानीय सपोर्ट है। क्या आप इसे अपनी टोकन सूची से हटाना चाहते हैं और इसे एनएफटी के रूप में जोड़ना चाहते हैं?" + }, + "convertTokenToNFTExistDescription": { + "message": "हमने पाया है कि इस एसेट को एक एनएफटी के रूप में जोड़ा गया है। क्या आप इसे अपनी टोकन सूची से हटाना चाहते हैं?" + }, "copiedExclamation": { "message": "कॉपी किया गया!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "इस नेटवर्क पर अनुपलब्ध" }, + "curveHighGasEstimate": { + "message": "एग्रेसिव गैस एस्टीमेट ग्राफ" + }, + "curveLowGasEstimate": { + "message": "लो गैस एस्टीमेट ग्राफ" + }, + "curveMediumGasEstimate": { + "message": "मार्केट गैस एस्टीमेट ग्राफ" + }, "custom": { "message": "उन्नत" }, + "customContentSearch": { + "message": "पहले से जुड़े हुए नेटवर्क के लिए खोजें" + }, "customGas": { "message": "गैस अनुकूलित करें" }, @@ -633,6 +724,15 @@ "customToken": { "message": "कस्टम टोकन" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "इस नेटवर्क पर अभी टोकन खोज उपलब्ध नहीं है। कृपया टोकन को मैन्युअल रूप से इंपोर्ट करें और ये सुनिश्चित करें कि आपका उसपर भरोसा हो। $1 के बारे में जानें" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "टोकन को मैन्युअल रूप से इंपोर्ट करने से पहले, सुनिश्चित करें कि आपका उसपर भरोसा हो। $1 के बारे में जानें" + }, + "customerSupport": { + "message": "ग्राहक सहायता सेवा" + }, "dappSuggested": { "message": "साइट का सुझाव दिया गया" }, @@ -647,6 +747,9 @@ "message": "$1 ने इस कीमत की अनुशंसा की है।", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "डार्क" + }, "data": { "message": "डेटा" }, @@ -654,7 +757,7 @@ "message": "MetaMask की पिछली स्थापना के दौरान आपके कुछ खाता डेटा का बैकअप लिया गया था। इसमें आपकी सेटिंग, संपर्क और टोकन शामिल हो सकते हैं। क्या आप अब इस डेटा को पुनर्स्थापित करना चाहेंगे?" }, "dataHex": { - "message": "Hex" + "message": "हेक्स" }, "decimal": { "message": "टोकन दशमलव" @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "क्या आप वाकई इस नेटवर्क को हटाना चाहते हैं?" }, + "depositCrypto": { + "message": "$1 जमा करें", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "विवरण" }, "details": { "message": "विस्तृत जानकारी" }, + "directDepositCrypto": { + "message": "$1 सीधे जमा करें" + }, + "directDepositCryptoExplainer": { + "message": "यदि आपके पास कुछ $1 पहले से हैं, तो अपने नए वॉलेट में $1 प्राप्त करने का सबसे तेज़ तरीका है सीधे जमा करना है।" + }, + "disabledGasOptionToolTipMessage": { + "message": "\"$1\" अक्षम किया गया है क्योंकि यह मूल गैस शुल्क से न्यूनतम 10% वृद्धि को पूरा नहीं करता है।", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "डिस्कनेक्ट करें" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "इसे दोबारा न दिखाएँ" }, + "downArrow": { + "message": "डाउन ऐरो" + }, "downloadGoogleChrome": { "message": "Google Chrome डाउनलोड करें" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "पता उपनाम संपादित करें" }, + "editCancellationGasFeeModalTitle": { + "message": "गैस रद्द करने के शुल्क को एडिट करें" + }, "editContact": { "message": "संपर्क संपादित करें" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "अनुमति संपादित करें" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "गैस शुल्क स्पीड अप को एडिट करें" + }, "enableAutoDetect": { "message": " ऑटो डिटेक्ट इनेबल करें" }, + "enableEIP1559V2": { + "message": "इनहैन्सड गैस शुल्क UI को सक्षम करें" + }, + "enableEIP1559V2AlertMessage": { + "message": "हमने अपडेट किया है कि गैस शुल्क अनुमान और कस्टमाइज़ेशन कैसे काम करता है।" + }, + "enableEIP1559V2ButtonText": { + "message": "सेटिंग्स में इनहैन्सड गैस शुल्क यूआइ को चालू करें" + }, + "enableEIP1559V2Description": { + "message": "हमने अपडेट किया है कि गैस शुल्क अनुमान और कस्टमाइज़ेशन कैसे काम करता है। अगर आप नए गैस अनुभव का इस्तेमाल करना चाहते हैं तो चालू करें। $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "नया गैस अनुभव" + }, "enableFromSettings": { "message": " इसे सेटिंग्स से इनेबल करें।" }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "NFT डेटा लाने के लिए OpenSea के API का उपयोग करें। NFT ऑटो-डिटेक्शन OpenSea के API पर निर्भर करता है, और इसके बंद होने पर उपलब्ध नहीं होगा।" }, + "enableSmartTransactions": { + "message": "स्मार्ट लेनदेन को सक्षम करें" + }, "enableToken": { "message": "$1 इनेबल करें", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Etherscan पर देखें" }, + "expandExperience": { + "message": "अपने web3 अनुभव का विस्तार करें" + }, "expandView": { "message": "दृश्य का विस्तार करें" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "बाहरी विस्तार" }, - "extraApprovalGas": { - "message": "+$1 अनुमोदन गैस", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "विफल" }, "failedToFetchChainId": { "message": "चेन ID प्राप्त नहीं की जा सकी। क्या आपका RPC URL सही है?" }, + "failedToFetchTickerSymbolData": { + "message": "टिकर चिन्ह सत्यापन डेटा वर्तमान में अनुपलब्ध है, सुनिश्चित करें कि आपने जो चिन्ह दर्ज किया है वह सही है। ये उन कन्वर्शन दरों को प्रभावित करेगा जो आप इस नेटवर्क के लिए देखते हैं" + }, "failureMessage": { "message": "कुछ गलत हुआ और हम कार्रवाई को पूरा करने में असमर्थ रहे" }, @@ -1062,6 +1209,26 @@ "message": "से", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "आपको इस एक्सटेन्शन को अनइंस्टाल करना चाहिए", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask डेवलपर्स के लिए है ताकि वे नए अस्थिर API के साथ प्रयोग कर सकें। जब तक कि आप एक डेवलपर या बीटा टेस्टर नहीं है, $1।", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "हम इस एक्सटेन्शन की सुरक्षा या स्थिरता की गारंटी नहीं देते हैं। Flask द्वारा पेश किए गए नए API फिशिंग हमलों के विरुद्ध सुरक्षित नहीं हैं, जिसका अर्थ है कि कोई भी साइट या स्नैप जो Flask की मांग करता है, वो आपके एसेट्स को चुराने का एक दुर्भावनापूर्ण प्रयास हो सकता है।", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "सभी Flask के API प्रयोगात्मक हैं। उन्हें बिना किसी सूचना के बदला या हटाया जा सकता है, या वो स्थायी MetaMask में माइग्रेट किए बिना अनिश्चित काल तक Flask पर रह सकते हैं। अपने जोखिम पर उनका उपयोग करें।", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "जोख़िमों को मैं स्वीकर करता हूं।", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "ट्विटर पर हमें फॉलो करें" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "इस डिवाइस को भूल जाएं" }, + "forgotPassword": { + "message": "पासवर्ड भूल गए?" + }, "from": { "message": "प्रेषक" }, @@ -1078,6 +1248,9 @@ "message": "प्रेषक: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "टोकन सूचियों से: $1" + }, "functionApprove": { "message": "फंक्शन: अनुमोदित करें" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "हमारे निम्न, मध्यम और उच्च अनुमान उपलब्ध नहीं हैं।" }, + "gasFee": { + "message": "गैस शुल्क" + }, "gasLimit": { "message": "गैस की सीमा" }, "gasLimitInfoTooltipContent": { "message": "गैस की सीमा, गैस की वह अधिकतम इकाइयाँ हैं, जिन्हें आप खर्च करना चाहते हैं।" }, + "gasLimitRecommended": { + "message": "सिफारिश की गई गैस सीमा $1 है। अगर गैस सीमा उससे कम है, तो वो विफल हो सकता है।" + }, "gasLimitTooLow": { "message": "गैस की सीमा कम से कम 21000 होनी चाहिए" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Goerli टेस्ट नेटवर्क" }, + "gotIt": { + "message": "समझ आ गया!" + }, "grantedToWithColon": { "message": "को प्रदान की गई:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "हम आपसे मिलकर खुश हैं।" }, @@ -1231,6 +1416,12 @@ "hide": { "message": "छिपाएं" }, + "hideSeedPhrase": { + "message": "सीड फ्रेज़ छुपा दें" + }, + "hideToken": { + "message": "टोकन छुपा दें" + }, "hideTokenPrompt": { "message": "टोकन छिपाएं?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "मेरा वॉलेट आयात करें" }, + "importNFT": { + "message": "एनएफटी इंपोर्ट करें" + }, + "importNFTAddressToolTip": { + "message": "उदाहरण के लिए, OpenSea पर, डिटेल्स के नीचे एनएफटी के पेज पर, 'कॉन्ट्रैक्ट एड्रेस' के लेबल वाला एक नीला हाइपरलिंक्ड वैल्यू होता है। अगर आप इस पर क्लिक करते हैं, तो ये आपको Etherscan पर कॉन्ट्रैक्ट के एड्रेस पर ले जाएगा; उस पेज के ऊपर-बाईं ओर, 'कॉन्ट्रैक्ट' लेबल वाला एक आइकन होना चाहिए, और दाईं ओर अक्षरों और अंकों की एक लंबी श्रृंखला होगी। यह उस कॉन्ट्रैक्ट का एड्रेस है जिसने आपका एनएफटी बनाया है। एड्रेस के दाईं ओर 'कॉपी' आइकन पर क्लिक करें, और ये आपके क्लिपबोर्ड पर आ जाएगा।" + }, + "importNFTPage": { + "message": "एनएफटी के पेज को इंपोर्ट करें" + }, + "importNFTTokenIdToolTip": { + "message": "किसी संग्रहणीय वस्तु की आईडी एक विशिष्ट पहचानकर्ता है क्योंकि कोई भी दो एनएफटी एक जैसे नहीं होते हैं। फिर से, OpenSea पर यह संख्या 'डिटेल्स' के नीचे होगी। इसे नोट कर लें या अपने क्लिपबोर्ड पर कॉपी कर लें।" + }, "importNFTs": { "message": "NFT आयात करें" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "अपर्याप्त शेषराशि।" }, + "insufficientCurrencyBuyOrDeposit": { + "message": "$2 नेटवर्क पर लेनदेन शुल्क का भुगतान करने के लिए आपके अकाउंट में पर्याप्त $1 नहीं है। $3 या किसी अन्य अकाउंट से जमा करें।", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "$2 नेटवर्क पर लेनदेन शुल्क का भुगतान करने के लिए आपके अकाउंट में पर्याप्त $1 नहीं हैं। अन्य अकाउंट से $1 जमा करें।", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "अपर्याप्त राशि।" }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "ETH नेटवर्क नहीं, लोअरकेस में सेट करें" }, + "invalidAssetType": { + "message": "ये एसेट एक एनएफटी है और इसे इंपोर्ट एनएफटीज़ पेज पर फिर से जोड़ना होगा जो एनएफटीज़ टैब के नीचे मिलेगा" + }, "invalidBlockExplorerURL": { "message": "अमान्य ब्लॉक एक्सप्लोरर URL" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "ENS सामग्री रिजॉल्यूशन का उपयोग करने के लिए IPFS CID गेटवे का URL दर्ज करें।" }, + "jazzAndBlockies": { + "message": "जाज़िकॉन्स और ब्लॉकीज़ विशिष्ट आइकनों की दो अलग-अलग शैलियां हैं जो आपको एक नज़र में किसी अकाउंट की पहचान करने में मदद करती हैं।" + }, + "jazzicons": { + "message": "जाज़िकॉन्स" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "हां, आइए सेट करते हैं!" }, + "levelArrow": { + "message": "लेवल ऐरो" + }, "likeToImportTokens": { "message": "क्या आप इन टोकन को इंपोर्ट करना चाहते हैं?" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "लोड हो रहा है..." }, + "loadingNFTs": { + "message": "एनएफटीज़ लोड कर रहा है..." + }, "loadingTokens": { "message": "टोकन लोड हो रहे हैं..." }, @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "लॉक समय बहुत अधिक है" }, + "logo": { + "message": "$1 लोगो", + "description": "$1 is the name of the ticker" + }, "low": { "message": "निम्न" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "Ethereum Mainnet" }, + "mainnetToken": { + "message": "ये एड्रेस एक ज्ञात Ethereum Mainnet टोकन के एड्रेस से मेल खाता है। आप जिस टोकन को जोड़ने का प्रयास कर रहे हैं, उसके लिए कॉन्ट्रैक्ट एड्रेस और नेटवर्क दोबारा जांचें।" + }, "makeAnotherSwap": { "message": "एक नया स्वैप बनाएं" }, @@ -1515,6 +1748,12 @@ "message": "सुनिश्चित करें कि आपकी स्क्रीन कोई भी नहीं देख रहा है", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "विकृत डेटा" + }, + "manageSnaps": { + "message": "अपने इंस्टाल किए गए स्नैप्स मैनेज करें" + }, "max": { "message": "अधिकतम" }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "अपना NFT नहीं देख रहे हैं?" }, + "missingSetting": { + "message": "सेटिंग नहीं मिल पाया?" + }, + "missingSettingRequest": { + "message": "यहां अनुरोध करें" + }, "missingToken": { "message": "क्या अपना टोकन नहीं देख रहे हैं?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "नाम" }, + "needCryptoInWallet": { + "message": "MetaMask का इस्तेमाल करते हुए विकेंद्रीकृत एप्लिकेशन्स के साथ इंटरैक्ट करने के लिए आपके वॉलेट में $1 होना ज़रूरी है।", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "मदद चाहिए? $1 से संपर्क करें", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "ETH की नकारात्मक राशियां नहीं भेज सकते।" }, + "network": { + "message": "नेटवर्क:" + }, "networkDetails": { "message": "नेटवर्क विवरण" }, + "networkIsBusy": { + "message": "नेटवर्क व्यस्त है। गैस की कीमतें अधिक हैं और अनुमान कम सटीक हैं।" + }, "networkName": { "message": "नेटवर्क का नाम" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "नया अनुबंध" }, + "newNFTDetectedMessage": { + "message": "Opensea से स्वचालित रूप से एनएफटी का पता लगाने और अपने वॉलेट में प्रदर्शित करने के लिए MetaMask को अनुमति दें।" + }, "newNFTsDetected": { "message": "नया! NFT डिटेक्शन" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "अभी तक कोई NFT नहीं" }, + "noSnaps": { + "message": "कोई स्नैप इंस्टाल नहीं किया गया" + }, "noThanks": { "message": "जी नहीं, धन्यवाद" }, + "noThanksVariant2": { + "message": "नहीं, धन्यवाद।" + }, "noTransactions": { "message": "आपके पास कोई लेनदेन नहीं है" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "पर्याप्त गैस नहीं" }, + "notifications10ActionText": { + "message": "सेटिंग्स में जाएं", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "बेहतर टोकन डिटेक्शन वर्तमान में Ethereum Mainnet, Polygon, BSC और Avalanche के नेटवर्कों पर उपलब्ध है। और भी आने वाला है!" + }, + "notifications10DescriptionThree": { + "message": "टोकन डिटेक्शन फ़ीचर डिफ़ॉल्ट रूप से चालू है। लेकिन आप इसे सेटिंग्स में जाकर अक्षम कर सकते हैं।" + }, + "notifications10DescriptionTwo": { + "message": "हम थर्ड पार्टी टोकन सूचियों से टोकन प्राप्त करते हैं। दो से अधिक टोकन सूचियों पर सूचीबद्ध टोकन स्वचालित रूप से पहचाने जाएंगे।" + }, + "notifications10Title": { + "message": "बेहतर टोकन डिटेक्शन यहां है" + }, + "notifications11Description": { + "message": "टोकन कोई भी बना सकता है और उनके डुप्लीकेट नाम हो सकते हैं। अगर आपको कोई ऐसा टोकन दिखाई देता है जिसपर आपको भरोसा नहीं है या आपने उसके साथ इंटरैक्ट नहीं किया है - तो उसपर भरोसा नहीं करना अधिक सुरक्षित है।" + }, + "notifications11Title": { + "message": "स्कैम और सुरक्षा संबंधी जोखिम" + }, + "notifications12ActionText": { + "message": "डार्क मोड सक्षम करें" + }, + "notifications12Description": { + "message": "नए उपयोगकर्ताओं के लिए उनकी सिस्टम प्राथमिकताओं के आधार पर डार्क मोड सक्षम किया जाएगा। मौजूदा उपयोगकर्ताओं के लिए, सेटिंग->एक्सपेरिमेंटल के नीचे मैन्युअल रूप से डार्क मोड सक्षम करें।" + }, + "notifications12Title": { + "message": "वेन डार्क मोड? अब डार्क मोड! 🕶️🦊" + }, "notifications1Description": { "message": "MetaMask Mobile उपयोगकर्ता अब अपने मोबाइल वॉलेट के अंदर टोकन स्वैप कर सकते हैं। मोबाइल ऐप प्राप्त करने के लिए QR कोड को स्कैन करें और स्वैप करना शुरू करें।", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 हम लेन-देन को पढ़ना आसान बना रहे हैं।" }, + "numberOfNewTokensDetected": { + "message": "इस खाते में $1 के नए टोकन पाए गए", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "का" }, @@ -1984,6 +2286,9 @@ "message": "अपने लेजर को WebHID के माध्यम से कनेक्ट करने के लिए MetaMask को पूर्ण स्क्रीन में खोलें।", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "सोर्स कोड जांचें" + }, "optional": { "message": "वैकल्पिक" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "यह पासवर्ड आपके MetaMask वॉलेट को केवल इसी डिवाइस पर अनलॉक करेगा। MetaMask इस पासवर्ड को फिर से प्राप्त नहीं कर सकता है।" }, + "passwordStrength": { + "message": "पासवर्ड की मजबूती: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "अगर आपका डिवाइस चोरी हो गया हो या उसके साथ छेड़छाड़ की गई है, तब एक मजबूत पासवर्ड आपके वॉलेट की सुरक्षा को बेहतर बना सकता है।" + }, "passwordTermsWarning": { "message": "मैं समझता हूं कि MetaMask मेरे लिए यह पासवर्ड फिर से प्राप्त नहीं कर सकता। $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "अनुमति अनुरोध" }, + "permissionRequestCapitalized": { + "message": "अनुमति हेतु अनुरोध" + }, + "permission_accessNetwork": { + "message": "इंटरनेट एक्सेस करें।", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "$1 स्नैप से कनेक्ट करें।", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "MetaMask में पुष्टि को दर्शाएं।", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "पता, खाते की शेषराशि, गतिविधि देखें और लेन-देन शुरू करें", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "आपके \"$1\" अकाउंट्स और एसेट्स नियंत्रित करें।", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "उसके डेटा को अपने डिवाइस पर स्टोर करें और प्रबंधित करें।", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "नोटीफिकेशंस दिखाएं।", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "अज्ञात अनुमति: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "अनुमतियाँ" }, "personalAddressDetected": { "message": "व्यक्तिगत पते का पता चला। टोकन अनुबंध पता दर्ज करें।" }, + "pleaseConfirm": { + "message": "कृपया पुष्टि करें" + }, "plusXMore": { "message": "+ $1 अधिक", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "वरीयता वाले लेजर कनेक्शन के प्रकार", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "स्वैप की तैयारी कर रहा है..." + }, "prev": { "message": "पिछला" }, @@ -2104,6 +2453,12 @@ "queued": { "message": "कतारबद्ध" }, + "reAddAccounts": { + "message": "किसी अन्य अकाउंट को फिर से जोड़ें" + }, + "reAdded": { + "message": "फिर से जोड़ा गया" + }, "readdToken": { "message": "आप अपने खातों के विकल्प मेन्यू में “टोकन जोड़ें” पर जाकर भविष्य में इस टोकन को वापस जोड़ सकते हैं।" }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "NFT हटाएं" }, + "removeSnap": { + "message": "स्नैप हटाएं" + }, + "removeSnapConfirmation": { + "message": "क्या आप वाकई $1 को हटाना चाहते हैं?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "ये कदम स्नैप और उसके डेटा को हटा देगा और आपकी दी गई अनुमतियों को रद्द कर देगा।" + }, + "replace": { + "message": "बदलें" + }, "requestsAwaitingAcknowledgement": { "message": "अनुरोधों के स्वीकार किए जाने की प्रतीक्षा की जा रही है" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "आपके खाते को रीसेट करने से आपका लेनदेन इतिहास साफ हो जाएगा। इससे आपके खातों में शेषराशि नहीं बदलेगी या आपको अपने गुप्त रिकवरी फ्रेज को फिर से दर्ज करने की आवश्यकता नहीं होगी।" }, + "resetWallet": { + "message": "वॉलेट रीसेट करें" + }, + "resetWalletSubHeader": { + "message": "MetaMask आपके पासवर्ड की कॉपी नहीं रखता है। अगर आपको अपना अकाउंट अनलॉक करने में दिक्कत हो रही है, तो आपको अपना वॉलेट रीसेट करना होगा। सीक्रेट रिकवरी फ़्रेज़ प्रदान करके आप ऐसा कर सकते हैं जिसका उपयोग आपने अपना वॉलेट सेट करते समय किया था।" + }, + "resetWalletUsingSRP": { + "message": "इस कदम से इस डिवाइस से आपके वर्तमान वॉलेट और सीक्रेट रिकवरी फ़्रेज़ मिट जाएंगे, साथ ही, आपके द्वारा चुने गए अकाउंटों की सूची भी हट जाएगी। सीक्रेट रिकवरी फ़्रेज़ के साथ रीसेट करने के बाद, आपको सीक्रेट रिकवरी फ़्रेज़ के आधार पर आकाउंटों की एक सूची दिखाई देगी जिसका उपयोग आप रीसेट करने के लिए करते हैं। इस नई सूची में स्वचालित रूप से उन अकाउंटों को शामिल किया जाएगा जिनके अंदर बैलेंस है। आप पहले बनाए गए को भी $1 कर पाएंगे। आपके द्वारा इंपोर्ट किए गए कस्टम अकाउंट्स का $2 होना जरूरी होगा, और आपके द्वारा किसी अकाउंट में जोड़े गए किसी भी कस्टम टोकन के लिए $3 होना भी जरूरी होगा।" + }, + "resetWalletWarning": { + "message": "आगे बढ़ने से पहले ये सुनिश्चित करें कि आप सही सीक्रेट रिकवरी फ़्रेज़ का इस्तेमाल कर रहे हैं। इसे आप अनडू नहीं कर पाएंगे।" + }, "restore": { "message": "पुनर्स्थापित करें" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "इस फ्रेज को किसी के साथ साझा न करें!" }, + "revealTheSeedPhrase": { + "message": "सीड फ़्रेज़ दिखाएं" + }, "rinkeby": { "message": "Rinkeby टेस्ट नेटवर्क" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "नया RPC URL" }, + "safeTransferFrom": { + "message": "से सुरक्षित ट्रांसफ़र" + }, "save": { "message": "सहेजें" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "खोज परिणाम" }, + "searchSettings": { + "message": "सेटिंग्स में खोजें" + }, "searchTokens": { "message": "टोकन खोजें" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "टोकन भेजें" }, + "sendingDisabled": { + "message": "ERC-1155 एनएफटी एसेट्स भेजने को अभी सपोर्ट नहीं किया जाता।" + }, "sendingNativeAsset": { "message": "$1 भेजा जा रहा है", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "सेटिंग" }, + "settingsSearchMatchingNotFound": { + "message": "कोई मेल खाने वाला परिणाम नहीं मिला।" + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "दिखाएं" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "धीमा" }, + "smartTransaction": { + "message": "स्मार्ट लेनदेन" + }, + "snapAccess": { + "message": "$1 स्नैप को एक्सेस है:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "$2 से $1 जोड़ा गया", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "स्नैप एरर: '$1'. एरर कोड: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "स्नैप इंस्टाल करें" + }, + "snapInstallWarningCheck": { + "message": "ये पुष्टि करने के लिए कि आप समझते हैं, सभी पर सही का निशान लगाएं।" + }, + "snapInstallWarningKeyAccess": { + "message": "आप स्नैप \"$1\" को महत्वपूर्ण एक्सेस प्रदान कर रहे हैं। यह अपरिवर्तनीय है और आपके अकाउंट्स और एसेट्स पर \"$1\" को नियंत्रण प्रदान करता है। आगे बढ़ने से पहले सुनिश्चित करें कि आप \"$1\" पर भरोसा करते हैं।", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "ये स्नैप निम्नलिखित अनुमतियों हेतु अनुरोध कर रहा है:" + }, + "snaps": { + "message": "स्नैप्स" + }, + "snapsSettingsDescription": { + "message": "अपने स्नैप्स प्रबंधित करें" + }, + "snapsStatus": { + "message": "स्नैप स्टेटस एक्टिविटी पर निर्भर करता है।" + }, + "snapsToggle": { + "message": "कोई स्नैप तभी चलेगा जब उसे सक्षम किया गया हो" + }, "somethingWentWrong": { "message": "ओह! कुछ गलत हो गया।" }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "खर्च सीमा बहुत अधिक है" }, + "srpInputNumberOfWords": { + "message": "मेरे पास एक $1-शब्द का फ़्रेज़ है", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "पेस्ट विफल हुआ क्योंकि उसमें 24 से ज़्यादा शब्द हैं। सीक्रेट रिकवरी फ़्रेज़ में अधिकतम 24 शब्द हो सकते हैं।", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "आप अपना पूरा सीक्रेट रिकवरी फ़्रेज किसी भी फ़ील्ड में पेस्ट कर सकते हैं", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "सीक्रेट रिकवरी फ़्रेज का ये शब्द दिखाएं/छुपाएं", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "ये शब्द छुपा दिया गया", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "ये शब्द दिखाया जा रहा है", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "स्थिर" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "स्टेट लॉग में आपके सार्वजनिक खाते के पते और भेजे गए लेनदेन शामिल होते हैं।" }, + "status": { + "message": "स्टेटस" + }, "statusConnected": { "message": "कनेक्ट किया गया" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "इस फ्रेज को 1Password जैसे किसी पासवर्ड मैनेजर में संग्रहीत करें।" }, + "strong": { + "message": "मजबूत" + }, + "stxAreHere": { + "message": "स्मार्ट लेनदेन यहां पर हैं!" + }, + "stxBenefit1": { + "message": "लेनदेन लागतें मिनिमाइज़ करें" + }, + "stxBenefit2": { + "message": "लेनदेन विफलताएं कम करें" + }, + "stxBenefit3": { + "message": "अटके हुए लेनदेन को हटा दें" + }, + "stxBenefit4": { + "message": "फ़्रंट-रनिंग को रोकें" + }, + "stxCancelled": { + "message": "स्वैप विफल हो सकता था" + }, + "stxCancelledDescription": { + "message": "आपका लेनदेन विफल हो सकता था और उसे रद्द कर दिया गया ताकि आपको गैस शुल्क का अनावश्यक भुगतान करने से रोका जा सके।" + }, + "stxCancelledSubDescription": { + "message": "अपना स्वैप फिर से कोशिश करें। अगली बार भी इस तरह के जोखिमों से आपको बचाने के लिए हम यहां होंगे।" + }, + "stxDescription": { + "message": "MetaMask के स्वैप अब और अधिक स्मार्ट हो गए हैं! इन हेतु सहयता के लिए स्मार्ट लेनदेन को सक्षम करने से MetaMask आपके स्वैप को प्रोग्रामेटिक रूप से ऑप्टिमाइज़ कर पाएगा:" + }, + "stxErrorNotEnoughFunds": { + "message": "एक स्मार्ट लेनदेन के लिए पर्याप्त फंड नहीं है।" + }, + "stxErrorUnavailable": { + "message": "स्मार्ट लेनदेन अस्थाई तौर पर अनुपबल्ध हैं।" + }, + "stxFailure": { + "message": "स्वैप विफल हुआ" + }, + "stxFailureDescription": { + "message": "मार्केट के आकस्मिक बदलावों के कारण विफलताएं हो सकती हैं। अगर समस्या जारी रहती है, तो कृपया $1 से संपर्क करें।", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "स्मार्ट लेनदेन अस्थायी रूप से अनुपलब्ध हैं क्योंकि आपके पास एक लंबित लेनदेन है।" + }, + "stxFallbackUnavailable": { + "message": "स्मार्ट लेनदेन अनुपलब्ध होने पर भी आप अपने टोकनों को स्वैप कर सकते हैं।" + }, + "stxPendingFinalizing": { + "message": "फ़ाइनलाइज़ कर रहा है..." + }, + "stxPendingOptimizingGas": { + "message": "गैस ऑप्टिमाइज़ कर रहा है..." + }, + "stxPendingPrivatelySubmitting": { + "message": "स्वैप को निजी तौर पर सबमिट कर रहा है..." + }, + "stxSubDescription": { + "message": "* स्मार्ट लेनदेन आपके लेनदेन को निजी तौर पर, अनेक बार जमा करने का प्रयास करेंगे। यदि सभी प्रयास विफल हो जाते हैं, तो लेनदेन को सार्वजनिक रूप से प्रसारित किया जाएगा ताकि यह सुनिश्चित हो सके कि आपका स्वैप सफलतापूर्वक पूरा हो।" + }, + "stxSuccess": { + "message": "स्वैप पूरा हुआ!" + }, + "stxSuccessDescription": { + "message": "आपका $1 अब उपलब्ध है।", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "लेनदेन की लागतें घटाने और विफलताओं को कम करने के लिए सबमिट करने से पहले लेनदेन को सिम्युलेट करें।" + }, + "stxTryRegular": { + "message": "नियमित स्वैप का प्रयास करें।" + }, + "stxTryingToCancel": { + "message": "अपके लेनदेन को रद्द करने का प्रयास कर रहा है..." + }, + "stxUnavailable": { + "message": "स्मार्ट लेनदेन अक्षम किए गए हैं" + }, + "stxUnknown": { + "message": "स्टेटस अज्ञात" + }, + "stxUnknownDescription": { + "message": "एक लेनदेन सफल हुआ है लेकिन हमें पता नहीं कि वो क्या था। ऐसा इसलिए हो सकता है क्योंकि स्वैप प्रोसेस होने के दौरान ही कोई अन्य लेनदेन सबमिट कर दिया गया हो।" + }, + "stxUserCancelled": { + "message": "स्वैप रद्द हुआ" + }, + "stxUserCancelledDescription": { + "message": "आपका लेनदेन रद्द किया गया और आपने किसी भी तरह के अनावश्यक गैस शुल्क का भुगतान नहीं किया।" + }, + "stxYouCanOptOut": { + "message": "एड्वांस्ड सेटिंग्स में आप कभी भी ऑप्ट-आउट कर सकते हैं।" + }, "submit": { "message": "सबमिट करें" }, @@ -2607,6 +3168,10 @@ "message": "इस स्वैप को पूरा करने के लिए आपको अधिक $1 और $2 की आवश्यकता होगी", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "आपको और $1 चाहिए होगा ताकि इस स्वैप को स्मार्ट लेनदेन का इस्तेमाल करते हुए पूरा कर सके।", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "$1 उद्धरणों में से सर्वश्रेष्ठ।", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "$1 के मिलान वाले कोई भी टोकन उपलब्ध नहीं हैं", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "स्वैप पूरा होगा <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "अपने हार्डवेयर वॉलेट से पुष्टि करें" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "स्वैप विफल रहा" }, + "swapFetchingQuoteNofN": { + "message": "$2 का $1 उद्धरण लाया जा रहा है", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "उद्धरण प्राप्त कर रहे हैं" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "प्रारंभिक सिंक के दौरान एक त्रुटि के कारण 3Box को अक्षम कर दिया गया है" }, + "tenPercentIncreased": { + "message": "10% बढ़ोत्तरी" + }, "terms": { "message": "उपयोग की शर्तें" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "फॉसेट का परीक्षण करें" }, + "testNetworks": { + "message": "टेस्ट नेटवर्क्स" + }, + "theme": { + "message": "थीम" + }, + "themeDescription": { + "message": "अपनी पसंदीदा MetaMask थीम चुन लें" + }, "thisWillCreate": { "message": "यह एक नया वॉलेट और गुप्त रिकवरी फ्रेज बनाएगा" }, @@ -2974,6 +3559,9 @@ "token": { "message": "टोकन" }, + "tokenAddress": { + "message": "टोकन एड्रेस" + }, "tokenAlreadyAdded": { "message": "टोकन पहले ही जोड़ा जा चुका है।" }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "टोकन दशमलव आवश्यक है।" }, + "tokenDecimalTitle": { + "message": "टोकन डेसिमल:" + }, + "tokenDetails": { + "message": "टोकन विवरण" + }, + "tokenDetection": { + "message": "टोकन डिटेक्शन" + }, + "tokenDetectionAlertMessage": { + "message": "फिलहाल टोकन डिटेक्शन $1 पर उपलब्ध है। $2" + }, "tokenDetectionAnnouncement": { "message": "नया! प्रायोगिक फीचर के रूप में Ethereum Mainnet पर बेहतर टोकन डिटेक्शन उपलब्ध है। $1" }, + "tokenDetectionToggleDescription": { + "message": "ConsenSys के टोकन का एपीआई विभिन्न थर्ड पार्टी टोकन सूचियों में से टोकन की एक सूची एकत्र करता है। इसे बंद करने से आपके वॉलेट में जोड़े गए नए टोकन का पता चलना बंद हो जाएगा, लेकिन इंपोर्ट करने के लिए टोकन खोजने का विकल्प बना रहेगा।" + }, + "tokenId": { + "message": "टोकन आइडी" + }, + "tokenList": { + "message": "टोकन सूचियां:" + }, "tokenSymbol": { "message": "टोकन का प्रतीक" }, @@ -3178,6 +3787,12 @@ "message": "वर्तमान में संग्रहणीय (ERC-721) टोकन भेजना समर्थित नहीं है", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "हम इस कॉन्ट्रैक्ट को सत्यापित नहीं कर सकते हैं। सुनिश्चित करें कि आपको इस एड्रेस पर भरोसा हो।" + }, + "upArrow": { + "message": "अप ऐरो" + }, "updatedWithDate": { "message": "अपडेट किया गया $1" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "हम आपके वॉलेट में भेजे गए नए टोकन का पता लगाने और प्रदर्शित करने के लिए तीसरे-पक्ष API का उपयोग करते हैं। बंद करें यदि आप नहीं चाहते कि MetaMask उन सेवाओं से डेटा पुल करे।" }, + "useTokenDetectionPrivacyDesc": { + "message": "आपके खाते में भेजे गए टोकन को स्वचालित रूप से प्रदर्शित करने में थर्ड पार्टी के सर्वर्स के साथ संचार शामिल रहेगा, जो टोकन के चित्रों को लाने का काम करते हैं। वे सर्वर्स आपके IP एड्रेस को एक्सेस कर पाएंगे।" + }, "usedByClients": { "message": "विभिन्न क्लाइंट द्वारा उपयोग किया जाता है" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "वॉलेट का निर्माण सफल हुआ" }, + "weak": { + "message": "कमज़ोर" + }, "web3ShimUsageNotification": { "message": "हमने देखा है कि वर्तमान वेबसाइट ने हटाए गए window.web3 API का उपयोग करने की कोशिश की। यदि साइट में गड़बड़ी लगती है, तो कृपया अधिक जानकारी के लिए $1 पर क्लिक करें।", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$2 में से $1 लंबित", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "हां" + }, "yesLetsTry": { "message": "हां, आइए आजमाते हैं" }, diff --git a/app/_locales/hr/messages.json b/app/_locales/hr/messages.json index 49c270406..551b1f15a 100644 --- a/app/_locales/hr/messages.json +++ b/app/_locales/hr/messages.json @@ -137,10 +137,10 @@ "message": "Vaš se preglednik ne podržava..." }, "buyWithWyre": { - "message": "Kupi ETH Wyerom" + "message": "Kupi $1 Wyerom" }, "buyWithWyreDescription": { - "message": "Wyreom vam se omogućava korištenje kreditnom karticom za polaganje ETH-a izravno na vaš račun za MetaMask." + "message": "Wyreom vam se omogućava korištenje kreditnom karticom za polaganje $1 -a izravno na vaš račun za MetaMask." }, "bytes": { "message": "Bajtovi" diff --git a/app/_locales/hu/messages.json b/app/_locales/hu/messages.json index 10f60bba4..590b77f86 100644 --- a/app/_locales/hu/messages.json +++ b/app/_locales/hu/messages.json @@ -137,7 +137,7 @@ "message": "Az ön böngészője nem támogatott..." }, "buyWithWyre": { - "message": "Vásároljon ETH-t a Wyre-rel" + "message": "Vásároljon $1 -t a Wyre-rel" }, "buyWithWyreDescription": { "message": "A Wyre segítségével egyensen a MetaMaks fiókjában tehet letétbe ETH-t." diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 02c602bd2..9143acbd5 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -58,6 +58,10 @@ "message": "$1 dapat diakses dan digunakan hingga jumlah maksimum ini", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 dapat mengakses dan membelanjakan aset ini", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Mengakses kamera Anda..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Detail akun" }, + "accountIdenticon": { + "message": "Akun Identicon" + }, "accountName": { "message": "Nama Akun" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Tambahkan jaringan" }, + "addANetworkManually": { + "message": "Tambahkan jaringan secara manual" + }, "addANickname": { "message": "Tambahkan nama panggilan" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Tambahkan teman dan alamat yang Anda percayai" }, + "addFromAListOfPopularNetworks": { + "message": "Tambahkan dari daftar jaringan populer atau tambahkan jaringan secara manual. Lakukan interaksi hanya dengan entitas yang aman." + }, "addMemo": { "message": "Tambahkan memo" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Saya Setuju" }, - "aggregatorFeeCost": { - "message": "Biaya jaringan agregator" + "airgapVault": { + "message": "Brankas AirGap" + }, + "airgapVaultTutorial": { + "message": " (Tutorial)" }, "alertDisableTooltip": { "message": "Ini dapat diubah dalam \"Pengaturan > Peringatan\"" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Persetujuan dan biaya jaringan agregator" - }, - "approvalTxGasCost": { - "message": "Persetujuan Ongkos Jaringan Tx" - }, "approve": { "message": "Setujui batas penggunaan" }, + "approveAndInstall": { + "message": "Setujui & Instal" + }, "approveButtonText": { "message": "Setujui" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Jumlah yang disetujui:" }, + "approvedAsset": { + "message": "Aset yang disetujui" + }, + "areYouDeveloper": { + "message": "Anda seorang pengembang?" + }, + "areYouSure": { + "message": "Anda yakin?" + }, "asset": { "message": "Aset" }, @@ -343,7 +365,7 @@ "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Asset in Explorer" }, "blockExplorerSwapAction": { - "message": "Swap", + "message": "Pertukaran", "description": "This is used with viewOnEtherscan e.g View Swap on Etherscan" }, "blockExplorerUrl": { @@ -356,6 +378,9 @@ "message": "Lihat akun di $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "Peramban Anda tidak didukung..." }, @@ -371,8 +396,27 @@ "buy": { "message": "Beli" }, + "buyAsset": { + "message": "Beli $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Beli $1 melalui MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay mendukung metode pembayaran populer, termasuk Visa, Mastercard, Apple/Google/Samsung Pay, dan transfer bank di 145+ negara. Token akan didepositokan ke akun MetaMask Anda." + }, + "buyCryptoWithTransak": { + "message": "Beli $1 melalui Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak mendukung kartu kredit & debit, Apple Pay, MobiKwik, dan transfer bank (tergantung lokasi) di 100+ negara. $1 akan langsung didepositokan ke akun MetaMask Anda.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Beli ETH dengan Wyre" + "message": "Beli $1 dengan Wyre" }, "buyWithWyreDescription": { "message": "Wyre memungkinkan Anda menggunakan kartu debit untuk menyetorkan ETH langsung di akun MetaMask Anda." @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "batalkan atau percepat transaksi." }, + "cancelSpeedUpLabel": { + "message": "Biaya gas ini akan $1 yang asli.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Untuk $1 suatu transaksi, biaya gas harus dinaikkan minimal 10% agar dapat dikenali oleh jaringan.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Batalkan pertukaran" + }, "cancellationGasFee": { "message": "Biaya Pembatalan Gas" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "ID Rantai ini saat ini digunakan oleh jaringan $1." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Jaringan dengan ID rantai $1 dapat menggunakan simbol mata uang yang berbeda ($2) dari yang Anda masukkan. Harap verifikasikan sebelum melanjutkan.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Anda perlu menggunakan MetaMask di Google Chrome untuk terhubung ke Dompet Perangkat Keras Anda." }, @@ -423,6 +482,13 @@ "close": { "message": "Tutup" }, + "collectibleAddFailedMessage": { + "message": "NFT tidak dapat ditambahkan karena detail kepemilikan tidak cocok. Pastikan Anda telah memasukkan informasi yang benar." + }, + "collectibleAddressError": { + "message": "Token ini merupakan NFT. Tambahkan ke $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Konfirmasikan" }, @@ -506,6 +572,10 @@ "message": "$1 tidak terhubung ke situs mana pun.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "Snap $1 terhubung ke situs-situs ini. Token ini memiliki akses ke izin yang tercantum di atas. \t", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Menghubungkan..." }, @@ -536,6 +606,9 @@ "continue": { "message": "Lanjutkan" }, + "continueToMoonPay": { + "message": "Lanjutkan ke MoonPay" + }, "continueToTransak": { "message": "Lanjutkan ke Transak" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "Interaksi Kontrak" }, + "convertTokenToNFTDescription": { + "message": "Kami mendeteksi bahwa aset ini merupakan NFT. Kini Metamask memiliki dukungan asli penuh untuk NFT. Anda ingin menghapusnya dari daftar token dan menambahkannya sebagai NFT?" + }, + "convertTokenToNFTExistDescription": { + "message": "Kami mendeteksi bahwa aset ini telah ditambahkan sebagai NFT. Anda ingin menghapusnya dari daftar token?" + }, "copiedExclamation": { "message": "Disalin!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "Tidak tersedia di jaringan ini" }, + "curveHighGasEstimate": { + "message": "Grafik estimasi gas aktif" + }, + "curveLowGasEstimate": { + "message": "Grafik estimasi gas rendah" + }, + "curveMediumGasEstimate": { + "message": "Grafik estimasi gas pasar" + }, "custom": { "message": "Lanjutan" }, + "customContentSearch": { + "message": "Cari jaringan yang ditambahkan sebelumnya" + }, "customGas": { "message": "Sesuaikan Gas" }, @@ -633,6 +724,15 @@ "customToken": { "message": "Token Kustom" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "Deteksi token belum tersedia di jaringan ini. Harap impor token secara manual dan pastikan keamanannya. Pelajari seputar $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Sebelum mengimpor token secara manual, pastikan keamanannya. Pelajari seputar $1." + }, + "customerSupport": { + "message": "dukungan pelanggan" + }, "dappSuggested": { "message": "Situs yang disarankan" }, @@ -647,6 +747,9 @@ "message": "$1 telah merekomendasikan harga ini.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Gelap" + }, "data": { "message": "Data" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "Anda yakin ingin menghapus jaringan ini?" }, + "depositCrypto": { + "message": "Deposit $1", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Deskripsi" }, "details": { "message": "Detail" }, + "directDepositCrypto": { + "message": "Deposit Langsung $1" + }, + "directDepositCryptoExplainer": { + "message": "Jika sudah memiliki $1, cara tercepat mendapatkan $1 di dompet baru Anda adalah dengan deposit langsung." + }, + "disabledGasOptionToolTipMessage": { + "message": "“$1” dinonaktifkan karena tidak memenuhi kenaikan minimum 10% dari biaya gas asli.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Putuskan koneksi" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "Jangan tampilkan lagi" }, + "downArrow": { + "message": "panah bawah" + }, "downloadGoogleChrome": { "message": "Unduh Google Chrome" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "Edit nama panggilan alamat" }, + "editCancellationGasFeeModalTitle": { + "message": "Edit biaya pembatalan gas" + }, "editContact": { "message": "Edit Kontak" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "Edit Izin" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Edit biaya percepatan gas" + }, "enableAutoDetect": { "message": " Aktifkan Deteksi Otomatis" }, + "enableEIP1559V2": { + "message": "Aktifkan UI Biaya Gas yang Ditingkatkan" + }, + "enableEIP1559V2AlertMessage": { + "message": "Kami telah memperbarui cara kerja estimasi dan penyesuaian biaya gas." + }, + "enableEIP1559V2ButtonText": { + "message": "Aktifkan UI Biaya Gas yang Ditingkatkan di Pengaturan" + }, + "enableEIP1559V2Description": { + "message": "Kami telah memperbarui cara kerja estimasi dan penyesuaian gas. Aktifkan jika Anda ingin menggunakan pengalaman gas baru. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Pengalaman gas baru" + }, "enableFromSettings": { "message": " Aktifkan dari Pengaturan." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "Gunakan API OpenSea untuk mengambil data NFT. Deteksi otomatis NFT bergantung pada API OpenSea, dan tidak akan tersedia saat API ditutup." }, + "enableSmartTransactions": { + "message": "Aktifkan Transaksi Pintar" + }, "enableToken": { "message": "aktifkan $1", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Lihat di Etherscan" }, + "expandExperience": { + "message": "Perluas pengalaman web3 Anda" + }, "expandView": { "message": "Perluas tampilan" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "Ekstensi Eksternal" }, - "extraApprovalGas": { - "message": "+$1 gas yang disetujui", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Gagal" }, "failedToFetchChainId": { "message": "Tidak dapat mengambil ID rantai. Apakah URL RPC Anda benar?" }, + "failedToFetchTickerSymbolData": { + "message": "Data verifikasi simbol ticker saat ini tidak tersedia, pastikan simbol yang Anda masukkan sudah benar. Ini akan memengaruhi tingkat konversi yang Anda lihat untuk jaringan ini" + }, "failureMessage": { "message": "Ada yang salah, dan kami tidak dapat menyelesaikan tindakan" }, @@ -1062,6 +1209,26 @@ "message": "dari", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "Anda harus menghapus ekstensi ini", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask ditujukan bagi para pengembang untuk bereksperimen dengan API baru yang tidak stabil. Kecuali Anda seorang pengembang atau penguji beta, $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Kami tidak menjamin keamanan atau stabilitas ekstensi ini. API baru yang ditawarkan oleh Flask tidak diperkuat untuk menghadapi serangan pengelabuan, artinya setiap situs atau snap yang memerlukan Flask mungkin merupakan upaya jahat untuk mencuri aset Anda.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Semua API Flask bersifat eksperimental. API dapat diubah atau dihapus tanpa pemberitahuan, atau tetap berada di Flask tanpa batas waktu dan tanpa pernah dimigrasikan ke MetaMask yang stabil. Gunakan API dengan risiko Anda sendiri.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Saya menerima risikonya", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Ikuti kami di Twitter" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "Lupakan perangkat ini" }, + "forgotPassword": { + "message": "Lupa kata sandi?" + }, "from": { "message": "Dari" }, @@ -1078,6 +1248,9 @@ "message": "Dari: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "Dari daftar token: $1" + }, "functionApprove": { "message": "Fungsi: Setujui" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Estimasi rendah, sedang, dan tinggi kami tidak tersedia." }, + "gasFee": { + "message": "Biaya Gas" + }, "gasLimit": { "message": "Batas Gas" }, "gasLimitInfoTooltipContent": { "message": "Batas gas adalah jumlah unit gas maksimum yang ingin Anda gunakan." }, + "gasLimitRecommended": { + "message": "Batas gas yang disarankan adalah $1. Jika batas gas kurang dari itu, maka berpotensi gagal." + }, "gasLimitTooLow": { "message": "Batas gas minimum adalah 21000" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Jaringan Uji Goerli" }, + "gotIt": { + "message": "Mengerti!" + }, "grantedToWithColon": { "message": "Diberikan kepada:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Kami senang melihat Anda." }, @@ -1231,6 +1416,12 @@ "hide": { "message": "Sembunyikan" }, + "hideSeedPhrase": { + "message": "Sembunyikan frasa seed" + }, + "hideToken": { + "message": "Sembunyikan token" + }, "hideTokenPrompt": { "message": "Sembunyikan Token?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "Impor Dompet Saya" }, + "importNFT": { + "message": "Impor NFT" + }, + "importNFTAddressToolTip": { + "message": "Di OpenSea, misalnya, pada halaman NFT di bawah Detail, terdapat nilai pranala biru berlabel 'Alamat Kontrak'. Jika diklik, Anda akan diarahkan ke alamat kontrak di Etherscan; di sebelah kiri atas halaman tersebut, terdapat ikon berlabel 'Kontrak', dan di sebelah kanan, terdapat rangkaian huruf dan angka yang panjang. Ini merupakan alamat kontrak yang membuat NFT Anda. Klik ikon 'salin' di sebelah kanan alamat, dan Anda akan temukan di papan klip." + }, + "importNFTPage": { + "message": "Impor halaman NFT" + }, + "importNFTTokenIdToolTip": { + "message": "ID koleksi merupakan pengenal unik karena tidak ada dua NFT yang sama. Sekali lagi, angka ini berada di bawah 'Detail' pada OpenSea. Catat atau salin ke papan klip." + }, "importNFTs": { "message": "Impor NFT" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "Saldo tidak cukup." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "$1 di akun Anda tidak cukup untuk membayar biaya transaksi di jaringan $2. $3 atau depositkan dari akun lain.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "$1 di akun Anda tidak cukup untuk membayar biaya transaksi di jaringan $2. Depositkan $1 dari akun lain.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Dana tidak cukup." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "Bukan jaringan ETH, atur ke huruf kecil" }, + "invalidAssetType": { + "message": "Aset ini merupakan NFT dan harus ditambahkan kembali di halaman Impor NFT yang ada di bawah tab NFT" + }, "invalidBlockExplorerURL": { "message": "URL Block Explorer Tidak Valid" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "Masukkan URL gateway CID IPFS dan gunakan untuk resolusi konten ENS." }, + "jazzAndBlockies": { + "message": "Jazzicons dan Blockies merupakan dua gaya ikon unik yang berbeda untuk membantu Anda mengidentifikasi akun dengan cepat." + }, + "jazzicons": { + "message": "Jazzicons" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "Ya, mari kita atur!" }, + "levelArrow": { + "message": "panah tingkat" + }, "likeToImportTokens": { "message": "Apakah Anda ingin menambahkan token ini?" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "Memuat..." }, + "loadingNFTs": { + "message": "Memuat NFT..." + }, "loadingTokens": { "message": "Memuat Token..." }, @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "Lock time terlalu besar" }, + "logo": { + "message": "Logo $1", + "description": "$1 is the name of the ticker" + }, "low": { "message": "Rendah" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "Ethereum Mainnet" }, + "mainnetToken": { + "message": "Alamat ini cocok dengan alamat token Ethereum Mainnet yang dikenal. Periksa kembali alamat kontrak dan jaringan untuk token yang Anda coba tambahkan." + }, "makeAnotherSwap": { "message": "Buat swap baru" }, @@ -1515,6 +1748,12 @@ "message": "Pastikan tidak ada yang melihat layar Anda", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Format data salah" + }, + "manageSnaps": { + "message": "Kelola Snap yang Anda instal" + }, "max": { "message": "Maks" }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "Tidak melihat NFT Anda?" }, + "missingSetting": { + "message": "Tidak dapat menemukan pengaturan?" + }, + "missingSettingRequest": { + "message": "Minta di sini" + }, "missingToken": { "message": "Tidak melihat token Anda?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Nama" }, + "needCryptoInWallet": { + "message": "Untuk berinteraksi dengan aplikasi terdesentralisasi menggunakan MetaMask, Anda memerlukan $1 di dompet.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Butuh bantuan? Hubungi $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Tidak dapat mengirim jumlah negatif ETH." }, + "network": { + "message": "Jaringan:" + }, "networkDetails": { "message": "Detail Jaringan" }, + "networkIsBusy": { + "message": "Jaringan sibuk. Harga gas tinggi dan estimasinya kurang akurat." + }, "networkName": { "message": "Nama Jaringan" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "Kontrak Baru" }, + "newNFTDetectedMessage": { + "message": "Izinkan MetaMask mendeteksi NFT dari Opensea secara otomatis dan menampilkannya di dompet Anda." + }, "newNFTsDetected": { "message": "Baru! Deteksi NFT" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "Belum ada NFT" }, + "noSnaps": { + "message": "Belum ada Snap yang diinstal" + }, "noThanks": { "message": "Tidak, Terima Kasih" }, + "noThanksVariant2": { + "message": "Tidak, terima kasih." + }, "noTransactions": { "message": "Anda tidak memiliki transaksi" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "Gas Tidak Cukup" }, + "notifications10ActionText": { + "message": "Lihat di pengaturan", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Deteksi token yang ditingkatkan saat ini tersedia di jaringan Ethereum Mainnet, Polygon, BSC, dan Avalanche. Nantikan selengkapnya!" + }, + "notifications10DescriptionThree": { + "message": "Fitur deteksi token sudah AKTIF sejak awal. Tetapi Anda dapat menonaktifkannya melalui Pengaturan." + }, + "notifications10DescriptionTwo": { + "message": "Kami mengumpulkan token dari daftar token pihak ketiga. Token yang terdaftar di lebih dari dua daftar token akan terdeteksi secara otomatis." + }, + "notifications10Title": { + "message": "Deteksi token yang ditingkatkan telah hadir" + }, + "notifications11Description": { + "message": "Token dapat dibuat oleh siapa saja dan boleh memiliki nama yang sama. Jika Anda melihat token yang tidak aman atau belum pernah berinteraksi dengan Anda - sebaiknya dihindari saja." + }, + "notifications11Title": { + "message": "Penipuan dan risiko keamanan" + }, + "notifications12ActionText": { + "message": "Aktifkan mode gelap" + }, + "notifications12Description": { + "message": "Mode Gelap akan diaktifkan untuk pengguna baru tergantung preferensi sistem mereka. Untuk pengguna lama, aktifkan Mode Gelap secara manual di bawah Pengaturan -> Eksperimental." + }, + "notifications12Title": { + "message": "Kapan mode gelap? Ini saatnya mode gelap! ️🕶️🦊" + }, "notifications1Description": { "message": "Pengguna MetaMask Mobile kini bisa menukar token di dalam dompet seluler mereka. Pindai kode QR untuk mendapatkan aplikasi seluler dan mulai menukar.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": ".👓 Kami membuat transaksi lebih mudah untuk dibaca." }, + "numberOfNewTokensDetected": { + "message": "$1 token baru ditemukan di akun ini", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "dari" }, @@ -1984,6 +2286,9 @@ "message": "Buka MetaMask dalam layar penuh untuk menghubungkan ledger Anda melalui WebHID.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Periksa kode sumbernya" + }, "optional": { "message": "Opsional" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "Kata sandi ini akan membuka dompet MetaMask Anda hanya pada perangkat ini. MetaMask tidak dapat memulihkan kata sandi ini." }, + "passwordStrength": { + "message": "Kekuatan kata sandi: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Kata sandi yang kuat dapat meningkatkan keamanan dompet jika perangkat Anda dicuri atau disusupi." + }, "passwordTermsWarning": { "message": "Saya memahami bahwa MetaMask tidak dapat memulihkan kata sandi ini untuk saya. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "Permohonan izin" }, + "permissionRequestCapitalized": { + "message": "Permintaan Izin" + }, + "permission_accessNetwork": { + "message": "Akses Internet.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Hubungkan ke Snap $1.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Tampilkan konfirmasi di MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Lihat alamat, saldo akun, aktivitas, dan mulai transaksi", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Kontrol akun dan aset \"$1\" Anda.", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Simpan dan kelola datanya di perangkat Anda.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Tampilkan pemberitahuan.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Izin tak dikenal: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Izin" }, "personalAddressDetected": { "message": "Alamat pribadi terdeteksi. Masukkan alamat kontrak token." }, + "pleaseConfirm": { + "message": "Harap konfirmasikan" + }, "plusXMore": { "message": "+ $1 lagi", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "Jenis Koneksi Ledger Pilihan", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Mempersiapkan pertukaran..." + }, "prev": { "message": "Sebelumnya" }, @@ -2104,6 +2453,12 @@ "queued": { "message": "Antrean" }, + "reAddAccounts": { + "message": "tambahkan kembali akun lain" + }, + "reAdded": { + "message": "ditambahkan kembali" + }, "readdToken": { "message": "Anda dapat menambahkan token ini kembali di masa mendatang dengan membuka “Impor token” di menu opsi akun Anda." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "Hapus NFT" }, + "removeSnap": { + "message": "Hapus Snap" + }, + "removeSnapConfirmation": { + "message": "Yakin ingin menghapus $1?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Tindakan ini akan menghapus snap, datanya, dan mencabut izin yang Anda berikan." + }, + "replace": { + "message": "mengganti" + }, "requestsAwaitingAcknowledgement": { "message": "permintaan menunggu untuk disetujui" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "Mengatur ulang akun akan mengosongkan riwayat transaksi Anda. Ini tidak akan mengubah saldo di akun atau mengharuskan Anda untuk memasukkan kembali Frasa Pemulihan Rahasia." }, + "resetWallet": { + "message": "Reset Dompet" + }, + "resetWalletSubHeader": { + "message": "MetaMask tidak menyimpan salinan kata sandi Anda. Jika terjadi masalah saat membuka akun, reset dompet Anda. Anda dapat melakukannya dengan memberikan Frasa Pemulihan Rahasia yang digunakan saat mengatur dompet." + }, + "resetWalletUsingSRP": { + "message": "Tindakan ini akan menghapus dompet saat ini dan Frasa Pemulihan Rahasia dari perangkat ini, bersama dengan daftar akun yang telah Anda kelola. Setelah direset dengan Frasa Pemulihan Rahasia, Anda akan melihat daftar akun berdasarkan Frasa Pemulihan Rahasia yang Anda gunakan untuk mereset. Daftar baru ini secara otomatis akan menyertakan akun yang memiliki saldo. Anda juga dapat $1 yang telah dibuat sebelumnya. Akun khusus yang Anda impor harus $2, dan token khusus yang Anda tambahkan ke akun harus $3 juga." + }, + "resetWalletWarning": { + "message": "Pastikan Anda menggunakan Frasa Pemulihan Rahasia yang benar sebelum melanjutkan. Anda tidak dapat membatalkan tindakan ini." + }, "restore": { "message": "Pulihkan" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "JANGAN bagikan frasa ini kepada siapa pun!" }, + "revealTheSeedPhrase": { + "message": "Ungkap frasa seed" + }, "rinkeby": { "message": "Jaringan Uji Rinkeby" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "URL RPC Baru" }, + "safeTransferFrom": { + "message": "Transfer Aman Dari" + }, "save": { "message": "Simpan" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Cari Hasil" }, + "searchSettings": { + "message": "Cari di pengaturan" + }, "searchTokens": { "message": "Cari Token" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "Kirim Token" }, + "sendingDisabled": { + "message": "Belum mendukung pengiriman aset NFT ERC-1155." + }, "sendingNativeAsset": { "message": "Mengirim $1", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "Pengaturan" }, + "settingsSearchMatchingNotFound": { + "message": "Tidak menemukan hasil yang cocok." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Tampil" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "Lambat" }, + "smartTransaction": { + "message": "Transaksi Pintar" + }, + "snapAccess": { + "message": "Snap $1 memiliki akses ke:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Ditambahkan pada $1 dari $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Galat Snap: '$1'. Kode Galat: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Instal Snap" + }, + "snapInstallWarningCheck": { + "message": "Untuk mengonfirmasikan Anda sudah paham, centang semua." + }, + "snapInstallWarningKeyAccess": { + "message": "Anda memberikan akses kunci ke snap \"$1\". Tindakan ini tidak dapat dibatalkan dan memberikan kendali \"$1\" atas akun dan aset Anda. Sebelum melanjutkan, pastikan \"$1\" aman.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Snap ini meminta izin berikut:" + }, + "snaps": { + "message": "Snap" + }, + "snapsSettingsDescription": { + "message": "Kelola Snap Anda" + }, + "snapsStatus": { + "message": "Status snap tergantung pada aktivitas." + }, + "snapsToggle": { + "message": "Snap hanya akan beroperasi jika diaktifkan" + }, "somethingWentWrong": { "message": "Ups! Ada yang salah." }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Batas penggunaan terlalu besar" }, + "srpInputNumberOfWords": { + "message": "Frasa milik saya memiliki $1-kata", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Gagal ditempel karena memuat lebih dari 24 kata. Frasa pemulihan rahasia dapat memuat maksimum 24 kata.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Anda bisa menempelkan seluruh frasa pemulihan rahasia ke bagian mana pun", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Tampilkan/Sembunyikan kata dari frasa pemulihan rahasia ini", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Kata ini disembunyikan", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Kata ini sedang ditampilkan", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Stabil" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "Log status berisi alamat akun publik Anda dan transaksi terkirim." }, + "status": { + "message": "Status" + }, "statusConnected": { "message": "Terhubung" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "Simpan frasa ini dalam pengelola kata sandi seperti 1Password." }, + "strong": { + "message": "Kuat" + }, + "stxAreHere": { + "message": "Transaksi Pintar hadir di sini!" + }, + "stxBenefit1": { + "message": "Meminimalkan biaya transaksi" + }, + "stxBenefit2": { + "message": "Mengurangi potensi kegagalan transaksi \t" + }, + "stxBenefit3": { + "message": "Menghapus transaksi yang macet" + }, + "stxBenefit4": { + "message": "Mencegah perilaku front running \t" + }, + "stxCancelled": { + "message": "Pertukaran akan gagal" + }, + "stxCancelledDescription": { + "message": "Transaksi Anda akan gagal dan dibatalkan agar Anda tidak perlu membayar biaya gas yang tidak seharusnya." + }, + "stxCancelledSubDescription": { + "message": "Cobalah untuk menukar lagi. Kami akan selalu hadir untuk melindungi Anda dari risiko serupa di lain waktu." + }, + "stxDescription": { + "message": "Pertukaran MetaMask menjadi semakin pintar! Mengaktifkan Transaksi Pintar akan memungkinkan MetaMask mengoptimalkan Pertukaran Anda secara terprogram untuk membantu:" + }, + "stxErrorNotEnoughFunds": { + "message": "Dana tidak cukup untuk mengaktifkan transaksi pintar." + }, + "stxErrorUnavailable": { + "message": "Transaksi Pintar tidak tersedia untuk sementara waktu." + }, + "stxFailure": { + "message": "Pertukaran gagal" + }, + "stxFailureDescription": { + "message": "Perubahan pasar yang terjadi secara tiba-tiba dapat menyebabkan kegagalan. Jika masalah berlanjut, hubungi $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Transaksi Pintar tidak tersedia untuk sementara waktu karena Anda memiliki transaksi yang tertunda." + }, + "stxFallbackUnavailable": { + "message": "Anda masih bisa menukar token meskipun Transaksi Pintar tidak tersedia." + }, + "stxPendingFinalizing": { + "message": "Menyelesaikan..." + }, + "stxPendingOptimizingGas": { + "message": "Mengoptimalkan gas..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Mengirimkan Pertukaran secara pribadi..." + }, + "stxSubDescription": { + "message": "* Transaksi Pintar akan mencoba mengirimkan transaksi Anda secara pribadi, beberapa kali. Jika semua upaya gagal, transaksi akan disiarkan secara publik untuk memastikan Pertukaran telah berhasil dilakukan." + }, + "stxSuccess": { + "message": "Pertukaran selesai!" + }, + "stxSuccessDescription": { + "message": "$1 kini telah tersedia.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Simulasikan transaksi sebelum dikirim untuk mengurangi biaya transaksi dan mengurangi kegagalan." + }, + "stxTryRegular": { + "message": "Coba pertukaran biasa." + }, + "stxTryingToCancel": { + "message": "Mencoba membatalkan transaksi Anda..." + }, + "stxUnavailable": { + "message": "Transaksi Pintar dinonaktifkan" + }, + "stxUnknown": { + "message": "Status tidak diketahui" + }, + "stxUnknownDescription": { + "message": "Transaksi telah berhasil tetapi kami tidak yakin transaksi yang mana. Hal ini dikarenakan Anda mengirimkan transaksi lain saat pertukaran ini sedang diproses." + }, + "stxUserCancelled": { + "message": "Pertukaran dibatalkan" + }, + "stxUserCancelledDescription": { + "message": "Transaksi Anda telah dibatalkan dan Anda tidak membayar biaya gas yang tidak perlu." + }, + "stxYouCanOptOut": { + "message": "Anda dapat memilih keluar pada pengaturan lanjutan kapan saja." + }, "submit": { "message": "Kirim" }, @@ -2581,7 +3142,7 @@ "message": "Kunjungi Pusat Dukungan kami" }, "swap": { - "message": "Swap" + "message": "Pertukaran" }, "swapAdvancedSlippageInfo": { "message": "Jika harga berubah antara waktu penempatan dan konfirmasi order Anda, ini disebut “slippage”. Swap akan otomatis dibatalkan jika slippage melebihi pengaturan “slippage maks”." @@ -2607,6 +3168,10 @@ "message": "Anda memerlukan $1 $2 lagi untuk menyelesaikan swap", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Anda memerlukan lebih banyak $1 untuk menyelesaikan pertukaran ini menggunakan transaksi pintar.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "Kuotasi terbaik dari $1.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "Tidak ada token yang cocok yang tersedia $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Pertukaran selesai di <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Konfirmasikan dengan dompet perangkat keras Anda" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Swap gagal" }, + "swapFetchingQuoteNofN": { + "message": "Mengambil kuotasi $1 dari $2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Mengambil kuotasi" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "3Box telah dinonaktifkan karena terjadi galat selama sinkronisasi awal" }, + "tenPercentIncreased": { + "message": "Meningkat 10%" + }, "terms": { "message": "Persyaratan Penggunaan" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Uji Fungsi" }, + "testNetworks": { + "message": "Jaringan pengujian" + }, + "theme": { + "message": "Tema" + }, + "themeDescription": { + "message": "Pilih tema MetaMask yang Anda sukai." + }, "thisWillCreate": { "message": "Ini akan membuat Frasa Pemulihan Rahasia dan dompet baru" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Token" }, + "tokenAddress": { + "message": "Alamat token" + }, "tokenAlreadyAdded": { "message": "Token telah ditambahkan." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Desimal token diperlukan." }, + "tokenDecimalTitle": { + "message": "Desimal token:" + }, + "tokenDetails": { + "message": "Detail token" + }, + "tokenDetection": { + "message": "Deteksi token" + }, + "tokenDetectionAlertMessage": { + "message": "Saat ini deteksi token tersedia di $1. $2" + }, "tokenDetectionAnnouncement": { "message": "Baru! Deteksi token yang ditingkatkan tersedia di Ethereum Mainnet sebagai fitur eksperimental. $1" }, + "tokenDetectionToggleDescription": { + "message": "API token ConsenSys mengumpulkan daftar token dari berbagai daftar token pihak ketiga. Menonaktifkannya akan menghentikan deteksi token baru yang ditambahkan ke dompet Anda, tetapi Anda akan tetap memiliki opsi untuk mencari token yang akan diimpor." + }, + "tokenId": { + "message": "ID token" + }, + "tokenList": { + "message": "Daftar token:" + }, "tokenSymbol": { "message": "Simbol Token" }, @@ -3178,6 +3787,12 @@ "message": "Tidak mendukung pengiriman token koleksi (ERC-721) untuk saat ini", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Kami tidak dapat memverifikasi kontrak ini. Pastikan alamat ini aman." + }, + "upArrow": { + "message": "panah atas" + }, "updatedWithDate": { "message": "Diperbarui $1" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Kami menggunakan API pihak ketiga untuk mendeteksi dan menampilkan token baru yang dikirim ke dompet Anda. Matikan jika Anda tidak ingin MetaMask memakai data dari layanan tersebut." }, + "useTokenDetectionPrivacyDesc": { + "message": "Menampilkan token yang dikirim ke akun Anda secara otomatis yang melibatkan komunikasi dengan server pihak ketiga untuk mengambil gambar token. Server tersebut akan memiliki akses ke alamat IP Anda." + }, "usedByClients": { "message": "Digunakan oleh berbagai klien yang berbeda" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Dompet berhasil dibuat" }, + "weak": { + "message": "Lemah" + }, "web3ShimUsageNotification": { "message": "Kami melihat situs web saat ini mencoba menggunakan API window.web3 yang dihapus. Jika situs tersebut tampak bermasalah, klik $1 untuk informasi selengkapnya.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1 dari $2 tertunda", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Ya" + }, "yesLetsTry": { "message": "Ya, mari kita coba" }, diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 7e92d2b21..9f6f93e56 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -67,9 +67,6 @@ "affirmAgree": { "message": "Acconsento" }, - "aggregatorFeeCost": { - "message": "Tassa per la rete aggregatore" - }, "alertDisableTooltip": { "message": "Può essere cambiato in \"Impostazioni > Avvisi\"" }, @@ -117,12 +114,6 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Tassa di approvazione per la rete aggregatore" - }, - "approvalTxGasCost": { - "message": "Costo Gas Approvazione Tx" - }, "approve": { "message": "Approva" }, @@ -198,10 +189,10 @@ "message": "Compra" }, "buyWithWyre": { - "message": "Compra ETH con Wyre" + "message": "Compra $1 con Wyre" }, "buyWithWyreDescription": { - "message": "Wyre ti consente di usare la carta di credito per depositare ETH direttamente nel tuo account MetaMask." + "message": "Wyre ti consente di usare la carta di credito per depositare $1 direttamente nel tuo account MetaMask." }, "canToggleInSettings": { "message": "Puoi riabilitare questa notifica in Impostazioni -> Avvisi." @@ -568,10 +559,6 @@ "externalExtension": { "message": "Estensione Esterna" }, - "extraApprovalGas": { - "message": "+$1 gas approvazione", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Fallita" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 50b314ddc..9add2d00a 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -58,6 +58,10 @@ "message": "$1はアクセスしてこの最大量まで消費できます", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 はこのアセットにアクセスし、使用できます", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "カメラにアクセス中..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "アカウントの詳細" }, + "accountIdenticon": { + "message": "アカウントのアイデンティコン" + }, "accountName": { "message": "アカウント名" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "ネットワークを追加" }, + "addANetworkManually": { + "message": "ネットワークを手動で追加" + }, "addANickname": { "message": "ニックネームを追加" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "信頼できる友達とアドレスを追加する" }, + "addFromAListOfPopularNetworks": { + "message": "人気のネットワークのリストから追加するか、ネットワークを手動で追加します。信頼できる相手と以外はやり取りしないようにしてください。" + }, "addMemo": { "message": "メモを追加" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "同意する" }, - "aggregatorFeeCost": { - "message": "アグリゲーター ネットワーク料金" + "airgapVault": { + "message": "AirGap Vault" + }, + "airgapVaultTutorial": { + "message": " (チュートリアル)" }, "alertDisableTooltip": { "message": "これは、[設定 > 警告] で変更できます" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "承認およびアグリゲーターネットワークの手数料" - }, - "approvalTxGasCost": { - "message": "承認送信のガス代" - }, "approve": { "message": "使用限度額の承認" }, + "approveAndInstall": { + "message": "承認してインストール" + }, "approveButtonText": { "message": "承認" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "承認された金額:" }, + "approvedAsset": { + "message": "承認済みのアセット" + }, + "areYouDeveloper": { + "message": "開発者の方ですか?" + }, + "areYouSure": { + "message": "よろしいですか?" + }, "asset": { "message": "アセット" }, @@ -356,6 +378,9 @@ "message": "$1のアカウントを表示", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "ご使用のブラウザはサポートされていません..." }, @@ -371,11 +396,30 @@ "buy": { "message": "購入" }, + "buyAsset": { + "message": "$1 を購入", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "MoonPay で $1 を購入", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay は 145 か国以上で、Visa、Mastercard、Apple / Google / Samsung Pay、銀行送金などの一般的な支払方法に対応しています。トークンは MetaMask アカウントに入金されます。" + }, + "buyCryptoWithTransak": { + "message": "Transak で $1 を購入", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak は、100 か国以上でクレジット・デビットカード、Apple Pay、MobiKwik、銀行送金 (場所による) に対応しています。$1 は MetaMask アカウントに直接入金されます。", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "WyreでETHを購入" + "message": "Wyreで $1 を購入" }, "buyWithWyreDescription": { - "message": "Wyreを使用すると、デビット カードを使用して、ETHをMetaMaskアカウントに直接デポジットできます。" + "message": "Wyreを使用すると、デビット カードを使用して、$1 をMetaMaskアカウントに直接デポジットできます。" }, "bytes": { "message": "バイト" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "トランザクションをキャンセルまたはスピードアップ" }, + "cancelSpeedUpLabel": { + "message": "このガス代は、元の額を$1ます。", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "トランザクションを$1するには、ネットワークに認識されるようにガス代を 10% 以上増額する必要があります。", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "スワップをキャンセル" + }, "cancellationGasFee": { "message": "キャンセルのガス代" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "このチェーンIDは現在$1ネットワークで使用されています。" }, + "chainListReturnedDifferentTickerSymbol": { + "message": "チェーン ID $1 のネットワークは、入力されたものとは異なる通貨記号 ($2) を使用している可能性があります。続行する前に確認してください。", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "ハードウェアウォレットに接続するには、MetaMaskをGoogle Chromeで使用する必要があります。" }, @@ -423,6 +482,13 @@ "close": { "message": "閉じる" }, + "collectibleAddFailedMessage": { + "message": "所有者情報が一致していないため、NFT を追加できません。入力された情報が正しいことを確認してください。" + }, + "collectibleAddressError": { + "message": "このトークンは NFT です。$1で追加してください", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "確認" }, @@ -506,6 +572,10 @@ "message": "$1はどのサイトとも接続されていません。", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "$1 スナップはこれらのサイトに接続されており、上記のパーミッションにアクセスできます。", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "接続中..." }, @@ -536,6 +606,9 @@ "continue": { "message": "続行" }, + "continueToMoonPay": { + "message": "MoonPay に進む" + }, "continueToTransak": { "message": "Transakに進む" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "コントラクトインタラクション" }, + "convertTokenToNFTDescription": { + "message": "このアセットは NFT であることが検出されました。Metamask では現在、NFT が完全にネイティブでサポートされています。トークンリストから削除して、NFT として追加しますか?" + }, + "convertTokenToNFTExistDescription": { + "message": "このアセットは NFT として追加されていることが検出されました。トークンリストから削除しますか?" + }, "copiedExclamation": { "message": "コピーされました!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "このネットワークでは利用できません" }, + "curveHighGasEstimate": { + "message": "積極的なガス代見積もりグラフ" + }, + "curveLowGasEstimate": { + "message": "低いガス代見積もりグラフ" + }, + "curveMediumGasEstimate": { + "message": "市場のガス代見積もりグラフ" + }, "custom": { "message": "高度な設定" }, + "customContentSearch": { + "message": "以前追加されたネットワークを検索" + }, "customGas": { "message": "ガスのカスタマイズ" }, @@ -633,6 +724,15 @@ "customToken": { "message": "カスタムトークン" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "このネットワークではまだトークンの検出を利用できません。トークンを手動でインポートし、信頼できることを確認してください。$1 の詳細をご覧ください" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "手動でトークンをインポートする前に、信頼できることを確認してください。$1 の詳細をご覧ください。" + }, + "customerSupport": { + "message": "カスタマーサポート" + }, "dappSuggested": { "message": "サイト提案" }, @@ -647,6 +747,9 @@ "message": "$1はこの価格を推奨しています。", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "ダーク" + }, "data": { "message": "データ" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "このネットワークを削除しますか?" }, + "depositCrypto": { + "message": "$1 を入金", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "説明" }, "details": { "message": "詳細" }, + "directDepositCrypto": { + "message": "$1 を直接入金" + }, + "directDepositCryptoExplainer": { + "message": "すでに $1 をお持ちの場合、新しいウォレットに最も素早く $1 を入金する方法が、直接入金です。" + }, + "disabledGasOptionToolTipMessage": { + "message": "元のガス代の 10% 以上という増額の条件を満たしていないため、「$1」は利用できません。", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "接続解除" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "今後表示しない" }, + "downArrow": { + "message": "下矢印" + }, "downloadGoogleChrome": { "message": "Google Chromeをダウンロード" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "アドレスのニックネームを編集" }, + "editCancellationGasFeeModalTitle": { + "message": "キャンセルのガス代を編集" + }, "editContact": { "message": "連絡先を編集" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "アクセス許可の編集" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "スピードアップのガス代を編集" + }, "enableAutoDetect": { "message": " 自動検出を有効にする" }, + "enableEIP1559V2": { + "message": "改善されたガス代 UI を有効にする" + }, + "enableEIP1559V2AlertMessage": { + "message": "ガス代の見積もりとカスタマイズが新しくなりました。" + }, + "enableEIP1559V2ButtonText": { + "message": "設定で、改善されたガス代 UI をオンにしてください" + }, + "enableEIP1559V2Description": { + "message": "ガス代の見積もりとカスタマイズが新しくなりました。新しいガス代エクスペリエンスを利用するには、オンにしてください。$1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "新しいガス代エクスペリエンス" + }, "enableFromSettings": { "message": " 設定で有効にします。" }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "OpenSea APIを使用してNFTデータを取得します。NFT自動検出はOpenSea APIを使用するため、この設定をオフにすると利用できなくなります。" }, + "enableSmartTransactions": { + "message": "スマートトランザクションを有効にする" + }, "enableToken": { "message": "$1を有効にする", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Etherscanで表示" }, + "expandExperience": { + "message": "web3 エクスペリエンスを拡張" + }, "expandView": { "message": "ビューを展開" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "外部拡張機能" }, - "extraApprovalGas": { - "message": "+$1承認ガス", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "失敗しました" }, "failedToFetchChainId": { "message": "チェーンIDを取り込むことができませんでした。お使いのRPC URLは正しいですか?" }, + "failedToFetchTickerSymbolData": { + "message": "ティッカーシンボルの検証データが現在利用できません。入力されたシンボルが正しいことを確認してください。これはこのネットワークの変換レートに影響を与えます" + }, "failureMessage": { "message": "問題が発生しました。アクションを完了させることができません" }, @@ -1062,6 +1209,26 @@ "message": "元", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "この拡張機能はアンインストールしてください", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask は開発者が新しい不安定な API をテストするためのものです。開発者やベータテスター以外の方は、$1。", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "この拡張機能の安全性や安定性は保証されていません。Flask で提供される新しい API はフィッシング攻撃への対策ができていないため、Flask を必要とするサイトまたはスナップは、アセットの盗難を目的とした悪質なものである可能性があります。", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Flask API はすべて実験的なものです。これらは通知なしに変更または削除される可能性があり、安定した MetaMask に移行することなく永久に Flask に残る可能性もあります。自己責任でご使用ください。", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "リスクを受け入れる", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Twitterでフォロー" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "このデバイスの登録を解除" }, + "forgotPassword": { + "message": "パスワードを忘れた場合" + }, "from": { "message": "移動元" }, @@ -1078,6 +1248,9 @@ "message": "移動元: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "トークンリストから: $1" + }, "functionApprove": { "message": "機能: 承認" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "弊社の低・中・高の見積もりはご利用いただけません。" }, + "gasFee": { + "message": "ガス代" + }, "gasLimit": { "message": "ガス限度額" }, "gasLimitInfoTooltipContent": { "message": "ガス限度額は使用するガスの単位の最大量です。" }, + "gasLimitRecommended": { + "message": "推奨されるガス代は $1 です。ガス代の上限がこれ未満の場合、失敗する可能性があります。" + }, "gasLimitTooLow": { "message": "ガス限度額トは21000以上にする必要があります" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Goerliテストネットワーク" }, + "gotIt": { + "message": "了解!" + }, "grantedToWithColon": { "message": "付与先:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "お会いできてうれしいです。" }, @@ -1231,6 +1416,12 @@ "hide": { "message": "非表示" }, + "hideSeedPhrase": { + "message": "シードフレーズを非表示" + }, + "hideToken": { + "message": "トークンを非表示" + }, "hideTokenPrompt": { "message": "トークンを非表示にしますか?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "ウォレットをインポート" }, + "importNFT": { + "message": "NFT をインポート" + }, + "importNFTAddressToolTip": { + "message": "OpenSea の場合、NFTページの詳細の下に、「コントラクトアドレス」という青いハイパーリンクがあります。これをクリックすると、Etherscan のコントラクトのアドレスに移動します。そのページの左上に「コントラクト」というアイコンがあり、その右側には文字と数字で構成された長い文字列があります。これが NFT を作成したコントラクトのアドレスです。アドレスの右側にある「コピー」アイコンをクリックすると、クリップボードにコピーされます。" + }, + "importNFTPage": { + "message": "NFTページをインポート" + }, + "importNFTTokenIdToolTip": { + "message": "コレクションの ID は一意の識別子で、同じ NFT は 2 つとして存在しません。前述の通り、OpenSea ではこの番号は「詳細」の下に表示されます。この ID を書き留めるか、クリップボードにコピーしてください。" + }, "importNFTs": { "message": "NFTをインポート" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "残高が不十分です。" }, + "insufficientCurrencyBuyOrDeposit": { + "message": "アカウントに、$2 ネットワークでのトランザクション手数料の支払いに十分な $1 がありません。$3するか、別のアカウントから入金してください。", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "アカウントに、$2 ネットワークでのトランザクション手数料の支払いに十分な $1 がありません。別のアカウントから $1 を入金してください。", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "資金が不十分です。" }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "ETHネットワークではなく、小文字に設定します" }, + "invalidAssetType": { + "message": "このアセットは NFT であるため、NFT タブの NFT のインポートページで追加しなおす必要があります" + }, "invalidBlockExplorerURL": { "message": "無効なBlock Explorer URLです" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "ENSコンテンツの解決に使用するIPFS CIDゲートウェイのURLを入力します。" }, + "jazzAndBlockies": { + "message": "Jazzicon と Blockie は、アカウントを一目で見分けるためのユニークなアイコンであり、2 つの異なるスタイルが特徴です。" + }, + "jazzicons": { + "message": "Jazzicon" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "さあセットアップしましょう!" }, + "levelArrow": { + "message": "水平矢印" + }, "likeToImportTokens": { "message": "これらのトークンを追加しますか?" }, @@ -1480,11 +1703,14 @@ "loading": { "message": "ロードしています..." }, + "loadingNFTs": { + "message": "NFT をロードしています..." + }, "loadingTokens": { "message": "トークンをロードしています..." }, "localhost": { - "message": "Localhost 8545" + "message": "ローカルホスト 8545" }, "lock": { "message": "ロック" @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "ロック時間が長すぎます" }, + "logo": { + "message": "$1 ロゴ", + "description": "$1 is the name of the ticker" + }, "low": { "message": "低" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "イーサリアムメインネット" }, + "mainnetToken": { + "message": "このアドレスは、既知の Ethereum Mainnet トークンアドレスと一致しています。追加するトークンのコントラクトアドレスとネットワークを再確認してください。" + }, "makeAnotherSwap": { "message": "新しいスワップの作成" }, @@ -1515,6 +1748,12 @@ "message": "誰にも画面を見られていないことを確認してください", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "不正な形式のデータ" + }, + "manageSnaps": { + "message": "インストールされたスナップの管理" + }, "max": { "message": "最大" }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "NFTが見当たりませんか?" }, + "missingSetting": { + "message": "設定が見つかりませんか?" + }, + "missingSettingRequest": { + "message": "ここからリクエスト" + }, "missingToken": { "message": "トークンが見当たりませんか?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "名前" }, + "needCryptoInWallet": { + "message": "MetaMask で分散型アプリケーションとやり取りするには、ウォレットに $1 が必要です。", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "アシスタンスが必要な場合は、$1にお問い合わせください", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "負の額のETHを送金することはできません。" }, + "network": { + "message": "ネットワーク:" + }, "networkDetails": { "message": "ネットワークの詳細" }, + "networkIsBusy": { + "message": "ネットワークが混み合っています。ガス代が高く、見積もりはあまり正確ではありません。" + }, "networkName": { "message": "ネットワーク名" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "新しいコントラクト" }, + "newNFTDetectedMessage": { + "message": "Opensea からの NFT の自動検出とウォレットへの表示をMetaMask に許可してください。" + }, "newNFTsDetected": { "message": "新機能! NFT検出" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "NFTはまだありません" }, + "noSnaps": { + "message": "スナップがインストールされていません" + }, "noThanks": { "message": "結構です" }, + "noThanksVariant2": { + "message": "結構です。" + }, "noTransactions": { "message": "トランザクションがありません" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "ガスが不足しています" }, + "notifications10ActionText": { + "message": "設定に移動", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "改善されたトークン検出は、現在 Ethereum Mainnet、Polygon、BSC、Avalanche ネットワークで利用できます。他のネットワークも追加される予定です!" + }, + "notifications10DescriptionThree": { + "message": "トークン検出機能はデフォルトでオンになっていますが、設定で無効にできます。" + }, + "notifications10DescriptionTwo": { + "message": "トークンの情報は、サードパーティのトークンリストから取得されています。3 つ以上のトークンリストに掲載されているトークンは自動的に検出されます。" + }, + "notifications10Title": { + "message": "トークン検出が改善されました" + }, + "notifications11Description": { + "message": "トークンは誰にでも作れるため、名前が同じ場合もあります。信頼できないトークンや取引したことのないトークンが表示された場合は、信頼しない方が無難です。" + }, + "notifications11Title": { + "message": "詐欺やセキュリティのリスク" + }, + "notifications12ActionText": { + "message": "ダークモードを有効にする" + }, + "notifications12Description": { + "message": "新規ユーザーの場合、システム設定に従ってダークモードが有効になります。既存のユーザーは、設定 -> 実験的機能で、ダークモードを手動で有効にできます。" + }, + "notifications12Title": { + "message": "いつダークモードに?今ダークモードです!🕶️🦊" + }, "notifications1Description": { "message": "MetaMask Mobileのユーザーが、モバイルウォレット内でトークンを交換できるようになりました。QRコードをスキャンしてモバイルアプリを取得し、スワップを開始します。", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 トランザクションが読みやすくなりました。" }, + "numberOfNewTokensDetected": { + "message": "$1 の新しいトークンがこのアカウントで見つかりました", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "中の" }, @@ -1984,6 +2286,9 @@ "message": "WebHIDでLedgerを接続するには、MetaMaskを全画面モードで開いてください。", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "ソースコードを確認" + }, "optional": { "message": "任意" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "このパスワードは、このデバイスでのみMetaMaskウォレットのロックを解除します。MetaMaskはこのパスワードを復元できません。" }, + "passwordStrength": { + "message": "パスワードの強度: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "強力なパスワードは、デバイスが盗まれたり侵入されたりした場合に、ウォレットのセキュリティを高めます。" + }, "passwordTermsWarning": { "message": "私はMetaMaskがこのパスワードを復元できないことを理解しています。$1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "許可のリクエスト" }, + "permissionRequestCapitalized": { + "message": "パーミッションのリクエスト" + }, + "permission_accessNetwork": { + "message": "インターネットにアクセスします。", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "$1 スナップに接続します。", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "MetaMask に確認を表示します。", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "アドレス、アカウント残高、アクティビティを表示してトランザクションを開始", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "「$1」アカウントとアセットをコントロールします。", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "デバイスにデータを保管し管理します。", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "通知を表示します。", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "不明なパーミッション: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "許可" }, "personalAddressDetected": { "message": "個人アドレスが検出されました。トークンコントラクトアドレスを入力してください。" }, + "pleaseConfirm": { + "message": "確認してください" + }, "plusXMore": { "message": "他 + $1", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "優先Ledger接続タイプ", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "スワップを準備しています..." + }, "prev": { "message": "前へ" }, @@ -2104,6 +2453,12 @@ "queued": { "message": "キュー待ち" }, + "reAddAccounts": { + "message": "他のアカウントを再度追加" + }, + "reAdded": { + "message": "再度追加されました" + }, "readdToken": { "message": "アカウントオプションメニューで [トークンの追加] を選択することによって、今後このトークンを戻すことができます。" }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "NFTを削除" }, + "removeSnap": { + "message": "スナップを削除" + }, + "removeSnapConfirmation": { + "message": "$1 を削除してよろしいですか?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "この操作により、スナップとそのデータが削除され、与えられたパーミッションが取り消されます。" + }, + "replace": { + "message": "置き換え" + }, "requestsAwaitingAcknowledgement": { "message": "承認されるまで待機の要求" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "アカウントをリセットすると、トランザクション履歴が消去されます。これによりアカウント内の残高が変更されることはありません。また、シークレットリカバリーフレーズの再入力が求められることもありません。" }, + "resetWallet": { + "message": "ウォレットのリセット" + }, + "resetWalletSubHeader": { + "message": "MetaMask はパスワードのコピーを保管しません。アカウントのロックを解除できない場合は、ウォレットをリセットする必要があります。これは、ウォレットのセットアップ時に使用した秘密のリカバリーフレーズを入力することで行えます。" + }, + "resetWalletUsingSRP": { + "message": "この操作により、このデバイスから現在のウォレットと秘密のリカバリーフレーズ、および作成されたアカウントのリストが削除されます。秘密のリカバリーフレーズでリセットすると、リセットに使用された秘密のリカバリーフレーズに基づくアカウントのリストが表示されます。この新しいリストには、残高のあるアカウントが自動的に含まれます。また、以前作成された$1をすることもできます。インポートしたカスタムアカウントは$2である必要があり、アカウントに追加されたカスタムトークンも$3である必要があります。" + }, + "resetWalletWarning": { + "message": "続行する前に、正しい秘密のリカバリーフレーズを使用していることを確認してください。これは元に戻せません。" + }, "restore": { "message": "復元" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "このフレーズは誰にも教えないでください。" }, + "revealTheSeedPhrase": { + "message": "シードフレーズを表示" + }, "rinkeby": { "message": "Rinkebyテストネットワーク" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "新しいRPC URL" }, + "safeTransferFrom": { + "message": "安全な転送元" + }, "save": { "message": "保存" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "検索結果" }, + "searchSettings": { + "message": "設定で検索" + }, "searchTokens": { "message": "トークンを検索" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "トークンを送信" }, + "sendingDisabled": { + "message": "ERC-1155 NFT アセットの送信は、まだサポートされていません。" + }, "sendingNativeAsset": { "message": "$1を送信中", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "設定" }, + "settingsSearchMatchingNotFound": { + "message": "一致する結果が見つかりませんでした。" + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "表示" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "低速" }, + "smartTransaction": { + "message": "スマートトランザクション" + }, + "snapAccess": { + "message": "$1 スナップは次にアクセス可能です:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "$1 に $2 から追加", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "スナップエラー:「$1」。エラーコード:「$2」", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "スナップをインストール" + }, + "snapInstallWarningCheck": { + "message": "理解したことを確認するために、すべての項目にチェックを入れてください。" + }, + "snapInstallWarningKeyAccess": { + "message": "スナップ「$1」に重要なアクセス権を付与しようとしています。これは取り消し不可能で、「$1」によるアカウントとアセットのコントロールが可能になります。続行する前に、「$1」が信頼できることを確認してください。", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "このスナップが次のパーミッションをリクエストしています:" + }, + "snaps": { + "message": "スナップ" + }, + "snapsSettingsDescription": { + "message": "スナップの管理" + }, + "snapsStatus": { + "message": "スナップのステータスはアクティビティによります。" + }, + "snapsToggle": { + "message": "スナップは有効になっている場合にのみ実行されます" + }, "somethingWentWrong": { "message": "申し訳ありません。問題が発生しました。" }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "使用限度額が大きすぎます" }, + "srpInputNumberOfWords": { + "message": "$1 語のフレーズがあります", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "24 を超える単語が含まれていたため、貼り付けに失敗しました。秘密のリカバリーフレーズは 24 語までです。", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "秘密のリカバリーフレーズ全体をいずれかのフィールドに張り付けできます。", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "秘密のリカバリーフレーズのこの単語を表示・非表示", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "この単語は表示されません", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "この単語は表示されます", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "安定" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "ステータスログには、パブリックアカウントアドレスと送信済みトランザクションが含まれています。" }, + "status": { + "message": "ステータス" + }, "statusConnected": { "message": "接続済み" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "このフレーズを1Passwordのようなパスワードマネージャーに保存します。" }, + "strong": { + "message": "強" + }, + "stxAreHere": { + "message": "スマートトランザクションが利用可能になりました!" + }, + "stxBenefit1": { + "message": "トランザクションコストを最小化" + }, + "stxBenefit2": { + "message": "トランザクションの失敗数を低減" + }, + "stxBenefit3": { + "message": "トランザクションの停滞を解消" + }, + "stxBenefit4": { + "message": "フロントランニングを防止" + }, + "stxCancelled": { + "message": "スワップが失敗するところでした" + }, + "stxCancelledDescription": { + "message": "トランザクションが失敗しそうになり、不要なガス代の支払いを避けるためにキャンセルされました。" + }, + "stxCancelledSubDescription": { + "message": "もう一度スワップをお試しください。次回は同様のリスクを避けられるようサポートします。" + }, + "stxDescription": { + "message": "MetaMask Swaps がはるかに賢くなりました!スマートトランザクションを有効にすると、MetaMask がプログラムに従ってスワップを最適化できるようになるため、以下のようなメリットがあります。" + }, + "stxErrorNotEnoughFunds": { + "message": "スマートトランザクションに十分な資金がありません。" + }, + "stxErrorUnavailable": { + "message": "スマートトランザクションは一時的に利用できません。" + }, + "stxFailure": { + "message": "スワップに失敗しました" + }, + "stxFailureDescription": { + "message": "突然の市場変動が失敗の原因になります。問題が解決されないようでしたら、$1 にお問い合わせください。", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "保留中のトランザクションがあるため、スマートトランザクションは一時的に利用できません。" + }, + "stxFallbackUnavailable": { + "message": "スマートトランザクションが利用できなくても、トークンのスワップは可能です。" + }, + "stxPendingFinalizing": { + "message": "最終処理中..." + }, + "stxPendingOptimizingGas": { + "message": "ガス代を最適化中..." + }, + "stxPendingPrivatelySubmitting": { + "message": "スワップを非公開で送信中..." + }, + "stxSubDescription": { + "message": "* スマートトランザクションは、非公開でトランザクションのの送信を数回試みます。すべての試みが失敗した場合、スワップが成功するようトランザクションが公開されます。" + }, + "stxSuccess": { + "message": "スワップ完了!" + }, + "stxSuccessDescription": { + "message": "$1 が利用可能になりました。", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "送信前にトランザクションのシミュレーションを行い、トランザクションのコストと失敗率を減らします。" + }, + "stxTryRegular": { + "message": "通常のスワップをお試しください。" + }, + "stxTryingToCancel": { + "message": "トランザクションのキャンセルを試みています..." + }, + "stxUnavailable": { + "message": "スマートトランザクションが無効になっています" + }, + "stxUnknown": { + "message": "ステータス不明" + }, + "stxUnknownDescription": { + "message": "トランザクションは成功しましたが、詳細がわかりません。このスワップの処理中に別のトランザクションが送信されたことが原因である可能性があります。" + }, + "stxUserCancelled": { + "message": "スワップがキャンセルされました" + }, + "stxUserCancelledDescription": { + "message": "トランザクションがキャンセルされ、不要なガス代は支払われませんでした。" + }, + "stxYouCanOptOut": { + "message": "詳細設定でいつでもオプトアウトできます。" + }, "submit": { "message": "送信" }, @@ -2607,6 +3168,10 @@ "message": "このスワップを完了させるには、さらに$1の$2が必要です。", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "スマートトランザクションを使用してこのスワップを完了させるには、もっと $1 が必要です。", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "最善の$1の見積もり。", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "$1と一致するトークンがありません", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "スワップ完了まで <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "ハードウェアウォレットで確定" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "スワップに失敗しました" }, + "swapFetchingQuoteNofN": { + "message": "$2 件中 $1 件の見積もりを取得中", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "見積もりを取得中" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "3Boxは、最初の同期中のエラーのため、無効化されました" }, + "tenPercentIncreased": { + "message": "10% の増加" + }, "terms": { "message": "利用規約" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "テストフォーセット" }, + "testNetworks": { + "message": "テストネットワーク" + }, + "theme": { + "message": "テーマ" + }, + "themeDescription": { + "message": "ご希望の MetaMask テーマを選択してください。" + }, "thisWillCreate": { "message": "これにより、新しいウォレットとシークレットリカバリーフレーズが作成されます" }, @@ -2974,6 +3559,9 @@ "token": { "message": "トークン" }, + "tokenAddress": { + "message": "トークンアドレス" + }, "tokenAlreadyAdded": { "message": "トークンの追加がすでに完了しています。" }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "トークンの10進数が必要です。" }, + "tokenDecimalTitle": { + "message": "トークンの小数桁数:" + }, + "tokenDetails": { + "message": "トークンの詳細" + }, + "tokenDetection": { + "message": "トークン検出" + }, + "tokenDetectionAlertMessage": { + "message": "トークン検出は現在 $1 で利用可能です。$2" + }, "tokenDetectionAnnouncement": { "message": "新機能! 実験的な機能として、Ethereum Mainnetでのトークン検出が改善されました。$1" }, + "tokenDetectionToggleDescription": { + "message": "ConsenSys のトークン API は、さまざまなサードパーティのトークンリストからトークンのリストを集積します。これをオフにすると、ウォレットに追加された新しいトークンは検出されなくなりますが、引き続きトークンを検索してインポートすることは可能です。" + }, + "tokenId": { + "message": "トークン ID" + }, + "tokenList": { + "message": "トークンリスト:" + }, "tokenSymbol": { "message": "トークンシンボル" }, @@ -3178,6 +3787,12 @@ "message": "コレクティブル (ERC-721) トークンの送信は現在サポートされていません", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "このコントラクトを検証できません。このアドレスが信頼できることを確認してください。" + }, + "upArrow": { + "message": "上矢印" + }, "updatedWithDate": { "message": "$1が更新されました" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "弊社はユーザーのウォレットに送信された新しいトークンを検出して表示するために、サードパーティーAPIを使用します。MetaMaskにこれらのサービスからデータを取得させたくない場合は、この機能をオフにしてください。" }, + "useTokenDetectionPrivacyDesc": { + "message": "アカウントに送られたトークンを自動的に表示するには、サードパーティーサーバーと通信し、トークンの画像を取得する必要があります。これらのサーバーはユーザーの IP アドレスにアクセスできます。" + }, "usedByClients": { "message": "さまざまな異なるクライアントによって使用されています" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "ウォレットが作成されました" }, + "weak": { + "message": "弱" + }, "web3ShimUsageNotification": { "message": "現在のWebサイトが、削除済みのwindow.web3 APIの使用を検知しました。サイトが破損しているようであれば、$1をクリックして詳細を確認してください。", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$2中$1が保留中", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "はい" + }, "yesLetsTry": { "message": "はい、やってみます" }, diff --git a/app/_locales/kn/messages.json b/app/_locales/kn/messages.json index 1edff554c..762b250c7 100644 --- a/app/_locales/kn/messages.json +++ b/app/_locales/kn/messages.json @@ -137,10 +137,10 @@ "message": "ನಿಮ್ಮ ಬ್ರೌಸರ್ ಬೆಂಬಲಿಸುತ್ತಿಲ್ಲ..." }, "buyWithWyre": { - "message": "Wyre ನೊಂದಿಗೆ ETH ಖರೀದಿಸಿ" + "message": "Wyre ನೊಂದಿಗೆ $1 ಖರೀದಿಸಿ" }, "buyWithWyreDescription": { - "message": "ನಿಮ್ಮ MetaMask ಖಾತೆಗೆ ETH ಅನ್ನು ಜಮಾ ಮಾಡಲು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಬಳಸಲು Wyre ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ." + "message": "ನಿಮ್ಮ MetaMask ಖಾತೆಗೆ $1 ಅನ್ನು ಜಮಾ ಮಾಡಲು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಬಳಸಲು Wyre ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ." }, "bytes": { "message": "ಬೈಟ್‌ಗಳು" diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index c8d3ca1d8..357bbf268 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -58,6 +58,10 @@ "message": "$1의 경우, 이 최대 금액까지 액세스 및 지출할 수 있습니다.", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1(은)는 이 자산에 접근하여 사용할 수 있습니다", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "카메라에 접근 중..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "계정 세부 정보" }, + "accountIdenticon": { + "message": "계정 식별 아이콘" + }, "accountName": { "message": "계정 이름" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "네트워크 추가" }, + "addANetworkManually": { + "message": "네트워크 수동 추가" + }, "addANickname": { "message": "닉네임 추가" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "신뢰하는 친구 및 주소 추가" }, + "addFromAListOfPopularNetworks": { + "message": "주요 네트워크 목록에서 추가하거나 네트워크를 직접 추가합니다. 신뢰할 수 있는 엔터티만 이용하세요." + }, "addMemo": { "message": "메모 추가" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "동의함" }, - "aggregatorFeeCost": { - "message": "애그리게이터 네트워크 수수료" + "airgapVault": { + "message": "에어갭 볼트" + }, + "airgapVaultTutorial": { + "message": " (튜토리얼)" }, "alertDisableTooltip": { "message": "\"설정 > 경고\"에서 변경할 수 있습니다." @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "승인 및 애그리게이터 네트워크 수수료" - }, - "approvalTxGasCost": { - "message": "승인 Tx 가스 비용" - }, "approve": { "message": "지출 한도 승인" }, + "approveAndInstall": { + "message": "승인 및 설치" + }, "approveButtonText": { "message": "승인" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "승인 금액:" }, + "approvedAsset": { + "message": "승인된 자산" + }, + "areYouDeveloper": { + "message": "개발자이신가요?" + }, + "areYouSure": { + "message": "확실한가요?" + }, "asset": { "message": "자산" }, @@ -356,6 +378,9 @@ "message": "$1의 계정 보기", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "지원되지 않는 브라우저입니다..." }, @@ -371,11 +396,30 @@ "buy": { "message": "구매" }, + "buyAsset": { + "message": "$1 구매", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "문페이(MoonPay)로 $1 구매", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "문페이는 비자, 마스터카드, 애플/구글/삼성 페이, 145개국 이상에서 이용 가능한 은행 송금을 비롯해 다양한 결제 방법을 지원합니다. 토큰은 MetaMask 계정에 입금됩니다." + }, + "buyCryptoWithTransak": { + "message": "트랜삭(Transak)으로 $1 구매", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "트랜삭은 100개국 이상에서 신용카드, 직불카드, 애플 페이, 모비퀵, 은행 송금(지역에 따라 지원이 안 될 수 있음)을 지원합니다. $1 입금은 MetaMask 계정으로 직접 처리됩니다.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Wyre로 ETH 구매" + "message": "Wyre로 $1 구매" }, "buyWithWyreDescription": { - "message": "Wyre를 사용하면 체크카드를 이용하여 ETH를 MetaMask 계정에 바로 예치할 수 있습니다." + "message": "Wyre를 사용하면 체크카드를 이용하여 $1 를 MetaMask 계정에 바로 예치할 수 있습니다." }, "bytes": { "message": "바이트" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "거래 취소 또는 속도 향상" }, + "cancelSpeedUpLabel": { + "message": "이 가스비는 원금을 $1합니다.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "거래를 $1하려면 가스비를 최소 10%를 인상해야 네트워크에서 인식될 수 있습니다.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "스왑 취소" + }, "cancellationGasFee": { "message": "가스 수수료 취소" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "이 체인 ID는 현재 $1 네트워크에서 사용됩니다." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "체인 ID $1의 네트워크는 입력한 것과 다른 통화 기호($2)를 사용할 수 있습니다. 확인 후 진행하세요.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "하드웨어 지갑에 연결하려면 Google Chrome에서 MetaMask를 사용해야 합니다." }, @@ -423,6 +482,13 @@ "close": { "message": "닫기" }, + "collectibleAddFailedMessage": { + "message": "소유권 정보가 일치하지 않아 NFT를 추가할 수 없습니다. 올바른 정보를 입력했는지 확인하세요." + }, + "collectibleAddressError": { + "message": "이 토큰은 NFT입니다. $1에 추가하세요", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "확인" }, @@ -506,6 +572,10 @@ "message": "$1 계정은 어떤 사이트에도 연결되어 있지 않습니다.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "$1 스냅이 이 사이트에 연결되어 있습니다. 이 사이트는 위에 나열된 접근 권한이 있습니다.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "연결 중..." }, @@ -536,6 +606,9 @@ "continue": { "message": "계속" }, + "continueToMoonPay": { + "message": "문페이로 계속하기" + }, "continueToTransak": { "message": "Transak으로 계속" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "계약 상호 작용" }, + "convertTokenToNFTDescription": { + "message": "이 자산은 NFT입니다. Metamask는 이제 NFT의 본래 기능에 따라 완전히 지원합니다. 이를 토큰 목록에서 제거하고 NFT로 추가할까요?" + }, + "convertTokenToNFTExistDescription": { + "message": "이 자산이 NFT로 추가되었습니다. 토큰 목록에서 제거할까요?" + }, "copiedExclamation": { "message": "복사 완료!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "이 네트워크에서 사용할 수 없음" }, + "curveHighGasEstimate": { + "message": "공격적 가스비 추정치 그래프" + }, + "curveLowGasEstimate": { + "message": "낮은 가스비 추정치 그래프" + }, + "curveMediumGasEstimate": { + "message": "시장 가스비 추정치 그래프" + }, "custom": { "message": "고급" }, + "customContentSearch": { + "message": "이전에 추가된 네트워크 검색" + }, "customGas": { "message": "가스 맞춤화" }, @@ -633,6 +724,15 @@ "customToken": { "message": "맞춤형 토큰" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "이 네트워크에서는 아직 토큰 감지 기능을 사용할 수 없습니다. 토큰을 직접 가져오고 해당 토큰을 신뢰할 수 있는지 반드시 확인하세요. $1에 대해 알아보기" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "토큰을 직접 가져오기 전에 해당 토큰을 신뢰할 수 있는지 반드시 확인하세요. $1에 대해 알아보세요." + }, + "customerSupport": { + "message": "고객 지원" + }, "dappSuggested": { "message": "추천 사이트" }, @@ -647,6 +747,9 @@ "message": "$1에서 이 가격을 추천했습니다.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "어둡게" + }, "data": { "message": "데이터" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "이 네트워크를 삭제할까요?" }, + "depositCrypto": { + "message": "$1 입금", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "설명" }, "details": { "message": "세부 정보" }, + "directDepositCrypto": { + "message": "$1 직접 입금" + }, + "directDepositCryptoExplainer": { + "message": "이미 $1(이)가 있는 경우 직접 입금하는 것이 새 지갑에 $1(을)를 넣는 가장 빠른 방법입니다." + }, + "disabledGasOptionToolTipMessage": { + "message": "“$1” 유형은 오리지널 가스비를 최소 10% 인상해야 하는 기준에 미치지 못하므로 비활성화되었습니다.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "연결 해제" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "다시 표시 안 함" }, + "downArrow": { + "message": "하강 화살표" + }, "downloadGoogleChrome": { "message": "Google Chrome 다운로드" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "주소 닉네임 편집" }, + "editCancellationGasFeeModalTitle": { + "message": "가스비 취소 편집" + }, "editContact": { "message": "연락처 편집" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "권한 편집" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "가스비 가속 편집" + }, "enableAutoDetect": { "message": " 자동 감지 활성화" }, + "enableEIP1559V2": { + "message": "향상된 가스비 UI 활성화" + }, + "enableEIP1559V2AlertMessage": { + "message": "가스비 견적 산정 방법과 맞춤화 작업을 업데이트했습니다." + }, + "enableEIP1559V2ButtonText": { + "message": "설정에서 향상된 가스비 UI 켜기" + }, + "enableEIP1559V2Description": { + "message": "가스비 견적 산정 방법과 맞춤화 작업을 업데이트했습니다. 새로운 가스 경험을 사용하기 원하시면 이 기능을 켜세요. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "새로운 가스 경험" + }, "enableFromSettings": { "message": " 설정에서 이 기능을 활성화합니다." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "OpenSea의 API를 사용하여 NFT 데이터를 가져옵니다. NFT 자동 감지는 OpenSea의 API에 의존하며 이 API가 꺼져 있으면 사용할 수 없습니다." }, + "enableSmartTransactions": { + "message": "스마트 거래 활성화" + }, "enableToken": { "message": "$1 활성화", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Etherscan에서 보기" }, + "expandExperience": { + "message": "web3 경험 확대" + }, "expandView": { "message": "보기 확장" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "외부 확장" }, - "extraApprovalGas": { - "message": "+$1의 승인 가스", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "실패" }, "failedToFetchChainId": { "message": "체인 ID를 가져올 수 없습니다. RPC URL이 올바른가요?" }, + "failedToFetchTickerSymbolData": { + "message": "현재 티커 기호 확인 데이터를 사용할 수 없습니다. 입력한 기호가 올바른지 확인하세요. 이는 네트워크에 표시되는 전환율에 영향을 미칩니다." + }, "failureMessage": { "message": "문제가 발생했습니다. 작업을 완료할 수 없습니다." }, @@ -1062,6 +1209,26 @@ "message": "발신", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "이 확장 프로그램을 삭제해야 합니다", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "플라스크(Flask)는 개발자가 불안정한 신규 API를 실험하기 위한 것입니다. 개발자나 베타 테스터가 아니면 $1하세요.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "이 확장 프로그램은 안전성이나 안정성을 보장하지 않습니다. 플라스크에서 제공하는 새로운 API는 피싱 공격에 대비한 강화 과정을 거치지 않았습니다. 즉, 플라스크가 필요한 모든 사이트나 스냅은 자산을 훔치려는 악의적 시도일 수 있습니다.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "모든 플라스크의 API는 실험 단계입니다. 따라서 예고 없이 변경, 제거되거나 안정적인 MetaMask로 마이그레이션되지 않고 플라스크에 무기한 남아 있을 수 있습니다. 사용 시 위험은 자기 책임입니다.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "본인은 위험을 감수합니다", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "트위터에서 팔로우하세요" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "이 장치 잊기" }, + "forgotPassword": { + "message": "비밀번호를 잊으셨나요?" + }, "from": { "message": "발신" }, @@ -1078,6 +1248,9 @@ "message": "발신: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "가져올 토큰 목록: $1" + }, "functionApprove": { "message": "기능: 승인" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "낮은, 중간 및 높은 견적을 사용할 수 없습니다." }, + "gasFee": { + "message": "가스비" + }, "gasLimit": { "message": "가스 한도" }, "gasLimitInfoTooltipContent": { "message": "가스 한도는 지불할 가스 단위의 최대 금액입니다." }, + "gasLimitRecommended": { + "message": "권장 가스비 한도는 $1입니다. 가스 한도가 이보다 낮으면 실패할 수 있습니다." + }, "gasLimitTooLow": { "message": "가스 한도는 21000 이상이어야 합니다." }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Goerli 테스트 네트워크" }, + "gotIt": { + "message": "확인했습니다!" + }, "grantedToWithColon": { "message": "부여 대상:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "반갑습니다." }, @@ -1231,6 +1416,12 @@ "hide": { "message": "숨기기" }, + "hideSeedPhrase": { + "message": "시드 구문 숨기기" + }, + "hideToken": { + "message": "토큰 숨기기" + }, "hideTokenPrompt": { "message": "토큰을 숨길까요?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "내 지갑 가져오기" }, + "importNFT": { + "message": "NFT 가져오기" + }, + "importNFTAddressToolTip": { + "message": "예를 들어 OpenSea의 NFT 페이지 세부 정보에는 '계약 주소'라는 파란색 하이퍼링크 값이 있습니다. 이를 클릭하면 Etherscan의 계약 주소로 이동합니다. 해당 페이지의 왼쪽 상단에는 '계약(Contract)'이라고 표시된 아이콘이 있고 오른쪽으로 문자와 숫자로 구성된 긴 문자열이 있어야 합니다. 이것이 바로 NFT를 생성한 계약 주소입니다. 주소 오른쪽의 '복사' 아이콘을 클릭하면 이를 클립보드에 저장할 수 있습니다." + }, + "importNFTPage": { + "message": "NFT 페이지 가져오기" + }, + "importNFTTokenIdToolTip": { + "message": "수집물의 ID는 고유한 식별자이므로 ID가 동일한 NFT는 존재하지 않습니다. 다시 말하지만, OpenSea에서 이 번호는 '세부 정보(Details)'에서 찾아볼 수 있습니다. 이를 기록하거나 클립보드에 복사해 두세요." + }, "importNFTs": { "message": "NFT 가져오기" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "잔액이 부족합니다." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "$2 네트워크의 거래 수수료를 지불할 계정에 $1(이)가 부족합니다. $3 또는 다른 계정에서 입금하세요.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "$2 네트워크의 거래 수수료를 지불할 계정에 $1(이)가 부족합니다. 다른 계좌에서 $1(을)를 입금하세요.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "자금이 부족합니다." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "ETH 네트워크가 아닙니다. 소문자로 설정하세요." }, + "invalidAssetType": { + "message": "이 자산은 NFT이므로 NFT 탭에 있는 NFT 가져오기 페이지에서 다시 추가해야 합니다" + }, "invalidBlockExplorerURL": { "message": "잘못된 블록 탐색기 URL" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "ENS 콘텐츠 해결에 사용할 IPFS CID 게이트웨이의 URL을 입력하세요." }, + "jazzAndBlockies": { + "message": "Jazzicons와 Blockies는 계정을 한눈에 식별할 수 있게 도와주는 두 가지 고유한 아이콘 스타일입니다." + }, + "jazzicons": { + "message": "Jazzicons" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "설정을 시작하죠!" }, + "levelArrow": { + "message": "수평 화살표" + }, "likeToImportTokens": { "message": "이 토큰을 추가할까요?" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "로드 중..." }, + "loadingNFTs": { + "message": "NFT 불러오는 중..." + }, "loadingTokens": { "message": "토큰 로드 중..." }, @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "잠금 시간이 너무 깁니다" }, + "logo": { + "message": "$1 로고", + "description": "$1 is the name of the ticker" + }, "low": { "message": "낮음" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "이더리움 메인넷" }, + "mainnetToken": { + "message": "이 주소는 알려진 이더리움 메인넷 토큰 주소와 일치합니다. 추가하려는 토큰의 계약 주소와 네트워크를 다시 확인하세요." + }, "makeAnotherSwap": { "message": "새 스왑 생성" }, @@ -1515,6 +1748,12 @@ "message": "다른 사람이 이 화면을 보고 있지는 않은지 확인하세요.", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "잘못된 데이터" + }, + "manageSnaps": { + "message": "설치된 스냅(Snap)을 관리합니다" + }, "max": { "message": "최대" }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "NFT가 보이지 않나요?" }, + "missingSetting": { + "message": "설정을 찾으세요?" + }, + "missingSettingRequest": { + "message": "여기에서 요청하세요" + }, "missingToken": { "message": "토큰이 보이지 않나요?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "이름" }, + "needCryptoInWallet": { + "message": "MetaMask로 디앱을 이용하려면 지갑에 $1(이)가 있어야 합니다.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "도움이 필요하신가요? $1에 문의하세요.", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "음수 ETH 양은 전송할 수 없습니다." }, + "network": { + "message": "네트워크:" + }, "networkDetails": { "message": "네트워크 세부 정보" }, + "networkIsBusy": { + "message": "네트워크 사용량이 많습니다. 가스비가 높고 견적의 정확도도 떨어집니다." + }, "networkName": { "message": "네트워크 이름" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "새 계약" }, + "newNFTDetectedMessage": { + "message": "MetaMask가 Opensea에서 자동으로 NFT를 감지하고 지갑에 표시할 수 있게 허용하세요." + }, "newNFTsDetected": { "message": "신규! NFT 감지" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "아직 NFT가 없음" }, + "noSnaps": { + "message": "설치된 스냅이 없습니다" + }, "noThanks": { "message": "괜찮습니다" }, + "noThanksVariant2": { + "message": "아니요, 괜찮습니다." + }, "noTransactions": { "message": "거래가 없습니다." }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "가스 부족" }, + "notifications10ActionText": { + "message": "설정으로 이동하기", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "향상된 토큰 감지 기능을 현재 이더리움 메인넷과 Polygon, BSC, Avalanche 네트워크에서 이용할 수 있습니다. 더 많은 기능이 준비 중입니다!" + }, + "notifications10DescriptionThree": { + "message": "토큰 감지 기능이 기본적으로 켜져 있으며, 설정에서 끌 수 있습니다." + }, + "notifications10DescriptionTwo": { + "message": "토큰은 타사 토큰 목록에서 가져옵니다. 2군데 이상의 목록에 등재된 토큰은 자동으로 감지됩니다." + }, + "notifications10Title": { + "message": "개선된 토큰 감지 기능은 여기서 확인하세요" + }, + "notifications11Description": { + "message": "토큰은 누구나 만들 수 있기에 이름이 중복될 수도 있습니다. 신뢰하지 않거나 취급하지 않은 토큰이 표시될 경우 신뢰하지 않는 것이 안전합니다." + }, + "notifications11Title": { + "message": "사기 및 보안 위험" + }, + "notifications12ActionText": { + "message": "다크모드 활성화" + }, + "notifications12Description": { + "message": "신규 사용자의 경우 시스템 설정에 따라 다크모드가 활성화됩니다. 기존의 사용자는 설정 -> 실험에서 직접 다크 모드를 활성화해야 합니다." + }, + "notifications12Title": { + "message": "다크모드를 원하세요? 이제 다크모드를 사용하세요! 🕶️🦊" + }, "notifications1Description": { "message": "MetaMask 모바일 사용자는 이제 모바일 지갑에서 토큰을 스왑할 수 있습니다. QR 코드를 스캔하여 모바일 앱을 설치하고 스왑을 시작하세요.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 사용자가 거래를 이해하기 쉽게 도와드립니다." }, + "numberOfNewTokensDetected": { + "message": "계정에서 $1개의 새로운 토큰이 발견됨", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "/" }, @@ -1984,6 +2286,9 @@ "message": "전체 화면에서 MetaMask를 열어 WebHID를 통해 Ledger를 연결합니다.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "소스 코드를 확인하세요" + }, "optional": { "message": "옵션" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "이 비밀번호는 이 기기에서만 MetaMask 지갑의 잠금을 해제합니다. MetaMask는 이 비밀번호를 복구할 수 없습니다." }, + "passwordStrength": { + "message": "비밀번호 강도: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "기기가 도난되거나 해킹되는 경우에 대비해 강력한 암호를 설정하면 지갑의 보안을 향상시킬 수 있습니다." + }, "passwordTermsWarning": { "message": "MetaMask가 이 비밀번호를 복구할 수 없음을 이해합니다. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "승인 요청" }, + "permissionRequestCapitalized": { + "message": "권한 요청" + }, + "permission_accessNetwork": { + "message": "인터넷에 액세스합니다.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "$1 스냅에 연결합니다.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "MetaMask에 확인을 표시합니다.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "허용되는 계정의 주소 보기(필수)", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "'$1' 계정과 자산을 통제합니다.", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "기기의 데이터를 저장하고 관리합니다.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "알림을 표시합니다.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "알 수 없는 권한: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "권한" }, "personalAddressDetected": { "message": "개인 주소가 발견되었습니다. 토큰 계약 주소를 입력하세요." }, + "pleaseConfirm": { + "message": "확인하세요" + }, "plusXMore": { "message": "+ 그 외 $1개", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "선호하는 Ledger 연결 유형", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "스왑 준비 중..." + }, "prev": { "message": "이전" }, @@ -2104,6 +2453,12 @@ "queued": { "message": "대기열에 지정됨" }, + "reAddAccounts": { + "message": "다른 계정을 다시 추가" + }, + "reAdded": { + "message": "다시 추가 완료" + }, "readdToken": { "message": "나중에 계정 옵션 메뉴의 '토큰 추가'로 이동하면 이 토큰을 다시 추가할 수 있습니다." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "NFT 제거" }, + "removeSnap": { + "message": "스냅 제거" + }, + "removeSnapConfirmation": { + "message": "$1(을)를 제거할까요?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "이 작업을 하면 스냅과 데이터가 삭제되고 허용된 권한이 취소됩니다." + }, + "replace": { + "message": "대체" + }, "requestsAwaitingAcknowledgement": { "message": "확인 대기 중인 요청" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "계정을 재설정하면 거래 내역이 지워집니다. 계정의 잔액은 변경되지 않으며 비밀 복구 구문을 다시 입력하지 않아도 됩니다." }, + "resetWallet": { + "message": "지갑 초기화" + }, + "resetWalletSubHeader": { + "message": "MetaMask는 사용자의 비밀번호를 보관하지 않습니다. 계정 잠금을 해제하는 데 문제가 있는 경우, 지갑 설정 시 사용한 비밀 복구 구문을 이용하여 지갑을 초기화해야 합니다." + }, + "resetWalletUsingSRP": { + "message": "이 작업을 하면 정리해둔 계정 목록과 함께 현재 지갑과 비밀 복구 구문이 이 기기에서 삭제됩니다. 비밀 복구 구문으로 초기화하면 해당 비밀 복구 구문과 연관된 계정 목록이 표시됩니다. 새 목록에는 잔액이 남아있는 계정이 자동으로 나타납니다. 이전에 생성한 $1도 가능합니다. 가져온 사용자 정의 계정은 $2이어야 하며 계정에 추가한 사용자 정의 토큰도 $3이어야 합니다." + }, + "resetWalletWarning": { + "message": "계속하기 전에 비밀 복구 구문이 정확한지 확인하세요. 이 작업은 취소할 수 없습니다." + }, "restore": { "message": "복구" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "이 구문은 누구와도 공유하지 마세요!" }, + "revealTheSeedPhrase": { + "message": "시드 구문 보기" + }, "rinkeby": { "message": "Rinkeby 테스트 네트워크" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "새 RPC URL" }, + "safeTransferFrom": { + "message": "다음에서 안전하게 송금" + }, "save": { "message": "저장" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "검색 결과" }, + "searchSettings": { + "message": "설정에서 찾기" + }, "searchTokens": { "message": "토큰 검색" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "토큰 보내기" }, + "sendingDisabled": { + "message": "ERC-1155 NFT 자산은 아직 지원되지 않습니다." + }, "sendingNativeAsset": { "message": "$1 보내기", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "설정" }, + "settingsSearchMatchingNotFound": { + "message": "검색 결과가 없습니다." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "보기" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "느림" }, + "smartTransaction": { + "message": "스마트 거래" + }, + "snapAccess": { + "message": "$1 스냅이 접근할 수 있는 대상:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "$1에 $2에서 추가됨", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "스냅 오류: '$1'. 오류 코드: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "스냅 설치" + }, + "snapInstallWarningCheck": { + "message": "이해하셨으면 모두 체크해 주세요." + }, + "snapInstallWarningKeyAccess": { + "message": "'$1' 스냅 이용에 필요한 키 액세스 권한을 부여하고 있습니다. 이 작업은 사용자의 계정과 자산에 '$1' 제어 권한을 부여하며 취소가 불가능합니다. '$1의 신뢰성을 확인한 후에 진행하세요.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "이 스냅이 다음 권한을 요청하고 있습니다." + }, + "snaps": { + "message": "스냅" + }, + "snapsSettingsDescription": { + "message": "스냅 관리" + }, + "snapsStatus": { + "message": "스냅 상태는 활동에 따라 달라집니다." + }, + "snapsToggle": { + "message": "스냅은 활성화된 상태에서만 작동합니다." + }, "somethingWentWrong": { "message": "죄송합니다! 문제가 생겼습니다." }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "지출 한도가 너무 큼" }, + "srpInputNumberOfWords": { + "message": "제 구문은 $1개의 단어로 이루어져 있습니다", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "단어가 24개를 초과하여 붙여넣기에 실패했습니다. 비밀 복구 구문은 24개 이하의 단어로 이루어집니다.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "비밀 복구 구문 전체를 아무 입력란에 붙여넣을 수 있습니다", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "비밀 복구 구문 중에서 이 단어 공개하기/숨기기", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "이 단어는 숨겨져 있습니다", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "이 단어는 공개되어 있습니다", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "안정적" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "상태 로그에 공개 계정 주소와 전송된 거래가 있습니다." }, + "status": { + "message": "상태" + }, "statusConnected": { "message": "연결됨" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "이 구문을 1Password 같은 비밀번호 관리자에 저장하세요." }, + "strong": { + "message": "강함" + }, + "stxAreHere": { + "message": "스마트 거래가 가능합니다!" + }, + "stxBenefit1": { + "message": "거래 비용 최소화하기" + }, + "stxBenefit2": { + "message": "거래 실패 줄이기" + }, + "stxBenefit3": { + "message": "중단된 거래 제거하기" + }, + "stxBenefit4": { + "message": "프런트 러닝 방지" + }, + "stxCancelled": { + "message": "스왑이 실패했을 것입니다" + }, + "stxCancelledDescription": { + "message": "거래가 실패했을 것이기 때문에 불필요한 가스비 지출이 없도록 거래를 취소했습니다." + }, + "stxCancelledSubDescription": { + "message": "스왑을 다시 진행하세요. 다음에도 유사한 위험이 발생한다면 보호해 드리겠습니다." + }, + "stxDescription": { + "message": "MetaMask 스왑이 더욱 스마트해졌습니다! 스마트 거래를 활성화하면 MetaMask가 프로그램을 통해 스왑을 최적화하여 다음을 도울 수 있습니다." + }, + "stxErrorNotEnoughFunds": { + "message": "스마트 거래 자금 부족" + }, + "stxErrorUnavailable": { + "message": "스마트 거래를 잠시 사용할 수 없습니다." + }, + "stxFailure": { + "message": "스왑 실패" + }, + "stxFailureDescription": { + "message": "시장 상황이 갑자기 변하면 실패할 수 있습니다. 문제가 지속되면 $1(으)로 문의하세요.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "대기 중인 거래가 있어 스마트 거래를 잠시 사용할 수 없습니다." + }, + "stxFallbackUnavailable": { + "message": "스마트 거래를 사용할 수 없을 때도 토큰 스왑은 가능합니다." + }, + "stxPendingFinalizing": { + "message": "마무리 중..." + }, + "stxPendingOptimizingGas": { + "message": "가스비 최적화 중..." + }, + "stxPendingPrivatelySubmitting": { + "message": "스왑을 비공개로 제출하는 중..." + }, + "stxSubDescription": { + "message": "*스마트 거래는 비공개로 거래를 제출하기 위해 여러 번 시도할 것입니다. 모든 시도가 실패하면 성공적인 스왑을 위해 거래는 공개적으로 브로드캐스트될 것입니다." + }, + "stxSuccess": { + "message": "스왑 완료!" + }, + "stxSuccessDescription": { + "message": "현재 $1(을)를 사용할 수 있습니다.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "제출하기 전에 거래를 시뮬레이션하면 거래 비용을 줄이고 실패율을 낮출 수 있습니다." + }, + "stxTryRegular": { + "message": "일반 스왑을 시도하세요." + }, + "stxTryingToCancel": { + "message": "거래를 취소하려고 합니다..." + }, + "stxUnavailable": { + "message": "스마트 거래가 비활성화되었습니다." + }, + "stxUnknown": { + "message": "알 수 없는 상태" + }, + "stxUnknownDescription": { + "message": "거래가 성공했지만 어떤 거래인지 확인되지 않습니다. 이 스왑이 처리되는 동안 다른 거래가 제출되었기 때문일 수 있습니다." + }, + "stxUserCancelled": { + "message": "스왑 취소됨" + }, + "stxUserCancelledDescription": { + "message": "거래가 취소되어 가스비를 지불하지 않았습니다." + }, + "stxYouCanOptOut": { + "message": "고급 설정에서 언제든지 옵트아웃할 수 있습니다." + }, "submit": { "message": "제출" }, @@ -2607,6 +3168,10 @@ "message": "이 스왑을 완료하려면 $1개의 추가 $2이(가) 필요합니다.", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "스마트 거래로 이 스왑을 완료하려면 $1(이)가 더 많이 필요합니다.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "$1의 최고 견적", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "$1와(과) 일치하는 토큰이 없습니다.", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "스왑 완료까지 남은 시간:", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "하드웨어 지갑으로 확인합니다." }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "스왑 실패" }, + "swapFetchingQuoteNofN": { + "message": "$2 중 $1 견적 가져오기", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "견적을 가져오는 중" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "초기 동기화 도중 오류가 발생하여 3Box가 비활성화되었습니다." }, + "tenPercentIncreased": { + "message": "10% 인상" + }, "terms": { "message": "이용 약관" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "포시트(수도꼭지) 테스트" }, + "testNetworks": { + "message": "테스트 네트워크" + }, + "theme": { + "message": "테마" + }, + "themeDescription": { + "message": "원하는 MetaMask 테마를 선택하세요." + }, "thisWillCreate": { "message": "이렇게 하면 새 지갑과 비밀 복구 구문이 만들어집니다" }, @@ -2974,6 +3559,9 @@ "token": { "message": "토큰" }, + "tokenAddress": { + "message": "토큰 주소" + }, "tokenAlreadyAdded": { "message": "토큰이 이미 추가되었습니다." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "토큰 소수자리 필요" }, + "tokenDecimalTitle": { + "message": "토큰 십진수:" + }, + "tokenDetails": { + "message": "토큰 상세 정보" + }, + "tokenDetection": { + "message": "토큰 감지" + }, + "tokenDetectionAlertMessage": { + "message": "토큰 감지 기능은 현재 $1. $2에서 사용할 수 있습니다." + }, "tokenDetectionAnnouncement": { "message": "신규! 개선된 토큰 감지는 실험적 기능으로 이더리움 메인넷에서 사용할 수 있습니다. $1" }, + "tokenDetectionToggleDescription": { + "message": "ConsenSys의 토큰 API는 타사의 다양한 목록을 모아 하나의 토큰 목록을 작성합니다. 이 API를 끄면 신규 토큰을 감지해서 지갑에 추가하는 기능은 중단되지만 토큰을 검색해서 가져오는 기능은 계속 사용할 수 있습니다." + }, + "tokenId": { + "message": "토큰 ID" + }, + "tokenList": { + "message": "토큰 목록:" + }, "tokenSymbol": { "message": "토큰 기호" }, @@ -3178,6 +3787,12 @@ "message": "수집 가능한(ERC-721) 토큰 전송은 현재 지원되지 않습니다.", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "이 계약을 확인할 수 없습니다. 믿을 수 있는 주소인지 확인하세요." + }, + "upArrow": { + "message": "상승 화살표" + }, "updatedWithDate": { "message": "$1에 업데이트됨" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "당사는 타사 API를 사용하여 지갑으로 전송된 새 토큰을 감지하고 표시합니다. MetaMask가 해당 서비스에서 데이터를 가져오는 것을 원하지 않으면 이 기능을 사용하지 마세요." }, + "useTokenDetectionPrivacyDesc": { + "message": "계정으로 전송된 토큰이 자동으로 표시되도록 하려면 타사 서버와의 통신을 통해 토큰 이미지를 불러와야 합니다. 이를 위해 타사 서버는 사용자의 IP 주소에 액세스하게 됩니다." + }, "usedByClients": { "message": "다양한 클라이언트에서 사용합니다." }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "지갑 생성 성공" }, + "weak": { + "message": "약함" + }, "web3ShimUsageNotification": { "message": "현재의 웹사이트가 제거된 window.web3 API를 이용하려고 합니다. 이 사이트가 제대로 작동하지 않는 경우, $1을(를) 클릭해 자세히 알아보세요.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1/$2개 보류 중", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "예" + }, "yesLetsTry": { "message": "예, 시도하겠습니다." }, diff --git a/app/_locales/lt/messages.json b/app/_locales/lt/messages.json index f2866345c..68dd08edc 100644 --- a/app/_locales/lt/messages.json +++ b/app/_locales/lt/messages.json @@ -137,10 +137,10 @@ "message": "Jūsų naršyklė neatpažįstama..." }, "buyWithWyre": { - "message": "Pirkti ETH su „Wyre“" + "message": "Pirkti $1 su „Wyre“" }, "buyWithWyreDescription": { - "message": "„Wyre“ leidžia naudotis kreditine kortele norint įnešti ETH tiesiai į jūsų „MetaMask“ paskyrą." + "message": "„Wyre“ leidžia naudotis kreditine kortele norint įnešti $1 tiesiai į jūsų „MetaMask“ paskyrą." }, "bytes": { "message": "Baitai" diff --git a/app/_locales/lv/messages.json b/app/_locales/lv/messages.json index 13233a066..30e65fd68 100644 --- a/app/_locales/lv/messages.json +++ b/app/_locales/lv/messages.json @@ -137,10 +137,10 @@ "message": "Jūsu pārlūkprogramma netiek atbalstīta..." }, "buyWithWyre": { - "message": "Pirkt ETH ar Wyre" + "message": "Pirkt $1 ar Wyre" }, "buyWithWyreDescription": { - "message": "Wyre ļauj noguldīt ETH tieši jūsu MetaMask kontā, izmantojot kredītkarti." + "message": "Wyre ļauj noguldīt $1 tieši jūsu MetaMask kontā, izmantojot kredītkarti." }, "bytes": { "message": "Baiti" diff --git a/app/_locales/ms/messages.json b/app/_locales/ms/messages.json index bc42b1bc2..8923fb8bf 100644 --- a/app/_locales/ms/messages.json +++ b/app/_locales/ms/messages.json @@ -137,10 +137,10 @@ "message": "Pelayar anda tidak disokong..." }, "buyWithWyre": { - "message": "Beli ETH dengan Wyre" + "message": "Beli $1 dengan Wyre" }, "buyWithWyreDescription": { - "message": "Wyre membolehkan anda menggunakan kad kredit untuk mendeposit ETH secara terus ke dalam akaun MetaMask anda." + "message": "Wyre membolehkan anda menggunakan kad kredit untuk mendeposit $1 secara terus ke dalam akaun MetaMask anda." }, "bytes": { "message": "Bait" diff --git a/app/_locales/no/messages.json b/app/_locales/no/messages.json index ceb83e982..8d1cc1eab 100644 --- a/app/_locales/no/messages.json +++ b/app/_locales/no/messages.json @@ -137,10 +137,10 @@ "message": "Nettleseren din støttes ikke ..." }, "buyWithWyre": { - "message": "Kjøp ETH med Wyre" + "message": "Kjøp $1 med Wyre" }, "buyWithWyreDescription": { - "message": "Wyre lar deg bruke et kredittkort for å sette inn ETH rett på MetaMask-kontoen din." + "message": "Wyre lar deg bruke et kredittkort for å sette inn $1 rett på MetaMask-kontoen din." }, "cancel": { "message": "Avbryt" diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index 36da6fd32..a137aed83 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -91,9 +91,6 @@ "affirmAgree": { "message": "Sang-ayon ako" }, - "aggregatorFeeCost": { - "message": "Bayarin sa aggregator network" - }, "alertDisableTooltip": { "message": "Mababago ito sa \"Mga Setting > Mga Alerto\"" }, @@ -141,12 +138,6 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Bayarin sa pag-apruba at aggregator network" - }, - "approvalTxGasCost": { - "message": "Approval Tx Gas Cost" - }, "approve": { "message": "Aprubahan ang limitasyon sa paggastos" }, @@ -237,10 +228,10 @@ "message": "Bumili" }, "buyWithWyre": { - "message": "Bumili ng ETH gamit ang Wyre" + "message": "Bumili ng $1 gamit ang Wyre" }, "buyWithWyreDescription": { - "message": "Binibigyang-daan ka ng Wyre na gumamit ng debit card para mag-deposit ng ETH sa mismong MetaMask account mo." + "message": "Binibigyang-daan ka ng Wyre na gumamit ng debit card para mag-deposit ng $1 sa mismong MetaMask account mo." }, "bytes": { "message": "Bytes" @@ -674,10 +665,6 @@ "externalExtension": { "message": "External Extension" }, - "extraApprovalGas": { - "message": "+$1 na pag-apruba sa gas", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Hindi matagumpay" }, diff --git a/app/_locales/pl/messages.json b/app/_locales/pl/messages.json index d8637876a..0025ba5fa 100644 --- a/app/_locales/pl/messages.json +++ b/app/_locales/pl/messages.json @@ -137,10 +137,10 @@ "message": "Twoja przeglądarka nie jest obsługiwana..." }, "buyWithWyre": { - "message": "Kup ETH poprzez Wyre" + "message": "Kup $1 poprzez Wyre" }, "buyWithWyreDescription": { - "message": "Dzięki Wyre możesz użyć karty kredytowej, aby wpłacić ETH bezpośrednio na swoje konto MetaMask." + "message": "Dzięki Wyre możesz użyć karty kredytowej, aby wpłacić $1 bezpośrednio na swoje konto MetaMask." }, "bytes": { "message": "Bajty" diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index 2bb6d9ad1..9e956bd81 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -1,16 +1,235 @@ { + "QRHardwareInvalidTransactionTitle": { + "message": "Erro" + }, + "QRHardwareMismatchedSignId": { + "message": "Os dados da transação são inconsistentes. Verifique os detalhes da transação." + }, + "QRHardwarePubkeyAccountOutOfRange": { + "message": "Não há mais contas. Se você gostaria de acessar outra conta não listada abaixo, reconecte sua carteira de hardware e selecione-a." + }, + "QRHardwareScanInstructions": { + "message": "Posicione o QR code na frente da sua câmera. A tela está desfocada, mas isso não afetará a leitura." + }, + "QRHardwareSignRequestCancel": { + "message": "Rejeitar" + }, + "QRHardwareSignRequestDescription": { + "message": "Depois de ter assinado com a sua carteira, clique em \"Receber assinatura\"" + }, + "QRHardwareSignRequestGetSignature": { + "message": "Receber assinatura" + }, + "QRHardwareSignRequestSubtitle": { + "message": "Escaneie o QR code com a sua carteira" + }, + "QRHardwareSignRequestTitle": { + "message": "Solicitar assinatura" + }, + "QRHardwareUnknownQRCodeTitle": { + "message": "Erro" + }, + "QRHardwareUnknownWalletQRCode": { + "message": "QR code inválido. Escaneie o QR code de sincronização da carteira de hardware." + }, + "QRHardwareWalletImporterTitle": { + "message": "Escanear QR code" + }, + "QRHardwareWalletSteps1Description": { + "message": "Conecte uma carteira de hardware com lacuna de ar que se comunique através de QR codes. As carteiras de hardware com lacuna de ar aceitas oficialmente incluem:" + }, + "QRHardwareWalletSteps1Title": { + "message": "Carteira de hardware baseada em QR code" + }, + "QRHardwareWalletSteps2Description": { + "message": "AirGap Vault e Ngrave (em breve)" + }, + "about": { + "message": "Sobre" + }, + "acceleratingATransaction": { + "message": "* Acelerar uma transação usando um preço de gás mais alto aumenta as chances de agilizar o processamento pela rede, mas isso nem sempre é garantido." + }, + "acceptTermsOfUse": { + "message": "Eu li e concordo com os $1", + "description": "$1 is the `terms` message" + }, + "accessAndSpendNotice": { + "message": "$1 pode acessar e gastar até esse valor máximo", + "description": "$1 is the url of the site requesting ability to spend" + }, + "accessAndSpendNoticeNFT": { + "message": "$1 pode(m) acessar e usar esse ativo", + "description": "$1 is the url of the site requesting ability to spend" + }, + "accessingYourCamera": { + "message": "Acessando sua câmera..." + }, "account": { "message": "Conta" }, "accountDetails": { "message": "Detalhes da Conta" }, + "accountIdenticon": { + "message": "Identicon da conta" + }, "accountName": { "message": "Nome da Conta" }, + "accountNameDuplicate": { + "message": "Esse nome de conta já existe", + "description": "This is an error message shown when the user enters a new account name that matches an existing account name" + }, + "accountOptions": { + "message": "Opções da conta" + }, + "accountSelectionRequired": { + "message": "Você precisa selecionar uma conta!" + }, + "active": { + "message": "Ativo" + }, + "activity": { + "message": "Atividade" + }, + "activityLog": { + "message": "Registro de atividades" + }, + "add": { + "message": "Adicionar" + }, + "addANetwork": { + "message": "Adicionar uma rede" + }, + "addANetworkManually": { + "message": "Adicionar uma rede manualmente" + }, + "addANickname": { + "message": "Adicionar um apelido" + }, + "addAcquiredTokens": { + "message": "Adicione os tokens que você adquiriu usando a MetaMask" + }, + "addAlias": { + "message": "Adicionar pseudônimo" + }, + "addContact": { + "message": "Adicionar contato" + }, + "addCustomToken": { + "message": "Adicionar token personalizado" + }, + "addCustomTokenByContractAddress": { + "message": "Não consegue encontrar um token? Cole o endereço para adicionar manualmente qualquer token. Os endereços de contrato do token se encontram em $1.", + "description": "$1 is a blockchain explorer for a specific network, e.g. Etherscan for Ethereum" + }, + "addEthereumChainConfirmationDescription": { + "message": "Isso permitirá que essa rede seja usada dentro da MetaMask." + }, + "addEthereumChainConfirmationRisks": { + "message": "A MetaMask não verifica redes personalizadas." + }, + "addEthereumChainConfirmationRisksLearnMore": { + "message": "Saiba mais sobre $1.", + "description": "$1 is a link with text that is provided by the 'addEthereumChainConfirmationRisksLearnMoreLink' key" + }, + "addEthereumChainConfirmationRisksLearnMoreLink": { + "message": "golpes e riscos de segurança nas redes", + "description": "Link text for the 'addEthereumChainConfirmationRisksLearnMore' translation key" + }, + "addEthereumChainConfirmationTitle": { + "message": "Permitir que este site adicione uma rede?" + }, + "addFriendsAndAddresses": { + "message": "Adicionar amigos e endereços confiáveis" + }, + "addFromAListOfPopularNetworks": { + "message": "Adicione a partir de uma lista de redes populares ou adicione uma rede manualmente. Interaja apenas com entidades de sua confiança." + }, + "addMemo": { + "message": "Adicionar observação" + }, + "addNetwork": { + "message": "Adicionar rede" + }, + "addSuggestedTokens": { + "message": "Adicionar tokens sugeridos" + }, "addToken": { "message": "Adicionar Token" }, + "address": { + "message": "Endereço" + }, + "addressBookIcon": { + "message": "Ícone da agenda de endereços" + }, + "advanced": { + "message": "Avançado" + }, + "advancedBaseGasFeeToolTip": { + "message": "Quando a sua transação for incluída no bloco, qualquer diferença entre a sua taxa de base máxima e a taxa de base real será reembolsada. O cálculo do valor total é feito da seguinte forma: taxa de base máxima (em GWEI) * limite de gás." + }, + "advancedGasFeeDefaultOptIn": { + "message": "Salvar estes $1 como meu padrão para \"Avançado\"" + }, + "advancedGasFeeDefaultOptOut": { + "message": "Sempre utilizar esses valores e a configuração avançada por padrão." + }, + "advancedGasFeeModalTitle": { + "message": "Taxa de gás avançada" + }, + "advancedGasPriceTitle": { + "message": "Preço do Gas" + }, + "advancedOptions": { + "message": "Opções avançadas" + }, + "advancedPriorityFeeToolTip": { + "message": "A taxa de prioridade (ou seja, \"gorjeta do minerador\") vai diretamente para os mineradores e os incentiva a priorizar a sua transação." + }, + "affirmAgree": { + "message": "Concordo" + }, + "airgapVault": { + "message": "AirGap Vault" + }, + "airgapVaultTutorial": { + "message": " (Tutoriais)" + }, + "alertDisableTooltip": { + "message": "Isso pode ser alterado em \"Configurações > Alertas\"" + }, + "alertSettingsUnconnectedAccount": { + "message": "Navegando em um site com uma conta não conectada selecionada" + }, + "alertSettingsUnconnectedAccountDescription": { + "message": "Esse alerta é exibido no pop-up quando você estiver navegando em um site conectado da web3, mas a conta atualmente selecionada não estiver conectada." + }, + "alertSettingsWeb3ShimUsage": { + "message": "Quando um site tenta usar a API window.web3 removida" + }, + "alertSettingsWeb3ShimUsageDescription": { + "message": "Esse alerta é exibido no pop-up quando você estiver navegando em um site que tente usar a API window.web3 removida, e que consequentemente possa apresentar problemas." + }, + "alerts": { + "message": "Alertas" + }, + "allowExternalExtensionTo": { + "message": "Permitir que essa extensão externa:" + }, + "allowSpendToken": { + "message": "Você concede acesso aos seus $1?", + "description": "$1 is the symbol of the token that are requesting to spend" + }, + "allowThisSiteTo": { + "message": "Permitir que esse site:" + }, + "allowWithdrawAndSpend": { + "message": "Permitir que $1 saque e gaste até o seguinte valor:", + "description": "The url of the site that requested permission to 'withdraw and spend'" + }, "amount": { "message": "Valor" }, @@ -33,78 +252,943 @@ "approve": { "message": "Aprovar" }, + "approveAndInstall": { + "message": "Aprovar e instalar" + }, + "approveButtonText": { + "message": "Aprovar" + }, + "approveSpendLimit": { + "message": "Aprovar limite de gastos de $1", + "description": "The token symbol that is being approved" + }, + "approved": { + "message": "Aprovado" + }, + "approvedAmountWithColon": { + "message": "Valor aprovado:" + }, + "approvedAsset": { + "message": "Ativo aprovado" + }, + "areYouDeveloper": { + "message": "Você é desenvolvedor?" + }, + "areYouSure": { + "message": "Tem certeza?" + }, + "asset": { + "message": "Ativo" + }, + "assetOptions": { + "message": "Opções do ativo" + }, + "assets": { + "message": "Ativos" + }, + "attemptToCancel": { + "message": "Tentar cancelar?" + }, + "attemptToCancelDescription": { + "message": "Enviar essa tentativa não garante que sua transação original será cancelada. Caso a tentativa de cancelamento seja bem-sucedida, será cobrada a taxa de transação acima." + }, "attemptingConnect": { "message": "A tentar ligar à blockchain." }, "attributions": { "message": "Atribuições" }, + "authorizedPermissions": { + "message": "Você concedeu as seguintes permissões" + }, + "autoLockTimeLimit": { + "message": "Timer com bloqueio automático (minutos)" + }, + "autoLockTimeLimitDescription": { + "message": "Defina o tempo ocioso, em minutos, antes de a MetaMask ser bloqueada." + }, + "average": { + "message": "Média" + }, "back": { "message": "Voltar" }, + "backToAll": { + "message": "Voltar para todos" + }, + "backupApprovalInfo": { + "message": "Esse código secreto é obrigatório para recuperar sua carteira caso você perca seu dispositivo, esqueça sua senha, precise reinstalar a MetaMask ou queira acessar sua carteira em outro dispositivo." + }, + "backupApprovalNotice": { + "message": "Faça backup da Frase de Recuperação Secreta para manter sua carteira e seus fundos em segurança." + }, + "backupNow": { + "message": "Fazer backup agora" + }, "balance": { "message": "Saldo:" }, + "balanceOutdated": { + "message": "O saldo pode estar desatualizado" + }, + "baseFee": { + "message": "Taxa de base" + }, + "basic": { + "message": "Básico" + }, + "betaMetamaskDescription": { + "message": "Com a confiança de milhões de usuários, a MetaMask é uma carteira segura que torna o mundo da Web3 acessível a todos." + }, + "betaMetamaskDescriptionExplanation": { + "message": "Use esta versão para testar funcionalidades futuras antes de serem lançadas. Seu uso e feedback nos ajuda a desenvolver a melhor versão possível da MetaMask. O seu uso da MetaMask Beta está sujeito aos nossos $1 padrão, bem como aos nossos $2. Por ser uma versão Beta, pode haver um risco maior de bugs. Ao prosseguir, você aceita e reconhece esses riscos, bem como aqueles encontrados em nossos Termos e Termos da Versão Beta.", + "description": "$1 represents localization item betaMetamaskDescriptionExplanationTermsLinkText. $2 represents localization item betaMetamaskDescriptionExplanationBetaTermsLinkText" + }, + "betaMetamaskDescriptionExplanationBetaTermsLinkText": { + "message": "Termos Suplementares da Versão Beta" + }, + "betaMetamaskDescriptionExplanationTermsLinkText": { + "message": "Termos" + }, + "betaMetamaskVersion": { + "message": "Versão Beta da MetaMask" + }, + "betaWelcome": { + "message": "Bem-vindo à MetaMask Beta" + }, + "blockExplorerAccountAction": { + "message": "Conta", + "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Account in Explorer" + }, + "blockExplorerAssetAction": { + "message": "Ativo", + "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Asset in Explorer" + }, + "blockExplorerSwapAction": { + "message": "Swap", + "description": "This is used with viewOnEtherscan e.g View Swap on Etherscan" + }, + "blockExplorerUrl": { + "message": "URL do explorador de blocos" + }, + "blockExplorerUrlDefinition": { + "message": "O URL usado como Block Explorer para essa rede." + }, + "blockExplorerView": { + "message": "Exibir conta em $1", + "description": "$1 replaced by URL for custom block explorer" + }, + "blockies": { + "message": "Blockies" + }, + "browserNotSupported": { + "message": "Seu navegador não é compatível..." + }, + "buildContactList": { + "message": "Crie sua lista de contatos" + }, + "builtAroundTheWorld": { + "message": "A MetaMask é concebida e desenvolvida em todo o mundo." + }, + "busy": { + "message": "Ocupado" + }, + "buy": { + "message": "Comprar" + }, + "buyAsset": { + "message": "Comprar $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Compre $1 com o MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "O MoonPay aceita formas de pagamento populares, incluindo Visa, Mastercard, Apple Pay, Google Pay, Samsung Pay e transferências bancárias em mais de 145 países. Os tokens são depositados na sua conta da MetaMask." + }, + "buyCryptoWithTransak": { + "message": "Comprar $1 com Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "O Transak aceita cartões de crédito, cartões de débito, Apple Pay, MobiKwik e transferências bancárias (dependendo da localização) em mais de 100 países. $1 deposita diretamente na sua conta da MetaMask.", + "description": "$1 represents the crypto symbol to be purchased" + }, + "buyWithWyre": { + "message": "Comprar $1 com Wyre" + }, + "buyWithWyreDescription": { + "message": "Com o Wyre, você pode usar um cartão de débito para depositar $1 diretamente na sua conta da MetaMask." + }, + "bytes": { + "message": "Bytes" + }, + "canToggleInSettings": { + "message": "Você pode reabilitar essa notificação em Configurações -> Alertas." + }, "cancel": { "message": "Cancelar" }, + "cancelEdit": { + "message": "Cancelar edição" + }, + "cancelPopoverTitle": { + "message": "Cancelar transação" + }, + "cancelSpeedUp": { + "message": "cancelar ou acelerar uma transação." + }, + "cancelSpeedUpLabel": { + "message": "Essa taxa de gás vai $1 a original.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Para $1 uma transação, a taxa de gás deve ser aumentada em pelo menos 10% para que seja reconhecida pela rede.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Cancelar swap" + }, + "cancellationGasFee": { + "message": "Taxa de gás por cancelamento" + }, + "cancelled": { + "message": "Cancelada" + }, + "chainId": { + "message": "ID da cadeia" + }, + "chainIdDefinition": { + "message": "O ID da cadeia usado para assinar transações para essa rede." + }, + "chainIdExistsErrorMsg": { + "message": "Esse ID da cadeia é usado pela rede $1." + }, + "chainListReturnedDifferentTickerSymbol": { + "message": "A rede com ID de cadeia $1 pode usar um símbolo de moeda ($2) diferente do que você inseriu. Por favor, verifique antes de continuar.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, + "chromeRequiredForHardwareWallets": { + "message": "Você precisa usar a MetaMask no Google Chrome para se conectar com a sua carteira de hardware." + }, + "clickToConnectLedgerViaWebHID": { + "message": "Clique aqui para conectar seu Ledger por meio do WebHID", + "description": "Text that can be clicked to open a browser popup for connecting the ledger device via webhid" + }, + "clickToRevealSeed": { + "message": "Clique aqui para revelar palavras secretas" + }, + "close": { + "message": "Fechar" + }, + "collectibleAddFailedMessage": { + "message": "O NFT não pôde ser adicionado, pois os dados de propriedade não coincidem. Certifique-se de ter inserido as informações corretas." + }, + "collectibleAddressError": { + "message": "Esse token é um NFT. Adicione-o na $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Confirmar" }, "confirmPassword": { "message": "Confirmar Palavra-passe" }, + "confirmRecoveryPhrase": { + "message": "Confirmar Frase Secreta de Recuperação" + }, + "confirmSecretBackupPhrase": { + "message": "Confirme sua Frase de Recuperação Secreta" + }, + "confirmed": { + "message": "Confirmada" + }, + "confusableUnicode": { + "message": "'$1' é similar a '$2'." + }, + "confusableZeroWidthUnicode": { + "message": "Foi encontrado um caractere de tamanho zero." + }, + "confusingEnsDomain": { + "message": "Detectamos um caractere ambíguo no nome ENS. Verifique o nome ENS para evitar um possível golpe." + }, + "congratulations": { + "message": "Parabéns" + }, + "connect": { + "message": "Conectar" + }, + "connectAccountOrCreate": { + "message": "Conectar conta ou criar nova" + }, + "connectHardwareWallet": { + "message": "Conectar carteira de hardware" + }, + "connectManually": { + "message": "Conectar manualmente ao site atual" + }, + "connectTo": { + "message": "Conectar a $1", + "description": "$1 is the name/origin of a web3 site/application that the user can connect to metamask" + }, + "connectToAll": { + "message": "Conecte-se a todas as suas $1", + "description": "$1 will be replaced by the translation of connectToAllAccounts" + }, + "connectToAllAccounts": { + "message": "contas", + "description": "will replace $1 in connectToAll, completing the sentence 'connect to all of your accounts', will be text that shows list of accounts on hover" + }, + "connectToMultiple": { + "message": "Conecte-se a $1", + "description": "$1 will be replaced by the translation of connectToMultipleNumberOfAccounts" + }, + "connectToMultipleNumberOfAccounts": { + "message": "$1 contas", + "description": "$1 is the number of accounts to which the web3 site/application is asking to connect; this will substitute $1 in connectToMultiple" + }, + "connectWithMetaMask": { + "message": "Conectar-se com a MetaMask" + }, + "connectedAccountsDescriptionPlural": { + "message": "Você tem $1 contas conectadas a este site.", + "description": "$1 is the number of accounts" + }, + "connectedAccountsDescriptionSingular": { + "message": "Você tem 1 conta conectada a este site." + }, + "connectedAccountsEmptyDescription": { + "message": "A MetaMask não está conectada a esse site. Para conectar-se a um site da web3, encontre e clique no botão \"conectar\"." + }, + "connectedSites": { + "message": "Sites conectados" + }, + "connectedSitesDescription": { + "message": "$1 está conectada a esses sites. Eles podem visualizar o endereço da sua conta.", + "description": "$1 is the account name" + }, + "connectedSitesEmptyDescription": { + "message": "$1 não está conectada a nenhum site.", + "description": "$1 is the account name" + }, + "connectedSnapSites": { + "message": "O snap $1 está conectado a estes sites. Eles têm acesso às permissões listadas acima.", + "description": "$1 represents the name of the snap" + }, + "connecting": { + "message": "Conectando..." + }, + "connectingTo": { + "message": "Conectando a $1" + }, + "connectingToGoerli": { + "message": "Conectando à rede de testes Goerli" + }, + "connectingToKovan": { + "message": "Conectando à rede de testes Kovan" + }, + "connectingToMainnet": { + "message": "Conectando à mainnet do Ethereum" + }, + "connectingToRinkeby": { + "message": "Conectando à rede de testes Rinkeby" + }, + "connectingToRopsten": { + "message": "Conectando à rede de testes Ropsten" + }, + "contactUs": { + "message": "Fale conosco" + }, + "contacts": { + "message": "Contatos" + }, + "continue": { + "message": "Continuar" + }, + "continueToMoonPay": { + "message": "Continuar para o MoonPay" + }, + "continueToTransak": { + "message": "Continuar para Transak" + }, + "continueToWyre": { + "message": "Continuar para o Wyre" + }, + "contract": { + "message": "Contrato" + }, + "contractAddress": { + "message": "Endereço do contrato" + }, + "contractAddressError": { + "message": "Você está enviando tokens ao endereço de contrato do token. Isso pode resultar na perda desses tokens." + }, "contractDeployment": { "message": "Distribuição do Contrato" }, + "contractInteraction": { + "message": "Interação com contrato" + }, + "convertTokenToNFTDescription": { + "message": "Detectamos que esse ativo é um NFT. A Metamask agora oferece suporte nativo a NFTs. Gostaria de removê-lo da sua lista de tokens e adicioná-lo como NFT?" + }, + "convertTokenToNFTExistDescription": { + "message": "Detectamos que esse ativo foi adicionado como NFT. Deseja removê-lo da sua lista de tokens?" + }, "copiedExclamation": { "message": "Copiado!" }, + "copyAddress": { + "message": "Copiar endereço para a área de transferência" + }, "copyPrivateKey": { "message": "Esta é a sua chave privada (carregue para copiar)" }, + "copyRawTransactionData": { + "message": "Copiar dados brutos da transação" + }, "copyToClipboard": { "message": "Copiar para o clipboard" }, + "copyTransactionId": { + "message": "Copiar ID da transação" + }, "create": { "message": "Criar" }, + "createAWallet": { + "message": "Criar uma carteira" + }, "createAccount": { "message": "Criar Conta" }, + "createNewWallet": { + "message": "Criar uma nova carteira" + }, + "createPassword": { + "message": "Criar senha" + }, + "currencyConversion": { + "message": "Conversão de moeda" + }, + "currencySymbol": { + "message": "Símbolo da moeda" + }, + "currencySymbolDefinition": { + "message": "O símbolo do ticker exibido para a moeda dessa rede." + }, + "currentAccountNotConnected": { + "message": "Sua conta atual não está conectada" + }, + "currentExtension": { + "message": "Página atual da extensão" + }, + "currentLanguage": { + "message": "Idioma atual" + }, + "currentTitle": { + "message": "Atual:" + }, + "currentlyUnavailable": { + "message": "Indisponível nessa rede" + }, + "curveHighGasEstimate": { + "message": "Gráfico de estimativa agressiva de gás" + }, + "curveLowGasEstimate": { + "message": "Gráfico de estimativa reduzida de gás" + }, + "curveMediumGasEstimate": { + "message": "Gráfico de estimativa de gás do mercado" + }, + "custom": { + "message": "Avançado" + }, + "customContentSearch": { + "message": "Buscar uma rede previamente adicionada" + }, "customGas": { "message": "Customizar Gas" }, + "customGasSettingToolTipMessage": { + "message": "Use $1 para personalizar o preço do gás. Isso pode parecer confuso se você não estiver familiarizado. Interaja por sua conta e risco.", + "description": "$1 is key 'advanced' (text: 'Advanced') separated here so that it can be passed in with bold fontweight" + }, + "customGasSubTitle": { + "message": "Aumentar a taxa pode diminuir o tempo de processamento, mas isso não é garantido." + }, + "customSpendLimit": { + "message": "Limite de gastos personalizado" + }, + "customToken": { + "message": "Token personalizado" + }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "A detecção de tokens ainda não está disponível nesta rede. Por favor, importe o token manualmente e certifique-se de que ele é confiável. Saiba mais sobre $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Antes de importar um token manualmente, certifique-se de que ele é confiável. Saiba mais sobre $1." + }, + "customerSupport": { + "message": "suporte ao cliente" + }, + "dappSuggested": { + "message": "Site sugerido" + }, + "dappSuggestedGasSettingToolTipMessage": { + "message": "$1 sugeriu esse preço.", + "description": "$1 is url for the dapp that has suggested gas settings" + }, + "dappSuggestedShortLabel": { + "message": "Site" + }, + "dappSuggestedTooltip": { + "message": "$1 recomendou esse preço.", + "description": "$1 represents the Dapp's origin" + }, + "darkTheme": { + "message": "Escuro" + }, + "data": { + "message": "Dados" + }, + "dataBackupFoundInfo": { + "message": "Foi feito o backup de alguns dos dados da sua conta durante uma instalação anterior da MetaMask. Isso pode incluir configurações, contatos e tokens. Gostaria de restaurar esses dados agora?" + }, + "dataHex": { + "message": "Hex" + }, "decimal": { "message": "Precisão em Decimais" }, "decimalsMustZerotoTen": { "message": "Decimais devem ser no mínimo 0 e não passar de 36." }, + "decrypt": { + "message": "Descriptografar" + }, + "decryptCopy": { + "message": "Copiar mensagem criptografada" + }, + "decryptInlineError": { + "message": "Essa mensagem não pode ser descriptografada devido ao seguinte erro: $1", + "description": "$1 is error message" + }, + "decryptMessageNotice": { + "message": "$1 gostaria de ler essa mensagem para concluir sua ação", + "description": "$1 is the web3 site name" + }, + "decryptMetamask": { + "message": "Descriptografar mensagem" + }, + "decryptRequest": { + "message": "Solicitação de descriptografia" + }, + "delete": { + "message": "Excluir" + }, + "deleteAccount": { + "message": "Excluir conta" + }, + "deleteNetwork": { + "message": "Excluir rede?" + }, + "deleteNetworkDescription": { + "message": "Quer mesmo excluir essa rede?" + }, + "depositCrypto": { + "message": "Depositar $1", + "description": "$1 represents the cypto symbol to be purchased" + }, + "description": { + "message": "Descrição" + }, "details": { "message": "Detalhes" }, + "directDepositCrypto": { + "message": "Depositar $1 diretamente" + }, + "directDepositCryptoExplainer": { + "message": "Se já tiver alguns $1, a forma mais rápida de colocar $1 em sua nova carteira é por depósito direto." + }, + "disabledGasOptionToolTipMessage": { + "message": "“$1” está desativado porque não satisfaz o aumento mínimo de 10% em relação à taxa de gás original.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, + "disconnect": { + "message": "Desconectar" + }, + "disconnectAllAccounts": { + "message": "Desconectar todas as contas" + }, + "disconnectAllAccountsConfirmationDescription": { + "message": "Quer mesmo desconectar? Você pode perder a funcionalidade do site." + }, + "disconnectPrompt": { + "message": "Desconectar $1" + }, + "disconnectThisAccount": { + "message": "Desconectar esta conta" + }, + "dismiss": { + "message": "Descartar" + }, + "dismissReminderDescriptionField": { + "message": "Ative isso para descartar a mensagem de lembrete de backup da Frase de Recuperação Secreta. Recomendamos enfaticamente que você faça o backup da sua Frase de Recuperação Secreta para evitar a perda de fundos" + }, + "dismissReminderField": { + "message": "Descartar o lembrete de backup da Frase de Recuperação Secreta" + }, + "domain": { + "message": "Domínio" + }, "done": { "message": "Finalizado" }, + "dontShowThisAgain": { + "message": "Não mostrar isso novamente" + }, + "downArrow": { + "message": "seta para baixo" + }, + "downloadGoogleChrome": { + "message": "Baixar o Google Chrome" + }, + "downloadSecretBackup": { + "message": "Baixe essa Frase de Recuperação Secreta e mantenha-a guardada em segurança num disco rígido externo ou mídia de armazenamento criptografada." + }, "downloadStateLogs": { "message": "Descarregar Registos de Estado" }, + "dropped": { + "message": "Abandonada" + }, "edit": { "message": "Editar" }, + "editANickname": { + "message": "Editar apelido" + }, + "editAddressNickname": { + "message": "Editar apelido do endereço" + }, + "editCancellationGasFeeModalTitle": { + "message": "Editar taxa de gás por cancelamento" + }, + "editContact": { + "message": "Editar contato" + }, + "editGasEducationButtonText": { + "message": "Como eu escolho?" + }, + "editGasEducationHighExplanation": { + "message": "Essa é a melhor opção para transações suscetíveis ao tempo (como swaps), pois aumenta a probabilidade de sucesso da transação. Se um swap demorar demais para ser processado, ele pode falhar e resultar na perda de parte da taxa de Gas." + }, + "editGasEducationLowExplanation": { + "message": "Uma taxa de gás mais baixa só deve ser usada quando o tempo de processamento é menos importante. Taxas reduzidas dificultam a previsão de quando (ou se) a sua transação será bem-sucedida." + }, + "editGasEducationMediumExplanation": { + "message": "Uma taxa de Gas média é boa para envios, retiradas e outras transações não suscetíveis ao tempo. Essas condições quase sempre resultarão em uma transação de sucesso." + }, + "editGasEducationModalIntro": { + "message": "Selecionar a taxa de Gas correta depende do tipo de transação e do quanto ela é importante para você." + }, + "editGasEducationModalTitle": { + "message": "Como escolher?" + }, + "editGasFeeModalTitle": { + "message": "Editar taxa de Gas" + }, + "editGasHigh": { + "message": "Alta" + }, + "editGasLimitOutOfBounds": { + "message": "O limite de gás deve ser de pelo menos $1" + }, + "editGasLimitOutOfBoundsV2": { + "message": "O limite de gás deve ser superior a $1 e inferior a $2", + "description": "$1 is the minimum limit for gas and $2 is the maximum limit" + }, + "editGasLimitTooltip": { + "message": "O limite de gás são as unidades máximas de gás que você está disposto a utilizar. Unidades de gás são um multiplicador para “Taxa de prioridade máxima” e “Taxa máxima”." + }, + "editGasLow": { + "message": "Baixa" + }, + "editGasMaxBaseFeeGWEIImbalance": { + "message": "A taxa de base máxima não pode ser inferior à taxa de prioridade" + }, + "editGasMaxBaseFeeHigh": { + "message": "A taxa de base máxima está mais elevada que o necessário" + }, + "editGasMaxBaseFeeLow": { + "message": "A taxa de base máxima está baixa para as condições atuais da rede" + }, + "editGasMaxFeeHigh": { + "message": "A taxa máxima está mais elevada que o necessário" + }, + "editGasMaxFeeLow": { + "message": "A taxa máxima está muito baixa para as condições da rede" + }, + "editGasMaxFeePriorityImbalance": { + "message": "A taxa máxima não pode ser inferior à taxa de prioridade máxima" + }, + "editGasMaxFeeTooltip": { + "message": "A taxa máxima é o valor máximo que você pagará (taxa base + taxa de prioridade)." + }, + "editGasMaxPriorityFeeBelowMinimum": { + "message": "A taxa de prioridade máxima deve ser superior a 0 GWEI" + }, + "editGasMaxPriorityFeeBelowMinimumV2": { + "message": "A taxa de prioridade deve ser superior a 0." + }, + "editGasMaxPriorityFeeHigh": { + "message": "A taxa de prioridade máxima está mais alta que o necessário. Talvez você pague mais que o necessário." + }, + "editGasMaxPriorityFeeHighV2": { + "message": "A taxa de prioridade está mais alta que o necessário. Talvez você pague mais que o necessário" + }, + "editGasMaxPriorityFeeLow": { + "message": "A taxa de prioridade máxima está baixa para as condições atuais da rede" + }, + "editGasMaxPriorityFeeLowV2": { + "message": "A taxa de prioridade está baixa para as condições atuais da rede" + }, + "editGasMaxPriorityFeeTooltip": { + "message": "A taxa máxima de prioridade (também conhecida como \"gorjeta do minerador\") vai diretamente para os mineradores e os incentiva a priorizar sua transação. Na maioria dos casos, você paga o valor máximo definido" + }, + "editGasMedium": { + "message": "Média" + }, + "editGasPriceTooLow": { + "message": "O preço do gás deve ser superior a 0" + }, + "editGasPriceTooltip": { + "message": "Essa rede requer um campo de \"Preço do gás\" ao enviar uma transação. O preço do gás é o valor pago por unidade de gás." + }, + "editGasSubTextAmountLabel": { + "message": "Valor máximo:", + "description": "This is meant to be used as the $1 substitution editGasSubTextAmount" + }, + "editGasSubTextFeeLabel": { + "message": "Taxa máxima:" + }, + "editGasTitle": { + "message": "Editar prioridade" + }, + "editGasTooLow": { + "message": "Tempo de processamento desconhecido" + }, + "editGasTooLowTooltip": { + "message": "Sua taxa máxima ou taxa de prioridade máxima pode estar baixa para as condições atuais do mercado. Não sabemos quando (ou se) a sua transação será processada. " + }, + "editGasTooLowWarningTooltip": { + "message": "Isso reduz sua taxa máxima, mas, se o tráfego na rede aumentar, sua transação pode ser postergada ou falhar." + }, + "editNonceField": { + "message": "Editar nonce" + }, + "editNonceMessage": { + "message": "Esse é um recurso avançado; use com cautela." + }, + "editPermission": { + "message": "Editar permissão" + }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Editar taxa de gás para aceleração" + }, + "enableAutoDetect": { + "message": " Ativar detecção automática" + }, + "enableEIP1559V2": { + "message": "Ativar IU aprimorada para taxa de gás" + }, + "enableEIP1559V2AlertMessage": { + "message": "Atualizamos o funcionamento da estimativa e personalização da taxa de gás." + }, + "enableEIP1559V2ButtonText": { + "message": "Ative a IU aprimorada para taxa de gás nas configurações" + }, + "enableEIP1559V2Description": { + "message": "Atualizamos o funcionamento da estimativa e personalização de gás. Ative se quiser desfrutar a nova experiência de gás. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Nova experiência de gás" + }, + "enableFromSettings": { + "message": " Habilite-a nas configurações." + }, + "enableOpenSeaAPI": { + "message": "Habilitar API do OpenSea" + }, + "enableOpenSeaAPIDescription": { + "message": "Use a API OpenSea para recuperar dados de NFTs. A detecção automática de NFTs depende da API OpenSea e não estará disponível quando essa opção estiver desativada." + }, + "enableSmartTransactions": { + "message": "Ativar transações inteligentes" + }, + "enableToken": { + "message": "ativar $1", + "description": "$1 is a token symbol, e.g. ETH" + }, + "encryptionPublicKeyNotice": { + "message": "$1 gostaria da sua chave pública de criptografia. Ao consentir, este site conseguirá redigir mensagens criptografadas para você.", + "description": "$1 is the web3 site name" + }, + "encryptionPublicKeyRequest": { + "message": "Solicitar chave pública de criptografia" + }, + "endOfFlowMessage1": { + "message": "Você foi aprovado no teste. Guarde sua Frase de Recuperação Secreta em segurança, é sua responsabilidade!" + }, + "endOfFlowMessage10": { + "message": "Tudo pronto" + }, + "endOfFlowMessage2": { + "message": "Dicas para armazenar em segurança" + }, + "endOfFlowMessage3": { + "message": "Salve uma cópia em vários locais." + }, + "endOfFlowMessage4": { + "message": "Nunca compartilhe essa frase com ninguém." + }, + "endOfFlowMessage5": { + "message": "Cuidado com phishing! A MetaMask jamais pedirá espontaneamente sua Frase de Recuperação Secreta." + }, + "endOfFlowMessage6": { + "message": "Se você precisar fazer backup da sua Frase de Recuperação Secreta novamente, encontre-a em Configurações -> Segurança." + }, + "endOfFlowMessage7": { + "message": "Se você tiver alguma pergunta ou vir algo suspeito, entre em contato com o suporte $1.", + "description": "$1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets." + }, + "endOfFlowMessage8": { + "message": "A MetaMask não pode recuperar sua Frase de Recuperação Secreta." + }, + "endOfFlowMessage9": { + "message": "Saiba mais." + }, + "endpointReturnedDifferentChainId": { + "message": "O endpoint retornou um ID diferente da chain: $1", + "description": "$1 is the return value of eth_chainId from an RPC endpoint" + }, + "ensIllegalCharacter": { + "message": "Caractere inválido para ENS." + }, + "ensNotFoundOnCurrentNetwork": { + "message": "Nome ENS não encontrado na rede atual. Procure trocar para a mainnet do Ethereum." + }, + "ensNotSupportedOnNetwork": { + "message": "A rede não suporta ENS" + }, + "ensRegistrationError": { + "message": "Erro no registro do nome ENS" + }, + "ensUnknownError": { + "message": "Falha na busca de ENS." + }, + "enterMaxSpendLimit": { + "message": "Digite um limite máximo de gastos" + }, "enterPassword": { "message": "Introduza palavra-passe" }, + "enterPasswordContinue": { + "message": "Insira a senha para continuar" + }, + "errorCode": { + "message": "Código: $1", + "description": "Displayed error code for debugging purposes. $1 is the error code" + }, + "errorDetails": { + "message": "Detalhes do erro", + "description": "Title for collapsible section that displays error details for debugging purposes" + }, + "errorMessage": { + "message": "Mensagem: $1", + "description": "Displayed error message for debugging purposes. $1 is the error message" + }, + "errorName": { + "message": "Código: $1", + "description": "Displayed error name for debugging purposes. $1 is the error name" + }, + "errorPageMessage": { + "message": "Recarregue a página para tentar novamente ou entre em contato com o suporte $1.", + "description": "Message displayed on generic error page in the fullscreen or notification UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets." + }, + "errorPagePopupMessage": { + "message": "Feche e reabra o pop-up para tentar novamente ou entre em contato com o suporte $1.", + "description": "Message displayed on generic error page in the popup UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets." + }, + "errorPageTitle": { + "message": "A MetaMask encontrou um erro", + "description": "Title of generic error page" + }, + "errorStack": { + "message": "Lista:", + "description": "Title for error stack, which is displayed for debugging purposes" + }, + "estimatedProcessingTimes": { + "message": "Tempos de processamento estimados" + }, + "ethGasPriceFetchWarning": { + "message": "O preço de backup do gás é fornecido porque a estimativa de gás principal está indisponível no momento." + }, + "ethereumPublicAddress": { + "message": "Endereço público do Ethereum" + }, + "etherscan": { + "message": "Etherscan" + }, "etherscanView": { "message": "Ver conta no Etherscan" }, + "etherscanViewOn": { + "message": "Ver no Etherscan" + }, + "expandExperience": { + "message": "Expanda sua experiência web3" + }, + "expandView": { + "message": "Expandir exibição" + }, + "experimental": { + "message": "Experimental" + }, "exportPrivateKey": { "message": "Exportar Chave Privada" }, + "externalExtension": { + "message": "Extensão externa" + }, "failed": { "message": "Falhou" }, + "failedToFetchChainId": { + "message": "Não foi possível buscar o ID da cadeia. Seu URL da RPC está correto?" + }, + "failedToFetchTickerSymbolData": { + "message": "Dados de verificação do símbolo do ticker indisponíveis no momento. Certifique-se de que o símbolo inserido está correto. Isso afetará as taxas de conversão indicadas para essa rede" + }, + "failureMessage": { + "message": "Ocorreu algum erro e não conseguimos concluir a ação" + }, + "fakeTokenWarning": { + "message": "Qualquer um pode criar um token, incluindo versões falsas de tokens existentes. Saiba mais sobre $1" + }, + "fast": { + "message": "Rápido" + }, + "fastest": { + "message": "O mais rápido" + }, + "feeAssociatedRequest": { + "message": "Há uma taxa associada a essa solicitação." + }, "fiat": { "message": "FIAT", "description": "Exchange type" @@ -113,18 +1197,168 @@ "message": "A importação de ficheiro não está a funcionar? Carregue aqui!", "description": "Helps user import their account from a JSON file" }, + "flaskSnapSettingsCardButtonCta": { + "message": "Ver detalhes", + "description": "Call to action a user can take to see more information about the Snap that is installed" + }, + "flaskSnapSettingsCardDateAddedOn": { + "message": "Adicionado em", + "description": "Start of the sentence describing when and where snap was added" + }, + "flaskSnapSettingsCardFrom": { + "message": "de", + "description": "Part of the sentence describing when and where snap was added" + }, + "flaskWelcomeUninstall": { + "message": "você deve desinstalar essa extensão", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "O Flask é para desenvolvedores experimentarem novas APIs instáveis. A menos que você seja um desenvolvedor ou beta tester, $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Não damos garantias sobre a segurança ou a estabilidade dessa extensão. As novas APIs oferecidas pelo Flask não estão protegidas contra ataques de phishing, ou seja, qualquer site ou snap que requeira o Flask pode ser uma tentativa mal-intencionada de roubar seus ativos.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Todas as APIs do Flask são experimentais. Elas podem ser alteradas ou removidas sem aviso prévio, ou podem permanecer no Flask indefinidamente, sem jamais serem migradas para a MetaMask estável. Use-as com cautela.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Eu aceito os riscos", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, + "followUsOnTwitter": { + "message": "Siga-nos no Twitter" + }, + "forbiddenIpfsGateway": { + "message": "Gateway IPFS proibido: especifique um gateway de CID" + }, + "forgetDevice": { + "message": "Esquecer este dispositivo" + }, + "forgotPassword": { + "message": "Esqueceu a senha?" + }, "from": { "message": "De" }, + "fromAddress": { + "message": "De: $1", + "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" + }, + "fromTokenLists": { + "message": "Das listas de tokens: $1" + }, + "functionApprove": { + "message": "Função: aprovar" + }, + "functionType": { + "message": "Tipo de função" + }, + "gas": { + "message": "Gás" + }, + "gasDisplayAcknowledgeDappButtonText": { + "message": "Editar taxa de Gas sugerida" + }, + "gasDisplayDappWarning": { + "message": "Essa taxa de gás foi sugerida por $1. Sua substituição pode causar um problema com a sua transação. Entre em contato com $1 se tiver perguntas.", + "description": "$1 represents the Dapp's origin" + }, + "gasEstimatesUnavailableWarning": { + "message": "Nossas estimativas baixas, médias e altas não estão disponíveis." + }, + "gasFee": { + "message": "Taxa de gás" + }, "gasLimit": { "message": "Limite de Gas" }, + "gasLimitInfoTooltipContent": { + "message": "O limite de gás é o valor máximo das unidades de gás que você está disposto a gastar." + }, + "gasLimitRecommended": { + "message": "O limite de gás recomendado é de $1. Um limite de gás inferior pode resultar em falha." + }, "gasLimitTooLow": { "message": "Limite de Gas deve ser no mínimo 21000" }, + "gasLimitTooLowWithDynamicFee": { + "message": "O limite de gás deve ser de pelo menos $1", + "description": "$1 is the custom gas limit, in decimal." + }, + "gasLimitV2": { + "message": "Limite de Gas" + }, + "gasOption": { + "message": "Opção de gás" + }, "gasPrice": { "message": "Preço Gas (GWEI)" }, + "gasPriceExcessive": { + "message": "Sua taxa de gás está desnecessariamente alta. Considere reduzir o valor." + }, + "gasPriceExcessiveInput": { + "message": "O preço do gás está excessivo" + }, + "gasPriceExtremelyLow": { + "message": "O preço do gás está extremamente baixo" + }, + "gasPriceFetchFailed": { + "message": "A estimativa do preço do gás falhou devido a um erro na rede." + }, + "gasPriceInfoTooltipContent": { + "message": "O preço do gás especifica o valor de Ether que você está disposto a pagar para cada unidade de gás." + }, + "gasTimingHoursShort": { + "message": "$1 h", + "description": "$1 represents a number of hours" + }, + "gasTimingMinutes": { + "message": "$1 minutos", + "description": "$1 represents a number of minutes" + }, + "gasTimingMinutesShort": { + "message": "$1 min", + "description": "$1 represents a number of minutes" + }, + "gasTimingNegative": { + "message": "Talvez em $1", + "description": "$1 represents an amount of time" + }, + "gasTimingPositive": { + "message": "Provavelmente em < $1", + "description": "$1 represents an amount of time" + }, + "gasTimingSeconds": { + "message": "$1 segundos", + "description": "$1 represents a number of seconds" + }, + "gasTimingSecondsShort": { + "message": "$1 s", + "description": "$1 represents a number of seconds" + }, + "gasTimingVeryPositive": { + "message": "Muito provavelmente em < $1", + "description": "$1 represents an amount of time" + }, + "gasUsed": { + "message": "Gás usado" + }, + "gdprMessage": { + "message": "Conforme determinação da Lei Geral de Proteção de Dados (União Europeia) 2016/679, esses dados são agregados e, portanto, anônimos. Para obter mais informações relacionadas às nossas práticas de privacidade, confira nossa $1.", + "description": "$1 refers to the gdprMessagePrivacyPolicy message, the translation of which is meant to be used exclusively in the context of gdprMessage" + }, + "gdprMessagePrivacyPolicy": { + "message": "Política de Privacidade aqui", + "description": "this translation is intended to be exclusively used as the replacement for the $1 in the gdprMessage translation" + }, + "general": { + "message": "Geral" + }, "getEther": { "message": "Obter Ether" }, @@ -132,16 +1366,85 @@ "message": "Obter Ether de um faucet por $1", "description": "Displays network name for Ether faucet" }, + "getStarted": { + "message": "Comece agora" + }, + "goBack": { + "message": "Voltar" + }, + "goerli": { + "message": "Rede de testes Goerli" + }, + "gotIt": { + "message": "Entendi!" + }, + "grantedToWithColon": { + "message": "Concedido a:" + }, + "gwei": { + "message": "GWEI" + }, + "happyToSeeYou": { + "message": "É um prazer ver você." + }, + "hardware": { + "message": "Hardware" + }, + "hardwareWalletConnected": { + "message": "Carteira de hardware conectada" + }, + "hardwareWalletLegacyDescription": { + "message": "(antigo)", + "description": "Text representing the MEW path" + }, + "hardwareWalletSupportLinkConversion": { + "message": "clique aqui" + }, + "hardwareWallets": { + "message": "Conecte uma carteira de hardware" + }, + "hardwareWalletsMsg": { + "message": "Selecione uma carteira de hardware que você gostaria de usar com a MetaMask." + }, "here": { "message": "aqui", "description": "as in -click here- for more information (goes with troubleTokenBalances)" }, + "hexData": { + "message": "Dados em hexa" + }, "hide": { "message": "Ocultar" }, + "hideSeedPhrase": { + "message": "Ocultar seed phrase (frase de recuperação)" + }, + "hideToken": { + "message": "Ocultar token" + }, "hideTokenPrompt": { "message": "Ocultar Token?" }, + "hideTokenSymbol": { + "message": "Ocultar $1", + "description": "$1 is the symbol for a token (e.g. 'DAI')" + }, + "hideZeroBalanceTokens": { + "message": "Ocultar tokens sem saldo" + }, + "high": { + "message": "Agressiva" + }, + "highGasSettingToolTipMessage": { + "message": "Alta probabilidade, mesmo em mercados voláteis. Use $1 para cobrir picos no tráfego de rede em razão de coisas como quedas em NFTs populares.", + "description": "$1 is key 'high' (text: 'Aggressive') separated here so that it can be passed in with bold fontweight" + }, + "highLowercase": { + "message": "alta" + }, + "history": { + "message": "Histórico" + }, "import": { "message": "Importar", "description": "Button to import an account from a selected file" @@ -149,16 +1452,79 @@ "importAccount": { "message": "Importar Conta" }, + "importAccountError": { + "message": "Erro de importação de conta." + }, "importAccountMsg": { "message": "Contas importadas não irão ser associadas com a frase seed da conta criada originalmente pelo MetaMask. Saiba mais sobre contas importadas." }, + "importAccountSeedPhrase": { + "message": "Importe uma carteira com a Frase de Recuperação Secreta" + }, + "importMyWallet": { + "message": "Importar minha carteira" + }, + "importNFT": { + "message": "Importar NFT" + }, + "importNFTAddressToolTip": { + "message": "Na OpenSea, por exemplo, na página de NFTs em Detalhes, há um hiperlink de valor em azul rotulado \"Endereço do Contrato\". Clicando nele, você será levado ao endereço do contrato no Etherscan. Na parte superior esquerda da página há um ícone rotulado \"Contrato\", e, à direita, uma longa linha de letras e números. Esse é o endereço do contrato que criou seu NFT. Clique no ícone \"copiar\" à direita do endereço para adicioná-lo à sua área de transferência." + }, + "importNFTPage": { + "message": "página Importar NFT" + }, + "importNFTTokenIdToolTip": { + "message": "O ID do colecionável é um identificador único, pois não há dois NFTs iguais. Novamente, na OpenSea, esse número se encontra em \"Detalhes\". Anote-o ou copie-o para sua área de transferência." + }, + "importNFTs": { + "message": "Importar NFTs" + }, + "importTokenQuestion": { + "message": "Importar token?" + }, + "importTokenWarning": { + "message": "Qualquer pessoa pode criar um token com qualquer nome, incluindo versões falsas de tokens existentes. Adicione e negocie por sua conta e risco!" + }, + "importTokens": { + "message": "importar tokens" + }, + "importTokensCamelCase": { + "message": "Importar tokens" + }, + "importWallet": { + "message": "Importar carteira" + }, + "importYourExisting": { + "message": "Importe sua carteira existente usando uma Frase de Recuperação Secreta" + }, "imported": { "message": "Importado", "description": "status showing that an account has been fully loaded into the keyring" }, + "infuraBlockedNotification": { + "message": "Não foi possível conectar a MetaMask com o servidor do blockchain. Revise possíveis motivos $1.", + "description": "$1 is a clickable link with with text defined by the 'here' key" + }, + "initialTransactionConfirmed": { + "message": "Sua transação inicial foi confirmada pela rede. Clique em OK para voltar." + }, + "insufficientBalance": { + "message": "Saldo insuficiente." + }, + "insufficientCurrencyBuyOrDeposit": { + "message": "Você não tem $1 suficiente em sua conta para pagar as taxas de transação da rede $2. $3 ou deposite de outra conta.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "Você não tem $1 suficiente em sua conta para pagar as taxas de transação na rede $2. Deposite $1 de outra conta.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Fundos insuficientes." }, + "insufficientFundsForGas": { + "message": "Fundos insuficientes para o gás" + }, "insufficientTokens": { "message": "Tokens insuficientes." }, @@ -168,46 +1534,370 @@ "invalidAddressRecipient": { "message": "O endereço do destinatário é inválido " }, + "invalidAddressRecipientNotEthNetwork": { + "message": "Não é uma rede de ETH; configurar em minúsculas" + }, + "invalidAssetType": { + "message": "Esse ativo é um NFT e precisa ser adicionado novamente à página Importar NFT, encontrada na aba NFTs." + }, "invalidBlockExplorerURL": { "message": "Block Explorer URI Inválido" }, + "invalidChainIdTooBig": { + "message": "ID de cadeia inválido. O ID de cadeia é muito grande." + }, + "invalidCustomNetworkAlertContent1": { + "message": "O ID de cadeia da rede personalizada “$1” precisa ser digitado novamente.", + "description": "$1 is the name/identifier of the network." + }, + "invalidCustomNetworkAlertContent2": { + "message": "Para proteger você contra provedores de rede maliciosos ou defeituosos, os IDs de cadeia agora são exigidos para todas as redes personalizadas." + }, + "invalidCustomNetworkAlertContent3": { + "message": "Acesse Configurações > Rede e informe o ID de cadeia. Encontre os IDs de cadeia das redes mais populares em $1.", + "description": "$1 is a link to https://chainid.network" + }, + "invalidCustomNetworkAlertTitle": { + "message": "Rede personalizada inválida" + }, + "invalidHexNumber": { + "message": "Número hexadecimal inválido." + }, + "invalidHexNumberLeadingZeros": { + "message": "Número hexadecimal inválido. Remova os zeros à esquerda." + }, + "invalidIpfsGateway": { + "message": "Gateway IPFS inválido: o valor deve ser um URL válido" + }, + "invalidNumber": { + "message": "Número inválido. Insira um número decimal ou um hexadecimal com o prefixo '0x'." + }, + "invalidNumberLeadingZeros": { + "message": "Número inválido. Remova os zeros à esquerda." + }, "invalidRPC": { "message": "RPC URI Inválido" }, + "invalidSeedPhrase": { + "message": "Frase Secreta de Recuperação inválida" + }, + "ipfsGateway": { + "message": "Gateway IPFS" + }, + "ipfsGatewayDescription": { + "message": "Informe o URL do gateway de CID do IPFS para usar com resolução de conteúdo de ENS." + }, + "jazzAndBlockies": { + "message": "Jazzicons e Blockies são dois estilos diferentes de ícones únicos que ajudam você a identificar uma conta num relance." + }, + "jazzicons": { + "message": "Jazzicons" + }, + "jsDeliver": { + "message": "jsDeliver" + }, "jsonFile": { "message": "Ficheiro JSON", "description": "format for importing an account" }, + "keystone": { + "message": "Keystone" + }, + "keystoneTutorial": { + "message": " (Tutoriais)" + }, + "knownAddressRecipient": { + "message": "Endereço de contrato conhecido." + }, + "knownTokenWarning": { + "message": "Essa ação editará os tokens já listados na sua carteira, que podem ser usado para praticar phishing contra você. Só aprove se você tiver certeza de que quer alterar o que esses tokens representam." + }, "kovan": { "message": "Rede de Teste Kovan" }, + "lastConnected": { + "message": "Conectado pela última vez em" + }, + "learmMoreAboutGas": { + "message": "Quer $1 sobre o gás?" + }, + "learnCancelSpeeedup": { + "message": "Saiba como $1", + "description": "$1 is link to cancel or speed up transactions" + }, + "learnMore": { + "message": "saiba mais" + }, + "learnMoreUpperCase": { + "message": "Saiba mais" + }, + "learnScamRisk": { + "message": "golpes e riscos de segurança." + }, + "ledgerAccountRestriction": { + "message": "Você precisa usar sua última conta antes de adicionar uma nova." + }, + "ledgerConnectionInstructionCloseOtherApps": { + "message": "Encerre qualquer outro software conectado ao seu dispositivo e, em seguida, clique aqui para atualizar." + }, + "ledgerConnectionInstructionHeader": { + "message": "Antes de clicar em confirmar:" + }, + "ledgerConnectionInstructionStepFour": { + "message": "Ative \"dados de contrato inteligente\" ou \"assinatura cega\" no seu dispositivo Ledger" + }, + "ledgerConnectionInstructionStepOne": { + "message": "Ative Utilizar Ledger Live em Configurações > Avançado" + }, + "ledgerConnectionInstructionStepThree": { + "message": "Conecte o seu dispositivo Ledger e selecione o app Ethereum" + }, + "ledgerConnectionInstructionStepTwo": { + "message": "Abra e desbloqueie o app Ledger Live" + }, + "ledgerConnectionPreferenceDescription": { + "message": "Personalize como conectar sua Ledger à MetaMask. Recomenda-se utilizar $1, mas há outras opções. Leia mais aqui: $2", + "description": "A description that appears above a dropdown where users can select between up to three options - Ledger Live, U2F or WebHID - depending on what is supported in their browser. $1 is the recommended browser option, it will be either WebHID or U2f. $2 is a link to an article where users can learn more, but will be the translation of the learnMore message." + }, + "ledgerDeviceOpenFailureMessage": { + "message": "Não foi possível abrir o dispositivo Ledger. Seu Ledger pode não estar conectado a outros softwares. Feche o Ledger Live ou outros aplicativos conectados ao seu dispositivo Ledger e tente reconectar." + }, + "ledgerLive": { + "message": "Ledger Live", + "description": "The name of a desktop app that can be used with your ledger device. We can also use it to connect a users Ledger device to MetaMask." + }, + "ledgerLiveApp": { + "message": "Aplicativo Ledger Live" + }, + "ledgerLocked": { + "message": "Não é possível conectar ao dispositivo Ledger. Certifique-se de que seu dispositivo esteja desbloqueado e que o aplicativo Ethereum esteja aberto." + }, + "ledgerTimeout": { + "message": "O Ledger Live está demorando muito para responder ou a conexão expirou. Certifique-se de que o aplicativo do Ledger Live esteja aberto e que seu dispositivo esteja desbloqueado." + }, + "ledgerTransportChangeWarning": { + "message": "Se o seu aplicativo do Ledger Live estiver aberto, desconecte qualquer conexão aberta com o Ledger Live e feche o aplicativo do Ledger Live." + }, + "ledgerWebHIDNotConnectedErrorMessage": { + "message": "O dispositivo ledger não foi conectado. Se deseja conectar seu Ledger, clique em \"Continuar\" novamente e aprove a conexão HID", + "description": "An error message shown to the user during the hardware connect flow." + }, + "letsGoSetUp": { + "message": "Sim, vamos fazer a configuração!" + }, + "levelArrow": { + "message": "seta de nível" + }, "likeToImportTokens": { "message": "Gostaria de adicionar estes tokens?" }, + "link": { + "message": "Link" + }, + "links": { + "message": "Links" + }, + "loadMore": { + "message": "Carregar mais" + }, "loading": { "message": "A carregar..." }, + "loadingNFTs": { + "message": "Carregando NFTs..." + }, "loadingTokens": { "message": "A carregar Tokens..." }, + "localhost": { + "message": "Host local 8545" + }, "lock": { "message": "Sair" }, + "lockTimeTooGreat": { + "message": "O tempo de bloqueio é longo demais" + }, + "logo": { + "message": "Logotipo do $1", + "description": "$1 is the name of the ticker" + }, + "low": { + "message": "Baixa" + }, + "lowGasSettingToolTipMessage": { + "message": "Use $1 para aguardar um preço mais baixo. As estimativas de tempo são muito menos exatas, pois os preços são relativamente imprevisíveis.", + "description": "$1 is key 'low' separated here so that it can be passed in with bold fontweight" + }, + "lowLowercase": { + "message": "baixa" + }, + "lowPriorityMessage": { + "message": "Futuras transações serão colocadas depois dessa na fila." + }, "mainnet": { "message": "Rede Principal de Ethereum" }, + "mainnetToken": { + "message": "Esse endereço coincide com um endereço de token conhecido na mainnet do Ethereum. Verifique novamente o endereço do contrato e a rede do token que você está tentando adicionar." + }, + "makeAnotherSwap": { + "message": "Criar nova troca" + }, + "makeSureNoOneWatching": { + "message": "Certifique-se de que não há ninguém vendo sua tela", + "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" + }, + "malformedData": { + "message": "Dados inválidos" + }, + "manageSnaps": { + "message": "Gerencie seus snaps instalados" + }, + "max": { + "message": "Máximo" + }, + "maxBaseFee": { + "message": "Taxa de base máxima" + }, + "maxFee": { + "message": "Taxa máxima" + }, + "maxPriorityFee": { + "message": "Taxa máxima de prioridade" + }, + "medium": { + "message": "Mercado" + }, + "mediumGasSettingToolTipMessage": { + "message": "Use $1 para um processamento rápido pelo preço atual de mercado.", + "description": "$1 is key 'medium' (text: 'Market') separated here so that it can be passed in with bold fontweight" + }, + "memo": { + "message": "memorando" + }, + "memorizePhrase": { + "message": "Memorize essa frase." + }, "message": { "message": "Mensagem" }, + "metaMaskConnectStatusParagraphOne": { + "message": "Agora você tem mais controle sobre as conexões da sua conta na MetaMask." + }, + "metaMaskConnectStatusParagraphThree": { + "message": "Clique para gerenciar suas contas conectadas." + }, + "metaMaskConnectStatusParagraphTwo": { + "message": "O botão de status da conexão mostra se o website que você está visitando está conectado à conta selecionada no momento." + }, "metamaskDescription": { "message": "O MetaMask é um lugar seguro para guardar a sua identidade em em Ethereum." }, + "metamaskSwapsOfflineDescription": { + "message": "O recurso de swaps do MetaMask está em manutenção. Verifique novamente mais tarde." + }, + "metamaskVersion": { + "message": "Versão da MetaMask" + }, + "metametricsCommitmentsAllowOptOut": { + "message": "Sempre permitirá que você revogue a permissão nas configurações" + }, + "metametricsCommitmentsAllowOptOut2": { + "message": "Sempre conseguirá se excluir por meio das Configurações" + }, + "metametricsCommitmentsBoldNever": { + "message": "Nunca", + "description": "This string is localized separately from some of the commitments so that we can bold it" + }, + "metametricsCommitmentsIntro": { + "message": "A MetaMask.." + }, + "metametricsCommitmentsNeverCollect": { + "message": "Nunca coletará chaves, endereços, transações, saldos, códigos hash ou qualquer informação pessoal" + }, + "metametricsCommitmentsNeverCollectIP": { + "message": "$1 coletarão seu endereço IP completo", + "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" + }, + "metametricsCommitmentsNeverCollectKeysEtc": { + "message": "$1 coletarão chaves, endereços, transações, saldos, hashes ou qualquer outra informação pessoal", + "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" + }, + "metametricsCommitmentsNeverIP": { + "message": "Nunca coletarão seu endereço IP completo" + }, + "metametricsCommitmentsNeverSell": { + "message": "Nunca venderá dados com o intuito de lucrar. Jamais!" + }, + "metametricsCommitmentsNeverSellDataForProfit": { + "message": "$1 venderão dados em troca de lucro. Jamais!", + "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" + }, + "metametricsCommitmentsSendAnonymizedEvents": { + "message": "Enviará eventos anonimizados de cliques e visualizações de páginas" + }, + "metametricsHelpImproveMetaMask": { + "message": "Ajude a melhorar a MetaMask" + }, + "metametricsOptInDescription": { + "message": "A MetaMask gostaria de reunir dados de uso para entender melhor como nossos usuários interagem com a extensão. Esses dados serão usados para melhorar continuamente a usabilidade e a experiência do usuário com o nosso produto e o ecossistema do Ethereum." + }, + "metametricsOptInDescription2": { + "message": "Gostaríamos de reunir dados básicos de utilização para melhorar a usabilidade do nosso produto. Esses indicadores..." + }, + "metametricsTitle": { + "message": "Junte-se a mais de 6 milhões de usuários para melhorar a MetaMask" + }, + "mismatchedChain": { + "message": "Os detalhes da rede para esse ID da cadeia não correspondem aos dos nossos registros. Recomendamos que você $1 antes de continuar.", + "description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key" + }, + "mismatchedChainLinkText": { + "message": "verifique os detalhes da rede", + "description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key." + }, + "missingNFT": { + "message": "Não está vendo o seu NFT?" + }, + "missingSetting": { + "message": "Não consegue encontrar uma configuração?" + }, + "missingSettingRequest": { + "message": "Solicite aqui" + }, + "missingToken": { + "message": "Não está vendo seu token?" + }, + "mobileSyncWarning": { + "message": "A funcionalidade \"Sincronizar com a extensão\" está temporariamente desativada. Se você quer usar sua carteira de extensão na MetaMask mobile, então, no seu app mobile: volte às opções de configuração da carteira e selecione a opção \"Importar com frase de recuperação secreta\". Use a frase secreta da sua carteira de extensão para, então, importar a sua carteira no celular." + }, "mustSelectOne": { "message": "Deve escolher no mínimo 1 token." }, "myAccounts": { "message": "As minhas contas" }, + "name": { + "message": "Nome" + }, + "needCryptoInWallet": { + "message": "Para interagir com aplicativos descentralizados usando a MetaMask, você precisará de $1 em sua carteira.", + "description": "$1 represents the cypto symbol to be purchased" + }, + "needHelp": { + "message": "Precisa de ajuda? Contate $1", + "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" + }, + "needHelpFeedback": { + "message": "Compartilhe seu feedback" + }, + "needHelpLinkText": { + "message": "Suporte da MetaMask" + }, + "needHelpSubmitTicket": { + "message": "Envie um chamado" + }, "needImportFile": { "message": "Deve selecionar um ficheiro para importar.", "description": "User is important an account and needs to add a file to continue" @@ -215,38 +1905,523 @@ "negativeETH": { "message": "Não é possível enviar valores negativos de ETH." }, + "network": { + "message": "Ethereum:" + }, + "networkDetails": { + "message": "Detalhes da rede" + }, + "networkIsBusy": { + "message": "A rede está ocupada. Os preços de gás estão altos e as estimativas estão menos exatas." + }, + "networkName": { + "message": "Nome da rede" + }, + "networkNameAvalanche": { + "message": "Avalanche" + }, + "networkNameBSC": { + "message": "BSC" + }, + "networkNameDefinition": { + "message": "O nome associado a essa rede." + }, + "networkNameEthereum": { + "message": "rede" + }, + "networkNamePolygon": { + "message": "Polygon" + }, + "networkNameRinkeby": { + "message": "Rinkeby" + }, + "networkNameTestnet": { + "message": "Testnet" + }, + "networkSettingsChainIdDescription": { + "message": "O ID da cadeia é usado para assinar transações. É preciso ser igual ao ID da cadeia retornado pela rede. Você pode informar um número decimal ou um número hexadecimal com prefixo “0x”, mas exibiremos o número em casas decimais." + }, + "networkStatus": { + "message": "Status da rede" + }, + "networkStatusBaseFeeTooltip": { + "message": "A taxa de base é definida pela rede e muda a cada 13 ou 14 segundos. Nossas opções $1 e $2 têm em conta os aumentos súbitos.", + "description": "$1 and $2 are bold text for Medium and Aggressive respectively." + }, + "networkStatusPriorityFeeTooltip": { + "message": "Intervalo das taxas de prioridade (ou seja, a \"gorjeta dos mineradores\"). Esse valor vai para os mineradores e os incentiva a priorizar sua transação." + }, + "networkStatusStabilityFeeTooltip": { + "message": "As taxas de gás estão $1 em relação às últimas 72 horas.", + "description": "$1 is networks stability value - stable, low, high" + }, + "networkURL": { + "message": "URL da rede" + }, + "networkURLDefinition": { + "message": "O URL usado para acessar essa rede." + }, "networks": { "message": "Redes" }, + "nevermind": { + "message": "Desistir" + }, "newAccount": { "message": "Conta Nova" }, + "newAccountDetectedDialogMessage": { + "message": "Novo endereço detectado! Clique aqui para adicionar à sua agenda de endereços." + }, "newAccountNumberName": { "message": "Conta $1", "description": "Default name of next account to be created on create account screen" }, + "newCollectibleAddedMessage": { + "message": "O colecionável foi adicionado com sucesso!" + }, + "newContact": { + "message": "Novo contato" + }, "newContract": { "message": "Contrato Novo" }, + "newNFTDetectedMessage": { + "message": "Permita que a MetaMask detecte automaticamente os NFTs do Opensea e mostre-os em sua carteira." + }, + "newNFTsDetected": { + "message": "Novidade! Detecção de NFT" + }, + "newNetworkAdded": { + "message": "“$1” foi adicionado com sucesso!" + }, "newPassword": { "message": "Nova Palavra-passe (min 8 caracteres)" }, + "newToMetaMask": { + "message": "Novo na MetaMask?" + }, + "newTotal": { + "message": "Novo total" + }, + "newTransactionFee": { + "message": "Nova taxa de transação" + }, + "newValues": { + "message": "novos valores" + }, "next": { "message": "Próximo" }, + "nextNonceWarning": { + "message": "Nonce é maior que o nonce sugerido de $1", + "description": "The next nonce according to MetaMask's internal logic" + }, + "nftTokenIdPlaceholder": { + "message": "Insira o ID do token" + }, + "nfts": { + "message": "NFTs" + }, + "nickname": { + "message": "Apelido" + }, + "noAccountsFound": { + "message": "Nenhuma conta encontrada para a busca efetuada" + }, "noAddressForName": { "message": "Nenhum endereço foi estabelecido para este nome." }, + "noAlreadyHaveSeed": { + "message": "Não, eu já tenho uma Frase de Recuperação Secreta" + }, + "noConversionDateAvailable": { + "message": "Não há uma data de conversão de moeda disponível" + }, + "noConversionRateAvailable": { + "message": "Não há uma taxa de conversão disponível" + }, + "noNFTs": { + "message": "Nenhum NFT até agora" + }, + "noSnaps": { + "message": "Nenhum snap instalado" + }, + "noThanks": { + "message": "Não, obrigado" + }, + "noThanksVariant2": { + "message": "Não, obrigado." + }, "noTransactions": { "message": "Sem Transações" }, + "noWebcamFound": { + "message": "A webcam do seu computador não foi encontrada. Tente novamente." + }, + "noWebcamFoundTitle": { + "message": "Webcam não encontrada" + }, + "nonce": { + "message": "Nonce" + }, + "nonceField": { + "message": "Personalizar o nonce da transação" + }, + "nonceFieldDescription": { + "message": "Ative essa opção para alterar o nonce (número da transação) nas telas de confirmação. Trata-se de um recurso avançado, por isso use com cuidado." + }, + "nonceFieldHeading": { + "message": "Nonce personalizado" + }, + "notBusy": { + "message": "Não ocupado" + }, + "notCurrentAccount": { + "message": "Essa é a conta correta? É diferente da conta atualmente selecionada na sua carteira" + }, + "notEnoughGas": { + "message": "Não há gás suficiente" + }, + "notifications10ActionText": { + "message": "Veja em configurações", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "A detecção aperfeiçoada de tokens está atualmente disponível nas redes Ethereum Mainnet, Polygon, BSC e Avalanche. Há outras por vir!" + }, + "notifications10DescriptionThree": { + "message": "O recurso de detecção de tokens está automaticamente ATIVADO, mas você pode desativá-lo nas Configurações." + }, + "notifications10DescriptionTwo": { + "message": "Nós coletamos tokens em listas de tokens de terceiros. Os tokens presentes em mais de duas listas serão detectados automaticamente." + }, + "notifications10Title": { + "message": "Chegou a detecção aperfeiçoada de tokens" + }, + "notifications11Description": { + "message": "Tokens podem ser criados por qualquer pessoa e podem ter nomes duplicados. Caso você veja aparecer um token no qual você não confia ou com o qual não tenha interagido, é mais seguro não confiar nele." + }, + "notifications11Title": { + "message": "Golpes e riscos de segurança" + }, + "notifications12ActionText": { + "message": "Ativar o modo escuro" + }, + "notifications12Description": { + "message": "O Modo Escuro será ativado para novos usuários de acordo com suas preferências de sistema. Para usuários antigos, ative o Modo Escuro manualmente em Configurações -> Experimental." + }, + "notifications12Title": { + "message": "Modo escuro quando? Modo escuro agora! 🕶️🦊" + }, + "notifications1Description": { + "message": "Usuários da MetaMask Mobile agora podem trocar tokens dentro de sua carteira mobile. Leia o QR code para obter o aplicativo para dispositivos móveis e comece a trocar.", + "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." + }, + "notifications1Title": { + "message": "Você já pode fazer trocas em dispositivos móveis!", + "description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile." + }, + "notifications3ActionText": { + "message": "Ler mais", + "description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website." + }, + "notifications3Description": { + "message": "Fique ligado nas boas práticas de segurança da MetaMask e obtenha as últimas dicas de segurança com o suporte oficial da MetaMask.", + "description": "Description of a notification in the 'See What's New' popup. Describes the information they can get on security from the linked support page." + }, + "notifications3Title": { + "message": "Mantenha-se protegido", + "description": "Title for a notification in the 'See What's New' popup. Encourages users to consider security." + }, + "notifications4ActionText": { + "message": "Comece a fazer swap", + "description": "The 'call to action' on the button, or link, of the 'Swap on Binance Smart Chain!' notification. Upon clicking, users will be taken to a page where then can swap tokens on Binance Smart Chain." + }, + "notifications4Description": { + "message": "Obtenha os melhores preços em trocas de tokens diretamente na sua carteira. Agora a MetaMask conecta você a vários agregadores de exchanges descentralizadas e formadores de mercado profissionais na Binance Smart Chain.", + "description": "Description of a notification in the 'See What's New' popup." + }, + "notifications4Title": { + "message": "Troca na Binance Smart Chain", + "description": "Title for a notification in the 'See What's New' popup. Encourages users to do swaps on Binance Smart Chain." + }, + "notifications5Description": { + "message": "A sua \"Frase de Seed\" agora é chamada de sua \"Frase de Recuperação Secreta\".", + "description": "Description of a notification in the 'See What's New' popup. Describes the seed phrase wording update." + }, + "notifications6DescriptionOne": { + "message": "A partir da versão 91 do Chrome, a API que permitia nosso suporte ao Ledger (U2F) não é mais compatível com carteiras de hardware. A MetaMask implementou um novo suporte ao Ledger Live que permite continuar conectando o seu dispositivo Ledger por meio do aplicativo de desktop Ledger Live.", + "description": "Description of a notification in the 'See What's New' popup. Describes the Ledger support update." + }, + "notifications6DescriptionThree": { + "message": "Ao interagir com a sua conta do Ledger na MetaMask, uma nova aba será aberta, e você será solicitado a abrir o aplicativo Ledger Live. Quando o aplicativo for aberto, você precisará permitir uma conexão do WebSocket com a sua conta da MetaMask. Só isso!", + "description": "Description of a notification in the 'See What's New' popup. Describes the Ledger support update." + }, + "notifications6DescriptionTwo": { + "message": "Você pode habilitar o suporte ao Ledger Live clicando em Configurações > Avançado > Usar Ledger Live.", + "description": "Description of a notification in the 'See What's New' popup. Describes the Ledger support update." + }, + "notifications6Title": { + "message": "Atualização de suporte ao Ledger para usuários do Chrome", + "description": "Title for a notification in the 'See What's New' popup. Lets users know about the Ledger support update" + }, + "notifications7DescriptionOne": { + "message": "A MetaMask v10.1.0 incluiu novo suporte para transações de EIP-1559 ao utilizar dispositivos Ledger.", + "description": "Description of a notification in the 'See What's New' popup. Describes changes for ledger and EIP1559 in v10.1.0" + }, + "notifications7DescriptionTwo": { + "message": "Para efetuar transações na Mainnet do Ethereum, confirme que seu dispositivo Ledger possui o firmware mais recente.", + "description": "Description of a notification in the 'See What's New' popup. Describes the need to update ledger firmware." + }, + "notifications7Title": { + "message": "Atualização de firmware do Ledger", + "description": "Title for a notification in the 'See What's New' popup. Notifies ledger users of the need to update firmware." + }, + "notifications8ActionText": { + "message": "Ir para Configurações Avançadas", + "description": "Description on an action button that appears in the What's New popup. Tells the user that if they click it, they will go to our Advanced Settings page." + }, + "notifications8DescriptionOne": { + "message": "A partir da MetaMask v10.4.0, não é mais necessário o Ledger Live para conectar o seu dispositivo Ledger à MetaMask.", + "description": "Description of a notification in the 'See What's New' popup. Describes changes for how Ledger Live is no longer needed to connect the device." + }, + "notifications8DescriptionTwo": { + "message": "Para uma experiência mais fácil e estável com o ledger, vá até a aba Avançado das configurações e troque o \"Tipo de conexão preferencial com o Ledger\" para \"WebHID\".", + "description": "Description of a notification in the 'See What's New' popup. Describes how the user can turn off the Ledger Live setting." + }, + "notifications8Title": { + "message": "Melhoria na conexão com o Ledger", + "description": "Title for a notification in the 'See What's New' popup. Notifies ledger users that there is an improvement in how they can connect their device." + }, + "notifications9DescriptionOne": { + "message": "Agora oferecemos mais informações na aba \"Dados\" ao confirmar transações de contratos inteligentes." + }, + "notifications9DescriptionTwo": { + "message": "Agora você pode ter uma compreensão melhor dos detalhes da sua transação antes de confirmá-la, além de adicionar com maior facilidade os endereços das transações à sua agenda de endereços, ajudando você a tomar decisões seguras e esclarecidas." + }, + "notifications9Title": { + "message": "👓 Estamos facilitando a leitura das transações." + }, + "numberOfNewTokensDetected": { + "message": "$1 novos tokens encontrados nesta conta", + "description": "$1 is the number of new tokens detected" + }, + "ofTextNofM": { + "message": "de" + }, + "off": { + "message": "Desativado" + }, + "offlineForMaintenance": { + "message": "Offline para manutenção" + }, + "ok": { + "message": "Ok" + }, + "on": { + "message": "Ativado" + }, + "onboardingCreateWallet": { + "message": "Criar uma nova carteira" + }, + "onboardingImportWallet": { + "message": "Importar uma carteira existente" + }, + "onboardingPinExtensionBillboardAccess": { + "message": "Acesso total" + }, + "onboardingPinExtensionBillboardDescription": { + "message": "Essas extensões podem ver e alterar informações" + }, + "onboardingPinExtensionBillboardDescription2": { + "message": "neste site." + }, + "onboardingPinExtensionBillboardTitle": { + "message": "Extensões" + }, + "onboardingPinExtensionChrome": { + "message": "Clique no ícone da extensão do navegador" + }, + "onboardingPinExtensionDescription": { + "message": "Fixe a MetaMask no seu navegador de modo que seja acessível e fácil de visualizar as confirmações das transações." + }, + "onboardingPinExtensionDescription2": { + "message": "Você pode abrir a MetaMask clicando na extensão e acessando a sua carteira com apenas um clique." + }, + "onboardingPinExtensionDescription3": { + "message": "Clique no ícone da extensão do navegador para acessá-la instantaneamente" + }, + "onboardingPinExtensionLabel": { + "message": "Fixar a MetaMask" + }, + "onboardingPinExtensionStep1": { + "message": "1" + }, + "onboardingPinExtensionStep2": { + "message": "2" + }, + "onboardingPinExtensionTitle": { + "message": "Sua instalação da MetaMask está concluída!" + }, + "onboardingReturnNotice": { + "message": "\"$1\" fechará esta aba e direcionará de volta para $2", + "description": "Return the user to the site that initiated onboarding" + }, + "onboardingShowIncomingTransactionsDescription": { + "message": "A exibição de transações recebidas na sua carteira depende de comunicação com $1. O Etherscan terá acesso ao seu endereço Ethereum e ao seu endereço IP. Veja $2.", + "description": "$1 is a clickable link with text defined by the 'etherscan' key. $2 is a clickable link with text defined by the 'privacyMsg' key." + }, + "onboardingUsePhishingDetectionDescription": { + "message": "Os alertas de detecção de phishing dependem de comunicação com $1. O jsDeliver terá acesso ao seu endereço IP. Veja $2.", + "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" + }, + "onlyAddTrustedNetworks": { + "message": "Um provedor de rede mal-intencionado pode mentir sobre o estado do blockchain e registrar as atividades da sua rede. Adicione somente as redes personalizadas em que você confia." + }, + "onlyConnectTrust": { + "message": "Conecte-se somente com sites em que você confia." + }, + "openFullScreenForLedgerWebHid": { + "message": "Abra a MetaMask em tela cheia para conectar sua ledger por meio do WebHID.", + "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." + }, + "openSourceCode": { + "message": "Verifique o código-fonte" + }, + "optional": { + "message": "Opcional" + }, + "optionalWithParanthesis": { + "message": "(Opcional)" + }, + "or": { + "message": "ou" + }, + "origin": { + "message": "Origem" + }, + "parameters": { + "message": "Parâmetros" + }, + "participateInMetaMetrics": { + "message": "Participar da MetaMetrics" + }, + "participateInMetaMetricsDescription": { + "message": "Participe da MetaMetrics para ajudar a melhorar a MetaMask" + }, + "password": { + "message": "Senha" + }, + "passwordNotLongEnough": { + "message": "A senha não é longa o suficiente" + }, + "passwordSetupDetails": { + "message": "Essa senha desbloqueará sua carteira MetaMask apenas neste dispositivo. A MetaMask não é capaz de recuperar essa senha." + }, + "passwordStrength": { + "message": "Segurança da senha: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Uma senha forte pode aumentar a segurança da sua carteira caso seu dispositivo seja roubado ou comprometido." + }, + "passwordTermsWarning": { + "message": "Compreendo que a MetaMask não é capaz de recuperar essa senha para mim. $1" + }, + "passwordsDontMatch": { + "message": "As senhas não coincidem" + }, "pastePrivateKey": { "message": "Cole aqui a sua chave privada:", "description": "For importing an account from a private key" }, + "pending": { + "message": "Pendente" + }, + "pendingTransactionInfo": { + "message": "Essa transação só será processada quando a anterior estiver concluída." + }, + "pendingTransactionMultiple": { + "message": "Você tem ($1) transações pendentes." + }, + "pendingTransactionSingle": { + "message": "Você tem (1) transação pendente.", + "description": "$1 is count of pending transactions" + }, + "permissionRequest": { + "message": "Solicitação de permissão" + }, + "permissionRequestCapitalized": { + "message": "Solicitação de permissão" + }, + "permission_accessNetwork": { + "message": "Acesse a internet.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Conecte-se ao snap $1.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Exibir uma confirmação na MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, + "permission_ethereumAccounts": { + "message": "Ver endereço, saldo da conta, atividade e iniciar transações", + "description": "The description for the `eth_accounts` permission" + }, + "permission_manageBip44Keys": { + "message": "Controlar suas contas e ativos do \"$1\".", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Armazenar e gerenciar dados pertinentes em seu dispositivo.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Mostrar notificações.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Permissão desconhecida: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, + "permissions": { + "message": "Permissões" + }, "personalAddressDetected": { "message": "Endereço pessoal detectado. Introduza o endereço do contrato do token." }, + "pleaseConfirm": { + "message": "Por favor, confirme" + }, + "plusXMore": { + "message": "E mais $1", + "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" + }, + "preferredLedgerConnectionType": { + "message": "Tipo de conexão preferencial com o Ledger", + "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" + }, + "preparingSwap": { + "message": "Preparando swap..." + }, + "prev": { + "message": "Anterior" + }, + "primaryCurrencySetting": { + "message": "Moeda principal" + }, + "primaryCurrencySettingDescription": { + "message": "Selecione Nativa para priorizar a exibição de valores na moeda nativa da cadeia (por ex., ETH). Selecione Fiduciária para priorizar a exibição de valores na moeda fiduciária selecionada." + }, + "priorityFee": { + "message": "Taxa de prioridade" + }, + "priorityFeeProperCase": { + "message": "Taxa de prioridade" + }, "privacyMsg": { "message": "Política de Privacidade" }, @@ -260,57 +2435,407 @@ "privateNetwork": { "message": "Rede Privada" }, + "proceedWithTransaction": { + "message": "Quero prosseguir mesmo assim" + }, + "proposedApprovalLimit": { + "message": "Limite de aprovação proposto" + }, + "provide": { + "message": "Fornecer" + }, + "publicAddress": { + "message": "Endereço público" + }, + "queue": { + "message": "Fila" + }, + "queued": { + "message": "Na fila" + }, + "reAddAccounts": { + "message": "readicione outras contas" + }, + "reAdded": { + "message": "readicionar" + }, "readdToken": { "message": "Pode adicionar este token de novo clicando na opção “Adicionar token” no menu de opções da sua conta." }, + "receive": { + "message": "Receber" + }, + "recents": { + "message": "Recentes" + }, + "recipientAddressPlaceholder": { + "message": "Pesquisa, endereço público (0x) ou ENS" + }, + "recommendedGasLabel": { + "message": "Recomendado" + }, + "recoveryPhraseReminderBackupStart": { + "message": "Comece aqui" + }, + "recoveryPhraseReminderConfirm": { + "message": "Entendi" + }, + "recoveryPhraseReminderHasBackedUp": { + "message": "Sempre mantenha a sua Frase de Recuperação Secreta em um lugar seguro e secreto" + }, + "recoveryPhraseReminderHasNotBackedUp": { + "message": "Precisa fazer backup da sua Frase de recuperação Secreta novamente?" + }, + "recoveryPhraseReminderItemOne": { + "message": "Nunca compartilhe a sua Frase de Recuperação Secreta com ninguém" + }, + "recoveryPhraseReminderItemTwo": { + "message": "A equipe da MetaMask jamais pedirá sua Frase de Recuperação Secreta" + }, + "recoveryPhraseReminderSubText": { + "message": "Sua Frase de Recuperação Secreta controla todas as suas contas." + }, + "recoveryPhraseReminderTitle": { + "message": "Proteja seus fundos" + }, + "refreshList": { + "message": "Atualizar lista" + }, "reject": { "message": "Rejeitar" }, + "rejectAll": { + "message": "Rejeitar todas" + }, + "rejectTxsDescription": { + "message": "Você está prestes a rejeitar $1 transações em massa." + }, + "rejectTxsN": { + "message": "Rejeitar $1 transações" + }, "rejected": { "message": "Rejeitado" }, + "remember": { + "message": "Lembre-se:" + }, + "remindMeLater": { + "message": "Lembre-me mais tarde" + }, + "remove": { + "message": "Remover" + }, + "removeAccount": { + "message": "Remover conta" + }, + "removeAccountDescription": { + "message": "Essa conta será removida da sua carteira. Antes de continuar, você precisa garantir que tem a Frase de Recuperação Secreta original ou chave privada para essa conta importada. Você pode importar ou criar contas novamente a partir do menu suspenso da conta. " + }, + "removeNFT": { + "message": "Remover NFT" + }, + "removeSnap": { + "message": "Remover snap" + }, + "removeSnapConfirmation": { + "message": "Tem certeza de que deseja remover $1?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Essa ação excluirá o snap, os dados dele e revogará as permissões concedidas." + }, + "replace": { + "message": "substituir" + }, + "requestsAwaitingAcknowledgement": { + "message": "solicitações aguardando confirmação" + }, "required": { "message": "Necessário" }, + "reset": { + "message": "Redefinir" + }, "resetAccount": { "message": "Reinicializar Conta" }, + "resetAccountDescription": { + "message": "A redefinição da sua conta limpará o histórico de transações. Isso não alterará os saldos nas suas contas nem exigirá a reintrodução da Frase de Recuperação Secreta." + }, + "resetWallet": { + "message": "Redefinir carteira" + }, + "resetWalletSubHeader": { + "message": "A MetaMask não mantém cópia de sua senha. Se estiver enfrentando problemas para desbloquear sua conta, você precisará redefinir sua carteira. É possível fazer isso informando a frase secreta de recuperação usada ao configurar sua carteira." + }, + "resetWalletUsingSRP": { + "message": "Essa ação excluirá sua carteira atual e a frase secreta de recuperação deste dispositivo, juntamente com a lista de contas que você tem curadoria. Após redefinir com a frase secreta de recuperação, você verá uma lista de contas baseada na frase secreta de recuperação que você usou para redefinir. Essa nova lista incluirá automaticamente novas contas que tenham saldo. Você também poderá $1 criadas anteriormente. Contas personalizadas importadas precisarão ser $2, e quaisquer tokens personalizados adicionados a uma conta também precisarão ser $3." + }, + "resetWalletWarning": { + "message": "Certifique-se de usar a frase secreta de recuperação correta antes de prosseguir. Você não poderá desfazer isso." + }, + "restore": { + "message": "Restaurar" + }, + "restoreWalletPreferences": { + "message": "Encontramos um backup dos seus dados de $1. Gostaria de restaurar as preferências da sua carteira?", + "description": "$1 is the date at which the data was backed up" + }, + "retryTransaction": { + "message": "Tentar transação novamente" + }, + "reusedTokenNameWarning": { + "message": "Um token aqui reutiliza um símbolo de outro token que você acompanha; isso pode causar confusão ou induzir a erros." + }, "revealSeedWords": { "message": "Revelar Palavras Seed" }, + "revealSeedWordsDescription": { + "message": "Se você alguma vez mudar de navegador ou trocar de computador, precisará dessa Frase de Recuperação Secreta para acessar suas contas. Salve-as em um lugar seguro e secreto." + }, "revealSeedWordsWarning": { "message": "Não revele as palavras seed num espaço público! Estas palavras podem ser usadas para roubar todas as suas contas." }, + "revealSeedWordsWarningTitle": { + "message": "NÃO compartilhe essa frase com ninguém!" + }, + "revealTheSeedPhrase": { + "message": "Revelar a frase de recuperação" + }, "rinkeby": { "message": "Rede de Teste Rinkeby" }, "ropsten": { "message": "Rede de Teste Ropsten" }, + "rpcUrl": { + "message": "Novo URL da RPC" + }, + "safeTransferFrom": { + "message": "Transferência segura de" + }, "save": { "message": "Guardar" }, + "saveAsCsvFile": { + "message": "Salvar como arquivo CSV" + }, + "scanInstructions": { + "message": "Posicione o QR code na frente da sua câmera" + }, + "scanQrCode": { + "message": "Escaneie o QR code" + }, + "scrollDown": { + "message": "Role para baixo" + }, "search": { "message": "Procurar" }, + "searchAccounts": { + "message": "Buscar contas" + }, + "searchResults": { + "message": "Resultados da busca" + }, + "searchSettings": { + "message": "Pesquisar nas configurações" + }, + "searchTokens": { + "message": "Pesquisar tokens" + }, + "secretBackupPhraseDescription": { + "message": "Sua Frase de Recuperação Secreta facilita o backup e a restauração da sua conta." + }, + "secretBackupPhraseWarning": { + "message": "ADVERTÊNCIA: jamais divulgue a sua Frase de Recuperação Secreta. Qualquer pessoa com essa frase pode tomar seus Ethers para sempre." + }, + "secretPhrase": { + "message": "Somente a primeira conta nessa carteira será carregada automaticamente. Após concluir esse processo, para adicionar mais contas, clique no menu suspenso e selecione Criar Conta." + }, + "secretRecoveryPhrase": { + "message": "Frase Secreta de Recuperação" + }, + "secureWallet": { + "message": "Carteira segura" + }, + "securityAndPrivacy": { + "message": "Segurança e privacidade" + }, + "seedPhraseConfirm": { + "message": "Confirmar Frase Secreta de Recuperação" + }, + "seedPhraseEnterMissingWords": { + "message": "Confirmar Frase Secreta de Recuperação" + }, + "seedPhraseIntroNotRecommendedButtonCopy": { + "message": "Lembre-me mais tarde (não recomendado)" + }, + "seedPhraseIntroRecommendedButtonCopy": { + "message": "Proteger minha carteira (recomendado)" + }, + "seedPhraseIntroSidebarBulletFour": { + "message": "Anote e guarde em vários locais secretos." + }, + "seedPhraseIntroSidebarBulletOne": { + "message": "Salve em um gerenciador de senhas" + }, + "seedPhraseIntroSidebarBulletThree": { + "message": "Guarde em um cofre de banco." + }, + "seedPhraseIntroSidebarBulletTwo": { + "message": "Guarde em uma caixa-forte." + }, + "seedPhraseIntroSidebarCopyOne": { + "message": "A sua Frase de Recuperação Secreta é uma frase de 12 palavras que é a “chave-mestra” para a sua carteira e seus fundos" + }, + "seedPhraseIntroSidebarCopyThree": { + "message": "Caso alguém lhe peça a sua frase de recuperação, essa pessoa provavelmente está tentando dar um golpe em você e roubar os fundos da sua carteira" + }, + "seedPhraseIntroSidebarCopyTwo": { + "message": "Jamais compartilhe a sua Frase de Recuperação Secreta, nem mesmo com a MetaMask!" + }, + "seedPhraseIntroSidebarTitleOne": { + "message": "O que é uma Frase de Recuperação Secreta?" + }, + "seedPhraseIntroSidebarTitleThree": { + "message": "Devo compartilhar minha Frase de Recuperação Secreta?" + }, + "seedPhraseIntroSidebarTitleTwo": { + "message": "Como salvo minha Frase de Recuperação Secreta?" + }, + "seedPhraseIntroTitle": { + "message": "Proteja sua carteira" + }, + "seedPhraseIntroTitleCopy": { + "message": "Antes de iniciar, assista a esse vídeo curto para aprender sobre sua Frase de Recuperação Secreta e sobre como manter sua carteira segura." + }, "seedPhraseReq": { "message": "seed phrases are 12 words long" }, + "seedPhraseWriteDownDetails": { + "message": "Anote essa Frase de Recuperação Secreta de 12 palavras e guarde-a em algum lugar de sua confiança ao qual somente você tenha acesso." + }, + "seedPhraseWriteDownHeader": { + "message": "Anote sua Frase Secreta de Recuperação" + }, + "selectAHigherGasFee": { + "message": "Selecione uma taxa de gás mais alta para acelerar o processamento da sua transação.*" + }, + "selectAccounts": { + "message": "Selecione a(s) conta(s) para usar nesse site" + }, + "selectAll": { + "message": "Selecionar tudo" + }, + "selectAnAccount": { + "message": "Selecione uma conta" + }, + "selectAnAccountAlreadyConnected": { + "message": "Essa conta já foi conectada à MetaMask" + }, + "selectEachPhrase": { + "message": "Selecione cada frase para garantir que esteja correta." + }, + "selectHdPath": { + "message": "Selecione o caminho do disco rígido" + }, + "selectNFTPrivacyPreference": { + "message": "Ative a detecção de NFTs nas configurações" + }, + "selectPathHelp": { + "message": "Se você não vir as contas esperadas, tente trocar o caminho do HD." + }, "selectType": { "message": "Selecionar Tipo" }, + "selectingAllWillAllow": { + "message": "Selecionar todos permitirá que esse site visualize todas as suas contas atuais. Certifique-se de confiar nesse site." + }, "send": { "message": "Enviar" }, + "sendAmount": { + "message": "Enviar valor" + }, + "sendSpecifiedTokens": { + "message": "Enviar $1", + "description": "Symbol of the specified token" + }, + "sendTo": { + "message": "Enviar para" + }, "sendTokens": { "message": "Enviar Tokens" }, + "sendingDisabled": { + "message": "O envio de ativos NFT ERC-1155 ainda não é aceito." + }, + "sendingNativeAsset": { + "message": "Enviando $1", + "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" + }, + "setAdvancedPrivacySettings": { + "message": "Definir configurações avançadas de privacidade" + }, + "setAdvancedPrivacySettingsDetails": { + "message": "A MetaMask utiliza esses serviços terceirizados de confiança para aumentar a usabilidade e a segurança dos produtos." + }, "settings": { "message": "Definições" }, + "settingsSearchMatchingNotFound": { + "message": "Nenhum resultado correspondente encontrado." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, + "show": { + "message": "Exibir" + }, + "showAdvancedGasInline": { + "message": "Controles avançados de gás" + }, + "showAdvancedGasInlineDescription": { + "message": "Selecione isso para mostrar o preço do gás e limitar os controles diretamente nas telas de envio e de confirmação." + }, + "showFiatConversionInTestnets": { + "message": "Mostrar conversão nas redes de teste" + }, + "showFiatConversionInTestnetsDescription": { + "message": "Selecione essa opção para mostrar a conversão de moeda fiduciária nas redes de teste" + }, + "showHexData": { + "message": "Exibir dados em hexa" + }, + "showHexDataDescription": { + "message": "Selecione essa opção para mostrar o campo de dados hexadecimais na tela de envio" + }, + "showHide": { + "message": "Mostrar/ocultar" + }, + "showIncomingTransactions": { + "message": "Mostrar transações recebidas" + }, + "showIncomingTransactionsDescription": { + "message": "Selecione essa opção para usar o Etherscan e mostrar as transações recebidas na lista de transações" + }, + "showPermissions": { + "message": "Mostrar permissões" + }, "showPrivateKeys": { "message": "Mostrar Chaves Privadas" }, + "showRecommendations": { + "message": "Mostrar recomendações" + }, + "showTestnetNetworks": { + "message": "Mostrar redes de teste" + }, + "showTestnetNetworksDescription": { + "message": "Selecione essa opção para mostrar redes de teste na lista de redes" + }, "sigRequest": { "message": "Pedido de Assinatura" }, @@ -323,65 +2848,1127 @@ "signatureRequest": { "message": "Pedido de Assinatura" }, + "signatureRequest1": { + "message": "Mensagem" + }, + "signed": { + "message": "Assinado" + }, + "simulationErrorMessageV2": { + "message": "Não conseguimos estimar o preço do gás. Pode haver um erro no contrato, e essa transação poderá falhar." + }, + "skip": { + "message": "Ignorar" + }, + "skipAccountSecurity": { + "message": "Ignorar a segurança da conta?" + }, + "skipAccountSecurityDetails": { + "message": "Compreendo que, até fazer o backup da minha Frase de Recuperação Secreta, poderei perder minhas contas e todos os ativos contidos nela." + }, + "slow": { + "message": "Lento" + }, + "smartTransaction": { + "message": "Transação inteligente" + }, + "snapAccess": { + "message": "Snap $1 tem acesso a:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Adicionado em $1 a partir de $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Erro no snap: '$1'. Código de erro: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Instalar snap" + }, + "snapInstallWarningCheck": { + "message": "Para confirmar que você entende, marque todas." + }, + "snapInstallWarningKeyAccess": { + "message": "Você está concedendo ao snap \"$1\" acesso à sua chave. Isso é irrevogável e concede a \"$1\" controle sobre suas contas e ativos. Certifique-se de que confia em \"$1\" antes de prosseguir.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Esse snap está solicitando as seguintes permissões:" + }, + "snaps": { + "message": "Snaps" + }, + "snapsSettingsDescription": { + "message": "Gerencie seus snaps" + }, + "snapsStatus": { + "message": "O status do snap depende da atividade." + }, + "snapsToggle": { + "message": "O snap só será executado se estiver ativado" + }, + "somethingWentWrong": { + "message": "Ops! Algo deu errado." + }, + "source": { + "message": "Origem" + }, + "speedUp": { + "message": "Acelerar" + }, + "speedUpCancellation": { + "message": "Acelerar esse cancelamento" + }, + "speedUpExplanation": { + "message": "Atualizamos a taxa de gás baseada nas condições atuais da rede e a aumentamos em pelo menos 10% (exigido pela rede)." + }, + "speedUpPopoverTitle": { + "message": "Acelerar transação" + }, + "speedUpTooltipText": { + "message": "Nova taxa de Gas" + }, + "speedUpTransaction": { + "message": "Acelerar essa transação" + }, + "spendLimitAmount": { + "message": "Valor do limite de gastos" + }, + "spendLimitInsufficient": { + "message": "Limite de gastos insuficiente" + }, + "spendLimitInvalid": { + "message": "Limite de gastos inválido; o número precisa ser positivo" + }, + "spendLimitPermission": { + "message": "Permissão de limite de gasto" + }, + "spendLimitRequestedBy": { + "message": "Limite de gastos solicitado por $1", + "description": "Origin of the site requesting the spend limit" + }, + "spendLimitTooLarge": { + "message": "O limite de gastos está alto demais" + }, + "srpInputNumberOfWords": { + "message": "Eu tenho uma frase com $1 palavras", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "A função colar falhou porque continha mais de 24 palavras. Uma frase secreta de recuperação pode ter no máximo 24 palavras.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Você pode colar a sua frase secreta de recuperação inteira em qualquer campo", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Mostrar/Ocultar esta palavra da frase secreta de recuperação", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Esta palavra está oculta", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Esta palavra está sendo mostrada", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, + "stable": { + "message": "Estável" + }, + "stableLowercase": { + "message": "estável" + }, + "stateLogError": { + "message": "Erro ao recuperar os registros de estado." + }, + "stateLogFileName": { + "message": "Registros de estado da MetaMask" + }, "stateLogs": { "message": "Registos de Estado" }, "stateLogsDescription": { "message": "Registo de estado podem conter o seu endereço e transações enviadas da sua conta pública." }, + "status": { + "message": "Status" + }, + "statusConnected": { + "message": "Conectado" + }, + "statusNotConnected": { + "message": "Não conectado" + }, + "step1LatticeWallet": { + "message": "Confirme que seu Lattice1 está pronto para se conectar" + }, + "step1LatticeWalletMsg": { + "message": "Você pode conectar a MetaMask ao seu dispositivo Lattice1 quando ele estiver configurado e online. Desbloqueie seu dispositivo e tenha o ID do seu dispositivo em mãos. Para saber mais sobre como usar carteiras de hardware, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, + "step1LedgerWallet": { + "message": "Baixar o aplicativo do Ledger" + }, + "step1LedgerWalletMsg": { + "message": "Baixe, configure e insira sua senha para desbloquear $1.", + "description": "$1 represents the `ledgerLiveApp` localization value" + }, + "step1TrezorWallet": { + "message": "Conecte a carteira Trezor" + }, + "step1TrezorWalletMsg": { + "message": "Conecte sua carteira diretamente ao seu computador. Para obter mais informações sobre como usar seu dispositivo de carteira de hardware, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, + "step2LedgerWallet": { + "message": "Conecte a carteira Ledger" + }, + "step2LedgerWalletMsg": { + "message": "Conecte sua carteira diretamente ao seu computador. Desbloqueie seu Ledger e abra o aplicativo do Ethereum. Para obter mais informações sobre como usar seu dispositivo de carteira de hardware, $1.", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, + "storePhrase": { + "message": "Guarde essa frase em um gerenciador de senhas, como o 1Password." + }, + "strong": { + "message": "Forte" + }, + "stxAreHere": { + "message": "As transações inteligentes chegaram!" + }, + "stxBenefit1": { + "message": "Minimize os custos das transações" + }, + "stxBenefit2": { + "message": "Reduza as falhas nas transações" + }, + "stxBenefit3": { + "message": "Elimine transações travadas" + }, + "stxBenefit4": { + "message": "Previna o front-running (uso de informações privilegiadas para negociações)" + }, + "stxCancelled": { + "message": "A swap teria falhado" + }, + "stxCancelledDescription": { + "message": "Sua transação teria falhado e foi cancelada para protegê-lo de pagar taxas de gás desnecessárias." + }, + "stxCancelledSubDescription": { + "message": "Tente fazer sua swap novamente. Estaremos aqui para te proteger contra riscos semelhantes no futuro." + }, + "stxDescription": { + "message": "As swaps na MetaMask ficaram muito mais inteligentes! A ativação de Transações Inteligentes permite que o MetaMask otimize programaticamente suas swaps para evitar:" + }, + "stxErrorNotEnoughFunds": { + "message": "Insuficiência de fundos para fazer uma transação inteligente." + }, + "stxErrorUnavailable": { + "message": "Indisponibilidade temporária de Transações Inteligentes." + }, + "stxFailure": { + "message": "Falha na troca" + }, + "stxFailureDescription": { + "message": "Mudanças repentinas no mercado podem causar falhas. Se o problema persistir, entre em contato com $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "As Transações Inteligentes estão temporariamente indisponíveis porque você tem uma transação pendente." + }, + "stxFallbackUnavailable": { + "message": "Você ainda pode fazer swap com seus tokens mesmo quando as Transações Inteligentes estiverem indisponíveis." + }, + "stxPendingFinalizing": { + "message": "Finalizando..." + }, + "stxPendingOptimizingGas": { + "message": "Otimizando as taxas de gás..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Enviando a Swap de forma privada..." + }, + "stxSubDescription": { + "message": "* A função de Transações Inteligentes tentará enviar a sua transação várias vezes de forma privada. Se todas as tentativas falharem, a transação será transmitida publicamente para garantir que sua Swap seja realizada com sucesso." + }, + "stxSuccess": { + "message": "Swap concluído!" + }, + "stxSuccessDescription": { + "message": "Seu $1 já está disponível.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Simule as transações antes de finalizar para diminuir os custos de transação e reduzir a possibilidade de falhas." + }, + "stxTryRegular": { + "message": "Tente fazer uma swap comum." + }, + "stxTryingToCancel": { + "message": "Tentando cancelar sua transação..." + }, + "stxUnavailable": { + "message": "As Transações Inteligentes estão desativadas" + }, + "stxUnknown": { + "message": "Status desconhecido" + }, + "stxUnknownDescription": { + "message": "Uma transação foi bem-sucedida, mas não temos certeza do que se trata. Isso pode ter ocorrido em razão do envio de outra transação enquanto esse swap era processado." + }, + "stxUserCancelled": { + "message": "Swap cancelado" + }, + "stxUserCancelledDescription": { + "message": "Sua transação foi cancelada e você não pagou nenhuma taxa de gás desnecessária." + }, + "stxYouCanOptOut": { + "message": "Você pode cancelar a participação a qualquer momento nas configurações avançadas." + }, + "submit": { + "message": "Enviar" + }, + "submitted": { + "message": "Enviada" + }, + "support": { + "message": "Suporte" + }, "supportCenter": { "message": "Visitar o nosso Centro de Suporte" }, + "swap": { + "message": "Swap" + }, + "swapAdvancedSlippageInfo": { + "message": "Se o preço varia entre o momento em que a sua ordem é efetuada e o momento em que é confirmada, isso recebe o nome de \"slippage\". Sua troca será automaticamente cancelada se o slippage exceder a sua configuração de \"slippage máximo\"." + }, + "swapAggregator": { + "message": "Agregador" + }, + "swapAllowSwappingOf": { + "message": "Permitir troca de $1", + "description": "Shows a user that they need to allow a token for swapping on their hardware wallet" + }, + "swapAmountReceived": { + "message": "Valor garantido" + }, + "swapAmountReceivedInfo": { + "message": "Esse é o valor mínimo que você receberá. Você pode receber mais, dependendo do slippage." + }, + "swapApproval": { + "message": "Aprovar $1 para trocas", + "description": "Used in the transaction display list to describe a transaction that is an approve call on a token that is to be swapped.. $1 is the symbol of a token that has been approved." + }, + "swapApproveNeedMoreTokens": { + "message": "Você precisa de mais $1 $2 para concluir essa troca", + "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." + }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Você precisa de mais $1 para completar esse swap usando transações inteligentes.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, + "swapBestOfNQuotes": { + "message": "Melhores cotações de $1.", + "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" + }, + "swapBuildQuotePlaceHolderText": { + "message": "Nenhum token disponível correspondente a $1", + "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" + }, + "swapCompleteIn": { + "message": "Swap concluído em <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, + "swapConfirmWithHwWallet": { + "message": "Confirme com sua carteira de hardware" + }, + "swapContractDataDisabledErrorDescription": { + "message": "No aplicativo do Ethereum em seu Ledger, vá para \"Configurações\" e habilite os dados do contrato. Em seguida, tente sua troca novamente." + }, + "swapContractDataDisabledErrorTitle": { + "message": "Os dados do contrato não estão habilitados em seu Ledger" + }, + "swapCustom": { + "message": "personalizado" + }, + "swapDecentralizedExchange": { + "message": "Exchange descentralizada" + }, + "swapDirectContract": { + "message": "Contrato direto" + }, + "swapEditLimit": { + "message": "Editar limite" + }, + "swapEnableDescription": { + "message": "Isso é obrigatório e dá à MetaMask permissão para trocar o seu $1.", + "description": "Gives the user info about the required approval transaction for swaps. $1 will be the symbol of a token being approved for swaps." + }, + "swapEnableTokenForSwapping": { + "message": "Isso vai $1 para trocas", + "description": "$1 is for the 'enableToken' key, e.g. 'enable ETH'" + }, + "swapEstimatedNetworkFees": { + "message": "Taxas de rede estimadas" + }, + "swapEstimatedNetworkFeesInfo": { + "message": "Essa é a estimativa da taxa de rede que será usada para concluir sua troca. O valor real pode mudar conforme as condições de rede." + }, + "swapFailedErrorDescriptionWithSupportLink": { + "message": "Falhas na transação acontecem, e estamos aqui para ajudar. Se esse problema persistir, você pode entrar em contato com nosso atendimento ao cliente em $1 para receber assistência adicional.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "swapFailedErrorTitle": { + "message": "Falha na troca" + }, + "swapFetchingQuoteNofN": { + "message": "Obtendo cotação $1 de $2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, + "swapFetchingQuotes": { + "message": "Buscando cotações" + }, + "swapFetchingQuotesErrorDescription": { + "message": "Hmmm, ocorreu algum erro. Tente novamente. Ou, se os erros persistirem, entre em contato com o suporte." + }, + "swapFetchingQuotesErrorTitle": { + "message": "Erro ao obter cotações" + }, + "swapFetchingTokens": { + "message": "Obtendo tokens..." + }, + "swapFromTo": { + "message": "A troca de $1 para $2", + "description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token" + }, + "swapGasFeesDetails": { + "message": "As taxas de gás são estimadas e oscilam com base no tráfego da rede e na complexidade da transação." + }, + "swapGasFeesLearnMore": { + "message": "Saiba mais sobre as taxas de Gas" + }, + "swapGasFeesSplit": { + "message": "As taxas de gás da tela anterior estão divididas entre essas duas transações." + }, + "swapGasFeesSummary": { + "message": "As taxas de gás são pagas aos mineradores de criptoativos que processam as transações na rede de $1. A MetaMask não lucra com taxas de gás.", + "description": "$1 is the selected network, e.g. Ethereum or BSC" + }, + "swapHighSlippageWarning": { + "message": "O valor de slippage está muito alto." + }, + "swapIncludesMMFee": { + "message": "Inclui uma taxa de $1% da MetaMask.", + "description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number." + }, + "swapLowSlippageError": { + "message": "A transação pode falhar; o slippage máximo está baixo demais." + }, + "swapMaxSlippage": { + "message": "Slippage máximo" + }, + "swapMetaMaskFee": { + "message": "Taxa da MetaMask" + }, + "swapMetaMaskFeeDescription": { + "message": "Encontramos o melhor preço das principais fontes de liquidez – todas as vezes. Uma taxa de $1% é automaticamente incorporada nessa cotação.", + "description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number." + }, + "swapNQuotesWithDot": { + "message": "$1 cotações.", + "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" + }, + "swapNewQuoteIn": { + "message": "Novas cotações em $1", + "description": "Tells the user the amount of time until the currently displayed quotes are update. $1 is a time that is counting down from 1:00 to 0:00" + }, + "swapOnceTransactionHasProcess": { + "message": "Seu $1 será adicionado à sua conta quando essa transação for processada.", + "description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol." + }, + "swapPriceDifference": { + "message": "Você está prestes a trocar $1 $2 (~$3) por $4 $5 (~$6).", + "description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts." + }, + "swapPriceDifferenceTitle": { + "message": "Diferença de preço de aproximadamente $1%", + "description": "$1 is a number (ex: 1.23) that represents the price difference." + }, + "swapPriceImpactTooltip": { + "message": "O impacto do preço é a diferença entre o preço de mercado atual e o valor recebido quando é executada a transação. O impacto do preço é resultado do tamanho da sua transação relativo ao tamanho do pool de liquidez." + }, + "swapPriceUnavailableDescription": { + "message": "O impacto no preço não pôde ser determinado devido à ausência de dados sobre o preço de mercado. Confirme que você está satisfeito com a quantidade de tokens que você está prestes a receber antes de fazer a troca." + }, + "swapPriceUnavailableTitle": { + "message": "Verifique o preço antes de prosseguir" + }, + "swapProcessing": { + "message": "Processando" + }, + "swapQuoteDetails": { + "message": "Detalhes da cotação" + }, + "swapQuoteDetailsSlippageInfo": { + "message": "Se o preço varia entre o momento em que a sua ordem é efetuada e o momento em que é confirmada, isso recebe o nome de \"slippage\". Sua troca será automaticamente cancelada se o slippage for superior à configuração de \"tolerância a slippage\"." + }, + "swapQuoteSource": { + "message": "Fonte da cotação" + }, + "swapQuotesExpiredErrorDescription": { + "message": "Solicite novas cotações para receber as taxas mais recentes." + }, + "swapQuotesExpiredErrorTitle": { + "message": "Cotações vencidas" + }, + "swapQuotesNotAvailableErrorDescription": { + "message": "Experimente ajustar a quantidade ou as configurações de slippage e tente novamente." + }, + "swapQuotesNotAvailableErrorTitle": { + "message": "Não há cotações disponíveis" + }, + "swapRate": { + "message": "Preço" + }, + "swapReceiving": { + "message": "Recebendo" + }, + "swapReceivingInfoTooltip": { + "message": "Essa é uma estimativa. O valor exato dependerá do slippage." + }, + "swapRequestForQuotation": { + "message": "Solicitação de cotação" + }, + "swapReviewSwap": { + "message": "Revisar troca" + }, + "swapSearchForAToken": { + "message": "Pesquisar um token" + }, + "swapSelect": { + "message": "Selecione" + }, + "swapSelectAQuote": { + "message": "Selecione uma cotação" + }, + "swapSelectAToken": { + "message": "Selecionar um token" + }, + "swapSelectQuotePopoverDescription": { + "message": "Abaixo estão todas as cotações reunidas de diversas fontes de liquidez." + }, + "swapSlippageNegative": { + "message": "O slippage deve ser maior ou igual a zero" + }, + "swapSource": { + "message": "Fonte de liquidez" + }, + "swapSourceInfo": { + "message": "Pesquisamos várias fontes de liquidez (exchanges, agregadores e formadores de mercado profissionais) para descobrir as melhores tarifas e as taxas de rede mais baixas." + }, + "swapSuggested": { + "message": "Troca sugerida" + }, + "swapSuggestedGasSettingToolTipMessage": { + "message": "Trocas (swaps) são transações complexas e urgentes. Recomendamos essa taxa de gás para atingir o equilíbrio ideal entre o custo e a confiança de uma troca bem-sucedida." + }, + "swapSwapFrom": { + "message": "Trocar de" + }, + "swapSwapSwitch": { + "message": "Trocar de e para tokens" + }, + "swapSwapTo": { + "message": "Trocar por" + }, + "swapToConfirmWithHwWallet": { + "message": "para confirmar com a sua carteira de hardware" + }, + "swapTokenAvailable": { + "message": "Seu $1 foi adicionado à sua conta.", + "description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol." + }, + "swapTokenBalanceUnavailable": { + "message": "Não foi possível obter seu saldo de $1", + "description": "This message communicates to the user that their balance of a given token is currently unavailable. $1 will be replaced by a token symbol" + }, + "swapTokenToToken": { + "message": "Trocar $1 por $2", + "description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap." + }, + "swapTokenVerificationAddedManually": { + "message": "Esse token foi adicionado manualmente." + }, + "swapTokenVerificationMessage": { + "message": "Sempre confirme o endereço do token no $1.", + "description": "Points the user to Etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"Etherscan\" followed by an info icon that shows more info on hover." + }, + "swapTokenVerificationOnlyOneSource": { + "message": "Verificado somente em 1 fonte." + }, + "swapTokenVerificationSources": { + "message": "Verificado em $1 fontes.", + "description": "Indicates the number of token information sources that recognize the symbol + address. $1 is a decimal number." + }, + "swapTooManyDecimalsError": { + "message": "$1 permite até $2 decimais", + "description": "$1 is a token symbol and $2 is the max. number of decimals allowed for the token" + }, + "swapTransactionComplete": { + "message": "Transação concluída" + }, + "swapTwoTransactions": { + "message": "2 transações" + }, + "swapUnknown": { + "message": "Desconhecido" + }, + "swapVerifyTokenExplanation": { + "message": "Vários tokens podem usar o mesmo nome e símbolo. Confira $1 para verificar se esse é o token que você está buscando.", + "description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network." + }, + "swapYourTokenBalance": { + "message": "$1 $2 disponível para troca", + "description": "Tells the user how much of a token they have in their balance. $1 is a decimal number amount of tokens, and $2 is a token symbol" + }, + "swapZeroSlippage": { + "message": "0% de slippage" + }, + "swapsAdvancedOptions": { + "message": "Opções avançadas" + }, + "swapsExcessiveSlippageWarning": { + "message": "O valor de slippage está muito alto e resultará em uma taxa ruim. Reduza sua tolerância a slippage para um valor inferior a 15%." + }, + "swapsMaxSlippage": { + "message": "Tolerância a slippage" + }, + "swapsNotEnoughForTx": { + "message": "Não há $1 suficiente para concluir essa transação", + "description": "Tells the user that they don't have enough of a token for a proposed swap. $1 is a token symbol" + }, + "swapsViewInActivity": { + "message": "Ver na atividade" + }, + "switchEthereumChainConfirmationDescription": { + "message": "Isso mudará a rede selecionada dentro da MetaMask para uma rede adicionada anteriormente:" + }, + "switchEthereumChainConfirmationTitle": { + "message": "Permitir que esse site troque a rede?" + }, + "switchNetwork": { + "message": "Trocar de rede" + }, + "switchNetworks": { + "message": "Trocar redes" + }, + "switchToThisAccount": { + "message": "Trocar para esta conta" + }, + "switchingNetworksCancelsPendingConfirmations": { + "message": "A troca de redes cancelará todas as confirmações pendentes" + }, + "symbol": { + "message": "Símbolo" + }, "symbolBetweenZeroTwelve": { "message": "O símbolo deve ter 11 caracteres ou menos." }, + "syncFailed": { + "message": "Falha na sincronização" + }, + "syncInProgress": { + "message": "Sincronização em andamento" + }, + "syncWithMobile": { + "message": "Sincronizar com dispositivo móvel" + }, + "syncWithMobileBeCareful": { + "message": "Ao escanear esse código, verifique se não há mais ninguém olhando para a sua tela" + }, + "syncWithMobileComplete": { + "message": "Seus dados foram sincronizados. Curta o app da MetaMask para dispositivos móveis!" + }, + "syncWithMobileDesc": { + "message": "Você pode sincronizar suas contas e informações com o seu dispositivo móvel. Abra o aplicativo da MetaMask para dispositivos móveis, acesse \"Configurações\" e toque em \"Sincronizar pela extensão do navegador\"" + }, + "syncWithMobileDescNewUsers": { + "message": "Se você tiver acabado de abrir o app da MetaMask para dispositivos móveis pela primeira vez, basta seguir as etapas no seu telefone." + }, + "syncWithMobileScanThisCode": { + "message": "Escaneie esse código com seu app da MetaMask para dispositivos móveis" + }, + "syncWithMobileTitle": { + "message": "Sincronizar com dispositivo móvel" + }, + "syncWithThreeBox": { + "message": "Sincronizar dados com 3Box (experimental)" + }, + "syncWithThreeBoxDescription": { + "message": "Ative para fazer backup das suas configurações com o 3Box. Esse recurso é experimental; use por sua conta e risco." + }, + "syncWithThreeBoxDisabled": { + "message": "O 3Box foi desabilitado por conta de um erro durante a sincronização inicial" + }, + "tenPercentIncreased": { + "message": "10% de aumento" + }, "terms": { "message": "Termos de Uso" }, + "termsOfService": { + "message": "Termos de Serviço" + }, "testFaucet": { "message": "Faucet de Teste" }, + "testNetworks": { + "message": "Redes de teste" + }, + "theme": { + "message": "Tema" + }, + "themeDescription": { + "message": "Escolha o seu tema preferido para a MetaMask." + }, + "thisWillCreate": { + "message": "Isso criará uma nova carteira e Frase de Recuperação Secreta" + }, + "time": { + "message": "Hora" + }, + "tips": { + "message": "Dicas" + }, "to": { "message": "Para" }, + "toAddress": { + "message": "Para: $1", + "description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress" + }, + "toggleTestNetworks": { + "message": "$1 redes de teste", + "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open to the advanced settings where users can enable the display of test networks in the network dropdown." + }, + "token": { + "message": "Token" + }, + "tokenAddress": { + "message": "Endereço do token" + }, "tokenAlreadyAdded": { "message": "Token já foi adicionado." }, + "tokenContractAddress": { + "message": "Endereço de contrato do token" + }, + "tokenDecimalFetchFailed": { + "message": "A casa decimal do token é necessária." + }, + "tokenDecimalTitle": { + "message": "Precisão em Decimais:" + }, + "tokenDetails": { + "message": "Dados do token" + }, + "tokenDetection": { + "message": "Detecção de token" + }, + "tokenDetectionAlertMessage": { + "message": "A detecção de tokens está atualmente disponível em $1. $2" + }, + "tokenDetectionAnnouncement": { + "message": "Novidade! A detecção aprimorada de token está disponível na Mainnet do Ethereum como uma funcionalidade experimental. $1" + }, + "tokenDetectionToggleDescription": { + "message": "A API de token da ConsenSys agrega uma lista de tokens de várias listas de tokens de terceiros. Se você desativá-la, não haverá detecção de novos tokens adicionados à sua carteira, mas continuará com a opção de procurar tokens para importar." + }, + "tokenId": { + "message": "ID do token" + }, + "tokenList": { + "message": "Listas de tokens:" + }, "tokenSymbol": { "message": "Símbolo do Token" }, + "tooltipApproveButton": { + "message": "Eu compreendo" + }, + "total": { + "message": "Total" + }, + "transaction": { + "message": "transação" + }, + "transactionCancelAttempted": { + "message": "Cancelamento da transação tentado com taxa de gás de $1 às $2" + }, + "transactionCancelSuccess": { + "message": "Transação cancelada às $2" + }, + "transactionConfirmed": { + "message": "Transação confirmada às $2." + }, + "transactionCreated": { + "message": "Transação criada com valor de $1 às $2." + }, + "transactionData": { + "message": "Dados da transação" + }, + "transactionDecodingAccreditationDecoded": { + "message": "Decodificado por Truffle" + }, + "transactionDecodingAccreditationVerified": { + "message": "Contrato verificado em $1" + }, + "transactionDecodingUnsupportedNetworkError": { + "message": "A decodificação da transação não está disponível para o chainId $1" + }, + "transactionDetailDappGasMoreInfo": { + "message": "Site sugerido" + }, + "transactionDetailDappGasTooltip": { + "message": "Edite para usar a taxa de gás recomendada pela MetaMask com base no bloco mais recente." + }, + "transactionDetailGasHeading": { + "message": "Taxa de Gas estimada" + }, + "transactionDetailGasInfoV2": { + "message": "estimada" + }, + "transactionDetailGasTooltipConversion": { + "message": "Saiba mais sobre as taxas de Gas" + }, + "transactionDetailGasTooltipExplanation": { + "message": "As taxas de Gas são definidas pela rede e flutuam com base no tráfego da rede e na complexidade da transação." + }, + "transactionDetailGasTooltipIntro": { + "message": "As taxas de gás são pagas aos mineradores de criptoativos que processam as transações na rede de $1. A MetaMask não lucra com taxas de gás." + }, + "transactionDetailGasTotalSubtitle": { + "message": "Valor + taxa de gás" + }, + "transactionDetailLayer2GasHeading": { + "message": "Taxa de gás de camada 2" + }, + "transactionDetailMultiLayerTotalSubtitle": { + "message": "Valor + taxas" + }, + "transactionDropped": { + "message": "Transação abandonada às $2." + }, + "transactionError": { + "message": "Erro de transação. Exceção gerada no código do contrato." + }, + "transactionErrorNoContract": { + "message": "Tentando chamar uma função em um endereço que não está no contrato." + }, + "transactionErrored": { + "message": "A transação encontrou um erro." + }, + "transactionFee": { + "message": "Taxa de transação" + }, + "transactionHistoryBaseFee": { + "message": "Taxa de base (GWEI)" + }, + "transactionHistoryL1GasLabel": { + "message": "Taxa de gás L1 total" + }, + "transactionHistoryL2GasLimitLabel": { + "message": "Limite de gás L2" + }, + "transactionHistoryL2GasPriceLabel": { + "message": "Preço do gás L2" + }, + "transactionHistoryMaxFeePerGas": { + "message": "Taxa máxima por gás" + }, + "transactionHistoryPriorityFee": { + "message": "Taxa de prioridade (GWEI)" + }, + "transactionHistoryTotalGasFee": { + "message": "Taxa de gás total" + }, + "transactionResubmitted": { + "message": "Transação reenviada com taxa de gás aumentada para $1 às $2" + }, + "transactionSubmitted": { + "message": "Transação enviada com taxa de gás estimada de $1 às $2." + }, + "transactionUpdated": { + "message": "Transação atualizada às $2." + }, + "transfer": { + "message": "Transferir" + }, + "transferBetweenAccounts": { + "message": "Transferir entre minhas contas" + }, + "transferFrom": { + "message": "Transferir de" + }, + "troubleConnectingToWallet": { + "message": "Tivemos dificuldade para conectar-nos à sua $1. Revise $2 e tente novamente.", + "description": "$1 is the wallet device name; $2 is a link to wallet connection guide" + }, "troubleTokenBalances": { "message": "Tivemos um problema a carregar o balanço dos seus tokens. Pode vê-los em ", "description": "Followed by a link (here) to view token balances" }, + "trustSiteApprovePermission": { + "message": "Ao conceder permissão, você estará autorizando que o $1 a seguir acesse seus fundos" + }, + "tryAgain": { + "message": "Tente novamente" + }, + "turnOnTokenDetection": { + "message": "Ativar detecção avançada de token" + }, + "twelveHrTitle": { + "message": "12 h:" + }, + "txInsightsNotSupported": { + "message": "As informações sobre transações não são suportadas para esse contrato, por ora." + }, "typePassword": { "message": "Digite a sua Palavra-passe" }, + "u2f": { + "message": "U2F", + "description": "A name on an API for the browser to interact with devices that support the U2F protocol. On some browsers we use it to connect MetaMask to Ledger devices." + }, + "unapproved": { + "message": "Não aprovado" + }, + "units": { + "message": "unidades" + }, "unknown": { "message": "Desconhecido" }, + "unknownCameraError": { + "message": "Houve um erro ao tentar acessar sua câmera. Tente novamente..." + }, + "unknownCameraErrorTitle": { + "message": "Ops! Algo deu errado...." + }, "unknownNetwork": { "message": "Rede Privada Desconhecida" }, + "unknownQrCode": { + "message": "Erro: não conseguimos identificar esse QR code" + }, + "unlimited": { + "message": "Ilimitado" + }, "unlock": { "message": "Entrar" }, + "unlockMessage": { + "message": "A web descentralizada te aguarda" + }, + "unrecognizedChain": { + "message": "Essa rede personalizada não foi reconhecida. Recomendamos que você $1 antes de continuar", + "description": "$1 is a clickable link with text defined by the 'unrecognizedChanLinkText' key. The link will open to instructions for users to validate custom network details." + }, + "unrecognizedChainLinkText": { + "message": "verifique os detalhes da rede", + "description": "Serves as link text for the 'unrecognizedChain' key. This text will be embedded inside the translation for that key." + }, + "unsendableAsset": { + "message": "O envio de tokens colecionáveis (ERC-721) não é suportado no momento", + "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" + }, + "unverifiedContractAddressMessage": { + "message": "Não conseguimos verificar esse contrato. Certifique-se de que você confia nesse endereço." + }, + "upArrow": { + "message": "seta para cima" + }, + "updatedWithDate": { + "message": "Atualizado em $1" + }, "urlErrorMsg": { "message": "Links requerem o prefixo HTTP/HTTPS apropriado." }, + "urlExistsErrorMsg": { + "message": "O ID da cadeia está sendo usado pela rede $1." + }, + "useCollectibleDetection": { + "message": "Detectar NFTs automaticamente" + }, + "useCollectibleDetectionDescription": { + "message": "A exibição de mídias e dados de NFTs pode expor seu endereço IP para servidores centralizados. APIs terceirizadas (como a OpenSea) são utilizadas para detectar NFTs na sua carteira. Isso expõe o endereço da sua conta com esses serviços. Deixe essa opção desativada se você não quer que o aplicativo extraia dados desses serviços." + }, + "usePhishingDetection": { + "message": "Usar detecção de phishing" + }, + "usePhishingDetectionDescription": { + "message": "Exibir uma advertência para os domínios de phishing destinados a usuários do Ethereum" + }, + "useTokenDetection": { + "message": "Usar detecção de tokens" + }, + "useTokenDetectionDescription": { + "message": "Utilizamos APIs terceirizadas para detectar e exibir novos tokens enviados à sua carteira. Desative essa opção se não deseja que a MetaMask extraia dados desses serviços." + }, + "useTokenDetectionPrivacyDesc": { + "message": "A exibição automática de tokens enviados para a sua conta envolve a comunicação com servidores de terceiros para buscar as imagens dos tokens. Esses servidores terão acesso ao seu endereço IP." + }, "usedByClients": { "message": "Utilizado por vários tipos de clientes" }, + "userName": { + "message": "Nome de usuário" + }, + "verifyThisTokenDecimalOn": { + "message": "Os decimais do token podem ser encontrados no $1", + "description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\"" + }, + "verifyThisTokenOn": { + "message": "Verifique esse token no $1", + "description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\"" + }, + "verifyThisUnconfirmedTokenOn": { + "message": "Verifique esse token no $1 e confirme que é o token que você deseja negociar.", + "description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\"" + }, "viewAccount": { "message": "Ver Conta" }, + "viewAllDetails": { + "message": "Ver todos os detalhes" + }, + "viewContact": { + "message": "Ver contato" + }, + "viewFullTransactionDetails": { + "message": "Ver detalhes completos da transação" + }, + "viewMore": { + "message": "Ver mais" + }, + "viewOnBlockExplorer": { + "message": "Ver no explorador de blocos" + }, + "viewOnCustomBlockExplorer": { + "message": "Ver $1 em $2", + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + }, + "viewOnEtherscan": { + "message": "Ver $1 no Etherscan", + "description": "$1 is the action type. e.g (Account, Transaction, Swap)" + }, + "viewOnOpensea": { + "message": "Ver no Opensea" + }, + "viewinExplorer": { + "message": "Ver $1 no Explorer", + "description": "$1 is the action type. e.g (Account, Transaction, Swap)" + }, "visitWebSite": { "message": "Visite o nosso site" }, + "walletConnectionGuide": { + "message": "nosso guia de conexão com a carteira de hardware" + }, + "walletCreationSuccessDetail": { + "message": "Você protegeu sua carteira com sucesso. Guarde sua Frase de Recuperação Secreta em segredo e em segurança — é sua responsabilidade!" + }, + "walletCreationSuccessReminder1": { + "message": "A MetaMask não é capaz de recuperar sua Frase de Recuperação Secreta." + }, + "walletCreationSuccessReminder2": { + "message": "A equipe da MetaMask jamais pedirá sua Frase de Recuperação Secreta." + }, + "walletCreationSuccessReminder3": { + "message": "$1 com ninguém, senão seus fundos poderão ser roubados", + "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" + }, + "walletCreationSuccessReminder3BoldSection": { + "message": "Nunca compartilhe a sua Frase de Recuperação Secreta", + "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" + }, + "walletCreationSuccessTitle": { + "message": "Carteira criada com sucesso" + }, + "weak": { + "message": "Fraca" + }, + "web3ShimUsageNotification": { + "message": "Percebemos que o site atual tentou usar a API window.web3 removida. Se o site parecer estar corrompido, clique em $1 para obter mais informações.", + "description": "$1 is a clickable link." + }, + "webhid": { + "message": "WebHID", + "description": "Refers to a interface for connecting external devices to the browser. Used for connecting ledger to the browser. Read more here https://developer.mozilla.org/en-US/docs/Web/API/WebHID_API" + }, "welcome": { "message": "Bem-vindo ao MetaMask" }, + "welcomeBack": { + "message": "Boas-vindas de volta!" + }, + "welcomeExploreDescription": { + "message": "Armazene, envie e gaste criptomoedas e criptoativos." + }, + "welcomeExploreTitle": { + "message": "Explore aplicativos descentralizados" + }, + "welcomeLoginDescription": { + "message": "Use a sua MetaMask para fazer login em aplicativos descentralizados, sem necessidade de cadastro." + }, + "welcomeLoginTitle": { + "message": "Diga olá à sua carteira" + }, + "welcomeToMetaMask": { + "message": "Vamos começar" + }, + "welcomeToMetaMaskIntro": { + "message": "Com a confiança de milhões de usuários, a MetaMask é uma carteira segura que torna o mundo da Web3 acessível a todos." + }, + "whatsNew": { + "message": "Novidades", + "description": "This is the title of a popup that gives users notifications about new features and updates to MetaMask." + }, + "whatsThis": { + "message": "O que é isso?" + }, + "writePhrase": { + "message": "Escreva essa frase em um papel e guarde-o em um local seguro. Se você quiser ainda mais segurança, anote-a em vários pedaços de papel e guarde-os em dois ou três locais diferentes." + }, + "xOfY": { + "message": "$1 de $2", + "description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total" + }, + "xOfYPending": { + "message": "$1 de $2 pendente", + "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" + }, + "yes": { + "message": "Sim" + }, + "yesLetsTry": { + "message": "Sim, vamos tentar" + }, + "youNeedToAllowCameraAccess": { + "message": "Você precisa permitir o acesso à câmera para usar esse recurso." + }, "youSign": { "message": "Está a assinar" + }, + "yourPrivateSeedPhrase": { + "message": "Sua Frase de Recuperação Secreta privada" + }, + "zeroGasPriceOnSpeedUpError": { + "message": "O preço do gás está zerado na aceleração" } } diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index c59a092a2..be4c7f7c0 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -179,9 +179,6 @@ "affirmAgree": { "message": "Concordo" }, - "aggregatorFeeCost": { - "message": "Taxa de rede do agregador" - }, "alertDisableTooltip": { "message": "Isso pode ser alterado em \"Configurações > Alertas\"" }, @@ -233,12 +230,6 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Taxa de aprovação e da rede do agregador" - }, - "approvalTxGasCost": { - "message": "Custo em gás da transação de aprovação" - }, "approve": { "message": "Aprovar limite de gastos" }, @@ -372,10 +363,10 @@ "message": "Comprar" }, "buyWithWyre": { - "message": "Comprar ETH com Wyre" + "message": "Comprar $1 com Wyre" }, "buyWithWyreDescription": { - "message": "Com o Wyre, você pode usar um cartão de débito para depositar ETH diretamente na sua conta da MetaMask." + "message": "Com o Wyre, você pode usar um cartão de débito para depositar $1 diretamente na sua conta da MetaMask." }, "bytes": { "message": "Bytes" @@ -1031,10 +1022,6 @@ "externalExtension": { "message": "Extensão externa" }, - "extraApprovalGas": { - "message": "+$1 de gás por aprovação", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Falhou" }, diff --git a/app/_locales/ro/messages.json b/app/_locales/ro/messages.json index 929bede12..002236935 100644 --- a/app/_locales/ro/messages.json +++ b/app/_locales/ro/messages.json @@ -137,10 +137,10 @@ "message": "Browserul dvs. nu este compatibil..." }, "buyWithWyre": { - "message": "Cumpărați ETH cu Wyre" + "message": "Cumpărați $1 cu Wyre" }, "buyWithWyreDescription": { - "message": "Wyre vă permite să folosiți un card de credit pentru a depune ETH direct în contul dvs. MetaMask." + "message": "Wyre vă permite să folosiți un card de credit pentru a depune $1 direct în contul dvs. MetaMask." }, "bytes": { "message": "Octeți" diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index ec80758b6..2d569b99f 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -58,6 +58,10 @@ "message": "$1 может получить доступ и потратить до этой максимальной суммы", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 может получить доступ к этому активу и потратить его", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Доступ к камере..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Реквизиты счета" }, + "accountIdenticon": { + "message": "Идентикон счета" + }, "accountName": { "message": "Имя счета" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Добавить сеть" }, + "addANetworkManually": { + "message": "Добавить сеть вручную" + }, "addANickname": { "message": "Добавить ник" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Добавьте друзей и адреса, которым доверяете" }, + "addFromAListOfPopularNetworks": { + "message": "Добавьте из списка популярных сетей или добавьте сеть вручную. Взаимодействуйте только с теми организациями, которым доверяете." + }, "addMemo": { "message": "Добавить примечание" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Я согласен(-на)" }, - "aggregatorFeeCost": { - "message": "Комиссия сети агрегатора" + "airgapVault": { + "message": "Хранилище AirGap" + }, + "airgapVaultTutorial": { + "message": "(Руководства)" }, "alertDisableTooltip": { "message": "Это можно изменить в разделе «Настройки» > «Предупреждения»" @@ -226,22 +242,19 @@ "description": "The name of the application" }, "appNameBeta": { - "message": "MetaMask Beta", + "message": "Бета-версия MetaMask", "description": "The name of the application (Beta)" }, "appNameFlask": { "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Комиссия сети за одобрение и для агрегатора" - }, - "approvalTxGasCost": { - "message": "Стоимость газа для утверждения транзакции" - }, "approve": { "message": "Одобрить лимит расходов" }, + "approveAndInstall": { + "message": "Одобрить и установить" + }, "approveButtonText": { "message": "Одобрить" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Одобренная сумма:" }, + "approvedAsset": { + "message": "Одобренный актив" + }, + "areYouDeveloper": { + "message": "Вы разработчик?" + }, + "areYouSure": { + "message": "Вы уверены?" + }, "asset": { "message": "Актив" }, @@ -356,6 +378,9 @@ "message": "Посмотреть счет в $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "«Блокиз»" + }, "browserNotSupported": { "message": "Ваш браузер не поддерживается..." }, @@ -371,11 +396,30 @@ "buy": { "message": "Купить" }, + "buyAsset": { + "message": "Купить $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Купить $1 с помощью MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay поддерживает популярные способы оплаты, включая Visa, Mastercard, Apple/Google/Samsung Pay, а также банковские переводы в 145 странах. Токены зачисляются на ваш счет MetaMask." + }, + "buyCryptoWithTransak": { + "message": "Купить $1 с помощью Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak поддерживает кредитные и дебетовые карты, Apple Pay, MobiKwik и банковские переводы (в зависимости от местоположения) в более чем 100 странах. $1 вносится прямо на ваш счет MetaMask.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Купить ETH с помощью Wyre" + "message": "Купить $1 с помощью Wyre" }, "buyWithWyreDescription": { - "message": "Wyre позволяет использовать дебетовую карту для внесения ETH прямо на ваш счет MetaMask." + "message": "Wyre позволяет использовать дебетовую карту для внесения $1 прямо на ваш счет MetaMask." }, "bytes": { "message": "Байты" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "отменить или ускорить транзакцию." }, + "cancelSpeedUpLabel": { + "message": "Эта плата за газ составит $1 от первоначальной.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Чтобы $1 транзакции плата за газ должна быть увеличена как минимум на 10%. Это позволит обеспечить прием транзакции сетью.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Отменить обмен" + }, "cancellationGasFee": { "message": "Плата за газ при отмене" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "Этот ID цепочки в настоящее время используется сетью $1." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Сеть с идентификатором цепочки $1 может использовать другой символ валюты ($2), чем тот, который вы ввели. Подтвердите, прежде чем продолжить.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Вам необходимо использовать MetaMask в Google Chrome, чтобы подключиться к аппаратному кошельку." }, @@ -423,6 +482,13 @@ "close": { "message": "Закрыть" }, + "collectibleAddFailedMessage": { + "message": "Невозможно добавить NFT, так как сведения о владельце не совпадают. Убедитесь, что вы ввели правильную информацию." + }, + "collectibleAddressError": { + "message": "Этот токен является NFT. Добавьте на $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Подтвердить" }, @@ -506,6 +572,10 @@ "message": "$1 не подключен ни к каким сайтам.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "Снап $1 подключен к этим сайтам. У них есть доступ к перечисленным выше разрешениям.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Подключение..." }, @@ -536,6 +606,9 @@ "continue": { "message": "Продолжить" }, + "continueToMoonPay": { + "message": "Перейти в MoonPay" + }, "continueToTransak": { "message": "Перейти в Transak" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "Взаимодействие по контракту" }, + "convertTokenToNFTDescription": { + "message": "Мы обнаружили, что этот актив является NFT. Metamask теперь имеет полную встроенную поддержку NFT. Хотите удалить его из списка токенов и добавить в качестве NFT?" + }, + "convertTokenToNFTExistDescription": { + "message": "Мы обнаружили, что этот актив был добавлен как NFT. Хотите удалить его из списка токенов?" + }, "copiedExclamation": { "message": "Скопировано!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "Недоступно в этой сети" }, + "curveHighGasEstimate": { + "message": "График агрессивной оценки газа" + }, + "curveLowGasEstimate": { + "message": "График низкой оценки газа" + }, + "curveMediumGasEstimate": { + "message": "График рыночной оценки газа" + }, "custom": { "message": "Дополнительно" }, + "customContentSearch": { + "message": "Поиск ранее добавленной сети" + }, "customGas": { "message": "Настроить газ" }, @@ -633,6 +724,15 @@ "customToken": { "message": "Пользовательский токен" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "Обнаружение токена пока недоступно в этой сети. Импортируйте токен вручную и убедитесь, что вы ему доверяете. Подробнее о $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Прежде чем импортировать токен вручную, убедитесь, что вы ему доверяете. Подробнее о $1" + }, + "customerSupport": { + "message": "поддержка клиентов" + }, "dappSuggested": { "message": "Рекомендовано сайтом" }, @@ -647,6 +747,9 @@ "message": "$1 рекомендовал эту цену.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Темная" + }, "data": { "message": "Данные" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "Уверены, что хотите удалить эту сеть?" }, + "depositCrypto": { + "message": "Внесите $1", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Описание" }, "details": { "message": "Подробности" }, + "directDepositCrypto": { + "message": "Внесите $1 напрямую" + }, + "directDepositCryptoExplainer": { + "message": "Если у вас уже есть немного $1, самый быстрый способ получить $1 в новый кошелек — это прямой депозит." + }, + "disabledGasOptionToolTipMessage": { + "message": "$1 отключена, поскольку не соответствует минимальному увеличению на 10% от первоначальной платы за газ.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Отключить" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "Не показывать снова" }, + "downArrow": { + "message": "стрелка «вниз»" + }, "downloadGoogleChrome": { "message": "Скачать Google Chrome" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "Изменить ник адреса" }, + "editCancellationGasFeeModalTitle": { + "message": "Изменить плату за газ за отмену" + }, "editContact": { "message": "Изменить контакт" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "Изменить разрешение" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Изменить плату за газ за ускорение" + }, "enableAutoDetect": { "message": " Включить автообнаружение" }, + "enableEIP1559V2": { + "message": "Включить расширенный интерфейс платы за газ" + }, + "enableEIP1559V2AlertMessage": { + "message": "Мы обновили принцип оценки и настройки платы за газ." + }, + "enableEIP1559V2ButtonText": { + "message": "Включите расширенный интерфейс платы за газ в Настройках." + }, + "enableEIP1559V2Description": { + "message": "Мы обновили принцип работы оценки и настройки газа. Включите эту опцию, если хотите использовать новый интерфейс газа. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Новый интерфейс газа" + }, "enableFromSettings": { "message": " Включите его в Настройках." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "Используйте API OpenSea для получения данных NFT. Для автоматического обнаружения NFT используется API OpenSea, и такое обнаружение будет недоступно, если этот API отключен." }, + "enableSmartTransactions": { + "message": "Включить смарт-транзакции" + }, "enableToken": { "message": "активирует для $1", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Посмотреть на Etherscan" }, + "expandExperience": { + "message": "Расширьте свои возможности web3" + }, "expandView": { "message": "Развернуть представление" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "Внешнее расширение" }, - "extraApprovalGas": { - "message": "+$1 газа для утверждения", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Не удалось" }, "failedToFetchChainId": { "message": "Не удалось получить ID цепочки. Ваш URL-адрес RPC правильный?" }, + "failedToFetchTickerSymbolData": { + "message": "Данные проверки тикера в настоящее время недоступны. Убедитесь, что вы ввели правильный символ. Это повлияет на коэффициенты конверсии, которые вы видите для этой сети." + }, "failureMessage": { "message": "Что-то пошло не так, и мы не смогли завершить действие" }, @@ -1062,6 +1209,26 @@ "message": "от", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "вам нужно должны удалить это расширение", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask предназначен для разработчиков,и позволяет им экспериментировать с новыми нестабильными API. Если вы не разработчик или бета-тестер, $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Мы не гарантируем безопасность и стабильность этого расширения. Новые API-интерфейсы, предлагаемые Flask, не защищены от фишинговых атак, а это означает, что любой сайт или снап, для которых требуется Flask, могут быть злонамеренной попыткой украсть ваши активы.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Все API Flask являются экспериментальными. Они могут быть изменены или удалены без предварительного уведомления или могут оставаться во Flask на неопределенный срок без переноса в стабильную версию MetaMask. Используйте их на свой страх и риск.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Я принимаю риски", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Подпишитесь на нас в Twitter" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "Забыть это устройство" }, + "forgotPassword": { + "message": "Забыли пароль?" + }, "from": { "message": "От" }, @@ -1078,6 +1248,9 @@ "message": "От: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "Из списков токенов: $1" + }, "functionApprove": { "message": "Функция: Одобрить" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Наши примерные значения низкой, средней и высокой платы недоступны." }, + "gasFee": { + "message": "Плата за газ" + }, "gasLimit": { "message": "Лимит газа" }, "gasLimitInfoTooltipContent": { "message": "Лимит газа — это максимальное количество единиц газа, которое вы готовы потратить." }, + "gasLimitRecommended": { + "message": "Рекомендуемый лимит газа — $1. Если лимит газа меньше этого, он может оказаться неэффективным." + }, "gasLimitTooLow": { "message": "Лимит газа должен быть не менее 21 000" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Тестовая сеть Goerli" }, + "gotIt": { + "message": "Понятно!" + }, "grantedToWithColon": { "message": "Предоставляется:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Мы рады вас видеть." }, @@ -1231,6 +1416,12 @@ "hide": { "message": "Скрыть" }, + "hideSeedPhrase": { + "message": "Скрыть сид-фразу" + }, + "hideToken": { + "message": "Скрыть токен" + }, "hideTokenPrompt": { "message": "Скрыть токен?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "Импорт моего кошелька" }, + "importNFT": { + "message": "Импорт NFT" + }, + "importNFTAddressToolTip": { + "message": "Например, в OpenSea на странице NFT в разделе «Подробности» есть синяя гиперссылка с надписью «Адрес контракта». Если вы нажмете на нее, вы попадете на адрес контракта на Etherscan; в левом верхнем углу этой страницы должен быть значок с надписью «Контракт», а справа — длинная строка букв и цифр. Это адрес контракта, который создал ваш NFT. Нажмите на значок «копировать» справа от адреса, и он окажется в буфере обмена." + }, + "importNFTPage": { + "message": "страницу импорта NFT" + }, + "importNFTTokenIdToolTip": { + "message": "Идентификатор коллекционного актива является уникальным идентификатором, поскольку нет двух одинаковых NFT. Опять же, в OpenSea этот номер находится в разделе «Подробности». Запишите его или скопируйте в буфер обмена." + }, "importNFTs": { "message": "Импорт NFT" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "Недостаточный баланс." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "У вас недостаточно $1 для оплаты комиссий за транзакцию в сети $2. $3 или внесите депозит с другого счета.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "У вас недостаточно $1 для оплаты комиссий за транзакцию в сети $2. Внесите $1 с другого счета.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Недостаточно средств." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "Не сеть ETH, задана в нижнем регистре" }, + "invalidAssetType": { + "message": "Этот актив является NFT, и его необходимо повторно добавить на странице «Импорт NFT», которая находится на вкладке NFT." + }, "invalidBlockExplorerURL": { "message": "Недействительный URL-адрес проводника блоков" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "Введите URL-адрес шлюза IPFS CID, который будет использоваться для разрешения содержимого ENS." }, + "jazzAndBlockies": { + "message": "«Джазиконы» и «Блокиз» — это два разных стиля уникальных значков, которые помогут вам с первого взгляда идентифицировать свой счет." + }, + "jazzicons": { + "message": "«Джазиконы»" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "Да, давайте настроим!" }, + "levelArrow": { + "message": "стрелка «уровень»" + }, "likeToImportTokens": { "message": "Вы хотели бы импортировать эти токены?" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "Загрузка..." }, + "loadingNFTs": { + "message": "Загрузка NFT..." + }, "loadingTokens": { "message": "Загрузка токенов..." }, @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "Время блокировки слишком велико" }, + "logo": { + "message": "логотип $1", + "description": "$1 is the name of the ticker" + }, "low": { "message": "Низкая" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "Сеть Ethereum Mainnet" }, + "mainnetToken": { + "message": "Этот адрес соответствует известному адресу токена Ethereum Mainnet. Перепроверьте адрес контракта и сеть для токена, который вы пытаетесь добавить." + }, "makeAnotherSwap": { "message": "Создать новый обмен" }, @@ -1515,6 +1748,12 @@ "message": "Убедитесь, что никто не смотрит на ваш экран", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Искаженные данные" + }, + "manageSnaps": { + "message": "Управляйте установленными снапами" + }, "max": { "message": "Макс." }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "Не видите свои NFT?" }, + "missingSetting": { + "message": "Не удается найти настройку?" + }, + "missingSettingRequest": { + "message": "Запросите здесь" + }, "missingToken": { "message": "Не видите свой токен?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Имя" }, + "needCryptoInWallet": { + "message": "Для взаимодействия с децентрализованными приложениями с помощью MetaMask вам понадобится $1 в вашем кошельке.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Нужна помощь? Обратитесь в $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Невозможно отправить отрицательную сумму ETH." }, + "network": { + "message": "Сеть:" + }, "networkDetails": { "message": "Сведения о сети" }, + "networkIsBusy": { + "message": "Сеть занята. Цены на газ высоки, а оценки менее точны." + }, "networkName": { "message": "Имя сети" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "Новый контракт" }, + "newNFTDetectedMessage": { + "message": "Разрешите MetaMask автоматически обнаруживать NFT из Opensea и отображать их в вашем кошельке." + }, "newNFTsDetected": { "message": "Новинка! Обнаружение NFT" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "Пока нет NFT-токенов" }, + "noSnaps": { + "message": "Снапы не установлены" + }, "noThanks": { "message": "Нет, спасибо" }, + "noThanksVariant2": { + "message": "Нет, спасибо." + }, "noTransactions": { "message": "У вас нет транзакций" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "Недостаточно газа" }, + "notifications10ActionText": { + "message": "Смотреть в настройках", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Улучшенное обнаружение токенов в настоящее время доступно в сетях Ethereum Mainnet, Polygon, BSC и Avalanche. Это еще не все!" + }, + "notifications10DescriptionThree": { + "message": "Функция обнаружения токена включена по умолчанию. Но вы можете отключить ее в настройках." + }, + "notifications10DescriptionTwo": { + "message": "Мы получаем токены из списков сторонних токенов. Токены, указанные более чем в двух списках токенов, будут обнаружены автоматически." + }, + "notifications10Title": { + "message": "Улучшено обнаружение токенов" + }, + "notifications11Description": { + "message": "Токены могут быть созданы кем угодно и могут иметь повторяющиеся имена. Если вы видите токен, которому вы не доверяете или с которым не взаимодействовали, безопаснее не доверять ему." + }, + "notifications11Title": { + "message": "Риски мошенничества и безопасности" + }, + "notifications12ActionText": { + "message": "Включить темный режим" + }, + "notifications12Description": { + "message": "Темный режим будет включен для новых пользователей в зависимости от их системных настроек. Для существующих пользователей включите темный режим вручную в разделе «Настройки» -> «Экспериментальный»." + }, + "notifications12Title": { + "message": "Когда появится темный режим? Он уже появился! ️" + }, "notifications1Description": { "message": "Теперь пользователи MetaMask Mobile могут обменивать токены в своем мобильном кошельке. Отсканируйте QR-код, чтобы скачать мобильное приложение и начать обмен.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 Мы упрощаем просмотр реквизитов транзакций." }, + "numberOfNewTokensDetected": { + "message": "$1 новых токена(-ов) найдены в этом аккаунте", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "из" }, @@ -1984,6 +2286,9 @@ "message": "Откройте MetaMask в полноэкранном режиме, чтобы подключить свой леджер через WebHID.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Проверьте исходный код" + }, "optional": { "message": "Необязательно" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "Этот пароль разблокирует ваш кошелек MetaMask только на этом устройстве. MetaMask не может восстановить этот пароль." }, + "passwordStrength": { + "message": "Надежность пароля: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Надежный пароль может повысить безопасность вашего кошелька в случае кражи или взлома вашего устройства." + }, "passwordTermsWarning": { "message": "Я понимаю, что MetaMask не может восстановить этот пароль для меня. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "Запрос разрешения" }, + "permissionRequestCapitalized": { + "message": "Запрос разрешения" + }, + "permission_accessNetwork": { + "message": "Доступ в Интернет.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Подключение к спапу $1.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Показать подтверждение в MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "См. адрес, баланс счета, активность и инициируйте транзакции", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Контролируйте свои счета и активы «$1».", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Храните и управляйте его данными на вашем устройстве.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Показать уведомления.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Неизвестное разрешение: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Разрешения" }, "personalAddressDetected": { "message": "Обнаружен личный адрес. Введите адрес контракта токена." }, + "pleaseConfirm": { + "message": "Пожалуйста, подтвердите" + }, "plusXMore": { "message": "+ еще $1", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "Предпочтительный тип подключения к леджеру", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Подготовка обмена..." + }, "prev": { "message": "Пред." }, @@ -2104,6 +2453,12 @@ "queued": { "message": "В очереди" }, + "reAddAccounts": { + "message": "повторно добавить любые другие счета" + }, + "reAdded": { + "message": "добавлены повторно" + }, "readdToken": { "message": "Вы можете снова добавить этот токен в будущем, выбрав «Импорт токена» в меню параметров вашего счета." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "Удалить NFT" }, + "removeSnap": { + "message": "Удалить снап" + }, + "removeSnapConfirmation": { + "message": "Уверены, что хотите удалить $1?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Это действие удалит снап, его данные и аннулирует предоставленные вам разрешения." + }, + "replace": { + "message": "заменить" + }, "requestsAwaitingAcknowledgement": { "message": "запросы, ожидающие подтверждения" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "Сброс вашего счета удалит историю транзакций. Это не изменит остатки на ваших счетах и не потребует повторного ввода секретной фразы для восстановления." }, + "resetWallet": { + "message": "Сбросить кошелек" + }, + "resetWalletSubHeader": { + "message": "MetaMask не хранит копию вашего пароля. Если у вас возникли проблемы с разблокировкой счета, вам необходимо сбросить настройки кошелька. Вы можете сделать это, введя секретную фразу восстановления, которую вы использовали при настройке кошелька." + }, + "resetWalletUsingSRP": { + "message": "Это действие удалит ваш текущий кошелек и секретную фразу восстановления с этого устройства, а также список счетов, которые вы курировали. После сброса с помощью секретной фразы восстановления вы увидите список счетов, основанный на секретной фразе восстановления, которую вы использовали для сброса. Этот новый список будет автоматически включать счета, на которых есть средства. Вы также сможете получить $1, созданный ранее. Пользовательские счета, которые вы импортировали, должны будут $2, и любые пользовательские токены, которые вы добавили на счет, также должны будут $3." + }, + "resetWalletWarning": { + "message": "Прежде чем продолжить, убедитесь, что вы используете правильную секретную фразу восстановления. Вы не сможете отменить это." + }, "restore": { "message": "Восстановить" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "НЕ сообщайте никому эту фразу!" }, + "revealTheSeedPhrase": { + "message": "Показать сид-фразу" + }, "rinkeby": { "message": "Тестовая сеть Rinkeby" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "Новый URL-адрес RPC" }, + "safeTransferFrom": { + "message": "Безопасный перевод из" + }, "save": { "message": "Сохранить" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Результаты поиска" }, + "searchSettings": { + "message": "Поиск в настройках" + }, "searchTokens": { "message": "Поиск токенов" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "Отправить токены" }, + "sendingDisabled": { + "message": "Отправка NFT-активов ERC-1155 пока не поддерживается." + }, "sendingNativeAsset": { "message": "Отправка $1...", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "Настройки" }, + "settingsSearchMatchingNotFound": { + "message": "Совпадений не найдено." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Показать" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "Медленный" }, + "smartTransaction": { + "message": "Смарт-транзакция" + }, + "snapAccess": { + "message": "У снапа $1 есть доступ к:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Добавлено на $1 из $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Ошибка снапа: '$1'. Код ошибки: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Установить снап" + }, + "snapInstallWarningCheck": { + "message": "Чтобы подтвердить, что вы понимаете, отметьте все." + }, + "snapInstallWarningKeyAccess": { + "message": "Вы предоставляете ключевой доступ к снапу «$1». Это действие является безотзывным и предоставляет «$1» контроль над вашими счетами и активами. Прежде чем продолжить, убедитесь, что вы доверяете «$1».", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Этот снап запрашивает следующие разрешения:" + }, + "snaps": { + "message": "Снапы" + }, + "snapsSettingsDescription": { + "message": "Управление вашим снапами" + }, + "snapsStatus": { + "message": "Статус снапа зависит от активности." + }, + "snapsToggle": { + "message": "Снап будет работать только в том случае, если он включен" + }, "somethingWentWrong": { "message": "Ой! Что-то пошло не так." }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Лимит расходов слишком велик" }, + "srpInputNumberOfWords": { + "message": "У меня есть фраза из $1 слов(-а)", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Не удалось вставить, так как он содержит более 24 слов. Секретная фраза для восстановления может содержать не более 24 слов.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Вы можете вставить всю свою секретную фразу для восстановления в любое поле", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Показать/скрыть это слово секретной фразы для восстановления", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Этот слово скрыто", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Это слово отображается", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Стабильная" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "Журналы состояния содержат открытые адреса ваших счетов и отправленные транзакции." }, + "status": { + "message": "Статус" + }, "statusConnected": { "message": "Подключено" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "Сохраните эту фразу в диспетчере паролей, например, в 1Password." }, + "strong": { + "message": "Сильный" + }, + "stxAreHere": { + "message": "Появились смарт-транзакции!" + }, + "stxBenefit1": { + "message": "Минимизируйте транзакционные издержки" + }, + "stxBenefit2": { + "message": "Уменьшите количество сбоев транзакций" + }, + "stxBenefit3": { + "message": "Устраните зависание транзакций" + }, + "stxBenefit4": { + "message": "Предотвратите опережение" + }, + "stxCancelled": { + "message": "Обмен бы не удался" + }, + "stxCancelledDescription": { + "message": "Ваша транзакция потерпела бы неудачу и была бы отменена, чтобы защитить вас от уплаты ненужной платы за газ." + }, + "stxCancelledSubDescription": { + "message": "Попробуйте обменять еще раз. Мы готовы защитить вас от подобных рисков в следующий раз." + }, + "stxDescription": { + "message": "Функция обмена в MetaMask стала намного умнее! Включение смарт-транзакций позволит MetaMask программно оптимизировать ваш обмен, чтобы помочь:" + }, + "stxErrorNotEnoughFunds": { + "message": "Недостаточно средств для смарт-транзакции." + }, + "stxErrorUnavailable": { + "message": "Смарт-транзакции временно недоступны." + }, + "stxFailure": { + "message": "Обмен не удался" + }, + "stxFailureDescription": { + "message": "Внезапные изменения на рынке могут привести к отказам. Если проблема не устранена, обратитесь по адресу $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Смарт-транзакции временно недоступны, так как у вас есть ожидающая транзакция." + }, + "stxFallbackUnavailable": { + "message": "Вы по-прежнему можете обменивать свои токены, даже если смарт-транзакции недоступны." + }, + "stxPendingFinalizing": { + "message": "Завершение..." + }, + "stxPendingOptimizingGas": { + "message": "Оптимизация газа..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Конфиденциальная отправка ооперации обмена..." + }, + "stxSubDescription": { + "message": "* Смарт-транзакции попытаются несколько раз отправить вашу транзакцию в конфиденциальном порядке. Если все попытки не увенчаются успехом, транзакция будет показана публично, чтобы гарантировать успешное завершение вашего обмена." + }, + "stxSuccess": { + "message": "Обмен завершен!" + }, + "stxSuccessDescription": { + "message": "Ваши $1 уже доступны.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Моделируйте транзакции перед отправкой, чтобы снизить транзакционные издержки и сократить число отказов." + }, + "stxTryRegular": { + "message": "Попробуйте обычный обмен." + }, + "stxTryingToCancel": { + "message": "Попытка отменить транзакцию..." + }, + "stxUnavailable": { + "message": "Смарт-транзакции отключены" + }, + "stxUnknown": { + "message": "Статус неизвестен" + }, + "stxUnknownDescription": { + "message": "Транзакция прошла успешно, но мы не уверены, что это такое. Это может быть связано с отправкой другой транзакции во время обработки этого обмена." + }, + "stxUserCancelled": { + "message": "Обмен отменен" + }, + "stxUserCancelledDescription": { + "message": "Ваша транзакция была отменена, и вы не вносили никаких ненужной платы за газ." + }, + "stxYouCanOptOut": { + "message": "Вы можете отказаться в любое время в расширенных настройках." + }, "submit": { "message": "Отправить" }, @@ -2607,6 +3168,10 @@ "message": "Вам нужно еще $1 $2 для завершения этого обмена", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Вам нужно больше $1, чтобы завершить этот обмен с использованием смарт-транзакций.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "Лучшие котировки $1.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "Нет доступных токенов, соответствующих $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Обмен завершится через <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Подтвердите с помощью аппаратного кошелька" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Обмен не удался" }, + "swapFetchingQuoteNofN": { + "message": "Получение котировки $1 из $2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Получение котировок..." }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "3Box отключен из-за ошибки во время первоначальной синхронизации" }, + "tenPercentIncreased": { + "message": "Увеличение на 10%" + }, "terms": { "message": "Условия использования" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Тестовый кран" }, + "testNetworks": { + "message": "Протестировать сети" + }, + "theme": { + "message": "Тема" + }, + "themeDescription": { + "message": "Выберите предпочитаемую тему MetaMask." + }, "thisWillCreate": { "message": "Это создаст новый кошелек и секретную фразу для восстановления" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Токен" }, + "tokenAddress": { + "message": "Адрес токена" + }, "tokenAlreadyAdded": { "message": "Токен уже добавлен." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Укажите число десятичных знаков токена." }, + "tokenDecimalTitle": { + "message": "Десятичный токен:" + }, + "tokenDetails": { + "message": "Сведения о токене" + }, + "tokenDetection": { + "message": "Обнаружение токена" + }, + "tokenDetectionAlertMessage": { + "message": "Обнаружение токена в настоящее время доступно на $1. $2" + }, "tokenDetectionAnnouncement": { "message": "Новинка! Улучшенное обнаружение токенов доступно в сети Ethereum Mainnet в качестве экспериментальной функции. $1" }, + "tokenDetectionToggleDescription": { + "message": "API токенов ConsenSys объединяет список токенов из различных списков сторонних токенов. Отключение этого параметра прекратит обнаружение новых токенов, добавляемых в ваш кошелек, но сохранит возможность поиска токенов для импорта." + }, + "tokenId": { + "message": "Ид. токена" + }, + "tokenList": { + "message": "Списки токенов:" + }, "tokenSymbol": { "message": "Символ токена" }, @@ -3133,7 +3742,7 @@ "message": "Введите свой пароль MetaMask" }, "u2f": { - "message": "U2F", + "message": "U2F:", "description": "A name on an API for the browser to interact with devices that support the U2F protocol. On some browsers we use it to connect MetaMask to Ledger devices." }, "unapproved": { @@ -3178,6 +3787,12 @@ "message": "Отправка коллекционных активов (ERC-721) сейчас не поддерживается", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Мы не можем проверить этот контракт. Убедитесь, что вы доверяете этому адресу." + }, + "upArrow": { + "message": "стрелка «вверх»" + }, "updatedWithDate": { "message": "Обновлено $1" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Мы используем сторонние API для обнаружения и отображения новых токенов, отправленных в ваш кошелек. Отключите, если не хотите, чтобы MetaMask получал данные от этих служб." }, + "useTokenDetectionPrivacyDesc": { + "message": "Автоматическое отображение токенов, отправленных на ваш счет, требует обмена данными со сторонними серверами для получения изображений токенов. Эти серверы получат доступ к вашему IP-адресу." + }, "usedByClients": { "message": "Используется множеством разных клиентов" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Кошелек создан" }, + "weak": { + "message": "Слабый" + }, "web3ShimUsageNotification": { "message": "Мы заметили, что текущий веб-сайт пытался использовать удаленный API window.web3. Если сайт не работает, нажмите $1 для получения дополнительной информации.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1 из $2 в ожидании", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Да" + }, "yesLetsTry": { "message": "Да, давайте попробуем" }, diff --git a/app/_locales/sk/messages.json b/app/_locales/sk/messages.json index b5f1a087f..2bfd7e540 100644 --- a/app/_locales/sk/messages.json +++ b/app/_locales/sk/messages.json @@ -131,10 +131,10 @@ "message": "Váš prehliadač nie je podporovaný..." }, "buyWithWyre": { - "message": "Kúpte ETH s Wyre" + "message": "Kúpte $1 s Wyre" }, "buyWithWyreDescription": { - "message": "Wyre vám umožňuje použiť kreditnú kartu na vloženie depozitu ETH priamo na váš účet MetaMask." + "message": "Wyre vám umožňuje použiť kreditnú kartu na vloženie depozitu $1 priamo na váš účet MetaMask." }, "bytes": { "message": "Bajty" diff --git a/app/_locales/sl/messages.json b/app/_locales/sl/messages.json index 8a49c004a..c49155135 100644 --- a/app/_locales/sl/messages.json +++ b/app/_locales/sl/messages.json @@ -137,10 +137,10 @@ "message": "Vaš brskalnik ni podptrt ..." }, "buyWithWyre": { - "message": "Kupi ETH z Wyre" + "message": "Kupi $1 z Wyre" }, "buyWithWyreDescription": { - "message": "Wyre vam omogoča, da s kreditno kartico nakažete ETH neposredno na svoj račun MetaMask." + "message": "Wyre vam omogoča, da s kreditno kartico nakažete $1 neposredno na svoj račun MetaMask." }, "bytes": { "message": "Bajti" diff --git a/app/_locales/sr/messages.json b/app/_locales/sr/messages.json index 9f29a6bf5..5ebbd176e 100644 --- a/app/_locales/sr/messages.json +++ b/app/_locales/sr/messages.json @@ -137,10 +137,10 @@ "message": "Vaš pregledač nije podržan..." }, "buyWithWyre": { - "message": "Kupite ETH preko servisa Wyre" + "message": "Kupite $1 preko servisa Wyre" }, "buyWithWyreDescription": { - "message": "Wyre vam dozvoljava da koristite kreditnu karticu kako biste deponovali ETH pravo na vaš MetaMask nalog." + "message": "Wyre vam dozvoljava da koristite kreditnu karticu kako biste deponovali $1 pravo na vaš MetaMask nalog." }, "bytes": { "message": "Bajtovi" diff --git a/app/_locales/sv/messages.json b/app/_locales/sv/messages.json index 2e1c5721e..c8d77d167 100644 --- a/app/_locales/sv/messages.json +++ b/app/_locales/sv/messages.json @@ -137,10 +137,10 @@ "message": "Din webbläsare stöds inte..." }, "buyWithWyre": { - "message": "Köp ETH med Wyre" + "message": "Köp $1 med Wyre" }, "buyWithWyreDescription": { - "message": "Wyre låter dig använda ett kreditkort för att sätta in ETH direkt på ditt MetaMask-konto." + "message": "Wyre låter dig använda ett kreditkort för att sätta in $1 direkt på ditt MetaMask-konto." }, "cancel": { "message": "Avbryt" diff --git a/app/_locales/sw/messages.json b/app/_locales/sw/messages.json index 990fd2e43..9a060e45e 100644 --- a/app/_locales/sw/messages.json +++ b/app/_locales/sw/messages.json @@ -134,10 +134,10 @@ "message": "Kivinjari chaku hakiwezeshwi..." }, "buyWithWyre": { - "message": "Nunua ETH kwa kutumia Wyre" + "message": "Nunua $1 kwa kutumia Wyre" }, "buyWithWyreDescription": { - "message": "Wyre inakuwezesha kutumia kadi ya benki kuweka ETH moja kwa moja kwenye akaunti yako ya MetaMask." + "message": "Wyre inakuwezesha kutumia kadi ya benki kuweka $1 moja kwa moja kwenye akaunti yako ya MetaMask." }, "cancel": { "message": "Ghairi" diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 0ff209e95..143496acc 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -58,6 +58,10 @@ "message": "Maaaring i-access ng $1 ang max na halagang ito at gumastos hanggang sa max na halagang ito", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 maaaring i-access at gamitin ang asset na ito", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Ina-access ang iyong camera..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Mga detalye ng account" }, + "accountIdenticon": { + "message": "Identicon ng Account" + }, "accountName": { "message": "Pangalan ng Account" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Magdagdag ng network" }, + "addANetworkManually": { + "message": "Mano-manong idagdag ang network" + }, "addANickname": { "message": "Magdagdag ng palayaw" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Magdagdag ng mga kaibigan at address na pinagkakatiwalaan mo" }, + "addFromAListOfPopularNetworks": { + "message": "Idagdag mula sa listahan ng mga sikat na network o mano-manong idagdag ang network. Makipag-ugnayan lamang sa mga entidad na iyong pinagkakatiwalaan." + }, "addMemo": { "message": "Magdagdag ng memo" }, @@ -153,7 +166,7 @@ "message": "Icon ng address book" }, "advanced": { - "message": "Advanced" + "message": "Makabago" }, "advancedBaseGasFeeToolTip": { "message": "Kapag nakasama ang iyong transaksyon sa block, i-re-refund ang anumang difference sa pagitan ng iyong max base fee at ang aktwal na base fee. Ang kabuuang halaga ay kinakalkula bilang max base fee (sa GWEI) * limit ng gas." @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Sang-ayon Ako" }, - "aggregatorFeeCost": { - "message": "Bayarin sa aggregator network" + "airgapVault": { + "message": "AirGap Vault" + }, + "airgapVaultTutorial": { + "message": " (Mga Tutorial)" }, "alertDisableTooltip": { "message": "Puwede itong baguhin sa \"Mga Setting > Mga Alerto\"" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Bayarin sa pag-apruba at aggregator network" - }, - "approvalTxGasCost": { - "message": "Pag-apruba Tx Halaga ng Gas" - }, "approve": { "message": "Aprubahan ang limitasyon sa paggastos" }, + "approveAndInstall": { + "message": "Aprubahan at I-install" + }, "approveButtonText": { "message": "Aprubahan" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Inaprubahang halaga:" }, + "approvedAsset": { + "message": "Aprubadong asset" + }, + "areYouDeveloper": { + "message": "Isa ka bang developer?" + }, + "areYouSure": { + "message": "Sigurado ka ba?" + }, "asset": { "message": "Asset" }, @@ -313,7 +335,7 @@ "message": "Base fee" }, "basic": { - "message": "Basic" + "message": "Panimula" }, "betaMetamaskDescription": { "message": "Ang Metamask na pinagkakatiwalaan ng milyun-milyon ay isang ligtas na wallet na ginagawang accessible ang mundo ng web3 para sa lahat." @@ -343,7 +365,7 @@ "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Asset in Explorer" }, "blockExplorerSwapAction": { - "message": "Swap", + "message": "I-swap", "description": "This is used with viewOnEtherscan e.g View Swap on Etherscan" }, "blockExplorerUrl": { @@ -356,6 +378,9 @@ "message": "Tingnan ang account sa $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Mga Blocky" + }, "browserNotSupported": { "message": "Hindi sinusuportahan ang iyong Browser..." }, @@ -371,11 +396,30 @@ "buy": { "message": "Bilhin" }, + "buyAsset": { + "message": "Bumili ng $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Bumili ng $1 gamit ang MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "Suportado ng MoonPay ang mga kilalang paraan ng pagbabayad, kabilang ang Visa, Mastercard, Apple / Google / Samsung Pay, at mga bank transfer sa higit 145 na bansa. Ang mga token ay madedeposito sa iyong MetaMask account." + }, + "buyCryptoWithTransak": { + "message": "Bumili ng $1 gamit ang Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Suportado ng Transak ang mga credit at debit card, Apple Pay, MobiKwik, at mga bank transfer (depende sa lokasyon) sa higit 100 bansa. Ang $1 ay direktang madedeposito sa iyong MetaMask account.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Bumili ng ETH gamit ang Wyre" + "message": "Bumili ng $1 gamit ang Wyre" }, "buyWithWyreDescription": { - "message": "Nagbibigay-daan sa iyo ang Wyre na gumamit ng debit card para mag-deposit ng ETH sa mismong MetaMask account mo." + "message": "Nagbibigay-daan sa iyo ang Wyre na gumamit ng debit card para mag-deposit ng $1 sa mismong MetaMask account mo." }, "bytes": { "message": "Bytes" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "kanselahin o pabilisin ang transaksyon." }, + "cancelSpeedUpLabel": { + "message": "Ang singil sa gas na ito ay magiging $1 ang orihinal.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Sa $1 na transaksyon ang singil sa gas ay dapat tumaas nang hindi bababa sa 10% para ito ay makilala ng network.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Kanselahin ang pagpapalit" + }, "cancellationGasFee": { "message": "Bayarin sa Gasolina para sa Pagkansela" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "Ang Chain ID na ito ay kasalukuyang ginagamit ng $1 network." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Ang network na may chain ID $1 ay maaaring gumamit ng ibang simbolo ng currency ($2) kaysa sa iyong inilagay. Pa-verify bago magpatuloy.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Kailangan mong gamitin ang MetaMask sa Google Chrome para maikonekta sa iyong Hardware Wallet." }, @@ -423,6 +482,13 @@ "close": { "message": "Isara" }, + "collectibleAddFailedMessage": { + "message": "Hindi maidagdag ang NFT dahil hindi tugma ang mga detalye ng pagmamay-ari. Tiyaking nailagay mo ang wastong impormasyon." + }, + "collectibleAddressError": { + "message": "Ang token na ito ay isang NFT. Idagdag sa $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Kumpirmahin" }, @@ -448,7 +514,7 @@ "message": "May na-detect kami na nakakalitong character sa pangalan ng ENS. Suriin ang pangalan ng ENS para maiwasan ang potensyal na scam." }, "congratulations": { - "message": "Congratulations" + "message": "Pagbati" }, "connect": { "message": "Kumonekta" @@ -506,6 +572,10 @@ "message": "Ang $1 ay hindi nakakonekta sa anumang site.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "Ang $1 snap ay konektado sa mga site na ito. May access sila sa mga pahintulot na nakalista sa itaas.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Kumokonekta..." }, @@ -536,6 +606,9 @@ "continue": { "message": "Magpatuloy" }, + "continueToMoonPay": { + "message": "Magpatuloy sa MoonPay" + }, "continueToTransak": { "message": "Magpatuloy sa Transak" }, @@ -543,10 +616,10 @@ "message": "Magpatuloy sa Wyre" }, "contract": { - "message": "Contract" + "message": "Kontrata" }, "contractAddress": { - "message": "Contract address" + "message": "Address ng kontrata" }, "contractAddressError": { "message": "Nagpapadala ka ng mga token sa contract address ng token. Ito ay maaaring magresulta sa pagkawala ng mga token na ito." @@ -557,6 +630,12 @@ "contractInteraction": { "message": "Interaksyon ng Kontrata" }, + "convertTokenToNFTDescription": { + "message": "Natukoy namin na ang asset na ito ay isang NFT. Ang Metamask ay mayroon na ngayong ganap na native support para sa mga NFT. Gusto mo bang alisin ito sa iyong listahan ng token at idagdag ito bilang isang NFT?" + }, + "convertTokenToNFTExistDescription": { + "message": "Napansin namin na naidagdag ang asset na ito bilang NFT. Gusto mo ba itong alisin mula sa listahan ng iyong token?" + }, "copiedExclamation": { "message": "Nakopya na!" }, @@ -614,8 +693,20 @@ "currentlyUnavailable": { "message": "Hindi available sa network na ito" }, + "curveHighGasEstimate": { + "message": "Agresibong grap ng pagtantiya sa gas" + }, + "curveLowGasEstimate": { + "message": "Mababang grap ng pagtantiya sa gas" + }, + "curveMediumGasEstimate": { + "message": "Grap ng Merkado sa pagtantiya sa gas" + }, "custom": { - "message": "Advanced" + "message": "Makabago" + }, + "customContentSearch": { + "message": "Maghanap ng naunang idinagdag na network" }, "customGas": { "message": "I-customize ang Gasolina" @@ -633,6 +724,15 @@ "customToken": { "message": "Custom na Token" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "Ang pagtuklas ng token ay hindi pa magagamit sa network na ito. Mangyaring manu-manong mag-import ng token at tiyaking pinagkakatiwalaan mo ito. Matuto tungkol sa $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Bago manu-manong mag-import ng token, tiyaking pinagkakatiwalaan mo ito. Matuto tungkol sa $1." + }, + "customerSupport": { + "message": "suporta sa kostumer" + }, "dappSuggested": { "message": "Minungkahing site" }, @@ -647,8 +747,11 @@ "message": "Nirekomenda ng $1 ang presyong ito.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Madilim" + }, "data": { - "message": "Data" + "message": "Datos" }, "dataBackupFoundInfo": { "message": "Ang ilan sa data ng iyong account ay na-back up sa nakaraang pag-install ng MetaMask. Maaaring kasama rito ang iyong mga setting, contact, at token. Gusto mo bang i-restore na ang data na ito?" @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "Sigurado ka bang gusto mong i-delete ang network na ito?" }, + "depositCrypto": { + "message": "Magdeposito ng $1", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Deskripsyon" }, "details": { "message": "Mga Detalye" }, + "directDepositCrypto": { + "message": "Direktang Magdeposito ng $1" + }, + "directDepositCryptoExplainer": { + "message": "Kung mayroon ka ng $1, ang pinakamabilis na paraan upang mailagay ang $1 sa iyong bagong wallet ay sa direktang pag-deposit." + }, + "disabledGasOptionToolTipMessage": { + "message": "Ang “$1” ay naka-disable dahil hindi nito naabot ang minimum na 10% na dagdag mula sa orihinal na singil sa gas.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Idiskonekta" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "Huwag itong ipaklita ulit" }, + "downArrow": { + "message": "arrow pababa" + }, "downloadGoogleChrome": { "message": "I-download ang Google Chrome" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "I-edit ang address ng palayaw" }, + "editCancellationGasFeeModalTitle": { + "message": "I-edit ang pagkansela ng singil sa gas" + }, "editContact": { "message": "I-edit ang Contact" }, @@ -850,7 +973,7 @@ "description": "This is meant to be used as the $1 substitution editGasSubTextAmount" }, "editGasSubTextFeeLabel": { - "message": "Max fee:" + "message": "Pinakamataas na bayad:" }, "editGasTitle": { "message": "I-edit ang priority" @@ -873,9 +996,28 @@ "editPermission": { "message": "Pahintulot sa Pag-edit" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "I-edit ang pagpapabilis ng singil sa gas" + }, "enableAutoDetect": { "message": " Paganahin ang Autodetect" }, + "enableEIP1559V2": { + "message": "Paganahin ang Pinahusay na UI ng Singil sa Gas" + }, + "enableEIP1559V2AlertMessage": { + "message": "Na-update na namin kung paano gumagana ang pagtantiya at pag-customize ng singil sa gas." + }, + "enableEIP1559V2ButtonText": { + "message": "I-on sa Settings ang Pinahusay na UI ng Singil sa Gas" + }, + "enableEIP1559V2Description": { + "message": "Na-update na namin kung paano gumagana ang pagtantiya at pag-customize ng gas. I-on kung gusto mong gamitin ang bagong karanasan sa gas. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Bagong karanasan sa gas" + }, "enableFromSettings": { "message": " Paganahin ito mula sa Settings." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "Gamitin ang API ng Opensea upang kunin ang NFT data. ang NFT auto-detection ay umaasa sa API ng OpenSea, at hindi magiging available kapag ito ay isinara." }, + "enableSmartTransactions": { + "message": "Payagan ang mga Smart Transaction" + }, "enableToken": { "message": "paganahin ang $1", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,11 +1150,14 @@ "etherscanViewOn": { "message": "Tingnan ang Etherscan" }, + "expandExperience": { + "message": "Palawakin ang iyong karanasan sa web3" + }, "expandView": { "message": "I-expand ang view" }, "experimental": { - "message": "Experimental" + "message": "Pinag-eeksperimentuhan" }, "exportPrivateKey": { "message": "I-export ang Pribadong Key" @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "External Extension" }, - "extraApprovalGas": { - "message": "+$1 na pag-apruba sa gas", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Hindi matagumpay" }, "failedToFetchChainId": { "message": "Hindi makuha ang chain ID. Tama ba ang URL ng iyong RPC?" }, + "failedToFetchTickerSymbolData": { + "message": "Ang ticker na simbolo sa pag-verify ng datos ay hindi available sa kasalukuyan, tiyaking tama ang simbolo na iyong inilagay. Makakaapekto ito sa mga rate ng palitan na nakita mo par asa network na ito" + }, "failureMessage": { "message": "Nagkaproblema, at hindi namin makumpleto ang aksyon" }, @@ -1062,6 +1209,26 @@ "message": "mula sa", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "dapat mong i-uninstall ang extension na ito", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Ang Flask ay para sa mga developer upang makapag-eksperimento sa mga bagong hindi matatag na API. Maliban kung ikaw ay developer o beta tester, $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Hindi namin ginagarantiya ang kaligtasan o katatagan ng extension na ito. Ang mga bagong API na inaalok ng Flask ay hindi pinatigtibay laban sa mga pag-atake ng phishing, ibig sabihin, ang anumang site o snap na nangangailangan ng Flask ay maaaring isang masamang pagtatangka na nakawin ang iyong mga asset.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Ang lahat ng API ng Flask ay eksperimental. Maaaring baguhin o alisin ang mga ito nang walang abiso, o maaari silang manatili sa Flask nang walang katapusan nang hindi nalilipat sa matatag na MetaMask. Gamitin ang mga ito sa iyong sariling pananagutan.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Tinatanggap ko ang mga panganib", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "I-follow kami sa Twitter" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "Kalimutan ang device na ito" }, + "forgotPassword": { + "message": "Nakalimutan ang password?" + }, "from": { "message": "Mula kay/sa" }, @@ -1078,6 +1248,9 @@ "message": "Mula kay/sa: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "Mula sa mga listahan ng token: $1" + }, "functionApprove": { "message": "Function: Aprubahan" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Ang aming low, medium at high na mga pagtantiya ay hindi available." }, + "gasFee": { + "message": "Bayarin sa Gas" + }, "gasLimit": { "message": "Limitasyon sa Gas" }, "gasLimitInfoTooltipContent": { "message": "Ang limitasyon sa gas ay ang maximum na halaga ng mga unit ng gas na handa mong gastusin." }, + "gasLimitRecommended": { + "message": "Ang inirerekomendang gas limit ay $1. Kung mas mababa dito ang gas limit, maaaring mabigo." + }, "gasLimitTooLow": { "message": "Ang limitasyon sa gas ay dapat na hindi bababa sa 21000" }, @@ -1111,7 +1290,7 @@ "description": "$1 is the custom gas limit, in decimal." }, "gasLimitV2": { - "message": "Gas limit" + "message": "Limitasyon ng gas" }, "gasOption": { "message": "Opsyon ng gas" @@ -1196,9 +1375,15 @@ "goerli": { "message": "Goerli Test Network" }, + "gotIt": { + "message": "OK!" + }, "grantedToWithColon": { "message": "Ipinagkaloob kay:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Nagagalak kaming makilala ka." }, @@ -1226,11 +1411,17 @@ "description": "as in -click here- for more information (goes with troubleTokenBalances)" }, "hexData": { - "message": "Hex Data" + "message": "Datos ng Hex" }, "hide": { "message": "Itago" }, + "hideSeedPhrase": { + "message": "Itago ang seed phrase" + }, + "hideToken": { + "message": "Itago ang token" + }, "hideTokenPrompt": { "message": "Itago ang Token?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "I-import ang Wallet Ko" }, + "importNFT": { + "message": "Magdagdag ng NFT" + }, + "importNFTAddressToolTip": { + "message": "Sa OpenSea, halimbawa, sa pahina ng NFT sa ilalim ng Mga Detalye, mayroong asul na hyperlink na halaga na may label na 'Contract Address'. Kapag nag-click ka dito, dadalhin ka nito sa address ng contract sa Etherscan; sa kaliwang tuktok ng page na iyon, dapat ay mayroong icon na may label na 'Contract', at sa kanan, may mahabang sunod-sunod na letra at mga numero. Ito ang address ng contract na lumikha ng iyong NFT. Mag-click sa icon na 'copy' sa kanan ng address, at makikita mo ito sa iyong clipboard." + }, + "importNFTPage": { + "message": "I-import ang pahina ng NFT" + }, + "importNFTTokenIdToolTip": { + "message": "Ang ID ng collectible ay isang natatanging pagkakakilanlan dahil walang dalawang NFT ang magkatulad. Muli, sa OpenSea ang numerong ito ay nasa ilalim ng 'Mga Detalye'. Itala ito, o kopyahin ito sa iyong clipboard." + }, "importNFTs": { "message": "I-import ang mga NFT" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "Hindi sapat ang balanse." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "Wala kang sapat na $1 sa iyong account para bayaran ang mga transaksyon sa $2 network. $3 o magdeposito mula sa ibang account.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "Wala kang sapat na $1 sa iyong account para bayaran ang mga transaksyon sa $2 network. Magdeposito ng $1 mula sa ibang account.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Hindi sapat ang pondo." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "Hindi ETH network, itakda sa maliliit na letra" }, + "invalidAssetType": { + "message": "Ang asset na ito ay isang NFT at kailangang idagdag muli sa pahina ng Mag-import ng NFT na matatagpuan sa ilalim ng mga tab ng NFT" + }, "invalidBlockExplorerURL": { "message": "Hindi Valid ang URL ng Block Explorer" }, @@ -1368,11 +1582,17 @@ "message": "Hindi valid ang Secret Recovery Phrase" }, "ipfsGateway": { - "message": "IPFS Gateway" + "message": "Gateway na IPFS" }, "ipfsGatewayDescription": { "message": "Ilagay ang URL ng IPFS CID gateway para magamit para sa resolusyon ng content ng ENS." }, + "jazzAndBlockies": { + "message": "Ang Jazzicons at Blockies ay dalawang magkaibang istilo ng mga natatanging icon na makakatulong sa iyong matukoy ang account sa isang sulyap." + }, + "jazzicons": { + "message": "Mga Jazzicon" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "Sige, simulan na nating mag-set up!" }, + "levelArrow": { + "message": "arrow ng level" + }, "likeToImportTokens": { "message": "Gusto mo bang idagdag ang mga token na ito?" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "Nilo-load..." }, + "loadingNFTs": { + "message": "Nilo-load ang mga NFT..." + }, "loadingTokens": { "message": "Nilo-load ang Mga Token..." }, @@ -1492,15 +1718,19 @@ "lockTimeTooGreat": { "message": "Masyadong matagal ang oras ng pag-lock" }, + "logo": { + "message": "$1 logo", + "description": "$1 is the name of the ticker" + }, "low": { - "message": "Low" + "message": "Mababa" }, "lowGasSettingToolTipMessage": { "message": "Gamitin ang $1 para maghintay ng mas murang presyo. Ang mga pagtatantya sa oras ay hindi gaanong tumpak dahil ang mga presyo ay medyo hindi mahuhulaan.", "description": "$1 is key 'low' separated here so that it can be passed in with bold fontweight" }, "lowLowercase": { - "message": "low" + "message": "mababa" }, "lowPriorityMessage": { "message": "Ang mga transaksyon sa hinaharap ay pipila pagkatapos nito. Ang presyong ito ay huling nakita noong nakaraan." @@ -1508,6 +1738,9 @@ "mainnet": { "message": "Ethereum Mainnet" }, + "mainnetToken": { + "message": "Ang address na ito ay tumutugma sa isang kilalang address ng token na Ethereum Mainnet. Suriin muli ang address ng contract at network para sa token na sinusubukan mong idagdag." + }, "makeAnotherSwap": { "message": "Gumawa ng bagong pag-swap" }, @@ -1515,6 +1748,12 @@ "message": "Tiyaking walang nanonood sa iyong screen", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Pangit na datos" + }, + "manageSnaps": { + "message": "Pamahalaan ang iyong mga naka-install na Snap" + }, "max": { "message": "Max" }, @@ -1522,10 +1761,10 @@ "message": "Max base fee" }, "maxFee": { - "message": "Max fee" + "message": "Pinakamataas na bayad" }, "maxPriorityFee": { - "message": "Max priority fee" + "message": "Pinakamataas na priority fee" }, "medium": { "message": "Market" @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "Hindi makita ang NFT mo?" }, + "missingSetting": { + "message": "Hindi makahanap ng setting?" + }, + "missingSettingRequest": { + "message": "Hilingin dito" + }, "missingToken": { "message": "Hindi makita ang token mo?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Pangalan" }, + "needCryptoInWallet": { + "message": "Para makipag-ugnayan sa mga desentralisadong applicaiton gamit ang MetaMask, kakailanganin mo ng $1 sa iyong wallet.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Kailangan ng tulong? Kontakin ang $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1644,7 +1893,7 @@ "message": "Ibahagi ang iyong Feedback" }, "needHelpLinkText": { - "message": "MetaMask Support" + "message": "Suporta sa MetaMask" }, "needHelpSubmitTicket": { "message": "Magsumite ng Tiket" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Hindi makakapagpadala ng mga negatibong halaga ng ETH." }, + "network": { + "message": "Network:" + }, "networkDetails": { "message": "Mga Detalye ng Network" }, + "networkIsBusy": { + "message": "Busy ang network. Ang presyo ng gas ay mataas at ang pagtantiya ay hindi gaanong tumpak." + }, "networkName": { "message": "Pangalan ng Network" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1698,7 +1956,7 @@ "description": "$1 is networks stability value - stable, low, high" }, "networkURL": { - "message": "Network URL" + "message": "URL Network" }, "networkURLDefinition": { "message": "Ang URL ay ginamit upang ma-access ang network na ito." @@ -1728,6 +1986,9 @@ "newContract": { "message": "Bagong Kontrata" }, + "newNFTDetectedMessage": { + "message": "Payagan ang MetaMask na awtomatikong makita ang mga NFT mula sa Opensea at ipakita sa iyong wallet." + }, "newNFTsDetected": { "message": "Bago! Pag-detect ng NFT" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "Wala pang mga NFT" }, + "noSnaps": { + "message": "Walang mga Snap na naka-install" + }, "noThanks": { "message": "Huwag na lang" }, + "noThanksVariant2": { + "message": "Huwag na lang." + }, "noTransactions": { "message": "Wala kang transaksyon" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "Hindi Sapat ang Gas" }, + "notifications10ActionText": { + "message": "Bisitahin sa mga setting", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Ang pinahusay na pagtukoy ng token ay kasalukuyang magagamit sa Ethereum Mainnet, Polygon, BSC, at mga Avalanche network. Marami pang darating!" + }, + "notifications10DescriptionThree": { + "message": "NAKA-ON bilang default ang tampok sa pagtukoy ng token. Ngunit maaari mo itong i-disable mula sa Mga Setting." + }, + "notifications10DescriptionTwo": { + "message": "Kinuha namin ang mga token mula sa mga listahan ng mga token ng third party. Ang mga token na nakalista sa higit sa dalawang listahan ay awtomatikong matutukoy." + }, + "notifications10Title": { + "message": "Narito ang pinahusay na pagtukoy ng token" + }, + "notifications11Description": { + "message": "Ang mga token ay maaaring likhain ng sinuman at maaaring magkaroon ng mga kaparehong pangalan. Kung makakita ka ng token na lumalabas na hindi mo pinagkakatiwalaan o hindi ka nakikipag-ugnayan - mas ligtas na huwag magtiwala dito." + }, + "notifications11Title": { + "message": "Mga panganib sa scam at seguridad" + }, + "notifications12ActionText": { + "message": "Paganahin ang dark mode" + }, + "notifications12Description": { + "message": "Pagaganahin ang Dark Mode para sa mga bagong user depende sa kanilang mga kagustuhan sa sistema. Para sa mga kasalukuyang user, manu-manong paganahin ang Dark Mode sa ilalim ng Mga Setting -> Eksperimental." + }, + "notifications12Title": { + "message": "Wen dark mode? Ngayon dark mode! 🕶️🦊" + }, "notifications1Description": { "message": "Ang mga user ng MetaMask Mobile ay maaari na ngayong mag-swap ng mga token sa loob ng kanilang mobile wallet. I-scan ang QR code para makuha ang mobile app at magsimulang mag-swap.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 Pinadadali naming mabasa ang mga transaksyon." }, + "numberOfNewTokensDetected": { + "message": "$1 bagong token ang nakita sa account na ito", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "ng" }, @@ -1984,6 +2286,9 @@ "message": "Buksan ang MetaMask sa buong screen para ikonekta ang ledger mo sa pamamagitan ng WebHID.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Suriin ang code ng pinagmulan" + }, "optional": { "message": "Opsyonal" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "Ang password na ito ay magbubukas lamang ng iyong MetaMask wallet sa device na ito. Hindi matatakpan ng MetaMask ang password na ito." }, + "passwordStrength": { + "message": "Tibay ng password: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Mapapabuti ng matibay na password ang seguridad ng iyong wallet kung sakaling manakaw o makompromiso ang iyong device." + }, "passwordTermsWarning": { "message": "Nauunawaan ko na hindi matatakpan ng MetaMask ang password na ito para sa akin. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "Kahilingan sa pahintulot" }, + "permissionRequestCapitalized": { + "message": "Kahilingan sa Pahintulot" + }, + "permission_accessNetwork": { + "message": "I-access ang Internet.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Kumonekta sa $1 Snap.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Ipakita ang kumpirmasyon sa MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Tingnan ang mga address, balanse ng account, aktibidad at simulan ang iyong mga transaksyon", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Kontrolin ang iyong mga account at asset sa \"$1\".", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Iimbak at pamahalaan ang datos nito sa iyong device.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Ipakita ang mga notipikasyon.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Hindi kilalang pahintulot: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Mga Pahintulot" }, "personalAddressDetected": { "message": "Natukoy ang personal na address. Ilagay ang address ng kontrata ng token." }, + "pleaseConfirm": { + "message": "Pakikumpirma" + }, "plusXMore": { "message": "+ $1 pa", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "Napiling Uri ng Ledger Connection", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Inihahanda ang pagpapalit..." + }, "prev": { "message": "Nakaraan" }, @@ -2096,7 +2445,7 @@ "message": "Ibigay" }, "publicAddress": { - "message": "Public Address" + "message": "Pampublikong Address" }, "queue": { "message": "Pila" @@ -2104,6 +2453,12 @@ "queued": { "message": "Naka-queue" }, + "reAddAccounts": { + "message": "idagdag muli ang anumang ibang mga account" + }, + "reAdded": { + "message": "idagdag muli" + }, "readdToken": { "message": "Puwede mong ibalik ang token na ito sa hinaharap sa pamamagitan ng pagpunta sa “Magdagdag ng token” sa menu ng mga opsyon sa iyong account." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "Tanggalin ang NFT" }, + "removeSnap": { + "message": "Alisin ang Snap" + }, + "removeSnapConfirmation": { + "message": "Sigurado ka bang nais mong tanggalin ang $1?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Tatanggalin ng aksyon na ito ang snap, ang datos nito at babawiin ang ibinigay mong mga pahintulot." + }, + "replace": { + "message": "palitan" + }, "requestsAwaitingAcknowledgement": { "message": "mga request na hinihintay na tanggapin" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "Kapag ni-reset ang iyong account, maki-clear ang history ng iyong transaksyon. Hindi nito babaguhin ang mga balanse sa iyong mga account o hindi mo kakailanganing ilagay ulit ang iyong Secret Recovery Phrase." }, + "resetWallet": { + "message": "I-reset ang Wallet" + }, + "resetWalletSubHeader": { + "message": "Hindi nagpapanatili ang MetaMask ng kopya ng iyong password. Kung nagkakaproblema ka sa pag-unlock ng iyong account, kakailanganin mong i-reset ang iyong wallet. Magagawa mo ito sa pamamagitan ng pagbibigay ng Secret Recovery Phrase na ginamit mo noong mag-set up ka ng iyong wallet." + }, + "resetWalletUsingSRP": { + "message": "Tatanggalin ng aksyong ito mula sa iyong device ang iyong kasalukuyang wallet at Secret Recovery Phrase, kasama ang listahan ng mga account na iyong isinaayos. Pagkatapos i-reset ang Secret Recovery Phrase, makikita mo ang listahan ng mga account batay sa Secret Recovery Phrase na iyong ginamit para mag-reset. Awtomatikong kasama sa bagong listahan na ito ang mga account na may balanse. Magagawa mo rin ang $1 na nilikha dati. Ang mga custom account na iyong na-import ay kinakailangang $2, at ang alinmang mga custom token na iyong idinagdag sa account ay kailangan $3 din." + }, + "resetWalletWarning": { + "message": "Tiyakin na ginagamit mo ang wastong Secret Recovery Phrase bago magpatuloy. Hindi mo na ito maaaring pawalang-bisa." + }, "restore": { "message": "I-restore" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "Huwag ibahagi ang phrase na ito sa sinuman!" }, + "revealTheSeedPhrase": { + "message": "Ipakita ang seed phrase" + }, "rinkeby": { "message": "Rinkeby Test Network" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "Bagong RPC URL" }, + "safeTransferFrom": { + "message": "Ligtas Na Paglilipat Mula" + }, "save": { "message": "I-save" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Mga Resulta ng Paghahanap" }, + "searchSettings": { + "message": "Maghanap sa mga setting" + }, "searchTokens": { "message": "Maghanap ng Mga Token" }, @@ -2265,7 +2654,7 @@ "message": "Ang unang account lang sa wallet na ito ang awtomatikong maglo-load. Pagkatapos makumpleto ang prosesong ito, upang magdagdag ng mga karagdagang account, i-click ang drop down na menu, pagkatapos ay piliin ang Gumawa ng Account." }, "secretRecoveryPhrase": { - "message": "Secret Recovery Phrase" + "message": "Lihim na recovery phrase" }, "secureWallet": { "message": "Secure Wallet" @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "Magpadala ng Mga Token" }, + "sendingDisabled": { + "message": "Ang pagpapadala ng mga asset na ERC-1155 NFT ay hindi pa suportado." + }, "sendingNativeAsset": { "message": "Nagpapadala ng $1", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "Mga Setting" }, + "settingsSearchMatchingNotFound": { + "message": "Walang nakitang katugmang resulta." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Ipakita" }, @@ -2470,11 +2869,51 @@ "slow": { "message": "Mabagal" }, + "smartTransaction": { + "message": "Smart Transaction" + }, + "snapAccess": { + "message": "Ang $1 snap ay may access sa:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Idinagdag noong $1 mula sa $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Snap Error: '$1'. Error Code: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "I-install ang Snap" + }, + "snapInstallWarningCheck": { + "message": "Para kumpirmahing naunawaan mo, tsekan lahat." + }, + "snapInstallWarningKeyAccess": { + "message": "Ipinagkakaloob mo ang key access sa snap \"$1\". Hindi ito maaaring bawiin at ipinagkakaloob sa \"$1\" ang kontrol sa iyong mga account at mga asset. Tiyaking pinagkakatiwalaan mo ang \"$1\" bago magpatuloy.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Hinihiling ng snap na ito ang mga sumusunod na pahintulot:" + }, + "snaps": { + "message": "Mga Snap" + }, + "snapsSettingsDescription": { + "message": "Pamahalaan ang iyong mga Snap" + }, + "snapsStatus": { + "message": "Ang lagay ng Snap ay nakadepende sa aktibidad." + }, + "snapsToggle": { + "message": "Tatakbo lamang ang snap kapag pinagana ito" + }, "somethingWentWrong": { "message": "Oops! Nagkaproblema." }, "source": { - "message": "Source" + "message": "Pinagmulan" }, "speedUp": { "message": "Pabilisin" @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Masyadong malaki ang limitasyon sa paggastos" }, + "srpInputNumberOfWords": { + "message": "Mayroon akong word phrase ng $1", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Nabigong i-paste dahil naglalaman ito ng higit sa 24 na salita. Ang secret recovery phrase ay mayroong hanggang 24 na salita lamang.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Maaari mong i-paste ang iyong buong secret recovery phrase sa alinmang patlang", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Ipakita/Itago ang salitang ito ng secret recovery phrase", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Itinago ang salitang ito", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Ipinapakita ang salitang ito", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Stable" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "Naglalaman ang mga log ng estado ng iyong mga address ng pampublikong account at ipinadalang transaksyon." }, + "status": { + "message": "Istado" + }, "statusConnected": { "message": "Nakakonekta" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "I-store ang phrase na ito sa isang password manager gaya ng 1Password." }, + "strong": { + "message": "Mahirap" + }, + "stxAreHere": { + "message": "Narito na ang mga Smart Transaction!" + }, + "stxBenefit1": { + "message": "Bawasan ang mga gastos sa transaksyon" + }, + "stxBenefit2": { + "message": "Nabigo ang pagbawas sa transaksyon" + }, + "stxBenefit3": { + "message": "Alisin ang mga hindi umuusad na transaksyon" + }, + "stxBenefit4": { + "message": "Pigilan ang front-running" + }, + "stxCancelled": { + "message": "Maaaring nabigo ang pagpapalit" + }, + "stxCancelledDescription": { + "message": "Maaaring nabigo at kinansela ang transaksyon para protektahan ka mula sa pagbabayad ng mga hindi kinakilangang bayad sa gas." + }, + "stxCancelledSubDescription": { + "message": "Subukan muli ang iyong pagpapalit. Narito kami para protektahan ka sa mga katulad na panganib sa susunod." + }, + "stxDescription": { + "message": "Mas humusay pa ang mga Pagpapalit sa MetaMask! Papayagan ng Pagpapagana sa mga Smart Transaction ang MetaMask na pahusayin ang iyong Pagpapalit gamit ang program para makatulong sa: " + }, + "stxErrorNotEnoughFunds": { + "message": "Hindi sapat na pondo para sa smart transaction." + }, + "stxErrorUnavailable": { + "message": "Pansamantalang hindi available ang mga Smart Transaction." + }, + "stxFailure": { + "message": "Hindi matagumpay ang pag-swap" + }, + "stxFailureDescription": { + "message": "Ang biglaang pagbabago sa merkado ay maaaring maging sanhi ng pagkabigo. Kung magpatuloy ang problema, makipag-ugnyan sa $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Pansamantalang hindi available ang mga Smart Transaction dahil mayroon kang nakabinbin na transaksyon." + }, + "stxFallbackUnavailable": { + "message": "Maaari mo parin papalitan ang iyong mga token kahit na hindi available ang mga Smart Transaction." + }, + "stxPendingFinalizing": { + "message": "Isinasapinal..." + }, + "stxPendingOptimizingGas": { + "message": "Pinapahusay ang gas..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Pribadong isinusumite ang Pagpapalit..." + }, + "stxSubDescription": { + "message": "* Susubukan ng mga Smart Transaction na isumite nang pribado ang iyong transaksyon, maraming beses. Kapag nabigo ang lahat ng pagsubok, ipapakita sa publiko ang transaksyon upang matiyak na ang Pagpapalit ay naging matagupay." + }, + "stxSuccess": { + "message": "Nakumpleto ang pagpapalit!" + }, + "stxSuccessDescription": { + "message": "Ang iyong $1 ay available na ngayon.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Gayahin ang mga transaksyon bago isumite upang bumaba ang gastos sa transaksyon at mabawasan ang mga pagkabigo." + }, + "stxTryRegular": { + "message": "Subukan ang regular na pagpapalit." + }, + "stxTryingToCancel": { + "message": "Sinusubukang kanselahin ang iyong transaksyon..." + }, + "stxUnavailable": { + "message": "Hindi pinapagana ang mga Smart Transaction" + }, + "stxUnknown": { + "message": "Hindi alam ang lagay" + }, + "stxUnknownDescription": { + "message": "Naging matagumpay ang transaksyon pero hindi kami sigurado kung ano ito. Dahil siguro ito sa pagsusumite ng isa pang transaksyon habang pinoproseso ang pagpapalit na ito." + }, + "stxUserCancelled": { + "message": "Kinansela ang pagpapalit" + }, + "stxUserCancelledDescription": { + "message": "Kinansela ang iyong transaksyon at hindi ka nagbayad para sa anumang mga hindi kinakailangang gas." + }, + "stxYouCanOptOut": { + "message": "Maaari kang mag-opt-out sa mga advanced setting anumang oras." + }, "submit": { "message": "Isumite" }, @@ -2575,7 +3136,7 @@ "message": "Isinumite" }, "support": { - "message": "Support" + "message": "Humingi ng Tulong" }, "supportCenter": { "message": "Bisitahin ang aming Support Center" @@ -2607,6 +3168,10 @@ "message": "Kailangan mo ng $1 pa $2 para makumpleto ang pag-swap na ito", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Kailangan mo pa ng $1 para makumpleto ang pagpapalit na ito gamit ang mga smart transaction.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "Pinakamaganda ng $1 na quote.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "Walang available na token na tumutugma sa $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Kumpleto na ang pagpapalit sa <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Kumpirmahin gamit ang iyong hardware wallet" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Hindi matagumpay ang pag-swap" }, + "swapFetchingQuoteNofN": { + "message": "Kinukuha ang quote $1 ng $2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Kinukuha ang mga quote" }, @@ -2760,7 +3333,7 @@ "message": "Walang available na quote" }, "swapRate": { - "message": "Rate" + "message": "Singil" }, "swapReceiving": { "message": "Pagtanggap" @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "Na-disable ang 3Box dahil sa isang error sa unang pag-sync" }, + "tenPercentIncreased": { + "message": "10% na dagdag" + }, "terms": { "message": "Mga Tuntunin ng Paggamit" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Test Faucet" }, + "testNetworks": { + "message": "Suriin ang mga network" + }, + "theme": { + "message": "Tema" + }, + "themeDescription": { + "message": "Piliin ang mas gusto mong tema ng MetaMask." + }, "thisWillCreate": { "message": "Gagawa ito ng bagong wallet at Secret Recovery Phrase" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Token" }, + "tokenAddress": { + "message": "Address ng token" + }, "tokenAlreadyAdded": { "message": "Naidagdag na ang token." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Kailangan ng token decimal." }, + "tokenDecimalTitle": { + "message": "Mga Decimal ng Katumpakan:" + }, + "tokenDetails": { + "message": "Mga detalye ng token" + }, + "tokenDetection": { + "message": "Pagtuklas sa token" + }, + "tokenDetectionAlertMessage": { + "message": "Ang pagtukoy ng token ay kasalukuyang magagamit sa $1. $2" + }, "tokenDetectionAnnouncement": { "message": "Bago! Ang pinahusay na pagtukoy ng token ay magagamit sa Ethereum Mainnet bilang isang pang-eksperimentong feature. $1" }, + "tokenDetectionToggleDescription": { + "message": "Pinagsasama-sama ng ConsenSys’ token API ang listahan ng mga token mula sa maraming listahan ng token ng third party. Ang pag-off dito ay magpapahinto sa pagtuklas ng mga bagong token na madadagdag sa iyong wallet, ngunit pananatilihin ang opsyon sa paghahanap ng mga token para i-import." + }, + "tokenId": { + "message": "Token ID" + }, + "tokenList": { + "message": "Mga listahan ng token:" + }, "tokenSymbol": { "message": "Simbolo ng Token" }, @@ -3178,6 +3787,12 @@ "message": "Ang pagpapadala ng collectible (ERC-721) token ay kasalukuyang hindi magagamit", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Hindi namin ma-verify ang kontratang ito. Tiyaking pinagkakatiwalaan mo ang address na ito." + }, + "upArrow": { + "message": "arrow pataas" + }, "updatedWithDate": { "message": "Na-update noong $1" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Gumagamit kami ng mga third-party na API para makita at magpakita ng mga bagong token na ipinadala sa iyong wallet. I-off kung ayaw mong makuha ng MetaMask ang data mula sa mga serbisyong iyon." }, + "useTokenDetectionPrivacyDesc": { + "message": "Awtomatikong ipinapakita ang mga token na ipinadala sa iyong account na nakapaloob sa komunikasyon ng mga server ng third party para makuha ang mga larawan ng token. Ang mga server na iyon ay magkakaroon ng access sa iyong IP address." + }, "usedByClients": { "message": "Ginagamit ng iba't ibang client" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Matagumpay ang paggawa ng wallet" }, + "weak": { + "message": "Madali" + }, "web3ShimUsageNotification": { "message": "Napansin namin na sinubukan ng kasalukuyang website na gamitin ang inalis na window.web3 API. Kung mukhang sira ang site, paki-click ang $1 para sa karagdagang impormasyon.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1 ng $2 ang nakabinbin", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Oo" + }, "yesLetsTry": { "message": "Oo, subukan natin" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 87a748e52..47e0bf461 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -58,6 +58,10 @@ "message": "$1 bu maksimum tutara kadar erişim sağlayabilir ve harcama yapabilir", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 bu varlığa erişebilir ve harcayabilir", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Kameranıza erişim sağlanıyor..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Hesap bilgileri" }, + "accountIdenticon": { + "message": "Hesap Kimliği" + }, "accountName": { "message": "Hesap Adı" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Ağ ekle" }, + "addANetworkManually": { + "message": "Manuel olarak bir ağ ekle" + }, "addANickname": { "message": "Takma ad ekle" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Güvendiğiniz arkadaşlarınızı ve adresleri ekleyin" }, + "addFromAListOfPopularNetworks": { + "message": "Popüler ağlar listesinden ekle veya manuel olarak bir ağ ekle. Yalnızca güvendiğin varlıklarla etkileşim kur." + }, "addMemo": { "message": "Not ekleyin" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Kabul Ediyorum" }, - "aggregatorFeeCost": { - "message": "Toplayıcı ağ ücreti" + "airgapVault": { + "message": "AirGap Kasası" + }, + "airgapVaultTutorial": { + "message": "(Öğreticiler)" }, "alertDisableTooltip": { "message": "\"Ayarlar > Uyarılar\" kısmında değiştirilebilir" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Onaylayıcı ve toplayıcı ağ ücreti" - }, - "approvalTxGasCost": { - "message": "Onaylayıcı İşlem Gaz Maliyeti" - }, "approve": { "message": "Harcama limitini onayla" }, + "approveAndInstall": { + "message": "Onayla ve Yükle" + }, "approveButtonText": { "message": "Onayla" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Onaylanan tutar:" }, + "approvedAsset": { + "message": "Onaylanan varlık" + }, + "areYouDeveloper": { + "message": "Geliştirici misin?" + }, + "areYouSure": { + "message": "Emin misin?" + }, "asset": { "message": "Varlık" }, @@ -356,6 +378,9 @@ "message": "Hesabı şurada görüntüleyin: $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Bloklar" + }, "browserNotSupported": { "message": "Tarayıcınız desteklenmiyor..." }, @@ -371,11 +396,30 @@ "buy": { "message": "Satın Al" }, + "buyAsset": { + "message": "$1 satın al", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "MoonPay ile $1 satın al", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay, Visa, Mastercard, Apple / Google / Samsung Pay dahil olmak üzere popüler ödeme yöntemlerini ve 145'ten fazla ülkede banka havalelerini destekler. Token'lar MetaMask hesabına yatırılır." + }, + "buyCryptoWithTransak": { + "message": "Transak ile $1 satın al", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak, 100'den fazla ülkede kredi ve banka kartlarını, Apple Pay, MobiKwik ve banka transferlerini (konuma bağlı olarak) destekler. $1 doğrudan MetaMask hesabına yatırılır.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Wyre ile ETH satın al" + "message": "Wyre ile $1 satın al" }, "buyWithWyreDescription": { - "message": "Wyre, doğrudan MetaMask hesabınıza ETH yatırma işlemleri için banka kartı kullanmanıza izin verir." + "message": "Wyre, doğrudan MetaMask hesabınıza $1 yatırma işlemleri için banka kartı kullanmanıza izin verir." }, "bytes": { "message": "Bayt" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "bir işlemi iptal et veya hızlandır." }, + "cancelSpeedUpLabel": { + "message": "Bu gas ücreti orijinali $1 olacak.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "İşlemi $1 için, gaz ücretinin ağ tarafından tanınması amacıyla en az %10 oranında artırılması gerekir.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Takası iptal et" + }, "cancellationGasFee": { "message": "İptal İşlemi Gaz Ücreti" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "Bu Zincir Kimliği şu anda $1 ağı tarafından kullanılıyor." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Zincir kimliği $1 olan ağ, girdiğin para biriminden farklı bir para birimi sembolü ($2) kullanabilir. Lütfen devam etmeden önce doğrula.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Donanım Cüzdanınıza bağlamak için MetaMask'ı Google Chrome'da kullanmanız gerekir." }, @@ -423,6 +482,13 @@ "close": { "message": "Kapat" }, + "collectibleAddFailedMessage": { + "message": "Sahiplik bilgileri eşleşmediğinden NFT eklenemez. Doğru bilgileri girdiğinden emin ol." + }, + "collectibleAddressError": { + "message": "Bu token bir NFT'dir. $1 üzerine ekle", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Onayla" }, @@ -506,6 +572,10 @@ "message": "$1 herhangi bir siteye bağlanmamış.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "$1 snap bu sitelere bağlı. Yukarıda listelenen izinlere erişimleri vardır.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Bağlanıyor..." }, @@ -536,6 +606,9 @@ "continue": { "message": "Devam et" }, + "continueToMoonPay": { + "message": "MoonPay'e devam et" + }, "continueToTransak": { "message": "Transak'a Devam Et" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "Sözleşme Etkileşimi" }, + "convertTokenToNFTDescription": { + "message": "Bu varlığın bir NFT olduğunu tespit ettik. Metamask artık NFT'ler için tam yerel desteğe sahiptir. Bunu token listenden çıkarmak ve bir NFT olarak eklemek ister misin?" + }, + "convertTokenToNFTExistDescription": { + "message": "Bu varlığın bir NFT olarak eklendiğini tespit ettik. Token listenden çıkarmak ister misin?" + }, "copiedExclamation": { "message": "Kopyalandı!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "Bu ağda kullanılamaz" }, + "curveHighGasEstimate": { + "message": "Agresif gas tahmini grafiği" + }, + "curveLowGasEstimate": { + "message": "Düşük gas tahmini grafiği" + }, + "curveMediumGasEstimate": { + "message": "Piyasa gas tahmini grafiği" + }, "custom": { "message": "Gelişmiş" }, + "customContentSearch": { + "message": "Önceden eklenmiş bir ağı ara" + }, "customGas": { "message": "Gazı Özelleştir" }, @@ -633,6 +724,15 @@ "customToken": { "message": "Özel Token" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "Token algılama henüz bu ağda mevcut değil. Lütfen token'ı manuel olarak içe aktar ve ona güvendiğinden emin ol. 1$ hakkında bilgi edin" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Bir token'ı manuel olarak içe aktarmadan önce, ona güvendiğinden emin ol. $1 hakkında bilgi edin." + }, + "customerSupport": { + "message": "müşteri hizmetleri" + }, "dappSuggested": { "message": "Site önerisi" }, @@ -647,6 +747,9 @@ "message": "$1 bu fiyatı önerdi.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Koyu" + }, "data": { "message": "Veri" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "Bu ağı silmek istediğinizden emin misiniz?" }, + "depositCrypto": { + "message": "$1 yatır", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Açıklama" }, "details": { "message": "Ayrıntılar" }, + "directDepositCrypto": { + "message": "Doğrudan $1 Yatır" + }, + "directDepositCryptoExplainer": { + "message": "Halihazırda $1 sahibiysen yeni cüzdanına doğrudan para yatırma yoluyla $1 almanın en hızlı yolu." + }, + "disabledGasOptionToolTipMessage": { + "message": "Orijinal gas ücretinden minimum %10'luk bir artışı karşılamadığı için \"$1\" devre dışı bırakıldı.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Bağlantıyı kes" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "Tekrar gösterme" }, + "downArrow": { + "message": "aşağı ok" + }, "downloadGoogleChrome": { "message": "Google Chrome'u indir" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "Adres takma adını düzenle" }, + "editCancellationGasFeeModalTitle": { + "message": "Gas ücreti iptalini düzenle" + }, "editContact": { "message": "Kişiyi Düzenle" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "İzni Düzenle" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Hızlandırma gas ücretini düzenle" + }, "enableAutoDetect": { "message": " Otomatik algılamayı etkinleştir" }, + "enableEIP1559V2": { + "message": "Gelişmiş Gas Ücreti Kullanıcı Arayüzü'nü Etkinleştir" + }, + "enableEIP1559V2AlertMessage": { + "message": "Gas ücreti tahmini ve özelleştirmenin nasıl çalıştığını güncelledik." + }, + "enableEIP1559V2ButtonText": { + "message": "Ayarlarda Gelişmiş Gas Ücreti Kullanıcı Arayüzü'nü aç" + }, + "enableEIP1559V2Description": { + "message": "Gas tahmini ve özelleştirmenin nasıl çalıştığını güncelledik. Yeni gas deneyimini kullanmak istiyorsan aç. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Yeni gas deneyimi" + }, "enableFromSettings": { "message": " Ayarlardan etkinleştir." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "NFT verilerini almak için OpenSea API'sini kullanın. NFT otomatik algılama OpenSea API'ye dayalıdır ve bu kapatılırsa mevcut olmayacaktır." }, + "enableSmartTransactions": { + "message": "Akıllı İşlemleri Etkinleştir" + }, "enableToken": { "message": "şunu etkinleştir: $1", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Etherscan'de görüntüle" }, + "expandExperience": { + "message": "Web3 deneyimini genişlet" + }, "expandView": { "message": "Görünümü genişlet" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "Harici Uzantı" }, - "extraApprovalGas": { - "message": "+1$ onay gazı", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Başarısız oldu" }, "failedToFetchChainId": { "message": "Zincir kimliği alınamadı. RPC URL adresiniz doğru mu?" }, + "failedToFetchTickerSymbolData": { + "message": "Ticker sembolü doğrulama verileri şu anda mevcut değil, girdiğin sembolün doğru olduğundan emin ol. Bu ağ için gördüğün dönüşüm oranlarını etkileyecektir" + }, "failureMessage": { "message": "Bir şeyler ters gitti ve işlemi tamamlayamadık" }, @@ -1062,6 +1209,26 @@ "message": "şurada:", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "bu uzantıyı kaldırmalısın", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask, geliştiricilerin yeni kararsız API'leri denemeleri içindir. Geliştirici veya beta test kullanıcısı değilsen $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Bu uzantının güvenliğini veya istikrarını garanti etmiyoruz. Flask tarafından sunulan yeni API'ler kimlik avı saldırılarına karşı güçlendirilmemiştir, yani Flask gerektiren herhangi bir site veya snap, varlıklarını çalmaya yönelik kötü niyetli bir girişim olabilir.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Tüm Flask API'leri deneyseldir. Önceden haber verilmeksizin değiştirilebilir veya kaldırılabilirler ya da kararlı MetaMask'e taşınmadan süresiz olarak Flask'ta kalabilirler. Bunları kendi sorumluluğunda kullan.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Riskleri kabul ediyorum", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Bizi Twitter'da takip edin" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "Bu cihazı unut" }, + "forgotPassword": { + "message": "Parolayı mı unuttun?" + }, "from": { "message": "Kimden" }, @@ -1078,6 +1248,9 @@ "message": "Kimden: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "Token listelerinden: $1" + }, "functionApprove": { "message": "İşlev: Onayla" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Düşük, orta ve yüksek tahminlerimiz mevcut değil." }, + "gasFee": { + "message": "Gas Ücreti" + }, "gasLimit": { "message": "Gaz Limiti" }, "gasLimitInfoTooltipContent": { "message": "Gaz limiti, harcamak istediğiniz maksimum gaz birimi tutarıdır." }, + "gasLimitRecommended": { + "message": "Önerilen gas limiti 1$ kadardır. Gas limiti bundan daha düşükse başarısız olabilir." + }, "gasLimitTooLow": { "message": "Gaz limiti en az 21000 olmalıdır" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Goerli Test Ağı" }, + "gotIt": { + "message": "Anladım!" + }, "grantedToWithColon": { "message": "İzin verilen:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Sizi gördüğümüze sevindik." }, @@ -1231,6 +1416,12 @@ "hide": { "message": "Gizle" }, + "hideSeedPhrase": { + "message": "Tohum ifadesini gizle" + }, + "hideToken": { + "message": "Token'ı gizle" + }, "hideTokenPrompt": { "message": "Tokeni gizle?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "Cüzdanımı İçe Aktar" }, + "importNFT": { + "message": "NFT'yi İçe Aktar" + }, + "importNFTAddressToolTip": { + "message": "Örneğin OpenSea'de, NFT'nin Ayrıntılar altındaki sayfasında, 'Sözleşme Adresi' etiketli mavi bir köprülü değer vardır. Buna tıklarsan seni sözleşmenin Etherscan'daki adresine götürecektir; o sayfanın sol üst köşesinde 'Sözleşme' etiketli bir simge ve sağda uzun bir harf ve rakamlar dizisi olmalıdır. Bu, NFT'ni oluşturan sözleşmenin adresidir. Adresin sağındaki 'kopyala' simgesine tıkla, panonda olacaktır." + }, + "importNFTPage": { + "message": "NFT sayfasını içe aktar" + }, + "importNFTTokenIdToolTip": { + "message": "Bir koleksiyoncu kimliği, hiçbir iki NFT birbirine benzemediğinden benzersiz bir tanımlayıcıdır. Yine, OpenSea'de bu numara 'Detaylar' altındadır. Not al veya panonuza kopyala." + }, "importNFTs": { "message": "NFS'leri İçe Aktar" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "Bakiye yetersiz." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "Hesabında $2 ağındaki işlem ücretlerini ödemek için yeterli $1 bulunmuyor. $3 veya başka bir hesaptan para yatır.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "Hesabında $2 ağındaki işlem ücretlerini ödemek için yeterli $1 bulunmuyor. Başka bir hesaptan $1 yatır.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Para yetersiz." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "ETH ağı yok, küçük harfle başlayın" }, + "invalidAssetType": { + "message": "Bu varlık bir NFT'dir ve NFT'ler sekmesi altında bulunan NFT'leri İçe Aktar sayfasına yeniden eklenmesi gerekir" + }, "invalidBlockExplorerURL": { "message": "Block Explorer URL adresi geçersiz" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "ENS içerik çözünürlüğünde kullanmak için IPFS CID ağ geçidi URL adresini girin." }, + "jazzAndBlockies": { + "message": "Jazzicons ve Blockies, bir bakışta bir hesabı tanımlamana yardımcı olan iki farklı benzersiz simge stilidir." + }, + "jazzicons": { + "message": "Jazzicon'lar" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "Evet, kuralım!" }, + "levelArrow": { + "message": "seviye oku" + }, "likeToImportTokens": { "message": "Bu tokenleri içe aktarmak ister misiniz?" }, @@ -1480,11 +1703,14 @@ "loading": { "message": "Yükleniyor..." }, + "loadingNFTs": { + "message": "NFT'ler yükleniyor..." + }, "loadingTokens": { "message": "Tokenler yükleniyor..." }, "localhost": { - "message": "Localhost 8545" + "message": "Yerel Ana Bilgisayar 8545" }, "lock": { "message": "Kilitle" @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "Kilitleme süresi çok fazla" }, + "logo": { + "message": "$1 logosu", + "description": "$1 is the name of the ticker" + }, "low": { "message": "Düşük" }, @@ -1506,7 +1736,10 @@ "message": "Gelecekteki işlemleri bu işlemden sonrasında kuyruğa alınacaktır. Bu fiyat bir süre önce son defa görülmüştür." }, "mainnet": { - "message": "Ethereum Mainnet" + "message": "Ethereum Ana Ağı" + }, + "mainnetToken": { + "message": "Bu adres, bilinen bir Ethereum Mainnet token adresiyle eşleşir. Eklemeye çalıştığın token için sözleşme adresini ve ağı yeniden kontrol et." }, "makeAnotherSwap": { "message": "Yeni bir takas oluştur" @@ -1515,6 +1748,12 @@ "message": "Hiç kimsenin ekranınıza bakmadığından emin olun", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Hatalı biçimlendirilmiş veri" + }, + "manageSnaps": { + "message": "Yüklü Snap'lerini yönet" + }, "max": { "message": "Maksimum" }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "NFT'nizi görmüyor musunuz?" }, + "missingSetting": { + "message": "Bir ayarı bulamıyor musun?" + }, + "missingSettingRequest": { + "message": "Buradan talep et" + }, "missingToken": { "message": "Tokeninizi görmüyor musunuz?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Adı" }, + "needCryptoInWallet": { + "message": "MetaMask kullanarak merkezi olmayan uygulamalarla etkileşim kurmak için cüzdanında $1 bulunmasına ihtiyacın olacak.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Yardıma mı ihtiyacınız var? $1 bölümüne ulaşın", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Negatif tutarlarda ETH gönderilemez." }, + "network": { + "message": "Ağ:" + }, "networkDetails": { "message": "Ağ Bilgileri" }, + "networkIsBusy": { + "message": "Ağ meşgul. Gas fiyatları yüksektir ve tahminler daha az doğrudur." + }, "networkName": { "message": "Ağ Adı" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "Yeni Sözleşme" }, + "newNFTDetectedMessage": { + "message": "MetaMask'in Opensea'den NFT'leri otomatik olarak algılamasına ve cüzdanında görüntülemesine izin ver." + }, "newNFTsDetected": { "message": "Yeni! NFT algılama" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "Henüz NFT yok" }, + "noSnaps": { + "message": "Hiç Snap yüklü değil" + }, "noThanks": { "message": "Hayır Teşekkürler" }, + "noThanksVariant2": { + "message": "Hayır, teşekkürler." + }, "noTransactions": { "message": "İşleminiz yok" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "Yeterli Gaz Yok" }, + "notifications10ActionText": { + "message": "Ayarlarda ziyaret et", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Geliştirilmiş token algılama şu anda Ethereum Mainnet, Polygon, BSC ve Avalanche ağlarında mevcut. Daha fazlası gelecek!" + }, + "notifications10DescriptionThree": { + "message": "Token algılama özelliği varsayılan olarak AÇIK'tır. Ancak bunu Ayarlar'dan devre dışı bırakabilirsin." + }, + "notifications10DescriptionTwo": { + "message": "Token'ları üçüncü taraf belirteç listelerinden alıyoruz. İkiden fazla token listesinde listelenen token'lar otomatik olarak algılanacaktır." + }, + "notifications10Title": { + "message": "Geliştirilmiş token algılama burada" + }, + "notifications11Description": { + "message": "Token'lar herkes tarafından oluşturulabilir ve yinelenen adlara sahip olabilir. Güvenmediğin veya etkileşimde bulunmadığın bir token görürsen ona güvenmemek daha güvenlidir." + }, + "notifications11Title": { + "message": "Dolandırıcılıklar ve güvenlik riskleri" + }, + "notifications12ActionText": { + "message": "Karanlık modu etkinleştir" + }, + "notifications12Description": { + "message": "Karanlık Mod, sistem tercihlerine bağlı olarak yeni kullanıcılar için etkinleştirilecektir. Mevcut kullanıcılar için, Ayarlar -> Deneysel altında Karanlık Modu manuel olarak etkinleştir." + }, + "notifications12Title": { + "message": "Karanlık mod mu? Şimdi karanlık mod! 🕶️🦊" + }, "notifications1Description": { "message": "MetaMask Mobil kullanıcıları artık mobil cüzdanları içinde token takas edebilirler. Mobil uygulamayı edinmek ve takas yapmaya başlamak için QR kodunu tarayın.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 İşlemlerin okunmasını daha kolay hale getiriyoruz." }, + "numberOfNewTokensDetected": { + "message": "Bu hesapta $1 yeni token bulundu", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "/" }, @@ -1984,6 +2286,9 @@ "message": "Kayıt defterinizi WebHID üzerinden bağlamak için MetaMask'i tam ekran açın.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Kaynak kodunu kontrol et" + }, "optional": { "message": "İsteğe bağlı" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "Bu parola MetaMask cüzdanınızın kilidini sadece bu cihazda açacaktır. MetaMask bu parolayı kurtaramaz." }, + "passwordStrength": { + "message": "Parola gücü: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Güçlü bir parola, cihazının çalınması veya güvenliğinin ihlal edilmesi durumunda cüzdanının güvenliğini artırabilir." + }, "passwordTermsWarning": { "message": "MetaMask'in benim için bu parolayı kurtaramayacağını anlıyorum. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "İzin talebi" }, + "permissionRequestCapitalized": { + "message": "İzin Talebi" + }, + "permission_accessNetwork": { + "message": "İnternete erişim sağla.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "$1 Snap'e bağlan.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "MetaMask'te bir onay görüntüle.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Adrese, hesap bakiyesine, aktiviteye bakın ve işlemleri başlatın", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "\"$1\" hesaplarını ve varlıklarını kontrol et.", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Verilerini cihazında sakla ve yönet.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Bildirimleri göster.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Bilinmeyen izin: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "İzinler" }, "personalAddressDetected": { "message": "Kişisel adres algılandı. Token sözleşme adresini girin." }, + "pleaseConfirm": { + "message": "Lütfen onayla" + }, "plusXMore": { "message": "+ $1 tane daha", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "Tercih Edilen Kayıt Defteri Bağlantı Türü", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Takas hazırlanıyor..." + }, "prev": { "message": "Önceki" }, @@ -2104,6 +2453,12 @@ "queued": { "message": "Kuyruğa alındı" }, + "reAddAccounts": { + "message": "diğer hesapları yeniden ekle" + }, + "reAdded": { + "message": "yeniden eklendi" + }, "readdToken": { "message": "Gelecekte bu tokeni hesap seçenekleri menüsünde “Tokeni İçe Aktar”' kısmına giderek tekrar ekleyebilirsiniz." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "NFT'yi kaldır" }, + "removeSnap": { + "message": "Snap'i Kaldır" + }, + "removeSnapConfirmation": { + "message": "$1 snap'ini kaldırmak istediğinden emin misin?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Bu eylem, snap'i, verilerini siler ve verdiğin izinleri iptal eder." + }, + "replace": { + "message": "değiştir" + }, "requestsAwaitingAcknowledgement": { "message": "onaylanmayı bekleyen talepler" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "Hesabınızı sıfırlamak işlem geçmişinizi temizler. Bu işlem, hesaplarınızdaki bakiyeyi değiştirmez veya Gizli Kurtarma İfadenizi yeniden girmenizi gerektirmez." }, + "resetWallet": { + "message": "Cüzdanı Sıfırla" + }, + "resetWalletSubHeader": { + "message": "MetaMask, şifrenin bir kopyasını tutmaz. Hesabının kilidini açmakta sorun yaşıyorsan cüzdanını sıfırlaman gerekecektir. Bunu, cüzdanını kurarken kullandığın Gizli Kurtarma İfadesini sunarak yapabilirsin." + }, + "resetWalletUsingSRP": { + "message": "Bu eylem, sergilediğin hesapların listesiyle birlikte mevcut cüzdanını ve Gizli Kurtarma İfadeni bu cihazdan siler. Bir Gizli Kurtarma Cümlesi ile sıfırladıktan sonra, sıfırlamak için kullandığın Gizli Kurtarma Cümlesine dayalı bir hesap listesi göreceksin. Bu yeni liste, bakiyesi olan hesapları otomatik olarak içerecektir. Ayrıca daha önce oluşturulmuş $1'ı da oluşturabileceksin. İçe aktardığın özel hesapların $2 olması ve bir hesaba eklediğin özel token'ların da $3 olması gerekir." + }, + "resetWalletWarning": { + "message": "Devam etmeden önce doğru Gizli Kurtarma İfadesini kullandığından emin ol. Bunu geri alamazsın." + }, "restore": { "message": "Geri Yükle" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "Bu ifadeyi hiç kimseyle PAYLAŞMAYIN!" }, + "revealTheSeedPhrase": { + "message": "Tohum ifadesini ortaya çıkar" + }, "rinkeby": { "message": "Rinkeby Test Ağı" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "Yeni RPC URL adresi" }, + "safeTransferFrom": { + "message": "Güvenli Transfer Kaynağı" + }, "save": { "message": "Kaydet" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Arama Sonuçları" }, + "searchSettings": { + "message": "Ayarlarda ara" + }, "searchTokens": { "message": "Token Ara" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "Token Gönder" }, + "sendingDisabled": { + "message": "ERC-1155 NFT varlıklarının gönderilmesi henüz desteklenmemektedir." + }, "sendingNativeAsset": { "message": "$1 Gönderiliyor", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "Ayarlar" }, + "settingsSearchMatchingNotFound": { + "message": "Eşleşen sonuç bulunamadı." + }, + "shorthandVersion": { + "message": "s$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Göster" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "Yavaş" }, + "smartTransaction": { + "message": "Akıllı İşlem" + }, + "snapAccess": { + "message": "$1 snap'in şunlara erişimi vardır:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "$1 tarihinde $2 alanından eklendi", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Snap Hatası: '$1'. Hata Kodu: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Snap'i Yükle" + }, + "snapInstallWarningCheck": { + "message": "Anladığını doğrulamak için hepsini kontrol et." + }, + "snapInstallWarningKeyAccess": { + "message": "\"$1\" snap'ine anahtar erişimi veriyorsun. Bu geri alınamaz ve hesapların ve varlıkların üzerinde \"1$\" kontrol sağlar. Devam etmeden önce \"$1\" öğesine güvendiğinden emin ol.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Bu ek, aşağıdaki izinleri istiyor:" + }, + "snaps": { + "message": "Snap'ler" + }, + "snapsSettingsDescription": { + "message": "Snap'lerini yönet" + }, + "snapsStatus": { + "message": "Snap durumu etkinliğe bağlıdır." + }, + "snapsToggle": { + "message": "Bir snap yalnızca etkinleştirilmişse çalışır" + }, "somethingWentWrong": { "message": "Eyvah! Bir şeyler ters gitti." }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Harcama limiti çok büyük" }, + "srpInputNumberOfWords": { + "message": "$1 sözcükten oluşan bir ifadem var", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "24'ten fazla sözcük içerdiği için yapıştırma başarısız oldu. Gizli bir kurtarma ifadesi en fazla 24 sözcükten oluşabilir.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Gizli kurtarma ifadenin tamamını herhangi bir alana yapıştırabilirsin", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Gizli kurtarma ifadesinin bu sözcüğünü göster/gizle", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Bu sözcük gizli", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Bu sözcük gösteriliyor", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Stabil" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "Durum günlükleri açık hesap adreslerinizi ve gönderilen işlemleri içerir." }, + "status": { + "message": "Durum" + }, "statusConnected": { "message": "Bağlandı" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "Bu ifadeyi 1Password gibi bir parola yöneticisinde saklayın." }, + "strong": { + "message": "Güçlü" + }, + "stxAreHere": { + "message": "Akıllı İşlemler burada!" + }, + "stxBenefit1": { + "message": "İşlem maliyetlerini en aza indir" + }, + "stxBenefit2": { + "message": "İşlem hatalarını azalt" + }, + "stxBenefit3": { + "message": "Sıkışmış işlemleri ortadan kaldır" + }, + "stxBenefit4": { + "message": "Önden çalıştırmayı engelle" + }, + "stxCancelled": { + "message": "Takas başarısız olurdu" + }, + "stxCancelledDescription": { + "message": "İşlemin başarısız olur ve gereksiz gas ücreti ödemeni önlemek amacıyla iptal edilirdi." + }, + "stxCancelledSubDescription": { + "message": "Takasını tekrar dene. Bir dahaki sefere seni benzer risklere karşı korumak için burada olacağız." + }, + "stxDescription": { + "message": "MetaMask Swapları artık çok daha akıllı! Akıllı İşlemleri, MetaMask'in renklerine yardımcı olmak için Swap'ını programlı olarak optimize etme bölümünden yararlanmak:" + }, + "stxErrorNotEnoughFunds": { + "message": "Akıllı işlem için yeterli para yok." + }, + "stxErrorUnavailable": { + "message": "Akıllı İşlemler geçici olarak kullanılamıyor." + }, + "stxFailure": { + "message": "Takas başarısız oldu" + }, + "stxFailureDescription": { + "message": "Ani piyasa değişiklikleri başarısızlıklara neden olabilir. Sorun devam ederse lütfen $1 ile iletişime geç.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Bekleyen bir işlemin olduğundan Akıllı İşlemler geçici olarak kullanılamıyor." + }, + "stxFallbackUnavailable": { + "message": "Akıllı İşlemler kullanılamazken bile token'larını değiştirebilirsin." + }, + "stxPendingFinalizing": { + "message": "Sonuçlandırılıyor..." + }, + "stxPendingOptimizingGas": { + "message": "Gas optimize ediliyor..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Takas özel olarak gönderiliyor..." + }, + "stxSubDescription": { + "message": "* Akıllı İşlemler, işlemini birden çok kez özel olarak göndermeye çalışır. Tüm denemeler başarısız olursa Takas'ının başarılı bir şekilde gerçekleşmesini sağlamak için işlem herkese açık olarak yayınlanacaktır." + }, + "stxSuccess": { + "message": "Takas tamamlandı!" + }, + "stxSuccessDescription": { + "message": "$1 artık kullanılabilir.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "İşlem maliyetlerini azaltmak ve arızaları azaltmak için göndermeden önce işlemleri simüle et." + }, + "stxTryRegular": { + "message": "Normal bir takas dene." + }, + "stxTryingToCancel": { + "message": "İşlemin iptal edilmeye çalışılıyor..." + }, + "stxUnavailable": { + "message": "Akıllı İşlemler devre dışı bırakıldı" + }, + "stxUnknown": { + "message": "Durum bilinmiyor" + }, + "stxUnknownDescription": { + "message": "Bir işlem başarılı oldu ama ne olduğundan emin değiliz. Bunun nedeni, bu takas işlenirken başka bir işlemin gönderilmesi olabilir." + }, + "stxUserCancelled": { + "message": "Takas iptal edildi" + }, + "stxUserCancelledDescription": { + "message": "İşlemin iptal edildi ve gereksiz gas ücreti ödemedin." + }, + "stxYouCanOptOut": { + "message": "\nDilediğin zaman gelişmiş ayarlarda devre dışı bırakabilirsin." + }, "submit": { "message": "Gönder" }, @@ -2607,6 +3168,10 @@ "message": "Bu takası tamamlamak için $1 tane daha $2 gerekli", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Akıllı işlemleri kullanarak bu takası tamamlamak için daha fazla $1 lazım.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "En iyi $1 teklifleri.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "$1 ile eşleşen token yok", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Değiştirme işlemi şu süre içinde tamamlandı <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Donanım cüzdanınızla onaylayın" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Takas işlemi başarısız oldu" }, + "swapFetchingQuoteNofN": { + "message": "$1 / $2 fiyat teklifi alınıyor", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Teklifler alınıyor" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "İlk senkronizasyon işlemi sırasındaki bir hata nedeniyle 3Box devre dışı bırakıldı" }, + "tenPercentIncreased": { + "message": "%10 artış" + }, "terms": { "message": "Kullanım Şartları" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Test Musluğu" }, + "testNetworks": { + "message": "Test ağları" + }, + "theme": { + "message": "Tema" + }, + "themeDescription": { + "message": "Tercih ettiğin MetaMask temasını seç." + }, "thisWillCreate": { "message": "Bu, yeni bir cüzdan ve Gizli Kurtarma İfadesi oluşturacaktır" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Token" }, + "tokenAddress": { + "message": "Token adresi" + }, "tokenAlreadyAdded": { "message": "Token zaten eklenmiş." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Token ondalık değeri gerekli." }, + "tokenDecimalTitle": { + "message": "Token Ondalığı:" + }, + "tokenDetails": { + "message": "Token bilgileri" + }, + "tokenDetection": { + "message": "Token algılama" + }, + "tokenDetectionAlertMessage": { + "message": "Token algılama şu anda $1 üzerinden kullanılabilir. $2" + }, "tokenDetectionAnnouncement": { "message": "Yeni! Deney aşamasında olan bir özellik olarak Ethereum Mainnet'te gelişmiş token algılama mevcut. $1" }, + "tokenDetectionToggleDescription": { + "message": "ConsenSys'in token API'si, çeşitli üçüncü taraf token listelerinden token'ların bir listesini toplar. Kapatmak, cüzdanına eklenen yeni token'ları algılamayı durduracak, ancak içe aktarılacak token'ları arama seçeneğini koruyacaktır." + }, + "tokenId": { + "message": "Token Kimliği" + }, + "tokenList": { + "message": "Token listeleri:" + }, "tokenSymbol": { "message": "Token Sembolü" }, @@ -3098,7 +3707,7 @@ "message": "İşlem $2 itibariyle güncellendi." }, "transfer": { - "message": "Transfer" + "message": "Transfer et" }, "transferBetweenAccounts": { "message": "Hesaplarım arası transfer" @@ -3178,6 +3787,12 @@ "message": "Toplanabilir (ERC-721) tokenlerin gönderilmesi şu anda desteklenmiyor", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Bu sözleşmeyi doğrulayamıyoruz. Bu adrese güvendiğinden emin ol." + }, + "upArrow": { + "message": "yukarı ok" + }, "updatedWithDate": { "message": "$1 güncellendi" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Cüzdanınıza gönderilen yeni tokenleri algılamak ve görüntülemek için üçüncü taraf API'leri kullanıyoruz. MetaMask tarafından bu hizmetlerden veri çekilmesini istemiyorsanız bunu kapatın." }, + "useTokenDetectionPrivacyDesc": { + "message": "Hesabına gönderilen token'ların otomatik olarak görüntülenmesi, token'ın görüntülerini almak için üçüncü taraf sunucularla iletişimi içerir. Bu servislerin IP adresine erişimi olacaktır." + }, "usedByClients": { "message": "Çeşitli müşteriler tarafından kullanılıyor" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Cüzdan oluşturma başarılı" }, + "weak": { + "message": "Zayıf" + }, "web3ShimUsageNotification": { "message": "Mevcut web sitesinin kaldırılmış olan window.web3 API'sini kullanmaya çalıştığını fark ettik. Site bozuk görünüyorsa daha fazla bilgi için lütfen $1 bağlantısına tıklayın.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1 / $2 bekliyor", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Evet" + }, "yesLetsTry": { "message": "Evet, deneyelim" }, diff --git a/app/_locales/uk/messages.json b/app/_locales/uk/messages.json index c2e046eb4..2b47cd8d4 100644 --- a/app/_locales/uk/messages.json +++ b/app/_locales/uk/messages.json @@ -137,10 +137,10 @@ "message": "Ваш браузер не підтримується..." }, "buyWithWyre": { - "message": "Купити ETH через Wyre" + "message": "Купити $1 через Wyre" }, "buyWithWyreDescription": { - "message": "Wyre дає змогу використовувати кредитну картку для внесення валюти ETH безпосередньо у свій гаманець MetaMask." + "message": "Wyre дає змогу використовувати кредитну картку для внесення валюти $1 безпосередньо у свій гаманець MetaMask." }, "bytes": { "message": "Байти" diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index f0f5d65cb..19059db78 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -58,6 +58,10 @@ "message": "$1 có thể truy cập và chi tiêu đến số tiền tối đa", "description": "$1 is the url of the site requesting ability to spend" }, + "accessAndSpendNoticeNFT": { + "message": "$1 có thể truy cập và chi tiêu tài sản này", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Đang truy cập máy ảnh..." }, @@ -67,6 +71,9 @@ "accountDetails": { "message": "Chi tiết tài khoản" }, + "accountIdenticon": { + "message": "Biểu tượng nhận biết tài khoản" + }, "accountName": { "message": "Tên tài khoản" }, @@ -95,6 +102,9 @@ "addANetwork": { "message": "Thêm mạng" }, + "addANetworkManually": { + "message": "Thêm mạng theo cách thủ công" + }, "addANickname": { "message": "Thêm tên riêng" }, @@ -134,6 +144,9 @@ "addFriendsAndAddresses": { "message": "Thêm bạn bè và địa chỉ mà bạn tin tưởng" }, + "addFromAListOfPopularNetworks": { + "message": "Thêm từ danh sách các mạng phổ biến hoặc thêm mạng theo cách thủ công. Chỉ tương tác với các đối tượng mà bạn tin tưởng." + }, "addMemo": { "message": "Thêm bản ghi nhớ" }, @@ -179,8 +192,11 @@ "affirmAgree": { "message": "Tôi đồng ý" }, - "aggregatorFeeCost": { - "message": "Phí mạng cho trình tổng hợp" + "airgapVault": { + "message": "AirGap Vault" + }, + "airgapVaultTutorial": { + "message": " (Hướng dẫn)" }, "alertDisableTooltip": { "message": "Bạn có thể thay đổi trong phần \"Cài đặt > Cảnh báo\"" @@ -233,15 +249,12 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "Phí mạng cho trình tổng hợp và việc phê duyệt" - }, - "approvalTxGasCost": { - "message": "Chi phí gas cho giao dịch phê duyệt" - }, "approve": { "message": "Phê duyệt giới hạn chi tiêu" }, + "approveAndInstall": { + "message": "Chấp nhận và cài đặt" + }, "approveButtonText": { "message": "Phê duyệt" }, @@ -255,6 +268,15 @@ "approvedAmountWithColon": { "message": "Số tiền được duyệt:" }, + "approvedAsset": { + "message": "Tài sản được chấp nhận" + }, + "areYouDeveloper": { + "message": "Bạn có phải là lập trình viên không?" + }, + "areYouSure": { + "message": "Bạn có chắc chắn không?" + }, "asset": { "message": "Tài sản" }, @@ -356,6 +378,9 @@ "message": "Xem tài khoản tại $1", "description": "$1 replaced by URL for custom block explorer" }, + "blockies": { + "message": "Blockies" + }, "browserNotSupported": { "message": "Trình duyệt của bạn không được hỗ trợ..." }, @@ -371,11 +396,30 @@ "buy": { "message": "Mua" }, + "buyAsset": { + "message": "Mua $1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "Mua $1 bằng MoonPay", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay hỗ trợ các phương thức thanh toán phổ biến, bao gồm Visa, Mastercard, Apple / Google / Samsung Pay và chuyển khoản ngân hàng tại hơn 145 quốc gia. Nạp token vào tài khoản MetaMask của bạn." + }, + "buyCryptoWithTransak": { + "message": "Mua $1 bằng Transak", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak hỗ trợ thẻ tín dụng và ghi nợ, Apple Pay, MobiKwik và chuyển khoản ngân hàng (tùy thuộc vào vị trí) tại hơn 100 quốc gia. Nạp trực tiếp $1 vào tài khoản MetaMask của bạn.", + "description": "$1 represents the crypto symbol to be purchased" + }, "buyWithWyre": { - "message": "Mua ETH qua Wyre" + "message": "Mua $1 qua Wyre" }, "buyWithWyreDescription": { - "message": "Wyre cho phép bạn dùng thẻ ghi nợ để nạp ETH trực tiếp vào tài khoản MetaMask của mình." + "message": "Wyre cho phép bạn dùng thẻ ghi nợ để nạp $1 trực tiếp vào tài khoản MetaMask của mình." }, "bytes": { "message": "Byte" @@ -395,6 +439,17 @@ "cancelSpeedUp": { "message": "hủy hoặc tăng tốc giao dịch." }, + "cancelSpeedUpLabel": { + "message": "Phí gas này sẽ $1 phí gas ban đầu.", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "Để $1 một giao dịch, phí gas phải tăng tối thiểu 10% để mạng nhận ra giao dịch này.", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "Hủy hoán đổi" + }, "cancellationGasFee": { "message": "Phí gas hủy" }, @@ -410,6 +465,10 @@ "chainIdExistsErrorMsg": { "message": "Mạng $1 hiện đang sử dụng mã chuỗi này." }, + "chainListReturnedDifferentTickerSymbol": { + "message": "Mạng có ID chuỗi $1 có thể sử dụng một ký hiệu tiền tệ ($2) khác với ký hiệu mà bạn đã nhập. Vui lòng xác minh trước khi tiếp tục.", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, "chromeRequiredForHardwareWallets": { "message": "Bạn cần sử dụng MetaMask trên Google Chrome để kết nối với Ví cứng của bạn." }, @@ -423,6 +482,13 @@ "close": { "message": "Đóng" }, + "collectibleAddFailedMessage": { + "message": "Không thể thêm NFT vì thông tin quyền sở hữu không trùng khớp. Đảm bảo bạn đã nhập đúng thông tin." + }, + "collectibleAddressError": { + "message": "Token này là một NFT. Thêm vào $1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, "confirm": { "message": "Xác nhận" }, @@ -506,6 +572,10 @@ "message": "$1 chưa được kết nối với bất kỳ trang web nào.", "description": "$1 is the account name" }, + "connectedSnapSites": { + "message": "Snap $1 được kết nối với các trang web này. Các trang web này được phép sử dụng những quyền được liệt kê ở trên.", + "description": "$1 represents the name of the snap" + }, "connecting": { "message": "Đang kết nối..." }, @@ -536,6 +606,9 @@ "continue": { "message": "Tiếp tục" }, + "continueToMoonPay": { + "message": "Tiếp tục đến MoonPay" + }, "continueToTransak": { "message": "Tiếp tục đến Transak" }, @@ -557,6 +630,12 @@ "contractInteraction": { "message": "Tương tác với hợp đồng" }, + "convertTokenToNFTDescription": { + "message": "Chúng tôi phát hiện tài sản này là một NFT. Metamask hiện đã hỗ trợ gốc đầy đủ cho NFT. Bạn có muốn xóa tài sản khỏi danh sách token và thêm tài sản dưới dạng NFT không?" + }, + "convertTokenToNFTExistDescription": { + "message": "Chúng tôi phát hiện tài sản này đã được thêm dưới dạng NFT. Bạn có muốn xóa tài sản khỏi danh sách token không?" + }, "copiedExclamation": { "message": "Đã sao chép!" }, @@ -614,9 +693,21 @@ "currentlyUnavailable": { "message": "Không có sẵn trên mạng này" }, + "curveHighGasEstimate": { + "message": "Đồ thị ước tính phí gas cao" + }, + "curveLowGasEstimate": { + "message": "Đồ thị ước tính phí gas thấp" + }, + "curveMediumGasEstimate": { + "message": "Đồ thị ước tính phí gas theo thị trường" + }, "custom": { "message": "Nâng cao" }, + "customContentSearch": { + "message": "Tìm kiếm mạng đã thêm trước đây" + }, "customGas": { "message": "Tùy chỉnh gas" }, @@ -633,6 +724,15 @@ "customToken": { "message": "Token tùy chỉnh" }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "Tính năng phát hiện token hiện chưa khả dụng trong mạng này. Vui lòng nhập token theo cách thủ công và đảm bảo bạn tin tưởng. Tìm hiểu về $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "Đảm bảo bạn tin tưởng trước khi nhập token theo cách thủ công. Tìm hiểu về $1." + }, + "customerSupport": { + "message": "hỗ trợ khách hàng" + }, "dappSuggested": { "message": "Trang web gợi ý" }, @@ -647,6 +747,9 @@ "message": "$1 đã đề xuất mức giá này.", "description": "$1 represents the Dapp's origin" }, + "darkTheme": { + "message": "Tối" + }, "data": { "message": "Dữ liệu" }, @@ -694,12 +797,26 @@ "deleteNetworkDescription": { "message": "Bạn có chắc chắn muốn xóa mạng này không?" }, + "depositCrypto": { + "message": "Nạp $1", + "description": "$1 represents the cypto symbol to be purchased" + }, "description": { "message": "Mô tả" }, "details": { "message": "Chi tiết" }, + "directDepositCrypto": { + "message": "Nạp trực tiếp $1" + }, + "directDepositCryptoExplainer": { + "message": "Nếu bạn đã có một ít $1, nạp trực tiếp là cách nhanh nhất để nhận $1 trong ví mới." + }, + "disabledGasOptionToolTipMessage": { + "message": "“$1” bị vô hiệu hóa vì không đạt mức tăng tối thiểu 10% so với phí gas ban đầu.", + "description": "$1 is gas estimate type which can be market or aggressive" + }, "disconnect": { "message": "Ngắt kết nối" }, @@ -733,6 +850,9 @@ "dontShowThisAgain": { "message": "Không hiển thị lại" }, + "downArrow": { + "message": "mũi tên xuống" + }, "downloadGoogleChrome": { "message": "Tải về Google Chrome" }, @@ -754,6 +874,9 @@ "editAddressNickname": { "message": "Chỉnh sửa tên riêng địa chỉ" }, + "editCancellationGasFeeModalTitle": { + "message": "Chỉnh sửa phí gas hủy" + }, "editContact": { "message": "Chỉnh sửa địa chỉ liên hệ" }, @@ -873,9 +996,28 @@ "editPermission": { "message": "Chỉnh sửa quyền" }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "Chỉnh sửa phí gas tăng tốc" + }, "enableAutoDetect": { "message": " Bật Tự Động Phát Hiện" }, + "enableEIP1559V2": { + "message": "Bật giao diện phí gas nâng cao" + }, + "enableEIP1559V2AlertMessage": { + "message": "Chúng tôi đã cập nhật cách thức hoạt động của việc ước tính và tùy chỉnh phí gas." + }, + "enableEIP1559V2ButtonText": { + "message": "Bật giao diện phí gas nâng cao trong Cài đặt" + }, + "enableEIP1559V2Description": { + "message": "Chúng tôi đã cập nhật cách thức hoạt động của việc ước tính và tùy chỉnh phí gas. Bật lên nếu bạn muốn sử dụng trải nghiệm gas mới. $1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "Trải nghiệm gas mới" + }, "enableFromSettings": { "message": " Bật lên trong Cài Đặt." }, @@ -885,6 +1027,9 @@ "enableOpenSeaAPIDescription": { "message": "Sử dụng API của OpenSea để tìm nạp dữ liệu NFT. Tính năng tự động phát hiện NFT dựa vào API của OpenSea và sẽ không khả dụng nếu tính năng này bị tắt." }, + "enableSmartTransactions": { + "message": "Bật giao dịch thông minh" + }, "enableToken": { "message": "bật $1", "description": "$1 is a token symbol, e.g. ETH" @@ -1005,6 +1150,9 @@ "etherscanViewOn": { "message": "Xem trên Etherscan" }, + "expandExperience": { + "message": "Mở rộng trải nghiệm web3 của bạn" + }, "expandView": { "message": "Mở rộng cửa sổ xem" }, @@ -1017,16 +1165,15 @@ "externalExtension": { "message": "Tiện ích bên ngoài" }, - "extraApprovalGas": { - "message": "+$1 gas phê duyệt", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "Không thành công" }, "failedToFetchChainId": { "message": "Không thể tìm nạp mã chuỗi. URL RPC của bạn có chính xác không?" }, + "failedToFetchTickerSymbolData": { + "message": "Dữ liệu xác minh ký hiệu mã hiện không khả dụng, hãy chắc chắn bạn đã nhập đúng ký hiệu. Điều này sẽ ảnh hưởng đến tỷ giá chuyển đổi mà bạn nhìn thấy trong mạng này" + }, "failureMessage": { "message": "Đã xảy ra sự cố và chúng tôi không thể hoàn tất hành động" }, @@ -1062,6 +1209,26 @@ "message": "từ", "description": "Part of the sentence describing when and where snap was added" }, + "flaskWelcomeUninstall": { + "message": "bạn nên gỡ cài đặt tiện ích mở rộng này", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask là nơi để các lập trình viên thí nghiệm những API mới không ổn định. Nếu bạn không phải là lập trình viên hay người tham gia thử nghiệm giai đoạn beta, $1.", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "Chúng tôi không đảm bảo tính an toàn hay ổn định của tiện ích mở rộng này. Các API mới do Flask cung cấp không đủ sức chống lại các cuộc tấn công lừa đảo, có nghĩa rằng bất kỳ trang web hay Snap nào yêu cầu truy cập vào Flask đều có thể mang mục đích xấu nhằm đánh cắp tài sản của bạn.", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "Tất cả các API của Flask đều là thử nghiệm. Chúng có thể bị thay đổi hoặc xóa mà không cần thông báo, hoặc chúng có thể ở trên Flask vô thời hạn mà không bao giờ được chuyển sang phiên bản MetaMask ổn định. Bạn phải tự chịu rủi ro khi sử dụng chúng.", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "Tôi chấp nhận những rủi ro này", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, "followUsOnTwitter": { "message": "Theo dõi chúng tôi trên Twitter" }, @@ -1071,6 +1238,9 @@ "forgetDevice": { "message": "Quên thiết bị này" }, + "forgotPassword": { + "message": "Quên mật khẩu?" + }, "from": { "message": "Từ" }, @@ -1078,6 +1248,9 @@ "message": "Từ: $1", "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" }, + "fromTokenLists": { + "message": "Từ danh sách token: $1" + }, "functionApprove": { "message": "Chức năng: Phê duyệt" }, @@ -1097,12 +1270,18 @@ "gasEstimatesUnavailableWarning": { "message": "Các ước tính thấp, trung bình và cao của chúng tôi hiện không có sẵn." }, + "gasFee": { + "message": "Phí gas" + }, "gasLimit": { "message": "Giới hạn gas" }, "gasLimitInfoTooltipContent": { "message": "Giới hạn gas là số lượng đơn vị gas tối đa mà bạn sẵn sàng chi tiêu." }, + "gasLimitRecommended": { + "message": "Giới hạn gas được đề xuất là $1. Có thể thất bại nếu giới hạn gas thấp hơn." + }, "gasLimitTooLow": { "message": "Giới hạn gas ít nhất phải là 21000" }, @@ -1196,9 +1375,15 @@ "goerli": { "message": "Mạng thử nghiệm Goerli" }, + "gotIt": { + "message": "Đã hiểu!" + }, "grantedToWithColon": { "message": "Cấp cho:" }, + "gwei": { + "message": "GWEI" + }, "happyToSeeYou": { "message": "Chúng tôi rất vui khi được gặp bạn." }, @@ -1231,6 +1416,12 @@ "hide": { "message": "Ẩn" }, + "hideSeedPhrase": { + "message": "Ẩn cụm từ khôi phục bí mật" + }, + "hideToken": { + "message": "Ẩn token" + }, "hideTokenPrompt": { "message": "Ẩn token?" }, @@ -1273,6 +1464,18 @@ "importMyWallet": { "message": "Nhập Ví Của Tôi" }, + "importNFT": { + "message": "Nhập NFT" + }, + "importNFTAddressToolTip": { + "message": "Ví dụ: trên OpenSea, trên trang của NFT bên dưới mục Chi tiết, có một giá trị siêu liên kết màu xanh dương gắn nhãn 'Địa chỉ hợp đồng'. Nếu bạn nhấn vào đây, nó sẽ dẫn bạn đến địa chỉ của hợp đồng trên Etherscan; ở phía trên cùng bên trái của trang đó, sẽ có một biểu tượng gắn nhãn 'Hợp đồng', và ở bên phải là một chuỗi dài các chữ cái và số. Đây là địa chỉ của hợp đồng đã tạo NFT của bạn. Nhấn vào biểu tượng 'sao chép' ở bên phải của địa chỉ và bạn sẽ sao chép nó vào bộ nhớ đệm." + }, + "importNFTPage": { + "message": "Nhập trang NFT" + }, + "importNFTTokenIdToolTip": { + "message": "ID của bộ sưu tập là một mã nhận dạng duy nhất vì không có hai NFT nào giống hệt nhau. Một lần nữa, trên OpenSea, mã số này nằm bên dưới mục 'Chi tiết'. Hãy ghi chú lại hoặc sao chép vào bộ nhớ đệm." + }, "importNFTs": { "message": "Nhập NFT" }, @@ -1308,6 +1511,14 @@ "insufficientBalance": { "message": "Không đủ số dư." }, + "insufficientCurrencyBuyOrDeposit": { + "message": "Bạn không có đủ $1 trong tài khoản để thanh toán phí giao dịch trên mạng $2. $3 hoặc nạp từ một tài khoản khác.", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "Bạn không có đủ $1 trong tài khoản để thanh toán phí giao dịch trên mạng $2. Nạp $1 từ một tài khoản khác.", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, "insufficientFunds": { "message": "Không đủ tiền." }, @@ -1326,6 +1537,9 @@ "invalidAddressRecipientNotEthNetwork": { "message": "Không phải mạng ETH, hãy đặt ở chữ viết thường" }, + "invalidAssetType": { + "message": "Tài sản này là một NFT và cần được thêm lại trên trang Nhập NFT bên dưới thẻ NFT" + }, "invalidBlockExplorerURL": { "message": "URL trình khám phá khối không hợp lệ" }, @@ -1373,6 +1587,12 @@ "ipfsGatewayDescription": { "message": "Nhập URL của cổng kết nối IPFS CID để dùng cho quá trình phân giải nội dung ENS." }, + "jazzAndBlockies": { + "message": "Jazzicons và Blockies là hai kiểu biểu tượng độc nhất khác nhau giúp bạn nhận ra tài khoản trong nháy mắt." + }, + "jazzicons": { + "message": "Jazzicons" + }, "jsDeliver": { "message": "jsDeliver" }, @@ -1465,6 +1685,9 @@ "letsGoSetUp": { "message": "Có, hãy thiết lập!" }, + "levelArrow": { + "message": "mũi tên cấp độ" + }, "likeToImportTokens": { "message": "Bạn có muốn nhập những token này không?" }, @@ -1480,6 +1703,9 @@ "loading": { "message": "Đang tải..." }, + "loadingNFTs": { + "message": "Đang tải NFT..." + }, "loadingTokens": { "message": "Đang tải token..." }, @@ -1492,6 +1718,10 @@ "lockTimeTooGreat": { "message": "Thời gian khóa quá lớn" }, + "logo": { + "message": "Logo $1", + "description": "$1 is the name of the ticker" + }, "low": { "message": "Thấp" }, @@ -1508,6 +1738,9 @@ "mainnet": { "message": "Mạng chính thức của Ethereum" }, + "mainnetToken": { + "message": "Địa chỉ này trùng với một địa chỉ đã biết trên Mạng chính thức của Ethereum. Hãy kiểm tra lại địa chỉ hợp đồng và mạng cho token mà bạn đang muốn thêm." + }, "makeAnotherSwap": { "message": "Tạo một giao dịch hoán đổi mới" }, @@ -1515,6 +1748,12 @@ "message": "Đảm bảo không có ai đang nhìn màn hình của bạn", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "malformedData": { + "message": "Dữ liệu không đúng định dạng" + }, + "manageSnaps": { + "message": "Quản lý các Snap đã cài đặt" + }, "max": { "message": "Tối đa" }, @@ -1621,6 +1860,12 @@ "missingNFT": { "message": "Không thấy NFT của mình?" }, + "missingSetting": { + "message": "Không tìm thấy thiết lập?" + }, + "missingSettingRequest": { + "message": "Yêu cầu tại đây" + }, "missingToken": { "message": "Không thấy token của mình?" }, @@ -1636,6 +1881,10 @@ "name": { "message": "Tên" }, + "needCryptoInWallet": { + "message": "Để tương tác với các ứng dụng phi tập trung bằng MetaMask, bạn sẽ cần $1 trong ví.", + "description": "$1 represents the cypto symbol to be purchased" + }, "needHelp": { "message": "Bạn cần trợ giúp? Liên hệ $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" @@ -1656,12 +1905,21 @@ "negativeETH": { "message": "Không thể gửi số lượng ETH âm." }, + "network": { + "message": "Mạng:" + }, "networkDetails": { "message": "Thông tin về mạng" }, + "networkIsBusy": { + "message": "Mạng đang bận. Giá gas cao và ước tính kém chính xác hơn." + }, "networkName": { "message": "Tên mạng" }, + "networkNameAvalanche": { + "message": "Avalanche" + }, "networkNameBSC": { "message": "BSC" }, @@ -1728,6 +1986,9 @@ "newContract": { "message": "Hợp đồng mới" }, + "newNFTDetectedMessage": { + "message": "Cho phép MetaMask tự động phát hiện NFT từ OpenSea và hiển thị trên ví MetaMask của bạn." + }, "newNFTsDetected": { "message": "Mới! Phát hiện NFT" }, @@ -1783,9 +2044,15 @@ "noNFTs": { "message": "Chưa có NFT" }, + "noSnaps": { + "message": "Chưa cài đặt Snap nào" + }, "noThanks": { "message": "Không, cảm ơn" }, + "noThanksVariant2": { + "message": "Không, cảm ơn." + }, "noTransactions": { "message": "Bạn không có giao dịch nào" }, @@ -1816,6 +2083,37 @@ "notEnoughGas": { "message": "Không đủ gas" }, + "notifications10ActionText": { + "message": "Xem trong cài đặt", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Tính năng phát hiện token cải tiến hiện đã có sẵn trên Mạng chính thức của Ethereum, mạng Polygon, BSC và Avalanche. Sẽ sớm có thêm nhiều mạng khác!" + }, + "notifications10DescriptionThree": { + "message": "Theo mặc định, tính năng phát hiện token sẽ được BẬT. Nhưng bạn có thể tắt tính năng này trong phần Cài đặt." + }, + "notifications10DescriptionTwo": { + "message": "Chúng tôi lấy token từ các danh sách token của bên thứ ba. Những token được liệt kê trong 2 danh sách token trở lên sẽ tự động được phát hiện." + }, + "notifications10Title": { + "message": "Tính năng phát hiện token cải tiến đã ra mắt" + }, + "notifications11Description": { + "message": "Token có thể được tạo bởi bất kỳ ai và có thể có tên trùng lặp. Nếu bạn thấy một token mà bạn không tin tưởng hoặc chưa từng tương tác - để đảm bảo an toàn, đừng tin tưởng token đó." + }, + "notifications11Title": { + "message": "Rủi ro về bảo mật và lừa đảo" + }, + "notifications12ActionText": { + "message": "Bật chế độ tối" + }, + "notifications12Description": { + "message": "Chế độ tối sẽ được kích hoạt dành cho người dùng mới tùy theo tùy chọn hệ thống của họ. Đối với người dùng hiện tại, có thể bật Chế độ tối theo cách thủ công trong phần Cài đặt -> Thử nghiệm." + }, + "notifications12Title": { + "message": "Dùng chế độ tối khi nào? Ngay bây giờ! 🕶️🦊" + }, "notifications1Description": { "message": "Giờ đây, người dùng MetaMask trên điện thoại di động có thể hoán đổi token trong ví di động của họ. Quét mã QR để tải ứng dụng di động và bắt đầu hoán đổi.", "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." @@ -1905,6 +2203,10 @@ "notifications9Title": { "message": "👓 Chúng tôi đang làm cho các giao dịch dễ đọc hơn." }, + "numberOfNewTokensDetected": { + "message": "Tìm thấy $1 token mới trong tài khoản này", + "description": "$1 is the number of new tokens detected" + }, "ofTextNofM": { "message": "trên" }, @@ -1984,6 +2286,9 @@ "message": "Mở MetaMask ở chế độ toàn màn hình để kết nối thiết bị Ledger của bạn qua WebHID.", "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." }, + "openSourceCode": { + "message": "Kiểm tra mã nguồn" + }, "optional": { "message": "Không bắt buộc" }, @@ -2014,6 +2319,13 @@ "passwordSetupDetails": { "message": "Mật khẩu này sẽ chỉ mở khóa ví MetaMask của bạn trên thiết bị này. MetaMask không thể khôi phục mật khẩu này." }, + "passwordStrength": { + "message": "Độ mạnh của mật khẩu: $1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "Một mật khẩu mạnh có thể giúp tăng cường bảo mật cho ví nếu thiết bị của bạn bị đánh cắp hoặc xâm phạm." + }, "passwordTermsWarning": { "message": "Tôi hiểu rằng MetaMask không thể khôi phục mật khẩu này cho tôi. $1" }, @@ -2040,16 +2352,50 @@ "permissionRequest": { "message": "Yêu cầu quyền" }, + "permissionRequestCapitalized": { + "message": "Yêu cầu cấp quyền" + }, + "permission_accessNetwork": { + "message": "Truy cập Internet.", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "Kết nối với Snap $1.", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "Hiển thị xác nhận trong MetaMask.", + "description": "The description for the `snap_confirm` permission" + }, "permission_ethereumAccounts": { "message": "Xem địa chỉ, số dư tài khoản, hoạt động và bắt đầu giao dịch", "description": "The description for the `eth_accounts` permission" }, + "permission_manageBip44Keys": { + "message": "Kiểm soát các tài khoản và tài sản \"$1\" của bạn.", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "Lưu trữ và quản lý dữ liệu trong thiết bị.", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "Hiển thị thông báo.", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "Quyền không xác định: $1", + "description": "$1 is the name of a requested permission that is not recognized." + }, "permissions": { "message": "Quyền" }, "personalAddressDetected": { "message": "Đã tìm thấy địa chỉ cá nhân. Nhập địa chỉ hợp đồng token." }, + "pleaseConfirm": { + "message": "Vui lòng xác nhận" + }, "plusXMore": { "message": "+ $1 khác", "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" @@ -2058,6 +2404,9 @@ "message": "Dạng Kết Nối Ledger Ưu Tiên", "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" }, + "preparingSwap": { + "message": "Đang chuẩn bị hoán đổi..." + }, "prev": { "message": "Trước" }, @@ -2104,6 +2453,12 @@ "queued": { "message": "Đã đưa vào hàng đợi" }, + "reAddAccounts": { + "message": "thêm lại bất kỳ tài khoản nào khác" + }, + "reAdded": { + "message": "đã thêm lại" + }, "readdToken": { "message": "Bạn có thể thêm lại token này trong tương lai bằng cách chuyển đến mục “Thêm token” trong trình đơn tùy chọn tài khoản." }, @@ -2179,6 +2534,19 @@ "removeNFT": { "message": "Xóa NFT" }, + "removeSnap": { + "message": "Xóa Snap" + }, + "removeSnapConfirmation": { + "message": "Bạn có chắc chắn muốn xóa $1 không?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "Hành động này sẽ xóa Snap, dữ liệu và thu hồi các quyền mà bạn đã cấp." + }, + "replace": { + "message": "thay thế" + }, "requestsAwaitingAcknowledgement": { "message": "yêu cầu đang chờ xác nhận" }, @@ -2194,6 +2562,18 @@ "resetAccountDescription": { "message": "Nếu đặt lại tài khoản của bạn, toàn bộ lịch sử giao dịch sẽ bị xóa. Việc này sẽ không làm thay đổi số dư trong tài khoản của bạn hoặc yêu cầu bạn phải nhập lại Cụm mật khẩu khôi phục bí mật." }, + "resetWallet": { + "message": "Đặt lại ví" + }, + "resetWalletSubHeader": { + "message": "MetaMask không lưu giữ bản sao mật khẩu của bạn. Nếu bạn đang gặp sự cố khi mở khóa tài khoản, bạn sẽ cần đặt lại ví của mình. Bạn có thể thực hiện bằng cách cung cấp Cụm từ khôi phục bí mật mà bạn đã sử dụng khi thiết lập ví." + }, + "resetWalletUsingSRP": { + "message": "Hành động này sẽ xóa ví hiện tại và Cụm từ khôi phục bí mật khỏi thiết bị này, cùng với danh sách các tài khoản mà bạn quản lý. Sau khi đặt lại bằng Cụm từ khôi phục bí mật, bạn sẽ thấy danh sách các tài khoản dựa trên Cụm từ khôi phục bí mật mà bạn sử dụng để đặt lại. Danh sách mới này sẽ tự động bổ sung các tài khoản có số dư. Bạn cũng sẽ có thể $1 đã tạo trước đó. Các tài khoản tùy chỉnh mà bạn đã nhập sẽ cần $2, và mọi token tùy chỉnh mà bạn thêm vào tài khoản cũng sẽ cần $3." + }, + "resetWalletWarning": { + "message": "Đảm bảo bạn đang sử dụng đúng Cụm từ khôi phục bí mật trước khi tiếp tục vì bạn sẽ không thể hoàn tác." + }, "restore": { "message": "Khôi phục" }, @@ -2219,6 +2599,9 @@ "revealSeedWordsWarningTitle": { "message": "KHÔNG chia sẻ cụm mật khẩu này với bất kỳ ai!" }, + "revealTheSeedPhrase": { + "message": "Hiện cụm từ khôi phục bí mật" + }, "rinkeby": { "message": "Mạng thử nghiệm Rinkeby" }, @@ -2228,6 +2611,9 @@ "rpcUrl": { "message": "URL RPC mới" }, + "safeTransferFrom": { + "message": "Chuyển khoản an toàn từ" + }, "save": { "message": "Lưu" }, @@ -2252,6 +2638,9 @@ "searchResults": { "message": "Kết quả tìm kiếm" }, + "searchSettings": { + "message": "Tìm kiếm trong cài đặt" + }, "searchTokens": { "message": "Tìm kiếm token" }, @@ -2379,6 +2768,9 @@ "sendTokens": { "message": "Gửi token" }, + "sendingDisabled": { + "message": "Gửi tài sản NFT ERC-1155 chưa được hỗ trợ." + }, "sendingNativeAsset": { "message": "Gửi $1", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" @@ -2392,6 +2784,13 @@ "settings": { "message": "Cài đặt" }, + "settingsSearchMatchingNotFound": { + "message": "Không tìm thấy kết quả trùng khớp." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, "show": { "message": "Hiển thị" }, @@ -2470,6 +2869,46 @@ "slow": { "message": "Chậm" }, + "smartTransaction": { + "message": "Giao dịch thông minh" + }, + "snapAccess": { + "message": "Snap $1 có quyền truy cập vào:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "Đã thêm vào $1 từ $2", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Lỗi Snap: '$1'. Mã lỗi: '$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "Cài đặt Snap" + }, + "snapInstallWarningCheck": { + "message": "Để xác nhận rằng bạn hiểu, hãy đánh dấu vào tất cả." + }, + "snapInstallWarningKeyAccess": { + "message": "Bạn đang cấp quyền truy cập khóa cho Snap \"$1\". Hành động này không thể hủy bỏ và sẽ cấp quyền kiểm soát tài khoản và tài sản của bạn cho \"$1\". Đảm bảo bạn tin tưởng \"$1\" trước khi tiếp tục.", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "Snap này đang yêu cầu các quyền sau:" + }, + "snaps": { + "message": "Snap" + }, + "snapsSettingsDescription": { + "message": "Quản lý Snap" + }, + "snapsStatus": { + "message": "Trạng thái Snap tùy thuộc vào hoạt động." + }, + "snapsToggle": { + "message": "Snap chỉ hoạt động khi đã bật" + }, "somethingWentWrong": { "message": "Rất tiếc! Đã xảy ra sự cố." }, @@ -2513,6 +2952,30 @@ "spendLimitTooLarge": { "message": "Giới hạn chi tiêu quá lớn" }, + "srpInputNumberOfWords": { + "message": "Tôi có một cụm từ gồm $1 từ", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "Dán không thành công vì cụm từ có nhiều hơn 24 từ. Cụm từ khôi phục bí mật chỉ có tối đa 24 từ.", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "Bạn có thể dán toàn bộ cụm từ khôi phục bí mật vào bất kỳ trường nào", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "Hiện/Ẩn từ này của cụm từ khôi phục bí mật", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "Từ này bị ẩn", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "Từ này đang được hiển thị", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, "stable": { "message": "Ổn định" }, @@ -2531,6 +2994,9 @@ "stateLogsDescription": { "message": "Nhật ký trạng thái có chứa các địa chỉ tài khoản công khai của bạn và các giao dịch đã gửi." }, + "status": { + "message": "Trạng thái" + }, "statusConnected": { "message": "Đã kết nối" }, @@ -2568,6 +3034,101 @@ "storePhrase": { "message": "Lưu trữ cụm mật khẩu này trong trình quản lý mật khẩu chẳng hạn như 1Password." }, + "strong": { + "message": "Mạnh" + }, + "stxAreHere": { + "message": "Giao dịch thông minh đã ra mắt!" + }, + "stxBenefit1": { + "message": "Giảm thiểu chi phí giao dịch" + }, + "stxBenefit2": { + "message": "Giảm tỷ lệ thất bại khi giao dịch" + }, + "stxBenefit3": { + "message": "Loại bỏ các giao dịch bị mắc kẹt" + }, + "stxBenefit4": { + "message": "Ngăn chặn giao dịch chạy trước" + }, + "stxCancelled": { + "message": "Hoán đổi sẽ thất bại" + }, + "stxCancelledDescription": { + "message": "Giao dịch của bạn sẽ thất bại và đã bị hủy để bảo vệ bạn không phải trả phí gas không cần thiết." + }, + "stxCancelledSubDescription": { + "message": "Hãy thử hoán đổi lại. Chúng tôi ở đây để bảo vệ bạn trước những rủi ro tương tự trong lần tới." + }, + "stxDescription": { + "message": "Tính năng Hoán đổi của MetaMask nay đã thông minh hơn rất nhiều! Kích hoạt Giao dịch thông minh sẽ cho phép MetaMask tối ưu quy trình Hoán đổi để giúp bạn:" + }, + "stxErrorNotEnoughFunds": { + "message": "Không có đủ tiền để thực hiện giao dịch thông minh." + }, + "stxErrorUnavailable": { + "message": "Giao dịch thông minh tạm thời không khả dụng." + }, + "stxFailure": { + "message": "Hoán đổi không thành công" + }, + "stxFailureDescription": { + "message": "Thị trường thay đổi đột ngột có thể gây thất bại. Nếu sự cố vẫn tiếp diễn, vui lòng liên hệ $1.", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "Giao dịch thông minh tạm thời không khả dụng vì bạn có một giao dịch đang chờ xử lý." + }, + "stxFallbackUnavailable": { + "message": "Bạn vẫn có thể hoán đổi token ngay cả khi Giao dịch thông minh không khả dụng." + }, + "stxPendingFinalizing": { + "message": "Đang hoàn thành..." + }, + "stxPendingOptimizingGas": { + "message": "Đang tối ưu gas..." + }, + "stxPendingPrivatelySubmitting": { + "message": "Đang gửi yêu cầu Hoán đổi riêng tư..." + }, + "stxSubDescription": { + "message": "* Giao dịch thông minh sẽ cố gắng gửi giao dịch của bạn nhiều lần theo cách riêng tư. Nếu tất cả các lần thử đều không thành công, giao dịch sẽ được phát công khai để đảm bảo Hoán đổi của bạn được thực hiện thành công." + }, + "stxSuccess": { + "message": "Hoán đổi hoàn tất!" + }, + "stxSuccessDescription": { + "message": "$1 của bạn hiện đã có sẵn.", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "Mô phỏng giao dịch trước khi gửi để giảm chi phí giao dịch và tỷ lệ thất bại." + }, + "stxTryRegular": { + "message": "Hãy thử hoán đổi thông thường." + }, + "stxTryingToCancel": { + "message": "Đang cố gắng hủy giao dịch của bạn..." + }, + "stxUnavailable": { + "message": "Đã tắt Giao dịch thông minh" + }, + "stxUnknown": { + "message": "Trạng thái không xác định" + }, + "stxUnknownDescription": { + "message": "Một giao dịch đã thành công nhưng chúng tôi không chắc đó là giao dịch nào. Điều này có thể do bạn đã gửi một giao dịch khác trong lúc hoán đổi này đang được xử lý." + }, + "stxUserCancelled": { + "message": "Đã hủy hoán đổi" + }, + "stxUserCancelledDescription": { + "message": "Giao dịch của bạn đã bị hủy và bạn không phải trả bất kỳ phí gas không cần thiết nào." + }, + "stxYouCanOptOut": { + "message": "Bạn có thể chọn không tham gia cài đặt nâng cao này bất cứ lúc nào." + }, "submit": { "message": "Gửi" }, @@ -2607,6 +3168,10 @@ "message": "Bạn cần $1 $2 nữa để hoàn tất giao dịch hoán đổi này", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "Bạn cần thêm $1 để hoàn thành hoán đổi này bằng các giao dịch thông minh.", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, "swapBestOfNQuotes": { "message": "Tốt nhất trong $1 báo giá.", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" @@ -2615,6 +3180,10 @@ "message": "Không có token nào khớp với $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" }, + "swapCompleteIn": { + "message": "Hoán đổi xong sau <", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, "swapConfirmWithHwWallet": { "message": "Xác nhận ví cứng của bạn" }, @@ -2657,6 +3226,10 @@ "swapFailedErrorTitle": { "message": "Hoán đổi không thành công" }, + "swapFetchingQuoteNofN": { + "message": "Tìm nạp báo giá $1/$2", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, "swapFetchingQuotes": { "message": "Tìm nạp báo giá" }, @@ -2942,6 +3515,9 @@ "syncWithThreeBoxDisabled": { "message": "Đã tắt 3Box do có lỗi xảy ra trong quá trình đồng bộ ban đầu" }, + "tenPercentIncreased": { + "message": "Tăng 10%" + }, "terms": { "message": "Điều khoản sử dụng" }, @@ -2951,6 +3527,15 @@ "testFaucet": { "message": "Vòi thử nghiệm" }, + "testNetworks": { + "message": "Mạng thử nghiệm" + }, + "theme": { + "message": "Chủ đề" + }, + "themeDescription": { + "message": "Chọn chủ đề MetaMask yêu thích của bạn." + }, "thisWillCreate": { "message": "Thao tác này sẽ tạo một ví mới và Cụm mật khẩu khôi phục bí mật" }, @@ -2974,6 +3559,9 @@ "token": { "message": "Token" }, + "tokenAddress": { + "message": "Địa chỉ token" + }, "tokenAlreadyAdded": { "message": "Đã thêm token." }, @@ -2983,9 +3571,30 @@ "tokenDecimalFetchFailed": { "message": "Cần có số thập phân của token." }, + "tokenDecimalTitle": { + "message": "Số thập phân của token:" + }, + "tokenDetails": { + "message": "Chi tiết token" + }, + "tokenDetection": { + "message": "Phát hiện token" + }, + "tokenDetectionAlertMessage": { + "message": "Tính năng phát hiện token hiện có sẵn trên $1. $2" + }, "tokenDetectionAnnouncement": { "message": "Mới! Tính năng phát hiện token được cải tiến hiện đã có sẵn trên Mạng chính thức của Ethereum dưới dạng một tính năng thử nghiệm. $1" }, + "tokenDetectionToggleDescription": { + "message": "API token của ConsenSys sẽ tổng hợp danh sách token từ các danh sách token của nhiều bên thứ ba khác nhau. Tắt tính năng này sẽ ngừng phát hiện token mới được thêm vào ví của bạn, nhưng sẽ giữ lại tùy chọn tìm kiếm token để nhập." + }, + "tokenId": { + "message": "ID Token" + }, + "tokenList": { + "message": "Danh sách token:" + }, "tokenSymbol": { "message": "Ký hiệu token" }, @@ -3178,6 +3787,12 @@ "message": "Hiện không hỗ trợ gửi token sưu tập (ERC-721)", "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" }, + "unverifiedContractAddressMessage": { + "message": "Chúng tôi không thể xác minh hợp đồng này. Hãy chắc chắn bạn tin tưởng địa chỉ này." + }, + "upArrow": { + "message": "mũi tên lên" + }, "updatedWithDate": { "message": "Đã cập nhật $1" }, @@ -3205,6 +3820,9 @@ "useTokenDetectionDescription": { "message": "Chúng tôi sử dụng API của bên thứ ba để phát hiện và hiển thị các token mới được gửi vào ví của bạn. Hãy tắt tính năng này nếu bạn không muốn MetaMask lấy dữ liệu từ các dịch vụ đó." }, + "useTokenDetectionPrivacyDesc": { + "message": "Tự động hiển thị các token được gửi vào tài khoản của bạn có liên quan đến hoạt động trao đổi thông tin với các máy chủ bên thứ ba để tìm nạp hình ảnh của token. Các máy chủ đó sẽ có quyền truy cập vào địa chỉ IP của bạn." + }, "usedByClients": { "message": "Được nhiều ví khác nhau sử dụng" }, @@ -3282,6 +3900,9 @@ "walletCreationSuccessTitle": { "message": "Tạo ví thành công" }, + "weak": { + "message": "Yếu" + }, "web3ShimUsageNotification": { "message": "Chúng tôi nhận thấy rằng trang web hiện tại đã cố dùng API window.web3 đã bị xóa. Nếu trang web có vẻ như đã bị lỗi, vui lòng nhấp vào $1 để biết thêm thông tin.", "description": "$1 is a clickable link." @@ -3332,6 +3953,9 @@ "message": "$1/$2 đang chờ xử lý", "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" }, + "yes": { + "message": "Có" + }, "yesLetsTry": { "message": "Có, hãy thử" }, diff --git a/app/_locales/zh/messages.json b/app/_locales/zh/messages.json new file mode 100644 index 000000000..4f58588f1 --- /dev/null +++ b/app/_locales/zh/messages.json @@ -0,0 +1,3980 @@ +{ + "QRHardwareInvalidTransactionTitle": { + "message": "错误" + }, + "QRHardwareMismatchedSignId": { + "message": "不一致的交易数据。请查看交易详情。" + }, + "QRHardwarePubkeyAccountOutOfRange": { + "message": "暂无更多账户。若想访问下方未列出的其他账户,请重新连接您的硬件钱包并选择它。" + }, + "QRHardwareScanInstructions": { + "message": "将二维码放在摄像头前。屏幕是模糊的,但不影响对二维码的读取。" + }, + "QRHardwareSignRequestCancel": { + "message": "拒绝" + }, + "QRHardwareSignRequestDescription": { + "message": "使用钱包签名后,点击“获取签名”以接收签名" + }, + "QRHardwareSignRequestGetSignature": { + "message": "获取签名" + }, + "QRHardwareSignRequestSubtitle": { + "message": "用您的钱包扫描二维码" + }, + "QRHardwareSignRequestTitle": { + "message": "请求签名" + }, + "QRHardwareUnknownQRCodeTitle": { + "message": "错误" + }, + "QRHardwareUnknownWalletQRCode": { + "message": "非法二维码,请扫描硬件钱包的同步二维码。" + }, + "QRHardwareWalletImporterTitle": { + "message": "扫描二维码" + }, + "QRHardwareWalletSteps1Description": { + "message": "连接通过二维码通信的气隙硬件钱包。官方支持的气隙硬件钱包包括:" + }, + "QRHardwareWalletSteps1Title": { + "message": "基于二维码的硬件钱包" + }, + "QRHardwareWalletSteps2Description": { + "message": "AirGap Vault & Ngrave (即将上线)" + }, + "about": { + "message": "关于" + }, + "acceleratingATransaction": { + "message": "* 通过使用更高的燃料价格来加速交易,会增加其更快地被网络处理的机会,但这并不总是得到保证。" + }, + "acceptTermsOfUse": { + "message": "我已阅读并同意 $1", + "description": "$1 is the `terms` message" + }, + "accessAndSpendNotice": { + "message": "$1 可以访问并使用此最大金额", + "description": "$1 is the url of the site requesting ability to spend" + }, + "accessAndSpendNoticeNFT": { + "message": "$1可以访问并使用此资产", + "description": "$1 is the url of the site requesting ability to spend" + }, + "accessingYourCamera": { + "message": "正在访问您的相机……" + }, + "account": { + "message": "账户" + }, + "accountDetails": { + "message": "账户详情" + }, + "accountIdenticon": { + "message": "账户哈希头像" + }, + "accountName": { + "message": "账户名称" + }, + "accountNameDuplicate": { + "message": "此账户名称已存在", + "description": "This is an error message shown when the user enters a new account name that matches an existing account name" + }, + "accountOptions": { + "message": "账户选项" + }, + "accountSelectionRequired": { + "message": "您需要选择一个账户!" + }, + "active": { + "message": "活跃" + }, + "activity": { + "message": "活动" + }, + "activityLog": { + "message": "活动日志" + }, + "add": { + "message": "添加" + }, + "addANetwork": { + "message": "添加网络" + }, + "addANetworkManually": { + "message": "手动添加网络" + }, + "addANickname": { + "message": "添加昵称" + }, + "addAcquiredTokens": { + "message": "添加您使用 MetaMask 获得的代币" + }, + "addAlias": { + "message": "添加别名" + }, + "addContact": { + "message": "添加联系信息" + }, + "addCustomToken": { + "message": "添加自定义代币" + }, + "addCustomTokenByContractAddress": { + "message": "找不到代币?您可以通过粘贴其地址手动添加任何代币。代币合约地址可以在 $1 上找到。", + "description": "$1 is a blockchain explorer for a specific network, e.g. Etherscan for Ethereum" + }, + "addEthereumChainConfirmationDescription": { + "message": "这将允许在 MetaMask 中使用此网络。" + }, + "addEthereumChainConfirmationRisks": { + "message": "MetaMask 不验证自定义网络。" + }, + "addEthereumChainConfirmationRisksLearnMore": { + "message": "了解 $1。", + "description": "$1 is a link with text that is provided by the 'addEthereumChainConfirmationRisksLearnMoreLink' key" + }, + "addEthereumChainConfirmationRisksLearnMoreLink": { + "message": "诈骗和网络安全风险", + "description": "Link text for the 'addEthereumChainConfirmationRisksLearnMore' translation key" + }, + "addEthereumChainConfirmationTitle": { + "message": "允许此网站增加一个网络?" + }, + "addFriendsAndAddresses": { + "message": "添加您信任的朋友和地址" + }, + "addFromAListOfPopularNetworks": { + "message": "从热门网络列表中选择网络来添加,或手动添加网络。仅可与您信任的实体互动。" + }, + "addMemo": { + "message": "添加备忘录" + }, + "addNetwork": { + "message": "添加网络" + }, + "addSuggestedTokens": { + "message": "添加推荐代币" + }, + "addToken": { + "message": "添加代币" + }, + "address": { + "message": "地址" + }, + "addressBookIcon": { + "message": "地址簿图标" + }, + "advanced": { + "message": "高级" + }, + "advancedBaseGasFeeToolTip": { + "message": "当您的交易被包含在区块中时,您的最大基本费用与实际基本费用之间的任何差额将被退还。总金额按最大基本费用(以GWEI为单位)*燃料上限计算。" + }, + "advancedGasFeeDefaultOptIn": { + "message": "将这些 $1 保存为“高级”默认值" + }, + "advancedGasFeeDefaultOptOut": { + "message": "始终使用这些值和高级设置作为默认值。" + }, + "advancedGasFeeModalTitle": { + "message": "高级燃料费" + }, + "advancedGasPriceTitle": { + "message": "燃料价格" + }, + "advancedOptions": { + "message": "高级选项" + }, + "advancedPriorityFeeToolTip": { + "message": "优先费(又称“矿工费”)直接向矿工支付,激励他们优先处理您的交易。" + }, + "affirmAgree": { + "message": "我同意" + }, + "airgapVault": { + "message": "AirGap Vault" + }, + "airgapVaultTutorial": { + "message": " (使用教程)" + }, + "alertDisableTooltip": { + "message": "这可以在“设置 > 提醒”中进行更改" + }, + "alertSettingsUnconnectedAccount": { + "message": "浏览网站时选择的账户未连接" + }, + "alertSettingsUnconnectedAccountDescription": { + "message": "当您浏览已连接的 web3 网站时,此警报会显示在弹出窗口中,但当前选择的账户未连接。" + }, + "alertSettingsWeb3ShimUsage": { + "message": "当网站尝试使用已经删除的 window.web3 API 时" + }, + "alertSettingsWeb3ShimUsageDescription": { + "message": "当您浏览尝试使用已删除的 window.web3 API 并因此可能出现故障的网站时,此警报会显示在弹出窗口中。" + }, + "alerts": { + "message": "提醒" + }, + "allowExternalExtensionTo": { + "message": "允许此外部扩展程序:" + }, + "allowSpendToken": { + "message": "授予访问您的 $1 的权限?", + "description": "$1 is the symbol of the token that are requesting to spend" + }, + "allowThisSiteTo": { + "message": "允许此网站:" + }, + "allowWithdrawAndSpend": { + "message": "允许 $1 提取和消费最高以下金额:", + "description": "The url of the site that requested permission to 'withdraw and spend'" + }, + "amount": { + "message": "数额" + }, + "appDescription": { + "message": "浏览器中的以太坊钱包", + "description": "The description of the application" + }, + "appName": { + "message": "MetaMask", + "description": "The name of the application" + }, + "appNameBeta": { + "message": "MetaMask Beta", + "description": "The name of the application (Beta)" + }, + "appNameFlask": { + "message": "MetaMask Flask", + "description": "The name of the application (Flask)" + }, + "approve": { + "message": "批准消费限额" + }, + "approveAndInstall": { + "message": "批准并安装" + }, + "approveButtonText": { + "message": "批准" + }, + "approveSpendLimit": { + "message": "批准 $1 消费限额", + "description": "The token symbol that is being approved" + }, + "approved": { + "message": "已批准" + }, + "approvedAmountWithColon": { + "message": "已批准金额:" + }, + "approvedAsset": { + "message": "已获批准的资产" + }, + "areYouDeveloper": { + "message": "您是开发人员吗?" + }, + "areYouSure": { + "message": "您确定吗?" + }, + "asset": { + "message": "资产" + }, + "assetOptions": { + "message": "资产选项" + }, + "assets": { + "message": "资产" + }, + "attemptToCancel": { + "message": "尝试取消吗?" + }, + "attemptToCancelDescription": { + "message": "提交此尝试不能保证将会取消您的初始交易。如果取消尝试成功,将向您收取以上交易费。" + }, + "attemptingConnect": { + "message": "正在尝试连接到区块链。" + }, + "attributions": { + "message": "参与者" + }, + "authorizedPermissions": { + "message": "您已授权以下权限" + }, + "autoLockTimeLimit": { + "message": "自动锁定计时器(分钟)" + }, + "autoLockTimeLimitDescription": { + "message": "设置 MetaMask 将被锁定前的空闲时间(单位:分钟)。" + }, + "average": { + "message": "平均值" + }, + "back": { + "message": "返回" + }, + "backToAll": { + "message": "返回全部" + }, + "backupApprovalInfo": { + "message": "如果不慎丢失个人设备,忘记密码,需要重新安装 MetaMask,或者需在另一台设备上访问钱包,使用此助记词才能恢复您的钱包。" + }, + "backupApprovalNotice": { + "message": "请备份您的账户助记词,保证您的钱包和资金安全。" + }, + "backupNow": { + "message": "立即备份" + }, + "balance": { + "message": "余额" + }, + "balanceOutdated": { + "message": "余额可能已过期" + }, + "baseFee": { + "message": "基本费用" + }, + "basic": { + "message": "基本" + }, + "betaMetamaskDescription": { + "message": "MetaMask 深受数百万人信任,是一款可以让所有人进入 web3 世界的安全钱包。" + }, + "betaMetamaskDescriptionExplanation": { + "message": "使用此版本来测试即将发布的功能。您的使用和反馈有助于我们构建最好的 MetaMask 版本。您对 MetaMask 测试版的使用须遵守我们的标准 $1 以及我们的 $2。作为测试版,出现漏洞的风险可能会增加。继续即表示您接受并承认这些风险,以及我们条款和测试版条款中发现的风险。", + "description": "$1 represents localization item betaMetamaskDescriptionExplanationTermsLinkText. $2 represents localization item betaMetamaskDescriptionExplanationBetaTermsLinkText" + }, + "betaMetamaskDescriptionExplanationBetaTermsLinkText": { + "message": "补充测试版条款" + }, + "betaMetamaskDescriptionExplanationTermsLinkText": { + "message": "条款" + }, + "betaMetamaskVersion": { + "message": "MetaMask 测试版本" + }, + "betaWelcome": { + "message": "欢迎使用 MetaMask 测试版" + }, + "blockExplorerAccountAction": { + "message": "账户", + "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Account in Explorer" + }, + "blockExplorerAssetAction": { + "message": "资产", + "description": "This is used with viewOnEtherscan and viewInExplorer e.g View Asset in Explorer" + }, + "blockExplorerSwapAction": { + "message": "交换", + "description": "This is used with viewOnEtherscan e.g View Swap on Etherscan" + }, + "blockExplorerUrl": { + "message": "区块浏览器 URL" + }, + "blockExplorerUrlDefinition": { + "message": "用作此网络的区块浏览器的 URL。" + }, + "blockExplorerView": { + "message": "在 $1 查看账户", + "description": "$1 replaced by URL for custom block explorer" + }, + "blockies": { + "message": "Blockies" + }, + "browserNotSupported": { + "message": "您的浏览器不受支持……" + }, + "buildContactList": { + "message": "建立您的联系人列表" + }, + "builtAroundTheWorld": { + "message": "MetaMask 是在世界各地设计和建造的。" + }, + "busy": { + "message": "忙碌中" + }, + "buy": { + "message": "购买" + }, + "buyAsset": { + "message": "购买$1", + "description": "$1 is the ticker symbol of a an asset the user is being prompted to purchase" + }, + "buyCryptoWithMoonPay": { + "message": "用MoonPay购买$1", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithMoonPayDescription": { + "message": "MoonPay支持热门的支付方式,包括Visa、万事达卡、Apple / Google / Samsung Pay,以及超过145个国家/地区的银行转账。代币会被存入您的MetaMask账户。" + }, + "buyCryptoWithTransak": { + "message": "用Transak购买$1", + "description": "$1 represents the cypto symbol to be purchased" + }, + "buyCryptoWithTransakDescription": { + "message": "Transak在超过100个国家/地区支持信用卡和借记卡、Apple Pay、MobiKwik和银行转账(取决于地点)。$1会被直接存入您的MetaMask账户。", + "description": "$1 represents the crypto symbol to be purchased" + }, + "buyWithWyre": { + "message": "使用 Wyre 购买 $1" + }, + "buyWithWyreDescription": { + "message": "您可以通过 Wyre 使用借记卡将 $1 存入您的 MetaMask 账户。" + }, + "bytes": { + "message": "字节" + }, + "canToggleInSettings": { + "message": "您可以在“设置 -> 提醒”中重新启用该通知。" + }, + "cancel": { + "message": "取消" + }, + "cancelEdit": { + "message": "取消编辑" + }, + "cancelPopoverTitle": { + "message": "取消交易" + }, + "cancelSpeedUp": { + "message": "取消或加快交易。" + }, + "cancelSpeedUpLabel": { + "message": "这笔燃料费将$1原来的费用。", + "description": "$1 is text 'replace' in bold" + }, + "cancelSpeedUpTransactionTooltip": { + "message": "若要$1交易,燃料费用必须增加至少10%才能被网络认可。", + "description": "$1 is string 'cancel' or 'speed up'" + }, + "cancelSwap": { + "message": "取消交换" + }, + "cancellationGasFee": { + "message": "取消燃料费用" + }, + "cancelled": { + "message": "已取消" + }, + "chainId": { + "message": "链 ID" + }, + "chainIdDefinition": { + "message": "用于签署此网络的交易的链 ID。" + }, + "chainIdExistsErrorMsg": { + "message": "此链 ID 目前已被 $1 网络使用。" + }, + "chainListReturnedDifferentTickerSymbol": { + "message": "链ID为$1的网络使用的货币代码($2)可能与您输入的不同。请在继续之前进行验证。", + "description": "$1 is the chain id currently entered in the network form and $2 is the return value of nativeCurrency.symbol from chainlist.network" + }, + "chromeRequiredForHardwareWallets": { + "message": "您需要在 Google Chrome 上使用 MetaMask 以连接到您的硬件钱包。" + }, + "clickToConnectLedgerViaWebHID": { + "message": "点击这里以通过 WebHID 连接您的 Ledger", + "description": "Text that can be clicked to open a browser popup for connecting the ledger device via webhid" + }, + "clickToRevealSeed": { + "message": "点击此处以显示助记词" + }, + "close": { + "message": "关闭" + }, + "collectibleAddFailedMessage": { + "message": "由于所有权信息不匹配,无法添加NFT。请确保所输入的信息正确无误。" + }, + "collectibleAddressError": { + "message": "此代币是NFT。另加上$1", + "description": "$1 is a clickable link with text defined by the 'importNFTPage' key" + }, + "confirm": { + "message": "确认" + }, + "confirmPassword": { + "message": "确认密码" + }, + "confirmRecoveryPhrase": { + "message": "确认助记词" + }, + "confirmSecretBackupPhrase": { + "message": "请确认您的账户助记词" + }, + "confirmed": { + "message": "已确认" + }, + "confusableUnicode": { + "message": "'$1' 与 '$2' 相似。" + }, + "confusableZeroWidthUnicode": { + "message": "找到零宽字符。" + }, + "confusingEnsDomain": { + "message": "我们在 ENS 名称中检测到一个可令人混淆的字符。检查 ENS 名称以避免潜在的骗局。" + }, + "congratulations": { + "message": "恭喜" + }, + "connect": { + "message": "连接" + }, + "connectAccountOrCreate": { + "message": "连接账户或创建新账户" + }, + "connectHardwareWallet": { + "message": "连接硬件钱包" + }, + "connectManually": { + "message": "手动连接到当前站点" + }, + "connectTo": { + "message": "连接到 $1", + "description": "$1 is the name/origin of a web3 site/application that the user can connect to metamask" + }, + "connectToAll": { + "message": "连接到您的全部 $1", + "description": "$1 will be replaced by the translation of connectToAllAccounts" + }, + "connectToAllAccounts": { + "message": "账户", + "description": "will replace $1 in connectToAll, completing the sentence 'connect to all of your accounts', will be text that shows list of accounts on hover" + }, + "connectToMultiple": { + "message": "连接到 $1", + "description": "$1 will be replaced by the translation of connectToMultipleNumberOfAccounts" + }, + "connectToMultipleNumberOfAccounts": { + "message": "$1 个账户", + "description": "$1 is the number of accounts to which the web3 site/application is asking to connect; this will substitute $1 in connectToMultiple" + }, + "connectWithMetaMask": { + "message": "与 MetaMask 连接" + }, + "connectedAccountsDescriptionPlural": { + "message": "您有 $1 个账户连接到了该网站。", + "description": "$1 is the number of accounts" + }, + "connectedAccountsDescriptionSingular": { + "message": "您有1个账户连接到了该网站。" + }, + "connectedAccountsEmptyDescription": { + "message": "MetaMask 没有连接到该网站。要连接到 web3 网站,请找到并点击连接按钮。" + }, + "connectedSites": { + "message": "已连接的网站" + }, + "connectedSitesDescription": { + "message": "$1 已连接到这些网站。他们可以查看您的账户地址。", + "description": "$1 is the account name" + }, + "connectedSitesEmptyDescription": { + "message": "$1 还没连接到任何网站。", + "description": "$1 is the account name" + }, + "connectedSnapSites": { + "message": "$1的snap已连接到这些站点。它们有上述的访问权限。", + "description": "$1 represents the name of the snap" + }, + "connecting": { + "message": "连接中……" + }, + "connectingTo": { + "message": "正在连接 $1" + }, + "connectingToGoerli": { + "message": "正在连接 Goerli 测试网络" + }, + "connectingToKovan": { + "message": "正在连接到 Kovan 测试网络" + }, + "connectingToMainnet": { + "message": "正在连接到以太坊主网" + }, + "connectingToRinkeby": { + "message": "正在连接到 Rinkeby 测试网络" + }, + "connectingToRopsten": { + "message": "正在连接到 Ropsten 测试网络" + }, + "contactUs": { + "message": "联系我们" + }, + "contacts": { + "message": "联系信息" + }, + "continue": { + "message": "继续" + }, + "continueToMoonPay": { + "message": "继续使用MoonPay" + }, + "continueToTransak": { + "message": "继续前往 Transak" + }, + "continueToWyre": { + "message": "继续前往 Wyre" + }, + "contract": { + "message": "合约" + }, + "contractAddress": { + "message": "合约地址" + }, + "contractAddressError": { + "message": "您正在向代币的合约地址发送代币。这可能导致这些代币丢失。" + }, + "contractDeployment": { + "message": "合约部署" + }, + "contractInteraction": { + "message": "合约交互" + }, + "convertTokenToNFTDescription": { + "message": "我们检测到该资产是NFT。Metamask现在完全原生支持NFT。您想将它从您的代币列表中删除并将它添加为NFT吗?" + }, + "convertTokenToNFTExistDescription": { + "message": "我们检测到该资产已作为NFT添加。是否要将其从代币列表中删除?" + }, + "copiedExclamation": { + "message": "已复制!" + }, + "copyAddress": { + "message": "复制地址到剪贴板" + }, + "copyPrivateKey": { + "message": "这是您的私钥(点击以复制)" + }, + "copyRawTransactionData": { + "message": "复制原始交易数据" + }, + "copyToClipboard": { + "message": "复制到剪贴板" + }, + "copyTransactionId": { + "message": "复制交易 ID" + }, + "create": { + "message": "创建" + }, + "createAWallet": { + "message": "创建钱包" + }, + "createAccount": { + "message": "创建账户" + }, + "createNewWallet": { + "message": "创建新钱包" + }, + "createPassword": { + "message": "创建密码" + }, + "currencyConversion": { + "message": "货币转换" + }, + "currencySymbol": { + "message": "货币符号" + }, + "currencySymbolDefinition": { + "message": "此网络的货币显示的股票代码。" + }, + "currentAccountNotConnected": { + "message": "您的当前账户没有连接" + }, + "currentExtension": { + "message": "当前扩展程序页面" + }, + "currentLanguage": { + "message": "当前语言" + }, + "currentTitle": { + "message": "当前:" + }, + "currentlyUnavailable": { + "message": "在此网络上不可用" + }, + "curveHighGasEstimate": { + "message": "高价燃料估算图" + }, + "curveLowGasEstimate": { + "message": "低价燃料估算图" + }, + "curveMediumGasEstimate": { + "message": "市场价燃料估算图" + }, + "custom": { + "message": "高级" + }, + "customContentSearch": { + "message": "搜索以前添加的网络" + }, + "customGas": { + "message": "自定义燃料" + }, + "customGasSettingToolTipMessage": { + "message": "使用$1来定制燃料价格。如果您不熟悉这可能会引起混淆。操作风险自付。", + "description": "$1 is key 'advanced' (text: 'Advanced') separated here so that it can be passed in with bold fontweight" + }, + "customGasSubTitle": { + "message": "提升费用可能会缩短处理时间,但不能保证。" + }, + "customNetworks": { + "message": "自定义网络" + }, + "customSpendLimit": { + "message": "自定义消费限额" + }, + "customToken": { + "message": "自定义代币" + }, + "customTokenWarningInNonTokenDetectionNetwork": { + "message": "代币检测在此网络上尚不可用。请手动导入代币并确保您信任它。了解 $1" + }, + "customTokenWarningInTokenDetectionNetwork": { + "message": "手动导入代币前,请确保您信任它。了解 $1。" + }, + "customerSupport": { + "message": "客户支持" + }, + "dappSuggested": { + "message": "建议的网站" + }, + "dappSuggestedGasSettingToolTipMessage": { + "message": "$1 建议了这个价格。", + "description": "$1 is url for the dapp that has suggested gas settings" + }, + "dappSuggestedShortLabel": { + "message": "网站" + }, + "dappSuggestedTooltip": { + "message": "$1 建议了这个价格。", + "description": "$1 represents the Dapp's origin" + }, + "darkTheme": { + "message": "深色" + }, + "data": { + "message": "数据" + }, + "dataBackupFoundInfo": { + "message": "您的部分账户数据已在之前安装 MetaMask 时备份。其中可能包括您的设置、联系人和代币。您现在想恢复这些数据吗?" + }, + "dataHex": { + "message": "十六进制" + }, + "decimal": { + "message": "代币小数" + }, + "decimalsMustZerotoTen": { + "message": "小数位至少为0,且不得超过36。" + }, + "decrypt": { + "message": "解密" + }, + "decryptCopy": { + "message": "复制加密消息" + }, + "decryptInlineError": { + "message": "由于错误:$1,无法解密此消息", + "description": "$1 is error message" + }, + "decryptMessageNotice": { + "message": "$1 希望阅读此消息来完成您的操作", + "description": "$1 is the web3 site name" + }, + "decryptMetamask": { + "message": "解密消息" + }, + "decryptRequest": { + "message": "解密请求" + }, + "delete": { + "message": "删除" + }, + "deleteAccount": { + "message": "删除账户" + }, + "deleteNetwork": { + "message": "删除网络?" + }, + "deleteNetworkDescription": { + "message": "您确定要删除该网络吗?" + }, + "depositCrypto": { + "message": "存入$1", + "description": "$1 represents the cypto symbol to be purchased" + }, + "description": { + "message": "描述" + }, + "details": { + "message": "详细信息" + }, + "directDepositCrypto": { + "message": "直接存入$1" + }, + "directDepositCryptoExplainer": { + "message": "如果您已经有了一些$1,那么在您的新钱包里获得$1的最快方式是直接存入。" + }, + "disabledGasOptionToolTipMessage": { + "message": "“$1”已被禁用,因为它不满足在原来的燃料费用基础上至少增加10%的要求。", + "description": "$1 is gas estimate type which can be market or aggressive" + }, + "disconnect": { + "message": "断开连接" + }, + "disconnectAllAccounts": { + "message": "断开所有账户的连接" + }, + "disconnectAllAccountsConfirmationDescription": { + "message": "您确定要断开连接吗?您可能会失去网站功能。" + }, + "disconnectPrompt": { + "message": "断开连接 $1" + }, + "disconnectThisAccount": { + "message": "断开此账户的连接" + }, + "dismiss": { + "message": "关闭" + }, + "dismissReminderDescriptionField": { + "message": "开启此选项以关闭账户助记词备份提醒消息。我们强烈建议您备份您的账户助记词,以避免资金损失" + }, + "dismissReminderField": { + "message": "关闭账户助记词备份提醒" + }, + "domain": { + "message": "域" + }, + "done": { + "message": "完成" + }, + "dontShowThisAgain": { + "message": "不再显示此内容" + }, + "downArrow": { + "message": "向下箭头" + }, + "downloadGoogleChrome": { + "message": "下载 Google Chrome 浏览器" + }, + "downloadSecretBackup": { + "message": "下载此账户助记词,并将其安全保存在外部加密硬盘或存储介质上。" + }, + "downloadStateLogs": { + "message": "下载状态日志" + }, + "dropped": { + "message": "已放弃" + }, + "edit": { + "message": "编辑" + }, + "editANickname": { + "message": "编辑昵称" + }, + "editAddressNickname": { + "message": "编辑地址昵称" + }, + "editCancellationGasFeeModalTitle": { + "message": "编辑取消燃料费用" + }, + "editContact": { + "message": "编辑联系信息" + }, + "editGasEducationButtonText": { + "message": "我应该如何选择?" + }, + "editGasEducationHighExplanation": { + "message": "这最适合对时间敏感的交易(如交换),因为它能增加交易成功的可能性。如果交换需要太长的时间来处理,它可能会失败,并导致您损失一些燃料费。" + }, + "editGasEducationLowExplanation": { + "message": "只有在处理时间不太重要时才能使用较低的燃料费用。较低的费用使我们难以预测您的交易何时(或会否)成功。" + }, + "editGasEducationMediumExplanation": { + "message": "中燃料费用适合用于发送、提取或其他非时间敏感交易。此设置最常导致交易成功。" + }, + "editGasEducationModalIntro": { + "message": "选择合适的燃料费取决于交易的类型和它对您的重要性。" + }, + "editGasEducationModalTitle": { + "message": "如何选择?" + }, + "editGasFeeModalTitle": { + "message": "编辑网络费" + }, + "editGasHigh": { + "message": "高" + }, + "editGasLimitOutOfBounds": { + "message": "燃料上限至少为 $1" + }, + "editGasLimitOutOfBoundsV2": { + "message": "燃料上限必须大于 $1 且小于 $2", + "description": "$1 is the minimum limit for gas and $2 is the maximum limit" + }, + "editGasLimitTooltip": { + "message": "燃料上限是您愿意使用的最大燃料单位。燃料单位是“最大优先费”和“最大费用”的乘数。" + }, + "editGasLow": { + "message": "低" + }, + "editGasMaxBaseFeeGWEIImbalance": { + "message": "最大基本费用不能低于优先费用" + }, + "editGasMaxBaseFeeHigh": { + "message": "最大基本费用高于必要水平" + }, + "editGasMaxBaseFeeLow": { + "message": "对于当前网络条件而言,最大基本费用较低" + }, + "editGasMaxFeeHigh": { + "message": "最大费用高于必要水平" + }, + "editGasMaxFeeLow": { + "message": "对于网络条件而言,最大费用过低" + }, + "editGasMaxFeePriorityImbalance": { + "message": "最大费用不能低于最大优先费用" + }, + "editGasMaxFeeTooltip": { + "message": "最大费用是您将支付的最大费用(基本费用+优先费用)。" + }, + "editGasMaxPriorityFeeBelowMinimum": { + "message": "最大优先费用必须大于0 GWEI。" + }, + "editGasMaxPriorityFeeBelowMinimumV2": { + "message": "优先费用必须大于0。" + }, + "editGasMaxPriorityFeeHigh": { + "message": "最大优先费用高于必要水平。您可以支付超过所需的费用。" + }, + "editGasMaxPriorityFeeHighV2": { + "message": "优先费用高于必要水平。您可以支付超过所需的费用" + }, + "editGasMaxPriorityFeeLow": { + "message": "对于当前网络条件而言,最大优先费用较低" + }, + "editGasMaxPriorityFeeLowV2": { + "message": "对于当前网络条件而言,优先费用较低" + }, + "editGasMaxPriorityFeeTooltip": { + "message": "最大优先费(又称“矿工费”)直接向矿工支付,激励他们优先处理您的交易。您通常会支付您的最大设置" + }, + "editGasMedium": { + "message": "中" + }, + "editGasPriceTooLow": { + "message": "燃料价格必须大于0" + }, + "editGasPriceTooltip": { + "message": "此网络在提交交易时需要一个“燃料价格”字段。燃料价格是您支付的每单位燃料金额。" + }, + "editGasSubTextAmountLabel": { + "message": "最大金额:", + "description": "This is meant to be used as the $1 substitution editGasSubTextAmount" + }, + "editGasSubTextFeeLabel": { + "message": "最大费用:" + }, + "editGasTitle": { + "message": "编辑优先级" + }, + "editGasTooLow": { + "message": "处理时间未知" + }, + "editGasTooLowTooltip": { + "message": "对于当前的市场条件而言,您的最大费用或最大优先费用可能较低。我们不知道您的交易将在何时(或会否)处理。" + }, + "editGasTooLowWarningTooltip": { + "message": "这降低了您的最大费用,但如果网络流量增加,您的交易可能会被延迟或失败。" + }, + "editNonceField": { + "message": "编辑 Nonce" + }, + "editNonceMessage": { + "message": "这是高级功能,请谨慎使用。" + }, + "editPermission": { + "message": "编辑权限" + }, + "editSpeedUpEditGasFeeModalTitle": { + "message": "编辑加速燃料费用" + }, + "enableAutoDetect": { + "message": " 启用自动检测" + }, + "enableEIP1559V2": { + "message": "启用增强型燃料费用户界面" + }, + "enableEIP1559V2AlertMessage": { + "message": "我们已经更新了燃料费用估算和定制的方式。" + }, + "enableEIP1559V2ButtonText": { + "message": "在设置中开启增强型燃料费用户界面" + }, + "enableEIP1559V2Description": { + "message": "我们已经更新了燃料估算和定制的方式。如果您想使用新的燃料体验,请开启。$1", + "description": "$1 here is Learn More link" + }, + "enableEIP1559V2Header": { + "message": "新燃料体验" + }, + "enableFromSettings": { + "message": " 从设置中启用它。" + }, + "enableOpenSeaAPI": { + "message": "启用 OpenSea API" + }, + "enableOpenSeaAPIDescription": { + "message": "使用 OpenSea 的 API 获取 NFT 数据。NFT 自动检测依赖于 OpenSea 的 API,在后者关闭时自动检测将不可用。" + }, + "enableSmartTransactions": { + "message": "启用智能交易" + }, + "enableToken": { + "message": "启用 $1", + "description": "$1 is a token symbol, e.g. ETH" + }, + "encryptionPublicKeyNotice": { + "message": "$1 想要您的加密公钥。同意后,该网站将可以向您发送加密消息。", + "description": "$1 is the web3 site name" + }, + "encryptionPublicKeyRequest": { + "message": "申请加密公钥" + }, + "endOfFlowMessage1": { + "message": "您通过了测试——保管好您的账户助记词,这是您的责任!" + }, + "endOfFlowMessage10": { + "message": "全部完成" + }, + "endOfFlowMessage2": { + "message": "安全保存技巧" + }, + "endOfFlowMessage3": { + "message": "在多处保存备份。" + }, + "endOfFlowMessage4": { + "message": "绝不向任何人分享该账户助记词。" + }, + "endOfFlowMessage5": { + "message": "谨防网络钓鱼!MetaMask 绝不会主动要求您提供个人账户助记词。" + }, + "endOfFlowMessage6": { + "message": "如果您需要再次备份账户助记词,请通过“设置 -> 安全”选项完成该操作。" + }, + "endOfFlowMessage7": { + "message": "如果您有任何疑问或发现可疑之处,请联系我们的支持部门 $1。", + "description": "$1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets." + }, + "endOfFlowMessage8": { + "message": "MetaMask 无法恢复您的账户助记词。" + }, + "endOfFlowMessage9": { + "message": "了解更多。" + }, + "endpointReturnedDifferentChainId": { + "message": "RPC 端点使用链不同的链 ID: $1", + "description": "$1 is the return value of eth_chainId from an RPC endpoint" + }, + "ensIllegalCharacter": { + "message": "ENS 的非法字符。" + }, + "ensNotFoundOnCurrentNetwork": { + "message": "未在当前网络找到 ENS 名称。请尝试切换至以太坊主网。" + }, + "ensNotSupportedOnNetwork": { + "message": "网络不支持 ENS" + }, + "ensRegistrationError": { + "message": "ENS 名称注册错误" + }, + "ensUnknownError": { + "message": "ENS 查找失败。" + }, + "enterMaxSpendLimit": { + "message": "输入最大消费限额" + }, + "enterPassword": { + "message": "输入密码" + }, + "enterPasswordContinue": { + "message": "输入密码继续" + }, + "errorCode": { + "message": "代码:$1", + "description": "Displayed error code for debugging purposes. $1 is the error code" + }, + "errorDetails": { + "message": "错误详情", + "description": "Title for collapsible section that displays error details for debugging purposes" + }, + "errorMessage": { + "message": "信息:$1", + "description": "Displayed error message for debugging purposes. $1 is the error message" + }, + "errorName": { + "message": "代码:$1", + "description": "Displayed error name for debugging purposes. $1 is the error name" + }, + "errorPageMessage": { + "message": "通过重新加载页面再试一次,或联系支持部门 $1。", + "description": "Message displayed on generic error page in the fullscreen or notification UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets." + }, + "errorPagePopupMessage": { + "message": "通过关闭并重新打开弹出窗口再试一次,或联系支持部门 $1。", + "description": "Message displayed on generic error page in the popup UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets." + }, + "errorPageTitle": { + "message": "MetaMask 遇到了一个错误", + "description": "Title of generic error page" + }, + "errorStack": { + "message": "栈:", + "description": "Title for error stack, which is displayed for debugging purposes" + }, + "estimatedProcessingTimes": { + "message": "预计处理时间" + }, + "ethGasPriceFetchWarning": { + "message": "由于目前主要的燃料估算服务不可用,因此提供了备用燃料价格。" + }, + "ethereumPublicAddress": { + "message": "以太坊公共地址" + }, + "etherscan": { + "message": "Etherscan" + }, + "etherscanView": { + "message": "在 Etherscan 上查看账户" + }, + "etherscanViewOn": { + "message": "在 Etherscan 上查看" + }, + "expandExperience": { + "message": "扩展您的web3体验" + }, + "expandView": { + "message": "展开视图" + }, + "experimental": { + "message": "试验" + }, + "exportPrivateKey": { + "message": "导出私钥" + }, + "externalExtension": { + "message": "外部扩展程序" + }, + "failed": { + "message": "失败" + }, + "failedToFetchChainId": { + "message": "无法获取链 ID。您的 RPC URL 正确吗?" + }, + "failedToFetchTickerSymbolData": { + "message": "股票代码验证数据当前未能提供,请确保您输入的代码正确无误。这会影响您在此网络看到的兑换率" + }, + "failureMessage": { + "message": "出了点问题,我们无法完成此操作" + }, + "fakeTokenWarning": { + "message": "任何人都可以创建代币,包括创建现有代币的虚假版本。了解关于 $ 的更多详情" + }, + "fast": { + "message": "快" + }, + "fastest": { + "message": "最快" + }, + "feeAssociatedRequest": { + "message": "此请求需要支付一定的费用。" + }, + "fiat": { + "message": "法币", + "description": "Exchange type" + }, + "fileImportFail": { + "message": "文件导入失败?点击这里!", + "description": "Helps user import their account from a JSON file" + }, + "flaskSnapSettingsCardButtonCta": { + "message": "查看详细信息", + "description": "Call to action a user can take to see more information about the Snap that is installed" + }, + "flaskSnapSettingsCardDateAddedOn": { + "message": "添加于", + "description": "Start of the sentence describing when and where snap was added" + }, + "flaskSnapSettingsCardFrom": { + "message": "自", + "description": "Part of the sentence describing when and where snap was added" + }, + "flaskWelcomeUninstall": { + "message": "您应该卸载此扩展程序", + "description": "This request is shown on the Flask Welcome screen. It is intended for non-developers, and will be bolded." + }, + "flaskWelcomeWarning1": { + "message": "Flask供开发人员试验不稳定的新API。除非您是开发人员或Beta测试人员,否则请$1。", + "description": "This is a warning shown on the Flask Welcome screen, intended to encourage non-developers not to proceed any further. $1 is the bolded message 'flaskWelcomeUninstall'" + }, + "flaskWelcomeWarning2": { + "message": "我们不保证此扩展程序的安全性或稳定性。Flask提供的新API并未针对网络钓鱼攻击进行强化,这意味着任何需要Flask的站点或快取都可能是窃取您资产的恶意企图。", + "description": "This explains the risks of using MetaMask Flask" + }, + "flaskWelcomeWarning3": { + "message": "所有Flask API都是实验性的。它们可能会在未事先通知的情况下被更改或删除,它们也可能会无限期地留在Flask上而不会迁移到稳定的MetaMask。您需要自行承担使用它们的风险。", + "description": "This message warns developers about unstable Flask APIs" + }, + "flaskWelcomeWarningAcceptButton": { + "message": "我接受风险", + "description": "this text is shown on a button, which the user presses to confirm they understand the risks of using Flask" + }, + "followUsOnTwitter": { + "message": "在 Twitter 上关注我们" + }, + "forbiddenIpfsGateway": { + "message": "禁用的 IPFS 网关:请指定一个 CID 网关" + }, + "forgetDevice": { + "message": "忽略此设备" + }, + "forgotPassword": { + "message": "忘记密码了?" + }, + "from": { + "message": "自" + }, + "fromAddress": { + "message": "从:$1", + "description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress" + }, + "fromTokenLists": { + "message": "从代币列表:$1" + }, + "functionApprove": { + "message": "功能:批准" + }, + "functionType": { + "message": "功能类型" + }, + "gas": { + "message": "燃料" + }, + "gasDisplayAcknowledgeDappButtonText": { + "message": "编辑建议的燃料费" + }, + "gasDisplayDappWarning": { + "message": "这笔燃料费是由 $1 建议的。忽略它可能会导致您的交易出现问题。如果您有疑问,请联系 $1。", + "description": "$1 represents the Dapp's origin" + }, + "gasEstimatesUnavailableWarning": { + "message": "无法获取我们的低、中、高估计值。" + }, + "gasFee": { + "message": "燃料费" + }, + "gasLimit": { + "message": "燃料上限" + }, + "gasLimitInfoTooltipContent": { + "message": "燃料上限是指您愿意花费的最大燃料单位量。" + }, + "gasLimitRecommended": { + "message": "建议的燃料上限是$1。如果燃料上限低于此值,则可能会失败。" + }, + "gasLimitTooLow": { + "message": "燃料上限至少为21000" + }, + "gasLimitTooLowWithDynamicFee": { + "message": "燃料上限至少为 $1", + "description": "$1 is the custom gas limit, in decimal." + }, + "gasLimitV2": { + "message": "燃料限制" + }, + "gasOption": { + "message": "燃料选项" + }, + "gasPrice": { + "message": "Gas 价格 (GWEI)" + }, + "gasPriceExcessive": { + "message": "您的燃料费设置得过高。请考虑降低金额。" + }, + "gasPriceExcessiveInput": { + "message": "燃料价格过高" + }, + "gasPriceExtremelyLow": { + "message": "燃料价格极低" + }, + "gasPriceFetchFailed": { + "message": "由于网络错误,燃料价格估算失败。" + }, + "gasPriceInfoTooltipContent": { + "message": "燃料价格指明了您愿意为每单位燃料支付的以太币数量。" + }, + "gasTimingHoursShort": { + "message": "$1 小时", + "description": "$1 represents a number of hours" + }, + "gasTimingMinutes": { + "message": "$1 分钟", + "description": "$1 represents a number of minutes" + }, + "gasTimingMinutesShort": { + "message": "$1 分钟", + "description": "$1 represents a number of minutes" + }, + "gasTimingNegative": { + "message": "可能在 $1 内", + "description": "$1 represents an amount of time" + }, + "gasTimingPositive": { + "message": "有可能在 $1 以内", + "description": "$1 represents an amount of time" + }, + "gasTimingSeconds": { + "message": "$1 秒", + "description": "$1 represents a number of seconds" + }, + "gasTimingSecondsShort": { + "message": "$1 秒", + "description": "$1 represents a number of seconds" + }, + "gasTimingVeryPositive": { + "message": "很可能在 $1 以内", + "description": "$1 represents an amount of time" + }, + "gasUsed": { + "message": "使用的燃料" + }, + "gdprMessage": { + "message": "这些数据是汇总的,因此,根据《通用数据保护条例》(欧盟)2016/679,这些数据是匿名的。有关我们隐私惯例的更多信息,请参见我们的 $1。", + "description": "$1 refers to the gdprMessagePrivacyPolicy message, the translation of which is meant to be used exclusively in the context of gdprMessage" + }, + "gdprMessagePrivacyPolicy": { + "message": "隐私政策", + "description": "this translation is intended to be exclusively used as the replacement for the $1 in the gdprMessage translation" + }, + "general": { + "message": "常规" + }, + "getEther": { + "message": "获取以太币" + }, + "getEtherFromFaucet": { + "message": "从 $1 的水龙头获取以太币", + "description": "Displays network name for Ether faucet" + }, + "getStarted": { + "message": "开始使用" + }, + "goBack": { + "message": "返回" + }, + "goerli": { + "message": "Goerli 测试网络" + }, + "gotIt": { + "message": "知道了!" + }, + "grantedToWithColon": { + "message": "授予:" + }, + "gwei": { + "message": "GWEI" + }, + "happyToSeeYou": { + "message": "我们很高兴见到您。" + }, + "hardware": { + "message": "硬件" + }, + "hardwareWalletConnected": { + "message": "已连接的硬件钱包" + }, + "hardwareWalletLegacyDescription": { + "message": "(旧)", + "description": "Text representing the MEW path" + }, + "hardwareWalletSupportLinkConversion": { + "message": "点击这里" + }, + "hardwareWallets": { + "message": "连接硬件钱包" + }, + "hardwareWalletsMsg": { + "message": "选择希望用于 MetaMask 的硬件钱包。" + }, + "here": { + "message": "此处", + "description": "as in -click here- for more information (goes with troubleTokenBalances)" + }, + "hexData": { + "message": "十六进制数据" + }, + "hide": { + "message": "隐藏" + }, + "hideSeedPhrase": { + "message": "隐藏助记词" + }, + "hideToken": { + "message": "隐藏代币" + }, + "hideTokenPrompt": { + "message": "隐藏代币?" + }, + "hideTokenSymbol": { + "message": "隐藏 $1", + "description": "$1 is the symbol for a token (e.g. 'DAI')" + }, + "hideZeroBalanceTokens": { + "message": "隐藏没有余额的代币" + }, + "high": { + "message": "过高" + }, + "highGasSettingToolTipMessage": { + "message": "使用$1来覆盖网络流量因像流行的 NFT 丢弃而出现的剧增。", + "description": "$1 is key 'high' (text: 'Aggressive') separated here so that it can be passed in with bold fontweight" + }, + "highLowercase": { + "message": "高" + }, + "history": { + "message": "历史记录" + }, + "import": { + "message": "导入", + "description": "Button to import an account from a selected file" + }, + "importAccount": { + "message": "导入账户" + }, + "importAccountError": { + "message": "导入账户时出错。" + }, + "importAccountMsg": { + "message": "导入的账户将不会与最初创建的 MetaMask 账户助记词相关联。了解更多有关导入账户的信息" + }, + "importAccountSeedPhrase": { + "message": "使用账户助记词导入钱包" + }, + "importMyWallet": { + "message": "导入我的钱包" + }, + "importNFT": { + "message": "导入 NFT" + }, + "importNFTAddressToolTip": { + "message": "例如,在OpenSea中,NFT页面的详情下,有一个蓝色的超链接值,标记为“合约地址”。如果您点击它,它将带您前往该合约在Etherscan上的地址;在该页面的左上角,应该有一个标记为“合约”的图标,在右侧,有一长串字母和数字。这是创建您的NFT的合约地址。点击地址右侧的“复制”图标,就可以将它复制到剪贴板上。" + }, + "importNFTPage": { + "message": "导入NFT页面" + }, + "importNFTTokenIdToolTip": { + "message": "收藏品的ID是唯一标识符,因为所有NFT都是独一无二的。同样,在OpenSea上,此数字位于“详情”下方。记下它,或将它复制到剪贴板上。" + }, + "importNFTs": { + "message": "添加收藏品" + }, + "importTokenQuestion": { + "message": "导入代币?" + }, + "importTokenWarning": { + "message": "任何人都可以用任何名称创建代币,包括现有代币的虚假版本。添加和交易风险自负!" + }, + "importTokens": { + "message": "添加资产" + }, + "importTokensCamelCase": { + "message": "添加代币" + }, + "importWallet": { + "message": "导入钱包" + }, + "importYourExisting": { + "message": "使用账户助记词导入您的现有钱包" + }, + "imported": { + "message": "已导入", + "description": "status showing that an account has been fully loaded into the keyring" + }, + "infuraBlockedNotification": { + "message": "MetaMask 无法连接到区块链主机。请检查可能的原因 $1。", + "description": "$1 is a clickable link with with text defined by the 'here' key" + }, + "initialTransactionConfirmed": { + "message": "您的初始交易已被网络确认。请点击“确定”返回。" + }, + "insufficientBalance": { + "message": "余额不足。" + }, + "insufficientCurrencyBuyOrDeposit": { + "message": "您的账户中没有足够的$1可以支付$2网络上的交易费用。$3或从另一个账户存入。", + "description": "$1 is the native currency of the network, $2 is the name of the current network, $3 is the key 'buy' + the ticker symbol of the native currency of the chain wrapped in a button" + }, + "insufficientCurrencyDeposit": { + "message": "您的账户中没有足够的$1可以支付$2网络上的交易费用。请从另一个账户存入$1。", + "description": "$1 is the native currency of the network, $2 is the name of the current network" + }, + "insufficientFunds": { + "message": "资金不足." + }, + "insufficientFundsForGas": { + "message": "燃料资金不足" + }, + "insufficientTokens": { + "message": "代币不足。" + }, + "invalidAddress": { + "message": "地址无效" + }, + "invalidAddressRecipient": { + "message": "接收方地址无效" + }, + "invalidAddressRecipientNotEthNetwork": { + "message": "非 ETH 网络,请使用小写" + }, + "invalidAssetType": { + "message": "该资产是NFT,需要在NFT选项卡下的“导入NFT”页面上重新添加" + }, + "invalidBlockExplorerURL": { + "message": "无效的区块浏览器 URL" + }, + "invalidChainIdTooBig": { + "message": "无效的链 ID,链 ID 过大。" + }, + "invalidCustomNetworkAlertContent1": { + "message": "需要重新输入自定义网络 '$1' 的链 ID。", + "description": "$1 is the name/identifier of the network." + }, + "invalidCustomNetworkAlertContent2": { + "message": "为了保护您免受恶意或有问题的网络供应商的影响,现在所有的自定义网络都需要有链 ID。" + }, + "invalidCustomNetworkAlertContent3": { + "message": "进入设置 > 网络并输入链 ID。您可以通过 $1 查找最热门网络的链 ID。", + "description": "$1 is a link to https://chainid.network" + }, + "invalidCustomNetworkAlertTitle": { + "message": "无效的自定义网络" + }, + "invalidHexNumber": { + "message": "无效的十六进制数字。" + }, + "invalidHexNumberLeadingZeros": { + "message": "无效的十六进制数字。删除所有前导零。" + }, + "invalidIpfsGateway": { + "message": "无效的 IPFS 网关。该值必须是一个有效的 URL" + }, + "invalidNumber": { + "message": "无效数字。输入一个十进制或带有“0x”前缀的十六进制数字。" + }, + "invalidNumberLeadingZeros": { + "message": "无效数字。删除所有前导零。" + }, + "invalidRPC": { + "message": "RPC URL 无效" + }, + "invalidSeedPhrase": { + "message": "助记词无效" + }, + "ipfsGateway": { + "message": "IPFS 网关" + }, + "ipfsGatewayDescription": { + "message": "输入用于 ENS 内容解析的 IPFS CID 网关的 URL。" + }, + "jazzAndBlockies": { + "message": "哈希头像是帮助您一眼识别账户的独特图标,有 Jazzicons 和 Blockies 两种不同风格。" + }, + "jazzicons": { + "message": "Jazzicons" + }, + "jsDeliver": { + "message": "jsDeliver" + }, + "jsonFile": { + "message": "JSON 文件", + "description": "format for importing an account" + }, + "keystone": { + "message": "Keystone" + }, + "keystoneTutorial": { + "message": " (使用教程)" + }, + "knownAddressRecipient": { + "message": "已知合约地址。" + }, + "knownTokenWarning": { + "message": "此操作将编辑已经在您的钱包中列出的代币,有肯能被用来欺骗您。只有确定要更改这些代币的内容时,才通过此操作。了解更多关于 $1" + }, + "kovan": { + "message": "Kovan 测试网络" + }, + "lastConnected": { + "message": "最后连接" + }, + "learmMoreAboutGas": { + "message": "想要 $1 有关燃料的相关信息吗?" + }, + "learnCancelSpeeedup": { + "message": "学习如何 $1", + "description": "$1 is link to cancel or speed up transactions" + }, + "learnMore": { + "message": "了解更多" + }, + "learnMoreUpperCase": { + "message": "了解更多" + }, + "learnScamRisk": { + "message": "诈骗和安全风险的信息。" + }, + "ledgerAccountRestriction": { + "message": "您需要先使用最后一个账户,然后才能添加新账户。" + }, + "ledgerConnectionInstructionCloseOtherApps": { + "message": "关闭任何连接到您设备的其他软件,然后点击这里刷新。" + }, + "ledgerConnectionInstructionHeader": { + "message": "点击确认前:" + }, + "ledgerConnectionInstructionStepFour": { + "message": "在您的 Ledger 设备上启用“智能合约数据”或“盲签”" + }, + "ledgerConnectionInstructionStepOne": { + "message": "在“设置 > 高级”下启用使用 Ledger Live" + }, + "ledgerConnectionInstructionStepThree": { + "message": "在您的 Ledger 设备中插入并选择 Ethereum 应用程序" + }, + "ledgerConnectionInstructionStepTwo": { + "message": "打开和解锁 Ledger Live 应用程序" + }, + "ledgerConnectionPreferenceDescription": { + "message": "自定义连接您的 Ledger 到 Metamask 的方式。建议使用 $1,但也可使用其他选项。请在这里阅读更多信息:$2", + "description": "A description that appears above a dropdown where users can select between up to three options - Ledger Live, U2F or WebHID - depending on what is supported in their browser. $1 is the recommended browser option, it will be either WebHID or U2f. $2 is a link to an article where users can learn more, but will be the translation of the learnMore message." + }, + "ledgerDeviceOpenFailureMessage": { + "message": "Ledger 设备打开失败。您的 Ledger 可能已连接到其他软件。请关闭 Ledger Live 或其他连接到您的 Ledger 设备的应用程序,并尝试再次连接。" + }, + "ledgerLive": { + "message": "Ledger Live", + "description": "The name of a desktop app that can be used with your ledger device. We can also use it to connect a users Ledger device to MetaMask." + }, + "ledgerLiveApp": { + "message": "Ledger Live 应用程序" + }, + "ledgerLocked": { + "message": "无法连接到 Ledger 设备。请确保您的设备已解锁并打开 Etherum 应用程序。" + }, + "ledgerTimeout": { + "message": "Ledger Live 响应时间过长或连接超时。请确保 Ledger Live 应用程序已打开且您的设备已解锁。" + }, + "ledgerTransportChangeWarning": { + "message": "如果您的 Ledger Live 应用程序已打开,请断开任何打开的 Ledger Live 的连接并关闭 Ledger Live 应用程序。" + }, + "ledgerWebHIDNotConnectedErrorMessage": { + "message": "Ledger 设备未连接。如果您想要连接您的 Ledger,请再次点击“继续”并批准 HID 连接", + "description": "An error message shown to the user during the hardware connect flow." + }, + "letsGoSetUp": { + "message": "是的,让我们开始吧!" + }, + "levelArrow": { + "message": "水平箭头" + }, + "likeToImportTokens": { + "message": "您想导入这些代币吗?" + }, + "link": { + "message": "链接" + }, + "links": { + "message": "链接" + }, + "loadMore": { + "message": "加载更多" + }, + "loading": { + "message": "正在加载..." + }, + "loadingNFTs": { + "message": "正在加载NFT......" + }, + "loadingTokens": { + "message": "加载代币中……" + }, + "localhost": { + "message": "Localhost 8545" + }, + "lock": { + "message": "注销" + }, + "lockTimeTooGreat": { + "message": "锁定时间过长" + }, + "logo": { + "message": "$1标志", + "description": "$1 is the name of the ticker" + }, + "low": { + "message": "低" + }, + "lowGasSettingToolTipMessage": { + "message": "使用$1等待较便宜的价格。时间估计远不准确,因为价格有些难以预测。", + "description": "$1 is key 'low' separated here so that it can be passed in with bold fontweight" + }, + "lowLowercase": { + "message": "低" + }, + "lowPriorityMessage": { + "message": "以后的交易将在这个时候之后排队。最后一次看到的价格是在一段时间之前。" + }, + "mainnet": { + "message": "以太坊主网" + }, + "mainnetToken": { + "message": "该地址与已知的以太坊主网代币地址匹配。重新检查您尝试添加的代币的合约地址和网络。" + }, + "makeAnotherSwap": { + "message": "创建新的交换" + }, + "makeSureNoOneWatching": { + "message": "请确保没有人在观看您的屏幕", + "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" + }, + "malformedData": { + "message": "格式错误的数据" + }, + "manageSnaps": { + "message": "管理已安装的Snap" + }, + "max": { + "message": "最大" + }, + "maxBaseFee": { + "message": "最大基本费用" + }, + "maxFee": { + "message": "最大费用" + }, + "maxPriorityFee": { + "message": "最大优先费用" + }, + "medium": { + "message": "市场" + }, + "mediumGasSettingToolTipMessage": { + "message": "使用 $1 按当前市场价格快速处理。", + "description": "$1 is key 'medium' (text: 'Market') separated here so that it can be passed in with bold fontweight" + }, + "memo": { + "message": "备注" + }, + "memorizePhrase": { + "message": "记住该账户助记词。" + }, + "message": { + "message": "消息" + }, + "metaMaskConnectStatusParagraphOne": { + "message": "现在您可以更好地控制 MetaMask 中的账户连接。" + }, + "metaMaskConnectStatusParagraphThree": { + "message": "点击它以管理您的连接账户。" + }, + "metaMaskConnectStatusParagraphTwo": { + "message": "连接状态按钮显示所访问的网站是否与您当前选择的账户连接。" + }, + "metamaskDescription": { + "message": "将您连接到以太坊和去中心化网络。" + }, + "metamaskSwapsOfflineDescription": { + "message": "MetaMask Swaps 正在进行维护。请稍后再查看。" + }, + "metamaskVersion": { + "message": "MetaMask 版本" + }, + "metametricsCommitmentsAllowOptOut": { + "message": "始终允许您通过“设置”选择退出" + }, + "metametricsCommitmentsAllowOptOut2": { + "message": "始终可通过设置选择退出" + }, + "metametricsCommitmentsBoldNever": { + "message": "永不", + "description": "This string is localized separately from some of the commitments so that we can bold it" + }, + "metametricsCommitmentsIntro": { + "message": "MetaMask.." + }, + "metametricsCommitmentsNeverCollect": { + "message": "决不收集密钥、地址、交易、余额、哈希或任何个人信息" + }, + "metametricsCommitmentsNeverCollectIP": { + "message": "$1 收集您的完整 IP 地址", + "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" + }, + "metametricsCommitmentsNeverCollectKeysEtc": { + "message": "$1 收集密钥、地址、交易记录、余额、哈希或任何个人信息", + "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" + }, + "metametricsCommitmentsNeverIP": { + "message": "永不收集您的完整 IP 地址" + }, + "metametricsCommitmentsNeverSell": { + "message": "决不出售数据牟利。绝对不会!" + }, + "metametricsCommitmentsNeverSellDataForProfit": { + "message": "$1 为利益而出售您的数据,永远不会!", + "description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'" + }, + "metametricsCommitmentsSendAnonymizedEvents": { + "message": "发送匿名化点击和页面浏览事件" + }, + "metametricsHelpImproveMetaMask": { + "message": "帮助我们改进 MetaMask" + }, + "metametricsOptInDescription": { + "message": "MetaMask 希望收集使用数据,以更好地了解我们的用户如何与扩展程序交互。这些数据将被用于持续改进我们产品和以太坊生态系统的可用性和用户体验。" + }, + "metametricsOptInDescription2": { + "message": "我们想要收集基本使用数据以提高我们产品的可用性。这些数据将......" + }, + "metametricsTitle": { + "message": "和600多万用户一起改进 MetaMask" + }, + "mismatchedChain": { + "message": "此链 ID 的网络信息与我们的记录不符。我们建议您在继续操作之前 $1。", + "description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key" + }, + "mismatchedChainLinkText": { + "message": "验证网络信息", + "description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key." + }, + "missingNFT": { + "message": "找不到您的 NFT?" + }, + "missingSetting": { + "message": "找不到设置吗?" + }, + "missingSettingRequest": { + "message": "在这里请求" + }, + "missingToken": { + "message": "没有看到您的代币?" + }, + "mobileSyncWarning": { + "message": "“与扩展程序同步”功能暂时被禁用。如果您想要在 MetaMask 移动设备上使用您的扩展程序钱包,那么在您的移动应用程序上:返回钱包设置选项并选择“使用账户助记词导入”选项。使用您的扩展程序钱包的助记词来将您的钱包导入移动设备。" + }, + "mustSelectOne": { + "message": "至少选择1种代币。" + }, + "myAccounts": { + "message": "我的账户" + }, + "name": { + "message": "名称" + }, + "needCryptoInWallet": { + "message": "要使用MetaMask与去中心化应用程序互动,您的钱包中需要有$1。", + "description": "$1 represents the cypto symbol to be purchased" + }, + "needHelp": { + "message": "需要帮助?请联系 $1", + "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" + }, + "needHelpFeedback": { + "message": "分享您的反馈" + }, + "needHelpLinkText": { + "message": "MetaMask 支持" + }, + "needHelpSubmitTicket": { + "message": "提交工单" + }, + "needImportFile": { + "message": "您必须选择一个文件来导入。", + "description": "User is important an account and needs to add a file to continue" + }, + "negativeETH": { + "message": "不能发负值的 ETH。" + }, + "network": { + "message": "网络: " + }, + "networkDetails": { + "message": "网络详情" + }, + "networkIsBusy": { + "message": "网络繁忙。燃料价格较高,估值较不准确。" + }, + "networkName": { + "message": "网络名称" + }, + "networkNameAvalanche": { + "message": "Avalanche" + }, + "networkNameBSC": { + "message": "BSC" + }, + "networkNameDefinition": { + "message": "与此网络关联的名称。" + }, + "networkNameEthereum": { + "message": "以太坊" + }, + "networkNamePolygon": { + "message": "Polygon" + }, + "networkNameRinkeby": { + "message": "Rinkeby" + }, + "networkNameTestnet": { + "message": "Testnet" + }, + "networkSettingsChainIdDescription": { + "message": "链 ID 用于签署交易。它必须与网络返回的链 ID 相匹配。您可以输入十进制或以'0x'开头的十六进制数字,但我们将以十进制显示该数字。" + }, + "networkStatus": { + "message": "网络状态" + }, + "networkStatusBaseFeeTooltip": { + "message": "基本费用由网络设定,每13-14秒更改一次。我们的 $1 和 $2 选项用于剧增。", + "description": "$1 and $2 are bold text for Medium and Aggressive respectively." + }, + "networkStatusPriorityFeeTooltip": { + "message": "优先费用(又称“矿工费”)。这笔费用直接向矿工支付,激励他们优先处理您的交易。" + }, + "networkStatusStabilityFeeTooltip": { + "message": "相对过去72小时,燃料费用为 $1。", + "description": "$1 is networks stability value - stable, low, high" + }, + "networkURL": { + "message": "网络 URL" + }, + "networkURLDefinition": { + "message": "用于访问此网络的 URL。" + }, + "networks": { + "message": "网络" + }, + "nevermind": { + "message": "没关系" + }, + "newAccount": { + "message": "新账户" + }, + "newAccountDetectedDialogMessage": { + "message": "检测到新地址!点击这里以添加到您的地址簿。" + }, + "newAccountNumberName": { + "message": "账户 $1", + "description": "Default name of next account to be created on create account screen" + }, + "newCollectibleAddedMessage": { + "message": "收藏品已成功添加!" + }, + "newContact": { + "message": "新联系人" + }, + "newContract": { + "message": "新合约" + }, + "newNFTDetectedMessage": { + "message": "允许 MetaMask 自动检测 Opensea 的 NFT 并在您的钱包中显示。" + }, + "newNFTsDetected": { + "message": "新功能!NFT 检测" + }, + "newNetworkAdded": { + "message": "成功添加了 “$1”!" + }, + "newPassword": { + "message": "新密码(至少 8 个字符)" + }, + "newToMetaMask": { + "message": "MetaMask 的新用户?" + }, + "newTotal": { + "message": "新总额" + }, + "newTransactionFee": { + "message": "新交易费用" + }, + "newValues": { + "message": "新的值" + }, + "next": { + "message": "下一步" + }, + "nextNonceWarning": { + "message": "Nonce 高于建议的 nouce 值 $1", + "description": "The next nonce according to MetaMask's internal logic" + }, + "nftTokenIdPlaceholder": { + "message": "输入代币ID" + }, + "nfts": { + "message": "收藏品" + }, + "nickname": { + "message": "昵称" + }, + "noAccountsFound": { + "message": "未找到符合给定查询条件的账户" + }, + "noAddressForName": { + "message": "此名称尚未设置地址。" + }, + "noAlreadyHaveSeed": { + "message": "不,我已经有一个账户助记词" + }, + "noConversionDateAvailable": { + "message": "没有可用的货币转换日期" + }, + "noConversionRateAvailable": { + "message": "无可用汇率" + }, + "noNFTs": { + "message": "尚无 NFT" + }, + "noSnaps": { + "message": "没有安装Snap" + }, + "noThanks": { + "message": "不,谢谢" + }, + "noThanksVariant2": { + "message": "不,谢谢." + }, + "noTransactions": { + "message": "您没有任何交易" + }, + "noWebcamFound": { + "message": "未找到您电脑的网络摄像头。请重试。" + }, + "noWebcamFoundTitle": { + "message": "未找到网络摄像头" + }, + "nonce": { + "message": "nonce" + }, + "nonceField": { + "message": "自定义交易 nonce" + }, + "nonceFieldDescription": { + "message": "打开这个功能可以改变确认屏幕上的 nonce(交易号码)。这是一个高级功能,请谨慎使用。" + }, + "nonceFieldHeading": { + "message": "自定义 Nonce" + }, + "notBusy": { + "message": "非忙碌中" + }, + "notCurrentAccount": { + "message": "这是正确的账户吗?这与您钱包中当前选择的账户不同" + }, + "notEnoughGas": { + "message": "燃料不足" + }, + "notifications10ActionText": { + "message": "在设置中访问", + "description": "The 'call to action' on the button, or link, of the 'Visit in settings' notification. Upon clicking, users will be taken to settings page." + }, + "notifications10DescriptionOne": { + "message": "Ethereum Mainnet、Polygon、BSC 和 Avalanche 网络目前提供经改进的代币检测。 即将推出更多!" + }, + "notifications10DescriptionThree": { + "message": "代币检测功能默认开启。但是您可从设置中禁用它。" + }, + "notifications10DescriptionTwo": { + "message": "我们从第三方代币列表中获取代币。将自动检测在两个以上代币列表中列出的代币。" + }, + "notifications10Title": { + "message": "经改进的代币检测现已推出" + }, + "notifications11Description": { + "message": "代币可由任何人创建,而且名称可以重复。如您看到一个您不信任或未与之交互的代币出现——那么,不信任它会更安全。" + }, + "notifications11Title": { + "message": "欺诈和安全风险" + }, + "notifications12ActionText": { + "message": "启用黑暗模式" + }, + "notifications12Description": { + "message": "将根据新用户的系统偏好设置为其启用黑暗模式。对于现有用户,请在“设置 -> 实验项”下手动启用黑暗模式。" + }, + "notifications12Title": { + "message": "何时启用黑暗模式?现在启用黑暗模式! 🕶️🦊" + }, + "notifications1Description": { + "message": "MetaMask Mobile 用户现在可以在他们的移动钱包中交换代币。扫描二维码以获取移动应用程序并开始交换。", + "description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature." + }, + "notifications1Title": { + "message": "可以在移动设备上交换了!", + "description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile." + }, + "notifications3ActionText": { + "message": "了解更多", + "description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website." + }, + "notifications3Description": { + "message": "及时了解 MetaMask 安全最佳实践,并从 MetaMask 官方支持部门获取最新的安全提示。", + "description": "Description of a notification in the 'See What's New' popup. Describes the information they can get on security from the linked support page." + }, + "notifications3Title": { + "message": "保持安全", + "description": "Title for a notification in the 'See What's New' popup. Encourages users to consider security." + }, + "notifications4ActionText": { + "message": "开始交换", + "description": "The 'call to action' on the button, or link, of the 'Swap on Binance Smart Chain!' notification. Upon clicking, users will be taken to a page where then can swap tokens on Binance Smart Chain." + }, + "notifications4Description": { + "message": "在您的钱包内获取最优惠的代币交换价格。MetaMask 现在将您连接到币安智能链上的多个去中心化交易所聚合器和专业做市商。", + "description": "Description of a notification in the 'See What's New' popup." + }, + "notifications4Title": { + "message": "在币安智能链上交换", + "description": "Title for a notification in the 'See What's New' popup. Encourages users to do swaps on Binance Smart Chain." + }, + "notifications5Description": { + "message": "您的“Seed Phrase”现在被称为“账户助记词”(Secret Recovery Phrase)。", + "description": "Description of a notification in the 'See What's New' popup. Describes the seed phrase wording update." + }, + "notifications6DescriptionOne": { + "message": "从 Chrome 版本91开始,启用我们的 Ledger 支持 (U2F) 的 API 不再支持硬件钱包。MetaMask 实施了新的 Ledger Live 支持,允许您继续通过 Ledger Live 桌面应用程序连接到您的 Ledger 设备。", + "description": "Description of a notification in the 'See What's New' popup. Describes the Ledger support update." + }, + "notifications6DescriptionThree": { + "message": "在 Metamask 中与您的 Ledger 账户交互时,将打开一个新选项卡,并且将要求您打开 Ledger Live 应用程序。应用程序打开后,您将被要求允许 WebSocket 连接到您的 MetaMask 账户。就是这样!", + "description": "Description of a notification in the 'See What's New' popup. Describes the Ledger support update." + }, + "notifications6DescriptionTwo": { + "message": "您可以通过点击“设置 > 高级> 使用 Ledger Live”来启用 Ledger Live 支持。", + "description": "Description of a notification in the 'See What's New' popup. Describes the Ledger support update." + }, + "notifications6Title": { + "message": "Chrome 用户的 Ledger 支持更新", + "description": "Title for a notification in the 'See What's New' popup. Lets users know about the Ledger support update" + }, + "notifications7DescriptionOne": { + "message": "MetaMask v10.1.0 包括使用 Ledger 设备时对 EIP-1559 交易的新支持。", + "description": "Description of a notification in the 'See What's New' popup. Describes changes for ledger and EIP1559 in v10.1.0" + }, + "notifications7DescriptionTwo": { + "message": "要在以太坊主网上完成交易,请确保您的 Ledger 设备拥有最新的固件。", + "description": "Description of a notification in the 'See What's New' popup. Describes the need to update ledger firmware." + }, + "notifications7Title": { + "message": "Ledger 固件更新", + "description": "Title for a notification in the 'See What's New' popup. Notifies ledger users of the need to update firmware." + }, + "notifications8ActionText": { + "message": "转到高级设置", + "description": "Description on an action button that appears in the What's New popup. Tells the user that if they click it, they will go to our Advanced Settings page." + }, + "notifications8DescriptionOne": { + "message": "从 MetaMask v10.4.0 开始,您不再需要 Ledger Live 即可将您的 Ledger 设备连接到 Metamask。", + "description": "Description of a notification in the 'See What's New' popup. Describes changes for how Ledger Live is no longer needed to connect the device." + }, + "notifications8DescriptionTwo": { + "message": "为了更轻松和更稳定的 ledger 体验,请转到设置中的“高级”选项卡,将“首选 Ledger 连接类型”切换为“WebHID”。", + "description": "Description of a notification in the 'See What's New' popup. Describes how the user can turn off the Ledger Live setting." + }, + "notifications8Title": { + "message": "Ledger 连接改进", + "description": "Title for a notification in the 'See What's New' popup. Notifies ledger users that there is an improvement in how they can connect their device." + }, + "notifications9DescriptionOne": { + "message": "当确认智能合约交易时,我们现在为您提供更多关于“数据”选项卡的见解。" + }, + "notifications9DescriptionTwo": { + "message": "您现在可以在确认之前更好地了解您的交易详情,并且可以更轻松地添加交易地址到您的地址簿,帮助您做出安全和知情的决定。" + }, + "notifications9Title": { + "message": "👓 我们正在使交易更容易阅读。" + }, + "numberOfNewTokensDetected": { + "message": "在此账户中发现 $1 新代币", + "description": "$1 is the number of new tokens detected" + }, + "ofTextNofM": { + "message": "/" + }, + "off": { + "message": "关" + }, + "offlineForMaintenance": { + "message": "离线维护" + }, + "ok": { + "message": "确定" + }, + "on": { + "message": "开" + }, + "onboardingCreateWallet": { + "message": "创建新钱包" + }, + "onboardingImportWallet": { + "message": "导入现有钱包" + }, + "onboardingPinExtensionBillboardAccess": { + "message": "完全访问权限" + }, + "onboardingPinExtensionBillboardDescription": { + "message": "这些扩展程序可以查看和更改信息" + }, + "onboardingPinExtensionBillboardDescription2": { + "message": "在此网站上。" + }, + "onboardingPinExtensionBillboardTitle": { + "message": "扩展程序" + }, + "onboardingPinExtensionChrome": { + "message": "点击浏览器扩展程序图标" + }, + "onboardingPinExtensionDescription": { + "message": "在您的浏览器上固定 MetaMask,以便访问并轻松查看交易确认。" + }, + "onboardingPinExtensionDescription2": { + "message": "您可以通过点击扩展程序打开 MetaMask,并一键访问您的钱包。" + }, + "onboardingPinExtensionDescription3": { + "message": "点击浏览器扩展程序图标即可即时访问它" + }, + "onboardingPinExtensionLabel": { + "message": "固定 MetaMask" + }, + "onboardingPinExtensionStep1": { + "message": "1" + }, + "onboardingPinExtensionStep2": { + "message": "2" + }, + "onboardingPinExtensionTitle": { + "message": "您的 MetaMask 安装完成!" + }, + "onboardingReturnNotice": { + "message": "“$1”将关闭此选项卡,并直接返回到 $2", + "description": "Return the user to the site that initiated onboarding" + }, + "onboardingShowIncomingTransactionsDescription": { + "message": "在您的钱包中显示传入的交易依赖于与 $1 的通信。Etherscan 将有权访问您的以太坊地址和 IP 地址。查看 $2。", + "description": "$1 is a clickable link with text defined by the 'etherscan' key. $2 is a clickable link with text defined by the 'privacyMsg' key." + }, + "onboardingUsePhishingDetectionDescription": { + "message": "网络钓鱼检测警报依赖于与 $1 的通信。jsDeliver 将有权访问您的 IP 地址。查看 $2。", + "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" + }, + "onlyAddTrustedNetworks": { + "message": "恶意网络提供商可能会谎报区块链的状态并记录您的网络活动。只添加您信任的自定义网络。" + }, + "onlyConnectTrust": { + "message": "只连接您信任的网站。" + }, + "onlyInteractWith": { + "message": "仅与您信任的实体互动。" + }, + "openFullScreenForLedgerWebHid": { + "message": "全屏打开 MetaMask 以通过 WebHID 连接您的 ledger。", + "description": "Shown to the user on the confirm screen when they are viewing MetaMask in a popup window but need to connect their ledger via webhid." + }, + "openSourceCode": { + "message": "检查源代码" + }, + "optional": { + "message": "可选" + }, + "optionalWithParanthesis": { + "message": "(可选)" + }, + "or": { + "message": "或" + }, + "origin": { + "message": "来源" + }, + "parameters": { + "message": "参数" + }, + "participateInMetaMetrics": { + "message": "参加 MetaMetrics" + }, + "participateInMetaMetricsDescription": { + "message": "加入 MetaMetrics ,帮助我们改进 MetaMask" + }, + "password": { + "message": "密码" + }, + "passwordNotLongEnough": { + "message": "密码长度不足" + }, + "passwordSetupDetails": { + "message": "此密码只会在此设备上解锁您的 MetaMask 钱包。MetaMask 无法恢复此密码。" + }, + "passwordStrength": { + "message": "密码强度:$1", + "description": "Return password strength to the user when user wants to create password." + }, + "passwordStrengthDescription": { + "message": "强密码可以提高钱包的安全性,以防设备被盗或被入侵。" + }, + "passwordTermsWarning": { + "message": "我明白 MetaMask 无法为我恢复此密码。$1" + }, + "passwordsDontMatch": { + "message": "密码不匹配" + }, + "pastePrivateKey": { + "message": "请粘贴您的私钥:", + "description": "For importing an account from a private key" + }, + "pending": { + "message": "待处理" + }, + "pendingTransactionInfo": { + "message": "在那笔交易完成之前,这笔交易不会被处理。" + }, + "pendingTransactionMultiple": { + "message": "您有 ($1) 笔待处理的交易" + }, + "pendingTransactionSingle": { + "message": "您有 (1) 笔待处理的交易。", + "description": "$1 is count of pending transactions" + }, + "permissionRequest": { + "message": "权限请求" + }, + "permissionRequestCapitalized": { + "message": "权限请求" + }, + "permission_accessNetwork": { + "message": "访问互联网。", + "description": "The description of the `endowment:network-access` permission." + }, + "permission_accessSnap": { + "message": "连接$1的Snap。", + "description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap." + }, + "permission_customConfirmation": { + "message": "在MetaMask中显示确认。", + "description": "The description for the `snap_confirm` permission" + }, + "permission_ethereumAccounts": { + "message": "查看您允许的账户的地址(必填)", + "description": "The description for the `eth_accounts` permission" + }, + "permission_manageBip44Keys": { + "message": "控制您的“$1”账户和资产。", + "description": "The description for the `snap_getBip44Entropy_*` permission. $1 is the name of a protocol, e.g. 'Filecoin'." + }, + "permission_manageState": { + "message": "在您的设备上存储和管理其数据。", + "description": "The description for the `snap_manageState` permission" + }, + "permission_notifications": { + "message": "显示通知。", + "description": "The description for the `snap_notify` permission" + }, + "permission_unknown": { + "message": "未知权限:$1", + "description": "$1 is the name of a requested permission that is not recognized." + }, + "permissions": { + "message": "权限" + }, + "personalAddressDetected": { + "message": "检测到个人地址。请输入代币合约地址。" + }, + "pleaseConfirm": { + "message": "请确认" + }, + "plusXMore": { + "message": "另外 $1 项", + "description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items" + }, + "preferredLedgerConnectionType": { + "message": "首选 Ledger 连接类型", + "description": "A header for a dropdown in the advanced section of settings. Appears above the ledgerConnectionPreferenceDescription message" + }, + "preparingSwap": { + "message": "正在准备交换......" + }, + "prev": { + "message": "上一个" + }, + "primaryCurrencySetting": { + "message": "主要货币" + }, + "primaryCurrencySettingDescription": { + "message": "选择原生以优先显示链的原生货币(例如 ETH)的值。选择法定货币以优先显示以您所选法定货币显示的值。" + }, + "priorityFee": { + "message": "优先费用" + }, + "priorityFeeProperCase": { + "message": "优先费用" + }, + "privacyMsg": { + "message": "隐私政策" + }, + "privateKey": { + "message": "私钥", + "description": "select this type of file to use to import an account" + }, + "privateKeyWarning": { + "message": "警告:切勿泄露此密钥。任何拥有您私钥的人都可以窃取您账户中持有的任何资产。" + }, + "privateNetwork": { + "message": "私有网络" + }, + "proceedWithTransaction": { + "message": "我仍然想继续" + }, + "proposedApprovalLimit": { + "message": "拟议的审批上限" + }, + "provide": { + "message": "提供" + }, + "publicAddress": { + "message": "公共地址" + }, + "queue": { + "message": "队列" + }, + "queued": { + "message": "队列中" + }, + "reAddAccounts": { + "message": "重新添加任何其他账户" + }, + "reAdded": { + "message": "重新添加" + }, + "readdToken": { + "message": "将来您还可以通过账户选项菜单中的“导入代币”来添加此代币。" + }, + "receive": { + "message": "接收" + }, + "recents": { + "message": "最近" + }, + "recipientAddressPlaceholder": { + "message": "搜索、公共地址 (0x) 或 ENS" + }, + "recommendedGasLabel": { + "message": "建议" + }, + "recoveryPhraseReminderBackupStart": { + "message": "从这里开始" + }, + "recoveryPhraseReminderConfirm": { + "message": "明白了" + }, + "recoveryPhraseReminderHasBackedUp": { + "message": "始终将您的账户助记词保存在安全和秘密的地方" + }, + "recoveryPhraseReminderHasNotBackedUp": { + "message": "需要再次备份您的账户助记词?" + }, + "recoveryPhraseReminderItemOne": { + "message": "切勿与任何人分享您的账户助记词" + }, + "recoveryPhraseReminderItemTwo": { + "message": "MetaMask 团队绝对不会索要您的账户助记词" + }, + "recoveryPhraseReminderSubText": { + "message": "您的账户助记词控制您的所有账户。" + }, + "recoveryPhraseReminderTitle": { + "message": "保护您的资金" + }, + "refreshList": { + "message": "刷新列表" + }, + "reject": { + "message": "拒绝" + }, + "rejectAll": { + "message": "拒绝全部" + }, + "rejectTxsDescription": { + "message": "您将批量拒绝 $1 笔交易。" + }, + "rejectTxsN": { + "message": "拒绝 $1 笔交易" + }, + "rejected": { + "message": "已拒绝" + }, + "remember": { + "message": "记住:" + }, + "remindMeLater": { + "message": "稍后提醒我" + }, + "remove": { + "message": "删除" + }, + "removeAccount": { + "message": "删除账户" + }, + "removeAccountDescription": { + "message": "该账户将从您的钱包中删除。在继续操作前,确认您已拥有该导入账户的原始账户助记词或私钥。您可以通过账户下拉菜单再次导入或创建账户。" + }, + "removeNFT": { + "message": "删除 NFT" + }, + "removeSnap": { + "message": "移除Snap" + }, + "removeSnapConfirmation": { + "message": "您确定要移除$1吗?", + "description": "$1 represents the name of the snap" + }, + "removeSnapDescription": { + "message": "此操作将会删除snap及其数据,并撤销您获授予的权限。" + }, + "replace": { + "message": "替换" + }, + "requestsAwaitingAcknowledgement": { + "message": "待确认的请求" + }, + "required": { + "message": "必需" + }, + "reset": { + "message": "重置" + }, + "resetAccount": { + "message": "重置账户" + }, + "resetAccountDescription": { + "message": "重置账户将清除您的交易历史记录。这不会改变您账户中的余额,也不会要求您重新输入账户助记词。" + }, + "resetWallet": { + "message": "重置钱包" + }, + "resetWalletSubHeader": { + "message": "MetaMask不会保留密码的副本。如果您在解锁账户时遇到问题,需要重置您的钱包。您可以提供设置钱包时使用的助记词,以进行重置。" + }, + "resetWalletUsingSRP": { + "message": "此操作将从此设备中删除您当前的钱包和助记词,以及您编制的账户列表。使用助记词进行重置后,您将会看到一个账户列表(基于用于重置的助记词)。这个新列表将自动包括有余额的账户。您还可以使用之前创建的$1。您导入的自定义账户需要是$2,添加到账户中的任何自定义代币也需要是$3。" + }, + "resetWalletWarning": { + "message": "在继续之前,请确保您所使用的助记词正确无误。您将无法撤消此操作。" + }, + "restore": { + "message": "恢复" + }, + "restoreWalletPreferences": { + "message": "已找到 $1 的数据备份。您想恢复您的钱包偏好设置吗?", + "description": "$1 is the date at which the data was backed up" + }, + "retryTransaction": { + "message": "重试交易" + }, + "reusedTokenNameWarning": { + "message": "此处的代币使用了与您关注的另一种代币相同的符号,这可能会让人感到困惑或具有欺骗性。" + }, + "revealSeedWords": { + "message": "显示助记词" + }, + "revealSeedWordsDescription": { + "message": "如果更改浏览器或移动计算机,您将需要此助记词才能访问账户。将它们保存在安全、秘密的地方。" + }, + "revealSeedWordsWarning": { + "message": "这些账户助记词可以用来窃取您的所有账户。" + }, + "revealSeedWordsWarningTitle": { + "message": "切勿与任何人分享此账户助记词!" + }, + "revealTheSeedPhrase": { + "message": "显示助记词" + }, + "rinkeby": { + "message": "Rinkeby 测试网络" + }, + "ropsten": { + "message": "Ropsten 测试网络" + }, + "rpcUrl": { + "message": "新的 RPC URL" + }, + "safeTransferFrom": { + "message": "安全转账来自" + }, + "save": { + "message": "保存" + }, + "saveAsCsvFile": { + "message": "保存为 CSV 文件" + }, + "scanInstructions": { + "message": "将二维码放在摄像头前" + }, + "scanQrCode": { + "message": "扫描二维码" + }, + "scrollDown": { + "message": "向下滚动" + }, + "search": { + "message": "搜索" + }, + "searchAccounts": { + "message": "搜索账户" + }, + "searchResults": { + "message": "搜索结果" + }, + "searchSettings": { + "message": "在设置中搜索" + }, + "searchTokens": { + "message": "搜索代币" + }, + "secretBackupPhraseDescription": { + "message": "您的账户助记词可以帮助您轻松备份和恢复个人账户。" + }, + "secretBackupPhraseWarning": { + "message": "警告:切勿向他人透露您的账户助记词。任何拥有该账户助记词的人都可以永远拿走您的以太币。" + }, + "secretPhrase": { + "message": "只有这个钱包上的第一个账户将自动加载。完成此流程后,若要添加额外的账户,点击下拉菜单,然后选择“创建账户”。" + }, + "secretRecoveryPhrase": { + "message": "助记词" + }, + "secureWallet": { + "message": "安全钱包" + }, + "securityAndPrivacy": { + "message": "安全和隐私" + }, + "seedPhraseConfirm": { + "message": "确认助记词" + }, + "seedPhraseEnterMissingWords": { + "message": "确认助记词" + }, + "seedPhraseIntroNotRecommendedButtonCopy": { + "message": "稍后提醒我(不推荐)" + }, + "seedPhraseIntroRecommendedButtonCopy": { + "message": "保护我的钱包(推荐)" + }, + "seedPhraseIntroSidebarBulletFour": { + "message": "写下并存储在多个秘密位置。" + }, + "seedPhraseIntroSidebarBulletOne": { + "message": "保存到密码管理器" + }, + "seedPhraseIntroSidebarBulletThree": { + "message": "存放在保险箱内。" + }, + "seedPhraseIntroSidebarBulletTwo": { + "message": "储存在银行保险库。" + }, + "seedPhraseIntroSidebarCopyOne": { + "message": "您的账户助记词是由12个单词组成的短语,它是您的钱包和资金的“主密钥”" + }, + "seedPhraseIntroSidebarCopyThree": { + "message": "如果有人要求您的恢复短语,他们可能会试图欺骗您并偷窃您的钱包资金" + }, + "seedPhraseIntroSidebarCopyTwo": { + "message": "切勿分享您的账户助记词,包括也不能与 MetaMask 分享!" + }, + "seedPhraseIntroSidebarTitleOne": { + "message": "什么是账户助记词?" + }, + "seedPhraseIntroSidebarTitleThree": { + "message": "我是否应该分享我的账户助记词?" + }, + "seedPhraseIntroSidebarTitleTwo": { + "message": "如何保存我的账户助记词?" + }, + "seedPhraseIntroTitle": { + "message": "保护您的钱包安全" + }, + "seedPhraseIntroTitleCopy": { + "message": "在开始之前,观看这个简短的视频来了解您的账户助记词以及如何保护您的钱包安全。" + }, + "seedPhraseReq": { + "message": "助记词包含 12、15、18、21 或 24 个字词" + }, + "seedPhraseWriteDownDetails": { + "message": "请写下这个由12个单词组成的账户助记词,然后将其保存到您信任并且只有您可以访问的地方。" + }, + "seedPhraseWriteDownHeader": { + "message": "写下您的助记词" + }, + "selectAHigherGasFee": { + "message": "选择更高的燃料费用,加快交易处理速度。*" + }, + "selectAccounts": { + "message": "选择要在此网站上使用的账户" + }, + "selectAll": { + "message": "全部选择" + }, + "selectAnAccount": { + "message": "选择一个账户" + }, + "selectAnAccountAlreadyConnected": { + "message": "此账户已连接到 MetaMask" + }, + "selectEachPhrase": { + "message": "请选择每个单词,以确保其正确性。" + }, + "selectHdPath": { + "message": "选择 HD 路径" + }, + "selectNFTPrivacyPreference": { + "message": "在设置中打开 NFT 检测" + }, + "selectPathHelp": { + "message": "如果您没有看到您期望的账户,请尝试切换 HD 路径。" + }, + "selectType": { + "message": "选择类型" + }, + "selectingAllWillAllow": { + "message": "选择全部将允许本网站查看您当前的所有账户。确保您信任这个网站。" + }, + "send": { + "message": "发送" + }, + "sendAmount": { + "message": "发送金额" + }, + "sendSpecifiedTokens": { + "message": "发送 $1", + "description": "Symbol of the specified token" + }, + "sendTo": { + "message": "发送到" + }, + "sendTokens": { + "message": "发送代币" + }, + "sendingDisabled": { + "message": "尚不支持发送ERC-1155 NFT资产。" + }, + "sendingNativeAsset": { + "message": "正在发送 $1", + "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" + }, + "setAdvancedPrivacySettings": { + "message": "设置高级隐私设置" + }, + "setAdvancedPrivacySettingsDetails": { + "message": "MetaMask 使用这些可信的第三方服务来提高产品可用性和安全性。" + }, + "settings": { + "message": "设置" + }, + "settingsSearchMatchingNotFound": { + "message": "没有找到匹配的结果." + }, + "shorthandVersion": { + "message": "v$1", + "description": "$1 is replaced by a version string (e.g. 1.2.3)" + }, + "show": { + "message": "显示" + }, + "showAdvancedGasInline": { + "message": "高级燃料控制" + }, + "showAdvancedGasInlineDescription": { + "message": "选择此项可直接在发送和确认界面显示燃料价格和上限控制。" + }, + "showFiatConversionInTestnets": { + "message": "在测试网络上显示转换" + }, + "showFiatConversionInTestnetsDescription": { + "message": "选择此项以在测试网络上显示法定货币转换" + }, + "showHexData": { + "message": "显示十六进制数据" + }, + "showHexDataDescription": { + "message": "选择此项以在发送屏幕上显示十六进制数据字段" + }, + "showHide": { + "message": "显示/隐藏" + }, + "showIncomingTransactions": { + "message": "显示传入的交易" + }, + "showIncomingTransactionsDescription": { + "message": "选择此项以使用 Etherscan 在交易列表中显示传入的交易" + }, + "showPermissions": { + "message": "显示权限" + }, + "showPrivateKeys": { + "message": "显示私钥" + }, + "showRecommendations": { + "message": "显示建议" + }, + "showTestnetNetworks": { + "message": "显示测试网络" + }, + "showTestnetNetworksDescription": { + "message": "选择此项以在网络列表中显示测试网络" + }, + "sigRequest": { + "message": "签名请求" + }, + "sign": { + "message": "签名" + }, + "signNotice": { + "message": "谨慎行事。此操作有可能用来从您的账户提取资产。确保您信任此站点。" + }, + "signatureRequest": { + "message": "签名请求" + }, + "signatureRequest1": { + "message": "消息" + }, + "signed": { + "message": "已签名" + }, + "simulationErrorMessageV2": { + "message": "我们无法估算燃料。合约中可能存在错误,这笔交易可能会失败。" + }, + "skip": { + "message": "跳过" + }, + "skipAccountSecurity": { + "message": "跳过账户安全?" + }, + "skipAccountSecurityDetails": { + "message": "我明白,在我备份我的账户助记词之前,我可能会丢失我的账户及其所有资产。" + }, + "slow": { + "message": "慢" + }, + "smartTransaction": { + "message": "智能交易" + }, + "snapAccess": { + "message": "$1的snap可以访问:", + "description": "$1 represents the name of the snap" + }, + "snapAdded": { + "message": "从 $2 添加到 $1", + "description": "$1 represents the date the snap was installed, $2 represents which origin installed the snap." + }, + "snapError": { + "message": "Snap错误:'$1'。错误代码:'$2'", + "description": "This is shown when a snap encounters an error. $1 is the error message from the snap, and $2 is the error code." + }, + "snapInstall": { + "message": "安装Snap" + }, + "snapInstallWarningCheck": { + "message": "请勾选全部以确认您理解。" + }, + "snapInstallWarningKeyAccess": { + "message": "您正在向snap \"$1\"授予密钥访问权限。此操作不可撤销,并会向\"$1\"授予对您的账户和资产的控制权。在继续之前,请确保您信任\"$1\"。", + "description": "The parameter is the name of the snap" + }, + "snapRequestsPermission": { + "message": "此Snap正在请求以下权限:" + }, + "snaps": { + "message": "Snap" + }, + "snapsSettingsDescription": { + "message": "管理您的Snap" + }, + "snapsStatus": { + "message": "Snap状态取决于活动。" + }, + "snapsToggle": { + "message": "Snap仅在启用后才会运行" + }, + "somethingWentWrong": { + "message": "哎呀!出了点问题。" + }, + "source": { + "message": "来源" + }, + "speedUp": { + "message": "加速" + }, + "speedUpCancellation": { + "message": "加速该取消操作" + }, + "speedUpExplanation": { + "message": "我们根据当前网络条件更新了燃料费用,将其提高了至少10%(网络要求)。" + }, + "speedUpPopoverTitle": { + "message": "加快交易速度" + }, + "speedUpTooltipText": { + "message": "新燃料费" + }, + "speedUpTransaction": { + "message": "加速该交易" + }, + "spendLimitAmount": { + "message": "消费限额" + }, + "spendLimitInsufficient": { + "message": "消费限额不足" + }, + "spendLimitInvalid": { + "message": "消费限额无效;必须是正数" + }, + "spendLimitPermission": { + "message": "支付限额权限" + }, + "spendLimitRequestedBy": { + "message": "$1 请求的消费限额", + "description": "Origin of the site requesting the spend limit" + }, + "spendLimitTooLarge": { + "message": "消费限额过大" + }, + "srpInputNumberOfWords": { + "message": "我有一个包含$1个单词的助记词", + "description": "This is the text for each option in the dropdown where a user selects how many words their secret recovery phrase has during import. The $1 is the number of words (either 12, 15, 18, 21, or 24)." + }, + "srpPasteFailedTooManyWords": { + "message": "粘贴失败,因为它包含超过24个单词。一个助记词最多可包含24个单词。", + "description": "Description of SRP paste erorr when the pasted content has too many words" + }, + "srpPasteTip": { + "message": "您可以将整个助记词粘贴到任何字段中", + "description": "Our secret recovery phrase input is split into one field per word. This message explains to users that they can paste their entire secrete recovery phrase into any field, and we will handle it correctly." + }, + "srpToggleShow": { + "message": "显示/隐藏助记词中的这个单词", + "description": "Describes a toggle that is used to show or hide a single word of the secret recovery phrase" + }, + "srpWordHidden": { + "message": "这个单词已隐藏", + "description": "Explains that a word in the secret recovery phrase is hidden" + }, + "srpWordShown": { + "message": "这个单词处于显示状态", + "description": "Explains that a word in the secret recovery phrase is being shown" + }, + "stable": { + "message": "稳定" + }, + "stableLowercase": { + "message": "稳定" + }, + "stateLogError": { + "message": "检索状态日志时出错。" + }, + "stateLogFileName": { + "message": "MetaMask 状态日志" + }, + "stateLogs": { + "message": "状态日志" + }, + "stateLogsDescription": { + "message": "状态日志包含您的公共账户地址和已发送的交易。" + }, + "status": { + "message": "状态" + }, + "statusConnected": { + "message": "已连接" + }, + "statusNotConnected": { + "message": "未连接" + }, + "step1LatticeWallet": { + "message": "请确保您的 Lattice1 已准备好连接" + }, + "step1LatticeWalletMsg": { + "message": "当您的 Lattice1 设备设置好并在线时,您可以将 MetaMask 与它连接。解锁您的设备并准备好您的设备 ID。若要了解有关使用硬件钱包的更多信息,$1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, + "step1LedgerWallet": { + "message": "下载 Ledger 应用程序" + }, + "step1LedgerWalletMsg": { + "message": "下载、设置并输入您的密码以解锁 $1。", + "description": "$1 represents the `ledgerLiveApp` localization value" + }, + "step1TrezorWallet": { + "message": "插入 Trezor 钱包" + }, + "step1TrezorWalletMsg": { + "message": "将您的钱包直接连接到电脑。若要了解有关使用硬件钱包设备的更多信息,$1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, + "step2LedgerWallet": { + "message": "插入 Ledger 钱包" + }, + "step2LedgerWalletMsg": { + "message": "将您的钱包直接连接到电脑。解锁 Ledger 并打开 Ethereum 应用程序。若要了解有关使用您的硬件钱包设备的更多信息,$1。", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, + "storePhrase": { + "message": "通过如 1Password 等密码管理工具保存该账户助记词。" + }, + "strong": { + "message": "强" + }, + "stxAreHere": { + "message": "智能交易已推出!" + }, + "stxBenefit1": { + "message": "将交易成本减至最低" + }, + "stxBenefit2": { + "message": "减少交易失败" + }, + "stxBenefit3": { + "message": "消除卡住的交易" + }, + "stxBenefit4": { + "message": "防止抢先交易" + }, + "stxCancelled": { + "message": "交换就会失败" + }, + "stxCancelledDescription": { + "message": "您的交易就会失败,并被取消,以保护您免于支付不必要的燃料费。" + }, + "stxCancelledSubDescription": { + "message": "再次尝试进行交换。下次我们会在这里保护您免受类似风险。 " + }, + "stxDescription": { + "message": "MetaMask Swap变得更加智能!启用智能交易将允许MetaMask从编程上优化您的交换,以帮助:" + }, + "stxErrorNotEnoughFunds": { + "message": "没有足够的资金进行智能交易。" + }, + "stxErrorUnavailable": { + "message": "智能交易暂时不可用。" + }, + "stxFailure": { + "message": "交换失败" + }, + "stxFailureDescription": { + "message": "突然的市场变化可能导致失败。如果问题仍然存在,请联系$1。", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "stxFallbackPendingTx": { + "message": "智能交易暂时不可用,因为您有一笔待处理的交易。" + }, + "stxFallbackUnavailable": { + "message": "即使智能交易不可用,您仍然可以交换代币。" + }, + "stxPendingFinalizing": { + "message": "最终确定中..." + }, + "stxPendingOptimizingGas": { + "message": "正在优化燃料......" + }, + "stxPendingPrivatelySubmitting": { + "message": "正在隐秘提交交换......" + }, + "stxSubDescription": { + "message": "*智能交易将尝试多次隐秘提交您的交易。如果所有尝试都失败,交易将会公开广播,以确保您的交换能成功进行。" + }, + "stxSuccess": { + "message": "交换完成!" + }, + "stxSuccessDescription": { + "message": "您的$1现在可用。", + "description": "$1 is a token symbol, e.g. ETH" + }, + "stxTooltip": { + "message": "在提交前模拟交易,以降低交易成本并减少失败。" + }, + "stxTryRegular": { + "message": "尝试定期交换。" + }, + "stxTryingToCancel": { + "message": "正在尝试取消您的交易......" + }, + "stxUnavailable": { + "message": "智能交易被禁用" + }, + "stxUnknown": { + "message": "状态未知" + }, + "stxUnknownDescription": { + "message": "有一笔交易已经成功,但我们不确定是哪一笔。这可能是由于在处理此交换时提交了另一笔交易。" + }, + "stxUserCancelled": { + "message": "交换已取消" + }, + "stxUserCancelledDescription": { + "message": "您的交易已被取消,您并未支付任何不必要的燃料费。" + }, + "stxYouCanOptOut": { + "message": "您可以随时选择退出高级设置。" + }, + "submit": { + "message": "提交" + }, + "submitted": { + "message": "已提交" + }, + "support": { + "message": "获取帮助" + }, + "supportCenter": { + "message": "访问我们的支持中心" + }, + "swap": { + "message": "交换" + }, + "swapAdvancedSlippageInfo": { + "message": "如果在您下订单和确认订单之间价格发生了变化,这就叫做“滑点”。如果滑点超过您的“最大滑点”设置,您的交换将自动取消。" + }, + "swapAggregator": { + "message": "聚合器" + }, + "swapAllowSwappingOf": { + "message": "允许交换 $1", + "description": "Shows a user that they need to allow a token for swapping on their hardware wallet" + }, + "swapAmountReceived": { + "message": "保证金额" + }, + "swapAmountReceivedInfo": { + "message": "这是您将收到的最低金额。根据滑点值,您可能会收到更多。" + }, + "swapApproval": { + "message": "批准 $1 进行交换", + "description": "Used in the transaction display list to describe a transaction that is an approve call on a token that is to be swapped.. $1 is the symbol of a token that has been approved." + }, + "swapApproveNeedMoreTokens": { + "message": "您还需要 $1 的 $2 来完成这笔交换", + "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." + }, + "swapApproveNeedMoreTokensSmartTransactions": { + "message": "您还需要更多$1才能使用智能交易完成此交换。", + "description": "Tells the user that they need more of a certain token ($1) before they can complete the swap via smart transactions." + }, + "swapBestOfNQuotes": { + "message": "$1 报价中最棒的。", + "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" + }, + "swapBuildQuotePlaceHolderText": { + "message": "没有与 $1 匹配的代币", + "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" + }, + "swapCompleteIn": { + "message": "交换将在此时间內完成<", + "description": "'<' means 'less than', e.g. Swap complete in < 2:59" + }, + "swapConfirmWithHwWallet": { + "message": "使用您的硬件钱包确认" + }, + "swapContractDataDisabledErrorDescription": { + "message": "在您的 Ledger 的 Etherum 应用程序中,转到“设置”并允许合约数据。然后再次尝试交换。" + }, + "swapContractDataDisabledErrorTitle": { + "message": "您的 Ledger 上未启用合约数据" + }, + "swapCustom": { + "message": "自定义" + }, + "swapDecentralizedExchange": { + "message": "去中心化交易所" + }, + "swapDirectContract": { + "message": "直接合约" + }, + "swapEditLimit": { + "message": "编辑限制" + }, + "swapEnableDescription": { + "message": "这是必须的,并授予 MetaMask 权限交换您的 $1。", + "description": "Gives the user info about the required approval transaction for swaps. $1 will be the symbol of a token being approved for swaps." + }, + "swapEnableTokenForSwapping": { + "message": "这将 $1 进行交换", + "description": "$1 is for the 'enableToken' key, e.g. 'enable ETH'" + }, + "swapEstimatedNetworkFees": { + "message": "预估网络费用" + }, + "swapEstimatedNetworkFeesInfo": { + "message": "这是预估的网络费用,将用于完成您的交换。实际金额可能会根据网络条件而变化。" + }, + "swapFailedErrorDescriptionWithSupportLink": { + "message": "交易有时会失败,我们随时为您提供帮助。如果此问题仍然存在,您可以在 $1 联系我们的客服,以获得进一步的帮助。", + "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" + }, + "swapFailedErrorTitle": { + "message": "交换失败" + }, + "swapFetchingQuoteNofN": { + "message": "获取$2的$1报价", + "description": "A count of possible quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of resources that we check for quotes. Keep in mind that not all resources will have a quote for a particular swap." + }, + "swapFetchingQuotes": { + "message": "取得报价中" + }, + "swapFetchingQuotesErrorDescription": { + "message": "呃……出错了。再试一次,如果错误仍存在,请联系客服。" + }, + "swapFetchingQuotesErrorTitle": { + "message": "获取报价出错" + }, + "swapFetchingTokens": { + "message": "获取代币中……" + }, + "swapFromTo": { + "message": "$1 到 $2 的交换", + "description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token" + }, + "swapGasFeesDetails": { + "message": "燃料费用是估算的,并将根据网络流量和交易复杂性而波动。" + }, + "swapGasFeesLearnMore": { + "message": "了解更多关于燃料费的信息" + }, + "swapGasFeesSplit": { + "message": "上一个屏幕上的燃料费用在这两笔交易之间分摊。" + }, + "swapGasFeesSummary": { + "message": "燃料费用支付给在 $1 网络上处理交易的加密矿工。MetaMask 不会从燃料费用中获利。", + "description": "$1 is the selected network, e.g. Ethereum or BSC" + }, + "swapHighSlippageWarning": { + "message": "滑点金额非常高。" + }, + "swapIncludesMMFee": { + "message": "包括 $1% 的 MetaMask 费用。", + "description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number." + }, + "swapLowSlippageError": { + "message": "交易可能会失败,最大滑点过低。" + }, + "swapMaxSlippage": { + "message": "最大滑点" + }, + "swapMetaMaskFee": { + "message": "MetaMask 费用" + }, + "swapMetaMaskFeeDescription": { + "message": "我们每次都能从顶级流动性资源中找到最优惠的价格。$1% 的费用会自动计入此报价。", + "description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number." + }, + "swapNQuotesWithDot": { + "message": "$1 报价。", + "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" + }, + "swapNewQuoteIn": { + "message": "$1 后更新报价", + "description": "Tells the user the amount of time until the currently displayed quotes are update. $1 is a time that is counting down from 1:00 to 0:00" + }, + "swapOnceTransactionHasProcess": { + "message": "处理完此交易后,您的 $1 将被添加到您的账户中。", + "description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol." + }, + "swapPriceDifference": { + "message": "您将用 $1 $2 (~$3) 交换 $4 $5 (~$6)。", + "description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts." + }, + "swapPriceDifferenceTitle": { + "message": "~$1% 的价差", + "description": "$1 is a number (ex: 1.23) that represents the price difference." + }, + "swapPriceImpactTooltip": { + "message": "价格影响是当前市场价格与交易执行期间收到的金额之间的差异。价格影响是您的交易规模相对于流动资金池规模的一个函数。" + }, + "swapPriceUnavailableDescription": { + "message": "由于缺乏市场价格数据,无法确定价格影响。在交换之前,请确认您对即将收到的代币数量感到满意。" + }, + "swapPriceUnavailableTitle": { + "message": "在继续之前,请检查您的费率" + }, + "swapProcessing": { + "message": "处理中" + }, + "swapQuoteDetails": { + "message": "报价详情" + }, + "swapQuoteDetailsSlippageInfo": { + "message": "如果在您下订单和确认订单之间价格发生了变化,这就叫做“滑点”。如果滑点超过您的“最大滑点”设置,您的交换将自动取消。" + }, + "swapQuoteSource": { + "message": "报价来源" + }, + "swapQuotesExpiredErrorDescription": { + "message": "请请求新的报价,以获得最新的价格。" + }, + "swapQuotesExpiredErrorTitle": { + "message": "报价超时" + }, + "swapQuotesNotAvailableErrorDescription": { + "message": "尝试调整金额或滑点设置,然后重试。" + }, + "swapQuotesNotAvailableErrorTitle": { + "message": "无可用报价" + }, + "swapRate": { + "message": "费率" + }, + "swapReceiving": { + "message": "正在接收" + }, + "swapReceivingInfoTooltip": { + "message": "这是一个预估额。确切的金额取决于滑点。" + }, + "swapRequestForQuotation": { + "message": "请求报价" + }, + "swapReviewSwap": { + "message": "审查交换" + }, + "swapSearchForAToken": { + "message": "搜索代币" + }, + "swapSelect": { + "message": "选择" + }, + "swapSelectAQuote": { + "message": "选择一个报价" + }, + "swapSelectAToken": { + "message": "选择代币" + }, + "swapSelectQuotePopoverDescription": { + "message": "以下是从多个流动性来源收集到的所有报价。" + }, + "swapSlippageNegative": { + "message": "滑点必须大于或等于0" + }, + "swapSource": { + "message": "流动性来源" + }, + "swapSourceInfo": { + "message": "我们搜索多个流动性来源(交易所、聚合器和专业做市商),以找到最优惠的价格和最低的网络费用。" + }, + "swapSuggested": { + "message": "建议的交换" + }, + "swapSuggestedGasSettingToolTipMessage": { + "message": "交换是复杂和时间敏感的交易。我们建议使用此燃料费用,以便在成本和成功交换的信心之间保持良好的平衡。" + }, + "swapSwapFrom": { + "message": "交换自" + }, + "swapSwapSwitch": { + "message": "在代币之间切换" + }, + "swapSwapTo": { + "message": "交换为" + }, + "swapToConfirmWithHwWallet": { + "message": "使用您的硬件钱包确认" + }, + "swapTokenAvailable": { + "message": "您的 $1 已添加到您的账户。", + "description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol." + }, + "swapTokenBalanceUnavailable": { + "message": "我们无法检索您的 $1 余额", + "description": "This message communicates to the user that their balance of a given token is currently unavailable. $1 will be replaced by a token symbol" + }, + "swapTokenToToken": { + "message": "用 $1 交换 $2", + "description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap." + }, + "swapTokenVerificationAddedManually": { + "message": "此代币已手动添加。" + }, + "swapTokenVerificationMessage": { + "message": "始终在 $1 上确认代币地址。", + "description": "Points the user to Etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"Etherscan\" followed by an info icon that shows more info on hover." + }, + "swapTokenVerificationOnlyOneSource": { + "message": "仅在1个来源上进行了验证。" + }, + "swapTokenVerificationSources": { + "message": "在 $1 个来源上进行了验证。", + "description": "Indicates the number of token information sources that recognize the symbol + address. $1 is a decimal number." + }, + "swapTooManyDecimalsError": { + "message": "$1 允许最多 $2 个小数位", + "description": "$1 is a token symbol and $2 is the max. number of decimals allowed for the token" + }, + "swapTransactionComplete": { + "message": "交易完成" + }, + "swapTwoTransactions": { + "message": "2笔交易" + }, + "swapUnknown": { + "message": "未知" + }, + "swapVerifyTokenExplanation": { + "message": "多个代币可以使用相同的名称和符号。检查 $1 以确认这是您正在寻找的代币。", + "description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network." + }, + "swapYourTokenBalance": { + "message": "$1 $2 可用于交换", + "description": "Tells the user how much of a token they have in their balance. $1 is a decimal number amount of tokens, and $2 is a token symbol" + }, + "swapZeroSlippage": { + "message": "0%滑点" + }, + "swapsAdvancedOptions": { + "message": "高级选项" + }, + "swapsExcessiveSlippageWarning": { + "message": "滑点金额太高,会导致不良率。请将最大滑点降低到低于15%的值。" + }, + "swapsMaxSlippage": { + "message": "最大滑点" + }, + "swapsNotEnoughForTx": { + "message": "没有足够的 $1 来完成此交易", + "description": "Tells the user that they don't have enough of a token for a proposed swap. $1 is a token symbol" + }, + "swapsViewInActivity": { + "message": "在活动中查看" + }, + "switchEthereumChainConfirmationDescription": { + "message": "这将切换 MetaMask 中选定的网络到以前添加的网络:" + }, + "switchEthereumChainConfirmationTitle": { + "message": "允许此网站切换网络?" + }, + "switchNetwork": { + "message": "切换网络" + }, + "switchNetworks": { + "message": "切换网络" + }, + "switchToThisAccount": { + "message": "切换到该账户" + }, + "switchingNetworksCancelsPendingConfirmations": { + "message": "切换网络将取消所有待处理的确认" + }, + "symbol": { + "message": "符号" + }, + "symbolBetweenZeroTwelve": { + "message": "符号不得超过11个字符。" + }, + "syncFailed": { + "message": "同步失败" + }, + "syncInProgress": { + "message": "同步进行中" + }, + "syncWithMobile": { + "message": "与移动设备同步" + }, + "syncWithMobileBeCareful": { + "message": "扫描此代码时,请确保附近没有其他人在看您的屏幕" + }, + "syncWithMobileComplete": { + "message": "您的数据已同步成功。尽情体验 MetaMask 移动应用程序吧!" + }, + "syncWithMobileDesc": { + "message": "您可以将您的账户和信息与您的移动设备同步。打开 MetaMask 移动应用程序,进入“设置”,点击“从浏览器扩展程序同步”" + }, + "syncWithMobileDescNewUsers": { + "message": "如果您是首次启用 MetaMask 移动应用程序,请通过个人手机完成如下操作。" + }, + "syncWithMobileScanThisCode": { + "message": "使用 MetaMask 移动应用程序扫描此代码" + }, + "syncWithMobileTitle": { + "message": "与移动设备同步" + }, + "syncWithThreeBox": { + "message": "与 3Box 同步数据(实验功能)" + }, + "syncWithThreeBoxDescription": { + "message": "开启以使用 3Box 备份您的设置。此功能目前是实验功能,使用时风险自负。" + }, + "syncWithThreeBoxDisabled": { + "message": "由于初始同步过程中出现错误,3Box 已被禁用" + }, + "tenPercentIncreased": { + "message": "增加10%" + }, + "terms": { + "message": "使用条款" + }, + "termsOfService": { + "message": "服务条款" + }, + "testFaucet": { + "message": "测试水龙头" + }, + "testNetworks": { + "message": "测试网络" + }, + "theme": { + "message": "主题" + }, + "themeDescription": { + "message": "选择您喜欢的MetaMask主题。" + }, + "thisWillCreate": { + "message": "这将创建新的钱包和账户助记词" + }, + "time": { + "message": "时间" + }, + "tips": { + "message": "小贴士" + }, + "to": { + "message": "至" + }, + "toAddress": { + "message": "至:$1", + "description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress" + }, + "toggleTestNetworks": { + "message": "$1 测试网络", + "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open to the advanced settings where users can enable the display of test networks in the network dropdown." + }, + "token": { + "message": "代币" + }, + "tokenAddress": { + "message": "代币地址" + }, + "tokenAlreadyAdded": { + "message": "代币已添加。" + }, + "tokenContractAddress": { + "message": "代币合约地址" + }, + "tokenDecimalFetchFailed": { + "message": "需要代币小数。" + }, + "tokenDecimalTitle": { + "message": "代币小数:" + }, + "tokenDetails": { + "message": "代币详情" + }, + "tokenDetection": { + "message": "代币检测" + }, + "tokenDetectionAlertMessage": { + "message": "代币检测目前适用于 $1. $2" + }, + "tokenDetectionAnnouncement": { + "message": "新功能!以太坊主网上提供了经过改进的代币检测作为实验功能。$1" + }, + "tokenDetectionToggleDescription": { + "message": "ConsenSys的代币API使用来自各种第三方的代币列表,汇总成一个代币列表。关闭它将会停止检测添加到您钱包中的新代币,但会保留搜索代币以导入的选项。" + }, + "tokenId": { + "message": "代币 ID" + }, + "tokenList": { + "message": "代币列表:" + }, + "tokenSymbol": { + "message": "代币符号" + }, + "tooltipApproveButton": { + "message": "我理解" + }, + "total": { + "message": "共计" + }, + "transaction": { + "message": "交易" + }, + "transactionCancelAttempted": { + "message": "已在 $2 尝试取消交易 ,燃料费用预计为 $1" + }, + "transactionCancelSuccess": { + "message": "交易已在 $2 成功取消。" + }, + "transactionConfirmed": { + "message": "交易已在 $2 确认。" + }, + "transactionCreated": { + "message": "在 $2 创建了值为 $1 的交易。" + }, + "transactionData": { + "message": "交易数据" + }, + "transactionDecodingAccreditationDecoded": { + "message": "由 Truffle 解码" + }, + "transactionDecodingAccreditationVerified": { + "message": "已在 $1 验证的合约" + }, + "transactionDecodingUnsupportedNetworkError": { + "message": "链 ID $1 不可使用交易解码" + }, + "transactionDetailDappGasMoreInfo": { + "message": "建议的网站" + }, + "transactionDetailDappGasTooltip": { + "message": "编辑以使用 MetaMask 建议的基于最新区块的燃料费用。" + }, + "transactionDetailGasHeading": { + "message": "估算的燃料费" + }, + "transactionDetailGasInfoV2": { + "message": "估算" + }, + "transactionDetailGasTooltipConversion": { + "message": "了解更多关于燃料费的信息" + }, + "transactionDetailGasTooltipExplanation": { + "message": "燃料费由网络设定,并根据网络流量和交易的复杂性而波动。" + }, + "transactionDetailGasTooltipIntro": { + "message": "燃料费用支付给在 $1 网络上处理交易的加密矿工。MetaMask 不会从燃料费用中获利。" + }, + "transactionDetailGasTotalSubtitle": { + "message": "金额 + 燃料费" + }, + "transactionDetailLayer2GasHeading": { + "message": "2层燃料费用" + }, + "transactionDetailMultiLayerTotalSubtitle": { + "message": "金额 + 费用" + }, + "transactionDropped": { + "message": "交易已在 $2 放弃。" + }, + "transactionError": { + "message": "交易出错。合约代码中抛出异常。" + }, + "transactionErrorNoContract": { + "message": "试图在非合约地址上调用函数。" + }, + "transactionErrored": { + "message": "交易出现错误。" + }, + "transactionFee": { + "message": "交易费" + }, + "transactionHistoryBaseFee": { + "message": "基本费用 (GWEI)" + }, + "transactionHistoryL1GasLabel": { + "message": "1层燃料费总计" + }, + "transactionHistoryL2GasLimitLabel": { + "message": "2层燃料上限" + }, + "transactionHistoryL2GasPriceLabel": { + "message": "2层燃料价格" + }, + "transactionHistoryMaxFeePerGas": { + "message": "每单位燃料的最大费用" + }, + "transactionHistoryPriorityFee": { + "message": "优先费用 (GWEI)" + }, + "transactionHistoryTotalGasFee": { + "message": "燃料费总额" + }, + "transactionResubmitted": { + "message": "已在 $2 重新提交交易,燃料费预计升至 $1" + }, + "transactionSubmitted": { + "message": "已在 $2 提交交易,燃料费预计为 $1。" + }, + "transactionUpdated": { + "message": "交易于 $2 更新。" + }, + "transfer": { + "message": "转移" + }, + "transferBetweenAccounts": { + "message": "在我的账户之间转移" + }, + "transferFrom": { + "message": "转移自" + }, + "troubleConnectingToWallet": { + "message": "我们在连接您的 $1 时遇到问题,尝试检查 $2 并重试。", + "description": "$1 is the wallet device name; $2 is a link to wallet connection guide" + }, + "troubleTokenBalances": { + "message": "我们在加载您的代币余额时遇到问题。您可以查看它们 ", + "description": "Followed by a link (here) to view token balances" + }, + "trustSiteApprovePermission": { + "message": "通过授予权限,您允许以下 $1 访问您的资金" + }, + "tryAgain": { + "message": "重试" + }, + "turnOnTokenDetection": { + "message": "开启增强型代币检测" + }, + "twelveHrTitle": { + "message": "12小时:" + }, + "txInsightsNotSupported": { + "message": "此合约目前不支持交易见解。" + }, + "typePassword": { + "message": "输入您的 MetaMask 密码" + }, + "u2f": { + "message": "U2F", + "description": "A name on an API for the browser to interact with devices that support the U2F protocol. On some browsers we use it to connect MetaMask to Ledger devices." + }, + "unapproved": { + "message": "未批准" + }, + "units": { + "message": "单位" + }, + "unknown": { + "message": "未知" + }, + "unknownCameraError": { + "message": "尝试访问您的相机时出错。请重试……" + }, + "unknownCameraErrorTitle": { + "message": "糟糕!出问题了...." + }, + "unknownNetwork": { + "message": "未知的私有网络" + }, + "unknownQrCode": { + "message": "错误:我们无法识别该二维码" + }, + "unlimited": { + "message": "无限制" + }, + "unlock": { + "message": "登录" + }, + "unlockMessage": { + "message": "即将进入去中心化网络" + }, + "unrecognizedChain": { + "message": "这个自定义网络无法识别。我们建议您在继续操作之前 $1", + "description": "$1 is a clickable link with text defined by the 'unrecognizedChanLinkText' key. The link will open to instructions for users to validate custom network details." + }, + "unrecognizedChainLinkText": { + "message": "验证网络信息", + "description": "Serves as link text for the 'unrecognizedChain' key. This text will be embedded inside the translation for that key." + }, + "unsendableAsset": { + "message": "当前不支持发送可收藏的 (ERC-721) 代币", + "description": "This is an error message we show the user if they attempt to send a collectible asset type, for which currently don't support sending" + }, + "unverifiedContractAddressMessage": { + "message": "我们无法验证此合约。请确保此地址是可靠的。" + }, + "upArrow": { + "message": "向上箭头" + }, + "updatedWithDate": { + "message": "已于 $1 更新" + }, + "urlErrorMsg": { + "message": "URL 需要相应的 HTTP/HTTPS 前缀。" + }, + "urlExistsErrorMsg": { + "message": "此 URL 目前已被 $1 网络使用。" + }, + "useCollectibleDetection": { + "message": "自动检测 NFT" + }, + "useCollectibleDetectionDescription": { + "message": "显示 NFT 媒体和数据可能会将您的 IP 地址暴露给集中式服务器。第三方 API(例如 OpenSea)用于在您的钱包中检测 NFT。这会通过这些服务暴露您的账户地址。如果您不希望该应用程序从这些服务中提取数据,请禁用此功能。" + }, + "usePhishingDetection": { + "message": "使用网络钓鱼检测" + }, + "usePhishingDetectionDescription": { + "message": "显示针对 Ethereum 用户的网络钓鱼域名警告" + }, + "useTokenDetection": { + "message": "使用代币检测" + }, + "useTokenDetectionDescription": { + "message": "我们使用第三方 API 来检测和显示发送到您钱包的新代币。如果您不希望 MetaMask 从这些服务中提取数据,请关闭。" + }, + "useTokenDetectionPrivacyDesc": { + "message": "要自动显示发送到您账户的代币,需要与第三方服务器通信以获取代币的图像。这些服务器将拥有您的IP地址的访问权限。" + }, + "usedByClients": { + "message": "被各种不同的客户使用" + }, + "userName": { + "message": "用户名" + }, + "verifyThisTokenDecimalOn": { + "message": "代币小数可以在 $1 上找到", + "description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\"" + }, + "verifyThisTokenOn": { + "message": "在 $1 上验证此代币", + "description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\"" + }, + "verifyThisUnconfirmedTokenOn": { + "message": "在 $1 上验证此代币,并确保这是您想要交易的代币。", + "description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\"" + }, + "viewAccount": { + "message": "查看账户" + }, + "viewAllDetails": { + "message": "查看所有详情" + }, + "viewContact": { + "message": "查看联系人" + }, + "viewFullTransactionDetails": { + "message": "查看全部交易详情" + }, + "viewMore": { + "message": "查看更多" + }, + "viewOnBlockExplorer": { + "message": "在区块浏览器上查看" + }, + "viewOnCustomBlockExplorer": { + "message": "在 $2 上查看 $1", + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + }, + "viewOnEtherscan": { + "message": "在 Etherscan 上查看 $1", + "description": "$1 is the action type. e.g (Account, Transaction, Swap)" + }, + "viewOnOpensea": { + "message": "在 Opensea 上查看" + }, + "viewinExplorer": { + "message": "在 Explorer 中查看 $1", + "description": "$1 is the action type. e.g (Account, Transaction, Swap)" + }, + "visitWebSite": { + "message": "访问我们的网站" + }, + "walletConnectionGuide": { + "message": "我们的硬件钱包连接指南" + }, + "walletCreationSuccessDetail": { + "message": "您已经成功地保护了您的钱包。请确保您的账户助记词安全和秘密——这是您的责任!" + }, + "walletCreationSuccessReminder1": { + "message": "MetaMask 无法恢复您的账户助记词。" + }, + "walletCreationSuccessReminder2": { + "message": "MetaMask 绝对不会索要您的账户助记词。" + }, + "walletCreationSuccessReminder3": { + "message": "对任何人 $1,否则您的资金有被盗风险", + "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" + }, + "walletCreationSuccessReminder3BoldSection": { + "message": "切勿分享您的账户助记词", + "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" + }, + "walletCreationSuccessTitle": { + "message": "钱包创建成功" + }, + "weak": { + "message": "弱" + }, + "web3ShimUsageNotification": { + "message": "我们发现当前的网站尝试使用已经删除的 window.web3 API。如果这个网站出现故障,请点击 $1 以获取更多信息。", + "description": "$1 is a clickable link." + }, + "webhid": { + "message": "WebHID", + "description": "Refers to a interface for connecting external devices to the browser. Used for connecting ledger to the browser. Read more here https://developer.mozilla.org/en-US/docs/Web/API/WebHID_API" + }, + "welcome": { + "message": "欢迎使用 MetaMask" + }, + "welcomeBack": { + "message": "欢迎回来!" + }, + "welcomeExploreDescription": { + "message": "存储、发送和使用加密货币和资产。" + }, + "welcomeExploreTitle": { + "message": "探索去中心化应用" + }, + "welcomeLoginDescription": { + "message": "使用您的 MetaMask 登录去中心化应用 - 无需注册。" + }, + "welcomeLoginTitle": { + "message": "迎接您的钱包" + }, + "welcomeToMetaMask": { + "message": "让我们开始吧" + }, + "welcomeToMetaMaskIntro": { + "message": "MetaMask 深受数百万人信任,是一款可以让所有人进入 web3 世界的安全钱包。" + }, + "whatsNew": { + "message": "最新动态", + "description": "This is the title of a popup that gives users notifications about new features and updates to MetaMask." + }, + "whatsThis": { + "message": "这是什么?" + }, + "writePhrase": { + "message": "请将该账户助记词记录在纸上,并保存在安全的地方。如果希望提升安全性,请将它记录在多张纸上,并分别保存在2 - 3个不同的地方。" + }, + "xOfY": { + "message": "$1 / $2", + "description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total" + }, + "xOfYPending": { + "message": "$1 / $2 待处理", + "description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total" + }, + "yes": { + "message": "是" + }, + "yesLetsTry": { + "message": "是的,我们试一下" + }, + "youNeedToAllowCameraAccess": { + "message": "需要开启相机访问权限,才能使用该功能。" + }, + "youSign": { + "message": "您正在签名" + }, + "yourPrivateSeedPhrase": { + "message": "您的个人账户助记词" + }, + "zeroGasPriceOnSpeedUpError": { + "message": "加速时零燃料价格" + } +} diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index ad530bbd8..f1bcc95b7 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -179,9 +179,6 @@ "affirmAgree": { "message": "我同意" }, - "aggregatorFeeCost": { - "message": "聚集器网络手续费" - }, "alertDisableTooltip": { "message": "这个可以在“设置 > 提醒”中进行更改" }, @@ -233,12 +230,6 @@ "message": "MetaMask Flask", "description": "The name of the application (Flask)" }, - "approvalAndAggregatorTxFeeCost": { - "message": "批准聚合商网络手续费" - }, - "approvalTxGasCost": { - "message": "批准交易燃料成本" - }, "approve": { "message": "批准消费限额" }, @@ -372,10 +363,10 @@ "message": "购买" }, "buyWithWyre": { - "message": "使用 Wyre 购买 ETH" + "message": "使用 Wyre 购买 $1" }, "buyWithWyreDescription": { - "message": "您可以通过 Wyre 使用信用卡将 ETH 存入您的 MetaMask 账户。" + "message": "您可以通过 Wyre 使用信用卡将 $1 存入您的 MetaMask 账户。" }, "bytes": { "message": "字节" @@ -1017,10 +1008,6 @@ "externalExtension": { "message": "外部扩展" }, - "extraApprovalGas": { - "message": "+$1 批准燃料", - "description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas" - }, "failed": { "message": "失败" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index 94a79bdb3..4bed5f928 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -140,10 +140,10 @@ "message": "買" }, "buyWithWyre": { - "message": "用 Wyre 購買 ETH" + "message": "用 Wyre 購買 $1" }, "buyWithWyreDescription": { - "message": "Wyre 讓你使用信用卡在 MetaMask 帳號中直接存入 ETH。" + "message": "Wyre 讓你使用信用卡在 MetaMask 帳號中直接存入 $1 。" }, "bytes": { "message": "位元組" diff --git a/app/background.html b/app/background.html index 447efa60e..6a0150579 100644 --- a/app/background.html +++ b/app/background.html @@ -6,7 +6,7 @@ - {{@if(it.useLavamoat)}} + {{@if(it.applyLavaMoat)}} diff --git a/app/home.html b/app/home.html index d44eb6663..0686d4034 100644 --- a/app/home.html +++ b/app/home.html @@ -8,11 +8,11 @@ -
+
Loading...
- {{@if(it.useLavamoat)}} + {{@if(it.applyLavaMoat)}} diff --git a/app/images/bsc-filled.svg b/app/images/bsc-filled.svg new file mode 100644 index 000000000..7fa855c77 --- /dev/null +++ b/app/images/bsc-filled.svg @@ -0,0 +1 @@ + diff --git a/app/images/darkmode-banner.png b/app/images/darkmode-banner.png new file mode 100644 index 000000000..7f72b3128 Binary files /dev/null and b/app/images/darkmode-banner.png differ diff --git a/app/images/palm.svg b/app/images/palm.svg new file mode 100644 index 000000000..6a308b1e1 --- /dev/null +++ b/app/images/palm.svg @@ -0,0 +1 @@ + diff --git a/app/manifest/_base.json b/app/manifest/v2/_base.json similarity index 100% rename from app/manifest/_base.json rename to app/manifest/v2/_base.json diff --git a/app/manifest/brave.json b/app/manifest/v2/brave.json similarity index 100% rename from app/manifest/brave.json rename to app/manifest/v2/brave.json diff --git a/app/manifest/chrome.json b/app/manifest/v2/chrome.json similarity index 100% rename from app/manifest/chrome.json rename to app/manifest/v2/chrome.json diff --git a/app/manifest/firefox.json b/app/manifest/v2/firefox.json similarity index 100% rename from app/manifest/firefox.json rename to app/manifest/v2/firefox.json diff --git a/app/manifest/opera.json b/app/manifest/v2/opera.json similarity index 100% rename from app/manifest/opera.json rename to app/manifest/v2/opera.json diff --git a/app/manifest/v3/_base.json b/app/manifest/v3/_base.json new file mode 100644 index 000000000..6836caafb --- /dev/null +++ b/app/manifest/v3/_base.json @@ -0,0 +1,81 @@ +{ + "action": { + "default_icon": { + "16": "images/icon-16.png", + "19": "images/icon-19.png", + "32": "images/icon-32.png", + "38": "images/icon-38.png", + "64": "images/icon-64.png", + "128": "images/icon-128.png", + "512": "images/icon-512.png" + }, + "default_title": "MetaMask", + "default_popup": "popup.html" + }, + "author": "https://metamask.io", + "background": { + "service_worker": "app-init.js" + }, + "commands": { + "_execute_browser_action": { + "suggested_key": { + "windows": "Alt+Shift+M", + "mac": "Alt+Shift+M", + "chromeos": "Alt+Shift+M", + "linux": "Alt+Shift+M" + } + } + }, + "content_scripts": [ + { + "matches": ["file://*/*", "http://*/*", "https://*/*"], + "js": [ + "disable-console.js", + "globalthis.js", + "lockdown-install.js", + "lockdown-run.js", + "lockdown-more.js", + "contentscript.js" + ], + "run_at": "document_start", + "all_frames": true + }, + { + "matches": ["*://connect.trezor.io/*/popup.html"], + "js": ["vendor/trezor/content-script.js"] + } + ], + "default_locale": "en", + "description": "__MSG_appDescription__", + "icons": { + "16": "images/icon-16.png", + "19": "images/icon-19.png", + "32": "images/icon-32.png", + "38": "images/icon-38.png", + "48": "images/icon-48.png", + "64": "images/icon-64.png", + "128": "images/icon-128.png", + "512": "images/icon-512.png" + }, + "manifest_version": 3, + "name": "__MSG_appName__", + "permissions": [ + "storage", + "unlimitedStorage", + "clipboardWrite", + "http://localhost:8545/", + "https://*.infura.io/", + "https://lattice.gridplus.io/*", + "activeTab", + "webRequest", + "*://*.eth/", + "notifications" + ], + "short_name": "__MSG_appName__", + "web_accessible_resources": [ + { + "resources": ["inpage.js", "phishing.html"], + "matches": ["http://*/*", "https://*/*"] + } + ] +} diff --git a/app/manifest/v3/brave.json b/app/manifest/v3/brave.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/app/manifest/v3/brave.json @@ -0,0 +1 @@ +{} diff --git a/app/manifest/v3/chrome.json b/app/manifest/v3/chrome.json new file mode 100644 index 000000000..e4bb01cdd --- /dev/null +++ b/app/manifest/v3/chrome.json @@ -0,0 +1,7 @@ +{ + "externally_connectable": { + "matches": ["https://metamask.io/*"], + "ids": ["*"] + }, + "minimum_chrome_version": "66" +} diff --git a/app/manifest/v3/firefox.json b/app/manifest/v3/firefox.json new file mode 100644 index 000000000..918311d54 --- /dev/null +++ b/app/manifest/v3/firefox.json @@ -0,0 +1,26 @@ +{ + "applications": { + "gecko": { + "id": "webextension@metamask.io", + "strict_min_version": "68.0" + } + }, + "background": { + "page": "background.html", + "persistent": true + }, + "browser_action": { + "default_icon": { + "16": "images/icon-16.png", + "19": "images/icon-19.png", + "32": "images/icon-32.png", + "38": "images/icon-38.png", + "64": "images/icon-64.png", + "128": "images/icon-128.png", + "512": "images/icon-512.png" + }, + "default_title": "MetaMask", + "default_popup": "popup.html" + }, + "manifest_version": 2 +} diff --git a/app/manifest/v3/opera.json b/app/manifest/v3/opera.json new file mode 100644 index 000000000..6cfefd402 --- /dev/null +++ b/app/manifest/v3/opera.json @@ -0,0 +1,9 @@ +{ + "permissions": [ + "storage", + "tabs", + "clipboardWrite", + "clipboardRead", + "http://localhost:8545/" + ] +} diff --git a/app/notification.html b/app/notification.html index 1002a37ef..1f348f680 100644 --- a/app/notification.html +++ b/app/notification.html @@ -35,7 +35,7 @@
- {{@if(it.useLavamoat)}} + {{@if(it.applyLavaMoat)}} diff --git a/app/popup.html b/app/popup.html index e24978ad7..90117fc79 100644 --- a/app/popup.html +++ b/app/popup.html @@ -12,7 +12,7 @@
- {{@if(it.useLavamoat)}} + {{@if(it.applyLavaMoat)}} diff --git a/app/scripts/app-init.js b/app/scripts/app-init.js new file mode 100644 index 000000000..6d2bf2d65 --- /dev/null +++ b/app/scripts/app-init.js @@ -0,0 +1,55 @@ +// eslint-disable-next-line import/unambiguous +function tryImport(...fileNames) { + try { + // eslint-disable-next-line + importScripts(...fileNames); + return true; + } catch (e) { + console.error(e); + return false; + } +} + +function importAllScripts() { + const startImportScriptsTime = Date.now(); + // applyLavaMoat has been hard coded to "true" as + // tryImport('./runtime-cjs.js') is giving issue with XMLHttpRequest object which is not avaialble to service worker. + // we need to dynamically inject values of applyLavaMoat once this is fixed. + const applyLavaMoat = true; + + tryImport('./globalthis.js'); + tryImport('./sentry-install.js'); + + if (applyLavaMoat) { + tryImport('./runtime-lavamoat.js'); + tryImport('./lockdown-more.js'); + tryImport('./policy-load.js'); + } else { + tryImport('./lockdown-install.js'); + tryImport('./lockdown-more.js'); + tryImport('./lockdown-run.js'); + tryImport('./runtime-cjs.js'); + } + + const fileList = [ + // The list of files is injected at build time by replacing comment below with comma separated strings of file names + /** FILE NAMES */ + ]; + + fileList.forEach((fileName) => tryImport(fileName)); + + // for performance metrics/reference + console.log( + `SCRIPTS IMPORT COMPLETE in Seconds: ${ + (Date.now() - startImportScriptsTime) / 1000 + }`, + ); +} + +// Placing script import call here ensures that scripts are inported each time service worker is activated. +importAllScripts(); + +/** + * An open issue is changes in this file break during hot reloading. Reason is dynamic injection of "FILE NAMES". + * Developers need to restart local server if they change this file. + */ diff --git a/app/scripts/background.js b/app/scripts/background.js index affdcd32d..311cd2781 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -23,6 +23,7 @@ import { REJECT_NOTFICIATION_CLOSE, REJECT_NOTFICIATION_CLOSE_SIG, } from '../../shared/constants/metametrics'; +import { isManifestV3 } from '../../shared/modules/mv3.utils'; import migrations from './migrations'; import Migrator from './lib/migrator'; import ExtensionPlatform from './platforms/extension'; @@ -45,6 +46,14 @@ import { getPlatform } from './lib/util'; const { sentry } = global; const firstTimeState = { ...rawFirstTimeState }; +const metamaskInternalProcessHash = { + [ENVIRONMENT_TYPE_POPUP]: true, + [ENVIRONMENT_TYPE_NOTIFICATION]: true, + [ENVIRONMENT_TYPE_FULLSCREEN]: true, +}; + +const metamaskBlockedPorts = ['trezor-connect']; + log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'info'); const platform = new ExtensionPlatform(); @@ -73,8 +82,23 @@ const ONE_SECOND_IN_MILLISECONDS = 1_000; // Timeout for initializing phishing warning page. const PHISHING_WARNING_PAGE_TIMEOUT = ONE_SECOND_IN_MILLISECONDS; -// initialization flow -initialize().catch(log.error); +/** + * In case of MV3 we attach a "onConnect" event listener as soon as the application is initialised. + * Reason is that in case of MV3 a delay in doing this was resulting in missing first connect event after service worker is re-activated. + */ + +const initApp = async (remotePort) => { + browser.runtime.onConnect.removeListener(initApp); + await initialize(remotePort); + log.info('MetaMask initialization complete.'); +}; + +if (isManifestV3()) { + browser.runtime.onConnect.addListener(initApp); +} else { + // initialization flow + initialize().catch(log.error); +} /** * @typedef {import('../../shared/constants/transaction').TransactionMeta} TransactionMeta @@ -134,12 +158,13 @@ initialize().catch(log.error); /** * Initializes the MetaMask controller, and sets up all platform configuration. * + * @param {string} remotePort - remote application port connecting to extension. * @returns {Promise} Setup complete. */ -async function initialize() { +async function initialize(remotePort) { const initState = await loadStateFromPersistence(); const initLangCode = await getFirstPreferredLangCode(); - await setupController(initState, initLangCode); + await setupController(initState, initLangCode, remotePort); await loadPhishingWarningPage(); log.info('MetaMask initialization complete.'); } @@ -278,9 +303,10 @@ async function loadStateFromPersistence() { * * @param {Object} initState - The initial state to start the controller with, matches the state that is emitted from the controller. * @param {string} initLangCode - The region code for the language preferred by the current user. + * @param {string} remoteSourcePort - remote application port connecting to extension. * @returns {Promise} After setup is complete. */ -function setupController(initState, initLangCode) { +function setupController(initState, initLangCode, remoteSourcePort) { // // MetaMask Controller // @@ -367,17 +393,13 @@ function setupController(initState, initLangCode) { // // connect to other contexts // + if (isManifestV3() && remoteSourcePort) { + connectRemote(remoteSourcePort); + } + browser.runtime.onConnect.addListener(connectRemote); browser.runtime.onConnectExternal.addListener(connectExternal); - const metamaskInternalProcessHash = { - [ENVIRONMENT_TYPE_POPUP]: true, - [ENVIRONMENT_TYPE_NOTIFICATION]: true, - [ENVIRONMENT_TYPE_FULLSCREEN]: true, - }; - - const metamaskBlockedPorts = ['trezor-connect']; - const isClientOpenStatus = () => { return ( popupIsOpen || @@ -445,6 +467,13 @@ function setupController(initState, initLangCode) { controller.isClientOpen = true; controller.setupTrustedCommunication(portStream, remotePort.sender); + if (isManifestV3()) { + // Message below if captured by UI code in app/scripts/ui.js which will trigger UI initialisation + // This ensures that UI is initialised only after background is ready + // It fixes the issue of blank screen coming when extension is loaded, the issue is very frequent in MV3 + remotePort.postMessage({ name: 'CONNECTION_READY' }); + } + if (processName === ENVIRONMENT_TYPE_POPUP) { popupIsOpen = true; endOfStream(portStream, () => { @@ -566,8 +595,14 @@ function setupController(initState, initLangCode) { if (count) { label = String(count); } - browser.browserAction.setBadgeText({ text: label }); - browser.browserAction.setBadgeBackgroundColor({ color: '#037DD6' }); + // browserAction has been replaced by action in MV3 + if (isManifestV3()) { + browser.action.setBadgeText({ text: label }); + browser.action.setBadgeBackgroundColor({ color: '#037DD6' }); + } else { + browser.browserAction.setBadgeText({ text: label }); + browser.browserAction.setBadgeBackgroundColor({ color: '#037DD6' }); + } } function getUnapprovedTransactionCount() { diff --git a/app/scripts/constants/on-ramp.js b/app/scripts/constants/on-ramp.js index bfce16f70..0d621f46e 100644 --- a/app/scripts/constants/on-ramp.js +++ b/app/scripts/constants/on-ramp.js @@ -1,2 +1,3 @@ export const TRANSAK_API_KEY = '25ac1309-a49b-4411-b20e-5e56c61a5b1c'; // It's a public key, which will be included in a URL for Transak. export const MOONPAY_API_KEY = 'pk_live_WbCpe6PxSIcGPCSd6lKCbJNRht7uy'; // Publishable key. +export const COINBASEPAY_API_KEY = 'ab4b8829-a59d-44d3-accc-de77e4f18df2'; // Publishable key. diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index edbabad33..9cc350d6d 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -6,6 +6,8 @@ import browser from 'webextension-polyfill'; import PortStream from 'extension-port-stream'; import { obj as createThoughStream } from 'through2'; +import { isManifestV3 } from '../../shared/modules/mv3.utils'; + // These require calls need to use require to be statically recognized by browserify const fs = require('fs'); const path = require('path'); @@ -54,7 +56,12 @@ function injectScript(content) { const container = document.head || document.documentElement; const scriptTag = document.createElement('script'); scriptTag.setAttribute('async', 'false'); - scriptTag.textContent = content; + // Inline scripts do not work in MV3 due to more strict security policy + if (isManifestV3()) { + scriptTag.setAttribute('src', browser.runtime.getURL('inpage.js')); + } else { + scriptTag.textContent = content; + } container.insertBefore(scriptTag, container.children[0]); container.removeChild(scriptTag); } catch (error) { diff --git a/app/scripts/controllers/detect-tokens.js b/app/scripts/controllers/detect-tokens.js index 40ccfb5f0..d9cfe9b14 100644 --- a/app/scripts/controllers/detect-tokens.js +++ b/app/scripts/controllers/detect-tokens.js @@ -6,6 +6,9 @@ import { MINUTE } from '../../../shared/constants/time'; import { MAINNET_CHAIN_ID } from '../../../shared/constants/network'; import { isTokenDetectionEnabledForNetwork } from '../../../shared/modules/network.utils'; import { isEqualCaseInsensitive } from '../../../shared/modules/string-utils'; +import { TOKEN_STANDARDS } from '../../../ui/helpers/constants/common'; +import { ASSET_TYPES } from '../../../shared/constants/transaction'; +import { EVENT, EVENT_NAMES } from '../../../shared/constants/metametrics'; // By default, poll every 3 minutes const DEFAULT_INTERVAL = MINUTE * 3; @@ -26,6 +29,7 @@ export default class DetectTokensController { * @param config.tokenList * @param config.tokensController * @param config.assetsContractController + * @param config.trackMetaMetricsEvent */ constructor({ interval = DEFAULT_INTERVAL, @@ -35,6 +39,7 @@ export default class DetectTokensController { tokenList, tokensController, assetsContractController = null, + trackMetaMetricsEvent, } = {}) { this.assetsContractController = assetsContractController; this.tokensController = tokensController; @@ -51,6 +56,7 @@ export default class DetectTokensController { this.detectedTokens = process.env.TOKEN_DETECTION_V2 ? this.tokensController?.state.detectedTokens : []; + this._trackMetaMetricsEvent = trackMetaMetricsEvent; preferences?.store.subscribe(({ selectedAddress, useTokenDetection }) => { if ( @@ -162,6 +168,7 @@ export default class DetectTokensController { let tokensWithBalance = []; if (process.env.TOKEN_DETECTION_V2) { + const eventTokensDetails = []; if (result) { const nonZeroTokenAddresses = Object.keys(result); for (const nonZeroTokenAddress of nonZeroTokenAddresses) { @@ -172,6 +179,9 @@ export default class DetectTokensController { iconUrl, aggregators, } = tokenList[nonZeroTokenAddress]; + + eventTokensDetails.push(`${symbol} - ${address}`); + tokensWithBalance.push({ address, symbol, @@ -180,7 +190,17 @@ export default class DetectTokensController { aggregators, }); } + if (tokensWithBalance.length > 0) { + this._trackMetaMetricsEvent({ + event: EVENT_NAMES.TOKEN_DETECTED, + category: EVENT.CATEGORIES.WALLET, + properties: { + tokens: eventTokensDetails, + token_standard: TOKEN_STANDARDS.ERC20, + asset_type: ASSET_TYPES.TOKEN, + }, + }); await this.tokensController.addDetectedTokens(tokensWithBalance); } } diff --git a/app/scripts/controllers/metametrics.js b/app/scripts/controllers/metametrics.js index 555576d00..8348513c1 100644 --- a/app/scripts/controllers/metametrics.js +++ b/app/scripts/controllers/metametrics.js @@ -1,4 +1,13 @@ -import { isEqual, merge, omit, omitBy, pickBy, size, sum } from 'lodash'; +import { + isEqual, + memoize, + merge, + omit, + omitBy, + pickBy, + size, + sum, +} from 'lodash'; import { ObservableStore } from '@metamask/obs-store'; import { bufferToHex, keccak } from 'ethereumjs-util'; import { generateUUID } from 'pubnub'; @@ -540,9 +549,7 @@ export default class MetaMetricsController { * @returns {MetaMetricsTraits | null} traits that have changed since last update */ _buildUserTraitsObject(metamaskState) { - /** - * @type {MetaMetricsTraits} - */ + /** @type {MetaMetricsTraits} */ const currentTraits = { [TRAITS.ADDRESS_BOOK_ENTRIES]: sum( Object.values(metamaskState.addressBook).map(size), @@ -551,16 +558,29 @@ export default class MetaMetricsController { [TRAITS.NETWORKS_ADDED]: metamaskState.frequentRpcListDetail.map( (rpc) => rpc.chainId, ), + [TRAITS.NETWORKS_WITHOUT_TICKER]: metamaskState.frequentRpcListDetail.reduce( + (networkList, currentNetwork) => { + if (!currentNetwork.ticker) { + networkList.push(currentNetwork.chainId); + } + return networkList; + }, + [], + ), [TRAITS.NFT_AUTODETECTION_ENABLED]: metamaskState.useCollectibleDetection, [TRAITS.NUMBER_OF_ACCOUNTS]: Object.values(metamaskState.identities) .length, - [TRAITS.NUMBER_OF_NFT_COLLECTIONS]: this._getNumberOfNFtCollection( - metamaskState, + [TRAITS.NUMBER_OF_NFT_COLLECTIONS]: this._getAllUniqueNFTAddressesLength( + metamaskState.allCollectibles, ), + [TRAITS.NUMBER_OF_NFTS]: this._getAllNFTsFlattened( + metamaskState.allCollectibles, + ).length, [TRAITS.NUMBER_OF_TOKENS]: this._getNumberOfTokens(metamaskState), [TRAITS.OPENSEA_API_ENABLED]: metamaskState.openSeaEnabled, [TRAITS.THREE_BOX_ENABLED]: metamaskState.threeBoxSyncingAllowed, [TRAITS.THEME]: metamaskState.theme || 'default', + [TRAITS.TOKEN_DETECTION_ENABLED]: metamaskState.useTokenDetection, }; if (!this.previousTraits) { @@ -603,22 +623,33 @@ export default class MetaMetricsController { } /** + * Returns an array of all of the collectibles/NFTs the user + * possesses across all networks and accounts. * - * @param {object} metamaskState - * @returns number of unique collectible addresses + * @param {Object} allCollectibles + * @returns {[]} */ - _getNumberOfNFtCollection(metamaskState) { - const { allCollectibles } = metamaskState; - if (!allCollectibles) { - return 0; - } + _getAllNFTsFlattened = memoize((allCollectibles = {}) => { + return Object.values(allCollectibles) + .reduce((result, chainNFTs) => { + return result.concat(Object.values(chainNFTs)); + }, []) + .flat(); + }); - const allAddresses = Object.values(allCollectibles) - .flatMap((chainCollectibles) => Object.values(chainCollectibles)) - .flat() - .map((collectible) => collectible.address); - const unique = [...new Set(allAddresses)]; - return unique.length; + /** + * Returns the number of unique collectible/NFT addresses the user + * possesses across all networks and accounts. + * + * @param {Object} allCollectibles + * @returns {number} + */ + _getAllUniqueNFTAddressesLength(allCollectibles = {}) { + const allNFTAddresses = this._getAllNFTsFlattened(allCollectibles).map( + (nft) => nft.address, + ); + const uniqueAddresses = new Set(allNFTAddresses); + return uniqueAddresses.size; } /** diff --git a/app/scripts/controllers/metametrics.test.js b/app/scripts/controllers/metametrics.test.js index 37269d6fc..804132295 100644 --- a/app/scripts/controllers/metametrics.test.js +++ b/app/scripts/controllers/metametrics.test.js @@ -9,8 +9,10 @@ import { } from '../../../shared/constants/metametrics'; import waitUntilCalled from '../../../test/lib/wait-until-called'; import { + ETH_SYMBOL, MAINNET_CHAIN_ID, ROPSTEN_CHAIN_ID, + TEST_ETH_SYMBOL, } from '../../../shared/constants/network'; import MetaMetricsController from './metametrics'; import { NETWORK_EVENTS } from './network'; @@ -673,8 +675,9 @@ describe('MetaMetricsController', function () { }, allTokens: MOCK_ALL_TOKENS, frequentRpcListDetail: [ - { chainId: MAINNET_CHAIN_ID }, - { chainId: ROPSTEN_CHAIN_ID }, + { chainId: MAINNET_CHAIN_ID, ticker: ETH_SYMBOL }, + { chainId: ROPSTEN_CHAIN_ID, ticker: TEST_ETH_SYMBOL }, + { chainId: '0xaf' }, ], identities: [{}, {}], ledgerTransportType: 'web-hid', @@ -682,19 +685,23 @@ describe('MetaMetricsController', function () { threeBoxSyncingAllowed: false, useCollectibleDetection: false, theme: 'default', + useTokenDetection: true, }); assert.deepEqual(traits, { [TRAITS.ADDRESS_BOOK_ENTRIES]: 3, [TRAITS.LEDGER_CONNECTION_TYPE]: 'web-hid', - [TRAITS.NETWORKS_ADDED]: [MAINNET_CHAIN_ID, ROPSTEN_CHAIN_ID], + [TRAITS.NETWORKS_ADDED]: [MAINNET_CHAIN_ID, ROPSTEN_CHAIN_ID, '0xaf'], + [TRAITS.NETWORKS_WITHOUT_TICKER]: ['0xaf'], [TRAITS.NFT_AUTODETECTION_ENABLED]: false, [TRAITS.NUMBER_OF_ACCOUNTS]: 2, [TRAITS.NUMBER_OF_NFT_COLLECTIONS]: 3, + [TRAITS.NUMBER_OF_NFTS]: 4, [TRAITS.NUMBER_OF_TOKENS]: 5, [TRAITS.OPENSEA_API_ENABLED]: true, [TRAITS.THREE_BOX_ENABLED]: false, [TRAITS.THEME]: 'default', + [TRAITS.TOKEN_DETECTION_ENABLED]: true, }); }); @@ -716,6 +723,7 @@ describe('MetaMetricsController', function () { threeBoxSyncingAllowed: false, useCollectibleDetection: false, theme: 'default', + useTokenDetection: true, }); const updatedTraits = metaMetricsController._buildUserTraitsObject({ @@ -736,6 +744,7 @@ describe('MetaMetricsController', function () { threeBoxSyncingAllowed: false, useCollectibleDetection: false, theme: 'default', + useTokenDetection: true, }); assert.deepEqual(updatedTraits, { @@ -764,6 +773,7 @@ describe('MetaMetricsController', function () { threeBoxSyncingAllowed: false, useCollectibleDetection: true, theme: 'default', + useTokenDetection: true, }); const updatedTraits = metaMetricsController._buildUserTraitsObject({ @@ -782,6 +792,7 @@ describe('MetaMetricsController', function () { threeBoxSyncingAllowed: false, useCollectibleDetection: true, theme: 'default', + useTokenDetection: true, }); assert.equal(updatedTraits, null); diff --git a/app/scripts/controllers/network/network.js b/app/scripts/controllers/network/network.js index 819474217..cb572773a 100644 --- a/app/scripts/controllers/network/network.js +++ b/app/scripts/controllers/network/network.js @@ -18,6 +18,7 @@ import { MAINNET_CHAIN_ID, RINKEBY_CHAIN_ID, INFURA_BLOCKED_KEY, + TEST_NETWORK_TICKER_MAP, } from '../../../../shared/constants/network'; import { SECOND } from '../../../../shared/constants/time'; import { @@ -41,7 +42,11 @@ if (process.env.IN_TEST) { nickname: 'Localhost 8545', }; } else if (process.env.METAMASK_DEBUG || env === 'test') { - defaultProviderConfigOpts = { type: RINKEBY, chainId: RINKEBY_CHAIN_ID }; + defaultProviderConfigOpts = { + type: RINKEBY, + chainId: RINKEBY_CHAIN_ID, + ticker: TEST_NETWORK_TICKER_MAP.rinkeby, + }; } else { defaultProviderConfigOpts = { type: MAINNET, chainId: MAINNET_CHAIN_ID }; } @@ -296,12 +301,12 @@ export default class NetworkController extends EventEmitter { INFURA_PROVIDER_TYPES.includes(type), `Unknown Infura provider type "${type}".`, ); - const { chainId } = NETWORK_TYPE_TO_ID_MAP[type]; + const { chainId, ticker } = NETWORK_TYPE_TO_ID_MAP[type]; this.setProviderConfig({ type, rpcUrl: '', chainId, - ticker: 'ETH', + ticker: ticker ?? 'ETH', nickname: '', }); } diff --git a/app/scripts/controllers/permissions/flask/snap-permissions.js b/app/scripts/controllers/permissions/flask/snap-permissions.js index bde8c4c91..07024c9ae 100644 --- a/app/scripts/controllers/permissions/flask/snap-permissions.js +++ b/app/scripts/controllers/permissions/flask/snap-permissions.js @@ -1,4 +1,4 @@ -import { endowmentPermissionBuilders } from '@metamask/controllers'; +import { endowmentPermissionBuilders } from '@metamask/snap-controllers'; import { restrictedMethodPermissionBuilders, selectHooks, diff --git a/app/scripts/controllers/permissions/permission-log.js b/app/scripts/controllers/permissions/permission-log.js index f49e9401a..70e8d1c9f 100644 --- a/app/scripts/controllers/permissions/permission-log.js +++ b/app/scripts/controllers/permissions/permission-log.js @@ -1,5 +1,4 @@ import { ObservableStore } from '@metamask/obs-store'; -import stringify from 'fast-safe-stringify'; import { CaveatTypes } from '../../../../shared/constants/permissions'; import { LOG_IGNORE_METHODS, @@ -158,9 +157,7 @@ export class PermissionLogController { ? LOG_METHOD_TYPES.internal : LOG_METHOD_TYPES.restricted, origin: request.origin, - request: stringify(request, null, 2), requestTime: Date.now(), - response: null, responseTime: null, success: null, }; @@ -181,9 +178,12 @@ export class PermissionLogController { return; } - entry.response = stringify(response, null, 2); + // The JSON-RPC 2.0 specification defines "success" by the presence of + // either the "result" or "error" property. The specification forbids + // both properties from being present simultaneously, and our JSON-RPC + // stack is spec-compliant at the time of writing. + entry.success = Object.hasOwnProperty.call(response, 'result'); entry.responseTime = time; - entry.success = !response.error; } /** diff --git a/app/scripts/controllers/permissions/permission-log.test.js b/app/scripts/controllers/permissions/permission-log.test.js index ecbb169dc..4ed46b84c 100644 --- a/app/scripts/controllers/permissions/permission-log.test.js +++ b/app/scripts/controllers/permissions/permission-log.test.js @@ -1,6 +1,5 @@ import nanoid from 'nanoid'; import { useFakeTimers } from 'sinon'; -import stringify from 'fast-safe-stringify'; import { constants, getters, noop } from '../../../../test/mocks/permissions'; import { PermissionLogController } from './permission-log'; import { LOG_LIMIT, LOG_METHOD_TYPES } from './enums'; @@ -67,7 +66,7 @@ describe('PermissionLogController', () => { req = RPC_REQUESTS.test_method(SUBJECTS.a.origin); req.id = REQUEST_IDS.a; - res = { foo: 'bar' }; + res = { result: 'bar' }; logMiddleware({ ...req }, res); @@ -143,11 +142,17 @@ describe('PermissionLogController', () => { false, ); - // validate final state + // Validate final state expect(entry1).toStrictEqual(log[0]); expect(entry2).toStrictEqual(log[1]); expect(entry3).toStrictEqual(log[2]); expect(entry4).toStrictEqual(log[3]); + + // Regression test: ensure "response" and "request" properties + // are not present + log.forEach((entry) => + expect('request' in entry && 'response' in entry).toBe(false), + ); }); it('handles responses added out of order', () => { @@ -163,15 +168,15 @@ describe('PermissionLogController', () => { // get make requests req.id = id1; - const res1 = { foo: id1 }; + const res1 = { result: id1 }; logMiddleware({ ...req }, { ...res1 }, getSavedMockNext(handlerArray)); req.id = id2; - const res2 = { foo: id2 }; + const res2 = { result: id2 }; logMiddleware({ ...req }, { ...res2 }, getSavedMockNext(handlerArray)); req.id = id3; - const res3 = { foo: id3 }; + const res3 = { result: id3 }; logMiddleware({ ...req }, { ...res3 }, getSavedMockNext(handlerArray)); // verify log state @@ -181,10 +186,10 @@ describe('PermissionLogController', () => { const entry2 = log[1]; const entry3 = log[2]; - // all entries should be in correct order, without responses - expect(entry1).toMatchObject({ id: id1, response: null }); - expect(entry2).toMatchObject({ id: id2, response: null }); - expect(entry3).toMatchObject({ id: id3, response: null }); + // all entries should be in correct order + expect(entry1).toMatchObject({ id: id1, responseTime: null }); + expect(entry2).toMatchObject({ id: id2, responseTime: null }); + expect(entry3).toMatchObject({ id: id3, responseTime: null }); // call response handlers for (const i of [1, 2, 0]) { @@ -226,7 +231,7 @@ describe('PermissionLogController', () => { it('handles a lack of response', () => { let req = RPC_REQUESTS.test_method(SUBJECTS.a.origin); req.id = REQUEST_IDS.a; - let res = { foo: 'bar' }; + let res = { result: 'bar' }; // noop for next handler prevents recording of response logMiddleware({ ...req }, res, noop); @@ -270,7 +275,7 @@ describe('PermissionLogController', () => { let log = permLog.getActivityLog(); expect(log).toHaveLength(0); - const res = { foo: 'bar' }; + const res = { result: 'bar' }; const req1 = RPC_REQUESTS.metamask_sendDomainMetadata( SUBJECTS.c.origin, 'foobar', @@ -288,7 +293,7 @@ describe('PermissionLogController', () => { it('enforces log limit', () => { const req = RPC_REQUESTS.test_method(SUBJECTS.a.origin); - const res = { foo: 'bar' }; + const res = { result: 'bar' }; // max out log let lastId; @@ -647,19 +652,15 @@ function validateActivityEntry(entry, req, res, methodType, success) { expect(entry.method).toStrictEqual(req.method); expect(entry.origin).toStrictEqual(req.origin); expect(entry.methodType).toStrictEqual(methodType); - expect(entry.request).toStrictEqual(stringify(req, null, 2)); expect(Number.isInteger(entry.requestTime)).toBe(true); if (res) { expect(Number.isInteger(entry.responseTime)).toBe(true); expect(entry.requestTime <= entry.responseTime).toBe(true); - expect(entry.success).toStrictEqual(success); - expect(entry.response).toStrictEqual(stringify(res, null, 2)); } else { expect(entry.requestTime > 0).toBe(true); expect(entry).toMatchObject({ - response: null, responseTime: null, success: null, }); diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 2b0fdbb41..706260b24 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -68,7 +68,7 @@ export default class PreferencesController { ledgerTransportType: window.navigator.hid ? LEDGER_TRANSPORT_TYPES.WEBHID : LEDGER_TRANSPORT_TYPES.U2F, - theme: 'default', + theme: 'light', ...opts.initState, }; diff --git a/app/scripts/controllers/preferences.test.js b/app/scripts/controllers/preferences.test.js index 10e7ba215..407b95b0e 100644 --- a/app/scripts/controllers/preferences.test.js +++ b/app/scripts/controllers/preferences.test.js @@ -353,14 +353,14 @@ describe('preferences controller', function () { }); describe('setTheme', function () { - it('should default to value "default"', function () { + it('should default to value "light"', function () { const state = preferencesController.store.getState(); - assert.equal(state.theme, 'default'); + assert.equal(state.theme, 'light'); }); it('should set the setTheme property in state', function () { const state = preferencesController.store.getState(); - assert.equal(state.theme, 'default'); + assert.equal(state.theme, 'light'); preferencesController.setTheme('dark'); assert.equal(preferencesController.store.getState().theme, 'dark'); }); diff --git a/app/scripts/controllers/swaps.js b/app/scripts/controllers/swaps.js index e4df14746..f19da6ff1 100644 --- a/app/scripts/controllers/swaps.js +++ b/app/scripts/controllers/swaps.js @@ -19,6 +19,11 @@ import { SWAPS_CHAINID_CONTRACT_ADDRESS_MAP, } from '../../../shared/constants/swaps'; import { GAS_ESTIMATE_TYPES } from '../../../shared/constants/gas'; +import { + FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, + FALLBACK_SMART_TRANSACTIONS_DEADLINE, + FALLBACK_SMART_TRANSACTIONS_MAX_FEE_MULTIPLIER, +} from '../../../shared/constants/smartTransactions'; import { isSwapsDefaultTokenAddress } from '../../../shared/modules/swaps.utils'; @@ -41,8 +46,6 @@ const POLL_COUNT_LIMIT = 3; // If for any reason the MetaSwap API fails to provide a refresh time, // provide a reasonable fallback to avoid further errors const FALLBACK_QUOTE_REFRESH_TIME = MINUTE; -const FALLBACK_SMART_TRANSACTION_REFRESH_TIME = SECOND * 10; -const FALLBACK_SMART_TRANSACTIONS_DEADLINE = 180; function calculateGasEstimateWithRefund( maxGas = MAX_GAS_LIMIT, @@ -86,8 +89,9 @@ const initialState = { saveFetchedQuotes: false, swapsQuoteRefreshTime: FALLBACK_QUOTE_REFRESH_TIME, swapsQuotePrefetchingRefreshTime: FALLBACK_QUOTE_REFRESH_TIME, - swapsStxBatchStatusRefreshTime: FALLBACK_SMART_TRANSACTION_REFRESH_TIME, - swapsStxGetTransactionsRefreshTime: FALLBACK_SMART_TRANSACTION_REFRESH_TIME, + swapsStxBatchStatusRefreshTime: FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, + swapsStxGetTransactionsRefreshTime: FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, + swapsStxMaxFeeMultiplier: FALLBACK_SMART_TRANSACTIONS_MAX_FEE_MULTIPLIER, swapsFeatureFlags: {}, }, }; @@ -129,13 +133,13 @@ export default class SwapsController { }); } - async fetchSwapsRefreshRates(chainId) { + async fetchSwapsNetworkConfig(chainId) { const response = await fetchWithCache( getBaseApi('network', chainId), { method: 'GET' }, { cacheRefreshTime: 600000 }, ); - const { refreshRates } = response || {}; + const { refreshRates, parameters = {} } = response || {}; if ( !refreshRates || typeof refreshRates.quotes !== 'number' || @@ -152,35 +156,39 @@ export default class SwapsController { stxGetTransactions: refreshRates.stxGetTransactions * 1000, stxBatchStatus: refreshRates.stxBatchStatus * 1000, stxStatusDeadline: refreshRates.stxStatusDeadline, + stxMaxFeeMultiplier: parameters.stxMaxFeeMultiplier, }; } - // Sets the refresh rate for quote updates from the MetaSwap API - async _setSwapsRefreshRates() { + // Sets the network config from the MetaSwap API. + async _setSwapsNetworkConfig() { const chainId = this._getCurrentChainId(); - let swapsRefreshRates; + let swapsNetworkConfig; try { - swapsRefreshRates = await this.fetchSwapsRefreshRates(chainId); + swapsNetworkConfig = await this.fetchSwapsNetworkConfig(chainId); } catch (e) { - console.error('Request for swaps quote refresh time failed: ', e); + console.error('Request for Swaps network config failed: ', e); } const { swapsState: latestSwapsState } = this.store.getState(); this.store.updateState({ swapsState: { ...latestSwapsState, swapsQuoteRefreshTime: - swapsRefreshRates?.quotes || FALLBACK_QUOTE_REFRESH_TIME, + swapsNetworkConfig?.quotes || FALLBACK_QUOTE_REFRESH_TIME, swapsQuotePrefetchingRefreshTime: - swapsRefreshRates?.quotesPrefetching || FALLBACK_QUOTE_REFRESH_TIME, + swapsNetworkConfig?.quotesPrefetching || FALLBACK_QUOTE_REFRESH_TIME, swapsStxGetTransactionsRefreshTime: - swapsRefreshRates?.stxGetTransactions || - FALLBACK_SMART_TRANSACTION_REFRESH_TIME, + swapsNetworkConfig?.stxGetTransactions || + FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, swapsStxBatchStatusRefreshTime: - swapsRefreshRates?.stxBatchStatus || - FALLBACK_SMART_TRANSACTION_REFRESH_TIME, + swapsNetworkConfig?.stxBatchStatus || + FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, swapsStxStatusDeadline: - swapsRefreshRates?.stxStatusDeadline || + swapsNetworkConfig?.stxStatusDeadline || FALLBACK_SMART_TRANSACTIONS_DEADLINE, + swapsStxMaxFeeMultiplier: + swapsNetworkConfig?.stxMaxFeeMultiplier || + FALLBACK_SMART_TRANSACTIONS_MAX_FEE_MULTIPLIER, }, }); } @@ -253,7 +261,7 @@ export default class SwapsController { this._fetchTradesInfo(fetchParams, { ...fetchParamsMetaData, }), - this._setSwapsRefreshRates(), + this._setSwapsNetworkConfig(), ]); const { diff --git a/app/scripts/controllers/swaps.test.js b/app/scripts/controllers/swaps.test.js index 3a13bf942..f8f580c4d 100644 --- a/app/scripts/controllers/swaps.test.js +++ b/app/scripts/controllers/swaps.test.js @@ -13,6 +13,10 @@ import { ETH_SWAPS_TOKEN_OBJECT } from '../../../shared/constants/swaps'; import { createTestProviderTools } from '../../../test/stub/provider'; import { SECOND } from '../../../shared/constants/time'; import { GAS_ESTIMATE_TYPES } from '../../../shared/constants/gas'; +import { + FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, + FALLBACK_SMART_TRANSACTIONS_MAX_FEE_MULTIPLIER, +} from '../../../shared/constants/smartTransactions'; import SwapsController, { utils } from './swaps'; import { NETWORK_EVENTS } from './network'; @@ -134,8 +138,9 @@ const EMPTY_INIT_STATE = { swapsFeatureFlags: {}, swapsQuoteRefreshTime: 60000, swapsQuotePrefetchingRefreshTime: 60000, - swapsStxBatchStatusRefreshTime: 10000, - swapsStxGetTransactionsRefreshTime: 10000, + swapsStxBatchStatusRefreshTime: FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, + swapsStxGetTransactionsRefreshTime: FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME, + swapsStxMaxFeeMultiplier: FALLBACK_SMART_TRANSACTIONS_MAX_FEE_MULTIPLIER, swapsUserFeeLevel: '', saveFetchedQuotes: false, }, diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 27cf59277..0a0d720d5 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -18,10 +18,12 @@ import { getChainType, } from '../../lib/util'; import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/helpers/constants/error-keys'; +import { calcGasTotal } from '../../../../ui/pages/send/send.utils'; import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/pages/swaps/swaps.util'; import { hexWEIToDecGWEI, decimalToHex, + hexWEIToDecETH, } from '../../../../ui/helpers/utils/conversions.util'; import { TRANSACTION_STATUSES, @@ -39,6 +41,7 @@ import { PRIORITY_LEVELS, } from '../../../../shared/constants/gas'; import { decGWEIToHexWEI } from '../../../../shared/modules/conversion.utils'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { HARDFORKS, MAINNET, @@ -50,6 +53,7 @@ import { determineTransactionType, isEIP1559Transaction, } from '../../../../shared/modules/transaction.utils'; +import { ORIGIN_METAMASK } from '../../../../shared/constants/app'; import TransactionStateManager from './tx-state-manager'; import TxGasUtil from './tx-gas-utils'; import PendingTransactionTracker from './pending-tx-tracker'; @@ -62,6 +66,15 @@ const SWAP_TRANSACTION_TYPES = [ TRANSACTION_TYPES.SWAP_APPROVAL, ]; +// Only certain types of transactions should be allowed to be specified when +// adding a new unapproved transaction. +const VALID_UNAPPROVED_TRANSACTION_TYPES = [ + ...SWAP_TRANSACTION_TYPES, + TRANSACTION_TYPES.SIMPLE_SEND, + TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER, + TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER_FROM, +]; + /** * @typedef {import('../../../../shared/constants/transaction').TransactionMeta} TransactionMeta * @typedef {import('../../../../shared/constants/transaction').TransactionMetaMetricsEventString} TransactionMetaMetricsEventString @@ -432,7 +445,7 @@ export default class TransactionController extends EventEmitter { * @param {string} editableParams.gasPrice * @returns {TransactionMeta} the txMeta of the updated transaction */ - updateEditableParams(txId, { data, from, to, value, gas, gasPrice }) { + async updateEditableParams(txId, { data, from, to, value, gas, gasPrice }) { this._throwErrorIfNotUnapprovedTx(txId, 'updateEditableParams'); const editableParams = { @@ -448,7 +461,20 @@ export default class TransactionController extends EventEmitter { // only update what is defined editableParams.txParams = pickBy(editableParams.txParams); + + // update transaction type in case it has changes + const transactionBeforeEdit = this._getTransaction(txId); + const { type } = await determineTransactionType( + { + ...transactionBeforeEdit.txParams, + ...editableParams.txParams, + }, + this.query, + ); + editableParams.type = type; + const note = `Update Editable Params for ${txId}`; + this._updateTransaction(txId, editableParams, note); return this._getTransaction(txId); } @@ -636,6 +662,35 @@ export default class TransactionController extends EventEmitter { return this._getTransaction(txId); } + /** + * append new sendFlowHistory to the transaction with id if the transaction + * state is unapproved. Returns the updated transaction. + * + * @param {string} txId - transaction id + * @param {Array<{ entry: string, timestamp: number }>} sendFlowHistory - + * history to add to the sendFlowHistory property of txMeta. + * @returns {TransactionMeta} the txMeta of the updated transaction + */ + updateTransactionSendFlowHistory(txId, sendFlowHistory) { + this._throwErrorIfNotUnapprovedTx(txId, 'updateTransactionSendFlowHistory'); + const txMeta = this._getTransaction(txId); + + // only update what is defined + const note = `Update sendFlowHistory for ${txId}`; + + this.txStateManager.updateTransaction( + { + ...txMeta, + sendFlowHistory: [ + ...(txMeta?.sendFlowHistory ?? []), + ...sendFlowHistory, + ], + }, + note, + ); + return this._getTransaction(txId); + } + // ==================================================================================================================================================== /** @@ -645,12 +700,18 @@ export default class TransactionController extends EventEmitter { * @param txParams * @param origin * @param transactionType + * @param sendFlowHistory * @returns {txMeta} */ - async addUnapprovedTransaction(txParams, origin, transactionType) { + async addUnapprovedTransaction( + txParams, + origin, + transactionType, + sendFlowHistory = [], + ) { if ( transactionType !== undefined && - !SWAP_TRANSACTION_TYPES.includes(transactionType) + !VALID_UNAPPROVED_TRANSACTION_TYPES.includes(transactionType) ) { throw new Error( `TransactionController - invalid transactionType value: ${transactionType}`, @@ -672,9 +733,10 @@ export default class TransactionController extends EventEmitter { let txMeta = this.txStateManager.generateTxMeta({ txParams: normalizedTxParams, origin, + sendFlowHistory, }); - if (origin === 'metamask') { + if (origin === ORIGIN_METAMASK) { // Assert the from address is the selected address if (normalizedTxParams.from !== this.getSelectedAddress()) { throw ethErrors.rpc.internal({ @@ -783,7 +845,7 @@ export default class TransactionController extends EventEmitter { // then we set maxFeePerGas and maxPriorityFeePerGas to the suggested gasPrice. txMeta.txParams.maxFeePerGas = txMeta.txParams.gasPrice; txMeta.txParams.maxPriorityFeePerGas = txMeta.txParams.gasPrice; - if (eip1559V2Enabled && txMeta.origin !== 'metamask') { + if (eip1559V2Enabled && txMeta.origin !== ORIGIN_METAMASK) { txMeta.userFeeLevel = PRIORITY_LEVELS.DAPP_SUGGESTED; } else { txMeta.userFeeLevel = CUSTOM_GAS_ESTIMATE; @@ -794,7 +856,7 @@ export default class TransactionController extends EventEmitter { defaultMaxPriorityFeePerGas && !txMeta.txParams.maxFeePerGas && !txMeta.txParams.maxPriorityFeePerGas) || - txMeta.origin === 'metamask' + txMeta.origin === ORIGIN_METAMASK ) { txMeta.userFeeLevel = GAS_RECOMMENDATIONS.MEDIUM; } else if (eip1559V2Enabled) { @@ -1779,7 +1841,10 @@ export default class TransactionController extends EventEmitter { txMeta, 'transactions/pending-tx-tracker#event: tx:confirmed reference to confirmed txHash with same nonce', ); - this._dropTransaction(otherTxMeta.id); + // Drop any transaction that wasn't previously failed (off chain failure) + if (otherTxMeta.status !== TRANSACTION_STATUSES.FAILED) { + this._dropTransaction(otherTxMeta.id); + } }); } @@ -1827,13 +1892,37 @@ export default class TransactionController extends EventEmitter { this.memStore.updateState({ unapprovedTxs, currentNetworkTxList }); } + _calculateTransactionsCost(txMeta, approvalTxMeta) { + let approvalGasCost = '0x0'; + if (approvalTxMeta?.txReceipt) { + approvalGasCost = calcGasTotal( + approvalTxMeta.txReceipt.gasUsed, + approvalTxMeta.txReceipt.effectiveGasPrice, + ); + } + const tradeGasCost = calcGasTotal( + txMeta.txReceipt.gasUsed, + txMeta.txReceipt.effectiveGasPrice, + ); + const tradeAndApprovalGasCost = new BigNumber(tradeGasCost, 16) + .plus(approvalGasCost, 16) + .toString(16); + return { + approvalGasCostInEth: Number(hexWEIToDecETH(approvalGasCost)), + tradeGasCostInEth: Number(hexWEIToDecETH(tradeGasCost)), + tradeAndApprovalGasCostInEth: Number( + hexWEIToDecETH(tradeAndApprovalGasCost), + ), + }; + } + _trackSwapsMetrics(txMeta, approvalTxMeta) { if (this._getParticipateInMetrics() && txMeta.swapMetaData) { if (txMeta.txReceipt.status === '0x0') { this._trackMetaMetricsEvent({ event: 'Swap Failed', sensitiveProperties: { ...txMeta.swapMetaData }, - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, }); } else { const tokensReceived = getSwapsTokensReceivedFromTxMeta( @@ -1861,14 +1950,23 @@ export default class TransactionController extends EventEmitter { .round(2)}%` : null; + const transactionsCost = this._calculateTransactionsCost( + txMeta, + approvalTxMeta, + ); + this._trackMetaMetricsEvent({ event: 'Swap Completed', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, sensitiveProperties: { ...txMeta.swapMetaData, token_to_amount_received: tokensReceived, quote_vs_executionRatio: quoteVsExecutionRatio, estimated_vs_used_gasRatio: estimatedVsUsedGasRatio, + approval_gas_cost_in_eth: transactionsCost.approvalGasCostInEth, + trade_gas_cost_in_eth: transactionsCost.tradeGasCostInEth, + trade_and_approval_gas_cost_in_eth: + transactionsCost.tradeAndApprovalGasCostInEth, }, }); } @@ -1893,7 +1991,7 @@ export default class TransactionController extends EventEmitter { defaultGasEstimates, metamaskNetworkId: network, } = txMeta; - const source = referrer === 'metamask' ? 'user' : 'dapp'; + const source = referrer === ORIGIN_METAMASK ? 'user' : 'dapp'; const { assetType, tokenStandard } = await determineTransactionAssetType( txMeta, @@ -1955,6 +2053,10 @@ export default class TransactionController extends EventEmitter { gasParams.estimate_used = estimateUsed; } + if (extraParams?.gas_used) { + gasParams.gas_used = extraParams.gas_used; + } + const gasParamsInGwei = this._getGasValuesInGWEI(gasParams); let eip1559Version = '0'; @@ -1985,8 +2087,8 @@ export default class TransactionController extends EventEmitter { : TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, first_seen: time, gas_limit: gasLimit, - ...gasParamsInGwei, ...extraParams, + ...gasParamsInGwei, }; return { properties, sensitiveProperties }; @@ -2036,7 +2138,7 @@ export default class TransactionController extends EventEmitter { // occur. case TRANSACTION_EVENTS.ADDED: this.createEventFragment({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, initialEvent: TRANSACTION_EVENTS.ADDED, successEvent: TRANSACTION_EVENTS.APPROVED, failureEvent: TRANSACTION_EVENTS.REJECTED, @@ -2057,7 +2159,7 @@ export default class TransactionController extends EventEmitter { case TRANSACTION_EVENTS.APPROVED: case TRANSACTION_EVENTS.REJECTED: this.createEventFragment({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, successEvent: TRANSACTION_EVENTS.APPROVED, failureEvent: TRANSACTION_EVENTS.REJECTED, properties, @@ -2078,7 +2180,7 @@ export default class TransactionController extends EventEmitter { // properties to the transaction event. case TRANSACTION_EVENTS.SUBMITTED: this.createEventFragment({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, initialEvent: TRANSACTION_EVENTS.SUBMITTED, successEvent: TRANSACTION_EVENTS.FINALIZED, properties, @@ -2097,7 +2199,7 @@ export default class TransactionController extends EventEmitter { // fragment does not exist. case TRANSACTION_EVENTS.FINALIZED: this.createEventFragment({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, successEvent: TRANSACTION_EVENTS.FINALIZED, properties, sensitiveProperties, diff --git a/app/scripts/controllers/transactions/index.test.js b/app/scripts/controllers/transactions/index.test.js index ce0a3339f..422aaadd7 100644 --- a/app/scripts/controllers/transactions/index.test.js +++ b/app/scripts/controllers/transactions/index.test.js @@ -10,6 +10,7 @@ import { getTestAccounts, } from '../../../../test/stub/provider'; import mockEstimates from '../../../../test/data/mock-estimates.json'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { TRANSACTION_STATUSES, TRANSACTION_TYPES, @@ -26,6 +27,7 @@ import { import { TRANSACTION_ENVELOPE_TYPE_NAMES } from '../../../../ui/helpers/constants/transactions'; import { METAMASK_CONTROLLER_EVENTS } from '../../metamask-controller'; import { TOKEN_STANDARDS } from '../../../../ui/helpers/constants/common'; +import { ORIGIN_METAMASK } from '../../../../shared/constants/app'; import TransactionController from '.'; const noop = () => true; @@ -791,7 +793,7 @@ describe('Transaction Controller', function () { }, type: TRANSACTION_TYPES.SIMPLE_SEND, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, - origin: 'metamask', + origin: ORIGIN_METAMASK, chainId: currentChainId, time: 1624408066355, metamaskNetworkId: currentNetworkId, @@ -1442,7 +1444,7 @@ describe('Transaction Controller', function () { nonce: '0x4b', }, type: TRANSACTION_TYPES.SIMPLE_SEND, - origin: 'metamask', + origin: ORIGIN_METAMASK, chainId: currentChainId, time: 1624408066355, metamaskNetworkId: currentNetworkId, @@ -1459,7 +1461,7 @@ describe('Transaction Controller', function () { successEvent: 'Transaction Approved', failureEvent: 'Transaction Rejected', uniqueIdentifier: 'transaction-added-1', - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, persist: true, properties: { chain_id: '0x2a', @@ -1467,8 +1469,8 @@ describe('Transaction Controller', function () { gas_edit_attempted: 'none', gas_edit_type: 'none', network: '42', - referrer: 'metamask', - source: 'user', + referrer: ORIGIN_METAMASK, + source: EVENT.SOURCE.TRANSACTION.USER, type: TRANSACTION_TYPES.SIMPLE_SEND, account_type: 'MetaMask', asset_type: ASSET_TYPES.NATIVE, @@ -1538,7 +1540,7 @@ describe('Transaction Controller', function () { initialEvent: 'Transaction Submitted', successEvent: 'Transaction Finalized', uniqueIdentifier: 'transaction-submitted-1', - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, persist: true, properties: { chain_id: '0x2a', @@ -1546,8 +1548,8 @@ describe('Transaction Controller', function () { gas_edit_attempted: 'none', gas_edit_type: 'none', network: '42', - referrer: 'metamask', - source: 'user', + referrer: ORIGIN_METAMASK, + source: EVENT.SOURCE.TRANSACTION.USER, type: TRANSACTION_TYPES.SIMPLE_SEND, account_type: 'MetaMask', asset_type: ASSET_TYPES.NATIVE, @@ -1627,7 +1629,7 @@ describe('Transaction Controller', function () { successEvent: 'Transaction Approved', failureEvent: 'Transaction Rejected', uniqueIdentifier: 'transaction-added-1', - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, persist: true, properties: { chain_id: '0x2a', @@ -1636,7 +1638,7 @@ describe('Transaction Controller', function () { gas_edit_type: 'none', network: '42', referrer: 'other', - source: 'dapp', + source: EVENT.SOURCE.TRANSACTION.DAPP, type: TRANSACTION_TYPES.SIMPLE_SEND, account_type: 'MetaMask', asset_type: ASSET_TYPES.NATIVE, @@ -1708,7 +1710,7 @@ describe('Transaction Controller', function () { initialEvent: 'Transaction Submitted', successEvent: 'Transaction Finalized', uniqueIdentifier: 'transaction-submitted-1', - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, persist: true, properties: { chain_id: '0x2a', @@ -1717,7 +1719,7 @@ describe('Transaction Controller', function () { gas_edit_type: 'none', network: '42', referrer: 'other', - source: 'dapp', + source: EVENT.SOURCE.TRANSACTION.DAPP, type: TRANSACTION_TYPES.SIMPLE_SEND, account_type: 'MetaMask', asset_type: ASSET_TYPES.NATIVE, @@ -1789,7 +1791,7 @@ describe('Transaction Controller', function () { successEvent: 'Transaction Approved', failureEvent: 'Transaction Rejected', uniqueIdentifier: 'transaction-added-1', - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, persist: true, properties: { chain_id: '0x2a', @@ -1798,7 +1800,7 @@ describe('Transaction Controller', function () { gas_edit_type: 'none', network: '42', referrer: 'other', - source: 'dapp', + source: EVENT.SOURCE.TRANSACTION.DAPP, type: TRANSACTION_TYPES.SIMPLE_SEND, account_type: 'MetaMask', asset_type: ASSET_TYPES.NATIVE, @@ -1853,11 +1855,11 @@ describe('Transaction Controller', function () { failureEvent: 'Transaction Rejected', uniqueIdentifier: 'transaction-added-1', persist: true, - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, properties: { network: '42', referrer: 'other', - source: 'dapp', + source: EVENT.SOURCE.TRANSACTION.DAPP, type: TRANSACTION_TYPES.SIMPLE_SEND, chain_id: '0x2a', eip_1559_version: '0', @@ -1926,7 +1928,7 @@ describe('Transaction Controller', function () { failureEvent: 'Transaction Rejected', uniqueIdentifier: 'transaction-added-1', persist: true, - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, properties: { chain_id: '0x2a', eip_1559_version: '1', @@ -1934,7 +1936,7 @@ describe('Transaction Controller', function () { gas_edit_type: 'none', network: '42', referrer: 'other', - source: 'dapp', + source: EVENT.SOURCE.TRANSACTION.DAPP, type: TRANSACTION_TYPES.SIMPLE_SEND, account_type: 'MetaMask', asset_type: ASSET_TYPES.NATIVE, @@ -2243,4 +2245,125 @@ describe('Transaction Controller', function () { assert.equal(result.destinationTokenAddress, VALID_ADDRESS_TWO); // not updated even though it's passed in to update }); }); + + describe('updateEditableParams', function () { + let txStateManager; + + beforeEach(function () { + txStateManager = txController.txStateManager; + txStateManager.addTransaction({ + id: '1', + status: TRANSACTION_STATUSES.UNAPPROVED, + metamaskNetworkId: currentNetworkId, + txParams: { + gas: '0x001', + gasPrice: '0x002', + // max fees can not be mixed with gasPrice + // maxPriorityFeePerGas: '0x003', + // maxFeePerGas: '0x004', + to: VALID_ADDRESS, + from: VALID_ADDRESS, + }, + estimateUsed: '0x005', + estimatedBaseFee: '0x006', + decEstimatedBaseFee: '6', + type: 'simpleSend', + userEditedGasLimit: '0x008', + userFeeLevel: 'medium', + }); + }); + + it('updates editible params when type changes from simple send to token transfer', async function () { + // test update gasFees + await txController.updateEditableParams('1', { + data: + '0xa9059cbb000000000000000000000000e18035bf8712672935fdb4e5e431b1a0183d2dfc0000000000000000000000000000000000000000000000000de0b6b3a7640000', + }); + const result = txStateManager.getTransaction('1'); + assert.equal( + result.txParams.data, + '0xa9059cbb000000000000000000000000e18035bf8712672935fdb4e5e431b1a0183d2dfc0000000000000000000000000000000000000000000000000de0b6b3a7640000', + ); + assert.equal(result.type, TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER); + }); + + it('updates editible params when type changes from token transfer to simple send', async function () { + // test update gasFees + txStateManager.addTransaction({ + id: '2', + status: TRANSACTION_STATUSES.UNAPPROVED, + metamaskNetworkId: currentNetworkId, + txParams: { + gas: '0x001', + gasPrice: '0x002', + // max fees can not be mixed with gasPrice + // maxPriorityFeePerGas: '0x003', + // maxFeePerGas: '0x004', + to: VALID_ADDRESS, + from: VALID_ADDRESS, + data: + '0xa9059cbb000000000000000000000000e18035bf8712672935fdb4e5e431b1a0183d2dfc0000000000000000000000000000000000000000000000000de0b6b3a7640000', + }, + estimateUsed: '0x005', + estimatedBaseFee: '0x006', + decEstimatedBaseFee: '6', + type: TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER, + userEditedGasLimit: '0x008', + userFeeLevel: 'medium', + }); + await txController.updateEditableParams('2', { + data: '0x', + }); + const result = txStateManager.getTransaction('2'); + assert.equal(result.txParams.data, '0x'); + assert.equal(result.type, TRANSACTION_TYPES.SIMPLE_SEND); + }); + + it('updates editible params when type changes from simpleSend to contract interaction', async function () { + // test update gasFees + txStateManager.addTransaction({ + id: '3', + status: TRANSACTION_STATUSES.UNAPPROVED, + metamaskNetworkId: currentNetworkId, + txParams: { + gas: '0x001', + gasPrice: '0x002', + // max fees can not be mixed with gasPrice + // maxPriorityFeePerGas: '0x003', + // maxFeePerGas: '0x004', + to: VALID_ADDRESS, + from: VALID_ADDRESS, + }, + estimateUsed: '0x005', + estimatedBaseFee: '0x006', + decEstimatedBaseFee: '6', + type: TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER, + userEditedGasLimit: '0x008', + userFeeLevel: 'medium', + }); + providerResultStub.eth_getCode = '0x5'; + await txController.updateEditableParams('3', { + data: '0x123', + }); + const result = txStateManager.getTransaction('3'); + assert.equal(result.txParams.data, '0x123'); + assert.equal(result.type, TRANSACTION_TYPES.CONTRACT_INTERACTION); + }); + + it('updates editible params when type does not change', async function () { + // test update gasFees + await txController.updateEditableParams('1', { + data: '0x123', + gas: '0xabc', + from: VALID_ADDRESS_TWO, + }); + const result = txStateManager.getTransaction('1'); + assert.equal(result.txParams.data, '0x123'); + assert.equal(result.txParams.gas, '0xabc'); + assert.equal(result.txParams.from, VALID_ADDRESS_TWO); + assert.equal(result.txParams.to, VALID_ADDRESS); + assert.equal(result.txParams.gasPrice, '0x002'); + assert.equal(result.type, TRANSACTION_TYPES.SIMPLE_SEND); + }); + }); }); diff --git a/app/scripts/controllers/transactions/tx-state-manager.js b/app/scripts/controllers/transactions/tx-state-manager.js index d59b5a058..33e23bbf8 100644 --- a/app/scripts/controllers/transactions/tx-state-manager.js +++ b/app/scripts/controllers/transactions/tx-state-manager.js @@ -6,6 +6,7 @@ import createId from '../../../../shared/modules/random-id'; import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction'; import { METAMASK_CONTROLLER_EVENTS } from '../../metamask-controller'; import { transactionMatchesNetwork } from '../../../../shared/modules/transaction.utils'; +import { ORIGIN_METAMASK } from '../../../../shared/constants/app'; import { generateHistoryEntry, replayHistory, @@ -92,7 +93,7 @@ export default class TransactionStateManager extends EventEmitter { if ( opts.txParams && typeof opts.origin === 'string' && - opts.origin !== 'metamask' + opts.origin !== ORIGIN_METAMASK ) { if (typeof opts.txParams.gasPrice !== 'undefined') { dappSuggestedGasFees = { @@ -126,6 +127,7 @@ export default class TransactionStateManager extends EventEmitter { chainId, loadingDefaults: true, dappSuggestedGasFees, + sendFlowHistory: [], ...opts, }; } diff --git a/app/scripts/controllers/transactions/tx-state-manager.test.js b/app/scripts/controllers/transactions/tx-state-manager.test.js index d22d5ad07..ba3dd6be2 100644 --- a/app/scripts/controllers/transactions/tx-state-manager.test.js +++ b/app/scripts/controllers/transactions/tx-state-manager.test.js @@ -11,6 +11,7 @@ import { KOVAN_NETWORK_ID, } from '../../../../shared/constants/network'; import { GAS_LIMITS } from '../../../../shared/constants/gas'; +import { ORIGIN_METAMASK } from '../../../../shared/constants/app'; import TxStateManager from './tx-state-manager'; import { snapshotFromTxMeta } from './lib/tx-state-history-helpers'; @@ -1188,7 +1189,7 @@ describe('TransactionStateManager', function () { }; const generatedTransaction = txStateManager.generateTxMeta({ txParams, - origin: 'metamask', + origin: ORIGIN_METAMASK, }); assert.ok(generatedTransaction); assert.strictEqual(generatedTransaction.dappSuggestedGasFees, null); diff --git a/app/scripts/detect-multiple-instances.js b/app/scripts/detect-multiple-instances.js new file mode 100644 index 000000000..d4d4544d2 --- /dev/null +++ b/app/scripts/detect-multiple-instances.js @@ -0,0 +1,55 @@ +/** + * Sets up two-way communication between the + * mainline version of extension and Flask build + * in order to detect & warn if there are two different + * versions running simultaneously. + */ + +import browser from 'webextension-polyfill'; +import { + PLATFORM_CHROME, + PLATFORM_FIREFOX, + CHROME_BUILD_IDS, + FIREFOX_BUILD_IDS, +} from '../../shared/constants/app'; +import { getPlatform } from './lib/util'; + +const MESSAGE_TEXT = 'isRunning'; + +const showWarning = () => + console.warn('Warning! You have multiple instances of MetaMask running!'); + +/** + * Handles the ping message sent from other extension. + * Displays console warning if it's active. + * + * @param message - The message received from the other extension + */ +export const onMessageReceived = (message) => { + if (message === MESSAGE_TEXT) { + showWarning(); + } +}; + +/** + * Sends the ping message sent to other extensions to detect whether it's active or not. + */ +export const checkForMultipleVersionsRunning = async () => { + if (getPlatform() !== PLATFORM_CHROME && getPlatform() !== PLATFORM_FIREFOX) { + return; + } + const buildIds = + getPlatform() === PLATFORM_CHROME ? CHROME_BUILD_IDS : FIREFOX_BUILD_IDS; + + const thisBuild = browser.runtime.id; + + for (const id of buildIds) { + if (id !== thisBuild) { + try { + await browser.runtime.sendMessage(id, MESSAGE_TEXT); + } catch (error) { + // Should do nothing if receiving end was not reached (no other instances running) + } + } + } +}; diff --git a/app/scripts/detect-multiple-instances.test.js b/app/scripts/detect-multiple-instances.test.js new file mode 100644 index 000000000..0fc04192e --- /dev/null +++ b/app/scripts/detect-multiple-instances.test.js @@ -0,0 +1,104 @@ +import { strict as assert } from 'assert'; +import browser from 'webextension-polyfill'; +import sinon from 'sinon'; +import { + PLATFORM_CHROME, + PLATFORM_EDGE, + METAMASK_BETA_CHROME_ID, + METAMASK_PROD_CHROME_ID, + METAMASK_FLASK_CHROME_ID, +} from '../../shared/constants/app'; +import { + checkForMultipleVersionsRunning, + onMessageReceived, +} from './detect-multiple-instances'; +import * as util from './lib/util'; + +describe('multiple instances running detector', function () { + const PING_MESSAGE = 'isRunning'; + + let sendMessageStub = sinon.stub(); + + beforeEach(async function () { + sinon.replace(browser, 'runtime', { + sendMessage: sendMessageStub, + id: METAMASK_BETA_CHROME_ID, + }); + + sinon.stub(util, 'getPlatform').callsFake((_) => { + return PLATFORM_CHROME; + }); + }); + + afterEach(function () { + sinon.restore(); + }); + + describe('checkForMultipleVersionsRunning', function () { + it('should send ping message to multiple instances', async function () { + await checkForMultipleVersionsRunning(); + + assert(sendMessageStub.calledTwice); + assert( + sendMessageStub + .getCall(0) + .calledWithExactly(METAMASK_PROD_CHROME_ID, PING_MESSAGE), + ); + assert( + sendMessageStub + .getCall(1) + .calledWithExactly(METAMASK_FLASK_CHROME_ID, PING_MESSAGE), + ); + }); + + it('should not send ping message if platform is not Chrome or Firefox', async function () { + util.getPlatform.restore(); + sendMessageStub = sinon.stub(); + + sinon.stub(util, 'getPlatform').callsFake((_) => { + return PLATFORM_EDGE; + }); + + await checkForMultipleVersionsRunning(); + + assert(sendMessageStub.notCalled); + }); + + it('should not expose an error outside if sendMessage throws', async function () { + sinon.restore(); + + sinon.replace(browser, 'runtime', { + sendMessage: sinon.stub().throws(), + id: METAMASK_BETA_CHROME_ID, + }); + + const spy = sinon.spy(checkForMultipleVersionsRunning); + + await checkForMultipleVersionsRunning(); + + assert(!spy.threw()); + }); + }); + + describe('onMessageReceived', function () { + beforeEach(function () { + sinon.spy(console, 'warn'); + }); + + it('should print warning message to on ping message received', async function () { + onMessageReceived(PING_MESSAGE); + + assert( + console.warn.calledWithExactly( + 'Warning! You have multiple instances of MetaMask running!', + ), + ); + }); + + it('should not print warning message if wrong message received', async function () { + onMessageReceived(PING_MESSAGE.concat('wrong')); + + assert(console.warn.notCalled); + }); + }); +}); diff --git a/app/scripts/lib/buy-url.js b/app/scripts/lib/buy-url.js index ba4a0d86f..eed5ff82d 100644 --- a/app/scripts/lib/buy-url.js +++ b/app/scripts/lib/buy-url.js @@ -7,24 +7,32 @@ import { MAINNET_CHAIN_ID, RINKEBY_CHAIN_ID, ROPSTEN_CHAIN_ID, - MAINNET_NETWORK_ID, BUYABLE_CHAINS_MAP, } from '../../../shared/constants/network'; import { SECOND } from '../../../shared/constants/time'; import getFetchWithTimeout from '../../../shared/modules/fetch-with-timeout'; -import { TRANSAK_API_KEY, MOONPAY_API_KEY } from '../constants/on-ramp'; +import { + TRANSAK_API_KEY, + MOONPAY_API_KEY, + COINBASEPAY_API_KEY, +} from '../constants/on-ramp'; const fetchWithTimeout = getFetchWithTimeout(SECOND * 30); /** * Create a Wyre purchase URL. * - * @param {string} address - Ethereum destination address + * @param {string} walletAddress - Ethereum destination address + * @param {string} chainId - Current chain ID * @returns String */ -const createWyrePurchaseUrl = async (address) => { - const fiatOnRampUrlApi = `${SWAPS_API_V2_BASE_URL}/networks/${MAINNET_NETWORK_ID}/fiatOnRampUrl?serviceName=wyre&destinationAddress=${address}`; - const wyrePurchaseUrlFallback = `https://pay.sendwyre.com/purchase?dest=ethereum:${address}&destCurrency=ETH&accountId=AC-7AG3W4XH4N2&paymentMethod=debit-card`; +const createWyrePurchaseUrl = async (walletAddress, chainId) => { + const { wyre = {} } = BUYABLE_CHAINS_MAP[chainId]; + const { srn, currencyCode } = wyre; + + const networkId = parseInt(chainId, 16); + const fiatOnRampUrlApi = `${SWAPS_API_V2_BASE_URL}/networks/${networkId}/fiatOnRampUrl?serviceName=wyre&destinationAddress=${walletAddress}`; + const wyrePurchaseUrlFallback = `https://pay.sendwyre.com/purchase?dest=${srn}:${walletAddress}&destCurrency=${currencyCode}&accountId=AC-7AG3W4XH4N2&paymentMethod=debit-card`; try { const response = await fetchWithTimeout(fiatOnRampUrlApi, { method: 'GET', @@ -108,6 +116,28 @@ const createMoonPayUrl = async (walletAddress, chainId) => { return ''; }; +/** + * Create a Coinbase Pay Checkout URL. + * + * @param {string} walletAddress - Ethereum destination address + * @param {string} chainId - Current chain ID + * @returns String + */ +const createCoinbasePayUrl = (walletAddress, chainId) => { + const { coinbasePayCurrencies } = BUYABLE_CHAINS_MAP[chainId]; + const queryParams = new URLSearchParams({ + appId: COINBASEPAY_API_KEY, + attribution: 'extension', + destinationWallets: JSON.stringify([ + { + address: walletAddress, + assets: coinbasePayCurrencies, + }, + ]), + }); + return `https://pay.coinbase.com/buy?${queryParams}`; +}; + /** * Gives the caller a url at which the user can acquire eth, depending on the network they are in * @@ -127,11 +157,13 @@ export default async function getBuyUrl({ chainId, address, service }) { switch (service) { case 'wyre': - return await createWyrePurchaseUrl(address); + return await createWyrePurchaseUrl(address, chainId); case 'transak': return createTransakUrl(address, chainId); case 'moonpay': return createMoonPayUrl(address, chainId); + case 'coinbase': + return createCoinbasePayUrl(address, chainId); case 'metamask-faucet': return 'https://faucet.metamask.io/'; case 'rinkeby-faucet': diff --git a/app/scripts/lib/createRPCMethodTrackingMiddleware.js b/app/scripts/lib/createRPCMethodTrackingMiddleware.js index 0b47c3462..89141357f 100644 --- a/app/scripts/lib/createRPCMethodTrackingMiddleware.js +++ b/app/scripts/lib/createRPCMethodTrackingMiddleware.js @@ -1,4 +1,4 @@ -import { EVENT_NAMES } from '../../../shared/constants/metametrics'; +import { EVENT, EVENT_NAMES } from '../../../shared/constants/metametrics'; import { SECOND } from '../../../shared/constants/time'; const USER_PROMPTED_EVENT_NAME_MAP = { @@ -46,7 +46,7 @@ export default function createRPCMethodTrackingMiddleware({ const userRejected = res.error?.code === 4001; trackEvent({ event: USER_PROMPTED_EVENT_NAME_MAP[req.method], - category: 'inpage_provider', + category: EVENT.CATEGORIES.INPAGE_PROVIDER, referrer: { url: origin, }, @@ -62,7 +62,7 @@ export default function createRPCMethodTrackingMiddleware({ } else if (typeof samplingTimeouts[req.method] === 'undefined') { trackEvent({ event: 'Provider Method Called', - category: 'inpage_provider', + category: EVENT.CATEGORIES.INPAGE_PROVIDER, referrer: { url: origin, }, diff --git a/app/scripts/lib/decrypt-message-manager.js b/app/scripts/lib/decrypt-message-manager.js index 6c48b0fdb..f90336dda 100644 --- a/app/scripts/lib/decrypt-message-manager.js +++ b/app/scripts/lib/decrypt-message-manager.js @@ -4,6 +4,7 @@ import { bufferToHex, stripHexPrefix } from 'ethereumjs-util'; import { ethErrors } from 'eth-rpc-errors'; import log from 'loglevel'; import { MESSAGE_TYPE } from '../../../shared/constants/app'; +import { EVENT } from '../../../shared/constants/metametrics'; import { METAMASK_CONTROLLER_EVENTS } from '../metamask-controller'; import createId from '../../../shared/modules/random-id'; import { addHexPrefix } from './util'; @@ -227,7 +228,7 @@ export default class DecryptMessageManager extends EventEmitter { if (reason) { this.metricsEvent({ event: reason, - category: 'Messages', + category: EVENT.CATEGORIES.MESSAGES, properties: { action: 'Decrypt Message Request', }, diff --git a/app/scripts/lib/encryption-public-key-manager.js b/app/scripts/lib/encryption-public-key-manager.js index d2246365b..c84d1cb9c 100644 --- a/app/scripts/lib/encryption-public-key-manager.js +++ b/app/scripts/lib/encryption-public-key-manager.js @@ -3,6 +3,7 @@ import { ObservableStore } from '@metamask/obs-store'; import { ethErrors } from 'eth-rpc-errors'; import log from 'loglevel'; import { MESSAGE_TYPE } from '../../../shared/constants/app'; +import { EVENT } from '../../../shared/constants/metametrics'; import { METAMASK_CONTROLLER_EVENTS } from '../metamask-controller'; import createId from '../../../shared/modules/random-id'; @@ -216,7 +217,7 @@ export default class EncryptionPublicKeyManager extends EventEmitter { if (reason) { this.metricsEvent({ event: reason, - category: 'Messages', + category: EVENT.CATEGORIES.MESSAGES, properties: { action: 'Encryption public key Request', }, diff --git a/app/scripts/lib/message-manager.js b/app/scripts/lib/message-manager.js index f84ca206c..ad176ef9f 100644 --- a/app/scripts/lib/message-manager.js +++ b/app/scripts/lib/message-manager.js @@ -5,6 +5,7 @@ import { ethErrors } from 'eth-rpc-errors'; import { MESSAGE_TYPE } from '../../../shared/constants/app'; import { METAMASK_CONTROLLER_EVENTS } from '../metamask-controller'; import createId from '../../../shared/modules/random-id'; +import { EVENT } from '../../../shared/constants/metametrics'; /** * Represents, and contains data about, an 'eth_sign' type signature request. These are created when a signature for @@ -211,7 +212,7 @@ export default class MessageManager extends EventEmitter { const msg = this.getMsg(msgId); this.metricsEvent({ event: reason, - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, properties: { action: 'Sign Request', type: msg.type, diff --git a/app/scripts/lib/personal-message-manager.js b/app/scripts/lib/personal-message-manager.js index 1b321ce3d..9058887db 100644 --- a/app/scripts/lib/personal-message-manager.js +++ b/app/scripts/lib/personal-message-manager.js @@ -6,6 +6,7 @@ import log from 'loglevel'; import { MESSAGE_TYPE } from '../../../shared/constants/app'; import { METAMASK_CONTROLLER_EVENTS } from '../metamask-controller'; import createId from '../../../shared/modules/random-id'; +import { EVENT } from '../../../shared/constants/metametrics'; import { addHexPrefix } from './util'; const hexRe = /^[0-9A-Fa-f]+$/gu; @@ -231,7 +232,7 @@ export default class PersonalMessageManager extends EventEmitter { const msg = this.getMsg(msgId); this.metricsEvent({ event: reason, - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, properties: { action: 'Sign Request', type: msg.type, diff --git a/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js b/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js index c6a85c2fb..82ac2cf84 100644 --- a/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js +++ b/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js @@ -2,6 +2,7 @@ import { ethErrors, errorCodes } from 'eth-rpc-errors'; import validUrl from 'valid-url'; import { omit } from 'lodash'; import { MESSAGE_TYPE } from '../../../../../shared/constants/app'; +import { EVENT } from '../../../../../shared/constants/metametrics'; import { isPrefixedFormattedHexString, isSafeChainId, @@ -249,7 +250,7 @@ async function addEthereumChainHandler( sendMetrics({ event: 'Custom Network Added', - category: 'Network', + category: EVENT.CATEGORIES.NETWORK, referrer: { url: origin, }, @@ -264,7 +265,7 @@ async function addEthereumChainHandler( network: firstValidRPCUrl, symbol: ticker, block_explorer_url: firstValidBlockExplorerUrl, - source: 'dapp', + source: EVENT.SOURCE.TRANSACTION.DAPP, }, }); diff --git a/app/scripts/lib/rpc-method-middleware/handlers/log-web3-shim-usage.js b/app/scripts/lib/rpc-method-middleware/handlers/log-web3-shim-usage.js index 8793cdf20..c89feaf50 100644 --- a/app/scripts/lib/rpc-method-middleware/handlers/log-web3-shim-usage.js +++ b/app/scripts/lib/rpc-method-middleware/handlers/log-web3-shim-usage.js @@ -1,4 +1,5 @@ import { MESSAGE_TYPE } from '../../../../../shared/constants/app'; +import { EVENT } from '../../../../../shared/constants/metametrics'; /** * This RPC method is called by the inpage provider whenever it detects the @@ -48,7 +49,7 @@ function logWeb3ShimUsageHandler( sendMetrics( { event: `Website Accessed window.web3 Shim`, - category: 'inpage_provider', + category: EVENT.CATEGORIES.INPAGE_PROVIDER, referrer: { url: origin, }, diff --git a/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js b/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js index a9fb503d9..6a9502670 100644 --- a/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js +++ b/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js @@ -1,3 +1,4 @@ +import { ethErrors } from 'eth-rpc-errors'; import { MESSAGE_TYPE } from '../../../../../shared/constants/app'; const watchAsset = { @@ -36,9 +37,14 @@ async function watchAssetHandler( ) { try { const { options: asset, type } = req.params; - res.result = await handleWatchAssetRequest(asset, type); + const handleWatchAssetResult = await handleWatchAssetRequest(asset, type); + await handleWatchAssetResult.result; + res.result = true; return end(); } catch (error) { + if (error.message === 'User rejected to watch the asset.') { + return end(ethErrors.provider.userRejectedRequest()); + } return end(error); } } diff --git a/app/scripts/lib/typed-message-manager.js b/app/scripts/lib/typed-message-manager.js index 01ff3cc87..6b2c99719 100644 --- a/app/scripts/lib/typed-message-manager.js +++ b/app/scripts/lib/typed-message-manager.js @@ -8,6 +8,7 @@ import jsonschema from 'jsonschema'; import { MESSAGE_TYPE } from '../../../shared/constants/app'; import { METAMASK_CONTROLLER_EVENTS } from '../metamask-controller'; import createId from '../../../shared/modules/random-id'; +import { EVENT } from '../../../shared/constants/metametrics'; import { isValidHexAddress } from '../../../shared/modules/hexstring-utils'; /** @@ -303,7 +304,7 @@ export default class TypedMessageManager extends EventEmitter { const msg = this.getMsg(msgId); this.metricsEvent({ event: reason, - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, properties: { action: 'Sign Request', version: msg.msgParams.version, diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 61b35e7f7..81272f10f 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -30,7 +30,7 @@ import { ControllerMessenger, CurrencyRateController, PhishingController, - NotificationController, + AnnouncementController, GasFeeController, TokenListController, TokensController, @@ -42,12 +42,15 @@ import { SubjectMetadataController, ///: BEGIN:ONLY_INCLUDE_IN(flask) RateLimitController, + NotificationController, ///: END:ONLY_INCLUDE_IN } from '@metamask/controllers'; import SmartTransactionsController from '@metamask/smart-transactions-controller'; ///: BEGIN:ONLY_INCLUDE_IN(flask) -import { SnapController } from '@metamask/snap-controllers'; -import { IframeExecutionService } from '@metamask/iframe-execution-environment-service'; +import { + SnapController, + IframeExecutionService, +} from '@metamask/snap-controllers'; ///: END:ONLY_INCLUDE_IN import { @@ -75,17 +78,23 @@ import { UI_NOTIFICATIONS } from '../../shared/notifications'; import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils'; import { MILLISECOND } from '../../shared/constants/time'; import { + ORIGIN_METAMASK, ///: BEGIN:ONLY_INCLUDE_IN(flask) MESSAGE_TYPE, ///: END:ONLY_INCLUDE_IN POLLING_TOKEN_ENVIRONMENT_TYPES, SUBJECT_TYPES, } from '../../shared/constants/app'; +import { EVENT } from '../../shared/constants/metametrics'; import { hexToDecimal } from '../../ui/helpers/utils/conversions.util'; import { getTokenValueParam } from '../../ui/helpers/utils/token-util'; import { isEqualCaseInsensitive } from '../../shared/modules/string-utils'; import { parseStandardTokenTransactionData } from '../../shared/modules/transaction.utils'; +import { + onMessageReceived, + checkForMultipleVersionsRunning, +} from './detect-multiple-instances'; import ComposableObservableStore from './lib/ComposableObservableStore'; import AccountTracker from './lib/account-tracker'; import createLoggerMiddleware from './lib/createLoggerMiddleware'; @@ -397,9 +406,12 @@ export default class MetamaskController extends EventEmitter { name: 'CurrencyRateController', }); this.currencyRateController = new CurrencyRateController({ - includeUSDRate: true, + includeUsdRate: true, messenger: currencyRateMessenger, - state: initState.CurrencyController, + state: { + ...initState.CurrencyController, + nativeCurrency: this.networkController.providerStore.getState().ticker, + }, }); const tokenListMessenger = this.controllerMessenger.getRestricted({ @@ -452,9 +464,9 @@ export default class MetamaskController extends EventEmitter { this.phishingController = new PhishingController(); - this.notificationController = new NotificationController( - { allNotifications: UI_NOTIFICATIONS }, - initState.NotificationController, + this.announcementController = new AnnouncementController( + { allAnnouncements: UI_NOTIFICATIONS }, + initState.AnnouncementController, ); // token exchange rate tracker @@ -629,9 +641,8 @@ export default class MetamaskController extends EventEmitter { ///: BEGIN:ONLY_INCLUDE_IN(flask) this.workerController = new IframeExecutionService({ - onError: this.onExecutionEnvironmentError.bind(this), iframeUrl: new URL( - 'https://metamask.github.io/iframe-execution-environment/0.4.3', + 'https://metamask.github.io/iframe-execution-environment/0.4.6', ), messenger: this.controllerMessenger.getRestricted({ name: 'ExecutionService', @@ -652,11 +663,12 @@ export default class MetamaskController extends EventEmitter { `${this.permissionController.name}:hasPermissions`, `${this.permissionController.name}:requestPermissions`, `${this.permissionController.name}:revokeAllPermissions`, + `${this.permissionController.name}:revokePermissionForAllSubjects`, ], }); this.snapController = new SnapController({ - endowmentPermissionNames: Object.values(EndowmentPermissions), + environmentEndowmentPermissions: Object.values(EndowmentPermissions), terminateAllSnaps: this.workerController.terminateAllSnaps.bind( this.workerController, ), @@ -674,6 +686,13 @@ export default class MetamaskController extends EventEmitter { messenger: snapControllerMessenger, }); + this.notificationController = new NotificationController({ + messenger: this.controllerMessenger.getRestricted({ + name: 'NotificationController', + }), + state: initState.NotificationController, + }); + this.rateLimitController = new RateLimitController({ messenger: this.controllerMessenger.getRestricted({ name: 'RateLimitController', @@ -692,6 +711,15 @@ export default class MetamaskController extends EventEmitter { ); return null; }, + showInAppNotification: (origin, message) => { + this.controllerMessenger.call( + 'NotificationController:show', + origin, + message, + ); + + return null; + }, }, }); ///: END:ONLY_INCLUDE_IN @@ -704,6 +732,9 @@ export default class MetamaskController extends EventEmitter { network: this.networkController, keyringMemStore: this.keyringController.memStore, tokenList: this.tokenListController, + trackMetaMetricsEvent: this.metaMetricsController.trackEvent.bind( + this.metaMetricsController, + ), })) : (this.detectTokensController = new DetectTokensController({ preferences: this.preferencesController, @@ -851,7 +882,7 @@ export default class MetamaskController extends EventEmitter { this.metaMetricsController.trackEvent( { event: 'Tx Status Update: On-Chain Failure', - category: 'Background', + category: EVENT.CATEGORIES.BACKGROUND, properties: { action: 'Transactions', errorMessage: txMeta.simulationFails?.reason, @@ -982,7 +1013,7 @@ export default class MetamaskController extends EventEmitter { PermissionLogController: this.permissionLogController.store, SubjectMetadataController: this.subjectMetadataController, ThreeBoxController: this.threeBoxController.store, - NotificationController: this.notificationController, + AnnouncementController: this.announcementController, GasFeeController: this.gasFeeController, TokenListController: this.tokenListController, TokensController: this.tokensController, @@ -990,6 +1021,7 @@ export default class MetamaskController extends EventEmitter { CollectiblesController: this.collectiblesController, ///: BEGIN:ONLY_INCLUDE_IN(flask) SnapController: this.snapController, + NotificationController: this.notificationController, ///: END:ONLY_INCLUDE_IN }); @@ -1022,7 +1054,7 @@ export default class MetamaskController extends EventEmitter { SwapsController: this.swapsController.store, EnsController: this.ensController.store, ApprovalController: this.approvalController, - NotificationController: this.notificationController, + AnnouncementController: this.announcementController, GasFeeController: this.gasFeeController, TokenListController: this.tokenListController, TokensController: this.tokensController, @@ -1030,6 +1062,7 @@ export default class MetamaskController extends EventEmitter { CollectiblesController: this.collectiblesController, ///: BEGIN:ONLY_INCLUDE_IN(flask) SnapController: this.snapController, + NotificationController: this.notificationController, ///: END:ONLY_INCLUDE_IN }, controllerMessenger: this.controllerMessenger, @@ -1060,6 +1093,11 @@ export default class MetamaskController extends EventEmitter { // TODO:LegacyProvider: Delete this.publicConfigStore = this.createPublicConfigStore(); + + // Multiple MetaMask instances launched warning + this.extension.runtime.onMessageExternal.addListener(onMessageReceived); + // Fire a ping message to check if other extensions are running + checkForMultipleVersionsRunning(); } ///: BEGIN:ONLY_INCLUDE_IN(flask) @@ -1074,13 +1112,14 @@ export default class MetamaskController extends EventEmitter { this.controllerMessenger, 'SnapController:add', ), - clearSnapState: (fromSubject) => - this.controllerMessenger.call( - 'SnapController:updateSnapState', - fromSubject, - null, - ), + clearSnapState: this.controllerMessenger.call.bind( + this.controllerMessenger, + 'SnapController:clearSnapState', + ), getMnemonic: this.getPrimaryKeyringMnemonic.bind(this), + getUnlockPromise: this.appStateController.getUnlockPromise.bind( + this.appStateController, + ), getSnap: this.controllerMessenger.call.bind( this.controllerMessenger, 'SnapController:get', @@ -1099,7 +1138,7 @@ export default class MetamaskController extends EventEmitter { type: MESSAGE_TYPE.SNAP_CONFIRM, requestData: confirmationData, }), - showNotification: (origin, args) => + showNativeNotification: (origin, args) => this.controllerMessenger.call( 'RateLimitController:call', origin, @@ -1107,6 +1146,14 @@ export default class MetamaskController extends EventEmitter { origin, args.message, ), + showInAppNotification: (origin, args) => + this.controllerMessenger.call( + 'RateLimitController:call', + origin, + 'showInAppNotification', + origin, + args.message, + ), updateSnapState: this.controllerMessenger.call.bind( this.controllerMessenger, 'SnapController:updateSnapState', @@ -1114,6 +1161,25 @@ export default class MetamaskController extends EventEmitter { }), }; } + + /** + * Deletes the specified notifications from state. + * + * @param {string[]} ids - The notifications ids to delete. + */ + dismissNotifications(ids) { + this.notificationController.dismiss(ids); + } + + /** + * Updates the readDate attribute of the specified notifications. + * + * @param {string[]} ids - The notifications ids to mark as read. + */ + markNotificationsAsRead(ids) { + this.notificationController.markRead(ids); + } + ///: END:ONLY_INCLUDE_IN /** @@ -1204,13 +1270,33 @@ export default class MetamaskController extends EventEmitter { (snapId) => { this.metaMetricsController.trackEvent({ event: 'Snap Installed', - category: 'Snaps', + category: EVENT.CATEGORIES.SNAPS, properties: { snap_id: snapId, }, }); }, ); + + this.controllerMessenger.subscribe( + `${this.snapController.name}:snapTerminated`, + (snapId) => { + const approvals = Object.values( + this.approvalController.state.pendingApprovals, + ).filter( + (approval) => + approval.origin === snapId && + approval.type === MESSAGE_TYPE.SNAP_CONFIRM, + ); + for (const approval of approvals) { + this.approvalController.reject( + approval.id, + new Error('Snap was terminated.'), + ); + } + }, + ); + ///: END:ONLY_INCLUDE_IN } @@ -1226,12 +1312,17 @@ export default class MetamaskController extends EventEmitter { }, version, // account mgmt - getAccounts: async ({ origin }) => { - if (origin === 'metamask') { + getAccounts: async ( + { origin }, + { suppressUnauthorizedError = true } = {}, + ) => { + if (origin === ORIGIN_METAMASK) { const selectedAddress = this.preferencesController.getSelectedAddress(); return selectedAddress ? [selectedAddress] : []; } else if (this.isUnlocked()) { - return await this.getPermittedAccounts(origin); + return await this.getPermittedAccounts(origin, { + suppressUnauthorizedError, + }); } return []; // changing this is a breaking change }, @@ -1367,7 +1458,7 @@ export default class MetamaskController extends EventEmitter { keyringController, metaMetricsController, networkController, - notificationController, + announcementController, onboardingController, permissionController, preferencesController, @@ -1618,6 +1709,9 @@ export default class MetamaskController extends EventEmitter { updateTransactionGasFees: txController.updateTransactionGasFees.bind( txController, ), + updateTransactionSendFlowHistory: txController.updateTransactionSendFlowHistory.bind( + txController, + ), updateSwapApprovalTransaction: txController.updateSwapApprovalTransaction.bind( txController, @@ -1709,7 +1803,9 @@ export default class MetamaskController extends EventEmitter { ), disableSnap: this.snapController.disableSnap.bind(this.snapController), enableSnap: this.snapController.enableSnap.bind(this.snapController), - removeSnap: this.removeSnap.bind(this), + removeSnap: this.snapController.removeSnap.bind(this.snapController), + dismissNotifications: this.dismissNotifications.bind(this), + markNotificationsAsRead: this.markNotificationsAsRead.bind(this), ///: END:ONLY_INCLUDE_IN // swaps @@ -1773,9 +1869,6 @@ export default class MetamaskController extends EventEmitter { fetchSmartTransactionFees: smartTransactionsController.getFees.bind( smartTransactionsController, ), - estimateSmartTransactionsGas: smartTransactionsController.estimateGas.bind( - smartTransactionsController, - ), submitSignedTransactions: smartTransactionsController.submitSignedTransactions.bind( smartTransactionsController, ), @@ -1821,8 +1914,8 @@ export default class MetamaskController extends EventEmitter { }, // Notifications - updateViewedNotifications: notificationController.updateViewed.bind( - notificationController, + updateViewedNotifications: announcementController.updateViewed.bind( + announcementController, ), // GasFeeController @@ -2518,17 +2611,24 @@ export default class MetamaskController extends EventEmitter { * array if no accounts are permitted. * * @param {string} origin - The origin whose exposed accounts to retrieve. + * @param {boolean} [suppressUnauthorizedError] - Suppresses the unauthorized error. * @returns {Promise} The origin's permitted accounts, or an empty * array. */ - async getPermittedAccounts(origin) { + async getPermittedAccounts( + origin, + { suppressUnauthorizedError = true } = {}, + ) { try { return await this.permissionController.executeRestrictedMethod( origin, RestrictedMethods.eth_accounts, ); } catch (error) { - if (error.code === rpcErrorCodes.provider.unauthorized) { + if ( + suppressUnauthorizedError && + error.code === rpcErrorCodes.provider.unauthorized + ) { return []; } throw error; @@ -3299,7 +3399,7 @@ export default class MetamaskController extends EventEmitter { setupProviderConnection(outStream, sender, subjectType) { let origin; if (subjectType === SUBJECT_TYPES.INTERNAL) { - origin = 'metamask'; + origin = ORIGIN_METAMASK; } ///: BEGIN:ONLY_INCLUDE_IN(flask) else if (subjectType === SUBJECT_TYPES.SNAP) { @@ -3350,17 +3450,6 @@ export default class MetamaskController extends EventEmitter { } ///: BEGIN:ONLY_INCLUDE_IN(flask) - /** - * For snaps running in workers. - * - * @param snapId - * @param error - */ - onExecutionEnvironmentError(snapId, error) { - this.snapController.stopPlugin(snapId); - this.snapController.addSnapError(error); - } - /** * For snaps running in workers. * @@ -3542,6 +3631,10 @@ export default class MetamaskController extends EventEmitter { return Object.values(approvedPermissions); }, + getPermissions: this.permissionController.getPermissions.bind( + this.permissionController, + origin, + ), getAccounts: this.getPermittedAccounts.bind(this, origin), installSnaps: this.snapController.installSnaps.bind( this.snapController, @@ -3601,7 +3694,7 @@ export default class MetamaskController extends EventEmitter { * @returns {string} The connection's id (so that it can be deleted later) */ addConnection(origin, { engine }) { - if (origin === 'metamask') { + if (origin === ORIGIN_METAMASK) { return null; } @@ -4113,25 +4206,12 @@ export default class MetamaskController extends EventEmitter { if (trezorKeyring) { trezorKeyring.dispose(); } + + const [ledgerKeyring] = this.keyringController.getKeyringsByType( + KEYRING_TYPES.LEDGER, + ); + ledgerKeyring?.destroy?.(); + return this.keyringController.setLocked(); } - - ///: BEGIN:ONLY_INCLUDE_IN(flask) - // SNAPS - /** - * Removes the specified snap, and all of its associated permissions. - * If we didn't revoke the permission to access the snap from all subjects, - * they could just reinstall without any confirmation. - * - * TODO: This should be implemented in `SnapController.removeSnap` via a controller action. - * - * @param {{ id: string, permissionName: string }} snap - The wrapper object of the snap to remove. - */ - removeSnap(snap) { - this.snapController.removeSnap(snap.id); - this.permissionController.revokePermissionForAllSubjects( - snap.permissionName, - ); - } - ///: END:ONLY_INCLUDE_IN } diff --git a/app/scripts/metamask-controller.test.js b/app/scripts/metamask-controller.test.js index f1771c173..be4aa390b 100644 --- a/app/scripts/metamask-controller.test.js +++ b/app/scripts/metamask-controller.test.js @@ -6,6 +6,7 @@ import { pubToAddress, bufferToHex } from 'ethereumjs-util'; import { obj as createThoughStream } from 'through2'; import EthQuery from 'eth-query'; import proxyquire from 'proxyquire'; +import browser from 'webextension-polyfill'; import { TRANSACTION_STATUSES } from '../../shared/constants/transaction'; import createTxMeta from '../../test/lib/createTxMeta'; import { NETWORK_TYPE_RPC } from '../../shared/constants/network'; @@ -17,6 +18,8 @@ import { addHexPrefix } from './lib/util'; const Ganache = require('../../test/e2e/ganache'); +const NOTIFICATION_ID = 'NHL8f2eSSTn9TKBamRLiU'; + const firstTimeState = { config: {}, NetworkController: { @@ -31,6 +34,17 @@ const firstTimeState = { }, }, }, + NotificationController: { + notifications: { + [NOTIFICATION_ID]: { + id: NOTIFICATION_ID, + origin: 'local:http://localhost:8086/', + createdDate: 1652967897732, + readDate: null, + message: 'Hello, http://localhost:8086!', + }, + }, + }, }; const ganacheServer = new Ganache(); @@ -71,6 +85,9 @@ const browserPolyfillMock = { onInstalled: { addListener: () => undefined, }, + onMessageExternal: { + addListener: () => undefined, + }, getPlatformInfo: async () => 'mac', }, }; @@ -131,6 +148,10 @@ describe('MetaMaskController', function () { .get(/.*/u) .reply(200, '{"JPY":12415.9}'); + sandbox.replace(browser, 'runtime', { + sendMessage: sandbox.stub().rejects(), + }); + metamaskController = new MetaMaskController({ showUserConfirmation: noop, encryptor: { @@ -1204,6 +1225,27 @@ describe('MetaMaskController', function () { assert.deepEqual(metamaskController.getState(), oldState); }); }); + + describe('markNotificationsAsRead', function () { + it('marks the notification as read', function () { + metamaskController.markNotificationsAsRead([NOTIFICATION_ID]); + const readNotification = metamaskController.getState().notifications[ + NOTIFICATION_ID + ]; + assert.notEqual(readNotification.readDate, null); + }); + }); + + describe('dismissNotifications', function () { + it('deletes the notification from state', function () { + metamaskController.dismissNotifications([NOTIFICATION_ID]); + const state = metamaskController.getState().notifications; + assert.ok( + !Object.values(state).includes(NOTIFICATION_ID), + 'Object should not include the deleted notification', + ); + }); + }); }); function deferredPromise() { diff --git a/app/scripts/migrations/070.js b/app/scripts/migrations/070.js new file mode 100644 index 000000000..0efac3d5c --- /dev/null +++ b/app/scripts/migrations/070.js @@ -0,0 +1,40 @@ +import { cloneDeep } from 'lodash'; + +const version = 70; + +/** + * Removes the `request` and `response` properties from + * `PermissionLogController.permissionActivityLog` objects. + */ +export default { + version, + async migrate(originalVersionedData) { + const versionedData = cloneDeep(originalVersionedData); + versionedData.meta.version = version; + const state = versionedData.data; + const newState = transformState(state); + versionedData.data = newState; + return versionedData; + }, +}; + +function transformState(state) { + if (Array.isArray(state?.PermissionLogController?.permissionActivityLog)) { + const { + PermissionLogController: { permissionActivityLog }, + } = state; + + // mutate activity log entries in place + permissionActivityLog.forEach((logEntry) => { + if ( + logEntry && + typeof logEntry === 'object' && + !Array.isArray(logEntry) + ) { + delete logEntry.request; + delete logEntry.response; + } + }); + } + return state; +} diff --git a/app/scripts/migrations/070.test.js b/app/scripts/migrations/070.test.js new file mode 100644 index 000000000..02347ae50 --- /dev/null +++ b/app/scripts/migrations/070.test.js @@ -0,0 +1,273 @@ +import migration70 from './070'; + +describe('migration #70', () => { + it('should update the version metadata', async () => { + const oldStorage = { + meta: { + version: 69, + }, + data: {}, + }; + + const newStorage = await migration70.migrate(oldStorage); + expect(newStorage.meta).toStrictEqual({ + version: 70, + }); + }); + + it('should migrate all data', async () => { + const oldStorage = { + meta: { + version: 69, + }, + data: { + FooController: { a: 'b' }, + PermissionLogController: { + permissionActivityLog: [ + { + id: 522690215, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://metamask.io', + request: { + method: 'eth_accounts', + params: [], + jsonrpc: '2.0', + id: 522690215, + origin: 'https://metamask.io', + tabId: 5, + }, + requestTime: 1602643170686, + response: { + id: 522690215, + jsonrpc: '2.0', + result: [], + }, + responseTime: 1602643170688, + success: true, + }, + { + id: 1620464600, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://widget.getacute.io', + request: { + method: 'eth_accounts', + params: [], + jsonrpc: '2.0', + id: 1620464600, + origin: 'https://widget.getacute.io', + tabId: 5, + }, + requestTime: 1602643172935, + response: { + id: 1620464600, + jsonrpc: '2.0', + result: [], + }, + responseTime: 1602643172935, + success: true, + }, + { + id: 4279100021, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + request: { + method: 'eth_accounts', + jsonrpc: '2.0', + id: 4279100021, + origin: 'https://app.uniswap.org', + tabId: 5, + }, + requestTime: 1620710669962, + response: { + id: 4279100021, + jsonrpc: '2.0', + result: [], + }, + responseTime: 1620710669963, + success: true, + }, + { + id: 4279100022, + method: 'eth_requestAccounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + request: { + method: 'eth_requestAccounts', + jsonrpc: '2.0', + id: 4279100022, + origin: 'https://app.uniswap.org', + tabId: 5, + }, + requestTime: 1620710686872, + response: { + id: 4279100022, + jsonrpc: '2.0', + result: ['0x64a845a5b02460acf8a3d84503b0d68d028b4bb4'], + }, + responseTime: 1620710693187, + success: true, + }, + { + id: 4279100023, + method: 'eth_requestAccounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + request: { + method: 'eth_requestAccounts', + jsonrpc: '2.0', + id: 4279100023, + origin: 'https://app.uniswap.org', + tabId: 5, + }, + requestTime: 1620710693204, + response: { + id: 4279100023, + jsonrpc: '2.0', + result: ['0x64a845a5b02460acf8a3d84503b0d68d028b4bb4'], + }, + responseTime: 1620710693213, + success: true, + }, + { + id: 4279100034, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + request: { + method: 'eth_accounts', + params: [], + jsonrpc: '2.0', + id: 4279100034, + origin: 'https://app.uniswap.org', + tabId: 5, + }, + requestTime: 1620710712072, + response: { + id: 4279100034, + jsonrpc: '2.0', + result: ['0x64a845a5b02460acf8a3d84503b0d68d028b4bb4'], + }, + responseTime: 1620710712075, + success: true, + }, + ], + }, + }, + }; + + const newStorage = await migration70.migrate(oldStorage); + expect(newStorage).toStrictEqual({ + meta: { + version: 70, + }, + data: { + FooController: { a: 'b' }, + PermissionLogController: { + permissionActivityLog: [ + { + id: 522690215, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://metamask.io', + requestTime: 1602643170686, + responseTime: 1602643170688, + success: true, + }, + { + id: 1620464600, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://widget.getacute.io', + requestTime: 1602643172935, + responseTime: 1602643172935, + success: true, + }, + { + id: 4279100021, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + requestTime: 1620710669962, + responseTime: 1620710669963, + success: true, + }, + { + id: 4279100022, + method: 'eth_requestAccounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + requestTime: 1620710686872, + responseTime: 1620710693187, + success: true, + }, + { + id: 4279100023, + method: 'eth_requestAccounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + requestTime: 1620710693204, + responseTime: 1620710693213, + success: true, + }, + { + id: 4279100034, + method: 'eth_accounts', + methodType: 'restricted', + origin: 'https://app.uniswap.org', + requestTime: 1620710712072, + responseTime: 1620710712075, + success: true, + }, + ], + }, + }, + }); + }); + + it('should handle missing PermissionLogController', async () => { + const oldStorage = { + meta: { + version: 69, + }, + data: { + FooController: { a: 'b' }, + }, + }; + + const newStorage = await migration70.migrate(oldStorage); + expect(newStorage).toStrictEqual({ + meta: { + version: 70, + }, + data: { + FooController: { a: 'b' }, + }, + }); + }); + + it('should handle missing PermissionLogController.permissionActivityLog', async () => { + const oldStorage = { + meta: { + version: 69, + }, + data: { + FooController: { a: 'b' }, + PermissionLogController: {}, + }, + }; + + const newStorage = await migration70.migrate(oldStorage); + expect(newStorage).toStrictEqual({ + meta: { + version: 70, + }, + data: { + FooController: { a: 'b' }, + PermissionLogController: {}, + }, + }); + }); +}); diff --git a/app/scripts/migrations/071.js b/app/scripts/migrations/071.js new file mode 100644 index 000000000..9f07ecd93 --- /dev/null +++ b/app/scripts/migrations/071.js @@ -0,0 +1,28 @@ +import { cloneDeep } from 'lodash'; + +const version = 71; + +/** + * Renames NotificationController to AnnouncementController + */ +export default { + version, + async migrate(originalVersionedData) { + const versionedData = cloneDeep(originalVersionedData); + versionedData.meta.version = version; + const state = versionedData.data; + const newState = transformState(state); + versionedData.data = newState; + return versionedData; + }, +}; + +function transformState(state) { + if (state.NotificationController) { + state.AnnouncementController = { + announcements: state.NotificationController.notifications, + }; + delete state.NotificationController; + } + return state; +} diff --git a/app/scripts/migrations/071.test.js b/app/scripts/migrations/071.test.js new file mode 100644 index 000000000..78a2bded1 --- /dev/null +++ b/app/scripts/migrations/071.test.js @@ -0,0 +1,107 @@ +import migration71 from './071'; + +describe('migration #71', () => { + it('should update the version metadata', async () => { + const oldStorage = { + meta: { + version: 70, + }, + data: {}, + }; + + const newStorage = await migration71.migrate(oldStorage); + expect(newStorage.meta).toStrictEqual({ + version: 71, + }); + }); + + it('should rename NotificationController', async () => { + const oldStorage = { + meta: { + version: 70, + }, + data: { + FooController: { a: 'b' }, + NotificationController: { + notifications: [ + { + date: '2021-03-17', + id: 1, + image: { + height: '230px', + placeImageBelowDescription: true, + src: 'images/mobile-link-qr.svg', + width: '230px', + }, + isShown: false, + }, + { date: '2021-03-08', id: 3, isShown: false }, + { + date: '2021-05-11', + id: 4, + image: { src: 'images/source-logos-bsc.svg', width: '100%' }, + isShown: false, + }, + { date: '2021-06-09', id: 5, isShown: false }, + { date: '2021-05-26', id: 6, isShown: false }, + { date: '2021-09-17', id: 7, isShown: false }, + { date: '2021-11-01', id: 8, isShown: false }, + { + date: '2021-12-07', + id: 9, + image: { src: 'images/txinsights.png', width: '80%' }, + isShown: false, + }, + { + date: '2022-04-18', + id: 10, + image: { src: 'images/token-detection.svg', width: '100%' }, + isShown: false, + }, + { date: '2022-04-18', id: 11, isShown: false }, + { + date: '2022-05-18', + id: 12, + image: { src: 'images/darkmode-banner.png', width: '100%' }, + isShown: true, + }, + ], + }, + }, + }; + + const newStorage = await migration71.migrate(oldStorage); + expect(newStorage).toStrictEqual({ + meta: { + version: 71, + }, + data: { + FooController: { a: 'b' }, + AnnouncementController: { + announcements: oldStorage.data.NotificationController.notifications, + }, + }, + }); + }); + + it('should handle missing NotificationController', async () => { + const oldStorage = { + meta: { + version: 70, + }, + data: { + FooController: { a: 'b' }, + }, + }; + + const newStorage = await migration71.migrate(oldStorage); + expect(newStorage).toStrictEqual({ + meta: { + version: 71, + }, + data: { + FooController: { a: 'b' }, + }, + }); + }); +}); diff --git a/app/scripts/migrations/index.js b/app/scripts/migrations/index.js index 384b3a306..321b91319 100644 --- a/app/scripts/migrations/index.js +++ b/app/scripts/migrations/index.js @@ -73,6 +73,8 @@ import m066 from './066'; import m067 from './067'; import m068 from './068'; import m069 from './069'; +import m070 from './070'; +import m071 from './071'; const migrations = [ m002, @@ -143,6 +145,8 @@ const migrations = [ m067, m068, m069, + m070, + m071, ]; export default migrations; diff --git a/app/scripts/platforms/extension.js b/app/scripts/platforms/extension.js index dc06d17a9..8f1d49600 100644 --- a/app/scripts/platforms/extension.js +++ b/app/scripts/platforms/extension.js @@ -90,13 +90,17 @@ export default class ExtensionPlatform { if (versionParts.length < 4) { throw new Error(`Version missing build number: '${version}'`); } - // On Chrome, a more descriptive representation of the version is stored - // in the `version_name` field for display purposes. + // On Chrome, a more descriptive representation of the version is stored in the + // `version_name` field for display purposes. We use this field instead of the `version` + // field on Chrome for non-main builds (i.e. Flask, Beta) because we want to show the + // version in the SemVer-compliant format "v[major].[minor].[patch]-[build-type].[build-number]", + // yet Chrome does not allow letters in the `version` field. return versionName; - } else if (versionParts.length !== 3) { + // A fourth version part is sometimes present for "rollback" Chrome builds + } else if (![3, 4].includes(versionParts.length)) { throw new Error(`Invalid version: ${version}`); } else if (versionParts[2].match(/[^\d]/u)) { - // On Firefox, the build type and build version are in the fourth part of the version. + // On Firefox, the build type and build version are in the third part of the version. const [major, minor, patchAndPrerelease] = versionParts; const matches = patchAndPrerelease.match(/^(\d+)([A-Za-z]+)(\d)+$/u); if (matches === null) { @@ -106,7 +110,7 @@ export default class ExtensionPlatform { return `${major}.${minor}.${patch}-${buildType}.${buildVersion}`; } - // If there is no `version_name` and there are only 3 version parts, then this is not a + // If there is no `version_name` and there are only 3 or 4 version parts, then this is not a // prerelease and the version requires no modification. return version; } diff --git a/app/scripts/platforms/extension.test.js b/app/scripts/platforms/extension.test.js index de8b05cdd..1b2067d78 100644 --- a/app/scripts/platforms/extension.test.js +++ b/app/scripts/platforms/extension.test.js @@ -25,6 +25,15 @@ describe('extension platform', () => { expect(version).toBe('1.2.3'); }); + it('should return rollback version', () => { + browser.runtime.getManifest.mockReturnValue({ version: '1.2.3.1' }); + const extensionPlatform = new ExtensionPlatform(); + + const version = extensionPlatform.getVersion(); + + expect(version).toBe('1.2.3.1'); + }); + it('should return SemVer-formatted version for Chrome style manifest of prerelease', () => { browser.runtime.getManifest.mockReturnValue({ version: '1.2.3.0', @@ -60,24 +69,6 @@ describe('extension platform', () => { ); }); - it('should throw error if version name is missing from Chrome style prerelease manifest', () => { - browser.runtime.getManifest.mockReturnValue({ - version: '1.2.3.0', - }); - const extensionPlatform = new ExtensionPlatform(); - - expect(() => extensionPlatform.getVersion()).toThrow('Invalid version:'); - }); - - it('should throw error if version includes four parts in a Firefox style manifest', () => { - browser.runtime.getManifest.mockReturnValue({ - version: '1.2.3.4', - }); - const extensionPlatform = new ExtensionPlatform(); - - expect(() => extensionPlatform.getVersion()).toThrow('Invalid version:'); - }); - it('should throw error if build version is missing from Firefox style prerelease manifest', () => { browser.runtime.getManifest.mockReturnValue({ version: '1.2.3beta', diff --git a/app/scripts/ui.js b/app/scripts/ui.js index 1c4a3fc1c..27e464ef2 100644 --- a/app/scripts/ui.js +++ b/app/scripts/ui.js @@ -16,6 +16,7 @@ import { ENVIRONMENT_TYPE_FULLSCREEN, ENVIRONMENT_TYPE_POPUP, } from '../../shared/constants/app'; +import { isManifestV3 } from '../../shared/modules/mv3.utils'; import ExtensionPlatform from './platforms/extension'; import { setupMultiplex } from './lib/stream-utils'; import { getEnvironmentType } from './lib/util'; @@ -35,7 +36,20 @@ async function start() { const connectionStream = new PortStream(extensionPort); const activeTab = await queryCurrentActiveTab(windowType); - initializeUiWithTab(activeTab); + + /** + * In case of MV3 the issue of blank screen was very frequent, it is caused by UI initialising before background is ready to send state. + * Code below ensures that UI is rendered only after background is ready. + */ + if (isManifestV3()) { + extensionPort.onMessage.addListener((message) => { + if (message?.name === 'CONNECTION_READY') { + initializeUiWithTab(activeTab); + } + }); + } else { + initializeUiWithTab(activeTab); + } function displayCriticalError(container, err) { container.innerHTML = diff --git a/development/build/index.js b/development/build/index.js index 74106e7ac..fd6dd1b76 100755 --- a/development/build/index.js +++ b/development/build/index.js @@ -51,11 +51,13 @@ require('eslint-plugin-node'); require('eslint-plugin-prettier'); require('eslint-plugin-react'); require('eslint-plugin-react-hooks'); +require('eslint-plugin-jest'); defineAndRunBuildTasks(); function defineAndRunBuildTasks() { const { + applyLavaMoat, buildType, entryTask, isLavaMoat, @@ -88,6 +90,7 @@ function defineAndRunBuildTasks() { const styleTasks = createStyleTasks({ livereload }); const scriptTasks = createScriptTasks({ + applyLavaMoat, browserPlatforms, buildType, ignoredFiles, @@ -169,6 +172,7 @@ function defineAndRunBuildTasks() { function parseArgv() { const NamedArgs = { + ApplyLavaMoat: 'apply-lavamoat', BuildType: 'build-type', BuildVersion: 'build-version', LintFenceFiles: 'lint-fence-files', @@ -179,6 +183,7 @@ function parseArgv() { const argv = minimist(process.argv.slice(2), { boolean: [ + NamedArgs.ApplyLavaMoat, NamedArgs.LintFenceFiles, NamedArgs.Lockdown, NamedArgs.PolicyOnly, @@ -186,6 +191,7 @@ function parseArgv() { ], string: [NamedArgs.BuildType, NamedArgs.BuildVersion], default: { + [NamedArgs.ApplyLavaMoat]: true, [NamedArgs.BuildType]: BuildType.main, [NamedArgs.BuildVersion]: '0', [NamedArgs.LintFenceFiles]: true, @@ -231,8 +237,11 @@ function parseArgv() { const version = getVersion(buildType, buildVersion); return { + // Should we apply LavaMoat to the build output? + applyLavaMoat: argv[NamedArgs.ApplyLavaMoat], buildType, entryTask, + // Is this process running in lavamoat-node? isLavaMoat: process.argv[0].includes('lavamoat'), policyOnly, shouldIncludeLockdown: argv[NamedArgs.Lockdown], diff --git a/development/build/manifest.js b/development/build/manifest.js index 498ab2785..0b35f125c 100644 --- a/development/build/manifest.js +++ b/development/build/manifest.js @@ -2,7 +2,9 @@ const { promises: fs } = require('fs'); const path = require('path'); const { mergeWith, cloneDeep } = require('lodash'); -const baseManifest = require('../../app/manifest/_base.json'); +const baseManifest = process.env.ENABLE_MV3 + ? require('../../app/manifest/v3/_base.json') + : require('../../app/manifest/v2/_base.json'); const { BuildType } = require('../lib/build-type'); const { createTask, composeSeries } = require('./task'); @@ -24,7 +26,7 @@ function createManifestTasks({ '..', '..', 'app', - 'manifest', + process.env.ENABLE_MV3 ? 'manifest/v3' : 'manifest/v2', `${platform}.json`, ), ); diff --git a/development/build/scripts.js b/development/build/scripts.js index 39b626d1f..044551399 100644 --- a/development/build/scripts.js +++ b/development/build/scripts.js @@ -183,6 +183,7 @@ const noopWriteStream = through.obj((_file, _fileEncoding, callback) => module.exports = createScriptTasks; function createScriptTasks({ + applyLavaMoat, browserPlatforms, buildType, ignoredFiles, @@ -223,6 +224,7 @@ function createScriptTasks({ const standardSubtask = createTask( `${taskPrefix}:standardEntryPoints`, createFactoredBuild({ + applyLavaMoat, browserPlatforms, buildType, devMode, @@ -283,6 +285,7 @@ function createScriptTasks({ installSentrySubtask, ].map((subtask) => runInChildProcess(subtask, { + applyLavaMoat, buildType, isLavaMoat, policyOnly, @@ -362,7 +365,52 @@ function createScriptTasks({ } } +// Function generates app-init.js for browsers chrome, brave and opera. +// It dynamically injects list of files generated in the build. +async function bundleMV3AppInitialiser({ + jsBundles, + browserPlatforms, + buildType, + devMode, + ignoredFiles, + testing, + policyOnly, + shouldLintFenceFiles, +}) { + const label = 'app-init'; + // TODO: remove this filter for firefox once MV3 is supported in it + const mv3BrowserPlatforms = browserPlatforms.filter( + (platform) => platform !== 'firefox', + ); + const fileList = jsBundles.reduce( + (result, file) => `${result}'${file}',\n `, + '', + ); + + await createNormalBundle({ + browserPlatforms: mv3BrowserPlatforms, + buildType, + destFilepath: 'app-init.js', + devMode, + entryFilepath: './app/scripts/app-init.js', + ignoredFiles, + label, + testing, + policyOnly, + shouldLintFenceFiles, + })(); + + mv3BrowserPlatforms.forEach((browser) => { + const appInitFile = `./dist/${browser}/app-init.js`; + const fileContent = readFileSync('./app/scripts/app-init.js', 'utf8'); + const fileOutput = fileContent.replace('/** FILE NAMES */', fileList); + writeFileSync(appInitFile, fileOutput); + }); + console.log(`Bundle end: service worker app-init.js`); +} + function createFactoredBuild({ + applyLavaMoat, browserPlatforms, buildType, devMode, @@ -415,7 +463,7 @@ function createFactoredBuild({ policyName: buildType, policyOverride: path.resolve( __dirname, - `../../lavamoat/browserify/${buildType}/policy-override.json`, + `../../lavamoat/browserify/policy-override.json`, ), writeAutoPolicy: process.env.WRITE_AUTO_POLICY, }; @@ -473,7 +521,7 @@ function createFactoredBuild({ }); // wait for bundle completion for postprocessing - events.on('bundleDone', () => { + events.on('bundleDone', async () => { // Skip HTML generation if nothing is to be written to disk if (policyOnly) { return; @@ -493,21 +541,21 @@ function createFactoredBuild({ groupSet, commonSet, browserPlatforms, - useLavamoat: false, + applyLavaMoat, }); renderHtmlFile({ htmlName: 'notification', groupSet, commonSet, browserPlatforms, - useLavamoat: false, + applyLavaMoat, }); renderHtmlFile({ htmlName: 'home', groupSet, commonSet, browserPlatforms, - useLavamoat: false, + applyLavaMoat, }); break; } @@ -517,8 +565,24 @@ function createFactoredBuild({ groupSet, commonSet, browserPlatforms, - useLavamoat: true, + applyLavaMoat, }); + if (process.env.ENABLE_MV3) { + const jsBundles = [ + ...commonSet.values(), + ...groupSet.values(), + ].map((label) => `./${label}.js`); + await bundleMV3AppInitialiser({ + jsBundles, + browserPlatforms, + buildType, + devMode, + ignoredFiles, + testing, + policyOnly, + shouldLintFenceFiles, + }); + } break; } case 'content-script': { @@ -527,7 +591,7 @@ function createFactoredBuild({ groupSet, commonSet, browserPlatforms, - useLavamoat: false, + applyLavaMoat: false, }); break; } @@ -879,11 +943,11 @@ function renderHtmlFile({ groupSet, commonSet, browserPlatforms, - useLavamoat, + applyLavaMoat, }) { - if (useLavamoat === undefined) { + if (applyLavaMoat === undefined) { throw new Error( - 'build/scripts/renderHtmlFile - must specify "useLavamoat" option', + 'build/scripts/renderHtmlFile - must specify "applyLavaMoat" option', ); } const htmlFilePath = `./app/${htmlName}.html`; @@ -891,7 +955,7 @@ function renderHtmlFile({ const jsBundles = [...commonSet.values(), ...groupSet.values()].map( (label) => `./${label}.js`, ); - const htmlOutput = Sqrl.render(htmlTemplate, { jsBundles, useLavamoat }); + const htmlOutput = Sqrl.render(htmlTemplate, { jsBundles, applyLavaMoat }); browserPlatforms.forEach((platform) => { const dest = `./dist/${platform}/${htmlName}.html`; // we dont have a way of creating async events atm diff --git a/development/build/task.js b/development/build/task.js index 316020259..26df8bf85 100644 --- a/development/build/task.js +++ b/development/build/task.js @@ -50,7 +50,7 @@ function createTask(taskName, taskFn) { function runInChildProcess( task, - { buildType, isLavaMoat, policyOnly, shouldLintFenceFiles }, + { applyLavaMoat, buildType, isLavaMoat, policyOnly, shouldLintFenceFiles }, ) { const taskName = typeof task === 'string' ? task : task.taskName; if (!taskName) { @@ -60,44 +60,23 @@ function runInChildProcess( } return instrumentForTaskStats(taskName, async () => { - let childProcess; - // Use the same build type for subprocesses, and only run them in LavaMoat - // if the parent process also ran in LavaMoat. - if (isLavaMoat) { - childProcess = spawn( - 'yarn', - [ - 'build', - taskName, - '--build-type', - buildType, - '--lint-fence-files', - shouldLintFenceFiles, - '--skip-stats', - ...(policyOnly ? ['--policy-only'] : []), - ], - { - env: process.env, - }, - ); - } else { - childProcess = spawn( - 'yarn', - [ - 'build:dev', - taskName, - '--build-type', - buildType, - '--lint-fence-files', - shouldLintFenceFiles, - '--skip-stats', - ...(policyOnly ? ['--policy-only'] : []), - ], - { - env: process.env, - }, - ); - } + const childProcess = spawn( + 'yarn', + [ + // Use the same build type for subprocesses, and only run them in + // LavaMoat if the parent process also ran in LavaMoat. + isLavaMoat ? 'build' : 'build:dev', + taskName, + `--apply-lavamoat=${applyLavaMoat ? 'true' : 'false'}`, + `--build-type=${buildType}`, + `--lint-fence-files=${shouldLintFenceFiles ? 'true' : 'false'}`, + `--policyOnly=${policyOnly ? 'true' : 'false'}`, + '--skip-stats=true', + ], + { + env: process.env, + }, + ); // forward logs to main process // skip the first stdout event (announcing the process command) diff --git a/development/jest.config.js b/development/jest.config.js index e4218c21f..fe594713e 100644 --- a/development/jest.config.js +++ b/development/jest.config.js @@ -2,7 +2,7 @@ module.exports = { displayName: '/development', collectCoverageFrom: ['/**/*.js'], coverageDirectory: '../jest-coverage/development/', - coverageReporters: ['html', 'text-summary'], + coverageReporters: ['html', 'text-summary', 'json-summary'], coverageThreshold: { './development/build/transforms/**/*.js': { branches: 100, diff --git a/jest.config.js b/jest.config.js index e366a29fd..d64ca0864 100644 --- a/jest.config.js +++ b/jest.config.js @@ -6,13 +6,13 @@ module.exports = { ], coverageDirectory: './jest-coverage/main', coveragePathIgnorePatterns: ['.stories.js', '.snap'], - coverageReporters: ['html', 'text-summary'], + coverageReporters: ['html', 'text-summary', 'json-summary'], coverageThreshold: { global: { - branches: 35, - functions: 37, - lines: 43, - statements: 43, + branches: 44, + functions: 42, + lines: 48, + statements: 48, }, './app/scripts/controllers/permissions/**/*.js': { branches: 100, diff --git a/lavamoat/browserify/beta/policy-override.json b/lavamoat/browserify/beta/policy-override.json deleted file mode 100644 index a3d850f83..000000000 --- a/lavamoat/browserify/beta/policy-override.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "resources": { - "browser-resolve": { - "packages": { - "core-js": true - } - }, - "babel-runtime": { - "packages": { - "@babel/runtime": true - } - }, - "keccak": { - "packages": { - "readable-stream": true - } - }, - "node-fetch": { - "globals": { - "fetch": true - } - }, - "lodash": { - "globals": { - "setTimeout": true, - "clearTimeout": true - } - }, - "@ethersproject/random": { - "globals": { - "crypto.getRandomValues": true - } - }, - "browser-passworder": { - "globals": { - "crypto": true - } - }, - "randombytes": { - "globals": { - "crypto.getRandomValues": true - } - }, - "extensionizer": { - "globals": { - "console": true - } - }, - "web3": { - "globals": { - "XMLHttpRequest": true - } - }, - "storage": { - "globals": { - "localStorage": true - } - } - } -} diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index c343f5241..5c5475cb5 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -9,62 +9,2200 @@ "setTimeout": true }, "packages": { - "3box-orbitdb-plugins": true, - "3id-resolver": true, + "3box>3box-orbitdb-plugins": true, + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>3id-resolver": true, + "3box>did-jwt": true, + "3box>ethers": true, + "3box>ethers>elliptic": true, + "3box>graphql-request": true, + "3box>https-did-resolver": true, + "3box>ipfs": true, + "3box>ipfs-did-document": true, + "3box>ipfs-mini": true, + "3box>ipfs>is-ipfs": true, + "3box>ipfs>multihashes": true, + "3box>js-sha256": true, + "3box>muport-did-resolver": true, + "3box>orbit-db": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-identity-provider": true, + "3box>orbit-db>orbit-db-pubsub": true, + "3box>store": true, + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, "@babel/runtime": true, - "buffer": true, - "did-jwt": true, - "elliptic": true, - "ethers": true, - "graphql-request": true, - "https-did-resolver": true, - "ipfs": true, - "ipfs-did-document": true, - "ipfs-log": true, - "ipfs-mini": true, - "is-ipfs": true, - "js-sha256": true, - "multihashes": true, - "muport-did-resolver": true, - "node-fetch": true, - "orbit-db": true, - "orbit-db-access-controllers": true, - "orbit-db-identity-provider": true, - "orbit-db-pubsub": true, - "process": true, - "store": true, - "tweetnacl": true, - "tweetnacl-util": true + "browserify>buffer": true, + "browserify>process": true, + "node-fetch": true } }, - "3box-orbitdb-plugins": { + "3box>3box-orbitdb-plugins": { "globals": { "console.log": true }, "packages": { - "base64url": true, - "did-jwt": true, - "did-resolver": true, - "events": true, - "ipfs-log": true, - "is-ipfs": true, - "orbit-db-access-controllers": true, - "orbit-db-io": true, - "safe-buffer": true + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>3id-resolver>did-jwt": true, + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ipfs>is-ipfs": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>events": true, + "ethereumjs-wallet>safe-buffer": true } }, - "3id-resolver": { + "3box>3box-orbitdb-plugins>ipfs-log": { + "globals": { + "clearTimeout": true, + "console.warn": true, + "setTimeout": true + }, "packages": { + "3box>3box-orbitdb-plugins>ipfs-log>json-stringify-deterministic": true, + "3box>3box-orbitdb-plugins>ipfs-log>p-map": true, + "3box>3box-orbitdb-plugins>ipfs-log>p-whilst": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>buffer": true, + "jest>@jest/core>p-each-series": true + } + }, + "3box>3id-resolver": { + "packages": { + "3box>3id-resolver>did-jwt": true, + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ipfs-did-document": true, + "@babel/runtime": true + } + }, + "3box>3id-resolver>did-jwt": { + "packages": { + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ethers>elliptic": true, + "3box>js-sha256": true, + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, "@babel/runtime": true, - "base64url": true, - "did-jwt": true, - "did-resolver": true, - "ipfs-did-document": true + "browserify>buffer": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>3id-resolver>did-jwt>base64url": { + "packages": { + "browserify>buffer": true + } + }, + "3box>did-jwt": { + "packages": { + "3box>did-jwt>@stablelib/utf8": true, + "3box>did-jwt>did-resolver": true, + "3box>did-jwt>js-sha3": true, + "3box>did-jwt>uport-base64url": true, + "3box>ethers>elliptic": true, + "3box>js-sha256": true, + "3box>tweetnacl": true, + "browserify>buffer": true + } + }, + "3box>did-jwt>js-sha3": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>did-jwt>uport-base64url": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ethers": { + "globals": { + "MessageChannel": true, + "XMLHttpRequest": true, + "atob": true, + "btoa": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "crypto.getRandomValues": true, + "define": true, + "setInterval": true, + "setTimeout": true + } + }, + "3box>ethers>elliptic": { + "packages": { + "3box>ethers>elliptic>brorand": true, + "3box>ethers>elliptic>hmac-drbg": true, + "3box>ethers>elliptic>minimalistic-crypto-utils": true, + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true + } + }, + "3box>ethers>elliptic>brorand": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "3box>ethers>elliptic>hmac-drbg": { + "packages": { + "3box>ethers>elliptic>minimalistic-crypto-utils": true, + "3box>ethers>hash.js>minimalistic-assert": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "3box>events": { + "globals": { + "console": true + } + }, + "3box>graphql-request": { + "globals": { + "fetch": true + }, + "packages": { + "3box>graphql-request>cross-fetch": true + } + }, + "3box>graphql-request>cross-fetch": { + "globals": { + "Blob": true, + "FileReader": true, + "FormData": true, + "URLSearchParams.prototype.isPrototypeOf": true, + "XMLHttpRequest": true + } + }, + "3box>graphql-request>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "3box>https-did-resolver": { + "globals": { + "XMLHttpRequest": true + }, + "packages": { + "3box>did-jwt>did-resolver": true, + "browserify>browser-resolve": true + } + }, + "3box>ipfs": { + "globals": { + "AbortController": true, + "clearInterval": true, + "clearTimeout": true, + "console.log": true, + "fetch": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>async-iterator-all": true, + "3box>ipfs>async-iterator-to-pull-stream": true, + "3box>ipfs>async-iterator-to-stream": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>bignumber.js": true, + "3box>ipfs>callbackify": true, + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "3box>ipfs>datastore-core": true, + "3box>ipfs>datastore-pubsub": true, + "3box>ipfs>dlv": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fnv1a": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>human-to-milliseconds": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-bitswap": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipfs-block-service": true, + "3box>ipfs>ipfs-mfs": true, + "3box>ipfs>ipfs-repo": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-exporter": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "3box>ipfs>ipfs-utils": true, + "3box>ipfs>ipld": true, + "3box>ipfs>ipld-dag-cbor": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw": true, + "3box>ipfs>ipns": true, + "3box>ipfs>is-ipfs": true, + "3box>ipfs>is-pull-stream": true, + "3box>ipfs>iso-url": true, + "3box>ipfs>just-flatten-it": true, + "3box>ipfs>kind-of": true, + "3box>ipfs>libp2p": true, + "3box>ipfs>libp2p-bootstrap": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-kad-dht": true, + "3box>ipfs>libp2p-keychain": true, + "3box>ipfs>libp2p-record": true, + "3box>ipfs>libp2p-secio": true, + "3box>ipfs>libp2p-webrtc-star": true, + "3box>ipfs>libp2p-websocket-star-multi": true, + "3box>ipfs>libp2p-websockets": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multiaddr-to-uri": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async": true, + "3box>ipfs>peer-book": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>promisify-es6": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-cat": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-mplex": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-sort": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>pull-stream-to-async-iterator": true, + "3box>ipfs>pull-stream-to-stream": true, + "3box>ipfs>pull-traverse": true, + "3box>ipfs>readable-stream": true, + "3box>ipfs>receptacle": true, + "3box>ipfs>stream-to-pull-stream": true, + "3box>ipfs>superstruct": true, + "3box>ipfs>varint": true, + "@metamask/providers>is-stream": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>timers-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs-mini": { + "globals": { + "XMLHttpRequest": true + } + }, + "3box>ipfs-postmsg-proxy>shortid": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "nanoid": true + } + }, + "3box>ipfs>async": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true, + "browserify>timers-browserify": true, + "lodash": true + } + }, + "3box>ipfs>async-iterator-to-pull-stream": { + "packages": { + "3box>ipfs>async-iterator-to-pull-stream>get-iterator": true, + "3box>ipfs>pull-stream-to-async-iterator": true + } + }, + "3box>ipfs>async-iterator-to-stream": { + "packages": { + "3box>ipfs>async-iterator-to-stream>readable-stream": true, + "browserify>process": true + } + }, + "3box>ipfs>async-iterator-to-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>bl": { + "packages": { + "3box>ipfs>bl>readable-stream": true, + "browserify>buffer": true, + "browserify>util": true + } + }, + "3box>ipfs>bl>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>bs58": { + "packages": { + "3box>ipfs>bs58>base-x": true + } + }, + "3box>ipfs>bs58>base-x": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>cids": { + "packages": { + "3box>ipfs>class-is": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>datastore-core": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>datastore-core>pull-many": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>datastore-pubsub": { + "packages": { + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>multibase": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>dlv": { + "globals": { + "define": true + } + }, + "3box>ipfs>fsm-event": { + "packages": { + "3box>ipfs>fsm-event>fsm": true, + "browserify>assert": true, + "browserify>events": true + } + }, + "3box>ipfs>human-to-milliseconds": { + "packages": { + "3box>ipfs>promisify-es6": true + } + }, + "3box>ipfs>interface-datastore": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore>uuid": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>os-browserify": true, + "browserify>path-browserify": true + } + }, + "3box>ipfs>interface-datastore>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "3box>ipfs>ipfs-bitswap": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>cids": true, + "3box>ipfs>ipfs-bitswap>bignumber.js": true, + "3box>ipfs>ipfs-bitswap>just-debounce-it": true, + "3box>ipfs>ipfs-bitswap>lodash.isequalwith": true, + "3box>ipfs>ipfs-bitswap>moving-average": true, + "3box>ipfs>ipfs-bitswap>multihashing-async": true, + "3box>ipfs>ipfs-bitswap>varint-decoder": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-bitswap>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>ipfs-bitswap>just-debounce-it": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>ipfs-bitswap>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>ipfs-bitswap>varint-decoder": { + "packages": { + "3box>ipfs>varint": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-block": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-block-service": { + "packages": { + "3box>ipfs>async": true + } + }, + "3box>ipfs>ipfs-mfs": { + "globals": { + "Blob": true, + "FileReader": true + }, + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-mfs>async-iterator-last": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-mfs>mortice": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-exporter": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>promisify-es6": true, + "browserify>assert": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-mfs>hamt-sharding": { + "packages": { + "3box>ipfs>ipfs-mfs>hamt-sharding>sparse-array": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-mfs>mortice": { + "globals": { + "Worker": true + }, + "packages": { + "3box>ipfs-postmsg-proxy>shortid": true, + "3box>ipfs>ipfs-mfs>mortice>observable-webworkers": true, + "3box>ipfs>ipfs-mfs>mortice>promise-timeout": true, + "3box>ipfs>libp2p-kad-dht>p-queue": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true + } + }, + "3box>ipfs>ipfs-mfs>mortice>promise-timeout": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>ipfs-repo": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>cids": true, + "3box>ipfs>datastore-core": true, + "3box>ipfs>dlv": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipfs-repo>bignumber.js": true, + "3box>ipfs>ipfs-repo>datastore-level": true, + "3box>ipfs>ipfs-repo>sort-keys": true, + "3box>ipfs>just-safe-set": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>path-browserify": true, + "browserify>timers-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-repo>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level": { + "packages": { + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down": true, + "3box>ipfs>ipfs-repo>datastore-level>level-js": true, + "3box>ipfs>pull-stream": true, + "3box>orbit-db>orbit-db-keystore>levelup": true, + "browserify>buffer": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down": { + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown": true, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>level-codec": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown": { + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown>level-supports": true, + "3box>orbit-db>orbit-db-cache>level-js>immediate": true, + "browserify>buffer": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown>level-supports": { + "packages": { + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>level-codec": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.only": true, + "IDBKeyRange.upperBound": true, + "indexedDB.deleteDatabase": true, + "indexedDB.open": true + }, + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>level-js>abstract-leveldown": true, + "3box>ipfs>ipfs-repo>datastore-level>level-js>idb-readable-stream": true, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js>abstract-leveldown": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js>idb-readable-stream": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.upperBound": true + }, + "packages": { + "browserify>stream-browserify": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>sort-keys": { + "packages": { + "geckodriver>got>is-plain-obj": true + } + }, + "3box>ipfs>ipfs-unixfs": { + "packages": { + "3box>ipfs>protons": true + } + }, + "3box>ipfs>ipfs-unixfs-exporter": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>ipfs-mfs>async-iterator-last": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-unixfs-importer": { + "packages": { + "3box>ipfs>async-iterator-all": true, + "3box>ipfs>bl": true, + "3box>ipfs>err-code": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-importer>async-iterator-batch": true, + "3box>ipfs>ipfs-unixfs-importer>async-iterator-first": true, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>superstruct": true, + "browserify>buffer": true, + "rc>deep-extend": true + } + }, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm": { + "globals": { + "Blob": true, + "Response": true, + "WebAssembly": true + }, + "packages": { + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm>assemblyscript": true + } + }, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm>assemblyscript": { + "globals": { + "WebAssembly.Instance": true, + "WebAssembly.Module": true, + "WebAssembly.instantiateStreaming": true, + "console.log": true + } + }, + "3box>ipfs>ipfs-utils": { + "globals": { + "FileReader": true + }, + "packages": { + "3box>ipfs>ipfs-utils>is-buffer": true, + "3box>ipfs>ipfs-utils>readable-stream": true, + "3box>ipfs>is-pull-stream": true, + "3box>ipfs>kind-of": true, + "@metamask/providers>is-stream": true + } + }, + "3box>ipfs>ipfs-utils>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>ipld": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipld-dag-cbor": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw": true, + "3box>ipfs>ipld>typical": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>promisify-es6": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipld-dag-cbor": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-dag-cbor>is-circular": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>gridplus-sdk>borc": true + } + }, + "3box>ipfs>ipld-dag-pb": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>protons": true, + "@storybook/client-api>stable": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipld-raw": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true + } + }, + "3box>ipfs>ipld-raw>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>err-code": true, + "3box>ipfs>ipld-raw>multihashing-async>murmurhash3js-revisited": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>ipld-raw>multihashing-async>murmurhash3js-revisited": { + "globals": { + "define": true + } + }, + "3box>ipfs>ipld>typical": { + "globals": { + "define": true + } + }, + "3box>ipfs>ipns": { + "packages": { + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipns>timestamp-nano": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>protons": true, + "base32-encode": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>is-ipfs": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>cids": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true + } + }, + "3box>ipfs>iso-url": { + "globals": { + "URL": true, + "URLSearchParams": true, + "location": true + } + }, + "3box>ipfs>libp2p": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>libp2p-websockets": true, + "3box>ipfs>libp2p>libp2p-connection-manager": true, + "3box>ipfs>libp2p>libp2p-floodsub": true, + "3box>ipfs>libp2p>libp2p-ping": true, + "3box>ipfs>libp2p>libp2p-switch": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-book": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>superstruct": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-bootstrap": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p-crypto": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>libp2p-crypto>asn1.js": true, + "3box>ipfs>libp2p-crypto>iso-random-stream": true, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1": true, + "3box>ipfs>libp2p-crypto>multihashing-async": true, + "3box>ipfs>protons": true, + "3box>tweetnacl": true, + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true, + "mockttp>node-forge": true + } + }, + "3box>ipfs>libp2p-crypto>asn1.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-crypto>iso-random-stream": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1>multihashing-async": true, + "eth-trezor-keyring>hdkey>secp256k1": true + } + }, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-crypto>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-kad-dht": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-kad-dht>hashlru": true, + "3box>ipfs>libp2p-kad-dht>heap": true, + "3box>ipfs>libp2p-kad-dht>k-bucket": true, + "3box>ipfs>libp2p-kad-dht>multihashing-async": true, + "3box>ipfs>libp2p-kad-dht>p-queue": true, + "3box>ipfs>libp2p-kad-dht>p-times": true, + "3box>ipfs>libp2p-kad-dht>xor-distance": true, + "3box>ipfs>libp2p-record": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>promisify-es6": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>pull-stream-to-async-iterator": true, + "3box>ipfs>varint": true, + "@metamask/controllers>abort-controller": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eslint>debug": true, + "promise-to-callback": true + } + }, + "3box>ipfs>libp2p-kad-dht>heap": { + "globals": { + "define": true + } + }, + "3box>ipfs>libp2p-kad-dht>k-bucket": { + "packages": { + "browserify>events": true, + "ethereumjs-wallet>randombytes": true + } + }, + "3box>ipfs>libp2p-kad-dht>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-kad-dht>p-queue": { + "globals": { + "clearInterval": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "mockttp>@httptoolkit/subscriptions-transport-ws>eventemitter3": true + } + }, + "3box>ipfs>libp2p-kad-dht>p-times": { + "packages": { + "3box>ipfs>libp2p-kad-dht>p-times>p-map": true + } + }, + "3box>ipfs>libp2p-kad-dht>xor-distance": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-keychain": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-keychain>sanitize-filename": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "mockttp>node-forge": true + } + }, + "3box>ipfs>libp2p-keychain>sanitize-filename": { + "packages": { + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes": true + } + }, + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes": { + "packages": { + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes>utf8-byte-length": true + } + }, + "3box>ipfs>libp2p-record": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-record>buffer-split": true, + "3box>ipfs>libp2p-record>multihashing-async": true, + "3box>ipfs>protons": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>libp2p-record>buffer-split": { + "packages": { + "3box>ipfs>libp2p-record>buffer-split>buffer-indexof": true + } + }, + "3box>ipfs>libp2p-record>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-secio": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>multihashing-async": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-secio>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-secio>pull-handshake": { + "packages": { + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": true, + "3box>ipfs>pull-cat": true, + "3box>ipfs>pull-mplex>pull-pair": true, + "3box>ipfs>pull-pushable": true + } + }, + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": { + "globals": { + "cb": true, + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-secio>pull-length-prefixed": { + "packages": { + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>varint": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>libp2p-webrtc-star": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-webrtc-star>simple-peer": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": true, + "3box>ipfs>libp2p-webrtc-star>webrtcsupport": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>stream-to-pull-stream": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer": { + "globals": { + "clearInterval": true, + "console.warn": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>simple-peer>get-browser-rtc": true, + "3box>ipfs>libp2p-webrtc-star>simple-peer>readable-stream": true, + "browserify>buffer": true, + "eslint>debug": true, + "ethereumjs-wallet>randombytes": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer>get-browser-rtc": { + "globals": { + "RTCIceCandidate": true, + "RTCPeerConnection": true, + "RTCSessionDescription": true, + "mozRTCIceCandidate": true, + "mozRTCPeerConnection": true, + "mozRTCSessionDescription": true, + "webkitRTCIceCandidate": true, + "webkitRTCPeerConnection": true, + "webkitRTCSessionDescription": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": { + "globals": { + "clearTimeout": true, + "location": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>component-bind": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>indexof": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseqs": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseuri": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>to-array": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": true, + "mockttp>@httptoolkit/subscriptions-transport-ws>backo2": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client": { + "globals": { + "MozWebSocket": true, + "WebSocket": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "addEventListener": true, + "attachEvent": true, + "clearTimeout": true, + "document": true, + "location": true, + "navigator": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>component-inherit": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>has-cors": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>yeast": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>indexof": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseqs": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseuri": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser": { + "globals": { + "FileReader": true, + "btoa": true, + "navigator": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>after": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>arraybuffer.slice": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>blob": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>engine.io>engine.io-parser>base64-arraybuffer": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>blob": { + "globals": { + "Blob": true, + "MSBlobBuilder": true, + "MozBlobBuilder": true, + "WebKitBlobBuilder": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>has-cors": { + "globals": { + "XMLHttpRequest": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser": { + "globals": { + "Blob": true, + "File": true, + "FileReader": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>isarray": true, + "browserify>buffer": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": { + "globals": { + "Blob": true, + "File": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2>isarray": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-webrtc-star>webrtcsupport": { + "globals": { + "AudioContext": true, + "MediaStream": true, + "RTCIceCandidate": true, + "RTCPeerConnection": true, + "RTCSessionDescription": true, + "document": true, + "location.protocol": true, + "mozRTCIceCandidate": true, + "mozRTCPeerConnection": true, + "mozRTCSessionDescription": true, + "navigator.getUserMedia": true, + "navigator.mozGetUserMedia": true, + "navigator.msGetUserMedia": true, + "navigator.userAgent.match": true, + "navigator.webkitGetUserMedia": true, + "webkitAudioContext": true, + "webkitMediaStream": true, + "webkitRTCPeerConnection": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true, + "uuid": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>data-queue": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>debug": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>uuid": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>data-queue": { + "packages": { + "browserify>events": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>debug": { + "globals": { + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "analytics-node>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "3box>ipfs>libp2p-websockets": { + "packages": { + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-websockets>pull-ws": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multiaddr-to-uri": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "browserify>os-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p-websockets>pull-ws": { + "globals": { + "WebSocket": true, + "location": true + }, + "packages": { + "3box>ipfs>libp2p-websockets>pull-ws>relative-url": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>https-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>timers-browserify": true, + "browserify>url": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>libp2p-websockets>pull-ws>relative-url": { + "packages": { + "browserify>url": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager": { + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "document": true, + "performance": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug": true, + "browserify>events": true, + "browserify>process": true, + "lodash": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache": { + "packages": { + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache>lodash.throttle": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache>lodash.throttle": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>libp2p>libp2p-ping": { + "packages": { + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>pull-stream": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-switch": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>ipfs-bitswap>moving-average": true, + "3box>ipfs>libp2p-kad-dht>hashlru": true, + "3box>ipfs>libp2p>libp2p-switch>bignumber.js": true, + "3box>ipfs>libp2p>libp2p-switch>libp2p-circuit": true, + "3box>ipfs>libp2p>libp2p-switch>libp2p-identify": true, + "3box>ipfs>libp2p>libp2p-switch>multistream-select": true, + "3box>ipfs>libp2p>libp2p-switch>retimer": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>libp2p-circuit": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>libp2p-identify": { + "globals": { + "console.warn": true + }, + "packages": { + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>multistream-select": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-switch>multistream-select>semver": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>varint": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>multistream-select>semver": { + "globals": { + "console": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>retimer": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>mafmt": { + "packages": { + "3box>ipfs>multiaddr": true + } + }, + "3box>ipfs>merge-options": { + "packages": { + "geckodriver>got>is-plain-obj": true + } + }, + "3box>ipfs>multiaddr": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>class-is": true, + "3box>ipfs>multiaddr>hi-base32": true, + "3box>ipfs>multiaddr>is-ip": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "react-devtools>ip": true + } + }, + "3box>ipfs>multiaddr-to-uri": { + "packages": { + "3box>ipfs>multiaddr": true + } + }, + "3box>ipfs>multiaddr>hi-base32": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>ipfs>multiaddr>is-ip": { + "packages": { + "chromedriver>tcp-port-used>is2>ip-regex": true + } + }, + "3box>ipfs>multibase": { + "packages": { + "3box>ipfs>multibase>base-x": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multibase>base-x": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>multicodec": { + "packages": { + "3box>ipfs>varint": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multihashes": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>varint": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>multihashing-async>murmurhash3js": { + "globals": { + "define": true + } + }, + "3box>ipfs>multihashing-async>nodeify": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>multihashing-async>nodeify>is-promise": true, + "3box>ipfs>multihashing-async>nodeify>promise": true, + "browserify>process": true, + "browserify>timers-browserify": true + } + }, + "3box>ipfs>multihashing-async>nodeify>promise": { + "globals": { + "setImediate": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>multihashing-async>nodeify>is-promise": true, + "browserify>process": true + } + }, + "3box>ipfs>peer-book": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>peer-id": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>multihashes": true, + "browserify>assert": true, + "browserify>buffer": true + } + }, + "3box>ipfs>peer-info": { + "packages": { + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info>unique-by": true, + "browserify>assert": true + } + }, + "3box>ipfs>protons": { + "packages": { + "3box>ipfs>protons>protocol-buffers-schema": true, + "3box>ipfs>protons>signed-varint": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>protons>signed-varint": { + "packages": { + "3box>ipfs>varint": true + } + }, + "3box>ipfs>pull-mplex": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>pull-abortable": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-mplex>looper": true, + "3box>ipfs>pull-mplex>pull-through": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>pull-mplex>interface-connection": { + "packages": { + "3box>ipfs>pull-defer": true + } + }, + "3box>ipfs>pull-mplex>pull-through": { + "packages": { + "3box>ipfs>stream-to-pull-stream>looper": true + } + }, + "3box>ipfs>pull-sort": { + "packages": { + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-stream": true + } + }, + "3box>ipfs>pull-stream": { + "globals": { + "console.log": true + } + }, + "3box>ipfs>pull-stream-to-async-iterator": { + "packages": { + "3box>ipfs>pull-stream": true + } + }, + "3box>ipfs>pull-stream-to-stream": { + "packages": { + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>timers-browserify": true + } + }, + "3box>ipfs>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>receptacle": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "analytics-node>ms": true + } + }, + "3box>ipfs>stream-to-pull-stream": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>pull-stream": true, + "3box>ipfs>stream-to-pull-stream>looper": true, + "browserify>process": true + } + }, + "3box>js-sha256": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>muport-did-resolver": { + "packages": { + "3box>did-jwt>did-resolver": true, + "@babel/runtime": true, + "node-fetch": true + } + }, + "3box>orbit-db": { + "globals": { + "console.log": true + }, + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>multihashes": true, + "3box>orbit-db>ipfs-pubsub-1on1": true, + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-cache": true, + "3box>orbit-db>orbit-db-counterstore": true, + "3box>orbit-db>orbit-db-docstore": true, + "3box>orbit-db>orbit-db-eventstore": true, + "3box>orbit-db>orbit-db-feedstore": true, + "3box>orbit-db>orbit-db-identity-provider": true, + "3box>orbit-db>orbit-db-io": true, + "3box>orbit-db>orbit-db-keystore": true, + "3box>orbit-db>orbit-db-kvstore": true, + "3box>orbit-db>orbit-db-pubsub": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>ipfs-pubsub-1on1": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "3box>orbit-db>ipfs-pubsub-1on1>safe-buffer": true, + "browserify>events": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>ipfs-pubsub-1on1>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "3box>orbit-db>logplease": { + "globals": { + "LOG": true, + "console.error": true, + "console.log": true + }, + "packages": { + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>util": true + } + }, + "3box>orbit-db>orbit-db-access-controllers": { + "globals": { + "console.log": true + }, + "packages": { + "3box>orbit-db>orbit-db-access-controllers>p-map-series": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>events": true, + "browserify>path-browserify": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>orbit-db>orbit-db-access-controllers>p-map-series": { + "packages": { + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>orbit-db>orbit-db-cache": { + "packages": { + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-cache>level-js": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.upperBound": true, + "indexedDB": true + }, + "packages": { + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": true, + "3box>orbit-db>orbit-db-cache>level-js>immediate": true, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "pumpify>inherits": true, + "stylelint>write-file-atomic>typedarray-to-buffer": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>immediate": { + "globals": { + "MessageChannel": true, + "MutationObserver": true, + "WebKitMutationObserver": true, + "clearTimeout": true, + "document.createElement": true, + "document.createTextNode": true, + "document.documentElement.appendChild": true, + "setImmediate": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>orbit-db>orbit-db-counterstore": { + "packages": { + "3box>orbit-db>orbit-db-counterstore>crdts": true, + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-docstore": { + "packages": { + "3box>orbit-db>orbit-db-docstore>p-map": true, + "3box>orbit-db>orbit-db-store": true, + "readable-stream": true + } + }, + "3box>orbit-db>orbit-db-eventstore": { + "packages": { + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-feedstore": { + "packages": { + "3box>orbit-db>orbit-db-eventstore": true + } + }, + "3box>orbit-db>orbit-db-identity-provider": { + "packages": { + "3box>orbit-db>orbit-db-keystore": true + } + }, + "3box>orbit-db>orbit-db-io": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-dag-pb": true, + "browserify>buffer": true + } + }, + "3box>orbit-db>orbit-db-keystore": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "3box>ethers>elliptic": true, + "3box>ipfs>libp2p-crypto": true, + "3box>orbit-db>orbit-db-cache>level-js": true, + "3box>orbit-db>orbit-db-keystore>levelup": true, + "3box>orbit-db>orbit-db-keystore>lru": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup": { + "packages": { + "3box>orbit-db>orbit-db-keystore>levelup>deferred-leveldown": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream": true, + "browserify>assert": true, + "browserify>events": true, + "browserify>process": true, + "browserify>util": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>deferred-leveldown": { + "packages": { + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": { + "packages": { + "webpack>memory-fs>errno": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream": { + "packages": { + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream>readable-stream": true, + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-keystore>lru": { + "packages": { + "browserify>events": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-kvstore": { + "packages": { + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-pubsub": { + "packages": { + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-pubsub>ipfs-pubsub-peer-monitor": true, + "3box>orbit-db>orbit-db-pubsub>p-series": true, + "browserify>buffer": true + } + }, + "3box>orbit-db>orbit-db-pubsub>ipfs-pubsub-peer-monitor": { + "globals": { + "clearInterval": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "browserify>events": true + } + }, + "3box>orbit-db>orbit-db-pubsub>p-series": { + "packages": { + "3box>orbit-db>orbit-db-pubsub>p-series>@sindresorhus/is": true, + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>orbit-db>orbit-db-pubsub>p-series>@sindresorhus/is": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>util": true + } + }, + "3box>orbit-db>orbit-db-store": { + "globals": { + "clearInterval": true, + "console.error": true, + "console.warn": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>ipfs>libp2p-kad-dht>p-times>p-map": true, + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-io": true, + "3box>orbit-db>orbit-db-store>p-each-series": true, + "browserify>buffer": true, + "browserify>events": true, + "readable-stream": true + } + }, + "3box>orbit-db>orbit-db-store>p-each-series": { + "packages": { + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>store": { + "globals": { + "ActiveXObject": true, + "console": true + } + }, + "3box>tweetnacl": { + "globals": { + "crypto": true, + "msCrypto": true, + "nacl": "write" + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "3box>tweetnacl-util": { + "globals": { + "atob": true, + "btoa": true + }, + "packages": { + "browserify>browser-resolve": true } }, "@babel/runtime": { "packages": { - "regenerator-runtime": true + "@storybook/api>regenerator-runtime": true } }, "@download/blockies": { @@ -77,326 +2215,133 @@ "console.warn": true }, "packages": { - "buffer": true, - "cids": true, - "js-base64": true, - "multicodec": true, - "multihashes": true + "@ensdomains/content-hash>cids": true, + "@ensdomains/content-hash>js-base64": true, + "@ensdomains/content-hash>multicodec": true, + "@ensdomains/content-hash>multihashes": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>cids": { + "packages": { + "@ensdomains/content-hash>cids>multibase": true, + "@ensdomains/content-hash>cids>multicodec": true, + "@ensdomains/content-hash>cids>multihashes": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>multibase": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@ensdomains/content-hash>cids>multibase>@multiformats/base-x": true + } + }, + "@ensdomains/content-hash>cids>multicodec": { + "packages": { + "@ensdomains/content-hash>cids>multicodec>varint": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>multihashes": { + "packages": { + "3box>ipfs>varint": true, + "@ensdomains/content-hash>cids>multibase": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>uint8arrays": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@ensdomains/content-hash>cids>multibase": true + } + }, + "@ensdomains/content-hash>js-base64": { + "globals": { + "Base64": "write", + "TextDecoder": true, + "TextEncoder": true, + "atob": true, + "btoa": true, + "define": true + }, + "packages": { + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multicodec": { + "packages": { + "@ensdomains/content-hash>multicodec>uint8arrays": true, + "@ensdomains/content-hash>multicodec>varint": true + } + }, + "@ensdomains/content-hash>multicodec>uint8arrays": { + "packages": { + "@ensdomains/content-hash>multicodec>uint8arrays>multibase": true, + "@ensdomains/content-hash>multihashes>web-encoding": true + } + }, + "@ensdomains/content-hash>multicodec>uint8arrays>multibase": { + "packages": { + "@ensdomains/content-hash>cids>multibase>@multiformats/base-x": true, + "@ensdomains/content-hash>multihashes>web-encoding": true + } + }, + "@ensdomains/content-hash>multihashes": { + "packages": { + "3box>ipfs>varint": true, + "@ensdomains/content-hash>multihashes>multibase": true, + "@ensdomains/content-hash>multihashes>web-encoding": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multihashes>multibase": { + "packages": { + "3box>ipfs>bs58>base-x": true, + "@ensdomains/content-hash>multihashes>web-encoding": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multihashes>web-encoding": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>util": true } }, "@eth-optimism/contracts": { "packages": { - "@ethersproject/abstract-provider": true, - "ethers": true + "ethers": true, + "ethers>@ethersproject/abstract-provider": true } }, "@ethereumjs/common": { "packages": { - "buffer": true, - "crc-32": true, - "ethereumjs-util": true, - "events": true + "@ethereumjs/common>crc-32": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util": true + } + }, + "@ethereumjs/common>crc-32": { + "globals": { + "DO_NOT_EXPORT_CRC": true, + "define": true } }, "@ethereumjs/tx": { "packages": { "@ethereumjs/common": true, - "buffer": true, - "ethereumjs-util": true, - "is-buffer": true - } - }, - "@ethersproject/abi": { - "globals": { - "console.log": true - }, - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/hash": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/abstract-provider": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/abstract-signer": { - "packages": { - "@ethersproject/logger": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/address": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/rlp": true - } - }, - "@ethersproject/base64": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "@ethersproject/bytes": true - } - }, - "@ethersproject/basex": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/bignumber": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "bn.js": true - } - }, - "@ethersproject/bytes": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/constants": { - "packages": { - "@ethersproject/bignumber": true - } - }, - "@ethersproject/contracts": { - "globals": { - "setTimeout": true - }, - "packages": { - "@ethersproject/abi": true, - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/transactions": true - } - }, - "@ethersproject/hash": { - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/hdnode": { - "packages": { - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/pbkdf2": true, - "@ethersproject/properties": true, - "@ethersproject/sha2": true, - "@ethersproject/signing-key": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/wordlists": true - } - }, - "@ethersproject/json-wallets": { - "packages": { - "@ethersproject/address": true, - "@ethersproject/bytes": true, - "@ethersproject/hdnode": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/pbkdf2": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "aes-js": true, - "scrypt-js": true - } - }, - "@ethersproject/keccak256": { - "packages": { - "@ethersproject/bytes": true, - "js-sha3": true - } - }, - "@ethersproject/logger": { - "globals": { - "console": true - } - }, - "@ethersproject/networks": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/pbkdf2": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/sha2": true - } - }, - "@ethersproject/properties": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/providers": { - "globals": { - "WebSocket": true, - "clearInterval": true, - "clearTimeout": true, - "console.log": true, - "console.warn": true, - "name": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/hash": true, - "@ethersproject/logger": true, - "@ethersproject/networks": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/sha2": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/web": true, - "bech32": true - } - }, - "@ethersproject/random": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/rlp": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/sha2": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "hash.js": true - } - }, - "@ethersproject/signing-key": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "elliptic": true - } - }, - "@ethersproject/solidity": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/sha2": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/strings": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/transactions": { - "globals": { - "console.log": true - }, - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/rlp": true, - "@ethersproject/signing-key": true - } - }, - "@ethersproject/units": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/wallet": { - "packages": { - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/bytes": true, - "@ethersproject/hash": true, - "@ethersproject/hdnode": true, - "@ethersproject/json-wallets": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/signing-key": true, - "@ethersproject/transactions": true - } - }, - "@ethersproject/web": { - "globals": { - "clearTimeout": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@ethersproject/base64": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/wordlists": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/hash": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-util": true } }, "@formatjs/intl-relativetimeformat": { @@ -404,55 +2349,109 @@ "Intl": true }, "packages": { - "@formatjs/intl-utils": true + "@formatjs/intl-relativetimeformat>@formatjs/intl-utils": true } }, - "@formatjs/intl-utils": { + "@formatjs/intl-relativetimeformat>@formatjs/intl-utils": { "globals": { "Intl.getCanonicalLocales": true } }, - "@keystonehq/base-eth-keyring": { + "@keystonehq/bc-ur-registry-eth": { "packages": { - "@ethereumjs/tx": true, - "@keystonehq/bc-ur-registry-eth": true, - "buffer": true, + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, "ethereumjs-util": true, - "hdkey": true, "uuid": true } }, - "@keystonehq/bc-ur-registry": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { "globals": { "define": true }, "packages": { "@ngraveio/bc-ur": true, - "bs58check": true, - "buffer": true + "browserify>buffer": true, + "ethereumjs-wallet>bs58check": true } }, - "@keystonehq/bc-ur-registry-eth": { + "@keystonehq/bc-ur-registry-eth>hdkey": { "packages": { - "@keystonehq/bc-ur-registry": true, - "buffer": true, - "ethereumjs-util": true, - "hdkey": true, - "uuid": true + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": true, + "browserify>assert": true, + "browserify>crypto-browserify": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": { + "packages": { + "3box>ethers>elliptic": true } }, "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, - "@keystonehq/base-eth-keyring": true, - "@keystonehq/bc-ur-registry-eth": true, - "@metamask/obs-store": true, - "buffer": true, - "events": true, - "rlp": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util>rlp": true, "uuid": true } }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": { + "packages": { + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/tx": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/common": true, + "browserify>buffer": true, + "ethereumjs-util": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { + "packages": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { + "packages": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { + "packages": { + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, "@material-ui/core": { "globals": { "Image": true, @@ -477,20 +2476,20 @@ }, "packages": { "@babel/runtime": true, - "@material-ui/styles": true, - "@material-ui/system": true, - "@material-ui/utils": true, - "clsx": true, - "hoist-non-react-statics": true, - "popper.js": true, + "@material-ui/core>@material-ui/styles": true, + "@material-ui/core>@material-ui/system": true, + "@material-ui/core>@material-ui/utils": true, + "@material-ui/core>clsx": true, + "@material-ui/core>popper.js": true, + "@material-ui/core>react-transition-group": true, "prop-types": true, + "prop-types>react-is": true, "react": true, "react-dom": true, - "react-is": true, - "react-transition-group": true + "react-redux>hoist-non-react-statics": true } }, - "@material-ui/styles": { + "@material-ui/core>@material-ui/styles": { "globals": { "console.error": true, "console.warn": true, @@ -499,36 +2498,135 @@ }, "packages": { "@babel/runtime": true, - "@material-ui/utils": true, - "clsx": true, - "hoist-non-react-statics": true, - "jss": true, - "jss-plugin-camel-case": true, - "jss-plugin-default-unit": true, - "jss-plugin-global": true, - "jss-plugin-nested": true, - "jss-plugin-props-sort": true, - "jss-plugin-rule-value-function": true, - "jss-plugin-vendor-prefixer": true, + "@material-ui/core>@material-ui/styles>jss": true, + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case": true, + "@material-ui/core>@material-ui/styles>jss-plugin-default-unit": true, + "@material-ui/core>@material-ui/styles>jss-plugin-global": true, + "@material-ui/core>@material-ui/styles>jss-plugin-nested": true, + "@material-ui/core>@material-ui/styles>jss-plugin-props-sort": true, + "@material-ui/core>@material-ui/styles>jss-plugin-rule-value-function": true, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer": true, + "@material-ui/core>@material-ui/utils": true, + "@material-ui/core>clsx": true, "prop-types": true, - "react": true + "react": true, + "react-redux>hoist-non-react-statics": true } }, - "@material-ui/system": { + "@material-ui/core>@material-ui/styles>jss": { + "globals": { + "CSS": true, + "document.createElement": true, + "document.querySelector": true + }, + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case": { + "packages": { + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case>hyphenate-style-name": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-default-unit": { + "globals": { + "CSS": true + }, + "packages": { + "@material-ui/core>@material-ui/styles>jss": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-global": { + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-nested": { + "packages": { + "@babel/runtime": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-rule-value-function": { + "packages": { + "@material-ui/core>@material-ui/styles>jss": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer": { + "packages": { + "@material-ui/core>@material-ui/styles>jss": true, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer>css-vendor": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer>css-vendor": { + "globals": { + "document.createElement": true, + "document.documentElement": true, + "getComputedStyle": true + }, + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": true + } + }, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": { + "globals": { + "document": true + } + }, + "@material-ui/core>@material-ui/system": { "globals": { "console.error": true }, "packages": { "@babel/runtime": true, - "@material-ui/utils": true, + "@material-ui/core>@material-ui/utils": true, "prop-types": true } }, - "@material-ui/utils": { + "@material-ui/core>@material-ui/utils": { "packages": { "@babel/runtime": true, "prop-types": true, - "react-is": true + "prop-types>react-is": true + } + }, + "@material-ui/core>popper.js": { + "globals": { + "MSInputMethodContext": true, + "Node.DOCUMENT_POSITION_FOLLOWING": true, + "cancelAnimationFrame": true, + "console.warn": true, + "define": true, + "devicePixelRatio": true, + "document": true, + "getComputedStyle": true, + "innerHeight": true, + "innerWidth": true, + "navigator": true, + "requestAnimationFrame": true, + "setTimeout": true + } + }, + "@material-ui/core>react-transition-group": { + "globals": { + "Element": true, + "setTimeout": true + }, + "packages": { + "@material-ui/core>react-transition-group>dom-helpers": true, + "prop-types": true, + "react": true, + "react-dom": true + } + }, + "@material-ui/core>react-transition-group>dom-helpers": { + "packages": { + "@babel/runtime": true } }, "@metamask/controllers": { @@ -547,36 +2645,314 @@ "@ethereumjs/common": true, "@ethereumjs/tx": true, "@metamask/contract-metadata": true, + "@metamask/controllers>abort-controller": true, + "@metamask/controllers>async-mutex": true, + "@metamask/controllers>eth-method-registry": true, + "@metamask/controllers>eth-phishing-detect": true, + "@metamask/controllers>ethereumjs-wallet": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/controllers>multiformats": true, + "@metamask/controllers>nanoid": true, + "@metamask/controllers>web3-provider-engine": true, "@metamask/metamask-eth-abis": true, - "abort-controller": true, - "async-mutex": true, - "buffer": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>events": true, "deep-freeze-strict": true, "eth-ens-namehash": true, "eth-json-rpc-infura": true, "eth-keyring-controller": true, - "eth-method-registry": true, - "eth-phishing-detect": true, "eth-query": true, "eth-rpc-errors": true, "eth-sig-util": true, "ethereumjs-util": true, - "ethereumjs-wallet": true, "ethers": true, - "ethjs-unit": true, - "events": true, - "fast-deep-equal": true, + "ethjs>ethjs-unit": true, "immer": true, - "isomorphic-fetch": true, "json-rpc-engine": true, "jsonschema": true, - "multiformats": true, - "nanoid": true, "punycode": true, "single-call-balance-checker-abi": true, "uuid": true, - "web3": true, - "web3-provider-engine": true + "web3": true + } + }, + "@metamask/controllers>abort-controller": { + "globals": { + "AbortController": true + } + }, + "@metamask/controllers>async-mutex": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/controllers>async-mutex>tslib": true + } + }, + "@metamask/controllers>async-mutex>tslib": { + "globals": { + "define": true + } + }, + "@metamask/controllers>eth-method-registry": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-abi": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-query": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-abi": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract>ethjs-abi": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, + "promise-to-callback": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract>ethjs-abi": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-query": { + "globals": { + "console": true + }, + "packages": { + "ethjs-query>babel-runtime": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, + "promise-to-callback": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "@metamask/controllers>eth-phishing-detect": { + "packages": { + "eslint>optionator>fast-levenshtein": true + } + }, + "@metamask/controllers>ethereumjs-wallet": { + "packages": { + "@metamask/controllers>ethereumjs-wallet>uuid": true, + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "ethereumjs-util": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "@metamask/controllers>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "@metamask/controllers>isomorphic-fetch": { + "globals": { + "fetch.bind": true + }, + "packages": { + "@metamask/controllers>isomorphic-fetch>whatwg-fetch": true + } + }, + "@metamask/controllers>isomorphic-fetch>whatwg-fetch": { + "globals": { + "Blob": true, + "FileReader": true, + "FormData": true, + "URLSearchParams.prototype.isPrototypeOf": true, + "XMLHttpRequest": true, + "define": true, + "setTimeout": true + } + }, + "@metamask/controllers>multiformats": { + "globals": { + "TextDecoder": true, + "TextEncoder": true, + "console.warn": true + } + }, + "@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/controllers>web3-provider-engine": { + "globals": { + "WebSocket": true, + "console": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "@ethereumjs/tx": true, + "@metamask/controllers>web3-provider-engine>backoff": true, + "@metamask/controllers>web3-provider-engine>eth-block-tracker": true, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware": true, + "@metamask/controllers>web3-provider-engine>eth-sig-util": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": true, + "@metamask/controllers>web3-provider-engine>semaphore": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>util": true, + "eth-json-rpc-filters": true, + "eth-json-rpc-infura": true, + "lavamoat>json-stable-stringify": true, + "watchify>xtend": true + } + }, + "@metamask/controllers>web3-provider-engine>backoff": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>backoff>precond": true, + "browserify>events": true, + "browserify>util": true + } + }, + "@metamask/controllers>web3-provider-engine>backoff>precond": { + "packages": { + "browserify>util": true + } + }, + "@metamask/controllers>web3-provider-engine>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-block-tracker": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>eth-block-tracker>pify": true, + "eth-query": true, + "safe-event-emitter": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware": { + "globals": { + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>json-rpc-engine": true, + "@metamask/controllers>web3-provider-engine>eth-rpc-errors": true, + "browserify>url": true, + "lavamoat>json-stable-stringify": true, + "node-fetch": true, + "source-map-explorer>btoa": true, + "vinyl>clone": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>node-fetch": { + "globals": { + "fetch": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-rpc-errors": { + "packages": { + "eth-rpc-errors>fast-safe-stringify": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util": { + "packages": { + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi": { + "packages": { + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi>ethereumjs-util": true, + "bn.js": true, + "browserify>buffer": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "@metamask/controllers>web3-provider-engine>semaphore": { + "globals": { + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true } }, "@metamask/eth-ledger-bridge-keyring": { @@ -585,25 +2961,54 @@ "console.log": true, "document.createElement": true, "document.head.appendChild": true, - "fetch": true + "fetch": true, + "removeEventListener": true }, "packages": { "@ethereumjs/tx": true, - "buffer": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "events": true, - "hdkey": true + "@metamask/eth-ledger-bridge-keyring>eth-sig-util": true, + "@metamask/eth-ledger-bridge-keyring>hdkey": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util": true } }, - "@metamask/eth-sig-util": { + "@metamask/eth-ledger-bridge-keyring>eth-sig-util": { "packages": { - "buffer": true, - "ethereumjs-abi": true, - "ethereumjs-util": true, - "ethjs-util": true, - "tweetnacl": true, - "tweetnacl-util": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": true, + "browserify>buffer": true, + "ethereumjs-abi": true + } + }, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "@metamask/eth-ledger-bridge-keyring>hdkey": { + "packages": { + "browserify>assert": true, + "browserify>crypto-browserify": true, + "eth-trezor-keyring>hdkey>coinstring": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true } }, "@metamask/eth-token-tracker": { @@ -612,15 +3017,88 @@ }, "packages": { "@babel/runtime": true, - "deep-equal": true, - "eth-block-tracker": true, - "ethjs": true, + "@metamask/eth-token-tracker>eth-block-tracker": true, + "@metamask/eth-token-tracker>ethjs": true, + "@metamask/eth-token-tracker>human-standard-token-abi": true, "ethjs-contract": true, "ethjs-query": true, - "human-standard-token-abi": true, + "nock>deep-equal": true, "safe-event-emitter": true } }, + "@metamask/eth-token-tracker>eth-block-tracker": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/eth-token-tracker>eth-block-tracker>pify": true, + "eth-query": true, + "safe-event-emitter": true + } + }, + "@metamask/eth-token-tracker>ethjs": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>ethjs-abi": true, + "@metamask/eth-token-tracker>ethjs>ethjs-contract": true, + "@metamask/eth-token-tracker>ethjs>ethjs-query": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-abi": { + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-contract": { + "packages": { + "@metamask/eth-token-tracker>ethjs>ethjs-contract>ethjs-abi": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, + "promise-to-callback": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-contract>ethjs-abi": { + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-query": { + "globals": { + "console": true + }, + "packages": { + "ethjs-query>babel-runtime": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, + "promise-to-callback": true + } + }, + "@metamask/eth-token-tracker>ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, "@metamask/etherscan-link": { "globals": { "URL": true @@ -632,18 +3110,30 @@ "document.createElementNS": true }, "packages": { - "color": true, - "mersenne-twister": true + "@metamask/jazzicon>color": true, + "@metamask/jazzicon>mersenne-twister": true } }, - "@metamask/key-tree": { + "@metamask/jazzicon>color": { "packages": { - "bip39": true, - "buffer": true, - "crypto-browserify": true, - "is-buffer": true, - "keccak": true, - "secp256k1": true + "@metamask/jazzicon>color>clone": true, + "@metamask/jazzicon>color>color-convert": true, + "@metamask/jazzicon>color>color-string": true + } + }, + "@metamask/jazzicon>color>clone": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask/jazzicon>color>color-convert": { + "packages": { + "@metamask/jazzicon>color>color-convert>color-name": true + } + }, + "@metamask/jazzicon>color>color-string": { + "packages": { + "jest-canvas-mock>moo-color>color-name": true } }, "@metamask/logo": { @@ -656,18 +3146,8 @@ "requestAnimationFrame": true }, "packages": { - "gl-mat4": true, - "gl-vec3": true - } - }, - "@metamask/object-multiplex": { - "globals": { - "console.warn": true - }, - "packages": { - "end-of-stream": true, - "once": true, - "readable-stream": true + "@metamask/logo>gl-mat4": true, + "@metamask/logo>gl-vec3": true } }, "@metamask/obs-store": { @@ -675,9 +3155,17 @@ "localStorage": true }, "packages": { - "@metamask/safe-event-emitter": true, - "stream-browserify": true, - "through2": true + "@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true } }, "@metamask/post-message-stream": { @@ -689,23 +3177,101 @@ "removeEventListener": true }, "packages": { + "@metamask/post-message-stream>readable-stream": true + } + }, + "@metamask/post-message-stream>readable-stream": { + "packages": { + "@metamask/post-message-stream>readable-stream>safe-buffer": true, + "@metamask/post-message-stream>readable-stream>string_decoder": true, + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>timers-browserify": true, + "pumpify>inherits": true, + "readable-stream>core-util-is": true, + "readable-stream>isarray": true, + "vinyl>cloneable-readable>process-nextick-args": true + } + }, + "@metamask/post-message-stream>readable-stream>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask/post-message-stream>readable-stream>string_decoder": { + "packages": { + "@metamask/post-message-stream>readable-stream>safe-buffer": true + } + }, + "@metamask/providers>@metamask/object-multiplex": { + "globals": { + "console.warn": true + }, + "packages": { + "end-of-stream": true, + "pump>once": true, "readable-stream": true } }, "@metamask/rpc-methods": { "packages": { "@metamask/controllers": true, - "@metamask/key-tree": true, + "@metamask/rpc-methods>@metamask/key-tree": true, + "@metamask/rpc-methods>@metamask/utils": true, "@metamask/snap-controllers": true, "eth-rpc-errors": true } }, - "@metamask/safe-event-emitter": { + "@metamask/rpc-methods>@metamask/key-tree": { + "packages": { + "@metamask/rpc-methods>@metamask/key-tree>@noble/ed25519": true, + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": true, + "@metamask/rpc-methods>@metamask/key-tree>@noble/secp256k1": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/bip39": true, + "browserify>buffer": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/ed25519": { "globals": { - "setTimeout": true + "crypto": true }, "packages": { - "events": true + "browserify>browser-resolve": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true, + "setTimeout": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/secp256k1": { + "globals": { + "crypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@scure/bip39": { + "packages": { + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": true + } + }, + "@metamask/rpc-methods>@metamask/utils": { + "packages": { + "@storybook/api>fast-deep-equal": true } }, "@metamask/smart-transactions-controller": { @@ -715,62 +3281,331 @@ "console.error": true, "console.log": true, "fetch": true, - "setInterval": true, - "setTimeout": true + "setInterval": true }, "packages": { "@metamask/controllers": true, - "bignumber.js": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/smart-transactions-controller>bignumber.js": true, + "@metamask/smart-transactions-controller>fast-json-patch": true, "ethers": true, - "fast-json-patch": true, - "isomorphic-fetch": true, "lodash": true } }, + "@metamask/smart-transactions-controller>@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/smart-transactions-controller>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@metamask/smart-transactions-controller>fast-json-patch": { + "globals": { + "addEventListener": true, + "clearTimeout": true, + "removeEventListener": true, + "setTimeout": true + } + }, "@metamask/snap-controllers": { "globals": { "URL": true, "Worker": true, "clearTimeout": true, "console.error": true, + "console.info": true, "console.log": true, "console.warn": true, + "document.body.appendChild": true, + "document.createElement": true, + "document.getElementById": true, + "fetch": true, "setTimeout": true }, "packages": { - "@metamask/controllers": true, - "@metamask/execution-environments": true, - "@metamask/object-multiplex": true, - "@metamask/obs-store": true, "@metamask/post-message-stream": true, - "@metamask/safe-event-emitter": true, - "ajv": true, - "buffer": true, - "concat-stream": true, - "cross-fetch": true, - "crypto-browserify": true, + "@metamask/providers>@metamask/object-multiplex": true, + "@metamask/rpc-methods>@metamask/utils": true, + "@metamask/snap-controllers>@metamask/controllers": true, + "@metamask/snap-controllers>@metamask/execution-environments": true, + "@metamask/snap-controllers>@metamask/obs-store": true, + "@metamask/snap-controllers>ajv": true, + "@metamask/snap-controllers>concat-stream": true, + "@metamask/snap-controllers>gunzip-maybe": true, + "@metamask/snap-controllers>json-rpc-middleware-stream": true, + "@metamask/snap-controllers>nanoid": true, + "@metamask/snap-controllers>readable-web-to-node-stream": true, + "@metamask/snap-controllers>tar-stream": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, "eth-rpc-errors": true, - "fast-deep-equal": true, - "gunzip-maybe": true, "json-rpc-engine": true, - "json-rpc-middleware-stream": true, - "nanoid": true, + "json-rpc-engine>@metamask/safe-event-emitter": true, "pump": true, - "readable-web-to-node-stream": true, - "semver": true, - "tar-stream": true + "semver": true + } + }, + "@metamask/snap-controllers>@metamask/controllers": { + "globals": { + "Headers": true, + "URL": true, + "clearInterval": true, + "clearTimeout": true, + "console.error": true, + "console.log": true, + "fetch": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@metamask/contract-metadata": true, + "@metamask/controllers>abort-controller": true, + "@metamask/controllers>async-mutex": true, + "@metamask/controllers>eth-phishing-detect": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/controllers>multiformats": true, + "@metamask/controllers>web3-provider-engine": true, + "@metamask/metamask-eth-abis": true, + "@metamask/snap-controllers>nanoid": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>events": true, + "deep-freeze-strict": true, + "eth-ens-namehash": true, + "eth-json-rpc-infura": true, + "eth-keyring-controller": true, + "eth-method-registry": true, + "eth-query": true, + "eth-rpc-errors": true, + "eth-sig-util": true, + "ethereumjs-util": true, + "ethereumjs-wallet": true, + "ethers": true, + "ethjs>ethjs-unit": true, + "immer": true, + "json-rpc-engine": true, + "jsonschema": true, + "punycode": true, + "single-call-balance-checker-abi": true, + "uuid": true, + "web3": true + } + }, + "@metamask/snap-controllers>@metamask/obs-store": { + "packages": { + "@metamask/snap-controllers>@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@metamask/snap-controllers>@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>ajv": { + "packages": { + "@storybook/api>fast-deep-equal": true + } + }, + "@metamask/snap-controllers>concat-stream": { + "packages": { + "@metamask/snap-controllers>concat-stream>readable-stream": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>concat-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>gunzip-maybe": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib": true, + "@metamask/snap-controllers>gunzip-maybe>is-deflate": true, + "@metamask/snap-controllers>gunzip-maybe>is-gzip": true, + "@metamask/snap-controllers>gunzip-maybe>peek-stream": true, + "@metamask/snap-controllers>gunzip-maybe>pumpify": true, + "@metamask/snap-controllers>gunzip-maybe>through2": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib>pako": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>util": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>peek-stream>duplexify": true, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>through2": true, + "browserify>buffer": true, + "terser>source-map-support>buffer-from": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>duplexify": { + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>pumpify>duplexify": true, + "@metamask/snap-controllers>gunzip-maybe>pumpify>pump": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify>duplexify": { + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify>pump": { + "packages": { + "browserify>browser-resolve": true, + "end-of-stream": true, + "pump>once": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>json-rpc-middleware-stream": { + "globals": { + "setTimeout": true + }, + "packages": { + "json-rpc-engine>@metamask/safe-event-emitter": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/snap-controllers>readable-web-to-node-stream": { + "packages": { + "@metamask/snap-controllers>readable-web-to-node-stream>readable-stream": true + } + }, + "@metamask/snap-controllers>readable-web-to-node-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream": { + "packages": { + "@metamask/snap-controllers>tar-stream>bl": true, + "@metamask/snap-controllers>tar-stream>fs-constants": true, + "@metamask/snap-controllers>tar-stream>readable-stream": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>string_decoder": true, + "browserify>util": true, + "end-of-stream": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream>bl": { + "packages": { + "@metamask/snap-controllers>tar-stream>readable-stream": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream>fs-constants": { + "packages": { + "browserify>constants-browserify": true + } + }, + "@metamask/snap-controllers>tar-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, "@ngraveio/bc-ur": { "packages": { - "@apocentre/alias-sampling": true, - "assert": true, - "bignumber.js": true, - "buffer": true, - "cbor-sync": true, - "crc": true, - "jsbi": true, - "sha.js": true + "@ngraveio/bc-ur>@apocentre/alias-sampling": true, + "@ngraveio/bc-ur>bignumber.js": true, + "@ngraveio/bc-ur>crc": true, + "@ngraveio/bc-ur>jsbi": true, + "addons-linter>sha.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "pubnub>cbor-sync": true + } + }, + "@ngraveio/bc-ur>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@ngraveio/bc-ur>crc": { + "packages": { + "browserify>buffer": true + } + }, + "@ngraveio/bc-ur>jsbi": { + "globals": { + "define": true } }, "@popperjs/core": { @@ -794,18 +3629,10 @@ "console.warn": true }, "packages": { + "@reduxjs/toolkit>reselect": true, "immer": true, "redux": true, - "redux-thunk": true, - "reselect": true - } - }, - "@segment/loosely-validate-event": { - "packages": { - "assert": true, - "buffer": true, - "component-type": true, - "join-component": true + "redux-thunk": true } }, "@sentry/browser": { @@ -814,57 +3641,43 @@ "setTimeout": true }, "packages": { - "@sentry/core": true, - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/core": true, + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/core": { + "@sentry/browser>@sentry/core": { "globals": { "clearInterval": true, "setInterval": true }, "packages": { - "@sentry/hub": true, - "@sentry/minimal": true, - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/core>@sentry/hub": true, + "@sentry/browser>@sentry/core>@sentry/minimal": true, + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/hub": { + "@sentry/browser>@sentry/core>@sentry/hub": { "globals": { "clearInterval": true, "setInterval": true }, "packages": { - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/integrations": { - "globals": { - "clearTimeout": true, - "console.error": true, - "console.log": true, - "setTimeout": true - }, + "@sentry/browser>@sentry/core>@sentry/minimal": { "packages": { - "@sentry/types": true, - "@sentry/utils": true, - "localforage": true, - "tslib": true + "@sentry/browser>@sentry/core>@sentry/hub": true, + "@sentry/browser>tslib": true } }, - "@sentry/minimal": { - "packages": { - "@sentry/hub": true, - "tslib": true - } - }, - "@sentry/utils": { + "@sentry/browser>@sentry/utils": { "globals": { "CustomEvent": true, "DOMError": true, @@ -882,74 +3695,319 @@ "setTimeout": true }, "packages": { - "process": true, - "tslib": true + "@sentry/browser>tslib": true, + "browserify>process": true } }, - "@sindresorhus/is": { - "packages": { - "is-buffer": true, - "util": true + "@sentry/browser>tslib": { + "globals": { + "define": true } }, - "@truffle/abi-utils": { + "@sentry/integrations": { + "globals": { + "clearTimeout": true, + "console.error": true, + "console.log": true, + "setTimeout": true + }, "packages": { - "change-case": true, - "faker": true, - "fast-check": true + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true, + "localforage": true } }, - "@truffle/code-utils": { - "packages": { - "buffer": true, - "cbor": true + "@storybook/api>regenerator-runtime": { + "globals": { + "regeneratorRuntime": "write" + } + }, + "@storybook/api>util-deprecate": { + "globals": { + "console.trace": true, + "console.warn": true, + "localStorage": true + } + }, + "@storybook/client-api>stable": { + "globals": { + "define": true } }, "@truffle/codec": { "packages": { - "@truffle/abi-utils": true, - "@truffle/compile-common": true, - "big.js": true, - "bn.js": true, - "buffer": true, - "cbor": true, - "debug": true, - "lodash.clonedeep": true, - "lodash.escaperegexp": true, - "lodash.partition": true, - "lodash.sum": true, - "semver": true, - "utf8": true, - "util": true, - "web3-utils": true + "@truffle/codec>@truffle/abi-utils": true, + "@truffle/codec>@truffle/compile-common": true, + "@truffle/codec>big.js": true, + "@truffle/codec>bn.js": true, + "@truffle/codec>cbor": true, + "@truffle/codec>lodash.escaperegexp": true, + "@truffle/codec>lodash.partition": true, + "@truffle/codec>lodash.sum": true, + "@truffle/codec>utf8": true, + "@truffle/codec>web3-utils": true, + "browserify>buffer": true, + "browserify>util": true, + "eslint>debug": true, + "gulp-dart-sass>lodash.clonedeep": true, + "semver": true } }, - "@truffle/compile-common": { + "@truffle/codec>@truffle/abi-utils": { "packages": { - "@truffle/error": true, - "colors": true, - "path-browserify": true + "@truffle/codec>@truffle/abi-utils>change-case": true, + "@truffle/codec>@truffle/abi-utils>faker": true, + "@truffle/codec>@truffle/abi-utils>fast-check": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>constant-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>dot-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>header-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>is-lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>is-upper-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case-first": true, + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>param-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>pascal-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>path-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>sentence-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>swap-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>title-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>constant-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>dot-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>header-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>is-lower-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>is-upper-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case-first": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>no-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>param-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>pascal-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>path-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>sentence-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>swap-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>title-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>faker": { + "globals": { + "console.error": true, + "console.log": true, + "dbg": "write" + } + }, + "@truffle/codec>@truffle/abi-utils>fast-check": { + "globals": { + "clearTimeout": true, + "console.log": true, + "setTimeout": true + }, + "packages": { + "@truffle/codec>@truffle/abi-utils>fast-check>pure-rand": true, + "browserify>buffer": true + } + }, + "@truffle/codec>@truffle/compile-common": { + "packages": { + "@truffle/codec>@truffle/compile-common>@truffle/error": true, + "@truffle/codec>@truffle/compile-common>colors": true, + "browserify>path-browserify": true + } + }, + "@truffle/codec>@truffle/compile-common>colors": { + "globals": { + "console.log": true + }, + "packages": { + "browserify>os-browserify": true, + "browserify>process": true, + "browserify>util": true + } + }, + "@truffle/codec>big.js": { + "globals": { + "define": true + } + }, + "@truffle/codec>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@truffle/codec>cbor": { + "globals": { + "TextDecoder": true + }, + "packages": { + "@truffle/codec>cbor>bignumber.js": true, + "@truffle/codec>cbor>nofilter": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>stream-browserify": true, + "browserify>url": true, + "browserify>util": true + } + }, + "@truffle/codec>cbor>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@truffle/codec>cbor>nofilter": { + "packages": { + "browserify>buffer": true, + "browserify>stream-browserify": true, + "browserify>util": true + } + }, + "@truffle/codec>web3-utils": { + "globals": { + "setTimeout": true + }, + "packages": { + "@truffle/codec>utf8": true, + "@truffle/codec>web3-utils>eth-lib": true, + "@truffle/codec>web3-utils>ethereum-bloom-filters": true, + "bn.js": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-wallet>randombytes": true, + "ethjs>ethjs-unit": true, + "ethjs>number-to-bn": true + } + }, + "@truffle/codec>web3-utils>ethereum-bloom-filters": { + "packages": { + "ethers>@ethersproject/keccak256>js-sha3": true } }, "@truffle/decoder": { "packages": { - "@truffle/abi-utils": true, "@truffle/codec": true, - "@truffle/compile-common": true, - "@truffle/source-map-utils": true, - "bn.js": true, - "debug": true, - "web3-utils": true + "@truffle/codec>@truffle/abi-utils": true, + "@truffle/codec>@truffle/compile-common": true, + "@truffle/codec>web3-utils": true, + "@truffle/decoder>@truffle/source-map-utils": true, + "@truffle/decoder>bn.js": true, + "eslint>debug": true } }, - "@truffle/source-map-utils": { + "@truffle/decoder>@truffle/source-map-utils": { "packages": { - "@truffle/code-utils": true, "@truffle/codec": true, - "debug": true, - "json-pointer": true, - "node-interval-tree": true, - "web3-utils": true + "@truffle/codec>web3-utils": true, + "@truffle/decoder>@truffle/source-map-utils>@truffle/code-utils": true, + "@truffle/decoder>@truffle/source-map-utils>json-pointer": true, + "@truffle/decoder>@truffle/source-map-utils>node-interval-tree": true, + "eslint>debug": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>@truffle/code-utils": { + "packages": { + "@truffle/codec>cbor": true, + "browserify>buffer": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>json-pointer": { + "packages": { + "@truffle/decoder>@truffle/source-map-utils>json-pointer>foreach": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>node-interval-tree": { + "packages": { + "react-dnd>shallowequal": true + } + }, + "@truffle/decoder>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true } }, "@zxing/browser": { @@ -984,34 +4042,10 @@ "setTimeout": true } }, - "abort-controller": { - "globals": { - "AbortController": true - } - }, - "abstract-leveldown": { + "addons-linter>sha.js": { "packages": { - "buffer": true, - "immediate": true, - "is-buffer": true, - "level-supports": true, - "process": true, - "xtend": true - } - }, - "accounting": { - "globals": { - "define": true - } - }, - "aes-js": { - "globals": { - "define": true - } - }, - "ajv": { - "packages": { - "fast-deep-equal": true + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true } }, "analytics-node": { @@ -1022,91 +4056,27 @@ "setTimeout": true }, "packages": { - "@segment/loosely-validate-event": true, - "assert": true, - "axios": true, - "axios-retry": true, - "lodash.isstring": true, - "md5": true, - "ms": true, - "process": true, - "remove-trailing-slash": true, - "uuid": true + "analytics-node>@segment/loosely-validate-event": true, + "analytics-node>axios": true, + "analytics-node>axios-retry": true, + "analytics-node>lodash.isstring": true, + "analytics-node>md5": true, + "analytics-node>ms": true, + "analytics-node>remove-trailing-slash": true, + "analytics-node>uuid": true, + "browserify>assert": true, + "browserify>process": true } }, - "asap": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "document.createTextNode": true, - "setInterval": true, - "setTimeout": true - } - }, - "asn1.js": { + "analytics-node>@segment/loosely-validate-event": { "packages": { - "bn.js": true, - "buffer": true, - "inherits": true, - "minimalistic-assert": true, - "vm-browserify": true + "analytics-node>@segment/loosely-validate-event>component-type": true, + "analytics-node>@segment/loosely-validate-event>join-component": true, + "browserify>assert": true, + "browserify>buffer": true } }, - "assemblyscript": { - "globals": { - "WebAssembly.Instance": true, - "WebAssembly.Module": true, - "WebAssembly.instantiateStreaming": true, - "console.log": true - } - }, - "assert": { - "globals": { - "Buffer": true - }, - "packages": { - "object-assign": true, - "util": true - } - }, - "async": { - "globals": { - "clearTimeout": true, - "setTimeout": true - }, - "packages": { - "lodash": true, - "process": true, - "timers-browserify": true - } - }, - "async-iterator-to-pull-stream": { - "packages": { - "get-iterator": true, - "pull-stream-to-async-iterator": true - } - }, - "async-iterator-to-stream": { - "packages": { - "process": true, - "readable-stream": true - } - }, - "async-mutex": { - "globals": { - "setTimeout": true - }, - "packages": { - "tslib": true - } - }, - "await-semaphore": { - "packages": { - "process": true, - "timers-browserify": true - } - }, - "axios": { + "analytics-node>axios": { "globals": { "FormData": true, "URLSearchParams": true, @@ -1119,108 +4089,45 @@ "setTimeout": true }, "packages": { - "process": true + "browserify>process": true } }, - "axios-retry": { + "analytics-node>axios-retry": { "globals": { "setTimeout": true }, "packages": { - "is-retry-allowed": true + "geckodriver>got>is-retry-allowed": true } }, - "babel-runtime": { + "analytics-node>md5": { "packages": { - "core-js": true, - "regenerator-runtime": true + "analytics-node>md5>charenc": true, + "analytics-node>md5>crypt": true, + "browserify>insert-module-globals>is-buffer": true } }, - "backoff": { + "analytics-node>uuid": { "globals": { - "clearTimeout": true, - "setTimeout": true - }, - "packages": { - "events": true, - "precond": true, - "util": true + "crypto": true, + "msCrypto": true } }, - "base-x": { + "await-semaphore": { "packages": { - "safe-buffer": true + "browserify>process": true, + "browserify>timers-browserify": true } }, "base32-encode": { "packages": { - "to-data-view": true - } - }, - "base64url": { - "packages": { - "buffer": true - } - }, - "big.js": { - "globals": { - "define": true + "base32-encode>to-data-view": true } }, "bignumber.js": { "globals": { "crypto": true, "define": true - }, - "packages": { - "crypto-browserify": true - } - }, - "bip39": { - "globals": { - "console.log": true - }, - "packages": { - "buffer": true, - "create-hash": true, - "pbkdf2": true, - "randombytes": true, - "safe-buffer": true, - "unorm": true - } - }, - "bip66": { - "packages": { - "safe-buffer": true - } - }, - "bitwise": { - "packages": { - "buffer": true - } - }, - "bl": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true, - "util": true - } - }, - "blakejs": { - "globals": { - "console.log": true - }, - "packages": { - "buffer": true - } - }, - "blob": { - "globals": { - "Blob": true, - "MSBlobBuilder": true, - "MozBlobBuilder": true, - "WebKitBlobBuilder": true } }, "bn.js": { @@ -1228,217 +4135,305 @@ "Buffer": true }, "packages": { - "browser-resolve": true + "browserify>browser-resolve": true } }, - "borc": { + "browserify>assert": { "globals": { - "console": true + "Buffer": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "ieee754": true, - "iso-url": true + "browserify>assert>util": true, + "react>object-assign": true } }, - "brorand": { + "browserify>assert>util": { "globals": { - "crypto": true, - "msCrypto": true + "console.error": true, + "console.log": true, + "console.trace": true, + "process": true }, "packages": { - "browser-resolve": true + "browserify>assert>util>inherits": true, + "browserify>process": true } }, - "browser-passworder": { - "globals": { - "btoa": true, - "crypto.getRandomValues": true, - "crypto.subtle.decrypt": true, - "crypto.subtle.deriveKey": true, - "crypto.subtle.encrypt": true, - "crypto.subtle.importKey": true - }, + "browserify>browser-resolve": { "packages": { - "browserify-unibabel": true + "ethjs-query>babel-runtime>core-js": true } }, - "browserify-aes": { - "packages": { - "buffer": true, - "buffer-xor": true, - "cipher-base": true, - "evp_bytestokey": true, - "inherits": true, - "safe-buffer": true - } - }, - "browserify-cipher": { - "packages": { - "browserify-aes": true, - "browserify-des": true, - "evp_bytestokey": true - } - }, - "browserify-des": { - "packages": { - "buffer": true, - "cipher-base": true, - "des.js": true, - "inherits": true - } - }, - "browserify-rsa": { - "packages": { - "bn.js": true, - "buffer": true, - "randombytes": true - } - }, - "browserify-sign": { - "packages": { - "bn.js": true, - "browserify-rsa": true, - "buffer": true, - "create-hash": true, - "create-hmac": true, - "elliptic": true, - "inherits": true, - "parse-asn1": true, - "stream-browserify": true - } - }, - "browserify-unibabel": { - "globals": { - "atob": true, - "btoa": true - } - }, - "browserify-zlib": { - "packages": { - "assert": true, - "buffer": true, - "pako": true, - "process": true, - "readable-stream": true, - "util": true - } - }, - "bs58": { - "packages": { - "base-x": true - } - }, - "bs58check": { - "packages": { - "bs58": true, - "create-hash": true, - "safe-buffer": true - } - }, - "btoa": { - "packages": { - "buffer": true - } - }, - "buffer": { + "browserify>buffer": { "globals": { "console": true }, "packages": { "base64-js": true, - "ieee754": true + "browserify>buffer>ieee754": true } }, - "buffer-from": { + "browserify>crypto-browserify": { "packages": { - "buffer": true + "browserify>crypto-browserify>browserify-cipher": true, + "browserify>crypto-browserify>browserify-sign": true, + "browserify>crypto-browserify>create-ecdh": true, + "browserify>crypto-browserify>create-hmac": true, + "browserify>crypto-browserify>diffie-hellman": true, + "browserify>crypto-browserify>pbkdf2": true, + "browserify>crypto-browserify>public-encrypt": true, + "browserify>crypto-browserify>randomfill": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true } }, - "buffer-split": { + "browserify>crypto-browserify>browserify-cipher": { "packages": { - "buffer-indexof": true + "browserify>crypto-browserify>browserify-cipher>browserify-des": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true } }, - "buffer-xor": { + "browserify>crypto-browserify>browserify-cipher>browserify-des": { "packages": { - "buffer": true + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>browserify-des>des.js": true, + "ethereumjs-util>create-hash>cipher-base": true, + "pumpify>inherits": true } }, - "call-bind": { + "browserify>crypto-browserify>browserify-cipher>browserify-des>des.js": { "packages": { - "function-bind": true, - "get-intrinsic": true + "3box>ethers>hash.js>minimalistic-assert": true, + "pumpify>inherits": true } }, - "camel-case": { + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": { "packages": { - "no-case": true, - "upper-case": true + "ethereumjs-util>create-hash>md5.js": true, + "ethereumjs-wallet>safe-buffer": true } }, - "cbor": { + "browserify>crypto-browserify>browserify-sign": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1": true, + "browserify>stream-browserify": true, + "ethereumjs-util>create-hash": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>create-ecdh": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>buffer": true + } + }, + "browserify>crypto-browserify>create-hmac": { + "packages": { + "addons-linter>sha.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>create-hash>ripemd160": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>diffie-hellman": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>diffie-hellman>miller-rabin": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>diffie-hellman>miller-rabin": { + "packages": { + "3box>ethers>elliptic>brorand": true, + "bn.js": true + } + }, + "browserify>crypto-browserify>pbkdf2": { "globals": { - "TextDecoder": true + "crypto": true, + "process": true, + "queueMicrotask": true, + "setImmediate": true, + "setTimeout": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "is-buffer": true, - "nofilter": true, - "stream-browserify": true, - "url": true, - "util": true + "addons-linter>sha.js": true, + "browserify>process": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>create-hash>ripemd160": true, + "ethereumjs-wallet>safe-buffer": true } }, - "cbor-sync": { + "browserify>crypto-browserify>public-encrypt": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>public-encrypt>parse-asn1": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "browserify>crypto-browserify>pbkdf2": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1>asn1.js": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true + } + }, + "browserify>crypto-browserify>public-encrypt>parse-asn1>asn1.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "browserify>buffer": true, + "browserify>vm-browserify": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>randomfill": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>process": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "browserify>events": { + "globals": { + "console": true + } + }, + "browserify>https-browserify": { + "packages": { + "browserify>stream-http": true, + "browserify>url": true + } + }, + "browserify>os-browserify": { + "globals": { + "location": true, + "navigator": true + } + }, + "browserify>path-browserify": { + "packages": { + "browserify>process": true + } + }, + "browserify>process": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "browserify>punycode": { "globals": { "define": true + } + }, + "browserify>stream-browserify": { + "packages": { + "browserify>events": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "browserify>stream-http": { + "globals": { + "AbortController": true, + "Blob": true, + "MSStreamReader": true, + "ReadableStream": true, + "WritableStream": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "clearTimeout": true, + "fetch": true, + "location.protocol.search": true, + "setTimeout": true }, "packages": { - "buffer": true + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-http>builtin-status-codes": true, + "browserify>stream-http>readable-stream": true, + "browserify>url": true, + "pumpify>inherits": true, + "watchify>xtend": true } }, - "change-case": { + "browserify>stream-http>readable-stream": { "packages": { - "camel-case": true, - "constant-case": true, - "dot-case": true, - "header-case": true, - "is-lower-case": true, - "is-upper-case": true, - "lower-case": true, - "lower-case-first": true, - "no-case": true, - "param-case": true, - "pascal-case": true, - "path-case": true, - "sentence-case": true, - "snake-case": true, - "swap-case": true, - "title-case": true, - "upper-case": true, - "upper-case-first": true + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, - "cids": { + "browserify>string_decoder": { "packages": { - "buffer": true, - "class-is": true, - "is-buffer": true, - "multibase": true, - "multicodec": true, - "multihashes": true, - "uint8arrays": true + "ethereumjs-wallet>safe-buffer": true } }, - "cipher-base": { + "browserify>timers-browserify": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, "packages": { - "inherits": true, - "safe-buffer": true, - "stream-browserify": true, - "string_decoder": true + "browserify>process": true + } + }, + "browserify>url": { + "packages": { + "browserify>punycode": true, + "browserify>querystring-es3": true + } + }, + "browserify>util": { + "globals": { + "console.error": true, + "console.log": true, + "console.trace": true, + "process": true + }, + "packages": { + "browserify>process": true, + "browserify>util>inherits": true + } + }, + "browserify>vm-browserify": { + "globals": { + "document.body.appendChild": true, + "document.body.removeChild": true, + "document.createElement": true } }, "classnames": { @@ -1447,63 +4442,6 @@ "define": true } }, - "clone": { - "packages": { - "buffer": true - } - }, - "coinstring": { - "packages": { - "bs58": true, - "buffer": true, - "create-hash": true - } - }, - "color": { - "packages": { - "clone": true, - "color-convert": true, - "color-string": true - } - }, - "color-convert": { - "packages": { - "color-name": true - } - }, - "color-string": { - "packages": { - "color-name": true - } - }, - "colors": { - "globals": { - "console.log": true - }, - "packages": { - "os-browserify": true, - "process": true, - "util": true - } - }, - "concat-stream": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true - } - }, - "constant-case": { - "packages": { - "snake-case": true, - "upper-case": true - } - }, - "cookiejar": { - "globals": { - "console.warn": true - } - }, "copy-to-clipboard": { "globals": { "clipboardData": true, @@ -1519,157 +4457,97 @@ "prompt": true }, "packages": { - "toggle-selection": true + "copy-to-clipboard>toggle-selection": true } }, - "core-js": { + "copy-to-clipboard>toggle-selection": { "globals": { - "PromiseRejectionEvent": true, - "__e": "write", - "__g": "write", - "document.createTextNode": true, - "postMessage": true, - "setTimeout": true - } - }, - "core-util-is": { - "packages": { - "is-buffer": true - } - }, - "crc": { - "packages": { - "buffer": true - } - }, - "crc-32": { - "globals": { - "DO_NOT_EXPORT_CRC": true, - "define": true - } - }, - "create-ecdh": { - "packages": { - "bn.js": true, - "buffer": true, - "elliptic": true - } - }, - "create-hash": { - "packages": { - "cipher-base": true, - "inherits": true, - "md5.js": true, - "ripemd160": true, - "sha.js": true - } - }, - "create-hmac": { - "packages": { - "cipher-base": true, - "create-hash": true, - "inherits": true, - "ripemd160": true, - "safe-buffer": true, - "sha.js": true - } - }, - "cross-fetch": { - "globals": { - "Blob": true, - "FileReader": true, - "FormData": true, - "URLSearchParams.prototype.isPrototypeOf": true, - "XMLHttpRequest": true - } - }, - "crypto-browserify": { - "packages": { - "browserify-cipher": true, - "browserify-sign": true, - "create-ecdh": true, - "create-hash": true, - "create-hmac": true, - "diffie-hellman": true, - "pbkdf2": true, - "public-encrypt": true, - "randombytes": true, - "randomfill": true - } - }, - "crypto-js": { - "globals": { - "define": true - } - }, - "css-vendor": { - "globals": { - "document.createElement": true, - "document.documentElement": true, - "getComputedStyle": true - }, - "packages": { - "@babel/runtime": true, - "is-in-browser": true + "document.activeElement": true, + "document.getSelection": true } }, "currency-formatter": { "packages": { - "accounting": true, - "locale-currency": true, - "object-assign": true + "currency-formatter>accounting": true, + "currency-formatter>locale-currency": true, + "react>object-assign": true } }, - "data-queue": { + "currency-formatter>accounting": { + "globals": { + "define": true + } + }, + "currency-formatter>locale-currency": { + "globals": { + "countryCode": true + } + }, + "debounce-stream": { "packages": { - "events": true + "debounce-stream>debounce": true, + "debounce-stream>duplexer": true, + "debounce-stream>through": true } }, - "datastore-core": { - "packages": { - "async": true, - "buffer": true, - "interface-datastore": true, - "pull-many": true, - "pull-stream": true - } - }, - "datastore-level": { - "packages": { - "buffer": true, - "encoding-down": true, - "interface-datastore": true, - "level-js": true, - "levelup": true, - "pull-stream": true - } - }, - "datastore-pubsub": { - "packages": { - "assert": true, - "buffer": true, - "debug": true, - "err-code": true, - "interface-datastore": true, - "multibase": true - } - }, - "debounce": { + "debounce-stream>debounce": { "globals": { "clearTimeout": true, "setTimeout": true } }, - "debounce-stream": { + "debounce-stream>duplexer": { "packages": { - "debounce": true, - "duplexer": true, - "through": true + "browserify>stream-browserify": true } }, - "debug": { + "debounce-stream>through": { + "packages": { + "browserify>process": true, + "browserify>stream-browserify": true + } + }, + "depcheck>@vue/compiler-sfc>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "dependency-tree>precinct>detective-postcss>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "end-of-stream": { + "packages": { + "browserify>process": true, + "pump>once": true + } + }, + "enzyme>has": { + "packages": { + "mocha>object.assign>function-bind": true + } + }, + "enzyme>is-regex": { + "packages": { + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "eslint-plugin-react>array-includes>get-intrinsic": { + "globals": { + "AggregateError": true, + "FinalizationRegistry": true, + "WeakRef": true + }, + "packages": { + "enzyme>has": true, + "mocha>object.assign>function-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "eslint>debug": { "globals": { - "chrome": true, "console": true, "document": true, "localStorage": true, @@ -1677,183 +4555,18 @@ "process": true }, "packages": { - "ms": true, - "process": true + "browserify>process": true, + "eslint>debug>ms": true } }, - "deep-equal": { - "packages": { - "is-arguments": true, - "is-date-object": true, - "is-regex": true, - "object-is": true, - "object-keys": true, - "regexp.prototype.flags": true - } - }, - "deep-extend": { - "packages": { - "buffer": true - } - }, - "deferred-leveldown": { - "packages": { - "abstract-leveldown": true, - "inherits": true - } - }, - "define-properties": { - "packages": { - "object-keys": true - } - }, - "des.js": { - "packages": { - "inherits": true, - "minimalistic-assert": true - } - }, - "did-jwt": { - "packages": { - "@babel/runtime": true, - "@stablelib/utf8": true, - "base64url": true, - "buffer": true, - "did-resolver": true, - "elliptic": true, - "js-sha256": true, - "js-sha3": true, - "tweetnacl": true, - "tweetnacl-util": true, - "uport-base64url": true - } - }, - "diffie-hellman": { - "packages": { - "bn.js": true, - "buffer": true, - "miller-rabin": true, - "randombytes": true - } - }, - "dlv": { + "eslint>optionator>fast-levenshtein": { "globals": { - "define": true - } - }, - "dnd-core": { - "packages": { - "asap": true, - "invariant": true, - "lodash": true, - "redux": true - } - }, - "dom-helpers": { - "globals": { - "document": true, - "setTimeout": true - }, - "packages": { - "@babel/runtime": true - } - }, - "dot-case": { - "packages": { - "no-case": true - } - }, - "drbg.js": { - "packages": { - "buffer": true, - "create-hmac": true - } - }, - "duplexer": { - "packages": { - "stream-browserify": true - } - }, - "duplexify": { - "packages": { - "buffer": true, - "end-of-stream": true, - "inherits": true, - "process": true, - "readable-stream": true, - "stream-shift": true - } - }, - "elliptic": { - "packages": { - "bn.js": true, - "brorand": true, - "hash.js": true, - "hmac-drbg": true, - "inherits": true, - "minimalistic-assert": true, - "minimalistic-crypto-utils": true - } - }, - "encoding-down": { - "packages": { - "abstract-leveldown": true, - "inherits": true, - "level-codec": true, - "level-errors": true - } - }, - "end-of-stream": { - "packages": { - "once": true, - "process": true - } - }, - "engine.io-client": { - "globals": { - "MozWebSocket": true, - "WebSocket": true, - "XDomainRequest": true, - "XMLHttpRequest": true, - "addEventListener": true, - "attachEvent": true, - "clearTimeout": true, - "document": true, - "location": true, - "navigator": true, - "setTimeout": true - }, - "packages": { - "browser-resolve": true, - "buffer": true, - "component-emitter": true, - "component-inherit": true, - "debug": true, - "engine.io-parser": true, - "has-cors": true, - "indexof": true, - "parseqs": true, - "parseuri": true, - "yeast": true - } - }, - "engine.io-parser": { - "globals": { - "FileReader": true, - "btoa": true, - "navigator": true - }, - "packages": { - "after": true, - "arraybuffer.slice": true, - "base64-arraybuffer": true, - "blob": true, - "has-binary2": true - } - }, - "errno": { - "packages": { - "prr": true + "Intl": true, + "Levenshtein": "write", + "console.log": true, + "define": true, + "importScripts": true, + "postMessage": true } }, "eth-block-tracker": { @@ -1863,21 +4576,9 @@ "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "eth-query": true, - "json-rpc-random-id": true, - "pify": true, - "safe-event-emitter": true - } - }, - "eth-eip712-util-browser": { - "globals": { - "intToBuffer": true - }, - "packages": { - "bn.js": true, - "buffer": true, - "js-sha3": true + "eth-block-tracker>pify": true, + "eth-query>json-rpc-random-id": true, + "json-rpc-engine>@metamask/safe-event-emitter": true } }, "eth-ens-namehash": { @@ -1885,19 +4586,22 @@ "name": "write" }, "packages": { - "buffer": true, - "idna-uts46": true, - "idna-uts46-hx": true, - "js-sha3": true + "browserify>buffer": true, + "eth-ens-namehash>idna-uts46-hx": true, + "eth-ens-namehash>js-sha3": true } }, - "eth-hd-keyring": { + "eth-ens-namehash>idna-uts46-hx": { + "globals": { + "define": true + }, "packages": { - "bip39": true, - "buffer": true, - "eth-sig-util": true, - "eth-simple-keyring": true, - "ethereumjs-wallet": true + "browserify>punycode": true + } + }, + "eth-ens-namehash>js-sha3": { + "packages": { + "browserify>process": true } }, "eth-json-rpc-filters": { @@ -1907,25 +4611,46 @@ }, "packages": { "await-semaphore": true, - "eth-json-rpc-middleware": true, + "eth-json-rpc-filters>eth-json-rpc-middleware": true, + "eth-json-rpc-filters>eth-json-rpc-middleware>pify": true, + "eth-json-rpc-filters>json-rpc-engine": true, + "eth-json-rpc-filters>lodash.flatmap": true, "eth-query": true, - "json-rpc-engine": true, - "lodash.flatmap": true, - "pify": true, "safe-event-emitter": true } }, + "eth-json-rpc-filters>eth-json-rpc-middleware": { + "packages": { + "eth-json-rpc-filters>json-rpc-engine": true + } + }, "eth-json-rpc-infura": { "globals": { "setTimeout": true }, "packages": { - "eth-json-rpc-middleware": true, - "eth-rpc-errors": true, - "json-rpc-engine": true, + "eth-json-rpc-infura>eth-json-rpc-middleware": true, + "eth-json-rpc-infura>eth-rpc-errors": true, + "eth-json-rpc-infura>json-rpc-engine": true, "node-fetch": true } }, + "eth-json-rpc-infura>eth-json-rpc-middleware": { + "packages": { + "safe-event-emitter": true + } + }, + "eth-json-rpc-infura>eth-rpc-errors": { + "packages": { + "eth-rpc-errors>fast-safe-stringify": true + } + }, + "eth-json-rpc-infura>json-rpc-engine": { + "packages": { + "eth-json-rpc-infura>eth-rpc-errors": true, + "safe-event-emitter": true + } + }, "eth-json-rpc-middleware": { "globals": { "URL": true, @@ -1935,32 +4660,158 @@ "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "browser-resolve": true, - "btoa": true, - "clone": true, + "browserify>browser-resolve": true, + "eth-json-rpc-middleware>eth-sig-util": true, + "eth-json-rpc-middleware>pify": true, "eth-rpc-errors": true, - "eth-sig-util": true, "json-rpc-engine": true, - "json-stable-stringify": true, - "node-fetch": true, - "pify": true, - "safe-event-emitter": true, - "url": true + "json-rpc-engine>@metamask/safe-event-emitter": true, + "lavamoat>json-stable-stringify": true, + "vinyl>clone": true + } + }, + "eth-json-rpc-middleware>eth-sig-util": { + "packages": { + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi>ethereumjs-util": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "eth-keyring-controller": { "packages": { - "bip39": true, - "browser-passworder": true, - "buffer": true, - "eth-hd-keyring": true, - "eth-sig-util": true, - "eth-simple-keyring": true, + "browserify>buffer": true, + "browserify>events": true, + "eth-keyring-controller>@metamask/bip39": true, + "eth-keyring-controller>@metamask/eth-hd-keyring": true, + "eth-keyring-controller>browser-passworder": true, + "eth-keyring-controller>eth-simple-keyring": true, + "eth-keyring-controller>obs-store": true, + "eth-sig-util": true + } + }, + "eth-keyring-controller>@metamask/bip39": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>pbkdf2": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring": { + "packages": { + "browserify>buffer": true, + "eth-keyring-controller>@metamask/bip39": true, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet": true, + "eth-keyring-controller>eth-simple-keyring": true, + "eth-trezor-keyring>@metamask/eth-sig-util": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet": { + "packages": { + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet>uuid": true, "ethereumjs-util": true, - "events": true, - "loglevel": true, - "obs-store": true + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "eth-keyring-controller>browser-passworder": { + "globals": { + "btoa": true, + "crypto": true + }, + "packages": { + "eth-keyring-controller>browser-passworder>browserify-unibabel": true + } + }, + "eth-keyring-controller>browser-passworder>browserify-unibabel": { + "globals": { + "atob": true, + "btoa": true + } + }, + "eth-keyring-controller>eth-simple-keyring": { + "packages": { + "browserify>buffer": true, + "browserify>events": true, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet": true, + "eth-sig-util": true, + "ethereumjs-util": true + } + }, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet": { + "packages": { + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet>uuid": true, + "ethereumjs-util": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "eth-keyring-controller>obs-store": { + "packages": { + "safe-event-emitter": true, + "watchify>xtend": true } }, "eth-lattice-keyring": { @@ -1968,20 +4819,133 @@ "addEventListener": true, "browser": true, "clearInterval": true, + "console.warn": true, + "fetch": true, "open": true, - "rlp.encode": true, - "setInterval": true + "setInterval": true, + "txData.type": true }, "packages": { "@ethereumjs/common": true, "@ethereumjs/tx": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "browserify>events": true, + "eth-lattice-keyring>bn.js": true, + "eth-lattice-keyring>gridplus-sdk": true, + "eth-lattice-keyring>rlp": true, + "eth-lattice-keyring>secp256k1": true, + "ethereumjs-util": true + } + }, + "eth-lattice-keyring>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "eth-lattice-keyring>gridplus-sdk": { + "globals": { + "console.warn": true, + "setTimeout": true + }, + "packages": { + "3box>ethers>elliptic": true, + "@ethereumjs/common": true, + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx": true, "bn.js": true, - "buffer": true, - "crypto-browserify": true, - "ethereumjs-util": true, - "events": true, - "gridplus-sdk": true, - "secp256k1": true + "browserify>buffer": true, + "eth-lattice-keyring>gridplus-sdk>bech32": true, + "eth-lattice-keyring>gridplus-sdk>bignumber.js": true, + "eth-lattice-keyring>gridplus-sdk>bitwise": true, + "eth-lattice-keyring>gridplus-sdk>borc": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, + "eth-lattice-keyring>gridplus-sdk>rlp": true, + "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethers>@ethersproject/keccak256>js-sha3": true, + "ethers>@ethersproject/sha2>hash.js": true, + "lodash": true, + "pubnub>superagent": true + } + }, + "eth-lattice-keyring>gridplus-sdk>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, + "eth-lattice-keyring>gridplus-sdk>borc": { + "globals": { + "console": true + }, + "packages": { + "3box>ipfs>iso-url": true, + "browserify>buffer": true, + "browserify>buffer>ieee754": true, + "eth-lattice-keyring>gridplus-sdk>borc>bignumber.js": true + } + }, + "eth-lattice-keyring>gridplus-sdk>borc>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, + "packages": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>bn.js": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>buffer": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>buffer": { + "globals": { + "console": true + }, + "packages": { + "base64-js": true, + "browserify>buffer>ieee754": true + } + }, + "eth-lattice-keyring>gridplus-sdk>rlp": { + "globals": { + "TextEncoder": true + } + }, + "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "packages": { + "3box>ethers>elliptic": true + } + }, + "eth-lattice-keyring>rlp": { + "globals": { + "TextEncoder": true + } + }, + "eth-lattice-keyring>secp256k1": { + "packages": { + "3box>ethers>elliptic": true } }, "eth-method-registry": { @@ -1989,38 +4953,44 @@ "ethjs": true } }, - "eth-phishing-detect": { - "packages": { - "fast-levenshtein": true - } - }, "eth-query": { "packages": { - "json-rpc-random-id": true, - "xtend": true + "eth-query>json-rpc-random-id": true, + "watchify>xtend": true } }, "eth-rpc-errors": { "packages": { - "fast-safe-stringify": true + "eth-rpc-errors>fast-safe-stringify": true } }, "eth-sig-util": { "packages": { - "buffer": true, - "ethereumjs-abi": true, - "ethereumjs-util": true, - "tweetnacl": true, - "tweetnacl-util": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util": true, + "ethereumjs-abi": true } }, - "eth-simple-keyring": { + "eth-sig-util>ethereumjs-util": { "packages": { - "buffer": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "ethereumjs-wallet": true, - "events": true + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "eth-trezor-keyring": { @@ -2029,112 +4999,704 @@ }, "packages": { "@ethereumjs/tx": true, - "buffer": true, - "ethereumjs-util": true, - "events": true, - "hdkey": true, - "trezor-connect": true + "browserify>buffer": true, + "browserify>events": true, + "eth-trezor-keyring>hdkey": true, + "eth-trezor-keyring>trezor-connect": true, + "ethereumjs-util": true } }, - "ethereum-bloom-filters": { + "eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { - "js-sha3": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "browserify>buffer": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethereumjs-util": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, + "ethereumjs-abi": true } }, - "ethereum-cryptography": { + "eth-trezor-keyring>@metamask/eth-sig-util>ethereumjs-util": { "packages": { - "assert": true, - "bs58check": true, - "buffer": true, - "create-hmac": true, - "hash.js": true, - "keccak": true, - "randombytes": true, - "safe-buffer": true, - "secp256k1": true + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "eth-trezor-keyring>hdkey": { + "packages": { + "browserify>assert": true, + "browserify>crypto-browserify": true, + "eth-trezor-keyring>hdkey>coinstring": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>coinstring": { + "packages": { + "browserify>buffer": true, + "eth-trezor-keyring>hdkey>coinstring>bs58": true, + "ethereumjs-util>create-hash": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-trezor-keyring>hdkey>secp256k1>bip66": true, + "eth-trezor-keyring>hdkey>secp256k1>drbg.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1>bip66": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1>drbg.js": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true + } + }, + "eth-trezor-keyring>trezor-connect": { + "globals": { + "__TREZOR_CONNECT_SRC": true, + "addEventListener": true, + "btoa": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "document.body": true, + "document.createElement": true, + "document.createTextNode": true, + "document.getElementById": true, + "document.querySelectorAll": true, + "location": true, + "navigator": true, + "open": true, + "removeEventListener": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>graphql-request>cross-fetch": true, + "@babel/runtime": true, + "browserify>events": true, + "eth-trezor-keyring>@metamask/eth-sig-util": true } }, "ethereumjs-abi": { "packages": { "bn.js": true, - "buffer": true, - "ethereumjs-util": true + "browserify>buffer": true, + "ethereumjs-abi>ethereumjs-util": true + } + }, + "ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-abi>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "ethereumjs-abi>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "ethereumjs-util": { "packages": { - "assert": true, - "bn.js": true, - "buffer": true, - "create-hash": true, - "elliptic": true, - "ethereum-cryptography": true, - "ethjs-util": true, - "is-buffer": true, - "keccak": true, - "rlp": true, - "safe-buffer": true, - "secp256k1": true + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-util>bn.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>ethjs-util": true, + "ethereumjs-util>rlp": true + } + }, + "ethereumjs-util>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "ethereumjs-util>create-hash": { + "packages": { + "addons-linter>sha.js": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>create-hash>md5.js": true, + "ethereumjs-util>create-hash>ripemd160": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>cipher-base": { + "packages": { + "browserify>stream-browserify": true, + "browserify>string_decoder": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js": { + "packages": { + "ethereumjs-util>create-hash>md5.js>hash-base": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js>hash-base": { + "packages": { + "ethereumjs-util>create-hash>md5.js>hash-base>readable-stream": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js>hash-base>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>ripemd160": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>create-hash>md5.js>hash-base": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography": { + "packages": { + "browserify>assert": true, + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true, + "ethereumjs-util>ethereum-cryptography>keccak": true, + "ethereumjs-util>ethereum-cryptography>secp256k1": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "ethereumjs-util>ethereum-cryptography>blakejs": { + "globals": { + "TextEncoder": true, + "console.log": true + } + }, + "ethereumjs-util>ethereum-cryptography>browserify-aes": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes>buffer-xor": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography>browserify-aes>buffer-xor": { + "packages": { + "browserify>buffer": true + } + }, + "ethereumjs-util>ethereum-cryptography>keccak": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>keccak>readable-stream": true + } + }, + "ethereumjs-util>ethereum-cryptography>keccak>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography>secp256k1": { + "packages": { + "3box>ethers>elliptic": true + } + }, + "ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethereumjs-util>rlp": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>rlp>bn.js": true + } + }, + "ethereumjs-util>rlp>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true } }, "ethereumjs-wallet": { "packages": { - "aes-js": true, - "bs58check": true, - "buffer": true, - "crypto-browserify": true, - "ethereum-cryptography": true, - "ethereumjs-util": true, - "randombytes": true, - "safe-buffer": true, - "scrypt-js": true, - "scryptsy": true, - "utf8": true, - "uuid": true + "@truffle/codec>utf8": true, + "browserify>crypto-browserify": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>ethereumjs-util": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true, + "ethereumjs-wallet>scryptsy": true, + "ethereumjs-wallet>uuid": true + } + }, + "ethereumjs-wallet>aes-js": { + "globals": { + "define": true + } + }, + "ethereumjs-wallet>bs58check": { + "packages": { + "3box>ipfs>bs58": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "ethereumjs-wallet>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>ethereumjs-util>ethjs-util": true + } + }, + "ethereumjs-wallet>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethereumjs-wallet>randombytes": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>process": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "ethereumjs-wallet>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "ethereumjs-wallet>scryptsy": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>pbkdf2": true + } + }, + "ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true } }, "ethers": { + "packages": { + "ethers>@ethersproject/abi": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/base64": true, + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/contracts": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/providers": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/rlp": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/solidity": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/units": true, + "ethers>@ethersproject/wallet": true, + "ethers>@ethersproject/web": true, + "ethers>@ethersproject/wordlists": true + } + }, + "ethers>@ethersproject/abi": { + "globals": { + "console.log": true + }, + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/abstract-provider": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/abstract-signer": { + "packages": { + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/address": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/rlp": true + } + }, + "ethers>@ethersproject/base64": { "globals": { - "MessageChannel": true, - "XMLHttpRequest": true, "atob": true, - "btoa": true, + "btoa": true + }, + "packages": { + "ethers>@ethersproject/bytes": true + } + }, + "ethers>@ethersproject/basex": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/bignumber": { + "packages": { + "bn.js": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/bytes": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/constants": { + "packages": { + "ethers>@ethersproject/bignumber": true + } + }, + "ethers>@ethersproject/contracts": { + "globals": { + "setTimeout": true + }, + "packages": { + "ethers>@ethersproject/abi": true, + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/hash": { + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/hdnode": { + "packages": { + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/pbkdf2": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/wordlists": true + } + }, + "ethers>@ethersproject/json-wallets": { + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets>aes-js": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/pbkdf2": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/json-wallets>aes-js": { + "globals": { + "define": true + } + }, + "ethers>@ethersproject/json-wallets>scrypt-js": { + "globals": { + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>timers-browserify": true + } + }, + "ethers>@ethersproject/keccak256": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "ethers>@ethersproject/keccak256>js-sha3": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "ethers>@ethersproject/logger": { + "globals": { + "console": true + } + }, + "ethers>@ethersproject/networks": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/pbkdf2": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/sha2": true + } + }, + "ethers>@ethersproject/properties": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/providers": { + "globals": { + "WebSocket": true, "clearInterval": true, "clearTimeout": true, - "console": true, - "crypto.getRandomValues": true, - "define": true, + "console.log": true, + "console.warn": true, + "name": true, "setInterval": true, "setTimeout": true }, "packages": { - "@ethersproject/abi": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/base64": true, - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/contracts": true, - "@ethersproject/hash": true, - "@ethersproject/hdnode": true, - "@ethersproject/json-wallets": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/providers": true, - "@ethersproject/random": true, - "@ethersproject/rlp": true, - "@ethersproject/sha2": true, - "@ethersproject/signing-key": true, - "@ethersproject/solidity": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/units": true, - "@ethersproject/wallet": true, - "@ethersproject/web": true, - "@ethersproject/wordlists": true + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/networks": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/providers>bech32": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/web": true + } + }, + "ethers>@ethersproject/random": { + "globals": { + "crypto.getRandomValues": true + }, + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/rlp": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/sha2": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "ethers>@ethersproject/sha2>hash.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "pumpify>inherits": true + } + }, + "ethers>@ethersproject/signing-key": { + "packages": { + "3box>ethers>elliptic": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/solidity": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/strings": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/transactions": { + "globals": { + "console.log": true + }, + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/rlp": true, + "ethers>@ethersproject/signing-key": true + } + }, + "ethers>@ethersproject/units": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/wallet": { + "packages": { + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/web": { + "globals": { + "clearTimeout": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "ethers>@ethersproject/base64": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/wordlists": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true } }, "ethjs": { @@ -2143,62 +5705,112 @@ "setInterval": true }, "packages": { - "bn.js": true, - "buffer": true, - "ethjs-abi": true, + "browserify>buffer": true, "ethjs-contract": true, - "ethjs-filter": true, - "ethjs-provider-http": true, "ethjs-query": true, - "ethjs-unit": true, - "ethjs-util": true, - "js-sha3": true, - "number-to-bn": true - } - }, - "ethjs-abi": { - "packages": { - "bn.js": true, - "buffer": true, - "js-sha3": true, - "number-to-bn": true + "ethjs>bn.js": true, + "ethjs>ethjs-abi": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>js-sha3": true, + "ethjs>number-to-bn": true } }, "ethjs-contract": { "packages": { - "babel-runtime": true, - "ethjs-abi": true, - "ethjs-filter": true, - "ethjs-util": true, - "js-sha3": true, + "ethjs-contract>ethjs-abi": true, + "ethjs-contract>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, "promise-to-callback": true } }, + "ethjs-contract>ethjs-abi": { + "packages": { + "browserify>buffer": true, + "ethjs-contract>ethjs-abi>bn.js": true, + "ethjs-contract>ethjs-abi>js-sha3": true, + "ethjs>number-to-bn": true + } + }, + "ethjs-contract>ethjs-abi>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs-contract>js-sha3": { + "packages": { + "browserify>process": true + } + }, "ethjs-ens": { "packages": { - "eth-ens-namehash": true, "ethereum-ens-network-map": true, - "ethjs-contract": true, - "ethjs-query": true + "ethjs-ens>eth-ens-namehash": true, + "ethjs-ens>ethjs-contract": true, + "ethjs-ens>ethjs-query": true } }, - "ethjs-filter": { + "ethjs-ens>eth-ens-namehash": { + "globals": { + "name": "write" + }, + "packages": { + "browserify>buffer": true, + "ethjs-ens>eth-ens-namehash>idna-uts46": true, + "ethjs-ens>eth-ens-namehash>js-sha3": true + } + }, + "ethjs-ens>eth-ens-namehash>idna-uts46": { + "globals": { + "define": true + }, + "packages": { + "browserify>punycode": true + } + }, + "ethjs-ens>eth-ens-namehash>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs-ens>ethjs-contract": { + "packages": { + "ethjs-contract>ethjs-abi": true, + "ethjs-ens>ethjs-contract>ethjs-filter": true, + "ethjs-ens>ethjs-contract>js-sha3": true, + "ethjs>ethjs-util": true + } + }, + "ethjs-ens>ethjs-contract>ethjs-filter": { "globals": { "clearInterval": true, "setInterval": true } }, - "ethjs-format": { + "ethjs-ens>ethjs-contract>js-sha3": { "packages": { - "ethjs-schema": true, - "ethjs-util": true, - "number-to-bn": true, - "strip-hex-prefix": true + "browserify>process": true } }, - "ethjs-provider-http": { + "ethjs-ens>ethjs-query": { + "globals": { + "console": true + }, "packages": { - "xhr2": true + "ethjs-ens>ethjs-query>ethjs-format": true, + "ethjs-ens>ethjs-query>ethjs-rpc": true + } + }, + "ethjs-ens>ethjs-query>ethjs-format": { + "packages": { + "ethjs-ens>ethjs-query>ethjs-format>ethjs-schema": true, + "ethjs>ethjs-util": true, + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn": true } }, "ethjs-query": { @@ -2206,63 +5818,98 @@ "console": true }, "packages": { - "babel-runtime": true, - "ethjs-format": true, - "ethjs-rpc": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, "promise-to-callback": true } }, - "ethjs-rpc": { + "ethjs-query>babel-runtime": { "packages": { - "promise-to-callback": true + "@babel/runtime": true, + "@storybook/api>regenerator-runtime": true, + "ethjs-query>babel-runtime>core-js": true } }, - "ethjs-unit": { - "packages": { - "bn.js": true, - "number-to-bn": true - } - }, - "ethjs-util": { - "packages": { - "buffer": true, - "is-hex-prefixed": true, - "strip-hex-prefix": true - } - }, - "events": { + "ethjs-query>babel-runtime>core-js": { "globals": { - "console": true + "PromiseRejectionEvent": true, + "__e": "write", + "__g": "write", + "document.createTextNode": true, + "postMessage": true, + "setTimeout": true } }, - "evp_bytestokey": { + "ethjs-query>ethjs-format": { "packages": { - "md5.js": true, - "safe-buffer": true + "ethjs-query>ethjs-format>ethjs-schema": true, + "ethjs>ethjs-util": true, + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn": true + } + }, + "ethjs-query>ethjs-rpc": { + "packages": { + "promise-to-callback": true + } + }, + "ethjs>ethjs-abi": { + "packages": { + "browserify>buffer": true, + "ethjs>bn.js": true, + "ethjs>js-sha3": true, + "ethjs>number-to-bn": true + } + }, + "ethjs>ethjs-filter": { + "globals": { + "clearInterval": true, + "setInterval": true + } + }, + "ethjs>ethjs-provider-http": { + "packages": { + "ethjs>ethjs-provider-http>xhr2": true + } + }, + "ethjs>ethjs-provider-http>xhr2": { + "globals": { + "XMLHttpRequest": true + } + }, + "ethjs>ethjs-unit": { + "packages": { + "ethjs>ethjs-unit>bn.js": true, + "ethjs>number-to-bn": true + } + }, + "ethjs>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethjs>ethjs-util>strip-hex-prefix": { + "packages": { + "ethjs>ethjs-util>is-hex-prefixed": true + } + }, + "ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs>number-to-bn": { + "packages": { + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn>bn.js": true } }, "extension-port-stream": { "packages": { - "buffer": true, - "stream-browserify": true - } - }, - "faker": { - "globals": { - "console.error": true, - "console.log": true, - "dbg": "write" - } - }, - "fast-check": { - "globals": { - "clearTimeout": true, - "console.log": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "pure-rand": true + "browserify>buffer": true, + "browserify>stream-browserify": true } }, "fast-json-patch": { @@ -2273,29 +5920,7 @@ "setTimeout": true }, "packages": { - "fast-deep-equal": true - } - }, - "fast-levenshtein": { - "globals": { - "Intl": true, - "Levenshtein": "write", - "console.log": true, - "define": true, - "importScripts": true, - "postMessage": true - } - }, - "fs-constants": { - "packages": { - "constants-browserify": true - } - }, - "fsm-event": { - "packages": { - "assert": true, - "events": true, - "fsm": true + "fast-json-patch>fast-deep-equal": true } }, "fuse.js": { @@ -2304,1181 +5929,38 @@ "define": true } }, - "get-browser-rtc": { - "globals": { - "RTCIceCandidate": true, - "RTCPeerConnection": true, - "RTCSessionDescription": true, - "mozRTCIceCandidate": true, - "mozRTCPeerConnection": true, - "mozRTCSessionDescription": true, - "webkitRTCIceCandidate": true, - "webkitRTCPeerConnection": true, - "webkitRTCSessionDescription": true - } - }, - "get-intrinsic": { - "globals": { - "AggregateError": true, - "FinalizationRegistry": true, - "WeakRef": true - }, + "globalthis>define-properties": { "packages": { - "function-bind": true, - "has": true, - "has-symbols": true - } - }, - "graphql-request": { - "globals": { - "fetch": true - }, - "packages": { - "cross-fetch": true - } - }, - "gridplus-sdk": { - "globals": { - "console.error": true, - "console.warn": true, - "setTimeout": true - }, - "packages": { - "@ethereumjs/common": true, - "@ethereumjs/tx": true, - "aes-js": true, - "bech32": true, - "bignumber.js": true, - "bitwise": true, - "borc": true, - "bs58check": true, - "buffer": true, - "crc-32": true, - "elliptic": true, - "eth-eip712-util-browser": true, - "hash.js": true, - "js-sha3": true, - "rlp": true, - "rlp-browser": true, - "secp256k1": true, - "superagent": true - } - }, - "gunzip-maybe": { - "packages": { - "browserify-zlib": true, - "is-deflate": true, - "is-gzip": true, - "peek-stream": true, - "pumpify": true, - "through2": true - } - }, - "hamt-sharding": { - "packages": { - "is-buffer": true, - "sparse-array": true - } - }, - "has": { - "packages": { - "function-bind": true - } - }, - "has-binary2": { - "globals": { - "Blob": true, - "File": true - }, - "packages": { - "buffer": true, - "isarray": true - } - }, - "has-cors": { - "globals": { - "XMLHttpRequest": true - } - }, - "hash-base": { - "packages": { - "inherits": true, - "safe-buffer": true, - "stream-browserify": true - } - }, - "hash.js": { - "packages": { - "inherits": true, - "minimalistic-assert": true - } - }, - "hdkey": { - "packages": { - "assert": true, - "bs58check": true, - "coinstring": true, - "crypto-browserify": true, - "safe-buffer": true, - "secp256k1": true - } - }, - "header-case": { - "packages": { - "no-case": true, - "upper-case": true - } - }, - "heap": { - "globals": { - "define": true - } - }, - "hi-base32": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "history": { - "globals": { - "addEventListener": true, - "confirm": true, - "document": true, - "history": true, - "location": true, - "navigator.userAgent": true, - "removeEventListener": true - }, - "packages": { - "resolve-pathname": true, - "tiny-invariant": true, - "tiny-warning": true, - "value-equal": true - } - }, - "hmac-drbg": { - "packages": { - "hash.js": true, - "minimalistic-assert": true, - "minimalistic-crypto-utils": true - } - }, - "hoist-non-react-statics": { - "packages": { - "react-is": true - } - }, - "https-browserify": { - "packages": { - "stream-http": true, - "url": true - } - }, - "https-did-resolver": { - "globals": { - "XMLHttpRequest": true - }, - "packages": { - "browser-resolve": true, - "did-resolver": true - } - }, - "human-to-milliseconds": { - "packages": { - "promisify-es6": true - } - }, - "idb-readable-stream": { - "globals": { - "IDBKeyRange.bound": true, - "IDBKeyRange.lowerBound": true, - "IDBKeyRange.upperBound": true - }, - "packages": { - "stream-browserify": true, - "xtend": true - } - }, - "idna-uts46": { - "globals": { - "define": true - }, - "packages": { - "punycode": true - } - }, - "idna-uts46-hx": { - "globals": { - "define": true - }, - "packages": { - "punycode": true - } - }, - "immediate": { - "globals": { - "MessageChannel": true, - "MutationObserver": true, - "WebKitMutationObserver": true, - "clearTimeout": true, - "document.createElement": true, - "document.createTextNode": true, - "document.documentElement.appendChild": true, - "setImmediate": true, - "setTimeout": true - }, - "packages": { - "process": true - } - }, - "interface-connection": { - "packages": { - "pull-defer": true - } - }, - "interface-datastore": { - "packages": { - "async": true, - "buffer": true, - "class-is": true, - "err-code": true, - "os-browserify": true, - "path-browserify": true, - "pull-defer": true, - "pull-stream": true, - "uuid": true - } - }, - "ip": { - "packages": { - "buffer": true, - "os-browserify": true - } - }, - "ipfs": { - "globals": { - "AbortController": true, - "clearInterval": true, - "clearTimeout": true, - "console.log": true, - "fetch": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "async": true, - "async-iterator-all": true, - "async-iterator-to-pull-stream": true, - "async-iterator-to-stream": true, - "base32.js": true, - "bignumber.js": true, - "browser-resolve": true, - "buffer": true, - "callbackify": true, - "cids": true, - "class-is": true, - "datastore-core": true, - "datastore-pubsub": true, - "debug": true, - "dlv": true, - "err-code": true, - "events": true, - "fnv1a": true, - "fsm-event": true, - "human-to-milliseconds": true, - "interface-datastore": true, - "ipfs-bitswap": true, - "ipfs-block": true, - "ipfs-block-service": true, - "ipfs-mfs": true, - "ipfs-repo": true, - "ipfs-unixfs": true, - "ipfs-unixfs-exporter": true, - "ipfs-unixfs-importer": true, - "ipfs-utils": true, - "ipld": true, - "ipld-dag-cbor": true, - "ipld-dag-pb": true, - "ipld-raw": true, - "ipns": true, - "is-buffer": true, - "is-ipfs": true, - "is-pull-stream": true, - "is-stream": true, - "iso-url": true, - "just-flatten-it": true, - "kind-of": true, - "libp2p": true, - "libp2p-bootstrap": true, - "libp2p-crypto": true, - "libp2p-kad-dht": true, - "libp2p-keychain": true, - "libp2p-record": true, - "libp2p-secio": true, - "libp2p-webrtc-star": true, - "libp2p-websocket-star-multi": true, - "libp2p-websockets": true, - "mafmt": true, - "merge-options": true, - "multiaddr": true, - "multiaddr-to-uri": true, - "multibase": true, - "multicodec": true, - "multihashes": true, - "multihashing-async": true, - "peer-book": true, - "peer-id": true, - "peer-info": true, - "promisify-es6": true, - "protons": true, - "pull-cat": true, - "pull-defer": true, - "pull-mplex": true, - "pull-pushable": true, - "pull-sort": true, - "pull-stream": true, - "pull-stream-to-async-iterator": true, - "pull-stream-to-stream": true, - "pull-traverse": true, - "readable-stream": true, - "receptacle": true, - "stream-to-pull-stream": true, - "superstruct": true, - "timers-browserify": true, - "varint": true - } - }, - "ipfs-bitswap": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "assert": true, - "async": true, - "bignumber.js": true, - "cids": true, - "debug": true, - "events": true, - "ipfs-block": true, - "just-debounce-it": true, - "lodash.isequalwith": true, - "moving-average": true, - "multicodec": true, - "multihashing-async": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true, - "varint-decoder": true - } - }, - "ipfs-block": { - "packages": { - "cids": true, - "class-is": true, - "is-buffer": true - } - }, - "ipfs-block-service": { - "packages": { - "async": true - } - }, - "ipfs-log": { - "globals": { - "clearTimeout": true, - "console.warn": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "json-stringify-deterministic": true, - "orbit-db-io": true, - "p-each-series": true, - "p-map": true, - "p-whilst": true - } - }, - "ipfs-mfs": { - "globals": { - "Blob": true, - "FileReader": true - }, - "packages": { - "assert": true, - "async-iterator-last": true, - "browser-resolve": true, - "buffer": true, - "cids": true, - "debug": true, - "err-code": true, - "hamt-sharding": true, - "interface-datastore": true, - "ipfs-unixfs": true, - "ipfs-unixfs-exporter": true, - "ipfs-unixfs-importer": true, - "ipld-dag-pb": true, - "mortice": true, - "multicodec": true, - "multihashes": true, - "promisify-es6": true - } - }, - "ipfs-mini": { - "globals": { - "XMLHttpRequest": true - } - }, - "ipfs-pubsub-1on1": { - "globals": { - "clearInterval": true, - "setInterval": true - }, - "packages": { - "events": true, - "path-browserify": true, - "safe-buffer": true - } - }, - "ipfs-pubsub-peer-monitor": { - "globals": { - "clearInterval": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "events": true - } - }, - "ipfs-repo": { - "packages": { - "assert": true, - "async": true, - "base32.js": true, - "bignumber.js": true, - "buffer": true, - "cids": true, - "datastore-core": true, - "datastore-level": true, - "debug": true, - "dlv": true, - "interface-datastore": true, - "ipfs-block": true, - "just-safe-set": true, - "path-browserify": true, - "pull-stream": true, - "sort-keys": true, - "timers-browserify": true - } - }, - "ipfs-unixfs": { - "packages": { - "protons": true - } - }, - "ipfs-unixfs-exporter": { - "packages": { - "async-iterator-last": true, - "buffer": true, - "cids": true, - "err-code": true, - "hamt-sharding": true, - "ipfs-unixfs": true, - "ipfs-unixfs-importer": true, - "is-buffer": true - } - }, - "ipfs-unixfs-importer": { - "packages": { - "async-iterator-all": true, - "async-iterator-batch": true, - "async-iterator-first": true, - "bl": true, - "buffer": true, - "deep-extend": true, - "err-code": true, - "hamt-sharding": true, - "ipfs-unixfs": true, - "ipld-dag-pb": true, - "multicodec": true, - "multihashes": true, - "multihashing-async": true, - "rabin-wasm": true, - "superstruct": true - } - }, - "ipfs-utils": { - "globals": { - "FileReader": true - }, - "packages": { - "is-buffer": true, - "is-pull-stream": true, - "is-stream": true, - "kind-of": true, - "readable-stream": true - } - }, - "ipld": { - "packages": { - "cids": true, - "ipfs-block": true, - "ipld-dag-cbor": true, - "ipld-dag-pb": true, - "ipld-raw": true, - "is-buffer": true, - "merge-options": true, - "multicodec": true, - "promisify-es6": true, - "typical": true - } - }, - "ipld-dag-cbor": { - "packages": { - "borc": true, - "buffer": true, - "cids": true, - "is-buffer": true, - "is-circular": true, - "multicodec": true, - "multihashing-async": true - } - }, - "ipld-dag-pb": { - "packages": { - "assert": true, - "buffer": true, - "cids": true, - "class-is": true, - "is-buffer": true, - "multicodec": true, - "multihashing-async": true, - "protons": true, - "stable": true - } - }, - "ipld-raw": { - "packages": { - "cids": true, - "multicodec": true, - "multihashing-async": true - } - }, - "ipns": { - "packages": { - "base32-encode": true, - "buffer": true, - "debug": true, - "interface-datastore": true, - "libp2p-crypto": true, - "multihashes": true, - "peer-id": true, - "protons": true, - "timestamp-nano": true - } - }, - "is-dom": { - "globals": { - "Node": true - }, - "packages": { - "is-object": true, - "is-window": true - } - }, - "is-in-browser": { - "globals": { - "document": true - } - }, - "is-ip": { - "packages": { - "ip-regex": true - } - }, - "is-ipfs": { - "packages": { - "bs58": true, - "buffer": true, - "cids": true, - "mafmt": true, - "multiaddr": true, - "multibase": true, - "multihashes": true - } - }, - "is-lower-case": { - "packages": { - "lower-case": true - } - }, - "is-regex": { - "packages": { - "call-bind": true, - "has-symbols": true - } - }, - "is-upper-case": { - "packages": { - "upper-case": true - } - }, - "iso-random-stream": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "buffer": true - } - }, - "iso-url": { - "globals": { - "URL": true, - "URLSearchParams": true, - "location": true - } - }, - "isomorphic-fetch": { - "globals": { - "fetch.bind": true - }, - "packages": { - "whatwg-fetch": true - } - }, - "js-base64": { - "globals": { - "Base64": "write", - "TextDecoder": true, - "TextEncoder": true, - "atob": true, - "btoa": true, - "define": true - }, - "packages": { - "buffer": true - } - }, - "js-sha256": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "js-sha3": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "jsbi": { - "globals": { - "define": true - } - }, - "json-pointer": { - "packages": { - "foreach": true + "nock>deep-equal>object-keys": true } }, "json-rpc-engine": { "packages": { - "@metamask/safe-event-emitter": true, "eth-rpc-errors": true, - "safe-event-emitter": true + "json-rpc-engine>@metamask/safe-event-emitter": true } }, - "json-rpc-middleware-stream": { + "json-rpc-engine>@metamask/safe-event-emitter": { "globals": { "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "readable-stream": true + "browserify>events": true } }, - "json-stable-stringify": { + "json-rpc-middleware-stream": { "packages": { - "jsonify": true + "readable-stream": true } }, "jsonschema": { "packages": { - "url": true + "browserify>url": true } }, - "jss": { - "globals": { - "CSS": true, - "document.createElement": true, - "document.querySelector": true - }, + "lavamoat>json-stable-stringify": { "packages": { - "@babel/runtime": true, - "is-in-browser": true, - "tiny-warning": true - } - }, - "jss-plugin-camel-case": { - "packages": { - "hyphenate-style-name": true - } - }, - "jss-plugin-default-unit": { - "globals": { - "CSS": true - }, - "packages": { - "jss": true - } - }, - "jss-plugin-global": { - "packages": { - "@babel/runtime": true, - "jss": true - } - }, - "jss-plugin-nested": { - "packages": { - "@babel/runtime": true, - "tiny-warning": true - } - }, - "jss-plugin-rule-value-function": { - "packages": { - "jss": true, - "tiny-warning": true - } - }, - "jss-plugin-vendor-prefixer": { - "packages": { - "css-vendor": true, - "jss": true - } - }, - "just-debounce-it": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "k-bucket": { - "packages": { - "events": true, - "randombytes": true - } - }, - "keccak": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true, - "safe-buffer": true, - "stream-browserify": true - } - }, - "latency-monitor": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "document": true, - "performance": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "debug": true, - "events": true, - "lodash": true, - "process": true - } - }, - "level-codec": { - "packages": { - "buffer": true - } - }, - "level-errors": { - "packages": { - "errno": true - } - }, - "level-iterator-stream": { - "packages": { - "inherits": true, - "readable-stream": true, - "xtend": true - } - }, - "level-js": { - "globals": { - "IDBKeyRange.bound": true, - "IDBKeyRange.lowerBound": true, - "IDBKeyRange.only": true, - "IDBKeyRange.upperBound": true, - "indexedDB": true - }, - "packages": { - "abstract-leveldown": true, - "buffer": true, - "idb-readable-stream": true, - "immediate": true, - "inherits": true, - "is-buffer": true, - "ltgt": true, - "process": true, - "stream-browserify": true, - "typedarray-to-buffer": true, - "util": true, - "xtend": true - } - }, - "level-supports": { - "packages": { - "xtend": true - } - }, - "levelup": { - "packages": { - "assert": true, - "deferred-leveldown": true, - "events": true, - "level-errors": true, - "level-iterator-stream": true, - "process": true, - "util": true, - "xtend": true - } - }, - "libp2p": { - "packages": { - "async": true, - "debug": true, - "err-code": true, - "events": true, - "fsm-event": true, - "is-buffer": true, - "libp2p-connection-manager": true, - "libp2p-floodsub": true, - "libp2p-ping": true, - "libp2p-switch": true, - "libp2p-websockets": true, - "multiaddr": true, - "once": true, - "peer-book": true, - "peer-id": true, - "peer-info": true, - "process": true, - "superstruct": true - } - }, - "libp2p-bootstrap": { - "globals": { - "clearInterval": true, - "setInterval": true - }, - "packages": { - "async": true, - "debug": true, - "events": true, - "mafmt": true, - "multiaddr": true, - "peer-id": true, - "peer-info": true - } - }, - "libp2p-circuit": { - "packages": { - "async": true, - "debug": true, - "events": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-connection-manager": { - "packages": { - "debug": true, - "events": true, - "latency-monitor": true - } - }, - "libp2p-crypto": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "asn1.js": true, - "async": true, - "browserify-aes": true, - "bs58": true, - "buffer": true, - "iso-random-stream": true, - "libp2p-crypto-secp256k1": true, - "multihashing-async": true, - "node-forge": true, - "protons": true, - "tweetnacl": true - } - }, - "libp2p-crypto-secp256k1": { - "packages": { - "async": true, - "bs58": true, - "multihashing-async": true, - "secp256k1": true - } - }, - "libp2p-floodsub": { - "packages": { - "assert": true, - "async": true, - "debug": true, - "libp2p-pubsub": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-identify": { - "globals": { - "console.warn": true - }, - "packages": { - "buffer": true, - "multiaddr": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-kad-dht": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "abort-controller": true, - "assert": true, - "async": true, - "base32.js": true, - "buffer": true, - "cids": true, - "debug": true, - "err-code": true, - "events": true, - "hashlru": true, - "heap": true, - "interface-datastore": true, - "is-buffer": true, - "k-bucket": true, - "libp2p-crypto": true, - "libp2p-record": true, - "multihashes": true, - "multihashing-async": true, - "p-queue": true, - "p-times": true, - "peer-id": true, - "peer-info": true, - "promise-to-callback": true, - "promisify-es6": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true, - "pull-stream-to-async-iterator": true, - "varint": true, - "xor-distance": true - } - }, - "libp2p-keychain": { - "globals": { - "setTimeout": true - }, - "packages": { - "async": true, - "buffer": true, - "err-code": true, - "interface-datastore": true, - "libp2p-crypto": true, - "merge-options": true, - "node-forge": true, - "pull-stream": true, - "sanitize-filename": true - } - }, - "libp2p-ping": { - "packages": { - "debug": true, - "events": true, - "libp2p-crypto": true, - "pull-handshake": true, - "pull-stream": true - } - }, - "libp2p-pubsub": { - "packages": { - "async": true, - "bs58": true, - "buffer": true, - "debug": true, - "err-code": true, - "events": true, - "is-buffer": true, - "libp2p-crypto": true, - "protons": true, - "pull-length-prefixed": true, - "pull-pushable": true, - "pull-stream": true, - "time-cache": true - } - }, - "libp2p-record": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "buffer-split": true, - "err-code": true, - "is-buffer": true, - "multihashing-async": true, - "protons": true - } - }, - "libp2p-secio": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "debug": true, - "interface-connection": true, - "libp2p-crypto": true, - "multihashing-async": true, - "once": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-defer": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-switch": { - "packages": { - "assert": true, - "async": true, - "bignumber.js": true, - "class-is": true, - "debug": true, - "err-code": true, - "events": true, - "fsm-event": true, - "hashlru": true, - "interface-connection": true, - "libp2p-circuit": true, - "libp2p-identify": true, - "moving-average": true, - "multiaddr": true, - "multistream-select": true, - "once": true, - "peer-id": true, - "peer-info": true, - "pull-stream": true, - "retimer": true - } - }, - "libp2p-webrtc-star": { - "packages": { - "async": true, - "class-is": true, - "debug": true, - "events": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "simple-peer": true, - "socket.io-client": true, - "stream-to-pull-stream": true, - "webrtcsupport": true - } - }, - "libp2p-websocket-star": { - "globals": { - "console.error": true - }, - "packages": { - "async": true, - "buffer": true, - "class-is": true, - "debug": true, - "events": true, - "interface-connection": true, - "libp2p-crypto": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "pull-stream": true, - "socket.io-client": true, - "socket.io-pull-stream": true, - "uuid": true - } - }, - "libp2p-websocket-star-multi": { - "globals": { - "setTimeout": true - }, - "packages": { - "async": true, - "debug": true, - "events": true, - "libp2p-websocket-star": true, - "mafmt": true, - "multiaddr": true, - "once": true - } - }, - "libp2p-websockets": { - "packages": { - "class-is": true, - "debug": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "multiaddr-to-uri": true, - "os-browserify": true, - "pull-ws": true - } - }, - "locale-currency": { - "globals": { - "countryCode": true + "lavamoat>json-stable-stringify>jsonify": true } }, "localforage": { @@ -3510,13 +5992,9 @@ } }, "lodash": { - "globals": { - "define": true - } - }, - "lodash.throttle": { "globals": { "clearTimeout": true, + "define": true, "setTimeout": true } }, @@ -3529,213 +6007,12 @@ "log": "write" } }, - "logplease": { - "globals": { - "LOG": true, - "console.error": true, - "console.log": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "process": true, - "util": true - } - }, - "lower-case-first": { - "packages": { - "lower-case": true - } - }, - "lru": { - "packages": { - "events": true, - "inherits": true - } - }, - "lru-cache": { - "packages": { - "yallist": true - } - }, - "ltgt": { - "packages": { - "is-buffer": true - } - }, "luxon": { "globals": { "Intl": true } }, - "mafmt": { - "packages": { - "multiaddr": true - } - }, - "md5": { - "packages": { - "charenc": true, - "crypt": true, - "is-buffer": true - } - }, - "md5.js": { - "packages": { - "hash-base": true, - "inherits": true, - "safe-buffer": true - } - }, - "merge-options": { - "packages": { - "is-plain-obj": true - } - }, - "miller-rabin": { - "packages": { - "bn.js": true, - "brorand": true - } - }, - "mini-create-react-context": { - "packages": { - "@babel/runtime": true, - "gud": true, - "prop-types": true, - "react": true, - "tiny-warning": true - } - }, - "mortice": { - "globals": { - "Worker": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "observable-webworkers": true, - "p-queue": true, - "process": true, - "promise-timeout": true, - "shortid": true - } - }, - "multiaddr": { - "packages": { - "bs58": true, - "buffer": true, - "class-is": true, - "hi-base32": true, - "ip": true, - "is-ip": true, - "varint": true - } - }, - "multiaddr-to-uri": { - "packages": { - "multiaddr": true - } - }, - "multibase": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@multiformats/base-x": true, - "base-x": true, - "buffer": true, - "web-encoding": true - } - }, - "multicodec": { - "packages": { - "buffer": true, - "uint8arrays": true, - "varint": true - } - }, - "multiformats": { - "globals": { - "TextDecoder": true, - "TextEncoder": true, - "console.warn": true - } - }, - "multihashes": { - "packages": { - "bs58": true, - "buffer": true, - "multibase": true, - "uint8arrays": true, - "varint": true, - "web-encoding": true - } - }, - "multihashing-async": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "blakejs": true, - "buffer": true, - "err-code": true, - "js-sha3": true, - "multihashes": true, - "murmurhash3js": true, - "murmurhash3js-revisited": true, - "nodeify": true, - "process": true - } - }, - "multistream-select": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "debug": true, - "err-code": true, - "interface-connection": true, - "once": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true, - "semver": true, - "varint": true - } - }, - "muport-did-resolver": { - "packages": { - "@babel/runtime": true, - "did-resolver": true, - "node-fetch": true - } - }, - "murmurhash3js": { - "globals": { - "define": true - } - }, - "murmurhash3js-revisited": { - "globals": { - "define": true - } - }, - "nanoid": { - "globals": { - "crypto": true, - "msCrypto": true, - "navigator": true - } - }, - "no-case": { - "packages": { - "lower-case": true - } - }, - "node-forge": { + "mockttp>node-forge": { "globals": { "Blob": true, "MutationObserver": true, @@ -3753,364 +6030,65 @@ "setTimeout": true }, "packages": { - "browser-resolve": true, - "process": true, - "timers-browserify": true + "browserify>browser-resolve": true, + "browserify>process": true, + "browserify>timers-browserify": true } }, - "node-interval-tree": { - "packages": { - "shallowequal": true - } - }, - "nodeify": { + "nanoid": { "globals": { - "setTimeout": true - }, - "packages": { - "is-promise": true, - "process": true, - "promise": true, - "timers-browserify": true + "crypto": true, + "msCrypto": true, + "navigator": true } }, - "nofilter": { + "nock>deep-equal": { "packages": { - "buffer": true, - "stream-browserify": true, - "util": true + "enzyme>is-regex": true, + "enzyme>object-is": true, + "nock>deep-equal>is-arguments": true, + "nock>deep-equal>is-date-object": true, + "nock>deep-equal>object-keys": true, + "string.prototype.matchall>regexp.prototype.flags": true + } + }, + "node-fetch": { + "globals": { + "Headers": true, + "Request": true, + "Response": true, + "fetch": true } }, "nonce-tracker": { "packages": { - "assert": true, "await-semaphore": true, + "browserify>assert": true, "ethjs-query": true } }, - "number-to-bn": { - "packages": { - "bn.js": true, - "strip-hex-prefix": true - } - }, "obj-multiplex": { "globals": { "console.warn": true }, "packages": { "end-of-stream": true, - "once": true, + "pump>once": true, "readable-stream": true } }, - "obs-store": { - "packages": { - "safe-event-emitter": true, - "xtend": true - } - }, - "once": { - "packages": { - "wrappy": true - } - }, - "orbit-db": { - "globals": { - "console.log": true - }, - "packages": { - "cids": true, - "ipfs-pubsub-1on1": true, - "logplease": true, - "multihashes": true, - "orbit-db-access-controllers": true, - "orbit-db-cache": true, - "orbit-db-counterstore": true, - "orbit-db-docstore": true, - "orbit-db-eventstore": true, - "orbit-db-feedstore": true, - "orbit-db-identity-provider": true, - "orbit-db-io": true, - "orbit-db-keystore": true, - "orbit-db-kvstore": true, - "orbit-db-pubsub": true, - "path-browserify": true - } - }, - "orbit-db-access-controllers": { - "globals": { - "console.log": true - }, - "packages": { - "events": true, - "orbit-db-io": true, - "p-map-series": true, - "path-browserify": true, - "safe-buffer": true - } - }, - "orbit-db-cache": { - "packages": { - "level-js": true, - "logplease": true, - "path-browserify": true - } - }, - "orbit-db-counterstore": { - "packages": { - "crdts": true, - "orbit-db-store": true - } - }, - "orbit-db-docstore": { - "packages": { - "orbit-db-store": true, - "p-map": true, - "readable-stream": true - } - }, - "orbit-db-eventstore": { - "packages": { - "orbit-db-store": true - } - }, - "orbit-db-feedstore": { - "packages": { - "orbit-db-eventstore": true - } - }, - "orbit-db-identity-provider": { - "packages": { - "orbit-db-keystore": true - } - }, - "orbit-db-io": { - "packages": { - "buffer": true, - "cids": true, - "ipld-dag-pb": true - } - }, - "orbit-db-keystore": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "elliptic": true, - "level-js": true, - "levelup": true, - "libp2p-crypto": true, - "lru": true, - "safe-buffer": true, - "secp256k1": true - } - }, - "orbit-db-kvstore": { - "packages": { - "orbit-db-store": true - } - }, - "orbit-db-pubsub": { - "packages": { - "buffer": true, - "ipfs-pubsub-peer-monitor": true, - "logplease": true, - "p-series": true - } - }, - "orbit-db-store": { - "globals": { - "clearInterval": true, - "console.error": true, - "console.warn": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "events": true, - "ipfs-log": true, - "logplease": true, - "orbit-db-io": true, - "p-each-series": true, - "p-map": true, - "readable-stream": true - } - }, - "os-browserify": { - "globals": { - "location": true, - "navigator": true - } - }, - "p-each-series": { - "packages": { - "p-reduce": true - } - }, - "p-map-series": { - "packages": { - "p-reduce": true - } - }, - "p-queue": { - "globals": { - "clearInterval": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "eventemitter3": true - } - }, - "p-series": { - "packages": { - "@sindresorhus/is": true, - "p-reduce": true - } - }, - "p-times": { - "packages": { - "p-map": true - } - }, - "param-case": { - "packages": { - "no-case": true - } - }, - "parse-asn1": { - "packages": { - "asn1.js": true, - "browserify-aes": true, - "buffer": true, - "evp_bytestokey": true, - "pbkdf2": true - } - }, - "pascal-case": { - "packages": { - "camel-case": true, - "upper-case-first": true - } - }, - "path-browserify": { - "packages": { - "process": true - } - }, - "path-case": { - "packages": { - "no-case": true - } - }, - "path-to-regexp": { - "packages": { - "isarray": true - } - }, - "pbkdf2": { - "globals": { - "crypto": true, - "process": true - }, - "packages": { - "create-hash": true, - "process": true, - "ripemd160": true, - "safe-buffer": true, - "sha.js": true - } - }, - "peek-stream": { - "packages": { - "buffer": true, - "buffer-from": true, - "duplexify": true, - "through2": true - } - }, - "peer-book": { - "packages": { - "bs58": true, - "is-buffer": true, - "peer-id": true, - "peer-info": true - } - }, - "peer-id": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "class-is": true, - "libp2p-crypto": true, - "multihashes": true - } - }, - "peer-info": { - "packages": { - "assert": true, - "multiaddr": true, - "peer-id": true, - "unique-by": true - } - }, - "popper.js": { - "globals": { - "MSInputMethodContext": true, - "Node.DOCUMENT_POSITION_FOLLOWING": true, - "cancelAnimationFrame": true, - "console.warn": true, - "define": true, - "devicePixelRatio": true, - "document": true, - "getComputedStyle": true, - "innerHeight": true, - "innerWidth": true, - "navigator": true, - "requestAnimationFrame": true, - "setTimeout": true - } - }, - "precond": { - "packages": { - "util": true - } - }, - "process": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "process-nextick-args": { - "packages": { - "process": true - } - }, - "promise": { - "globals": { - "setImediate": true, - "setTimeout": true - }, - "packages": { - "is-promise": true, - "process": true - } - }, - "promise-timeout": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, "promise-to-callback": { "packages": { - "is-fn": true, - "set-immediate-shim": true + "promise-to-callback>is-fn": true, + "promise-to-callback>set-immediate-shim": true + } + }, + "promise-to-callback>set-immediate-shim": { + "globals": { + "setTimeout.apply": true + }, + "packages": { + "browserify>timers-browserify": true } }, "prop-types": { @@ -4118,28 +6096,13 @@ "console": true }, "packages": { - "object-assign": true, - "react-is": true + "prop-types>react-is": true, + "react>object-assign": true } }, - "protons": { - "packages": { - "buffer": true, - "is-buffer": true, - "protocol-buffers-schema": true, - "safe-buffer": true, - "signed-varint": true, - "varint": true - } - }, - "public-encrypt": { - "packages": { - "bn.js": true, - "browserify-rsa": true, - "buffer": true, - "create-hash": true, - "parse-asn1": true, - "randombytes": true + "prop-types>react-is": { + "globals": { + "console": true } }, "pubnub": { @@ -4160,110 +6123,40 @@ "setTimeout": true } }, - "pull-handshake": { - "packages": { - "pull-cat": true, - "pull-pair": true, - "pull-pushable": true, - "pull-reader": true - } - }, - "pull-length-prefixed": { - "packages": { - "pull-pushable": true, - "pull-reader": true, - "safe-buffer": true, - "varint": true - } - }, - "pull-mplex": { - "packages": { - "async": true, - "buffer": true, - "debug": true, - "events": true, - "interface-connection": true, - "looper": true, - "pull-abortable": true, - "pull-pushable": true, - "pull-stream": true, - "pull-through": true, - "varint": true - } - }, - "pull-reader": { + "pubnub>cbor-sync": { "globals": { - "cb": true, + "define": true + }, + "packages": { + "browserify>buffer": true + } + }, + "pubnub>superagent": { + "globals": { + "ActiveXObject": true, + "XMLHttpRequest": true, + "btoa": true, "clearTimeout": true, + "console.error": true, + "console.trace": true, + "console.warn": true, "setTimeout": true }, "packages": { - "buffer": true - } - }, - "pull-sort": { - "packages": { - "pull-defer": true, - "pull-stream": true - } - }, - "pull-stream": { - "globals": { - "console.log": true - } - }, - "pull-stream-to-async-iterator": { - "packages": { - "pull-stream": true - } - }, - "pull-stream-to-stream": { - "packages": { - "process": true, - "stream-browserify": true, - "timers-browserify": true - } - }, - "pull-through": { - "packages": { - "looper": true - } - }, - "pull-ws": { - "globals": { - "WebSocket": true, - "location": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "https-browserify": true, - "process": true, - "relative-url": true, - "safe-buffer": true, - "stream-http": true, - "timers-browserify": true, - "url": true + "pubnub>superagent>component-emitter": true } }, "pump": { "packages": { - "browser-resolve": true, + "browserify>browser-resolve": true, + "browserify>process": true, "end-of-stream": true, - "once": true, - "process": true + "pump>once": true } }, - "pumpify": { + "pump>once": { "packages": { - "duplexify": true, - "inherits": true, - "pump": true - } - }, - "punycode": { - "globals": { - "define": true + "pump>once>wrappy": true } }, "qrcode-generator": { @@ -4278,39 +6171,13 @@ }, "packages": { "prop-types": true, - "qr.js": true, + "qrcode.react>qr.js": true, "react": true } }, - "rabin-wasm": { - "globals": { - "Blob": true, - "Response": true, - "WebAssembly": true - }, + "rc>deep-extend": { "packages": { - "assemblyscript": true - } - }, - "randombytes": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "process": true, - "safe-buffer": true - } - }, - "randomfill": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "process": true, - "randombytes": true, - "safe-buffer": true + "browserify>buffer": true } }, "react": { @@ -4318,8 +6185,25 @@ "console": true }, "packages": { - "object-assign": true, - "prop-types": true + "prop-types": true, + "react>object-assign": true + } + }, + "react-devtools": { + "packages": { + "react-devtools>react-devtools-core": true + } + }, + "react-devtools>ip": { + "packages": { + "browserify>buffer": true, + "browserify>os-browserify": true + } + }, + "react-devtools>react-devtools-core": { + "globals": { + "WebSocket": true, + "setTimeout": true } }, "react-dnd": { @@ -4327,14 +6211,14 @@ "console.error": true }, "packages": { - "disposables": true, - "dnd-core": true, - "hoist-non-react-statics": true, - "invariant": true, "lodash": true, "prop-types": true, "react": true, - "shallowequal": true + "react-dnd>disposables": true, + "react-dnd>dnd-core": true, + "react-dnd>hoist-non-react-statics": true, + "react-dnd>invariant": true, + "react-dnd>shallowequal": true } }, "react-dnd-html5-backend": { @@ -4348,8 +6232,26 @@ "setTimeout": true } }, + "react-dnd>dnd-core": { + "packages": { + "lodash": true, + "react-dnd>dnd-core>asap": true, + "react-dnd>invariant": true, + "redux": true + } + }, + "react-dnd>dnd-core>asap": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "document.createTextNode": true, + "setInterval": true, + "setTimeout": true + } + }, "react-dom": { "globals": { + "HTMLIFrameElement": true, "MSApp": true, "__REACT_DEVTOOLS_GLOBAL_HOOK__": true, "addEventListener": true, @@ -4370,28 +6272,22 @@ "trustedTypes": true }, "packages": { - "object-assign": true, "prop-types": true, "react": true, - "scheduler": true + "react-dom>scheduler": true, + "react>object-assign": true } }, - "react-easy-swipe": { + "react-dom>scheduler": { "globals": { - "addEventListener": true, - "define": true, - "document.addEventListener": true, - "document.removeEventListener": true - }, - "packages": { - "prop-types": true, - "react": true - } - }, - "react-fast-compare": { - "globals": { - "Element": true, - "console.warn": true + "MessageChannel": true, + "cancelAnimationFrame": true, + "clearTimeout": true, + "console": true, + "navigator": true, + "performance": true, + "requestAnimationFrame": true, + "setTimeout": true } }, "react-idle-timer": { @@ -4417,15 +6313,19 @@ "Node.TEXT_NODE": true }, "packages": { - "babel-runtime": true, - "is-dom": true, + "ethjs-query>babel-runtime": true, "prop-types": true, - "react": true + "react": true, + "react-inspector>is-dom": true } }, - "react-is": { + "react-inspector>is-dom": { "globals": { - "console": true + "Node": true + }, + "packages": { + "proxyquire>fill-keys>is-object": true, + "react-inspector>is-dom>is-window": true } }, "react-popper": { @@ -4435,8 +6335,19 @@ "packages": { "@popperjs/core": true, "react": true, - "react-fast-compare": true, - "warning": true + "react-popper>react-fast-compare": true, + "react-popper>warning": true + } + }, + "react-popper>react-fast-compare": { + "globals": { + "Element": true, + "console.warn": true + } + }, + "react-popper>warning": { + "globals": { + "console": true } }, "react-redux": { @@ -4446,14 +6357,19 @@ }, "packages": { "@babel/runtime": true, - "hoist-non-react-statics": true, "prop-types": true, + "prop-types>react-is": true, "react": true, "react-dom": true, - "react-is": true, + "react-redux>hoist-non-react-statics": true, "redux": true } }, + "react-redux>hoist-non-react-statics": { + "packages": { + "prop-types>react-is": true + } + }, "react-responsive-carousel": { "globals": { "HTMLElement": true, @@ -4467,30 +6383,90 @@ "classnames": true, "react": true, "react-dom": true, - "react-easy-swipe": true + "react-responsive-carousel>react-easy-swipe": true } }, - "react-router": { + "react-responsive-carousel>react-easy-swipe": { + "globals": { + "addEventListener": true, + "define": true, + "document.addEventListener": true, + "document.removeEventListener": true + }, "packages": { - "history": true, - "hoist-non-react-statics": true, - "mini-create-react-context": true, - "path-to-regexp": true, "prop-types": true, - "react": true, - "react-is": true, - "tiny-invariant": true, - "tiny-warning": true + "react": true } }, "react-router-dom": { "packages": { - "history": true, "prop-types": true, "react": true, - "react-router": true, - "tiny-invariant": true, - "tiny-warning": true + "react-router-dom>history": true, + "react-router-dom>react-router": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>history": { + "globals": { + "addEventListener": true, + "confirm": true, + "document": true, + "history": true, + "location": true, + "navigator.userAgent": true, + "removeEventListener": true + }, + "packages": { + "react-router-dom>history>resolve-pathname": true, + "react-router-dom>history>value-equal": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>react-router": { + "packages": { + "prop-types": true, + "prop-types>react-is": true, + "react": true, + "react-redux>hoist-non-react-statics": true, + "react-router-dom>react-router>history": true, + "react-router-dom>react-router>mini-create-react-context": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true, + "sinon>nise>path-to-regexp": true + } + }, + "react-router-dom>react-router>history": { + "globals": { + "addEventListener": true, + "confirm": true, + "document": true, + "history": true, + "location": true, + "navigator.userAgent": true, + "removeEventListener": true + }, + "packages": { + "react-router-dom>history>resolve-pathname": true, + "react-router-dom>history>value-equal": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>react-router>mini-create-react-context": { + "packages": { + "@babel/runtime": true, + "@storybook/api>@reach/router>create-react-context>gud": true, + "prop-types": true, + "react": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>tiny-warning": { + "globals": { + "console": true } }, "react-simple-file-input": { @@ -4526,9 +6502,26 @@ "setTimeout": true }, "packages": { - "popper.js": true, "react": true, - "react-dom": true + "react-dom": true, + "react-tippy>popper.js": true + } + }, + "react-tippy>popper.js": { + "globals": { + "MSInputMethodContext": true, + "Node.DOCUMENT_POSITION_FOLLOWING": true, + "cancelAnimationFrame": true, + "console.warn": true, + "define": true, + "devicePixelRatio": true, + "document": true, + "getComputedStyle": true, + "innerHeight": true, + "innerWidth": true, + "navigator.userAgent": true, + "requestAnimationFrame": true, + "setTimeout": true } }, "react-toggle-button": { @@ -4545,47 +6538,65 @@ }, "react-transition-group": { "globals": { - "Element": true, "clearTimeout": true, "setTimeout": true }, "packages": { - "chain-function": true, - "dom-helpers": true, "prop-types": true, "react": true, "react-dom": true, - "warning": true + "react-transition-group>chain-function": true, + "react-transition-group>dom-helpers": true, + "react-transition-group>warning": true + } + }, + "react-transition-group>dom-helpers": { + "globals": { + "document": true, + "setTimeout": true + }, + "packages": { + "@babel/runtime": true + } + }, + "react-transition-group>warning": { + "globals": { + "console": true } }, "readable-stream": { "packages": { - "browser-resolve": true, - "buffer": true, - "core-util-is": true, - "events": true, - "inherits": true, - "isarray": true, - "process": true, - "process-nextick-args": true, - "safe-buffer": true, - "string_decoder": true, - "timers-browserify": true, - "util-deprecate": true + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>timers-browserify": true, + "pumpify>inherits": true, + "readable-stream>core-util-is": true, + "readable-stream>isarray": true, + "readable-stream>process-nextick-args": true, + "readable-stream>safe-buffer": true, + "readable-stream>string_decoder": true } }, - "readable-web-to-node-stream": { + "readable-stream>core-util-is": { "packages": { - "readable-stream": true + "browserify>insert-module-globals>is-buffer": true } }, - "receptacle": { - "globals": { - "clearTimeout": true, - "setTimeout": true - }, + "readable-stream>process-nextick-args": { "packages": { - "ms": true + "browserify>process": true + } + }, + "readable-stream>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "readable-stream>string_decoder": { + "packages": { + "readable-stream>safe-buffer": true } }, "redux": { @@ -4596,324 +6607,60 @@ "@babel/runtime": true } }, - "regenerator-runtime": { - "globals": { - "regeneratorRuntime": "write" - } - }, - "regexp.prototype.flags": { - "packages": { - "call-bind": true, - "define-properties": true - } - }, - "relative-url": { - "packages": { - "url": true - } - }, - "retimer": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "ripemd160": { - "packages": { - "buffer": true, - "hash-base": true, - "inherits": true - } - }, - "rlp": { - "globals": { - "TextEncoder": true - }, - "packages": { - "bn.js": true, - "buffer": true - } - }, - "rlp-browser": { - "packages": { - "assert": true, - "buffer": true - } - }, - "safe-buffer": { - "packages": { - "buffer": true - } - }, "safe-event-emitter": { "globals": { "setTimeout": true }, "packages": { - "events": true, - "util": true - } - }, - "sanitize-filename": { - "packages": { - "truncate-utf8-bytes": true - } - }, - "scheduler": { - "globals": { - "MessageChannel": true, - "cancelAnimationFrame": true, - "clearTimeout": true, - "console": true, - "navigator": true, - "performance": true, - "requestAnimationFrame": true, - "setTimeout": true - } - }, - "scrypt-js": { - "globals": { - "define": true, - "setTimeout": true - }, - "packages": { - "timers-browserify": true - } - }, - "scryptsy": { - "packages": { - "buffer": true, - "pbkdf2": true - } - }, - "secp256k1": { - "packages": { - "bip66": true, - "bn.js": true, - "create-hash": true, - "drbg.js": true, - "elliptic": true, - "is-buffer": true, - "safe-buffer": true - } - }, - "semaphore": { - "globals": { - "define": true, - "setTimeout": true - }, - "packages": { - "process": true + "3box>events": true, + "browserify>util": true } }, "semver": { - "globals": { - "console": true - }, - "packages": { - "lru-cache": true, - "process": true - } - }, - "sentence-case": { - "packages": { - "no-case": true, - "upper-case-first": true - } - }, - "set-immediate-shim": { - "globals": { - "setTimeout.apply": true - }, - "packages": { - "timers-browserify": true - } - }, - "sha.js": { - "packages": { - "inherits": true, - "safe-buffer": true - } - }, - "shortid": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "nanoid": true - } - }, - "signed-varint": { - "packages": { - "varint": true - } - }, - "simple-peer": { - "globals": { - "clearInterval": true, - "console.warn": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "debug": true, - "get-browser-rtc": true, - "inherits": true, - "randombytes": true, - "readable-stream": true - } - }, - "snake-case": { - "packages": { - "no-case": true - } - }, - "socket.io-client": { - "globals": { - "clearTimeout": true, - "location": true, - "setTimeout": true - }, - "packages": { - "backo2": true, - "component-bind": true, - "component-emitter": true, - "debug": true, - "engine.io-client": true, - "has-binary2": true, - "indexof": true, - "parseqs": true, - "parseuri": true, - "socket.io-parser": true, - "to-array": true - } - }, - "socket.io-parser": { - "globals": { - "Blob": true, - "File": true, - "FileReader": true - }, - "packages": { - "buffer": true, - "component-emitter": true, - "debug": true, - "isarray": true - } - }, - "socket.io-pull-stream": { "globals": { "console.error": true }, "packages": { - "buffer": true, - "data-queue": true, - "debug": true, - "pull-stream": true, - "uuid": true + "browserify>process": true, + "semver>lru-cache": true } }, - "sort-keys": { + "semver>lru-cache": { "packages": { - "is-plain-obj": true + "semver>lru-cache>yallist": true } }, - "stable": { - "globals": { - "define": true - } - }, - "store": { - "globals": { - "ActiveXObject": true, - "console": true - } - }, - "stream-browserify": { + "sinon>nise>path-to-regexp": { "packages": { - "events": true, - "inherits": true, - "readable-stream": true + "sinon>nise>path-to-regexp>isarray": true } }, - "stream-http": { - "globals": { - "AbortController": true, - "Blob": true, - "MSStreamReader": true, - "ReadableStream": true, - "WritableStream": true, - "XDomainRequest": true, - "XMLHttpRequest": true, - "clearTimeout": true, - "fetch": true, - "location.protocol.search": true, - "setTimeout": true - }, + "source-map-explorer>btoa": { "packages": { - "buffer": true, - "builtin-status-codes": true, - "inherits": true, - "process": true, - "readable-stream": true, - "url": true, - "xtend": true + "browserify>buffer": true } }, - "stream-to-pull-stream": { - "globals": { - "console.error": true - }, + "string.prototype.matchall>call-bind": { "packages": { - "looper": true, - "process": true, - "pull-stream": true + "eslint-plugin-react>array-includes>get-intrinsic": true, + "mocha>object.assign>function-bind": true } }, - "string_decoder": { + "string.prototype.matchall>regexp.prototype.flags": { "packages": { - "safe-buffer": true + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true } }, - "strip-hex-prefix": { + "stylelint>write-file-atomic>typedarray-to-buffer": { "packages": { - "is-hex-prefixed": true + "browserify>buffer": true, + "jsdom>request>is-typedarray": true } }, - "superagent": { - "globals": { - "ActiveXObject": true, - "XMLHttpRequest": true, - "btoa": true, - "clearTimeout": true, - "console.error": true, - "console.trace": true, - "console.warn": true, - "setTimeout": true - }, + "terser>source-map-support>buffer-from": { "packages": { - "component-emitter": true - } - }, - "swap-case": { - "packages": { - "lower-case": true, - "upper-case": true - } - }, - "tar-stream": { - "packages": { - "bl": true, - "buffer": true, - "end-of-stream": true, - "fs-constants": true, - "inherits": true, - "process": true, - "readable-stream": true, - "string_decoder": true, - "util": true + "browserify>buffer": true } }, "textarea-caret": { @@ -4927,248 +6674,36 @@ "mozInnerScreenX": true } }, - "through": { - "packages": { - "process": true, - "stream-browserify": true - } - }, - "through2": { - "packages": { - "process": true, - "readable-stream": true, - "util": true, - "xtend": true - } - }, - "time-cache": { - "packages": { - "lodash.throttle": true - } - }, - "timers-browserify": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "process": true - } - }, - "tiny-warning": { - "globals": { - "console": true - } - }, - "title-case": { - "packages": { - "no-case": true, - "upper-case": true - } - }, - "toggle-selection": { - "globals": { - "document.activeElement": true, - "document.getSelection": true - } - }, - "trezor-connect": { - "globals": { - "__TREZOR_CONNECT_SRC": true, - "addEventListener": true, - "btoa": true, - "chrome": true, - "clearInterval": true, - "clearTimeout": true, - "console": true, - "document.body": true, - "document.createElement": true, - "document.createTextNode": true, - "document.getElementById": true, - "document.querySelectorAll": true, - "location": true, - "navigator": true, - "open": true, - "removeEventListener": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "@babel/runtime": true, - "@metamask/eth-sig-util": true, - "cross-fetch": true, - "events": true - } - }, - "truncate-utf8-bytes": { - "packages": { - "utf8-byte-length": true - } - }, - "tslib": { - "globals": { - "define": true - } - }, - "tweetnacl": { - "globals": { - "crypto": true, - "msCrypto": true, - "nacl": "write" - }, - "packages": { - "browser-resolve": true - } - }, - "tweetnacl-util": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "browser-resolve": true - } - }, - "typedarray-to-buffer": { - "packages": { - "buffer": true, - "is-typedarray": true - } - }, - "typical": { - "globals": { - "define": true - } - }, - "uint8arrays": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "multibase": true, - "web-encoding": true - } - }, - "unorm": { - "globals": { - "define": true - } - }, - "uport-base64url": { - "packages": { - "buffer": true - } - }, - "upper-case-first": { - "packages": { - "upper-case": true - } - }, - "url": { - "packages": { - "punycode": true, - "querystring-es3": true - } - }, - "utf8": { - "globals": { - "define": true - } - }, - "util": { - "globals": { - "console.error": true, - "console.log": true, - "console.trace": true, - "process": true - }, - "packages": { - "inherits": true, - "process": true - } - }, - "util-deprecate": { - "globals": { - "console.trace": true, - "console.warn": true, - "localStorage": true - } - }, "uuid": { "globals": { "crypto": true, "msCrypto": true } }, - "varint-decoder": { + "vinyl>clone": { "packages": { - "is-buffer": true, - "varint": true + "browserify>buffer": true } }, - "vm-browserify": { - "globals": { - "document.body.appendChild": true, - "document.body.removeChild": true, - "document.createElement": true - } - }, - "warning": { - "globals": { - "console": true - } - }, - "web-encoding": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, + "vinyl>cloneable-readable>process-nextick-args": { "packages": { - "util": true + "browserify>process": true } }, "web3": { "globals": { "Web3": "write", - "XMLHttpRequest": "write", + "XMLHttpRequest": true, "clearTimeout": true, "console.error": true, "setTimeout": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "crypto-js": true, - "utf8": true, - "xhr2-cookies": true - } - }, - "web3-provider-engine": { - "globals": { - "WebSocket": true, - "console": true, - "setTimeout": true - }, - "packages": { - "@ethereumjs/tx": true, - "async": true, - "backoff": true, - "browser-resolve": true, - "buffer": true, - "eth-block-tracker": true, - "eth-json-rpc-filters": true, - "eth-json-rpc-infura": true, - "eth-json-rpc-middleware": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "events": true, - "json-stable-stringify": true, - "semaphore": true, - "util": true, - "xtend": true + "browserify>buffer": true, + "web3>bignumber.js": true, + "web3>crypto-js": true, + "web3>utf8": true, + "web3>xhr2-cookies": true } }, "web3-stream-provider": { @@ -5176,24 +6711,52 @@ "setTimeout": true }, "packages": { + "browserify>util": true, "readable-stream": true, - "util": true, - "uuid": true + "web3-stream-provider>uuid": true } }, - "web3-utils": { + "web3-stream-provider>uuid": { "globals": { - "setTimeout": true + "crypto": true, + "msCrypto": true + } + }, + "web3>bignumber.js": { + "globals": { + "define": true }, "packages": { - "bn.js": true, - "eth-lib": true, - "ethereum-bloom-filters": true, - "ethjs-unit": true, - "is-buffer": true, - "number-to-bn": true, - "randombytes": true, - "utf8": true + "browserify>crypto-browserify": true + } + }, + "web3>crypto-js": { + "globals": { + "define": true + } + }, + "web3>utf8": { + "globals": { + "define": true + } + }, + "web3>xhr2-cookies": { + "globals": { + "console.warn": true + }, + "packages": { + "browserify>buffer": true, + "browserify>https-browserify": true, + "browserify>os-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>url": true, + "web3>xhr2-cookies>cookiejar": true + } + }, + "web3>xhr2-cookies>cookiejar": { + "globals": { + "console.warn": true } }, "webextension-polyfill": { @@ -5205,61 +6768,9 @@ "define": true } }, - "webrtcsupport": { - "globals": { - "AudioContext": true, - "MediaStream": true, - "RTCIceCandidate": true, - "RTCPeerConnection": true, - "RTCSessionDescription": true, - "document": true, - "location.protocol": true, - "mozRTCIceCandidate": true, - "mozRTCPeerConnection": true, - "mozRTCSessionDescription": true, - "navigator.getUserMedia": true, - "navigator.mozGetUserMedia": true, - "navigator.msGetUserMedia": true, - "navigator.userAgent.match": true, - "navigator.webkitGetUserMedia": true, - "webkitAudioContext": true, - "webkitMediaStream": true, - "webkitRTCPeerConnection": true - } - }, - "whatwg-fetch": { - "globals": { - "Blob": true, - "FileReader": true, - "FormData": true, - "URLSearchParams.prototype.isPrototypeOf": true, - "XMLHttpRequest": true, - "define": true, - "setTimeout": true - } - }, - "xhr2": { - "globals": { - "XMLHttpRequest": true - } - }, - "xhr2-cookies": { - "globals": { - "console.warn": true - }, + "webpack>memory-fs>errno": { "packages": { - "buffer": true, - "cookiejar": true, - "https-browserify": true, - "os-browserify": true, - "process": true, - "stream-http": true, - "url": true - } - }, - "xor-distance": { - "packages": { - "buffer": true + "webpack>memory-fs>errno>prr": true } } } diff --git a/lavamoat/browserify/flask/policy-override.json b/lavamoat/browserify/flask/policy-override.json deleted file mode 100644 index 71fd98f61..000000000 --- a/lavamoat/browserify/flask/policy-override.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "resources": { - "browser-resolve": { - "packages": { - "core-js": true - } - }, - "babel-runtime": { - "packages": { - "@babel/runtime": true - } - }, - "node-fetch": { - "globals": { - "fetch": true - } - }, - "lodash": { - "globals": { - "setTimeout": true, - "clearTimeout": true - } - }, - "@ethersproject/random": { - "globals": { - "crypto.getRandomValues": true - } - }, - "browser-passworder": { - "globals": { - "crypto": true - } - }, - "randombytes": { - "globals": { - "crypto.getRandomValues": true - } - }, - "extensionizer": { - "globals": { - "console": true - } - }, - "web3": { - "globals": { - "XMLHttpRequest": true - } - }, - "storage": { - "globals": { - "localStorage": true - } - } - } -} diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 5346933d0..5c5475cb5 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -9,62 +9,2200 @@ "setTimeout": true }, "packages": { - "3box-orbitdb-plugins": true, - "3id-resolver": true, + "3box>3box-orbitdb-plugins": true, + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>3id-resolver": true, + "3box>did-jwt": true, + "3box>ethers": true, + "3box>ethers>elliptic": true, + "3box>graphql-request": true, + "3box>https-did-resolver": true, + "3box>ipfs": true, + "3box>ipfs-did-document": true, + "3box>ipfs-mini": true, + "3box>ipfs>is-ipfs": true, + "3box>ipfs>multihashes": true, + "3box>js-sha256": true, + "3box>muport-did-resolver": true, + "3box>orbit-db": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-identity-provider": true, + "3box>orbit-db>orbit-db-pubsub": true, + "3box>store": true, + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, "@babel/runtime": true, - "buffer": true, - "did-jwt": true, - "elliptic": true, - "ethers": true, - "graphql-request": true, - "https-did-resolver": true, - "ipfs": true, - "ipfs-did-document": true, - "ipfs-log": true, - "ipfs-mini": true, - "is-ipfs": true, - "js-sha256": true, - "multihashes": true, - "muport-did-resolver": true, - "node-fetch": true, - "orbit-db": true, - "orbit-db-access-controllers": true, - "orbit-db-identity-provider": true, - "orbit-db-pubsub": true, - "process": true, - "store": true, - "tweetnacl": true, - "tweetnacl-util": true + "browserify>buffer": true, + "browserify>process": true, + "node-fetch": true } }, - "3box-orbitdb-plugins": { + "3box>3box-orbitdb-plugins": { "globals": { "console.log": true }, "packages": { - "base64url": true, - "did-jwt": true, - "did-resolver": true, - "events": true, - "ipfs-log": true, - "is-ipfs": true, - "orbit-db-access-controllers": true, - "orbit-db-io": true, - "safe-buffer": true + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>3id-resolver>did-jwt": true, + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ipfs>is-ipfs": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>events": true, + "ethereumjs-wallet>safe-buffer": true } }, - "3id-resolver": { + "3box>3box-orbitdb-plugins>ipfs-log": { + "globals": { + "clearTimeout": true, + "console.warn": true, + "setTimeout": true + }, "packages": { + "3box>3box-orbitdb-plugins>ipfs-log>json-stringify-deterministic": true, + "3box>3box-orbitdb-plugins>ipfs-log>p-map": true, + "3box>3box-orbitdb-plugins>ipfs-log>p-whilst": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>buffer": true, + "jest>@jest/core>p-each-series": true + } + }, + "3box>3id-resolver": { + "packages": { + "3box>3id-resolver>did-jwt": true, + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ipfs-did-document": true, + "@babel/runtime": true + } + }, + "3box>3id-resolver>did-jwt": { + "packages": { + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ethers>elliptic": true, + "3box>js-sha256": true, + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, "@babel/runtime": true, - "base64url": true, - "did-jwt": true, - "did-resolver": true, - "ipfs-did-document": true + "browserify>buffer": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>3id-resolver>did-jwt>base64url": { + "packages": { + "browserify>buffer": true + } + }, + "3box>did-jwt": { + "packages": { + "3box>did-jwt>@stablelib/utf8": true, + "3box>did-jwt>did-resolver": true, + "3box>did-jwt>js-sha3": true, + "3box>did-jwt>uport-base64url": true, + "3box>ethers>elliptic": true, + "3box>js-sha256": true, + "3box>tweetnacl": true, + "browserify>buffer": true + } + }, + "3box>did-jwt>js-sha3": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>did-jwt>uport-base64url": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ethers": { + "globals": { + "MessageChannel": true, + "XMLHttpRequest": true, + "atob": true, + "btoa": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "crypto.getRandomValues": true, + "define": true, + "setInterval": true, + "setTimeout": true + } + }, + "3box>ethers>elliptic": { + "packages": { + "3box>ethers>elliptic>brorand": true, + "3box>ethers>elliptic>hmac-drbg": true, + "3box>ethers>elliptic>minimalistic-crypto-utils": true, + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true + } + }, + "3box>ethers>elliptic>brorand": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "3box>ethers>elliptic>hmac-drbg": { + "packages": { + "3box>ethers>elliptic>minimalistic-crypto-utils": true, + "3box>ethers>hash.js>minimalistic-assert": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "3box>events": { + "globals": { + "console": true + } + }, + "3box>graphql-request": { + "globals": { + "fetch": true + }, + "packages": { + "3box>graphql-request>cross-fetch": true + } + }, + "3box>graphql-request>cross-fetch": { + "globals": { + "Blob": true, + "FileReader": true, + "FormData": true, + "URLSearchParams.prototype.isPrototypeOf": true, + "XMLHttpRequest": true + } + }, + "3box>graphql-request>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "3box>https-did-resolver": { + "globals": { + "XMLHttpRequest": true + }, + "packages": { + "3box>did-jwt>did-resolver": true, + "browserify>browser-resolve": true + } + }, + "3box>ipfs": { + "globals": { + "AbortController": true, + "clearInterval": true, + "clearTimeout": true, + "console.log": true, + "fetch": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>async-iterator-all": true, + "3box>ipfs>async-iterator-to-pull-stream": true, + "3box>ipfs>async-iterator-to-stream": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>bignumber.js": true, + "3box>ipfs>callbackify": true, + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "3box>ipfs>datastore-core": true, + "3box>ipfs>datastore-pubsub": true, + "3box>ipfs>dlv": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fnv1a": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>human-to-milliseconds": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-bitswap": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipfs-block-service": true, + "3box>ipfs>ipfs-mfs": true, + "3box>ipfs>ipfs-repo": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-exporter": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "3box>ipfs>ipfs-utils": true, + "3box>ipfs>ipld": true, + "3box>ipfs>ipld-dag-cbor": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw": true, + "3box>ipfs>ipns": true, + "3box>ipfs>is-ipfs": true, + "3box>ipfs>is-pull-stream": true, + "3box>ipfs>iso-url": true, + "3box>ipfs>just-flatten-it": true, + "3box>ipfs>kind-of": true, + "3box>ipfs>libp2p": true, + "3box>ipfs>libp2p-bootstrap": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-kad-dht": true, + "3box>ipfs>libp2p-keychain": true, + "3box>ipfs>libp2p-record": true, + "3box>ipfs>libp2p-secio": true, + "3box>ipfs>libp2p-webrtc-star": true, + "3box>ipfs>libp2p-websocket-star-multi": true, + "3box>ipfs>libp2p-websockets": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multiaddr-to-uri": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async": true, + "3box>ipfs>peer-book": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>promisify-es6": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-cat": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-mplex": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-sort": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>pull-stream-to-async-iterator": true, + "3box>ipfs>pull-stream-to-stream": true, + "3box>ipfs>pull-traverse": true, + "3box>ipfs>readable-stream": true, + "3box>ipfs>receptacle": true, + "3box>ipfs>stream-to-pull-stream": true, + "3box>ipfs>superstruct": true, + "3box>ipfs>varint": true, + "@metamask/providers>is-stream": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>timers-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs-mini": { + "globals": { + "XMLHttpRequest": true + } + }, + "3box>ipfs-postmsg-proxy>shortid": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "nanoid": true + } + }, + "3box>ipfs>async": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true, + "browserify>timers-browserify": true, + "lodash": true + } + }, + "3box>ipfs>async-iterator-to-pull-stream": { + "packages": { + "3box>ipfs>async-iterator-to-pull-stream>get-iterator": true, + "3box>ipfs>pull-stream-to-async-iterator": true + } + }, + "3box>ipfs>async-iterator-to-stream": { + "packages": { + "3box>ipfs>async-iterator-to-stream>readable-stream": true, + "browserify>process": true + } + }, + "3box>ipfs>async-iterator-to-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>bl": { + "packages": { + "3box>ipfs>bl>readable-stream": true, + "browserify>buffer": true, + "browserify>util": true + } + }, + "3box>ipfs>bl>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>bs58": { + "packages": { + "3box>ipfs>bs58>base-x": true + } + }, + "3box>ipfs>bs58>base-x": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>cids": { + "packages": { + "3box>ipfs>class-is": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>datastore-core": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>datastore-core>pull-many": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>datastore-pubsub": { + "packages": { + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>multibase": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>dlv": { + "globals": { + "define": true + } + }, + "3box>ipfs>fsm-event": { + "packages": { + "3box>ipfs>fsm-event>fsm": true, + "browserify>assert": true, + "browserify>events": true + } + }, + "3box>ipfs>human-to-milliseconds": { + "packages": { + "3box>ipfs>promisify-es6": true + } + }, + "3box>ipfs>interface-datastore": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore>uuid": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>os-browserify": true, + "browserify>path-browserify": true + } + }, + "3box>ipfs>interface-datastore>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "3box>ipfs>ipfs-bitswap": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>cids": true, + "3box>ipfs>ipfs-bitswap>bignumber.js": true, + "3box>ipfs>ipfs-bitswap>just-debounce-it": true, + "3box>ipfs>ipfs-bitswap>lodash.isequalwith": true, + "3box>ipfs>ipfs-bitswap>moving-average": true, + "3box>ipfs>ipfs-bitswap>multihashing-async": true, + "3box>ipfs>ipfs-bitswap>varint-decoder": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-bitswap>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>ipfs-bitswap>just-debounce-it": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>ipfs-bitswap>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>ipfs-bitswap>varint-decoder": { + "packages": { + "3box>ipfs>varint": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-block": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-block-service": { + "packages": { + "3box>ipfs>async": true + } + }, + "3box>ipfs>ipfs-mfs": { + "globals": { + "Blob": true, + "FileReader": true + }, + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-mfs>async-iterator-last": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-mfs>mortice": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-exporter": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>promisify-es6": true, + "browserify>assert": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-mfs>hamt-sharding": { + "packages": { + "3box>ipfs>ipfs-mfs>hamt-sharding>sparse-array": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-mfs>mortice": { + "globals": { + "Worker": true + }, + "packages": { + "3box>ipfs-postmsg-proxy>shortid": true, + "3box>ipfs>ipfs-mfs>mortice>observable-webworkers": true, + "3box>ipfs>ipfs-mfs>mortice>promise-timeout": true, + "3box>ipfs>libp2p-kad-dht>p-queue": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true + } + }, + "3box>ipfs>ipfs-mfs>mortice>promise-timeout": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>ipfs-repo": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>cids": true, + "3box>ipfs>datastore-core": true, + "3box>ipfs>dlv": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipfs-repo>bignumber.js": true, + "3box>ipfs>ipfs-repo>datastore-level": true, + "3box>ipfs>ipfs-repo>sort-keys": true, + "3box>ipfs>just-safe-set": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>path-browserify": true, + "browserify>timers-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-repo>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level": { + "packages": { + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down": true, + "3box>ipfs>ipfs-repo>datastore-level>level-js": true, + "3box>ipfs>pull-stream": true, + "3box>orbit-db>orbit-db-keystore>levelup": true, + "browserify>buffer": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down": { + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown": true, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>level-codec": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown": { + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown>level-supports": true, + "3box>orbit-db>orbit-db-cache>level-js>immediate": true, + "browserify>buffer": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown>level-supports": { + "packages": { + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>level-codec": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.only": true, + "IDBKeyRange.upperBound": true, + "indexedDB.deleteDatabase": true, + "indexedDB.open": true + }, + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>level-js>abstract-leveldown": true, + "3box>ipfs>ipfs-repo>datastore-level>level-js>idb-readable-stream": true, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js>abstract-leveldown": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js>idb-readable-stream": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.upperBound": true + }, + "packages": { + "browserify>stream-browserify": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>sort-keys": { + "packages": { + "geckodriver>got>is-plain-obj": true + } + }, + "3box>ipfs>ipfs-unixfs": { + "packages": { + "3box>ipfs>protons": true + } + }, + "3box>ipfs>ipfs-unixfs-exporter": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>ipfs-mfs>async-iterator-last": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-unixfs-importer": { + "packages": { + "3box>ipfs>async-iterator-all": true, + "3box>ipfs>bl": true, + "3box>ipfs>err-code": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-importer>async-iterator-batch": true, + "3box>ipfs>ipfs-unixfs-importer>async-iterator-first": true, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>superstruct": true, + "browserify>buffer": true, + "rc>deep-extend": true + } + }, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm": { + "globals": { + "Blob": true, + "Response": true, + "WebAssembly": true + }, + "packages": { + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm>assemblyscript": true + } + }, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm>assemblyscript": { + "globals": { + "WebAssembly.Instance": true, + "WebAssembly.Module": true, + "WebAssembly.instantiateStreaming": true, + "console.log": true + } + }, + "3box>ipfs>ipfs-utils": { + "globals": { + "FileReader": true + }, + "packages": { + "3box>ipfs>ipfs-utils>is-buffer": true, + "3box>ipfs>ipfs-utils>readable-stream": true, + "3box>ipfs>is-pull-stream": true, + "3box>ipfs>kind-of": true, + "@metamask/providers>is-stream": true + } + }, + "3box>ipfs>ipfs-utils>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>ipld": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipld-dag-cbor": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw": true, + "3box>ipfs>ipld>typical": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>promisify-es6": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipld-dag-cbor": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-dag-cbor>is-circular": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>gridplus-sdk>borc": true + } + }, + "3box>ipfs>ipld-dag-pb": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>protons": true, + "@storybook/client-api>stable": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipld-raw": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true + } + }, + "3box>ipfs>ipld-raw>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>err-code": true, + "3box>ipfs>ipld-raw>multihashing-async>murmurhash3js-revisited": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>ipld-raw>multihashing-async>murmurhash3js-revisited": { + "globals": { + "define": true + } + }, + "3box>ipfs>ipld>typical": { + "globals": { + "define": true + } + }, + "3box>ipfs>ipns": { + "packages": { + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipns>timestamp-nano": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>protons": true, + "base32-encode": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>is-ipfs": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>cids": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true + } + }, + "3box>ipfs>iso-url": { + "globals": { + "URL": true, + "URLSearchParams": true, + "location": true + } + }, + "3box>ipfs>libp2p": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>libp2p-websockets": true, + "3box>ipfs>libp2p>libp2p-connection-manager": true, + "3box>ipfs>libp2p>libp2p-floodsub": true, + "3box>ipfs>libp2p>libp2p-ping": true, + "3box>ipfs>libp2p>libp2p-switch": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-book": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>superstruct": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-bootstrap": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p-crypto": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>libp2p-crypto>asn1.js": true, + "3box>ipfs>libp2p-crypto>iso-random-stream": true, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1": true, + "3box>ipfs>libp2p-crypto>multihashing-async": true, + "3box>ipfs>protons": true, + "3box>tweetnacl": true, + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true, + "mockttp>node-forge": true + } + }, + "3box>ipfs>libp2p-crypto>asn1.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-crypto>iso-random-stream": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1>multihashing-async": true, + "eth-trezor-keyring>hdkey>secp256k1": true + } + }, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-crypto>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-kad-dht": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-kad-dht>hashlru": true, + "3box>ipfs>libp2p-kad-dht>heap": true, + "3box>ipfs>libp2p-kad-dht>k-bucket": true, + "3box>ipfs>libp2p-kad-dht>multihashing-async": true, + "3box>ipfs>libp2p-kad-dht>p-queue": true, + "3box>ipfs>libp2p-kad-dht>p-times": true, + "3box>ipfs>libp2p-kad-dht>xor-distance": true, + "3box>ipfs>libp2p-record": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>promisify-es6": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>pull-stream-to-async-iterator": true, + "3box>ipfs>varint": true, + "@metamask/controllers>abort-controller": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eslint>debug": true, + "promise-to-callback": true + } + }, + "3box>ipfs>libp2p-kad-dht>heap": { + "globals": { + "define": true + } + }, + "3box>ipfs>libp2p-kad-dht>k-bucket": { + "packages": { + "browserify>events": true, + "ethereumjs-wallet>randombytes": true + } + }, + "3box>ipfs>libp2p-kad-dht>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-kad-dht>p-queue": { + "globals": { + "clearInterval": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "mockttp>@httptoolkit/subscriptions-transport-ws>eventemitter3": true + } + }, + "3box>ipfs>libp2p-kad-dht>p-times": { + "packages": { + "3box>ipfs>libp2p-kad-dht>p-times>p-map": true + } + }, + "3box>ipfs>libp2p-kad-dht>xor-distance": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-keychain": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-keychain>sanitize-filename": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "mockttp>node-forge": true + } + }, + "3box>ipfs>libp2p-keychain>sanitize-filename": { + "packages": { + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes": true + } + }, + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes": { + "packages": { + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes>utf8-byte-length": true + } + }, + "3box>ipfs>libp2p-record": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-record>buffer-split": true, + "3box>ipfs>libp2p-record>multihashing-async": true, + "3box>ipfs>protons": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>libp2p-record>buffer-split": { + "packages": { + "3box>ipfs>libp2p-record>buffer-split>buffer-indexof": true + } + }, + "3box>ipfs>libp2p-record>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-secio": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>multihashing-async": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-secio>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-secio>pull-handshake": { + "packages": { + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": true, + "3box>ipfs>pull-cat": true, + "3box>ipfs>pull-mplex>pull-pair": true, + "3box>ipfs>pull-pushable": true + } + }, + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": { + "globals": { + "cb": true, + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-secio>pull-length-prefixed": { + "packages": { + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>varint": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>libp2p-webrtc-star": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-webrtc-star>simple-peer": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": true, + "3box>ipfs>libp2p-webrtc-star>webrtcsupport": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>stream-to-pull-stream": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer": { + "globals": { + "clearInterval": true, + "console.warn": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>simple-peer>get-browser-rtc": true, + "3box>ipfs>libp2p-webrtc-star>simple-peer>readable-stream": true, + "browserify>buffer": true, + "eslint>debug": true, + "ethereumjs-wallet>randombytes": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer>get-browser-rtc": { + "globals": { + "RTCIceCandidate": true, + "RTCPeerConnection": true, + "RTCSessionDescription": true, + "mozRTCIceCandidate": true, + "mozRTCPeerConnection": true, + "mozRTCSessionDescription": true, + "webkitRTCIceCandidate": true, + "webkitRTCPeerConnection": true, + "webkitRTCSessionDescription": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": { + "globals": { + "clearTimeout": true, + "location": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>component-bind": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>indexof": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseqs": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseuri": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>to-array": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": true, + "mockttp>@httptoolkit/subscriptions-transport-ws>backo2": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client": { + "globals": { + "MozWebSocket": true, + "WebSocket": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "addEventListener": true, + "attachEvent": true, + "clearTimeout": true, + "document": true, + "location": true, + "navigator": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>component-inherit": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>has-cors": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>yeast": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>indexof": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseqs": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseuri": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser": { + "globals": { + "FileReader": true, + "btoa": true, + "navigator": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>after": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>arraybuffer.slice": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>blob": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>engine.io>engine.io-parser>base64-arraybuffer": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>blob": { + "globals": { + "Blob": true, + "MSBlobBuilder": true, + "MozBlobBuilder": true, + "WebKitBlobBuilder": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>has-cors": { + "globals": { + "XMLHttpRequest": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser": { + "globals": { + "Blob": true, + "File": true, + "FileReader": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>isarray": true, + "browserify>buffer": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": { + "globals": { + "Blob": true, + "File": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2>isarray": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-webrtc-star>webrtcsupport": { + "globals": { + "AudioContext": true, + "MediaStream": true, + "RTCIceCandidate": true, + "RTCPeerConnection": true, + "RTCSessionDescription": true, + "document": true, + "location.protocol": true, + "mozRTCIceCandidate": true, + "mozRTCPeerConnection": true, + "mozRTCSessionDescription": true, + "navigator.getUserMedia": true, + "navigator.mozGetUserMedia": true, + "navigator.msGetUserMedia": true, + "navigator.userAgent.match": true, + "navigator.webkitGetUserMedia": true, + "webkitAudioContext": true, + "webkitMediaStream": true, + "webkitRTCPeerConnection": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true, + "uuid": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>data-queue": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>debug": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>uuid": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>data-queue": { + "packages": { + "browserify>events": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>debug": { + "globals": { + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "analytics-node>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "3box>ipfs>libp2p-websockets": { + "packages": { + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-websockets>pull-ws": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multiaddr-to-uri": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "browserify>os-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p-websockets>pull-ws": { + "globals": { + "WebSocket": true, + "location": true + }, + "packages": { + "3box>ipfs>libp2p-websockets>pull-ws>relative-url": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>https-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>timers-browserify": true, + "browserify>url": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>libp2p-websockets>pull-ws>relative-url": { + "packages": { + "browserify>url": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager": { + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "document": true, + "performance": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug": true, + "browserify>events": true, + "browserify>process": true, + "lodash": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache": { + "packages": { + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache>lodash.throttle": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache>lodash.throttle": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>libp2p>libp2p-ping": { + "packages": { + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>pull-stream": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-switch": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>ipfs-bitswap>moving-average": true, + "3box>ipfs>libp2p-kad-dht>hashlru": true, + "3box>ipfs>libp2p>libp2p-switch>bignumber.js": true, + "3box>ipfs>libp2p>libp2p-switch>libp2p-circuit": true, + "3box>ipfs>libp2p>libp2p-switch>libp2p-identify": true, + "3box>ipfs>libp2p>libp2p-switch>multistream-select": true, + "3box>ipfs>libp2p>libp2p-switch>retimer": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>libp2p-circuit": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>libp2p-identify": { + "globals": { + "console.warn": true + }, + "packages": { + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>multistream-select": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-switch>multistream-select>semver": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>varint": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>multistream-select>semver": { + "globals": { + "console": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>retimer": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>mafmt": { + "packages": { + "3box>ipfs>multiaddr": true + } + }, + "3box>ipfs>merge-options": { + "packages": { + "geckodriver>got>is-plain-obj": true + } + }, + "3box>ipfs>multiaddr": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>class-is": true, + "3box>ipfs>multiaddr>hi-base32": true, + "3box>ipfs>multiaddr>is-ip": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "react-devtools>ip": true + } + }, + "3box>ipfs>multiaddr-to-uri": { + "packages": { + "3box>ipfs>multiaddr": true + } + }, + "3box>ipfs>multiaddr>hi-base32": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>ipfs>multiaddr>is-ip": { + "packages": { + "chromedriver>tcp-port-used>is2>ip-regex": true + } + }, + "3box>ipfs>multibase": { + "packages": { + "3box>ipfs>multibase>base-x": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multibase>base-x": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>multicodec": { + "packages": { + "3box>ipfs>varint": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multihashes": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>varint": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>multihashing-async>murmurhash3js": { + "globals": { + "define": true + } + }, + "3box>ipfs>multihashing-async>nodeify": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>multihashing-async>nodeify>is-promise": true, + "3box>ipfs>multihashing-async>nodeify>promise": true, + "browserify>process": true, + "browserify>timers-browserify": true + } + }, + "3box>ipfs>multihashing-async>nodeify>promise": { + "globals": { + "setImediate": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>multihashing-async>nodeify>is-promise": true, + "browserify>process": true + } + }, + "3box>ipfs>peer-book": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>peer-id": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>multihashes": true, + "browserify>assert": true, + "browserify>buffer": true + } + }, + "3box>ipfs>peer-info": { + "packages": { + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info>unique-by": true, + "browserify>assert": true + } + }, + "3box>ipfs>protons": { + "packages": { + "3box>ipfs>protons>protocol-buffers-schema": true, + "3box>ipfs>protons>signed-varint": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>protons>signed-varint": { + "packages": { + "3box>ipfs>varint": true + } + }, + "3box>ipfs>pull-mplex": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>pull-abortable": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-mplex>looper": true, + "3box>ipfs>pull-mplex>pull-through": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>pull-mplex>interface-connection": { + "packages": { + "3box>ipfs>pull-defer": true + } + }, + "3box>ipfs>pull-mplex>pull-through": { + "packages": { + "3box>ipfs>stream-to-pull-stream>looper": true + } + }, + "3box>ipfs>pull-sort": { + "packages": { + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-stream": true + } + }, + "3box>ipfs>pull-stream": { + "globals": { + "console.log": true + } + }, + "3box>ipfs>pull-stream-to-async-iterator": { + "packages": { + "3box>ipfs>pull-stream": true + } + }, + "3box>ipfs>pull-stream-to-stream": { + "packages": { + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>timers-browserify": true + } + }, + "3box>ipfs>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>receptacle": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "analytics-node>ms": true + } + }, + "3box>ipfs>stream-to-pull-stream": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>pull-stream": true, + "3box>ipfs>stream-to-pull-stream>looper": true, + "browserify>process": true + } + }, + "3box>js-sha256": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>muport-did-resolver": { + "packages": { + "3box>did-jwt>did-resolver": true, + "@babel/runtime": true, + "node-fetch": true + } + }, + "3box>orbit-db": { + "globals": { + "console.log": true + }, + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>multihashes": true, + "3box>orbit-db>ipfs-pubsub-1on1": true, + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-cache": true, + "3box>orbit-db>orbit-db-counterstore": true, + "3box>orbit-db>orbit-db-docstore": true, + "3box>orbit-db>orbit-db-eventstore": true, + "3box>orbit-db>orbit-db-feedstore": true, + "3box>orbit-db>orbit-db-identity-provider": true, + "3box>orbit-db>orbit-db-io": true, + "3box>orbit-db>orbit-db-keystore": true, + "3box>orbit-db>orbit-db-kvstore": true, + "3box>orbit-db>orbit-db-pubsub": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>ipfs-pubsub-1on1": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "3box>orbit-db>ipfs-pubsub-1on1>safe-buffer": true, + "browserify>events": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>ipfs-pubsub-1on1>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "3box>orbit-db>logplease": { + "globals": { + "LOG": true, + "console.error": true, + "console.log": true + }, + "packages": { + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>util": true + } + }, + "3box>orbit-db>orbit-db-access-controllers": { + "globals": { + "console.log": true + }, + "packages": { + "3box>orbit-db>orbit-db-access-controllers>p-map-series": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>events": true, + "browserify>path-browserify": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>orbit-db>orbit-db-access-controllers>p-map-series": { + "packages": { + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>orbit-db>orbit-db-cache": { + "packages": { + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-cache>level-js": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.upperBound": true, + "indexedDB": true + }, + "packages": { + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": true, + "3box>orbit-db>orbit-db-cache>level-js>immediate": true, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "pumpify>inherits": true, + "stylelint>write-file-atomic>typedarray-to-buffer": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>immediate": { + "globals": { + "MessageChannel": true, + "MutationObserver": true, + "WebKitMutationObserver": true, + "clearTimeout": true, + "document.createElement": true, + "document.createTextNode": true, + "document.documentElement.appendChild": true, + "setImmediate": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>orbit-db>orbit-db-counterstore": { + "packages": { + "3box>orbit-db>orbit-db-counterstore>crdts": true, + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-docstore": { + "packages": { + "3box>orbit-db>orbit-db-docstore>p-map": true, + "3box>orbit-db>orbit-db-store": true, + "readable-stream": true + } + }, + "3box>orbit-db>orbit-db-eventstore": { + "packages": { + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-feedstore": { + "packages": { + "3box>orbit-db>orbit-db-eventstore": true + } + }, + "3box>orbit-db>orbit-db-identity-provider": { + "packages": { + "3box>orbit-db>orbit-db-keystore": true + } + }, + "3box>orbit-db>orbit-db-io": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-dag-pb": true, + "browserify>buffer": true + } + }, + "3box>orbit-db>orbit-db-keystore": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "3box>ethers>elliptic": true, + "3box>ipfs>libp2p-crypto": true, + "3box>orbit-db>orbit-db-cache>level-js": true, + "3box>orbit-db>orbit-db-keystore>levelup": true, + "3box>orbit-db>orbit-db-keystore>lru": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup": { + "packages": { + "3box>orbit-db>orbit-db-keystore>levelup>deferred-leveldown": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream": true, + "browserify>assert": true, + "browserify>events": true, + "browserify>process": true, + "browserify>util": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>deferred-leveldown": { + "packages": { + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": { + "packages": { + "webpack>memory-fs>errno": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream": { + "packages": { + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream>readable-stream": true, + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-keystore>lru": { + "packages": { + "browserify>events": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-kvstore": { + "packages": { + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-pubsub": { + "packages": { + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-pubsub>ipfs-pubsub-peer-monitor": true, + "3box>orbit-db>orbit-db-pubsub>p-series": true, + "browserify>buffer": true + } + }, + "3box>orbit-db>orbit-db-pubsub>ipfs-pubsub-peer-monitor": { + "globals": { + "clearInterval": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "browserify>events": true + } + }, + "3box>orbit-db>orbit-db-pubsub>p-series": { + "packages": { + "3box>orbit-db>orbit-db-pubsub>p-series>@sindresorhus/is": true, + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>orbit-db>orbit-db-pubsub>p-series>@sindresorhus/is": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>util": true + } + }, + "3box>orbit-db>orbit-db-store": { + "globals": { + "clearInterval": true, + "console.error": true, + "console.warn": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>ipfs>libp2p-kad-dht>p-times>p-map": true, + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-io": true, + "3box>orbit-db>orbit-db-store>p-each-series": true, + "browserify>buffer": true, + "browserify>events": true, + "readable-stream": true + } + }, + "3box>orbit-db>orbit-db-store>p-each-series": { + "packages": { + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>store": { + "globals": { + "ActiveXObject": true, + "console": true + } + }, + "3box>tweetnacl": { + "globals": { + "crypto": true, + "msCrypto": true, + "nacl": "write" + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "3box>tweetnacl-util": { + "globals": { + "atob": true, + "btoa": true + }, + "packages": { + "browserify>browser-resolve": true } }, "@babel/runtime": { "packages": { - "regenerator-runtime": true + "@storybook/api>regenerator-runtime": true } }, "@download/blockies": { @@ -77,326 +2215,133 @@ "console.warn": true }, "packages": { - "buffer": true, - "cids": true, - "js-base64": true, - "multicodec": true, - "multihashes": true + "@ensdomains/content-hash>cids": true, + "@ensdomains/content-hash>js-base64": true, + "@ensdomains/content-hash>multicodec": true, + "@ensdomains/content-hash>multihashes": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>cids": { + "packages": { + "@ensdomains/content-hash>cids>multibase": true, + "@ensdomains/content-hash>cids>multicodec": true, + "@ensdomains/content-hash>cids>multihashes": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>multibase": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@ensdomains/content-hash>cids>multibase>@multiformats/base-x": true + } + }, + "@ensdomains/content-hash>cids>multicodec": { + "packages": { + "@ensdomains/content-hash>cids>multicodec>varint": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>multihashes": { + "packages": { + "3box>ipfs>varint": true, + "@ensdomains/content-hash>cids>multibase": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>uint8arrays": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@ensdomains/content-hash>cids>multibase": true + } + }, + "@ensdomains/content-hash>js-base64": { + "globals": { + "Base64": "write", + "TextDecoder": true, + "TextEncoder": true, + "atob": true, + "btoa": true, + "define": true + }, + "packages": { + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multicodec": { + "packages": { + "@ensdomains/content-hash>multicodec>uint8arrays": true, + "@ensdomains/content-hash>multicodec>varint": true + } + }, + "@ensdomains/content-hash>multicodec>uint8arrays": { + "packages": { + "@ensdomains/content-hash>multicodec>uint8arrays>multibase": true, + "@ensdomains/content-hash>multihashes>web-encoding": true + } + }, + "@ensdomains/content-hash>multicodec>uint8arrays>multibase": { + "packages": { + "@ensdomains/content-hash>cids>multibase>@multiformats/base-x": true, + "@ensdomains/content-hash>multihashes>web-encoding": true + } + }, + "@ensdomains/content-hash>multihashes": { + "packages": { + "3box>ipfs>varint": true, + "@ensdomains/content-hash>multihashes>multibase": true, + "@ensdomains/content-hash>multihashes>web-encoding": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multihashes>multibase": { + "packages": { + "3box>ipfs>bs58>base-x": true, + "@ensdomains/content-hash>multihashes>web-encoding": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multihashes>web-encoding": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>util": true } }, "@eth-optimism/contracts": { "packages": { - "@ethersproject/abstract-provider": true, - "ethers": true + "ethers": true, + "ethers>@ethersproject/abstract-provider": true } }, "@ethereumjs/common": { "packages": { - "buffer": true, - "crc-32": true, - "ethereumjs-util": true, - "events": true + "@ethereumjs/common>crc-32": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util": true + } + }, + "@ethereumjs/common>crc-32": { + "globals": { + "DO_NOT_EXPORT_CRC": true, + "define": true } }, "@ethereumjs/tx": { "packages": { "@ethereumjs/common": true, - "buffer": true, - "ethereumjs-util": true, - "is-buffer": true - } - }, - "@ethersproject/abi": { - "globals": { - "console.log": true - }, - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/hash": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/abstract-provider": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/abstract-signer": { - "packages": { - "@ethersproject/logger": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/address": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/rlp": true - } - }, - "@ethersproject/base64": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "@ethersproject/bytes": true - } - }, - "@ethersproject/basex": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/bignumber": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "bn.js": true - } - }, - "@ethersproject/bytes": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/constants": { - "packages": { - "@ethersproject/bignumber": true - } - }, - "@ethersproject/contracts": { - "globals": { - "setTimeout": true - }, - "packages": { - "@ethersproject/abi": true, - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/transactions": true - } - }, - "@ethersproject/hash": { - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/hdnode": { - "packages": { - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/pbkdf2": true, - "@ethersproject/properties": true, - "@ethersproject/sha2": true, - "@ethersproject/signing-key": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/wordlists": true - } - }, - "@ethersproject/json-wallets": { - "packages": { - "@ethersproject/address": true, - "@ethersproject/bytes": true, - "@ethersproject/hdnode": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/pbkdf2": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "aes-js": true, - "scrypt-js": true - } - }, - "@ethersproject/keccak256": { - "packages": { - "@ethersproject/bytes": true, - "js-sha3": true - } - }, - "@ethersproject/logger": { - "globals": { - "console": true - } - }, - "@ethersproject/networks": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/pbkdf2": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/sha2": true - } - }, - "@ethersproject/properties": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/providers": { - "globals": { - "WebSocket": true, - "clearInterval": true, - "clearTimeout": true, - "console.log": true, - "console.warn": true, - "name": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/hash": true, - "@ethersproject/logger": true, - "@ethersproject/networks": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/sha2": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/web": true, - "bech32": true - } - }, - "@ethersproject/random": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/rlp": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/sha2": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "hash.js": true - } - }, - "@ethersproject/signing-key": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "elliptic": true - } - }, - "@ethersproject/solidity": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/sha2": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/strings": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/transactions": { - "globals": { - "console.log": true - }, - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/rlp": true, - "@ethersproject/signing-key": true - } - }, - "@ethersproject/units": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/wallet": { - "packages": { - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/bytes": true, - "@ethersproject/hash": true, - "@ethersproject/hdnode": true, - "@ethersproject/json-wallets": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/signing-key": true, - "@ethersproject/transactions": true - } - }, - "@ethersproject/web": { - "globals": { - "clearTimeout": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@ethersproject/base64": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/wordlists": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/hash": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-util": true } }, "@formatjs/intl-relativetimeformat": { @@ -404,55 +2349,109 @@ "Intl": true }, "packages": { - "@formatjs/intl-utils": true + "@formatjs/intl-relativetimeformat>@formatjs/intl-utils": true } }, - "@formatjs/intl-utils": { + "@formatjs/intl-relativetimeformat>@formatjs/intl-utils": { "globals": { "Intl.getCanonicalLocales": true } }, - "@keystonehq/base-eth-keyring": { + "@keystonehq/bc-ur-registry-eth": { "packages": { - "@ethereumjs/tx": true, - "@keystonehq/bc-ur-registry-eth": true, - "buffer": true, + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, "ethereumjs-util": true, - "hdkey": true, "uuid": true } }, - "@keystonehq/bc-ur-registry": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { "globals": { "define": true }, "packages": { "@ngraveio/bc-ur": true, - "bs58check": true, - "buffer": true + "browserify>buffer": true, + "ethereumjs-wallet>bs58check": true } }, - "@keystonehq/bc-ur-registry-eth": { + "@keystonehq/bc-ur-registry-eth>hdkey": { "packages": { - "@keystonehq/bc-ur-registry": true, - "buffer": true, - "ethereumjs-util": true, - "hdkey": true, - "uuid": true + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": true, + "browserify>assert": true, + "browserify>crypto-browserify": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": { + "packages": { + "3box>ethers>elliptic": true } }, "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, - "@keystonehq/base-eth-keyring": true, - "@keystonehq/bc-ur-registry-eth": true, - "@metamask/obs-store": true, - "buffer": true, - "events": true, - "rlp": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util>rlp": true, "uuid": true } }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": { + "packages": { + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/tx": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/common": true, + "browserify>buffer": true, + "ethereumjs-util": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { + "packages": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { + "packages": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { + "packages": { + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, "@material-ui/core": { "globals": { "Image": true, @@ -477,20 +2476,20 @@ }, "packages": { "@babel/runtime": true, - "@material-ui/styles": true, - "@material-ui/system": true, - "@material-ui/utils": true, - "clsx": true, - "hoist-non-react-statics": true, - "popper.js": true, + "@material-ui/core>@material-ui/styles": true, + "@material-ui/core>@material-ui/system": true, + "@material-ui/core>@material-ui/utils": true, + "@material-ui/core>clsx": true, + "@material-ui/core>popper.js": true, + "@material-ui/core>react-transition-group": true, "prop-types": true, + "prop-types>react-is": true, "react": true, "react-dom": true, - "react-is": true, - "react-transition-group": true + "react-redux>hoist-non-react-statics": true } }, - "@material-ui/styles": { + "@material-ui/core>@material-ui/styles": { "globals": { "console.error": true, "console.warn": true, @@ -499,36 +2498,135 @@ }, "packages": { "@babel/runtime": true, - "@material-ui/utils": true, - "clsx": true, - "hoist-non-react-statics": true, - "jss": true, - "jss-plugin-camel-case": true, - "jss-plugin-default-unit": true, - "jss-plugin-global": true, - "jss-plugin-nested": true, - "jss-plugin-props-sort": true, - "jss-plugin-rule-value-function": true, - "jss-plugin-vendor-prefixer": true, + "@material-ui/core>@material-ui/styles>jss": true, + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case": true, + "@material-ui/core>@material-ui/styles>jss-plugin-default-unit": true, + "@material-ui/core>@material-ui/styles>jss-plugin-global": true, + "@material-ui/core>@material-ui/styles>jss-plugin-nested": true, + "@material-ui/core>@material-ui/styles>jss-plugin-props-sort": true, + "@material-ui/core>@material-ui/styles>jss-plugin-rule-value-function": true, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer": true, + "@material-ui/core>@material-ui/utils": true, + "@material-ui/core>clsx": true, "prop-types": true, - "react": true + "react": true, + "react-redux>hoist-non-react-statics": true } }, - "@material-ui/system": { + "@material-ui/core>@material-ui/styles>jss": { + "globals": { + "CSS": true, + "document.createElement": true, + "document.querySelector": true + }, + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case": { + "packages": { + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case>hyphenate-style-name": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-default-unit": { + "globals": { + "CSS": true + }, + "packages": { + "@material-ui/core>@material-ui/styles>jss": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-global": { + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-nested": { + "packages": { + "@babel/runtime": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-rule-value-function": { + "packages": { + "@material-ui/core>@material-ui/styles>jss": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer": { + "packages": { + "@material-ui/core>@material-ui/styles>jss": true, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer>css-vendor": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer>css-vendor": { + "globals": { + "document.createElement": true, + "document.documentElement": true, + "getComputedStyle": true + }, + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": true + } + }, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": { + "globals": { + "document": true + } + }, + "@material-ui/core>@material-ui/system": { "globals": { "console.error": true }, "packages": { "@babel/runtime": true, - "@material-ui/utils": true, + "@material-ui/core>@material-ui/utils": true, "prop-types": true } }, - "@material-ui/utils": { + "@material-ui/core>@material-ui/utils": { "packages": { "@babel/runtime": true, "prop-types": true, - "react-is": true + "prop-types>react-is": true + } + }, + "@material-ui/core>popper.js": { + "globals": { + "MSInputMethodContext": true, + "Node.DOCUMENT_POSITION_FOLLOWING": true, + "cancelAnimationFrame": true, + "console.warn": true, + "define": true, + "devicePixelRatio": true, + "document": true, + "getComputedStyle": true, + "innerHeight": true, + "innerWidth": true, + "navigator": true, + "requestAnimationFrame": true, + "setTimeout": true + } + }, + "@material-ui/core>react-transition-group": { + "globals": { + "Element": true, + "setTimeout": true + }, + "packages": { + "@material-ui/core>react-transition-group>dom-helpers": true, + "prop-types": true, + "react": true, + "react-dom": true + } + }, + "@material-ui/core>react-transition-group>dom-helpers": { + "packages": { + "@babel/runtime": true } }, "@metamask/controllers": { @@ -547,36 +2645,314 @@ "@ethereumjs/common": true, "@ethereumjs/tx": true, "@metamask/contract-metadata": true, + "@metamask/controllers>abort-controller": true, + "@metamask/controllers>async-mutex": true, + "@metamask/controllers>eth-method-registry": true, + "@metamask/controllers>eth-phishing-detect": true, + "@metamask/controllers>ethereumjs-wallet": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/controllers>multiformats": true, + "@metamask/controllers>nanoid": true, + "@metamask/controllers>web3-provider-engine": true, "@metamask/metamask-eth-abis": true, - "abort-controller": true, - "async-mutex": true, - "buffer": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>events": true, "deep-freeze-strict": true, "eth-ens-namehash": true, "eth-json-rpc-infura": true, "eth-keyring-controller": true, - "eth-method-registry": true, - "eth-phishing-detect": true, "eth-query": true, "eth-rpc-errors": true, "eth-sig-util": true, "ethereumjs-util": true, - "ethereumjs-wallet": true, "ethers": true, - "ethjs-unit": true, - "events": true, - "fast-deep-equal": true, + "ethjs>ethjs-unit": true, "immer": true, - "isomorphic-fetch": true, "json-rpc-engine": true, "jsonschema": true, - "multiformats": true, - "nanoid": true, "punycode": true, "single-call-balance-checker-abi": true, "uuid": true, - "web3": true, - "web3-provider-engine": true + "web3": true + } + }, + "@metamask/controllers>abort-controller": { + "globals": { + "AbortController": true + } + }, + "@metamask/controllers>async-mutex": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/controllers>async-mutex>tslib": true + } + }, + "@metamask/controllers>async-mutex>tslib": { + "globals": { + "define": true + } + }, + "@metamask/controllers>eth-method-registry": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-abi": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-query": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-abi": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract>ethjs-abi": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, + "promise-to-callback": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract>ethjs-abi": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-query": { + "globals": { + "console": true + }, + "packages": { + "ethjs-query>babel-runtime": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, + "promise-to-callback": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "@metamask/controllers>eth-phishing-detect": { + "packages": { + "eslint>optionator>fast-levenshtein": true + } + }, + "@metamask/controllers>ethereumjs-wallet": { + "packages": { + "@metamask/controllers>ethereumjs-wallet>uuid": true, + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "ethereumjs-util": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "@metamask/controllers>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "@metamask/controllers>isomorphic-fetch": { + "globals": { + "fetch.bind": true + }, + "packages": { + "@metamask/controllers>isomorphic-fetch>whatwg-fetch": true + } + }, + "@metamask/controllers>isomorphic-fetch>whatwg-fetch": { + "globals": { + "Blob": true, + "FileReader": true, + "FormData": true, + "URLSearchParams.prototype.isPrototypeOf": true, + "XMLHttpRequest": true, + "define": true, + "setTimeout": true + } + }, + "@metamask/controllers>multiformats": { + "globals": { + "TextDecoder": true, + "TextEncoder": true, + "console.warn": true + } + }, + "@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/controllers>web3-provider-engine": { + "globals": { + "WebSocket": true, + "console": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "@ethereumjs/tx": true, + "@metamask/controllers>web3-provider-engine>backoff": true, + "@metamask/controllers>web3-provider-engine>eth-block-tracker": true, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware": true, + "@metamask/controllers>web3-provider-engine>eth-sig-util": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": true, + "@metamask/controllers>web3-provider-engine>semaphore": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>util": true, + "eth-json-rpc-filters": true, + "eth-json-rpc-infura": true, + "lavamoat>json-stable-stringify": true, + "watchify>xtend": true + } + }, + "@metamask/controllers>web3-provider-engine>backoff": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>backoff>precond": true, + "browserify>events": true, + "browserify>util": true + } + }, + "@metamask/controllers>web3-provider-engine>backoff>precond": { + "packages": { + "browserify>util": true + } + }, + "@metamask/controllers>web3-provider-engine>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-block-tracker": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>eth-block-tracker>pify": true, + "eth-query": true, + "safe-event-emitter": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware": { + "globals": { + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>json-rpc-engine": true, + "@metamask/controllers>web3-provider-engine>eth-rpc-errors": true, + "browserify>url": true, + "lavamoat>json-stable-stringify": true, + "node-fetch": true, + "source-map-explorer>btoa": true, + "vinyl>clone": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>node-fetch": { + "globals": { + "fetch": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-rpc-errors": { + "packages": { + "eth-rpc-errors>fast-safe-stringify": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util": { + "packages": { + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi": { + "packages": { + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi>ethereumjs-util": true, + "bn.js": true, + "browserify>buffer": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "@metamask/controllers>web3-provider-engine>semaphore": { + "globals": { + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true } }, "@metamask/eth-ledger-bridge-keyring": { @@ -585,25 +2961,54 @@ "console.log": true, "document.createElement": true, "document.head.appendChild": true, - "fetch": true + "fetch": true, + "removeEventListener": true }, "packages": { "@ethereumjs/tx": true, - "buffer": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "events": true, - "hdkey": true + "@metamask/eth-ledger-bridge-keyring>eth-sig-util": true, + "@metamask/eth-ledger-bridge-keyring>hdkey": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util": true } }, - "@metamask/eth-sig-util": { + "@metamask/eth-ledger-bridge-keyring>eth-sig-util": { "packages": { - "buffer": true, - "ethereumjs-abi": true, - "ethereumjs-util": true, - "ethjs-util": true, - "tweetnacl": true, - "tweetnacl-util": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": true, + "browserify>buffer": true, + "ethereumjs-abi": true + } + }, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "@metamask/eth-ledger-bridge-keyring>hdkey": { + "packages": { + "browserify>assert": true, + "browserify>crypto-browserify": true, + "eth-trezor-keyring>hdkey>coinstring": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true } }, "@metamask/eth-token-tracker": { @@ -612,56 +3017,123 @@ }, "packages": { "@babel/runtime": true, - "deep-equal": true, - "eth-block-tracker": true, - "ethjs": true, + "@metamask/eth-token-tracker>eth-block-tracker": true, + "@metamask/eth-token-tracker>ethjs": true, + "@metamask/eth-token-tracker>human-standard-token-abi": true, "ethjs-contract": true, "ethjs-query": true, - "human-standard-token-abi": true, + "nock>deep-equal": true, "safe-event-emitter": true } }, + "@metamask/eth-token-tracker>eth-block-tracker": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/eth-token-tracker>eth-block-tracker>pify": true, + "eth-query": true, + "safe-event-emitter": true + } + }, + "@metamask/eth-token-tracker>ethjs": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>ethjs-abi": true, + "@metamask/eth-token-tracker>ethjs>ethjs-contract": true, + "@metamask/eth-token-tracker>ethjs>ethjs-query": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-abi": { + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-contract": { + "packages": { + "@metamask/eth-token-tracker>ethjs>ethjs-contract>ethjs-abi": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, + "promise-to-callback": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-contract>ethjs-abi": { + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-query": { + "globals": { + "console": true + }, + "packages": { + "ethjs-query>babel-runtime": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, + "promise-to-callback": true + } + }, + "@metamask/eth-token-tracker>ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, "@metamask/etherscan-link": { "globals": { "URL": true } }, - "@metamask/iframe-execution-environment-service": { - "globals": { - "clearTimeout": true, - "document.body.appendChild": true, - "document.createElement": true, - "document.getElementById": true, - "setTimeout": true - }, - "packages": { - "@metamask/execution-environments": true, - "@metamask/post-message-stream": true, - "@metamask/snap-controllers": true, - "json-rpc-engine": true, - "json-rpc-middleware-stream": true, - "nanoid": true, - "pump": true - } - }, "@metamask/jazzicon": { "globals": { "document.createElement": true, "document.createElementNS": true }, "packages": { - "color": true, - "mersenne-twister": true + "@metamask/jazzicon>color": true, + "@metamask/jazzicon>mersenne-twister": true } }, - "@metamask/key-tree": { + "@metamask/jazzicon>color": { "packages": { - "bip39": true, - "buffer": true, - "crypto-browserify": true, - "is-buffer": true, - "keccak": true, - "secp256k1": true + "@metamask/jazzicon>color>clone": true, + "@metamask/jazzicon>color>color-convert": true, + "@metamask/jazzicon>color>color-string": true + } + }, + "@metamask/jazzicon>color>clone": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask/jazzicon>color>color-convert": { + "packages": { + "@metamask/jazzicon>color>color-convert>color-name": true + } + }, + "@metamask/jazzicon>color>color-string": { + "packages": { + "jest-canvas-mock>moo-color>color-name": true } }, "@metamask/logo": { @@ -674,18 +3146,8 @@ "requestAnimationFrame": true }, "packages": { - "gl-mat4": true, - "gl-vec3": true - } - }, - "@metamask/object-multiplex": { - "globals": { - "console.warn": true - }, - "packages": { - "end-of-stream": true, - "once": true, - "readable-stream": true + "@metamask/logo>gl-mat4": true, + "@metamask/logo>gl-vec3": true } }, "@metamask/obs-store": { @@ -693,9 +3155,17 @@ "localStorage": true }, "packages": { - "@metamask/safe-event-emitter": true, - "stream-browserify": true, - "through2": true + "@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true } }, "@metamask/post-message-stream": { @@ -707,23 +3177,101 @@ "removeEventListener": true }, "packages": { + "@metamask/post-message-stream>readable-stream": true + } + }, + "@metamask/post-message-stream>readable-stream": { + "packages": { + "@metamask/post-message-stream>readable-stream>safe-buffer": true, + "@metamask/post-message-stream>readable-stream>string_decoder": true, + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>timers-browserify": true, + "pumpify>inherits": true, + "readable-stream>core-util-is": true, + "readable-stream>isarray": true, + "vinyl>cloneable-readable>process-nextick-args": true + } + }, + "@metamask/post-message-stream>readable-stream>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask/post-message-stream>readable-stream>string_decoder": { + "packages": { + "@metamask/post-message-stream>readable-stream>safe-buffer": true + } + }, + "@metamask/providers>@metamask/object-multiplex": { + "globals": { + "console.warn": true + }, + "packages": { + "end-of-stream": true, + "pump>once": true, "readable-stream": true } }, "@metamask/rpc-methods": { "packages": { "@metamask/controllers": true, - "@metamask/key-tree": true, + "@metamask/rpc-methods>@metamask/key-tree": true, + "@metamask/rpc-methods>@metamask/utils": true, "@metamask/snap-controllers": true, "eth-rpc-errors": true } }, - "@metamask/safe-event-emitter": { + "@metamask/rpc-methods>@metamask/key-tree": { + "packages": { + "@metamask/rpc-methods>@metamask/key-tree>@noble/ed25519": true, + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": true, + "@metamask/rpc-methods>@metamask/key-tree>@noble/secp256k1": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/bip39": true, + "browserify>buffer": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/ed25519": { "globals": { - "setTimeout": true + "crypto": true }, "packages": { - "events": true + "browserify>browser-resolve": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true, + "setTimeout": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/secp256k1": { + "globals": { + "crypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@scure/bip39": { + "packages": { + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": true + } + }, + "@metamask/rpc-methods>@metamask/utils": { + "packages": { + "@storybook/api>fast-deep-equal": true } }, "@metamask/smart-transactions-controller": { @@ -733,62 +3281,331 @@ "console.error": true, "console.log": true, "fetch": true, - "setInterval": true, - "setTimeout": true + "setInterval": true }, "packages": { "@metamask/controllers": true, - "bignumber.js": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/smart-transactions-controller>bignumber.js": true, + "@metamask/smart-transactions-controller>fast-json-patch": true, "ethers": true, - "fast-json-patch": true, - "isomorphic-fetch": true, "lodash": true } }, + "@metamask/smart-transactions-controller>@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/smart-transactions-controller>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@metamask/smart-transactions-controller>fast-json-patch": { + "globals": { + "addEventListener": true, + "clearTimeout": true, + "removeEventListener": true, + "setTimeout": true + } + }, "@metamask/snap-controllers": { "globals": { "URL": true, "Worker": true, "clearTimeout": true, "console.error": true, + "console.info": true, "console.log": true, "console.warn": true, + "document.body.appendChild": true, + "document.createElement": true, + "document.getElementById": true, + "fetch": true, "setTimeout": true }, "packages": { - "@metamask/controllers": true, - "@metamask/execution-environments": true, - "@metamask/object-multiplex": true, - "@metamask/obs-store": true, "@metamask/post-message-stream": true, - "@metamask/safe-event-emitter": true, - "ajv": true, - "buffer": true, - "concat-stream": true, - "cross-fetch": true, - "crypto-browserify": true, + "@metamask/providers>@metamask/object-multiplex": true, + "@metamask/rpc-methods>@metamask/utils": true, + "@metamask/snap-controllers>@metamask/controllers": true, + "@metamask/snap-controllers>@metamask/execution-environments": true, + "@metamask/snap-controllers>@metamask/obs-store": true, + "@metamask/snap-controllers>ajv": true, + "@metamask/snap-controllers>concat-stream": true, + "@metamask/snap-controllers>gunzip-maybe": true, + "@metamask/snap-controllers>json-rpc-middleware-stream": true, + "@metamask/snap-controllers>nanoid": true, + "@metamask/snap-controllers>readable-web-to-node-stream": true, + "@metamask/snap-controllers>tar-stream": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, "eth-rpc-errors": true, - "fast-deep-equal": true, - "gunzip-maybe": true, "json-rpc-engine": true, - "json-rpc-middleware-stream": true, - "nanoid": true, + "json-rpc-engine>@metamask/safe-event-emitter": true, "pump": true, - "readable-web-to-node-stream": true, - "semver": true, - "tar-stream": true + "semver": true + } + }, + "@metamask/snap-controllers>@metamask/controllers": { + "globals": { + "Headers": true, + "URL": true, + "clearInterval": true, + "clearTimeout": true, + "console.error": true, + "console.log": true, + "fetch": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@metamask/contract-metadata": true, + "@metamask/controllers>abort-controller": true, + "@metamask/controllers>async-mutex": true, + "@metamask/controllers>eth-phishing-detect": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/controllers>multiformats": true, + "@metamask/controllers>web3-provider-engine": true, + "@metamask/metamask-eth-abis": true, + "@metamask/snap-controllers>nanoid": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>events": true, + "deep-freeze-strict": true, + "eth-ens-namehash": true, + "eth-json-rpc-infura": true, + "eth-keyring-controller": true, + "eth-method-registry": true, + "eth-query": true, + "eth-rpc-errors": true, + "eth-sig-util": true, + "ethereumjs-util": true, + "ethereumjs-wallet": true, + "ethers": true, + "ethjs>ethjs-unit": true, + "immer": true, + "json-rpc-engine": true, + "jsonschema": true, + "punycode": true, + "single-call-balance-checker-abi": true, + "uuid": true, + "web3": true + } + }, + "@metamask/snap-controllers>@metamask/obs-store": { + "packages": { + "@metamask/snap-controllers>@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@metamask/snap-controllers>@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>ajv": { + "packages": { + "@storybook/api>fast-deep-equal": true + } + }, + "@metamask/snap-controllers>concat-stream": { + "packages": { + "@metamask/snap-controllers>concat-stream>readable-stream": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>concat-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>gunzip-maybe": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib": true, + "@metamask/snap-controllers>gunzip-maybe>is-deflate": true, + "@metamask/snap-controllers>gunzip-maybe>is-gzip": true, + "@metamask/snap-controllers>gunzip-maybe>peek-stream": true, + "@metamask/snap-controllers>gunzip-maybe>pumpify": true, + "@metamask/snap-controllers>gunzip-maybe>through2": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib>pako": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>util": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>peek-stream>duplexify": true, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>through2": true, + "browserify>buffer": true, + "terser>source-map-support>buffer-from": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>duplexify": { + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>pumpify>duplexify": true, + "@metamask/snap-controllers>gunzip-maybe>pumpify>pump": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify>duplexify": { + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify>pump": { + "packages": { + "browserify>browser-resolve": true, + "end-of-stream": true, + "pump>once": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>json-rpc-middleware-stream": { + "globals": { + "setTimeout": true + }, + "packages": { + "json-rpc-engine>@metamask/safe-event-emitter": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/snap-controllers>readable-web-to-node-stream": { + "packages": { + "@metamask/snap-controllers>readable-web-to-node-stream>readable-stream": true + } + }, + "@metamask/snap-controllers>readable-web-to-node-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream": { + "packages": { + "@metamask/snap-controllers>tar-stream>bl": true, + "@metamask/snap-controllers>tar-stream>fs-constants": true, + "@metamask/snap-controllers>tar-stream>readable-stream": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>string_decoder": true, + "browserify>util": true, + "end-of-stream": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream>bl": { + "packages": { + "@metamask/snap-controllers>tar-stream>readable-stream": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream>fs-constants": { + "packages": { + "browserify>constants-browserify": true + } + }, + "@metamask/snap-controllers>tar-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, "@ngraveio/bc-ur": { "packages": { - "@apocentre/alias-sampling": true, - "assert": true, - "bignumber.js": true, - "buffer": true, - "cbor-sync": true, - "crc": true, - "jsbi": true, - "sha.js": true + "@ngraveio/bc-ur>@apocentre/alias-sampling": true, + "@ngraveio/bc-ur>bignumber.js": true, + "@ngraveio/bc-ur>crc": true, + "@ngraveio/bc-ur>jsbi": true, + "addons-linter>sha.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "pubnub>cbor-sync": true + } + }, + "@ngraveio/bc-ur>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@ngraveio/bc-ur>crc": { + "packages": { + "browserify>buffer": true + } + }, + "@ngraveio/bc-ur>jsbi": { + "globals": { + "define": true } }, "@popperjs/core": { @@ -812,18 +3629,10 @@ "console.warn": true }, "packages": { + "@reduxjs/toolkit>reselect": true, "immer": true, "redux": true, - "redux-thunk": true, - "reselect": true - } - }, - "@segment/loosely-validate-event": { - "packages": { - "assert": true, - "buffer": true, - "component-type": true, - "join-component": true + "redux-thunk": true } }, "@sentry/browser": { @@ -832,57 +3641,43 @@ "setTimeout": true }, "packages": { - "@sentry/core": true, - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/core": true, + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/core": { + "@sentry/browser>@sentry/core": { "globals": { "clearInterval": true, "setInterval": true }, "packages": { - "@sentry/hub": true, - "@sentry/minimal": true, - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/core>@sentry/hub": true, + "@sentry/browser>@sentry/core>@sentry/minimal": true, + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/hub": { + "@sentry/browser>@sentry/core>@sentry/hub": { "globals": { "clearInterval": true, "setInterval": true }, "packages": { - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/integrations": { - "globals": { - "clearTimeout": true, - "console.error": true, - "console.log": true, - "setTimeout": true - }, + "@sentry/browser>@sentry/core>@sentry/minimal": { "packages": { - "@sentry/types": true, - "@sentry/utils": true, - "localforage": true, - "tslib": true + "@sentry/browser>@sentry/core>@sentry/hub": true, + "@sentry/browser>tslib": true } }, - "@sentry/minimal": { - "packages": { - "@sentry/hub": true, - "tslib": true - } - }, - "@sentry/utils": { + "@sentry/browser>@sentry/utils": { "globals": { "CustomEvent": true, "DOMError": true, @@ -900,74 +3695,319 @@ "setTimeout": true }, "packages": { - "process": true, - "tslib": true + "@sentry/browser>tslib": true, + "browserify>process": true } }, - "@sindresorhus/is": { - "packages": { - "is-buffer": true, - "util": true + "@sentry/browser>tslib": { + "globals": { + "define": true } }, - "@truffle/abi-utils": { + "@sentry/integrations": { + "globals": { + "clearTimeout": true, + "console.error": true, + "console.log": true, + "setTimeout": true + }, "packages": { - "change-case": true, - "faker": true, - "fast-check": true + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true, + "localforage": true } }, - "@truffle/code-utils": { - "packages": { - "buffer": true, - "cbor": true + "@storybook/api>regenerator-runtime": { + "globals": { + "regeneratorRuntime": "write" + } + }, + "@storybook/api>util-deprecate": { + "globals": { + "console.trace": true, + "console.warn": true, + "localStorage": true + } + }, + "@storybook/client-api>stable": { + "globals": { + "define": true } }, "@truffle/codec": { "packages": { - "@truffle/abi-utils": true, - "@truffle/compile-common": true, - "big.js": true, - "bn.js": true, - "buffer": true, - "cbor": true, - "debug": true, - "lodash.clonedeep": true, - "lodash.escaperegexp": true, - "lodash.partition": true, - "lodash.sum": true, - "semver": true, - "utf8": true, - "util": true, - "web3-utils": true + "@truffle/codec>@truffle/abi-utils": true, + "@truffle/codec>@truffle/compile-common": true, + "@truffle/codec>big.js": true, + "@truffle/codec>bn.js": true, + "@truffle/codec>cbor": true, + "@truffle/codec>lodash.escaperegexp": true, + "@truffle/codec>lodash.partition": true, + "@truffle/codec>lodash.sum": true, + "@truffle/codec>utf8": true, + "@truffle/codec>web3-utils": true, + "browserify>buffer": true, + "browserify>util": true, + "eslint>debug": true, + "gulp-dart-sass>lodash.clonedeep": true, + "semver": true } }, - "@truffle/compile-common": { + "@truffle/codec>@truffle/abi-utils": { "packages": { - "@truffle/error": true, - "colors": true, - "path-browserify": true + "@truffle/codec>@truffle/abi-utils>change-case": true, + "@truffle/codec>@truffle/abi-utils>faker": true, + "@truffle/codec>@truffle/abi-utils>fast-check": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>constant-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>dot-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>header-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>is-lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>is-upper-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case-first": true, + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>param-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>pascal-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>path-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>sentence-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>swap-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>title-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>constant-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>dot-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>header-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>is-lower-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>is-upper-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case-first": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>no-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>param-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>pascal-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>path-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>sentence-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>swap-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>title-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>faker": { + "globals": { + "console.error": true, + "console.log": true, + "dbg": "write" + } + }, + "@truffle/codec>@truffle/abi-utils>fast-check": { + "globals": { + "clearTimeout": true, + "console.log": true, + "setTimeout": true + }, + "packages": { + "@truffle/codec>@truffle/abi-utils>fast-check>pure-rand": true, + "browserify>buffer": true + } + }, + "@truffle/codec>@truffle/compile-common": { + "packages": { + "@truffle/codec>@truffle/compile-common>@truffle/error": true, + "@truffle/codec>@truffle/compile-common>colors": true, + "browserify>path-browserify": true + } + }, + "@truffle/codec>@truffle/compile-common>colors": { + "globals": { + "console.log": true + }, + "packages": { + "browserify>os-browserify": true, + "browserify>process": true, + "browserify>util": true + } + }, + "@truffle/codec>big.js": { + "globals": { + "define": true + } + }, + "@truffle/codec>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@truffle/codec>cbor": { + "globals": { + "TextDecoder": true + }, + "packages": { + "@truffle/codec>cbor>bignumber.js": true, + "@truffle/codec>cbor>nofilter": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>stream-browserify": true, + "browserify>url": true, + "browserify>util": true + } + }, + "@truffle/codec>cbor>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@truffle/codec>cbor>nofilter": { + "packages": { + "browserify>buffer": true, + "browserify>stream-browserify": true, + "browserify>util": true + } + }, + "@truffle/codec>web3-utils": { + "globals": { + "setTimeout": true + }, + "packages": { + "@truffle/codec>utf8": true, + "@truffle/codec>web3-utils>eth-lib": true, + "@truffle/codec>web3-utils>ethereum-bloom-filters": true, + "bn.js": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-wallet>randombytes": true, + "ethjs>ethjs-unit": true, + "ethjs>number-to-bn": true + } + }, + "@truffle/codec>web3-utils>ethereum-bloom-filters": { + "packages": { + "ethers>@ethersproject/keccak256>js-sha3": true } }, "@truffle/decoder": { "packages": { - "@truffle/abi-utils": true, "@truffle/codec": true, - "@truffle/compile-common": true, - "@truffle/source-map-utils": true, - "bn.js": true, - "debug": true, - "web3-utils": true + "@truffle/codec>@truffle/abi-utils": true, + "@truffle/codec>@truffle/compile-common": true, + "@truffle/codec>web3-utils": true, + "@truffle/decoder>@truffle/source-map-utils": true, + "@truffle/decoder>bn.js": true, + "eslint>debug": true } }, - "@truffle/source-map-utils": { + "@truffle/decoder>@truffle/source-map-utils": { "packages": { - "@truffle/code-utils": true, "@truffle/codec": true, - "debug": true, - "json-pointer": true, - "node-interval-tree": true, - "web3-utils": true + "@truffle/codec>web3-utils": true, + "@truffle/decoder>@truffle/source-map-utils>@truffle/code-utils": true, + "@truffle/decoder>@truffle/source-map-utils>json-pointer": true, + "@truffle/decoder>@truffle/source-map-utils>node-interval-tree": true, + "eslint>debug": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>@truffle/code-utils": { + "packages": { + "@truffle/codec>cbor": true, + "browserify>buffer": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>json-pointer": { + "packages": { + "@truffle/decoder>@truffle/source-map-utils>json-pointer>foreach": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>node-interval-tree": { + "packages": { + "react-dnd>shallowequal": true + } + }, + "@truffle/decoder>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true } }, "@zxing/browser": { @@ -1002,34 +4042,10 @@ "setTimeout": true } }, - "abort-controller": { - "globals": { - "AbortController": true - } - }, - "abstract-leveldown": { + "addons-linter>sha.js": { "packages": { - "buffer": true, - "immediate": true, - "is-buffer": true, - "level-supports": true, - "process": true, - "xtend": true - } - }, - "accounting": { - "globals": { - "define": true - } - }, - "aes-js": { - "globals": { - "define": true - } - }, - "ajv": { - "packages": { - "fast-deep-equal": true + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true } }, "analytics-node": { @@ -1040,91 +4056,27 @@ "setTimeout": true }, "packages": { - "@segment/loosely-validate-event": true, - "assert": true, - "axios": true, - "axios-retry": true, - "lodash.isstring": true, - "md5": true, - "ms": true, - "process": true, - "remove-trailing-slash": true, - "uuid": true + "analytics-node>@segment/loosely-validate-event": true, + "analytics-node>axios": true, + "analytics-node>axios-retry": true, + "analytics-node>lodash.isstring": true, + "analytics-node>md5": true, + "analytics-node>ms": true, + "analytics-node>remove-trailing-slash": true, + "analytics-node>uuid": true, + "browserify>assert": true, + "browserify>process": true } }, - "asap": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "document.createTextNode": true, - "setInterval": true, - "setTimeout": true - } - }, - "asn1.js": { + "analytics-node>@segment/loosely-validate-event": { "packages": { - "bn.js": true, - "buffer": true, - "inherits": true, - "minimalistic-assert": true, - "vm-browserify": true + "analytics-node>@segment/loosely-validate-event>component-type": true, + "analytics-node>@segment/loosely-validate-event>join-component": true, + "browserify>assert": true, + "browserify>buffer": true } }, - "assemblyscript": { - "globals": { - "WebAssembly.Instance": true, - "WebAssembly.Module": true, - "WebAssembly.instantiateStreaming": true, - "console.log": true - } - }, - "assert": { - "globals": { - "Buffer": true - }, - "packages": { - "object-assign": true, - "util": true - } - }, - "async": { - "globals": { - "clearTimeout": true, - "setTimeout": true - }, - "packages": { - "lodash": true, - "process": true, - "timers-browserify": true - } - }, - "async-iterator-to-pull-stream": { - "packages": { - "get-iterator": true, - "pull-stream-to-async-iterator": true - } - }, - "async-iterator-to-stream": { - "packages": { - "process": true, - "readable-stream": true - } - }, - "async-mutex": { - "globals": { - "setTimeout": true - }, - "packages": { - "tslib": true - } - }, - "await-semaphore": { - "packages": { - "process": true, - "timers-browserify": true - } - }, - "axios": { + "analytics-node>axios": { "globals": { "FormData": true, "URLSearchParams": true, @@ -1137,108 +4089,45 @@ "setTimeout": true }, "packages": { - "process": true + "browserify>process": true } }, - "axios-retry": { + "analytics-node>axios-retry": { "globals": { "setTimeout": true }, "packages": { - "is-retry-allowed": true + "geckodriver>got>is-retry-allowed": true } }, - "babel-runtime": { + "analytics-node>md5": { "packages": { - "core-js": true, - "regenerator-runtime": true + "analytics-node>md5>charenc": true, + "analytics-node>md5>crypt": true, + "browserify>insert-module-globals>is-buffer": true } }, - "backoff": { + "analytics-node>uuid": { "globals": { - "clearTimeout": true, - "setTimeout": true - }, - "packages": { - "events": true, - "precond": true, - "util": true + "crypto": true, + "msCrypto": true } }, - "base-x": { + "await-semaphore": { "packages": { - "safe-buffer": true + "browserify>process": true, + "browserify>timers-browserify": true } }, "base32-encode": { "packages": { - "to-data-view": true - } - }, - "base64url": { - "packages": { - "buffer": true - } - }, - "big.js": { - "globals": { - "define": true + "base32-encode>to-data-view": true } }, "bignumber.js": { "globals": { "crypto": true, "define": true - }, - "packages": { - "crypto-browserify": true - } - }, - "bip39": { - "globals": { - "console.log": true - }, - "packages": { - "buffer": true, - "create-hash": true, - "pbkdf2": true, - "randombytes": true, - "safe-buffer": true, - "unorm": true - } - }, - "bip66": { - "packages": { - "safe-buffer": true - } - }, - "bitwise": { - "packages": { - "buffer": true - } - }, - "bl": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true, - "util": true - } - }, - "blakejs": { - "globals": { - "console.log": true - }, - "packages": { - "buffer": true - } - }, - "blob": { - "globals": { - "Blob": true, - "MSBlobBuilder": true, - "MozBlobBuilder": true, - "WebKitBlobBuilder": true } }, "bn.js": { @@ -1246,217 +4135,305 @@ "Buffer": true }, "packages": { - "browser-resolve": true + "browserify>browser-resolve": true } }, - "borc": { + "browserify>assert": { "globals": { - "console": true + "Buffer": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "ieee754": true, - "iso-url": true + "browserify>assert>util": true, + "react>object-assign": true } }, - "brorand": { + "browserify>assert>util": { "globals": { - "crypto": true, - "msCrypto": true + "console.error": true, + "console.log": true, + "console.trace": true, + "process": true }, "packages": { - "browser-resolve": true + "browserify>assert>util>inherits": true, + "browserify>process": true } }, - "browser-passworder": { - "globals": { - "btoa": true, - "crypto.getRandomValues": true, - "crypto.subtle.decrypt": true, - "crypto.subtle.deriveKey": true, - "crypto.subtle.encrypt": true, - "crypto.subtle.importKey": true - }, + "browserify>browser-resolve": { "packages": { - "browserify-unibabel": true + "ethjs-query>babel-runtime>core-js": true } }, - "browserify-aes": { - "packages": { - "buffer": true, - "buffer-xor": true, - "cipher-base": true, - "evp_bytestokey": true, - "inherits": true, - "safe-buffer": true - } - }, - "browserify-cipher": { - "packages": { - "browserify-aes": true, - "browserify-des": true, - "evp_bytestokey": true - } - }, - "browserify-des": { - "packages": { - "buffer": true, - "cipher-base": true, - "des.js": true, - "inherits": true - } - }, - "browserify-rsa": { - "packages": { - "bn.js": true, - "buffer": true, - "randombytes": true - } - }, - "browserify-sign": { - "packages": { - "bn.js": true, - "browserify-rsa": true, - "buffer": true, - "create-hash": true, - "create-hmac": true, - "elliptic": true, - "inherits": true, - "parse-asn1": true, - "stream-browserify": true - } - }, - "browserify-unibabel": { - "globals": { - "atob": true, - "btoa": true - } - }, - "browserify-zlib": { - "packages": { - "assert": true, - "buffer": true, - "pako": true, - "process": true, - "readable-stream": true, - "util": true - } - }, - "bs58": { - "packages": { - "base-x": true - } - }, - "bs58check": { - "packages": { - "bs58": true, - "create-hash": true, - "safe-buffer": true - } - }, - "btoa": { - "packages": { - "buffer": true - } - }, - "buffer": { + "browserify>buffer": { "globals": { "console": true }, "packages": { "base64-js": true, - "ieee754": true + "browserify>buffer>ieee754": true } }, - "buffer-from": { + "browserify>crypto-browserify": { "packages": { - "buffer": true + "browserify>crypto-browserify>browserify-cipher": true, + "browserify>crypto-browserify>browserify-sign": true, + "browserify>crypto-browserify>create-ecdh": true, + "browserify>crypto-browserify>create-hmac": true, + "browserify>crypto-browserify>diffie-hellman": true, + "browserify>crypto-browserify>pbkdf2": true, + "browserify>crypto-browserify>public-encrypt": true, + "browserify>crypto-browserify>randomfill": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true } }, - "buffer-split": { + "browserify>crypto-browserify>browserify-cipher": { "packages": { - "buffer-indexof": true + "browserify>crypto-browserify>browserify-cipher>browserify-des": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true } }, - "buffer-xor": { + "browserify>crypto-browserify>browserify-cipher>browserify-des": { "packages": { - "buffer": true + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>browserify-des>des.js": true, + "ethereumjs-util>create-hash>cipher-base": true, + "pumpify>inherits": true } }, - "call-bind": { + "browserify>crypto-browserify>browserify-cipher>browserify-des>des.js": { "packages": { - "function-bind": true, - "get-intrinsic": true + "3box>ethers>hash.js>minimalistic-assert": true, + "pumpify>inherits": true } }, - "camel-case": { + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": { "packages": { - "no-case": true, - "upper-case": true + "ethereumjs-util>create-hash>md5.js": true, + "ethereumjs-wallet>safe-buffer": true } }, - "cbor": { + "browserify>crypto-browserify>browserify-sign": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1": true, + "browserify>stream-browserify": true, + "ethereumjs-util>create-hash": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>create-ecdh": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>buffer": true + } + }, + "browserify>crypto-browserify>create-hmac": { + "packages": { + "addons-linter>sha.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>create-hash>ripemd160": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>diffie-hellman": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>diffie-hellman>miller-rabin": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>diffie-hellman>miller-rabin": { + "packages": { + "3box>ethers>elliptic>brorand": true, + "bn.js": true + } + }, + "browserify>crypto-browserify>pbkdf2": { "globals": { - "TextDecoder": true + "crypto": true, + "process": true, + "queueMicrotask": true, + "setImmediate": true, + "setTimeout": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "is-buffer": true, - "nofilter": true, - "stream-browserify": true, - "url": true, - "util": true + "addons-linter>sha.js": true, + "browserify>process": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>create-hash>ripemd160": true, + "ethereumjs-wallet>safe-buffer": true } }, - "cbor-sync": { + "browserify>crypto-browserify>public-encrypt": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>public-encrypt>parse-asn1": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "browserify>crypto-browserify>pbkdf2": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1>asn1.js": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true + } + }, + "browserify>crypto-browserify>public-encrypt>parse-asn1>asn1.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "browserify>buffer": true, + "browserify>vm-browserify": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>randomfill": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>process": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "browserify>events": { + "globals": { + "console": true + } + }, + "browserify>https-browserify": { + "packages": { + "browserify>stream-http": true, + "browserify>url": true + } + }, + "browserify>os-browserify": { + "globals": { + "location": true, + "navigator": true + } + }, + "browserify>path-browserify": { + "packages": { + "browserify>process": true + } + }, + "browserify>process": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "browserify>punycode": { "globals": { "define": true + } + }, + "browserify>stream-browserify": { + "packages": { + "browserify>events": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "browserify>stream-http": { + "globals": { + "AbortController": true, + "Blob": true, + "MSStreamReader": true, + "ReadableStream": true, + "WritableStream": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "clearTimeout": true, + "fetch": true, + "location.protocol.search": true, + "setTimeout": true }, "packages": { - "buffer": true + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-http>builtin-status-codes": true, + "browserify>stream-http>readable-stream": true, + "browserify>url": true, + "pumpify>inherits": true, + "watchify>xtend": true } }, - "change-case": { + "browserify>stream-http>readable-stream": { "packages": { - "camel-case": true, - "constant-case": true, - "dot-case": true, - "header-case": true, - "is-lower-case": true, - "is-upper-case": true, - "lower-case": true, - "lower-case-first": true, - "no-case": true, - "param-case": true, - "pascal-case": true, - "path-case": true, - "sentence-case": true, - "snake-case": true, - "swap-case": true, - "title-case": true, - "upper-case": true, - "upper-case-first": true + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, - "cids": { + "browserify>string_decoder": { "packages": { - "buffer": true, - "class-is": true, - "is-buffer": true, - "multibase": true, - "multicodec": true, - "multihashes": true, - "uint8arrays": true + "ethereumjs-wallet>safe-buffer": true } }, - "cipher-base": { + "browserify>timers-browserify": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, "packages": { - "inherits": true, - "safe-buffer": true, - "stream-browserify": true, - "string_decoder": true + "browserify>process": true + } + }, + "browserify>url": { + "packages": { + "browserify>punycode": true, + "browserify>querystring-es3": true + } + }, + "browserify>util": { + "globals": { + "console.error": true, + "console.log": true, + "console.trace": true, + "process": true + }, + "packages": { + "browserify>process": true, + "browserify>util>inherits": true + } + }, + "browserify>vm-browserify": { + "globals": { + "document.body.appendChild": true, + "document.body.removeChild": true, + "document.createElement": true } }, "classnames": { @@ -1465,63 +4442,6 @@ "define": true } }, - "clone": { - "packages": { - "buffer": true - } - }, - "coinstring": { - "packages": { - "bs58": true, - "buffer": true, - "create-hash": true - } - }, - "color": { - "packages": { - "clone": true, - "color-convert": true, - "color-string": true - } - }, - "color-convert": { - "packages": { - "color-name": true - } - }, - "color-string": { - "packages": { - "color-name": true - } - }, - "colors": { - "globals": { - "console.log": true - }, - "packages": { - "os-browserify": true, - "process": true, - "util": true - } - }, - "concat-stream": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true - } - }, - "constant-case": { - "packages": { - "snake-case": true, - "upper-case": true - } - }, - "cookiejar": { - "globals": { - "console.warn": true - } - }, "copy-to-clipboard": { "globals": { "clipboardData": true, @@ -1537,157 +4457,97 @@ "prompt": true }, "packages": { - "toggle-selection": true + "copy-to-clipboard>toggle-selection": true } }, - "core-js": { + "copy-to-clipboard>toggle-selection": { "globals": { - "PromiseRejectionEvent": true, - "__e": "write", - "__g": "write", - "document.createTextNode": true, - "postMessage": true, - "setTimeout": true - } - }, - "core-util-is": { - "packages": { - "is-buffer": true - } - }, - "crc": { - "packages": { - "buffer": true - } - }, - "crc-32": { - "globals": { - "DO_NOT_EXPORT_CRC": true, - "define": true - } - }, - "create-ecdh": { - "packages": { - "bn.js": true, - "buffer": true, - "elliptic": true - } - }, - "create-hash": { - "packages": { - "cipher-base": true, - "inherits": true, - "md5.js": true, - "ripemd160": true, - "sha.js": true - } - }, - "create-hmac": { - "packages": { - "cipher-base": true, - "create-hash": true, - "inherits": true, - "ripemd160": true, - "safe-buffer": true, - "sha.js": true - } - }, - "cross-fetch": { - "globals": { - "Blob": true, - "FileReader": true, - "FormData": true, - "URLSearchParams.prototype.isPrototypeOf": true, - "XMLHttpRequest": true - } - }, - "crypto-browserify": { - "packages": { - "browserify-cipher": true, - "browserify-sign": true, - "create-ecdh": true, - "create-hash": true, - "create-hmac": true, - "diffie-hellman": true, - "pbkdf2": true, - "public-encrypt": true, - "randombytes": true, - "randomfill": true - } - }, - "crypto-js": { - "globals": { - "define": true - } - }, - "css-vendor": { - "globals": { - "document.createElement": true, - "document.documentElement": true, - "getComputedStyle": true - }, - "packages": { - "@babel/runtime": true, - "is-in-browser": true + "document.activeElement": true, + "document.getSelection": true } }, "currency-formatter": { "packages": { - "accounting": true, - "locale-currency": true, - "object-assign": true + "currency-formatter>accounting": true, + "currency-formatter>locale-currency": true, + "react>object-assign": true } }, - "data-queue": { + "currency-formatter>accounting": { + "globals": { + "define": true + } + }, + "currency-formatter>locale-currency": { + "globals": { + "countryCode": true + } + }, + "debounce-stream": { "packages": { - "events": true + "debounce-stream>debounce": true, + "debounce-stream>duplexer": true, + "debounce-stream>through": true } }, - "datastore-core": { - "packages": { - "async": true, - "buffer": true, - "interface-datastore": true, - "pull-many": true, - "pull-stream": true - } - }, - "datastore-level": { - "packages": { - "buffer": true, - "encoding-down": true, - "interface-datastore": true, - "level-js": true, - "levelup": true, - "pull-stream": true - } - }, - "datastore-pubsub": { - "packages": { - "assert": true, - "buffer": true, - "debug": true, - "err-code": true, - "interface-datastore": true, - "multibase": true - } - }, - "debounce": { + "debounce-stream>debounce": { "globals": { "clearTimeout": true, "setTimeout": true } }, - "debounce-stream": { + "debounce-stream>duplexer": { "packages": { - "debounce": true, - "duplexer": true, - "through": true + "browserify>stream-browserify": true } }, - "debug": { + "debounce-stream>through": { + "packages": { + "browserify>process": true, + "browserify>stream-browserify": true + } + }, + "depcheck>@vue/compiler-sfc>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "dependency-tree>precinct>detective-postcss>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "end-of-stream": { + "packages": { + "browserify>process": true, + "pump>once": true + } + }, + "enzyme>has": { + "packages": { + "mocha>object.assign>function-bind": true + } + }, + "enzyme>is-regex": { + "packages": { + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "eslint-plugin-react>array-includes>get-intrinsic": { + "globals": { + "AggregateError": true, + "FinalizationRegistry": true, + "WeakRef": true + }, + "packages": { + "enzyme>has": true, + "mocha>object.assign>function-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "eslint>debug": { "globals": { - "chrome": true, "console": true, "document": true, "localStorage": true, @@ -1695,183 +4555,18 @@ "process": true }, "packages": { - "ms": true, - "process": true + "browserify>process": true, + "eslint>debug>ms": true } }, - "deep-equal": { - "packages": { - "is-arguments": true, - "is-date-object": true, - "is-regex": true, - "object-is": true, - "object-keys": true, - "regexp.prototype.flags": true - } - }, - "deep-extend": { - "packages": { - "buffer": true - } - }, - "deferred-leveldown": { - "packages": { - "abstract-leveldown": true, - "inherits": true - } - }, - "define-properties": { - "packages": { - "object-keys": true - } - }, - "des.js": { - "packages": { - "inherits": true, - "minimalistic-assert": true - } - }, - "did-jwt": { - "packages": { - "@babel/runtime": true, - "@stablelib/utf8": true, - "base64url": true, - "buffer": true, - "did-resolver": true, - "elliptic": true, - "js-sha256": true, - "js-sha3": true, - "tweetnacl": true, - "tweetnacl-util": true, - "uport-base64url": true - } - }, - "diffie-hellman": { - "packages": { - "bn.js": true, - "buffer": true, - "miller-rabin": true, - "randombytes": true - } - }, - "dlv": { + "eslint>optionator>fast-levenshtein": { "globals": { - "define": true - } - }, - "dnd-core": { - "packages": { - "asap": true, - "invariant": true, - "lodash": true, - "redux": true - } - }, - "dom-helpers": { - "globals": { - "document": true, - "setTimeout": true - }, - "packages": { - "@babel/runtime": true - } - }, - "dot-case": { - "packages": { - "no-case": true - } - }, - "drbg.js": { - "packages": { - "buffer": true, - "create-hmac": true - } - }, - "duplexer": { - "packages": { - "stream-browserify": true - } - }, - "duplexify": { - "packages": { - "buffer": true, - "end-of-stream": true, - "inherits": true, - "process": true, - "readable-stream": true, - "stream-shift": true - } - }, - "elliptic": { - "packages": { - "bn.js": true, - "brorand": true, - "hash.js": true, - "hmac-drbg": true, - "inherits": true, - "minimalistic-assert": true, - "minimalistic-crypto-utils": true - } - }, - "encoding-down": { - "packages": { - "abstract-leveldown": true, - "inherits": true, - "level-codec": true, - "level-errors": true - } - }, - "end-of-stream": { - "packages": { - "once": true, - "process": true - } - }, - "engine.io-client": { - "globals": { - "MozWebSocket": true, - "WebSocket": true, - "XDomainRequest": true, - "XMLHttpRequest": true, - "addEventListener": true, - "attachEvent": true, - "clearTimeout": true, - "document": true, - "location": true, - "navigator": true, - "setTimeout": true - }, - "packages": { - "browser-resolve": true, - "buffer": true, - "component-emitter": true, - "component-inherit": true, - "debug": true, - "engine.io-parser": true, - "has-cors": true, - "indexof": true, - "parseqs": true, - "parseuri": true, - "yeast": true - } - }, - "engine.io-parser": { - "globals": { - "FileReader": true, - "btoa": true, - "navigator": true - }, - "packages": { - "after": true, - "arraybuffer.slice": true, - "base64-arraybuffer": true, - "blob": true, - "has-binary2": true - } - }, - "errno": { - "packages": { - "prr": true + "Intl": true, + "Levenshtein": "write", + "console.log": true, + "define": true, + "importScripts": true, + "postMessage": true } }, "eth-block-tracker": { @@ -1881,21 +4576,9 @@ "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "eth-query": true, - "json-rpc-random-id": true, - "pify": true, - "safe-event-emitter": true - } - }, - "eth-eip712-util-browser": { - "globals": { - "intToBuffer": true - }, - "packages": { - "bn.js": true, - "buffer": true, - "js-sha3": true + "eth-block-tracker>pify": true, + "eth-query>json-rpc-random-id": true, + "json-rpc-engine>@metamask/safe-event-emitter": true } }, "eth-ens-namehash": { @@ -1903,19 +4586,22 @@ "name": "write" }, "packages": { - "buffer": true, - "idna-uts46": true, - "idna-uts46-hx": true, - "js-sha3": true + "browserify>buffer": true, + "eth-ens-namehash>idna-uts46-hx": true, + "eth-ens-namehash>js-sha3": true } }, - "eth-hd-keyring": { + "eth-ens-namehash>idna-uts46-hx": { + "globals": { + "define": true + }, "packages": { - "bip39": true, - "buffer": true, - "eth-sig-util": true, - "eth-simple-keyring": true, - "ethereumjs-wallet": true + "browserify>punycode": true + } + }, + "eth-ens-namehash>js-sha3": { + "packages": { + "browserify>process": true } }, "eth-json-rpc-filters": { @@ -1925,25 +4611,46 @@ }, "packages": { "await-semaphore": true, - "eth-json-rpc-middleware": true, + "eth-json-rpc-filters>eth-json-rpc-middleware": true, + "eth-json-rpc-filters>eth-json-rpc-middleware>pify": true, + "eth-json-rpc-filters>json-rpc-engine": true, + "eth-json-rpc-filters>lodash.flatmap": true, "eth-query": true, - "json-rpc-engine": true, - "lodash.flatmap": true, - "pify": true, "safe-event-emitter": true } }, + "eth-json-rpc-filters>eth-json-rpc-middleware": { + "packages": { + "eth-json-rpc-filters>json-rpc-engine": true + } + }, "eth-json-rpc-infura": { "globals": { "setTimeout": true }, "packages": { - "eth-json-rpc-middleware": true, - "eth-rpc-errors": true, - "json-rpc-engine": true, + "eth-json-rpc-infura>eth-json-rpc-middleware": true, + "eth-json-rpc-infura>eth-rpc-errors": true, + "eth-json-rpc-infura>json-rpc-engine": true, "node-fetch": true } }, + "eth-json-rpc-infura>eth-json-rpc-middleware": { + "packages": { + "safe-event-emitter": true + } + }, + "eth-json-rpc-infura>eth-rpc-errors": { + "packages": { + "eth-rpc-errors>fast-safe-stringify": true + } + }, + "eth-json-rpc-infura>json-rpc-engine": { + "packages": { + "eth-json-rpc-infura>eth-rpc-errors": true, + "safe-event-emitter": true + } + }, "eth-json-rpc-middleware": { "globals": { "URL": true, @@ -1953,32 +4660,158 @@ "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "browser-resolve": true, - "btoa": true, - "clone": true, + "browserify>browser-resolve": true, + "eth-json-rpc-middleware>eth-sig-util": true, + "eth-json-rpc-middleware>pify": true, "eth-rpc-errors": true, - "eth-sig-util": true, "json-rpc-engine": true, - "json-stable-stringify": true, - "node-fetch": true, - "pify": true, - "safe-event-emitter": true, - "url": true + "json-rpc-engine>@metamask/safe-event-emitter": true, + "lavamoat>json-stable-stringify": true, + "vinyl>clone": true + } + }, + "eth-json-rpc-middleware>eth-sig-util": { + "packages": { + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi>ethereumjs-util": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "eth-keyring-controller": { "packages": { - "bip39": true, - "browser-passworder": true, - "buffer": true, - "eth-hd-keyring": true, - "eth-sig-util": true, - "eth-simple-keyring": true, + "browserify>buffer": true, + "browserify>events": true, + "eth-keyring-controller>@metamask/bip39": true, + "eth-keyring-controller>@metamask/eth-hd-keyring": true, + "eth-keyring-controller>browser-passworder": true, + "eth-keyring-controller>eth-simple-keyring": true, + "eth-keyring-controller>obs-store": true, + "eth-sig-util": true + } + }, + "eth-keyring-controller>@metamask/bip39": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>pbkdf2": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring": { + "packages": { + "browserify>buffer": true, + "eth-keyring-controller>@metamask/bip39": true, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet": true, + "eth-keyring-controller>eth-simple-keyring": true, + "eth-trezor-keyring>@metamask/eth-sig-util": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet": { + "packages": { + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet>uuid": true, "ethereumjs-util": true, - "events": true, - "loglevel": true, - "obs-store": true + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "eth-keyring-controller>browser-passworder": { + "globals": { + "btoa": true, + "crypto": true + }, + "packages": { + "eth-keyring-controller>browser-passworder>browserify-unibabel": true + } + }, + "eth-keyring-controller>browser-passworder>browserify-unibabel": { + "globals": { + "atob": true, + "btoa": true + } + }, + "eth-keyring-controller>eth-simple-keyring": { + "packages": { + "browserify>buffer": true, + "browserify>events": true, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet": true, + "eth-sig-util": true, + "ethereumjs-util": true + } + }, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet": { + "packages": { + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet>uuid": true, + "ethereumjs-util": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "eth-keyring-controller>obs-store": { + "packages": { + "safe-event-emitter": true, + "watchify>xtend": true } }, "eth-lattice-keyring": { @@ -1986,20 +4819,133 @@ "addEventListener": true, "browser": true, "clearInterval": true, + "console.warn": true, + "fetch": true, "open": true, - "rlp.encode": true, - "setInterval": true + "setInterval": true, + "txData.type": true }, "packages": { "@ethereumjs/common": true, "@ethereumjs/tx": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "browserify>events": true, + "eth-lattice-keyring>bn.js": true, + "eth-lattice-keyring>gridplus-sdk": true, + "eth-lattice-keyring>rlp": true, + "eth-lattice-keyring>secp256k1": true, + "ethereumjs-util": true + } + }, + "eth-lattice-keyring>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "eth-lattice-keyring>gridplus-sdk": { + "globals": { + "console.warn": true, + "setTimeout": true + }, + "packages": { + "3box>ethers>elliptic": true, + "@ethereumjs/common": true, + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx": true, "bn.js": true, - "buffer": true, - "crypto-browserify": true, - "ethereumjs-util": true, - "events": true, - "gridplus-sdk": true, - "secp256k1": true + "browserify>buffer": true, + "eth-lattice-keyring>gridplus-sdk>bech32": true, + "eth-lattice-keyring>gridplus-sdk>bignumber.js": true, + "eth-lattice-keyring>gridplus-sdk>bitwise": true, + "eth-lattice-keyring>gridplus-sdk>borc": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, + "eth-lattice-keyring>gridplus-sdk>rlp": true, + "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethers>@ethersproject/keccak256>js-sha3": true, + "ethers>@ethersproject/sha2>hash.js": true, + "lodash": true, + "pubnub>superagent": true + } + }, + "eth-lattice-keyring>gridplus-sdk>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, + "eth-lattice-keyring>gridplus-sdk>borc": { + "globals": { + "console": true + }, + "packages": { + "3box>ipfs>iso-url": true, + "browserify>buffer": true, + "browserify>buffer>ieee754": true, + "eth-lattice-keyring>gridplus-sdk>borc>bignumber.js": true + } + }, + "eth-lattice-keyring>gridplus-sdk>borc>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, + "packages": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>bn.js": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>buffer": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>buffer": { + "globals": { + "console": true + }, + "packages": { + "base64-js": true, + "browserify>buffer>ieee754": true + } + }, + "eth-lattice-keyring>gridplus-sdk>rlp": { + "globals": { + "TextEncoder": true + } + }, + "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "packages": { + "3box>ethers>elliptic": true + } + }, + "eth-lattice-keyring>rlp": { + "globals": { + "TextEncoder": true + } + }, + "eth-lattice-keyring>secp256k1": { + "packages": { + "3box>ethers>elliptic": true } }, "eth-method-registry": { @@ -2007,38 +4953,44 @@ "ethjs": true } }, - "eth-phishing-detect": { - "packages": { - "fast-levenshtein": true - } - }, "eth-query": { "packages": { - "json-rpc-random-id": true, - "xtend": true + "eth-query>json-rpc-random-id": true, + "watchify>xtend": true } }, "eth-rpc-errors": { "packages": { - "fast-safe-stringify": true + "eth-rpc-errors>fast-safe-stringify": true } }, "eth-sig-util": { "packages": { - "buffer": true, - "ethereumjs-abi": true, - "ethereumjs-util": true, - "tweetnacl": true, - "tweetnacl-util": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util": true, + "ethereumjs-abi": true } }, - "eth-simple-keyring": { + "eth-sig-util>ethereumjs-util": { "packages": { - "buffer": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "ethereumjs-wallet": true, - "events": true + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "eth-trezor-keyring": { @@ -2047,112 +4999,704 @@ }, "packages": { "@ethereumjs/tx": true, - "buffer": true, - "ethereumjs-util": true, - "events": true, - "hdkey": true, - "trezor-connect": true + "browserify>buffer": true, + "browserify>events": true, + "eth-trezor-keyring>hdkey": true, + "eth-trezor-keyring>trezor-connect": true, + "ethereumjs-util": true } }, - "ethereum-bloom-filters": { + "eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { - "js-sha3": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "browserify>buffer": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethereumjs-util": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, + "ethereumjs-abi": true } }, - "ethereum-cryptography": { + "eth-trezor-keyring>@metamask/eth-sig-util>ethereumjs-util": { "packages": { - "assert": true, - "bs58check": true, - "buffer": true, - "create-hmac": true, - "hash.js": true, - "keccak": true, - "randombytes": true, - "safe-buffer": true, - "secp256k1": true + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "eth-trezor-keyring>hdkey": { + "packages": { + "browserify>assert": true, + "browserify>crypto-browserify": true, + "eth-trezor-keyring>hdkey>coinstring": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>coinstring": { + "packages": { + "browserify>buffer": true, + "eth-trezor-keyring>hdkey>coinstring>bs58": true, + "ethereumjs-util>create-hash": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-trezor-keyring>hdkey>secp256k1>bip66": true, + "eth-trezor-keyring>hdkey>secp256k1>drbg.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1>bip66": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1>drbg.js": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true + } + }, + "eth-trezor-keyring>trezor-connect": { + "globals": { + "__TREZOR_CONNECT_SRC": true, + "addEventListener": true, + "btoa": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "document.body": true, + "document.createElement": true, + "document.createTextNode": true, + "document.getElementById": true, + "document.querySelectorAll": true, + "location": true, + "navigator": true, + "open": true, + "removeEventListener": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>graphql-request>cross-fetch": true, + "@babel/runtime": true, + "browserify>events": true, + "eth-trezor-keyring>@metamask/eth-sig-util": true } }, "ethereumjs-abi": { "packages": { "bn.js": true, - "buffer": true, - "ethereumjs-util": true + "browserify>buffer": true, + "ethereumjs-abi>ethereumjs-util": true + } + }, + "ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-abi>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "ethereumjs-abi>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "ethereumjs-util": { "packages": { - "assert": true, - "bn.js": true, - "buffer": true, - "create-hash": true, - "elliptic": true, - "ethereum-cryptography": true, - "ethjs-util": true, - "is-buffer": true, - "keccak": true, - "rlp": true, - "safe-buffer": true, - "secp256k1": true + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-util>bn.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>ethjs-util": true, + "ethereumjs-util>rlp": true + } + }, + "ethereumjs-util>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "ethereumjs-util>create-hash": { + "packages": { + "addons-linter>sha.js": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>create-hash>md5.js": true, + "ethereumjs-util>create-hash>ripemd160": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>cipher-base": { + "packages": { + "browserify>stream-browserify": true, + "browserify>string_decoder": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js": { + "packages": { + "ethereumjs-util>create-hash>md5.js>hash-base": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js>hash-base": { + "packages": { + "ethereumjs-util>create-hash>md5.js>hash-base>readable-stream": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js>hash-base>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>ripemd160": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>create-hash>md5.js>hash-base": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography": { + "packages": { + "browserify>assert": true, + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true, + "ethereumjs-util>ethereum-cryptography>keccak": true, + "ethereumjs-util>ethereum-cryptography>secp256k1": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "ethereumjs-util>ethereum-cryptography>blakejs": { + "globals": { + "TextEncoder": true, + "console.log": true + } + }, + "ethereumjs-util>ethereum-cryptography>browserify-aes": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes>buffer-xor": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography>browserify-aes>buffer-xor": { + "packages": { + "browserify>buffer": true + } + }, + "ethereumjs-util>ethereum-cryptography>keccak": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>keccak>readable-stream": true + } + }, + "ethereumjs-util>ethereum-cryptography>keccak>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography>secp256k1": { + "packages": { + "3box>ethers>elliptic": true + } + }, + "ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethereumjs-util>rlp": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>rlp>bn.js": true + } + }, + "ethereumjs-util>rlp>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true } }, "ethereumjs-wallet": { "packages": { - "aes-js": true, - "bs58check": true, - "buffer": true, - "crypto-browserify": true, - "ethereum-cryptography": true, - "ethereumjs-util": true, - "randombytes": true, - "safe-buffer": true, - "scrypt-js": true, - "scryptsy": true, - "utf8": true, - "uuid": true + "@truffle/codec>utf8": true, + "browserify>crypto-browserify": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>ethereumjs-util": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true, + "ethereumjs-wallet>scryptsy": true, + "ethereumjs-wallet>uuid": true + } + }, + "ethereumjs-wallet>aes-js": { + "globals": { + "define": true + } + }, + "ethereumjs-wallet>bs58check": { + "packages": { + "3box>ipfs>bs58": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "ethereumjs-wallet>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>ethereumjs-util>ethjs-util": true + } + }, + "ethereumjs-wallet>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethereumjs-wallet>randombytes": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>process": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "ethereumjs-wallet>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "ethereumjs-wallet>scryptsy": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>pbkdf2": true + } + }, + "ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true } }, "ethers": { + "packages": { + "ethers>@ethersproject/abi": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/base64": true, + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/contracts": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/providers": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/rlp": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/solidity": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/units": true, + "ethers>@ethersproject/wallet": true, + "ethers>@ethersproject/web": true, + "ethers>@ethersproject/wordlists": true + } + }, + "ethers>@ethersproject/abi": { + "globals": { + "console.log": true + }, + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/abstract-provider": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/abstract-signer": { + "packages": { + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/address": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/rlp": true + } + }, + "ethers>@ethersproject/base64": { "globals": { - "MessageChannel": true, - "XMLHttpRequest": true, "atob": true, - "btoa": true, + "btoa": true + }, + "packages": { + "ethers>@ethersproject/bytes": true + } + }, + "ethers>@ethersproject/basex": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/bignumber": { + "packages": { + "bn.js": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/bytes": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/constants": { + "packages": { + "ethers>@ethersproject/bignumber": true + } + }, + "ethers>@ethersproject/contracts": { + "globals": { + "setTimeout": true + }, + "packages": { + "ethers>@ethersproject/abi": true, + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/hash": { + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/hdnode": { + "packages": { + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/pbkdf2": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/wordlists": true + } + }, + "ethers>@ethersproject/json-wallets": { + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets>aes-js": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/pbkdf2": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/json-wallets>aes-js": { + "globals": { + "define": true + } + }, + "ethers>@ethersproject/json-wallets>scrypt-js": { + "globals": { + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>timers-browserify": true + } + }, + "ethers>@ethersproject/keccak256": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "ethers>@ethersproject/keccak256>js-sha3": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "ethers>@ethersproject/logger": { + "globals": { + "console": true + } + }, + "ethers>@ethersproject/networks": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/pbkdf2": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/sha2": true + } + }, + "ethers>@ethersproject/properties": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/providers": { + "globals": { + "WebSocket": true, "clearInterval": true, "clearTimeout": true, - "console": true, - "crypto.getRandomValues": true, - "define": true, + "console.log": true, + "console.warn": true, + "name": true, "setInterval": true, "setTimeout": true }, "packages": { - "@ethersproject/abi": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/base64": true, - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/contracts": true, - "@ethersproject/hash": true, - "@ethersproject/hdnode": true, - "@ethersproject/json-wallets": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/providers": true, - "@ethersproject/random": true, - "@ethersproject/rlp": true, - "@ethersproject/sha2": true, - "@ethersproject/signing-key": true, - "@ethersproject/solidity": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/units": true, - "@ethersproject/wallet": true, - "@ethersproject/web": true, - "@ethersproject/wordlists": true + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/networks": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/providers>bech32": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/web": true + } + }, + "ethers>@ethersproject/random": { + "globals": { + "crypto.getRandomValues": true + }, + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/rlp": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/sha2": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "ethers>@ethersproject/sha2>hash.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "pumpify>inherits": true + } + }, + "ethers>@ethersproject/signing-key": { + "packages": { + "3box>ethers>elliptic": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/solidity": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/strings": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/transactions": { + "globals": { + "console.log": true + }, + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/rlp": true, + "ethers>@ethersproject/signing-key": true + } + }, + "ethers>@ethersproject/units": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/wallet": { + "packages": { + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/web": { + "globals": { + "clearTimeout": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "ethers>@ethersproject/base64": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/wordlists": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true } }, "ethjs": { @@ -2161,62 +5705,112 @@ "setInterval": true }, "packages": { - "bn.js": true, - "buffer": true, - "ethjs-abi": true, + "browserify>buffer": true, "ethjs-contract": true, - "ethjs-filter": true, - "ethjs-provider-http": true, "ethjs-query": true, - "ethjs-unit": true, - "ethjs-util": true, - "js-sha3": true, - "number-to-bn": true - } - }, - "ethjs-abi": { - "packages": { - "bn.js": true, - "buffer": true, - "js-sha3": true, - "number-to-bn": true + "ethjs>bn.js": true, + "ethjs>ethjs-abi": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>js-sha3": true, + "ethjs>number-to-bn": true } }, "ethjs-contract": { "packages": { - "babel-runtime": true, - "ethjs-abi": true, - "ethjs-filter": true, - "ethjs-util": true, - "js-sha3": true, + "ethjs-contract>ethjs-abi": true, + "ethjs-contract>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, "promise-to-callback": true } }, + "ethjs-contract>ethjs-abi": { + "packages": { + "browserify>buffer": true, + "ethjs-contract>ethjs-abi>bn.js": true, + "ethjs-contract>ethjs-abi>js-sha3": true, + "ethjs>number-to-bn": true + } + }, + "ethjs-contract>ethjs-abi>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs-contract>js-sha3": { + "packages": { + "browserify>process": true + } + }, "ethjs-ens": { "packages": { - "eth-ens-namehash": true, "ethereum-ens-network-map": true, - "ethjs-contract": true, - "ethjs-query": true + "ethjs-ens>eth-ens-namehash": true, + "ethjs-ens>ethjs-contract": true, + "ethjs-ens>ethjs-query": true } }, - "ethjs-filter": { + "ethjs-ens>eth-ens-namehash": { + "globals": { + "name": "write" + }, + "packages": { + "browserify>buffer": true, + "ethjs-ens>eth-ens-namehash>idna-uts46": true, + "ethjs-ens>eth-ens-namehash>js-sha3": true + } + }, + "ethjs-ens>eth-ens-namehash>idna-uts46": { + "globals": { + "define": true + }, + "packages": { + "browserify>punycode": true + } + }, + "ethjs-ens>eth-ens-namehash>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs-ens>ethjs-contract": { + "packages": { + "ethjs-contract>ethjs-abi": true, + "ethjs-ens>ethjs-contract>ethjs-filter": true, + "ethjs-ens>ethjs-contract>js-sha3": true, + "ethjs>ethjs-util": true + } + }, + "ethjs-ens>ethjs-contract>ethjs-filter": { "globals": { "clearInterval": true, "setInterval": true } }, - "ethjs-format": { + "ethjs-ens>ethjs-contract>js-sha3": { "packages": { - "ethjs-schema": true, - "ethjs-util": true, - "number-to-bn": true, - "strip-hex-prefix": true + "browserify>process": true } }, - "ethjs-provider-http": { + "ethjs-ens>ethjs-query": { + "globals": { + "console": true + }, "packages": { - "xhr2": true + "ethjs-ens>ethjs-query>ethjs-format": true, + "ethjs-ens>ethjs-query>ethjs-rpc": true + } + }, + "ethjs-ens>ethjs-query>ethjs-format": { + "packages": { + "ethjs-ens>ethjs-query>ethjs-format>ethjs-schema": true, + "ethjs>ethjs-util": true, + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn": true } }, "ethjs-query": { @@ -2224,63 +5818,98 @@ "console": true }, "packages": { - "babel-runtime": true, - "ethjs-format": true, - "ethjs-rpc": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, "promise-to-callback": true } }, - "ethjs-rpc": { + "ethjs-query>babel-runtime": { "packages": { - "promise-to-callback": true + "@babel/runtime": true, + "@storybook/api>regenerator-runtime": true, + "ethjs-query>babel-runtime>core-js": true } }, - "ethjs-unit": { - "packages": { - "bn.js": true, - "number-to-bn": true - } - }, - "ethjs-util": { - "packages": { - "buffer": true, - "is-hex-prefixed": true, - "strip-hex-prefix": true - } - }, - "events": { + "ethjs-query>babel-runtime>core-js": { "globals": { - "console": true + "PromiseRejectionEvent": true, + "__e": "write", + "__g": "write", + "document.createTextNode": true, + "postMessage": true, + "setTimeout": true } }, - "evp_bytestokey": { + "ethjs-query>ethjs-format": { "packages": { - "md5.js": true, - "safe-buffer": true + "ethjs-query>ethjs-format>ethjs-schema": true, + "ethjs>ethjs-util": true, + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn": true + } + }, + "ethjs-query>ethjs-rpc": { + "packages": { + "promise-to-callback": true + } + }, + "ethjs>ethjs-abi": { + "packages": { + "browserify>buffer": true, + "ethjs>bn.js": true, + "ethjs>js-sha3": true, + "ethjs>number-to-bn": true + } + }, + "ethjs>ethjs-filter": { + "globals": { + "clearInterval": true, + "setInterval": true + } + }, + "ethjs>ethjs-provider-http": { + "packages": { + "ethjs>ethjs-provider-http>xhr2": true + } + }, + "ethjs>ethjs-provider-http>xhr2": { + "globals": { + "XMLHttpRequest": true + } + }, + "ethjs>ethjs-unit": { + "packages": { + "ethjs>ethjs-unit>bn.js": true, + "ethjs>number-to-bn": true + } + }, + "ethjs>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethjs>ethjs-util>strip-hex-prefix": { + "packages": { + "ethjs>ethjs-util>is-hex-prefixed": true + } + }, + "ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs>number-to-bn": { + "packages": { + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn>bn.js": true } }, "extension-port-stream": { "packages": { - "buffer": true, - "stream-browserify": true - } - }, - "faker": { - "globals": { - "console.error": true, - "console.log": true, - "dbg": "write" - } - }, - "fast-check": { - "globals": { - "clearTimeout": true, - "console.log": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "pure-rand": true + "browserify>buffer": true, + "browserify>stream-browserify": true } }, "fast-json-patch": { @@ -2291,29 +5920,7 @@ "setTimeout": true }, "packages": { - "fast-deep-equal": true - } - }, - "fast-levenshtein": { - "globals": { - "Intl": true, - "Levenshtein": "write", - "console.log": true, - "define": true, - "importScripts": true, - "postMessage": true - } - }, - "fs-constants": { - "packages": { - "constants-browserify": true - } - }, - "fsm-event": { - "packages": { - "assert": true, - "events": true, - "fsm": true + "fast-json-patch>fast-deep-equal": true } }, "fuse.js": { @@ -2322,1181 +5929,38 @@ "define": true } }, - "get-browser-rtc": { - "globals": { - "RTCIceCandidate": true, - "RTCPeerConnection": true, - "RTCSessionDescription": true, - "mozRTCIceCandidate": true, - "mozRTCPeerConnection": true, - "mozRTCSessionDescription": true, - "webkitRTCIceCandidate": true, - "webkitRTCPeerConnection": true, - "webkitRTCSessionDescription": true - } - }, - "get-intrinsic": { - "globals": { - "AggregateError": true, - "FinalizationRegistry": true, - "WeakRef": true - }, + "globalthis>define-properties": { "packages": { - "function-bind": true, - "has": true, - "has-symbols": true - } - }, - "graphql-request": { - "globals": { - "fetch": true - }, - "packages": { - "cross-fetch": true - } - }, - "gridplus-sdk": { - "globals": { - "console.error": true, - "console.warn": true, - "setTimeout": true - }, - "packages": { - "@ethereumjs/common": true, - "@ethereumjs/tx": true, - "aes-js": true, - "bech32": true, - "bignumber.js": true, - "bitwise": true, - "borc": true, - "bs58check": true, - "buffer": true, - "crc-32": true, - "elliptic": true, - "eth-eip712-util-browser": true, - "hash.js": true, - "js-sha3": true, - "rlp": true, - "rlp-browser": true, - "secp256k1": true, - "superagent": true - } - }, - "gunzip-maybe": { - "packages": { - "browserify-zlib": true, - "is-deflate": true, - "is-gzip": true, - "peek-stream": true, - "pumpify": true, - "through2": true - } - }, - "hamt-sharding": { - "packages": { - "is-buffer": true, - "sparse-array": true - } - }, - "has": { - "packages": { - "function-bind": true - } - }, - "has-binary2": { - "globals": { - "Blob": true, - "File": true - }, - "packages": { - "buffer": true, - "isarray": true - } - }, - "has-cors": { - "globals": { - "XMLHttpRequest": true - } - }, - "hash-base": { - "packages": { - "inherits": true, - "safe-buffer": true, - "stream-browserify": true - } - }, - "hash.js": { - "packages": { - "inherits": true, - "minimalistic-assert": true - } - }, - "hdkey": { - "packages": { - "assert": true, - "bs58check": true, - "coinstring": true, - "crypto-browserify": true, - "safe-buffer": true, - "secp256k1": true - } - }, - "header-case": { - "packages": { - "no-case": true, - "upper-case": true - } - }, - "heap": { - "globals": { - "define": true - } - }, - "hi-base32": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "history": { - "globals": { - "addEventListener": true, - "confirm": true, - "document": true, - "history": true, - "location": true, - "navigator.userAgent": true, - "removeEventListener": true - }, - "packages": { - "resolve-pathname": true, - "tiny-invariant": true, - "tiny-warning": true, - "value-equal": true - } - }, - "hmac-drbg": { - "packages": { - "hash.js": true, - "minimalistic-assert": true, - "minimalistic-crypto-utils": true - } - }, - "hoist-non-react-statics": { - "packages": { - "react-is": true - } - }, - "https-browserify": { - "packages": { - "stream-http": true, - "url": true - } - }, - "https-did-resolver": { - "globals": { - "XMLHttpRequest": true - }, - "packages": { - "browser-resolve": true, - "did-resolver": true - } - }, - "human-to-milliseconds": { - "packages": { - "promisify-es6": true - } - }, - "idb-readable-stream": { - "globals": { - "IDBKeyRange.bound": true, - "IDBKeyRange.lowerBound": true, - "IDBKeyRange.upperBound": true - }, - "packages": { - "stream-browserify": true, - "xtend": true - } - }, - "idna-uts46": { - "globals": { - "define": true - }, - "packages": { - "punycode": true - } - }, - "idna-uts46-hx": { - "globals": { - "define": true - }, - "packages": { - "punycode": true - } - }, - "immediate": { - "globals": { - "MessageChannel": true, - "MutationObserver": true, - "WebKitMutationObserver": true, - "clearTimeout": true, - "document.createElement": true, - "document.createTextNode": true, - "document.documentElement.appendChild": true, - "setImmediate": true, - "setTimeout": true - }, - "packages": { - "process": true - } - }, - "interface-connection": { - "packages": { - "pull-defer": true - } - }, - "interface-datastore": { - "packages": { - "async": true, - "buffer": true, - "class-is": true, - "err-code": true, - "os-browserify": true, - "path-browserify": true, - "pull-defer": true, - "pull-stream": true, - "uuid": true - } - }, - "ip": { - "packages": { - "buffer": true, - "os-browserify": true - } - }, - "ipfs": { - "globals": { - "AbortController": true, - "clearInterval": true, - "clearTimeout": true, - "console.log": true, - "fetch": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "async": true, - "async-iterator-all": true, - "async-iterator-to-pull-stream": true, - "async-iterator-to-stream": true, - "base32.js": true, - "bignumber.js": true, - "browser-resolve": true, - "buffer": true, - "callbackify": true, - "cids": true, - "class-is": true, - "datastore-core": true, - "datastore-pubsub": true, - "debug": true, - "dlv": true, - "err-code": true, - "events": true, - "fnv1a": true, - "fsm-event": true, - "human-to-milliseconds": true, - "interface-datastore": true, - "ipfs-bitswap": true, - "ipfs-block": true, - "ipfs-block-service": true, - "ipfs-mfs": true, - "ipfs-repo": true, - "ipfs-unixfs": true, - "ipfs-unixfs-exporter": true, - "ipfs-unixfs-importer": true, - "ipfs-utils": true, - "ipld": true, - "ipld-dag-cbor": true, - "ipld-dag-pb": true, - "ipld-raw": true, - "ipns": true, - "is-buffer": true, - "is-ipfs": true, - "is-pull-stream": true, - "is-stream": true, - "iso-url": true, - "just-flatten-it": true, - "kind-of": true, - "libp2p": true, - "libp2p-bootstrap": true, - "libp2p-crypto": true, - "libp2p-kad-dht": true, - "libp2p-keychain": true, - "libp2p-record": true, - "libp2p-secio": true, - "libp2p-webrtc-star": true, - "libp2p-websocket-star-multi": true, - "libp2p-websockets": true, - "mafmt": true, - "merge-options": true, - "multiaddr": true, - "multiaddr-to-uri": true, - "multibase": true, - "multicodec": true, - "multihashes": true, - "multihashing-async": true, - "peer-book": true, - "peer-id": true, - "peer-info": true, - "promisify-es6": true, - "protons": true, - "pull-cat": true, - "pull-defer": true, - "pull-mplex": true, - "pull-pushable": true, - "pull-sort": true, - "pull-stream": true, - "pull-stream-to-async-iterator": true, - "pull-stream-to-stream": true, - "pull-traverse": true, - "readable-stream": true, - "receptacle": true, - "stream-to-pull-stream": true, - "superstruct": true, - "timers-browserify": true, - "varint": true - } - }, - "ipfs-bitswap": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "assert": true, - "async": true, - "bignumber.js": true, - "cids": true, - "debug": true, - "events": true, - "ipfs-block": true, - "just-debounce-it": true, - "lodash.isequalwith": true, - "moving-average": true, - "multicodec": true, - "multihashing-async": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true, - "varint-decoder": true - } - }, - "ipfs-block": { - "packages": { - "cids": true, - "class-is": true, - "is-buffer": true - } - }, - "ipfs-block-service": { - "packages": { - "async": true - } - }, - "ipfs-log": { - "globals": { - "clearTimeout": true, - "console.warn": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "json-stringify-deterministic": true, - "orbit-db-io": true, - "p-each-series": true, - "p-map": true, - "p-whilst": true - } - }, - "ipfs-mfs": { - "globals": { - "Blob": true, - "FileReader": true - }, - "packages": { - "assert": true, - "async-iterator-last": true, - "browser-resolve": true, - "buffer": true, - "cids": true, - "debug": true, - "err-code": true, - "hamt-sharding": true, - "interface-datastore": true, - "ipfs-unixfs": true, - "ipfs-unixfs-exporter": true, - "ipfs-unixfs-importer": true, - "ipld-dag-pb": true, - "mortice": true, - "multicodec": true, - "multihashes": true, - "promisify-es6": true - } - }, - "ipfs-mini": { - "globals": { - "XMLHttpRequest": true - } - }, - "ipfs-pubsub-1on1": { - "globals": { - "clearInterval": true, - "setInterval": true - }, - "packages": { - "events": true, - "path-browserify": true, - "safe-buffer": true - } - }, - "ipfs-pubsub-peer-monitor": { - "globals": { - "clearInterval": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "events": true - } - }, - "ipfs-repo": { - "packages": { - "assert": true, - "async": true, - "base32.js": true, - "bignumber.js": true, - "buffer": true, - "cids": true, - "datastore-core": true, - "datastore-level": true, - "debug": true, - "dlv": true, - "interface-datastore": true, - "ipfs-block": true, - "just-safe-set": true, - "path-browserify": true, - "pull-stream": true, - "sort-keys": true, - "timers-browserify": true - } - }, - "ipfs-unixfs": { - "packages": { - "protons": true - } - }, - "ipfs-unixfs-exporter": { - "packages": { - "async-iterator-last": true, - "buffer": true, - "cids": true, - "err-code": true, - "hamt-sharding": true, - "ipfs-unixfs": true, - "ipfs-unixfs-importer": true, - "is-buffer": true - } - }, - "ipfs-unixfs-importer": { - "packages": { - "async-iterator-all": true, - "async-iterator-batch": true, - "async-iterator-first": true, - "bl": true, - "buffer": true, - "deep-extend": true, - "err-code": true, - "hamt-sharding": true, - "ipfs-unixfs": true, - "ipld-dag-pb": true, - "multicodec": true, - "multihashes": true, - "multihashing-async": true, - "rabin-wasm": true, - "superstruct": true - } - }, - "ipfs-utils": { - "globals": { - "FileReader": true - }, - "packages": { - "is-buffer": true, - "is-pull-stream": true, - "is-stream": true, - "kind-of": true, - "readable-stream": true - } - }, - "ipld": { - "packages": { - "cids": true, - "ipfs-block": true, - "ipld-dag-cbor": true, - "ipld-dag-pb": true, - "ipld-raw": true, - "is-buffer": true, - "merge-options": true, - "multicodec": true, - "promisify-es6": true, - "typical": true - } - }, - "ipld-dag-cbor": { - "packages": { - "borc": true, - "buffer": true, - "cids": true, - "is-buffer": true, - "is-circular": true, - "multicodec": true, - "multihashing-async": true - } - }, - "ipld-dag-pb": { - "packages": { - "assert": true, - "buffer": true, - "cids": true, - "class-is": true, - "is-buffer": true, - "multicodec": true, - "multihashing-async": true, - "protons": true, - "stable": true - } - }, - "ipld-raw": { - "packages": { - "cids": true, - "multicodec": true, - "multihashing-async": true - } - }, - "ipns": { - "packages": { - "base32-encode": true, - "buffer": true, - "debug": true, - "interface-datastore": true, - "libp2p-crypto": true, - "multihashes": true, - "peer-id": true, - "protons": true, - "timestamp-nano": true - } - }, - "is-dom": { - "globals": { - "Node": true - }, - "packages": { - "is-object": true, - "is-window": true - } - }, - "is-in-browser": { - "globals": { - "document": true - } - }, - "is-ip": { - "packages": { - "ip-regex": true - } - }, - "is-ipfs": { - "packages": { - "bs58": true, - "buffer": true, - "cids": true, - "mafmt": true, - "multiaddr": true, - "multibase": true, - "multihashes": true - } - }, - "is-lower-case": { - "packages": { - "lower-case": true - } - }, - "is-regex": { - "packages": { - "call-bind": true, - "has-symbols": true - } - }, - "is-upper-case": { - "packages": { - "upper-case": true - } - }, - "iso-random-stream": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "buffer": true - } - }, - "iso-url": { - "globals": { - "URL": true, - "URLSearchParams": true, - "location": true - } - }, - "isomorphic-fetch": { - "globals": { - "fetch.bind": true - }, - "packages": { - "whatwg-fetch": true - } - }, - "js-base64": { - "globals": { - "Base64": "write", - "TextDecoder": true, - "TextEncoder": true, - "atob": true, - "btoa": true, - "define": true - }, - "packages": { - "buffer": true - } - }, - "js-sha256": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "js-sha3": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "jsbi": { - "globals": { - "define": true - } - }, - "json-pointer": { - "packages": { - "foreach": true + "nock>deep-equal>object-keys": true } }, "json-rpc-engine": { "packages": { - "@metamask/safe-event-emitter": true, "eth-rpc-errors": true, - "safe-event-emitter": true + "json-rpc-engine>@metamask/safe-event-emitter": true } }, - "json-rpc-middleware-stream": { + "json-rpc-engine>@metamask/safe-event-emitter": { "globals": { "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "readable-stream": true + "browserify>events": true } }, - "json-stable-stringify": { + "json-rpc-middleware-stream": { "packages": { - "jsonify": true + "readable-stream": true } }, "jsonschema": { "packages": { - "url": true + "browserify>url": true } }, - "jss": { - "globals": { - "CSS": true, - "document.createElement": true, - "document.querySelector": true - }, + "lavamoat>json-stable-stringify": { "packages": { - "@babel/runtime": true, - "is-in-browser": true, - "tiny-warning": true - } - }, - "jss-plugin-camel-case": { - "packages": { - "hyphenate-style-name": true - } - }, - "jss-plugin-default-unit": { - "globals": { - "CSS": true - }, - "packages": { - "jss": true - } - }, - "jss-plugin-global": { - "packages": { - "@babel/runtime": true, - "jss": true - } - }, - "jss-plugin-nested": { - "packages": { - "@babel/runtime": true, - "tiny-warning": true - } - }, - "jss-plugin-rule-value-function": { - "packages": { - "jss": true, - "tiny-warning": true - } - }, - "jss-plugin-vendor-prefixer": { - "packages": { - "css-vendor": true, - "jss": true - } - }, - "just-debounce-it": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "k-bucket": { - "packages": { - "events": true, - "randombytes": true - } - }, - "keccak": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true, - "safe-buffer": true, - "stream-browserify": true - } - }, - "latency-monitor": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "document": true, - "performance": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "debug": true, - "events": true, - "lodash": true, - "process": true - } - }, - "level-codec": { - "packages": { - "buffer": true - } - }, - "level-errors": { - "packages": { - "errno": true - } - }, - "level-iterator-stream": { - "packages": { - "inherits": true, - "readable-stream": true, - "xtend": true - } - }, - "level-js": { - "globals": { - "IDBKeyRange.bound": true, - "IDBKeyRange.lowerBound": true, - "IDBKeyRange.only": true, - "IDBKeyRange.upperBound": true, - "indexedDB": true - }, - "packages": { - "abstract-leveldown": true, - "buffer": true, - "idb-readable-stream": true, - "immediate": true, - "inherits": true, - "is-buffer": true, - "ltgt": true, - "process": true, - "stream-browserify": true, - "typedarray-to-buffer": true, - "util": true, - "xtend": true - } - }, - "level-supports": { - "packages": { - "xtend": true - } - }, - "levelup": { - "packages": { - "assert": true, - "deferred-leveldown": true, - "events": true, - "level-errors": true, - "level-iterator-stream": true, - "process": true, - "util": true, - "xtend": true - } - }, - "libp2p": { - "packages": { - "async": true, - "debug": true, - "err-code": true, - "events": true, - "fsm-event": true, - "is-buffer": true, - "libp2p-connection-manager": true, - "libp2p-floodsub": true, - "libp2p-ping": true, - "libp2p-switch": true, - "libp2p-websockets": true, - "multiaddr": true, - "once": true, - "peer-book": true, - "peer-id": true, - "peer-info": true, - "process": true, - "superstruct": true - } - }, - "libp2p-bootstrap": { - "globals": { - "clearInterval": true, - "setInterval": true - }, - "packages": { - "async": true, - "debug": true, - "events": true, - "mafmt": true, - "multiaddr": true, - "peer-id": true, - "peer-info": true - } - }, - "libp2p-circuit": { - "packages": { - "async": true, - "debug": true, - "events": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-connection-manager": { - "packages": { - "debug": true, - "events": true, - "latency-monitor": true - } - }, - "libp2p-crypto": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "asn1.js": true, - "async": true, - "browserify-aes": true, - "bs58": true, - "buffer": true, - "iso-random-stream": true, - "libp2p-crypto-secp256k1": true, - "multihashing-async": true, - "node-forge": true, - "protons": true, - "tweetnacl": true - } - }, - "libp2p-crypto-secp256k1": { - "packages": { - "async": true, - "bs58": true, - "multihashing-async": true, - "secp256k1": true - } - }, - "libp2p-floodsub": { - "packages": { - "assert": true, - "async": true, - "debug": true, - "libp2p-pubsub": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-identify": { - "globals": { - "console.warn": true - }, - "packages": { - "buffer": true, - "multiaddr": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-kad-dht": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "abort-controller": true, - "assert": true, - "async": true, - "base32.js": true, - "buffer": true, - "cids": true, - "debug": true, - "err-code": true, - "events": true, - "hashlru": true, - "heap": true, - "interface-datastore": true, - "is-buffer": true, - "k-bucket": true, - "libp2p-crypto": true, - "libp2p-record": true, - "multihashes": true, - "multihashing-async": true, - "p-queue": true, - "p-times": true, - "peer-id": true, - "peer-info": true, - "promise-to-callback": true, - "promisify-es6": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true, - "pull-stream-to-async-iterator": true, - "varint": true, - "xor-distance": true - } - }, - "libp2p-keychain": { - "globals": { - "setTimeout": true - }, - "packages": { - "async": true, - "buffer": true, - "err-code": true, - "interface-datastore": true, - "libp2p-crypto": true, - "merge-options": true, - "node-forge": true, - "pull-stream": true, - "sanitize-filename": true - } - }, - "libp2p-ping": { - "packages": { - "debug": true, - "events": true, - "libp2p-crypto": true, - "pull-handshake": true, - "pull-stream": true - } - }, - "libp2p-pubsub": { - "packages": { - "async": true, - "bs58": true, - "buffer": true, - "debug": true, - "err-code": true, - "events": true, - "is-buffer": true, - "libp2p-crypto": true, - "protons": true, - "pull-length-prefixed": true, - "pull-pushable": true, - "pull-stream": true, - "time-cache": true - } - }, - "libp2p-record": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "buffer-split": true, - "err-code": true, - "is-buffer": true, - "multihashing-async": true, - "protons": true - } - }, - "libp2p-secio": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "debug": true, - "interface-connection": true, - "libp2p-crypto": true, - "multihashing-async": true, - "once": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-defer": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-switch": { - "packages": { - "assert": true, - "async": true, - "bignumber.js": true, - "class-is": true, - "debug": true, - "err-code": true, - "events": true, - "fsm-event": true, - "hashlru": true, - "interface-connection": true, - "libp2p-circuit": true, - "libp2p-identify": true, - "moving-average": true, - "multiaddr": true, - "multistream-select": true, - "once": true, - "peer-id": true, - "peer-info": true, - "pull-stream": true, - "retimer": true - } - }, - "libp2p-webrtc-star": { - "packages": { - "async": true, - "class-is": true, - "debug": true, - "events": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "simple-peer": true, - "socket.io-client": true, - "stream-to-pull-stream": true, - "webrtcsupport": true - } - }, - "libp2p-websocket-star": { - "globals": { - "console.error": true - }, - "packages": { - "async": true, - "buffer": true, - "class-is": true, - "debug": true, - "events": true, - "interface-connection": true, - "libp2p-crypto": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "pull-stream": true, - "socket.io-client": true, - "socket.io-pull-stream": true, - "uuid": true - } - }, - "libp2p-websocket-star-multi": { - "globals": { - "setTimeout": true - }, - "packages": { - "async": true, - "debug": true, - "events": true, - "libp2p-websocket-star": true, - "mafmt": true, - "multiaddr": true, - "once": true - } - }, - "libp2p-websockets": { - "packages": { - "class-is": true, - "debug": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "multiaddr-to-uri": true, - "os-browserify": true, - "pull-ws": true - } - }, - "locale-currency": { - "globals": { - "countryCode": true + "lavamoat>json-stable-stringify>jsonify": true } }, "localforage": { @@ -3528,13 +5992,9 @@ } }, "lodash": { - "globals": { - "define": true - } - }, - "lodash.throttle": { "globals": { "clearTimeout": true, + "define": true, "setTimeout": true } }, @@ -3547,213 +6007,12 @@ "log": "write" } }, - "logplease": { - "globals": { - "LOG": true, - "console.error": true, - "console.log": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "process": true, - "util": true - } - }, - "lower-case-first": { - "packages": { - "lower-case": true - } - }, - "lru": { - "packages": { - "events": true, - "inherits": true - } - }, - "lru-cache": { - "packages": { - "yallist": true - } - }, - "ltgt": { - "packages": { - "is-buffer": true - } - }, "luxon": { "globals": { "Intl": true } }, - "mafmt": { - "packages": { - "multiaddr": true - } - }, - "md5": { - "packages": { - "charenc": true, - "crypt": true, - "is-buffer": true - } - }, - "md5.js": { - "packages": { - "hash-base": true, - "inherits": true, - "safe-buffer": true - } - }, - "merge-options": { - "packages": { - "is-plain-obj": true - } - }, - "miller-rabin": { - "packages": { - "bn.js": true, - "brorand": true - } - }, - "mini-create-react-context": { - "packages": { - "@babel/runtime": true, - "gud": true, - "prop-types": true, - "react": true, - "tiny-warning": true - } - }, - "mortice": { - "globals": { - "Worker": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "observable-webworkers": true, - "p-queue": true, - "process": true, - "promise-timeout": true, - "shortid": true - } - }, - "multiaddr": { - "packages": { - "bs58": true, - "buffer": true, - "class-is": true, - "hi-base32": true, - "ip": true, - "is-ip": true, - "varint": true - } - }, - "multiaddr-to-uri": { - "packages": { - "multiaddr": true - } - }, - "multibase": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@multiformats/base-x": true, - "base-x": true, - "buffer": true, - "web-encoding": true - } - }, - "multicodec": { - "packages": { - "buffer": true, - "uint8arrays": true, - "varint": true - } - }, - "multiformats": { - "globals": { - "TextDecoder": true, - "TextEncoder": true, - "console.warn": true - } - }, - "multihashes": { - "packages": { - "bs58": true, - "buffer": true, - "multibase": true, - "uint8arrays": true, - "varint": true, - "web-encoding": true - } - }, - "multihashing-async": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "blakejs": true, - "buffer": true, - "err-code": true, - "js-sha3": true, - "multihashes": true, - "murmurhash3js": true, - "murmurhash3js-revisited": true, - "nodeify": true, - "process": true - } - }, - "multistream-select": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "debug": true, - "err-code": true, - "interface-connection": true, - "once": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true, - "semver": true, - "varint": true - } - }, - "muport-did-resolver": { - "packages": { - "@babel/runtime": true, - "did-resolver": true, - "node-fetch": true - } - }, - "murmurhash3js": { - "globals": { - "define": true - } - }, - "murmurhash3js-revisited": { - "globals": { - "define": true - } - }, - "nanoid": { - "globals": { - "crypto": true, - "msCrypto": true, - "navigator": true - } - }, - "no-case": { - "packages": { - "lower-case": true - } - }, - "node-forge": { + "mockttp>node-forge": { "globals": { "Blob": true, "MutationObserver": true, @@ -3771,364 +6030,65 @@ "setTimeout": true }, "packages": { - "browser-resolve": true, - "process": true, - "timers-browserify": true + "browserify>browser-resolve": true, + "browserify>process": true, + "browserify>timers-browserify": true } }, - "node-interval-tree": { - "packages": { - "shallowequal": true - } - }, - "nodeify": { + "nanoid": { "globals": { - "setTimeout": true - }, - "packages": { - "is-promise": true, - "process": true, - "promise": true, - "timers-browserify": true + "crypto": true, + "msCrypto": true, + "navigator": true } }, - "nofilter": { + "nock>deep-equal": { "packages": { - "buffer": true, - "stream-browserify": true, - "util": true + "enzyme>is-regex": true, + "enzyme>object-is": true, + "nock>deep-equal>is-arguments": true, + "nock>deep-equal>is-date-object": true, + "nock>deep-equal>object-keys": true, + "string.prototype.matchall>regexp.prototype.flags": true + } + }, + "node-fetch": { + "globals": { + "Headers": true, + "Request": true, + "Response": true, + "fetch": true } }, "nonce-tracker": { "packages": { - "assert": true, "await-semaphore": true, + "browserify>assert": true, "ethjs-query": true } }, - "number-to-bn": { - "packages": { - "bn.js": true, - "strip-hex-prefix": true - } - }, "obj-multiplex": { "globals": { "console.warn": true }, "packages": { "end-of-stream": true, - "once": true, + "pump>once": true, "readable-stream": true } }, - "obs-store": { - "packages": { - "safe-event-emitter": true, - "xtend": true - } - }, - "once": { - "packages": { - "wrappy": true - } - }, - "orbit-db": { - "globals": { - "console.log": true - }, - "packages": { - "cids": true, - "ipfs-pubsub-1on1": true, - "logplease": true, - "multihashes": true, - "orbit-db-access-controllers": true, - "orbit-db-cache": true, - "orbit-db-counterstore": true, - "orbit-db-docstore": true, - "orbit-db-eventstore": true, - "orbit-db-feedstore": true, - "orbit-db-identity-provider": true, - "orbit-db-io": true, - "orbit-db-keystore": true, - "orbit-db-kvstore": true, - "orbit-db-pubsub": true, - "path-browserify": true - } - }, - "orbit-db-access-controllers": { - "globals": { - "console.log": true - }, - "packages": { - "events": true, - "orbit-db-io": true, - "p-map-series": true, - "path-browserify": true, - "safe-buffer": true - } - }, - "orbit-db-cache": { - "packages": { - "level-js": true, - "logplease": true, - "path-browserify": true - } - }, - "orbit-db-counterstore": { - "packages": { - "crdts": true, - "orbit-db-store": true - } - }, - "orbit-db-docstore": { - "packages": { - "orbit-db-store": true, - "p-map": true, - "readable-stream": true - } - }, - "orbit-db-eventstore": { - "packages": { - "orbit-db-store": true - } - }, - "orbit-db-feedstore": { - "packages": { - "orbit-db-eventstore": true - } - }, - "orbit-db-identity-provider": { - "packages": { - "orbit-db-keystore": true - } - }, - "orbit-db-io": { - "packages": { - "buffer": true, - "cids": true, - "ipld-dag-pb": true - } - }, - "orbit-db-keystore": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "elliptic": true, - "level-js": true, - "levelup": true, - "libp2p-crypto": true, - "lru": true, - "safe-buffer": true, - "secp256k1": true - } - }, - "orbit-db-kvstore": { - "packages": { - "orbit-db-store": true - } - }, - "orbit-db-pubsub": { - "packages": { - "buffer": true, - "ipfs-pubsub-peer-monitor": true, - "logplease": true, - "p-series": true - } - }, - "orbit-db-store": { - "globals": { - "clearInterval": true, - "console.error": true, - "console.warn": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "events": true, - "ipfs-log": true, - "logplease": true, - "orbit-db-io": true, - "p-each-series": true, - "p-map": true, - "readable-stream": true - } - }, - "os-browserify": { - "globals": { - "location": true, - "navigator": true - } - }, - "p-each-series": { - "packages": { - "p-reduce": true - } - }, - "p-map-series": { - "packages": { - "p-reduce": true - } - }, - "p-queue": { - "globals": { - "clearInterval": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "eventemitter3": true - } - }, - "p-series": { - "packages": { - "@sindresorhus/is": true, - "p-reduce": true - } - }, - "p-times": { - "packages": { - "p-map": true - } - }, - "param-case": { - "packages": { - "no-case": true - } - }, - "parse-asn1": { - "packages": { - "asn1.js": true, - "browserify-aes": true, - "buffer": true, - "evp_bytestokey": true, - "pbkdf2": true - } - }, - "pascal-case": { - "packages": { - "camel-case": true, - "upper-case-first": true - } - }, - "path-browserify": { - "packages": { - "process": true - } - }, - "path-case": { - "packages": { - "no-case": true - } - }, - "path-to-regexp": { - "packages": { - "isarray": true - } - }, - "pbkdf2": { - "globals": { - "crypto": true, - "process": true - }, - "packages": { - "create-hash": true, - "process": true, - "ripemd160": true, - "safe-buffer": true, - "sha.js": true - } - }, - "peek-stream": { - "packages": { - "buffer": true, - "buffer-from": true, - "duplexify": true, - "through2": true - } - }, - "peer-book": { - "packages": { - "bs58": true, - "is-buffer": true, - "peer-id": true, - "peer-info": true - } - }, - "peer-id": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "class-is": true, - "libp2p-crypto": true, - "multihashes": true - } - }, - "peer-info": { - "packages": { - "assert": true, - "multiaddr": true, - "peer-id": true, - "unique-by": true - } - }, - "popper.js": { - "globals": { - "MSInputMethodContext": true, - "Node.DOCUMENT_POSITION_FOLLOWING": true, - "cancelAnimationFrame": true, - "console.warn": true, - "define": true, - "devicePixelRatio": true, - "document": true, - "getComputedStyle": true, - "innerHeight": true, - "innerWidth": true, - "navigator": true, - "requestAnimationFrame": true, - "setTimeout": true - } - }, - "precond": { - "packages": { - "util": true - } - }, - "process": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "process-nextick-args": { - "packages": { - "process": true - } - }, - "promise": { - "globals": { - "setImediate": true, - "setTimeout": true - }, - "packages": { - "is-promise": true, - "process": true - } - }, - "promise-timeout": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, "promise-to-callback": { "packages": { - "is-fn": true, - "set-immediate-shim": true + "promise-to-callback>is-fn": true, + "promise-to-callback>set-immediate-shim": true + } + }, + "promise-to-callback>set-immediate-shim": { + "globals": { + "setTimeout.apply": true + }, + "packages": { + "browserify>timers-browserify": true } }, "prop-types": { @@ -4136,28 +6096,13 @@ "console": true }, "packages": { - "object-assign": true, - "react-is": true + "prop-types>react-is": true, + "react>object-assign": true } }, - "protons": { - "packages": { - "buffer": true, - "is-buffer": true, - "protocol-buffers-schema": true, - "safe-buffer": true, - "signed-varint": true, - "varint": true - } - }, - "public-encrypt": { - "packages": { - "bn.js": true, - "browserify-rsa": true, - "buffer": true, - "create-hash": true, - "parse-asn1": true, - "randombytes": true + "prop-types>react-is": { + "globals": { + "console": true } }, "pubnub": { @@ -4178,110 +6123,40 @@ "setTimeout": true } }, - "pull-handshake": { - "packages": { - "pull-cat": true, - "pull-pair": true, - "pull-pushable": true, - "pull-reader": true - } - }, - "pull-length-prefixed": { - "packages": { - "pull-pushable": true, - "pull-reader": true, - "safe-buffer": true, - "varint": true - } - }, - "pull-mplex": { - "packages": { - "async": true, - "buffer": true, - "debug": true, - "events": true, - "interface-connection": true, - "looper": true, - "pull-abortable": true, - "pull-pushable": true, - "pull-stream": true, - "pull-through": true, - "varint": true - } - }, - "pull-reader": { + "pubnub>cbor-sync": { "globals": { - "cb": true, + "define": true + }, + "packages": { + "browserify>buffer": true + } + }, + "pubnub>superagent": { + "globals": { + "ActiveXObject": true, + "XMLHttpRequest": true, + "btoa": true, "clearTimeout": true, + "console.error": true, + "console.trace": true, + "console.warn": true, "setTimeout": true }, "packages": { - "buffer": true - } - }, - "pull-sort": { - "packages": { - "pull-defer": true, - "pull-stream": true - } - }, - "pull-stream": { - "globals": { - "console.log": true - } - }, - "pull-stream-to-async-iterator": { - "packages": { - "pull-stream": true - } - }, - "pull-stream-to-stream": { - "packages": { - "process": true, - "stream-browserify": true, - "timers-browserify": true - } - }, - "pull-through": { - "packages": { - "looper": true - } - }, - "pull-ws": { - "globals": { - "WebSocket": true, - "location": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "https-browserify": true, - "process": true, - "relative-url": true, - "safe-buffer": true, - "stream-http": true, - "timers-browserify": true, - "url": true + "pubnub>superagent>component-emitter": true } }, "pump": { "packages": { - "browser-resolve": true, + "browserify>browser-resolve": true, + "browserify>process": true, "end-of-stream": true, - "once": true, - "process": true + "pump>once": true } }, - "pumpify": { + "pump>once": { "packages": { - "duplexify": true, - "inherits": true, - "pump": true - } - }, - "punycode": { - "globals": { - "define": true + "pump>once>wrappy": true } }, "qrcode-generator": { @@ -4296,39 +6171,13 @@ }, "packages": { "prop-types": true, - "qr.js": true, + "qrcode.react>qr.js": true, "react": true } }, - "rabin-wasm": { - "globals": { - "Blob": true, - "Response": true, - "WebAssembly": true - }, + "rc>deep-extend": { "packages": { - "assemblyscript": true - } - }, - "randombytes": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "process": true, - "safe-buffer": true - } - }, - "randomfill": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "process": true, - "randombytes": true, - "safe-buffer": true + "browserify>buffer": true } }, "react": { @@ -4336,8 +6185,25 @@ "console": true }, "packages": { - "object-assign": true, - "prop-types": true + "prop-types": true, + "react>object-assign": true + } + }, + "react-devtools": { + "packages": { + "react-devtools>react-devtools-core": true + } + }, + "react-devtools>ip": { + "packages": { + "browserify>buffer": true, + "browserify>os-browserify": true + } + }, + "react-devtools>react-devtools-core": { + "globals": { + "WebSocket": true, + "setTimeout": true } }, "react-dnd": { @@ -4345,14 +6211,14 @@ "console.error": true }, "packages": { - "disposables": true, - "dnd-core": true, - "hoist-non-react-statics": true, - "invariant": true, "lodash": true, "prop-types": true, "react": true, - "shallowequal": true + "react-dnd>disposables": true, + "react-dnd>dnd-core": true, + "react-dnd>hoist-non-react-statics": true, + "react-dnd>invariant": true, + "react-dnd>shallowequal": true } }, "react-dnd-html5-backend": { @@ -4366,8 +6232,26 @@ "setTimeout": true } }, + "react-dnd>dnd-core": { + "packages": { + "lodash": true, + "react-dnd>dnd-core>asap": true, + "react-dnd>invariant": true, + "redux": true + } + }, + "react-dnd>dnd-core>asap": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "document.createTextNode": true, + "setInterval": true, + "setTimeout": true + } + }, "react-dom": { "globals": { + "HTMLIFrameElement": true, "MSApp": true, "__REACT_DEVTOOLS_GLOBAL_HOOK__": true, "addEventListener": true, @@ -4388,28 +6272,22 @@ "trustedTypes": true }, "packages": { - "object-assign": true, "prop-types": true, "react": true, - "scheduler": true + "react-dom>scheduler": true, + "react>object-assign": true } }, - "react-easy-swipe": { + "react-dom>scheduler": { "globals": { - "addEventListener": true, - "define": true, - "document.addEventListener": true, - "document.removeEventListener": true - }, - "packages": { - "prop-types": true, - "react": true - } - }, - "react-fast-compare": { - "globals": { - "Element": true, - "console.warn": true + "MessageChannel": true, + "cancelAnimationFrame": true, + "clearTimeout": true, + "console": true, + "navigator": true, + "performance": true, + "requestAnimationFrame": true, + "setTimeout": true } }, "react-idle-timer": { @@ -4435,15 +6313,19 @@ "Node.TEXT_NODE": true }, "packages": { - "babel-runtime": true, - "is-dom": true, + "ethjs-query>babel-runtime": true, "prop-types": true, - "react": true + "react": true, + "react-inspector>is-dom": true } }, - "react-is": { + "react-inspector>is-dom": { "globals": { - "console": true + "Node": true + }, + "packages": { + "proxyquire>fill-keys>is-object": true, + "react-inspector>is-dom>is-window": true } }, "react-popper": { @@ -4453,8 +6335,19 @@ "packages": { "@popperjs/core": true, "react": true, - "react-fast-compare": true, - "warning": true + "react-popper>react-fast-compare": true, + "react-popper>warning": true + } + }, + "react-popper>react-fast-compare": { + "globals": { + "Element": true, + "console.warn": true + } + }, + "react-popper>warning": { + "globals": { + "console": true } }, "react-redux": { @@ -4464,14 +6357,19 @@ }, "packages": { "@babel/runtime": true, - "hoist-non-react-statics": true, "prop-types": true, + "prop-types>react-is": true, "react": true, "react-dom": true, - "react-is": true, + "react-redux>hoist-non-react-statics": true, "redux": true } }, + "react-redux>hoist-non-react-statics": { + "packages": { + "prop-types>react-is": true + } + }, "react-responsive-carousel": { "globals": { "HTMLElement": true, @@ -4485,30 +6383,90 @@ "classnames": true, "react": true, "react-dom": true, - "react-easy-swipe": true + "react-responsive-carousel>react-easy-swipe": true } }, - "react-router": { + "react-responsive-carousel>react-easy-swipe": { + "globals": { + "addEventListener": true, + "define": true, + "document.addEventListener": true, + "document.removeEventListener": true + }, "packages": { - "history": true, - "hoist-non-react-statics": true, - "mini-create-react-context": true, - "path-to-regexp": true, "prop-types": true, - "react": true, - "react-is": true, - "tiny-invariant": true, - "tiny-warning": true + "react": true } }, "react-router-dom": { "packages": { - "history": true, "prop-types": true, "react": true, - "react-router": true, - "tiny-invariant": true, - "tiny-warning": true + "react-router-dom>history": true, + "react-router-dom>react-router": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>history": { + "globals": { + "addEventListener": true, + "confirm": true, + "document": true, + "history": true, + "location": true, + "navigator.userAgent": true, + "removeEventListener": true + }, + "packages": { + "react-router-dom>history>resolve-pathname": true, + "react-router-dom>history>value-equal": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>react-router": { + "packages": { + "prop-types": true, + "prop-types>react-is": true, + "react": true, + "react-redux>hoist-non-react-statics": true, + "react-router-dom>react-router>history": true, + "react-router-dom>react-router>mini-create-react-context": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true, + "sinon>nise>path-to-regexp": true + } + }, + "react-router-dom>react-router>history": { + "globals": { + "addEventListener": true, + "confirm": true, + "document": true, + "history": true, + "location": true, + "navigator.userAgent": true, + "removeEventListener": true + }, + "packages": { + "react-router-dom>history>resolve-pathname": true, + "react-router-dom>history>value-equal": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>react-router>mini-create-react-context": { + "packages": { + "@babel/runtime": true, + "@storybook/api>@reach/router>create-react-context>gud": true, + "prop-types": true, + "react": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>tiny-warning": { + "globals": { + "console": true } }, "react-simple-file-input": { @@ -4544,9 +6502,26 @@ "setTimeout": true }, "packages": { - "popper.js": true, "react": true, - "react-dom": true + "react-dom": true, + "react-tippy>popper.js": true + } + }, + "react-tippy>popper.js": { + "globals": { + "MSInputMethodContext": true, + "Node.DOCUMENT_POSITION_FOLLOWING": true, + "cancelAnimationFrame": true, + "console.warn": true, + "define": true, + "devicePixelRatio": true, + "document": true, + "getComputedStyle": true, + "innerHeight": true, + "innerWidth": true, + "navigator.userAgent": true, + "requestAnimationFrame": true, + "setTimeout": true } }, "react-toggle-button": { @@ -4563,47 +6538,65 @@ }, "react-transition-group": { "globals": { - "Element": true, "clearTimeout": true, "setTimeout": true }, "packages": { - "chain-function": true, - "dom-helpers": true, "prop-types": true, "react": true, "react-dom": true, - "warning": true + "react-transition-group>chain-function": true, + "react-transition-group>dom-helpers": true, + "react-transition-group>warning": true + } + }, + "react-transition-group>dom-helpers": { + "globals": { + "document": true, + "setTimeout": true + }, + "packages": { + "@babel/runtime": true + } + }, + "react-transition-group>warning": { + "globals": { + "console": true } }, "readable-stream": { "packages": { - "browser-resolve": true, - "buffer": true, - "core-util-is": true, - "events": true, - "inherits": true, - "isarray": true, - "process": true, - "process-nextick-args": true, - "safe-buffer": true, - "string_decoder": true, - "timers-browserify": true, - "util-deprecate": true + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>timers-browserify": true, + "pumpify>inherits": true, + "readable-stream>core-util-is": true, + "readable-stream>isarray": true, + "readable-stream>process-nextick-args": true, + "readable-stream>safe-buffer": true, + "readable-stream>string_decoder": true } }, - "readable-web-to-node-stream": { + "readable-stream>core-util-is": { "packages": { - "readable-stream": true + "browserify>insert-module-globals>is-buffer": true } }, - "receptacle": { - "globals": { - "clearTimeout": true, - "setTimeout": true - }, + "readable-stream>process-nextick-args": { "packages": { - "ms": true + "browserify>process": true + } + }, + "readable-stream>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "readable-stream>string_decoder": { + "packages": { + "readable-stream>safe-buffer": true } }, "redux": { @@ -4614,324 +6607,60 @@ "@babel/runtime": true } }, - "regenerator-runtime": { - "globals": { - "regeneratorRuntime": "write" - } - }, - "regexp.prototype.flags": { - "packages": { - "call-bind": true, - "define-properties": true - } - }, - "relative-url": { - "packages": { - "url": true - } - }, - "retimer": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "ripemd160": { - "packages": { - "buffer": true, - "hash-base": true, - "inherits": true - } - }, - "rlp": { - "globals": { - "TextEncoder": true - }, - "packages": { - "bn.js": true, - "buffer": true - } - }, - "rlp-browser": { - "packages": { - "assert": true, - "buffer": true - } - }, - "safe-buffer": { - "packages": { - "buffer": true - } - }, "safe-event-emitter": { "globals": { "setTimeout": true }, "packages": { - "events": true, - "util": true - } - }, - "sanitize-filename": { - "packages": { - "truncate-utf8-bytes": true - } - }, - "scheduler": { - "globals": { - "MessageChannel": true, - "cancelAnimationFrame": true, - "clearTimeout": true, - "console": true, - "navigator": true, - "performance": true, - "requestAnimationFrame": true, - "setTimeout": true - } - }, - "scrypt-js": { - "globals": { - "define": true, - "setTimeout": true - }, - "packages": { - "timers-browserify": true - } - }, - "scryptsy": { - "packages": { - "buffer": true, - "pbkdf2": true - } - }, - "secp256k1": { - "packages": { - "bip66": true, - "bn.js": true, - "create-hash": true, - "drbg.js": true, - "elliptic": true, - "is-buffer": true, - "safe-buffer": true - } - }, - "semaphore": { - "globals": { - "define": true, - "setTimeout": true - }, - "packages": { - "process": true + "3box>events": true, + "browserify>util": true } }, "semver": { - "globals": { - "console": true - }, - "packages": { - "lru-cache": true, - "process": true - } - }, - "sentence-case": { - "packages": { - "no-case": true, - "upper-case-first": true - } - }, - "set-immediate-shim": { - "globals": { - "setTimeout.apply": true - }, - "packages": { - "timers-browserify": true - } - }, - "sha.js": { - "packages": { - "inherits": true, - "safe-buffer": true - } - }, - "shortid": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "nanoid": true - } - }, - "signed-varint": { - "packages": { - "varint": true - } - }, - "simple-peer": { - "globals": { - "clearInterval": true, - "console.warn": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "debug": true, - "get-browser-rtc": true, - "inherits": true, - "randombytes": true, - "readable-stream": true - } - }, - "snake-case": { - "packages": { - "no-case": true - } - }, - "socket.io-client": { - "globals": { - "clearTimeout": true, - "location": true, - "setTimeout": true - }, - "packages": { - "backo2": true, - "component-bind": true, - "component-emitter": true, - "debug": true, - "engine.io-client": true, - "has-binary2": true, - "indexof": true, - "parseqs": true, - "parseuri": true, - "socket.io-parser": true, - "to-array": true - } - }, - "socket.io-parser": { - "globals": { - "Blob": true, - "File": true, - "FileReader": true - }, - "packages": { - "buffer": true, - "component-emitter": true, - "debug": true, - "isarray": true - } - }, - "socket.io-pull-stream": { "globals": { "console.error": true }, "packages": { - "buffer": true, - "data-queue": true, - "debug": true, - "pull-stream": true, - "uuid": true + "browserify>process": true, + "semver>lru-cache": true } }, - "sort-keys": { + "semver>lru-cache": { "packages": { - "is-plain-obj": true + "semver>lru-cache>yallist": true } }, - "stable": { - "globals": { - "define": true - } - }, - "store": { - "globals": { - "ActiveXObject": true, - "console": true - } - }, - "stream-browserify": { + "sinon>nise>path-to-regexp": { "packages": { - "events": true, - "inherits": true, - "readable-stream": true + "sinon>nise>path-to-regexp>isarray": true } }, - "stream-http": { - "globals": { - "AbortController": true, - "Blob": true, - "MSStreamReader": true, - "ReadableStream": true, - "WritableStream": true, - "XDomainRequest": true, - "XMLHttpRequest": true, - "clearTimeout": true, - "fetch": true, - "location.protocol.search": true, - "setTimeout": true - }, + "source-map-explorer>btoa": { "packages": { - "buffer": true, - "builtin-status-codes": true, - "inherits": true, - "process": true, - "readable-stream": true, - "url": true, - "xtend": true + "browserify>buffer": true } }, - "stream-to-pull-stream": { - "globals": { - "console.error": true - }, + "string.prototype.matchall>call-bind": { "packages": { - "looper": true, - "process": true, - "pull-stream": true + "eslint-plugin-react>array-includes>get-intrinsic": true, + "mocha>object.assign>function-bind": true } }, - "string_decoder": { + "string.prototype.matchall>regexp.prototype.flags": { "packages": { - "safe-buffer": true + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true } }, - "strip-hex-prefix": { + "stylelint>write-file-atomic>typedarray-to-buffer": { "packages": { - "is-hex-prefixed": true + "browserify>buffer": true, + "jsdom>request>is-typedarray": true } }, - "superagent": { - "globals": { - "ActiveXObject": true, - "XMLHttpRequest": true, - "btoa": true, - "clearTimeout": true, - "console.error": true, - "console.trace": true, - "console.warn": true, - "setTimeout": true - }, + "terser>source-map-support>buffer-from": { "packages": { - "component-emitter": true - } - }, - "swap-case": { - "packages": { - "lower-case": true, - "upper-case": true - } - }, - "tar-stream": { - "packages": { - "bl": true, - "buffer": true, - "end-of-stream": true, - "fs-constants": true, - "inherits": true, - "process": true, - "readable-stream": true, - "string_decoder": true, - "util": true + "browserify>buffer": true } }, "textarea-caret": { @@ -4945,248 +6674,36 @@ "mozInnerScreenX": true } }, - "through": { - "packages": { - "process": true, - "stream-browserify": true - } - }, - "through2": { - "packages": { - "process": true, - "readable-stream": true, - "util": true, - "xtend": true - } - }, - "time-cache": { - "packages": { - "lodash.throttle": true - } - }, - "timers-browserify": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "process": true - } - }, - "tiny-warning": { - "globals": { - "console": true - } - }, - "title-case": { - "packages": { - "no-case": true, - "upper-case": true - } - }, - "toggle-selection": { - "globals": { - "document.activeElement": true, - "document.getSelection": true - } - }, - "trezor-connect": { - "globals": { - "__TREZOR_CONNECT_SRC": true, - "addEventListener": true, - "btoa": true, - "chrome": true, - "clearInterval": true, - "clearTimeout": true, - "console": true, - "document.body": true, - "document.createElement": true, - "document.createTextNode": true, - "document.getElementById": true, - "document.querySelectorAll": true, - "location": true, - "navigator": true, - "open": true, - "removeEventListener": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "@babel/runtime": true, - "@metamask/eth-sig-util": true, - "cross-fetch": true, - "events": true - } - }, - "truncate-utf8-bytes": { - "packages": { - "utf8-byte-length": true - } - }, - "tslib": { - "globals": { - "define": true - } - }, - "tweetnacl": { - "globals": { - "crypto": true, - "msCrypto": true, - "nacl": "write" - }, - "packages": { - "browser-resolve": true - } - }, - "tweetnacl-util": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "browser-resolve": true - } - }, - "typedarray-to-buffer": { - "packages": { - "buffer": true, - "is-typedarray": true - } - }, - "typical": { - "globals": { - "define": true - } - }, - "uint8arrays": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "multibase": true, - "web-encoding": true - } - }, - "unorm": { - "globals": { - "define": true - } - }, - "uport-base64url": { - "packages": { - "buffer": true - } - }, - "upper-case-first": { - "packages": { - "upper-case": true - } - }, - "url": { - "packages": { - "punycode": true, - "querystring-es3": true - } - }, - "utf8": { - "globals": { - "define": true - } - }, - "util": { - "globals": { - "console.error": true, - "console.log": true, - "console.trace": true, - "process": true - }, - "packages": { - "inherits": true, - "process": true - } - }, - "util-deprecate": { - "globals": { - "console.trace": true, - "console.warn": true, - "localStorage": true - } - }, "uuid": { "globals": { "crypto": true, "msCrypto": true } }, - "varint-decoder": { + "vinyl>clone": { "packages": { - "is-buffer": true, - "varint": true + "browserify>buffer": true } }, - "vm-browserify": { - "globals": { - "document.body.appendChild": true, - "document.body.removeChild": true, - "document.createElement": true - } - }, - "warning": { - "globals": { - "console": true - } - }, - "web-encoding": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, + "vinyl>cloneable-readable>process-nextick-args": { "packages": { - "util": true + "browserify>process": true } }, "web3": { "globals": { "Web3": "write", - "XMLHttpRequest": "write", + "XMLHttpRequest": true, "clearTimeout": true, "console.error": true, "setTimeout": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "crypto-js": true, - "utf8": true, - "xhr2-cookies": true - } - }, - "web3-provider-engine": { - "globals": { - "WebSocket": true, - "console": true, - "setTimeout": true - }, - "packages": { - "@ethereumjs/tx": true, - "async": true, - "backoff": true, - "browser-resolve": true, - "buffer": true, - "eth-block-tracker": true, - "eth-json-rpc-filters": true, - "eth-json-rpc-infura": true, - "eth-json-rpc-middleware": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "events": true, - "json-stable-stringify": true, - "semaphore": true, - "util": true, - "xtend": true + "browserify>buffer": true, + "web3>bignumber.js": true, + "web3>crypto-js": true, + "web3>utf8": true, + "web3>xhr2-cookies": true } }, "web3-stream-provider": { @@ -5194,24 +6711,52 @@ "setTimeout": true }, "packages": { + "browserify>util": true, "readable-stream": true, - "util": true, - "uuid": true + "web3-stream-provider>uuid": true } }, - "web3-utils": { + "web3-stream-provider>uuid": { "globals": { - "setTimeout": true + "crypto": true, + "msCrypto": true + } + }, + "web3>bignumber.js": { + "globals": { + "define": true }, "packages": { - "bn.js": true, - "eth-lib": true, - "ethereum-bloom-filters": true, - "ethjs-unit": true, - "is-buffer": true, - "number-to-bn": true, - "randombytes": true, - "utf8": true + "browserify>crypto-browserify": true + } + }, + "web3>crypto-js": { + "globals": { + "define": true + } + }, + "web3>utf8": { + "globals": { + "define": true + } + }, + "web3>xhr2-cookies": { + "globals": { + "console.warn": true + }, + "packages": { + "browserify>buffer": true, + "browserify>https-browserify": true, + "browserify>os-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>url": true, + "web3>xhr2-cookies>cookiejar": true + } + }, + "web3>xhr2-cookies>cookiejar": { + "globals": { + "console.warn": true } }, "webextension-polyfill": { @@ -5223,61 +6768,9 @@ "define": true } }, - "webrtcsupport": { - "globals": { - "AudioContext": true, - "MediaStream": true, - "RTCIceCandidate": true, - "RTCPeerConnection": true, - "RTCSessionDescription": true, - "document": true, - "location.protocol": true, - "mozRTCIceCandidate": true, - "mozRTCPeerConnection": true, - "mozRTCSessionDescription": true, - "navigator.getUserMedia": true, - "navigator.mozGetUserMedia": true, - "navigator.msGetUserMedia": true, - "navigator.userAgent.match": true, - "navigator.webkitGetUserMedia": true, - "webkitAudioContext": true, - "webkitMediaStream": true, - "webkitRTCPeerConnection": true - } - }, - "whatwg-fetch": { - "globals": { - "Blob": true, - "FileReader": true, - "FormData": true, - "URLSearchParams.prototype.isPrototypeOf": true, - "XMLHttpRequest": true, - "define": true, - "setTimeout": true - } - }, - "xhr2": { - "globals": { - "XMLHttpRequest": true - } - }, - "xhr2-cookies": { - "globals": { - "console.warn": true - }, + "webpack>memory-fs>errno": { "packages": { - "buffer": true, - "cookiejar": true, - "https-browserify": true, - "os-browserify": true, - "process": true, - "stream-http": true, - "url": true - } - }, - "xor-distance": { - "packages": { - "buffer": true + "webpack>memory-fs>errno>prr": true } } } diff --git a/lavamoat/browserify/main/policy-override.json b/lavamoat/browserify/main/policy-override.json deleted file mode 100644 index a3d850f83..000000000 --- a/lavamoat/browserify/main/policy-override.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "resources": { - "browser-resolve": { - "packages": { - "core-js": true - } - }, - "babel-runtime": { - "packages": { - "@babel/runtime": true - } - }, - "keccak": { - "packages": { - "readable-stream": true - } - }, - "node-fetch": { - "globals": { - "fetch": true - } - }, - "lodash": { - "globals": { - "setTimeout": true, - "clearTimeout": true - } - }, - "@ethersproject/random": { - "globals": { - "crypto.getRandomValues": true - } - }, - "browser-passworder": { - "globals": { - "crypto": true - } - }, - "randombytes": { - "globals": { - "crypto.getRandomValues": true - } - }, - "extensionizer": { - "globals": { - "console": true - } - }, - "web3": { - "globals": { - "XMLHttpRequest": true - } - }, - "storage": { - "globals": { - "localStorage": true - } - } - } -} diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index c343f5241..5c5475cb5 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -9,62 +9,2200 @@ "setTimeout": true }, "packages": { - "3box-orbitdb-plugins": true, - "3id-resolver": true, + "3box>3box-orbitdb-plugins": true, + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>3id-resolver": true, + "3box>did-jwt": true, + "3box>ethers": true, + "3box>ethers>elliptic": true, + "3box>graphql-request": true, + "3box>https-did-resolver": true, + "3box>ipfs": true, + "3box>ipfs-did-document": true, + "3box>ipfs-mini": true, + "3box>ipfs>is-ipfs": true, + "3box>ipfs>multihashes": true, + "3box>js-sha256": true, + "3box>muport-did-resolver": true, + "3box>orbit-db": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-identity-provider": true, + "3box>orbit-db>orbit-db-pubsub": true, + "3box>store": true, + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, "@babel/runtime": true, - "buffer": true, - "did-jwt": true, - "elliptic": true, - "ethers": true, - "graphql-request": true, - "https-did-resolver": true, - "ipfs": true, - "ipfs-did-document": true, - "ipfs-log": true, - "ipfs-mini": true, - "is-ipfs": true, - "js-sha256": true, - "multihashes": true, - "muport-did-resolver": true, - "node-fetch": true, - "orbit-db": true, - "orbit-db-access-controllers": true, - "orbit-db-identity-provider": true, - "orbit-db-pubsub": true, - "process": true, - "store": true, - "tweetnacl": true, - "tweetnacl-util": true + "browserify>buffer": true, + "browserify>process": true, + "node-fetch": true } }, - "3box-orbitdb-plugins": { + "3box>3box-orbitdb-plugins": { "globals": { "console.log": true }, "packages": { - "base64url": true, - "did-jwt": true, - "did-resolver": true, - "events": true, - "ipfs-log": true, - "is-ipfs": true, - "orbit-db-access-controllers": true, - "orbit-db-io": true, - "safe-buffer": true + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>3id-resolver>did-jwt": true, + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ipfs>is-ipfs": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>events": true, + "ethereumjs-wallet>safe-buffer": true } }, - "3id-resolver": { + "3box>3box-orbitdb-plugins>ipfs-log": { + "globals": { + "clearTimeout": true, + "console.warn": true, + "setTimeout": true + }, "packages": { + "3box>3box-orbitdb-plugins>ipfs-log>json-stringify-deterministic": true, + "3box>3box-orbitdb-plugins>ipfs-log>p-map": true, + "3box>3box-orbitdb-plugins>ipfs-log>p-whilst": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>buffer": true, + "jest>@jest/core>p-each-series": true + } + }, + "3box>3id-resolver": { + "packages": { + "3box>3id-resolver>did-jwt": true, + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ipfs-did-document": true, + "@babel/runtime": true + } + }, + "3box>3id-resolver>did-jwt": { + "packages": { + "3box>3id-resolver>did-jwt>base64url": true, + "3box>did-jwt>did-resolver": true, + "3box>ethers>elliptic": true, + "3box>js-sha256": true, + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, "@babel/runtime": true, - "base64url": true, - "did-jwt": true, - "did-resolver": true, - "ipfs-did-document": true + "browserify>buffer": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>3id-resolver>did-jwt>base64url": { + "packages": { + "browserify>buffer": true + } + }, + "3box>did-jwt": { + "packages": { + "3box>did-jwt>@stablelib/utf8": true, + "3box>did-jwt>did-resolver": true, + "3box>did-jwt>js-sha3": true, + "3box>did-jwt>uport-base64url": true, + "3box>ethers>elliptic": true, + "3box>js-sha256": true, + "3box>tweetnacl": true, + "browserify>buffer": true + } + }, + "3box>did-jwt>js-sha3": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>did-jwt>uport-base64url": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ethers": { + "globals": { + "MessageChannel": true, + "XMLHttpRequest": true, + "atob": true, + "btoa": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "crypto.getRandomValues": true, + "define": true, + "setInterval": true, + "setTimeout": true + } + }, + "3box>ethers>elliptic": { + "packages": { + "3box>ethers>elliptic>brorand": true, + "3box>ethers>elliptic>hmac-drbg": true, + "3box>ethers>elliptic>minimalistic-crypto-utils": true, + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true + } + }, + "3box>ethers>elliptic>brorand": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "3box>ethers>elliptic>hmac-drbg": { + "packages": { + "3box>ethers>elliptic>minimalistic-crypto-utils": true, + "3box>ethers>hash.js>minimalistic-assert": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "3box>events": { + "globals": { + "console": true + } + }, + "3box>graphql-request": { + "globals": { + "fetch": true + }, + "packages": { + "3box>graphql-request>cross-fetch": true + } + }, + "3box>graphql-request>cross-fetch": { + "globals": { + "Blob": true, + "FileReader": true, + "FormData": true, + "URLSearchParams.prototype.isPrototypeOf": true, + "XMLHttpRequest": true + } + }, + "3box>graphql-request>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "3box>https-did-resolver": { + "globals": { + "XMLHttpRequest": true + }, + "packages": { + "3box>did-jwt>did-resolver": true, + "browserify>browser-resolve": true + } + }, + "3box>ipfs": { + "globals": { + "AbortController": true, + "clearInterval": true, + "clearTimeout": true, + "console.log": true, + "fetch": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>async-iterator-all": true, + "3box>ipfs>async-iterator-to-pull-stream": true, + "3box>ipfs>async-iterator-to-stream": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>bignumber.js": true, + "3box>ipfs>callbackify": true, + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "3box>ipfs>datastore-core": true, + "3box>ipfs>datastore-pubsub": true, + "3box>ipfs>dlv": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fnv1a": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>human-to-milliseconds": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-bitswap": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipfs-block-service": true, + "3box>ipfs>ipfs-mfs": true, + "3box>ipfs>ipfs-repo": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-exporter": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "3box>ipfs>ipfs-utils": true, + "3box>ipfs>ipld": true, + "3box>ipfs>ipld-dag-cbor": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw": true, + "3box>ipfs>ipns": true, + "3box>ipfs>is-ipfs": true, + "3box>ipfs>is-pull-stream": true, + "3box>ipfs>iso-url": true, + "3box>ipfs>just-flatten-it": true, + "3box>ipfs>kind-of": true, + "3box>ipfs>libp2p": true, + "3box>ipfs>libp2p-bootstrap": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-kad-dht": true, + "3box>ipfs>libp2p-keychain": true, + "3box>ipfs>libp2p-record": true, + "3box>ipfs>libp2p-secio": true, + "3box>ipfs>libp2p-webrtc-star": true, + "3box>ipfs>libp2p-websocket-star-multi": true, + "3box>ipfs>libp2p-websockets": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multiaddr-to-uri": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async": true, + "3box>ipfs>peer-book": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>promisify-es6": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-cat": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-mplex": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-sort": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>pull-stream-to-async-iterator": true, + "3box>ipfs>pull-stream-to-stream": true, + "3box>ipfs>pull-traverse": true, + "3box>ipfs>readable-stream": true, + "3box>ipfs>receptacle": true, + "3box>ipfs>stream-to-pull-stream": true, + "3box>ipfs>superstruct": true, + "3box>ipfs>varint": true, + "@metamask/providers>is-stream": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>timers-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs-mini": { + "globals": { + "XMLHttpRequest": true + } + }, + "3box>ipfs-postmsg-proxy>shortid": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "nanoid": true + } + }, + "3box>ipfs>async": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true, + "browserify>timers-browserify": true, + "lodash": true + } + }, + "3box>ipfs>async-iterator-to-pull-stream": { + "packages": { + "3box>ipfs>async-iterator-to-pull-stream>get-iterator": true, + "3box>ipfs>pull-stream-to-async-iterator": true + } + }, + "3box>ipfs>async-iterator-to-stream": { + "packages": { + "3box>ipfs>async-iterator-to-stream>readable-stream": true, + "browserify>process": true + } + }, + "3box>ipfs>async-iterator-to-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>bl": { + "packages": { + "3box>ipfs>bl>readable-stream": true, + "browserify>buffer": true, + "browserify>util": true + } + }, + "3box>ipfs>bl>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>bs58": { + "packages": { + "3box>ipfs>bs58>base-x": true + } + }, + "3box>ipfs>bs58>base-x": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>cids": { + "packages": { + "3box>ipfs>class-is": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>datastore-core": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>datastore-core>pull-many": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>datastore-pubsub": { + "packages": { + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>multibase": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>dlv": { + "globals": { + "define": true + } + }, + "3box>ipfs>fsm-event": { + "packages": { + "3box>ipfs>fsm-event>fsm": true, + "browserify>assert": true, + "browserify>events": true + } + }, + "3box>ipfs>human-to-milliseconds": { + "packages": { + "3box>ipfs>promisify-es6": true + } + }, + "3box>ipfs>interface-datastore": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore>uuid": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>os-browserify": true, + "browserify>path-browserify": true + } + }, + "3box>ipfs>interface-datastore>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "3box>ipfs>ipfs-bitswap": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>cids": true, + "3box>ipfs>ipfs-bitswap>bignumber.js": true, + "3box>ipfs>ipfs-bitswap>just-debounce-it": true, + "3box>ipfs>ipfs-bitswap>lodash.isequalwith": true, + "3box>ipfs>ipfs-bitswap>moving-average": true, + "3box>ipfs>ipfs-bitswap>multihashing-async": true, + "3box>ipfs>ipfs-bitswap>varint-decoder": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-bitswap>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>ipfs-bitswap>just-debounce-it": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>ipfs-bitswap>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>ipfs-bitswap>varint-decoder": { + "packages": { + "3box>ipfs>varint": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-block": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-block-service": { + "packages": { + "3box>ipfs>async": true + } + }, + "3box>ipfs>ipfs-mfs": { + "globals": { + "Blob": true, + "FileReader": true + }, + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-mfs>async-iterator-last": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-mfs>mortice": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-exporter": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>promisify-es6": true, + "browserify>assert": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-mfs>hamt-sharding": { + "packages": { + "3box>ipfs>ipfs-mfs>hamt-sharding>sparse-array": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-mfs>mortice": { + "globals": { + "Worker": true + }, + "packages": { + "3box>ipfs-postmsg-proxy>shortid": true, + "3box>ipfs>ipfs-mfs>mortice>observable-webworkers": true, + "3box>ipfs>ipfs-mfs>mortice>promise-timeout": true, + "3box>ipfs>libp2p-kad-dht>p-queue": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true + } + }, + "3box>ipfs>ipfs-mfs>mortice>promise-timeout": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>ipfs-repo": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>cids": true, + "3box>ipfs>datastore-core": true, + "3box>ipfs>dlv": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipfs-repo>bignumber.js": true, + "3box>ipfs>ipfs-repo>datastore-level": true, + "3box>ipfs>ipfs-repo>sort-keys": true, + "3box>ipfs>just-safe-set": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>path-browserify": true, + "browserify>timers-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs>ipfs-repo>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level": { + "packages": { + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down": true, + "3box>ipfs>ipfs-repo>datastore-level>level-js": true, + "3box>ipfs>pull-stream": true, + "3box>orbit-db>orbit-db-keystore>levelup": true, + "browserify>buffer": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down": { + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown": true, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>level-codec": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown": { + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown>level-supports": true, + "3box>orbit-db>orbit-db-cache>level-js>immediate": true, + "browserify>buffer": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>abstract-leveldown>level-supports": { + "packages": { + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>encoding-down>level-codec": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.only": true, + "IDBKeyRange.upperBound": true, + "indexedDB.deleteDatabase": true, + "indexedDB.open": true + }, + "packages": { + "3box>ipfs>ipfs-repo>datastore-level>level-js>abstract-leveldown": true, + "3box>ipfs>ipfs-repo>datastore-level>level-js>idb-readable-stream": true, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js>abstract-leveldown": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>datastore-level>level-js>idb-readable-stream": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.upperBound": true + }, + "packages": { + "browserify>stream-browserify": true, + "watchify>xtend": true + } + }, + "3box>ipfs>ipfs-repo>sort-keys": { + "packages": { + "geckodriver>got>is-plain-obj": true + } + }, + "3box>ipfs>ipfs-unixfs": { + "packages": { + "3box>ipfs>protons": true + } + }, + "3box>ipfs>ipfs-unixfs-exporter": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>ipfs-mfs>async-iterator-last": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-importer": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipfs-unixfs-importer": { + "packages": { + "3box>ipfs>async-iterator-all": true, + "3box>ipfs>bl": true, + "3box>ipfs>err-code": true, + "3box>ipfs>ipfs-mfs>hamt-sharding": true, + "3box>ipfs>ipfs-unixfs": true, + "3box>ipfs>ipfs-unixfs-importer>async-iterator-batch": true, + "3box>ipfs>ipfs-unixfs-importer>async-iterator-first": true, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>superstruct": true, + "browserify>buffer": true, + "rc>deep-extend": true + } + }, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm": { + "globals": { + "Blob": true, + "Response": true, + "WebAssembly": true + }, + "packages": { + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm>assemblyscript": true + } + }, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm>assemblyscript": { + "globals": { + "WebAssembly.Instance": true, + "WebAssembly.Module": true, + "WebAssembly.instantiateStreaming": true, + "console.log": true + } + }, + "3box>ipfs>ipfs-utils": { + "globals": { + "FileReader": true + }, + "packages": { + "3box>ipfs>ipfs-utils>is-buffer": true, + "3box>ipfs>ipfs-utils>readable-stream": true, + "3box>ipfs>is-pull-stream": true, + "3box>ipfs>kind-of": true, + "@metamask/providers>is-stream": true + } + }, + "3box>ipfs>ipfs-utils>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>ipld": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipfs-block": true, + "3box>ipfs>ipld-dag-cbor": true, + "3box>ipfs>ipld-dag-pb": true, + "3box>ipfs>ipld-raw": true, + "3box>ipfs>ipld>typical": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>promisify-es6": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipld-dag-cbor": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-dag-cbor>is-circular": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>gridplus-sdk>borc": true + } + }, + "3box>ipfs>ipld-dag-pb": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>class-is": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true, + "3box>ipfs>protons": true, + "@storybook/client-api>stable": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>ipld-raw": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-raw>multihashing-async": true, + "3box>ipfs>multicodec": true + } + }, + "3box>ipfs>ipld-raw>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>err-code": true, + "3box>ipfs>ipld-raw>multihashing-async>murmurhash3js-revisited": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>ipld-raw>multihashing-async>murmurhash3js-revisited": { + "globals": { + "define": true + } + }, + "3box>ipfs>ipld>typical": { + "globals": { + "define": true + } + }, + "3box>ipfs>ipns": { + "packages": { + "3box>ipfs>interface-datastore": true, + "3box>ipfs>ipns>timestamp-nano": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>protons": true, + "base32-encode": true, + "browserify>buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>is-ipfs": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>cids": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multibase": true, + "3box>ipfs>multihashes": true, + "browserify>buffer": true + } + }, + "3box>ipfs>iso-url": { + "globals": { + "URL": true, + "URLSearchParams": true, + "location": true + } + }, + "3box>ipfs>libp2p": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>libp2p-websockets": true, + "3box>ipfs>libp2p>libp2p-connection-manager": true, + "3box>ipfs>libp2p>libp2p-floodsub": true, + "3box>ipfs>libp2p>libp2p-ping": true, + "3box>ipfs>libp2p>libp2p-switch": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-book": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>superstruct": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-bootstrap": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p-crypto": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>libp2p-crypto>asn1.js": true, + "3box>ipfs>libp2p-crypto>iso-random-stream": true, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1": true, + "3box>ipfs>libp2p-crypto>multihashing-async": true, + "3box>ipfs>protons": true, + "3box>tweetnacl": true, + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true, + "mockttp>node-forge": true + } + }, + "3box>ipfs>libp2p-crypto>asn1.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-crypto>iso-random-stream": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1>multihashing-async": true, + "eth-trezor-keyring>hdkey>secp256k1": true + } + }, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-crypto>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-kad-dht": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>base32.js": true, + "3box>ipfs>cids": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-kad-dht>hashlru": true, + "3box>ipfs>libp2p-kad-dht>heap": true, + "3box>ipfs>libp2p-kad-dht>k-bucket": true, + "3box>ipfs>libp2p-kad-dht>multihashing-async": true, + "3box>ipfs>libp2p-kad-dht>p-queue": true, + "3box>ipfs>libp2p-kad-dht>p-times": true, + "3box>ipfs>libp2p-kad-dht>xor-distance": true, + "3box>ipfs>libp2p-record": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multihashes": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>promisify-es6": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>pull-stream-to-async-iterator": true, + "3box>ipfs>varint": true, + "@metamask/controllers>abort-controller": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eslint>debug": true, + "promise-to-callback": true + } + }, + "3box>ipfs>libp2p-kad-dht>heap": { + "globals": { + "define": true + } + }, + "3box>ipfs>libp2p-kad-dht>k-bucket": { + "packages": { + "browserify>events": true, + "ethereumjs-wallet>randombytes": true + } + }, + "3box>ipfs>libp2p-kad-dht>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-kad-dht>p-queue": { + "globals": { + "clearInterval": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "mockttp>@httptoolkit/subscriptions-transport-ws>eventemitter3": true + } + }, + "3box>ipfs>libp2p-kad-dht>p-times": { + "packages": { + "3box>ipfs>libp2p-kad-dht>p-times>p-map": true + } + }, + "3box>ipfs>libp2p-kad-dht>xor-distance": { + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-keychain": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>interface-datastore": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-keychain>sanitize-filename": true, + "3box>ipfs>merge-options": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "mockttp>node-forge": true + } + }, + "3box>ipfs>libp2p-keychain>sanitize-filename": { + "packages": { + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes": true + } + }, + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes": { + "packages": { + "3box>ipfs>libp2p-keychain>sanitize-filename>truncate-utf8-bytes>utf8-byte-length": true + } + }, + "3box>ipfs>libp2p-record": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-record>buffer-split": true, + "3box>ipfs>libp2p-record>multihashing-async": true, + "3box>ipfs>protons": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>libp2p-record>buffer-split": { + "packages": { + "3box>ipfs>libp2p-record>buffer-split>buffer-indexof": true + } + }, + "3box>ipfs>libp2p-record>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-secio": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>multihashing-async": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-secio>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>libp2p-secio>pull-handshake": { + "packages": { + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": true, + "3box>ipfs>pull-cat": true, + "3box>ipfs>pull-mplex>pull-pair": true, + "3box>ipfs>pull-pushable": true + } + }, + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": { + "globals": { + "cb": true, + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-secio>pull-length-prefixed": { + "packages": { + "3box>ipfs>libp2p-secio>pull-handshake>pull-reader": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>varint": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>libp2p-webrtc-star": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-webrtc-star>simple-peer": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": true, + "3box>ipfs>libp2p-webrtc-star>webrtcsupport": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>stream-to-pull-stream": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer": { + "globals": { + "clearInterval": true, + "console.warn": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>simple-peer>get-browser-rtc": true, + "3box>ipfs>libp2p-webrtc-star>simple-peer>readable-stream": true, + "browserify>buffer": true, + "eslint>debug": true, + "ethereumjs-wallet>randombytes": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer>get-browser-rtc": { + "globals": { + "RTCIceCandidate": true, + "RTCPeerConnection": true, + "RTCSessionDescription": true, + "mozRTCIceCandidate": true, + "mozRTCPeerConnection": true, + "mozRTCSessionDescription": true, + "webkitRTCIceCandidate": true, + "webkitRTCPeerConnection": true, + "webkitRTCSessionDescription": true + } + }, + "3box>ipfs>libp2p-webrtc-star>simple-peer>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": { + "globals": { + "clearTimeout": true, + "location": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>component-bind": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>indexof": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseqs": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseuri": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>to-array": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": true, + "mockttp>@httptoolkit/subscriptions-transport-ws>backo2": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client": { + "globals": { + "MozWebSocket": true, + "WebSocket": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "addEventListener": true, + "attachEvent": true, + "clearTimeout": true, + "document": true, + "location": true, + "navigator": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>component-inherit": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>has-cors": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>yeast": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>indexof": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseqs": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>parseuri": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser": { + "globals": { + "FileReader": true, + "btoa": true, + "navigator": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>after": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>arraybuffer.slice": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>blob": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>engine.io>engine.io-parser>base64-arraybuffer": true, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>engine.io-parser>blob": { + "globals": { + "Blob": true, + "MSBlobBuilder": true, + "MozBlobBuilder": true, + "WebKitBlobBuilder": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>engine.io-client>has-cors": { + "globals": { + "XMLHttpRequest": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser": { + "globals": { + "Blob": true, + "File": true, + "FileReader": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>isarray": true, + "browserify>buffer": true, + "pubnub>superagent>component-emitter": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io-client>socket.io-parser>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2": { + "globals": { + "Blob": true, + "File": true + }, + "packages": { + "3box>ipfs>libp2p-webrtc-star>socket.io>has-binary2>isarray": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-webrtc-star>webrtcsupport": { + "globals": { + "AudioContext": true, + "MediaStream": true, + "RTCIceCandidate": true, + "RTCPeerConnection": true, + "RTCSessionDescription": true, + "document": true, + "location.protocol": true, + "mozRTCIceCandidate": true, + "mozRTCPeerConnection": true, + "mozRTCSessionDescription": true, + "navigator.getUserMedia": true, + "navigator.mozGetUserMedia": true, + "navigator.msGetUserMedia": true, + "navigator.userAgent.match": true, + "navigator.webkitGetUserMedia": true, + "webkitAudioContext": true, + "webkitMediaStream": true, + "webkitRTCPeerConnection": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-webrtc-star>socket.io-client": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true, + "uuid": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>data-queue": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>debug": true, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>uuid": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>data-queue": { + "packages": { + "browserify>events": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>debug": { + "globals": { + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "analytics-node>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p-websocket-star-multi>libp2p-websocket-star>socket.io-pull-stream>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "3box>ipfs>libp2p-websockets": { + "packages": { + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-websockets>pull-ws": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>multiaddr-to-uri": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "browserify>os-browserify": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p-websockets>pull-ws": { + "globals": { + "WebSocket": true, + "location": true + }, + "packages": { + "3box>ipfs>libp2p-websockets>pull-ws>relative-url": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>https-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>timers-browserify": true, + "browserify>url": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>libp2p-websockets>pull-ws>relative-url": { + "packages": { + "browserify>url": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager": { + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "document": true, + "performance": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug": true, + "browserify>events": true, + "browserify>process": true, + "lodash": true + } + }, + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug": { + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "3box>ipfs>libp2p>libp2p-connection-manager>latency-monitor>debug>ms": true, + "browserify>process": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>bs58": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache": { + "packages": { + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache>lodash.throttle": true + } + }, + "3box>ipfs>libp2p>libp2p-floodsub>libp2p-pubsub>time-cache>lodash.throttle": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>libp2p>libp2p-ping": { + "packages": { + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>pull-stream": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>libp2p>libp2p-switch": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>err-code": true, + "3box>ipfs>fsm-event": true, + "3box>ipfs>ipfs-bitswap>moving-average": true, + "3box>ipfs>libp2p-kad-dht>hashlru": true, + "3box>ipfs>libp2p>libp2p-switch>bignumber.js": true, + "3box>ipfs>libp2p>libp2p-switch>libp2p-circuit": true, + "3box>ipfs>libp2p>libp2p-switch>libp2p-identify": true, + "3box>ipfs>libp2p>libp2p-switch>multistream-select": true, + "3box>ipfs>libp2p>libp2p-switch>retimer": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>assert": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>libp2p-circuit": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>mafmt": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "browserify>events": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>libp2p-identify": { + "globals": { + "console.warn": true + }, + "packages": { + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "3box>ipfs>protons": true, + "3box>ipfs>pull-stream": true, + "browserify>buffer": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>multistream-select": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>err-code": true, + "3box>ipfs>libp2p-secio>pull-handshake": true, + "3box>ipfs>libp2p-secio>pull-length-prefixed": true, + "3box>ipfs>libp2p>libp2p-switch>multistream-select>semver": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>varint": true, + "browserify>assert": true, + "browserify>buffer": true, + "eslint>debug": true, + "pump>once": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>multistream-select>semver": { + "globals": { + "console": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>ipfs>libp2p>libp2p-switch>retimer": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "3box>ipfs>mafmt": { + "packages": { + "3box>ipfs>multiaddr": true + } + }, + "3box>ipfs>merge-options": { + "packages": { + "geckodriver>got>is-plain-obj": true + } + }, + "3box>ipfs>multiaddr": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>class-is": true, + "3box>ipfs>multiaddr>hi-base32": true, + "3box>ipfs>multiaddr>is-ip": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "react-devtools>ip": true + } + }, + "3box>ipfs>multiaddr-to-uri": { + "packages": { + "3box>ipfs>multiaddr": true + } + }, + "3box>ipfs>multiaddr>hi-base32": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>ipfs>multiaddr>is-ip": { + "packages": { + "chromedriver>tcp-port-used>is2>ip-regex": true + } + }, + "3box>ipfs>multibase": { + "packages": { + "3box>ipfs>multibase>base-x": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multibase>base-x": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>multicodec": { + "packages": { + "3box>ipfs>varint": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multihashes": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>varint": true, + "browserify>buffer": true + } + }, + "3box>ipfs>multihashing-async": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "3box>ipfs>multihashes": true, + "3box>ipfs>multihashing-async>murmurhash3js": true, + "3box>ipfs>multihashing-async>nodeify": true, + "browserify>buffer": true, + "browserify>process": true, + "ethereumjs-util>ethereum-cryptography>blakejs": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "3box>ipfs>multihashing-async>murmurhash3js": { + "globals": { + "define": true + } + }, + "3box>ipfs>multihashing-async>nodeify": { + "globals": { + "setTimeout": true + }, + "packages": { + "3box>ipfs>multihashing-async>nodeify>is-promise": true, + "3box>ipfs>multihashing-async>nodeify>promise": true, + "browserify>process": true, + "browserify>timers-browserify": true + } + }, + "3box>ipfs>multihashing-async>nodeify>promise": { + "globals": { + "setImediate": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>multihashing-async>nodeify>is-promise": true, + "browserify>process": true + } + }, + "3box>ipfs>peer-book": { + "packages": { + "3box>ipfs>bs58": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info": true, + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>ipfs>peer-id": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>class-is": true, + "3box>ipfs>libp2p-crypto": true, + "3box>ipfs>multihashes": true, + "browserify>assert": true, + "browserify>buffer": true + } + }, + "3box>ipfs>peer-info": { + "packages": { + "3box>ipfs>multiaddr": true, + "3box>ipfs>peer-id": true, + "3box>ipfs>peer-info>unique-by": true, + "browserify>assert": true + } + }, + "3box>ipfs>protons": { + "packages": { + "3box>ipfs>protons>protocol-buffers-schema": true, + "3box>ipfs>protons>signed-varint": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>ipfs>protons>signed-varint": { + "packages": { + "3box>ipfs>varint": true + } + }, + "3box>ipfs>pull-mplex": { + "packages": { + "3box>ipfs>async": true, + "3box>ipfs>pull-abortable": true, + "3box>ipfs>pull-mplex>interface-connection": true, + "3box>ipfs>pull-mplex>looper": true, + "3box>ipfs>pull-mplex>pull-through": true, + "3box>ipfs>pull-pushable": true, + "3box>ipfs>pull-stream": true, + "3box>ipfs>varint": true, + "browserify>buffer": true, + "browserify>events": true, + "eslint>debug": true + } + }, + "3box>ipfs>pull-mplex>interface-connection": { + "packages": { + "3box>ipfs>pull-defer": true + } + }, + "3box>ipfs>pull-mplex>pull-through": { + "packages": { + "3box>ipfs>stream-to-pull-stream>looper": true + } + }, + "3box>ipfs>pull-sort": { + "packages": { + "3box>ipfs>pull-defer": true, + "3box>ipfs>pull-stream": true + } + }, + "3box>ipfs>pull-stream": { + "globals": { + "console.log": true + } + }, + "3box>ipfs>pull-stream-to-async-iterator": { + "packages": { + "3box>ipfs>pull-stream": true + } + }, + "3box>ipfs>pull-stream-to-stream": { + "packages": { + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>timers-browserify": true + } + }, + "3box>ipfs>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>ipfs>receptacle": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "analytics-node>ms": true + } + }, + "3box>ipfs>stream-to-pull-stream": { + "globals": { + "console.error": true + }, + "packages": { + "3box>ipfs>pull-stream": true, + "3box>ipfs>stream-to-pull-stream>looper": true, + "browserify>process": true + } + }, + "3box>js-sha256": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>muport-did-resolver": { + "packages": { + "3box>did-jwt>did-resolver": true, + "@babel/runtime": true, + "node-fetch": true + } + }, + "3box>orbit-db": { + "globals": { + "console.log": true + }, + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>multihashes": true, + "3box>orbit-db>ipfs-pubsub-1on1": true, + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-access-controllers": true, + "3box>orbit-db>orbit-db-cache": true, + "3box>orbit-db>orbit-db-counterstore": true, + "3box>orbit-db>orbit-db-docstore": true, + "3box>orbit-db>orbit-db-eventstore": true, + "3box>orbit-db>orbit-db-feedstore": true, + "3box>orbit-db>orbit-db-identity-provider": true, + "3box>orbit-db>orbit-db-io": true, + "3box>orbit-db>orbit-db-keystore": true, + "3box>orbit-db>orbit-db-kvstore": true, + "3box>orbit-db>orbit-db-pubsub": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>ipfs-pubsub-1on1": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "3box>orbit-db>ipfs-pubsub-1on1>safe-buffer": true, + "browserify>events": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>ipfs-pubsub-1on1>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "3box>orbit-db>logplease": { + "globals": { + "LOG": true, + "console.error": true, + "console.log": true + }, + "packages": { + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>util": true + } + }, + "3box>orbit-db>orbit-db-access-controllers": { + "globals": { + "console.log": true + }, + "packages": { + "3box>orbit-db>orbit-db-access-controllers>p-map-series": true, + "3box>orbit-db>orbit-db-io": true, + "browserify>events": true, + "browserify>path-browserify": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>orbit-db>orbit-db-access-controllers>p-map-series": { + "packages": { + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>orbit-db>orbit-db-cache": { + "packages": { + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-cache>level-js": true, + "browserify>path-browserify": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js": { + "globals": { + "IDBKeyRange.bound": true, + "IDBKeyRange.lowerBound": true, + "IDBKeyRange.upperBound": true, + "indexedDB": true + }, + "packages": { + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": true, + "3box>orbit-db>orbit-db-cache>level-js>immediate": true, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "pumpify>inherits": true, + "stylelint>write-file-atomic>typedarray-to-buffer": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>process": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>immediate": { + "globals": { + "MessageChannel": true, + "MutationObserver": true, + "WebKitMutationObserver": true, + "clearTimeout": true, + "document.createElement": true, + "document.createTextNode": true, + "document.documentElement.appendChild": true, + "setImmediate": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true + } + }, + "3box>orbit-db>orbit-db-cache>level-js>ltgt": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "3box>orbit-db>orbit-db-counterstore": { + "packages": { + "3box>orbit-db>orbit-db-counterstore>crdts": true, + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-docstore": { + "packages": { + "3box>orbit-db>orbit-db-docstore>p-map": true, + "3box>orbit-db>orbit-db-store": true, + "readable-stream": true + } + }, + "3box>orbit-db>orbit-db-eventstore": { + "packages": { + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-feedstore": { + "packages": { + "3box>orbit-db>orbit-db-eventstore": true + } + }, + "3box>orbit-db>orbit-db-identity-provider": { + "packages": { + "3box>orbit-db>orbit-db-keystore": true + } + }, + "3box>orbit-db>orbit-db-io": { + "packages": { + "3box>ipfs>cids": true, + "3box>ipfs>ipld-dag-pb": true, + "browserify>buffer": true + } + }, + "3box>orbit-db>orbit-db-keystore": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "3box>ethers>elliptic": true, + "3box>ipfs>libp2p-crypto": true, + "3box>orbit-db>orbit-db-cache>level-js": true, + "3box>orbit-db>orbit-db-keystore>levelup": true, + "3box>orbit-db>orbit-db-keystore>lru": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup": { + "packages": { + "3box>orbit-db>orbit-db-keystore>levelup>deferred-leveldown": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": true, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream": true, + "browserify>assert": true, + "browserify>events": true, + "browserify>process": true, + "browserify>util": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>deferred-leveldown": { + "packages": { + "3box>orbit-db>orbit-db-cache>level-js>abstract-leveldown": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-errors": { + "packages": { + "webpack>memory-fs>errno": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream": { + "packages": { + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream>readable-stream": true, + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "3box>orbit-db>orbit-db-keystore>levelup>level-iterator-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-keystore>lru": { + "packages": { + "browserify>events": true, + "pumpify>inherits": true + } + }, + "3box>orbit-db>orbit-db-kvstore": { + "packages": { + "3box>orbit-db>orbit-db-store": true + } + }, + "3box>orbit-db>orbit-db-pubsub": { + "packages": { + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-pubsub>ipfs-pubsub-peer-monitor": true, + "3box>orbit-db>orbit-db-pubsub>p-series": true, + "browserify>buffer": true + } + }, + "3box>orbit-db>orbit-db-pubsub>ipfs-pubsub-peer-monitor": { + "globals": { + "clearInterval": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "browserify>events": true + } + }, + "3box>orbit-db>orbit-db-pubsub>p-series": { + "packages": { + "3box>orbit-db>orbit-db-pubsub>p-series>@sindresorhus/is": true, + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>orbit-db>orbit-db-pubsub>p-series>@sindresorhus/is": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "browserify>util": true + } + }, + "3box>orbit-db>orbit-db-store": { + "globals": { + "clearInterval": true, + "console.error": true, + "console.warn": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>3box-orbitdb-plugins>ipfs-log": true, + "3box>ipfs>libp2p-kad-dht>p-times>p-map": true, + "3box>orbit-db>logplease": true, + "3box>orbit-db>orbit-db-io": true, + "3box>orbit-db>orbit-db-store>p-each-series": true, + "browserify>buffer": true, + "browserify>events": true, + "readable-stream": true + } + }, + "3box>orbit-db>orbit-db-store>p-each-series": { + "packages": { + "3box>orbit-db>orbit-db-store>p-each-series>p-reduce": true + } + }, + "3box>store": { + "globals": { + "ActiveXObject": true, + "console": true + } + }, + "3box>tweetnacl": { + "globals": { + "crypto": true, + "msCrypto": true, + "nacl": "write" + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "3box>tweetnacl-util": { + "globals": { + "atob": true, + "btoa": true + }, + "packages": { + "browserify>browser-resolve": true } }, "@babel/runtime": { "packages": { - "regenerator-runtime": true + "@storybook/api>regenerator-runtime": true } }, "@download/blockies": { @@ -77,326 +2215,133 @@ "console.warn": true }, "packages": { - "buffer": true, - "cids": true, - "js-base64": true, - "multicodec": true, - "multihashes": true + "@ensdomains/content-hash>cids": true, + "@ensdomains/content-hash>js-base64": true, + "@ensdomains/content-hash>multicodec": true, + "@ensdomains/content-hash>multihashes": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>cids": { + "packages": { + "@ensdomains/content-hash>cids>multibase": true, + "@ensdomains/content-hash>cids>multicodec": true, + "@ensdomains/content-hash>cids>multihashes": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>multibase": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@ensdomains/content-hash>cids>multibase>@multiformats/base-x": true + } + }, + "@ensdomains/content-hash>cids>multicodec": { + "packages": { + "@ensdomains/content-hash>cids>multicodec>varint": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>multihashes": { + "packages": { + "3box>ipfs>varint": true, + "@ensdomains/content-hash>cids>multibase": true, + "@ensdomains/content-hash>cids>uint8arrays": true + } + }, + "@ensdomains/content-hash>cids>uint8arrays": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@ensdomains/content-hash>cids>multibase": true + } + }, + "@ensdomains/content-hash>js-base64": { + "globals": { + "Base64": "write", + "TextDecoder": true, + "TextEncoder": true, + "atob": true, + "btoa": true, + "define": true + }, + "packages": { + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multicodec": { + "packages": { + "@ensdomains/content-hash>multicodec>uint8arrays": true, + "@ensdomains/content-hash>multicodec>varint": true + } + }, + "@ensdomains/content-hash>multicodec>uint8arrays": { + "packages": { + "@ensdomains/content-hash>multicodec>uint8arrays>multibase": true, + "@ensdomains/content-hash>multihashes>web-encoding": true + } + }, + "@ensdomains/content-hash>multicodec>uint8arrays>multibase": { + "packages": { + "@ensdomains/content-hash>cids>multibase>@multiformats/base-x": true, + "@ensdomains/content-hash>multihashes>web-encoding": true + } + }, + "@ensdomains/content-hash>multihashes": { + "packages": { + "3box>ipfs>varint": true, + "@ensdomains/content-hash>multihashes>multibase": true, + "@ensdomains/content-hash>multihashes>web-encoding": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multihashes>multibase": { + "packages": { + "3box>ipfs>bs58>base-x": true, + "@ensdomains/content-hash>multihashes>web-encoding": true, + "browserify>buffer": true + } + }, + "@ensdomains/content-hash>multihashes>web-encoding": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>util": true } }, "@eth-optimism/contracts": { "packages": { - "@ethersproject/abstract-provider": true, - "ethers": true + "ethers": true, + "ethers>@ethersproject/abstract-provider": true } }, "@ethereumjs/common": { "packages": { - "buffer": true, - "crc-32": true, - "ethereumjs-util": true, - "events": true + "@ethereumjs/common>crc-32": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util": true + } + }, + "@ethereumjs/common>crc-32": { + "globals": { + "DO_NOT_EXPORT_CRC": true, + "define": true } }, "@ethereumjs/tx": { "packages": { "@ethereumjs/common": true, - "buffer": true, - "ethereumjs-util": true, - "is-buffer": true - } - }, - "@ethersproject/abi": { - "globals": { - "console.log": true - }, - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/hash": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/abstract-provider": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/abstract-signer": { - "packages": { - "@ethersproject/logger": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/address": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/rlp": true - } - }, - "@ethersproject/base64": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "@ethersproject/bytes": true - } - }, - "@ethersproject/basex": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/properties": true - } - }, - "@ethersproject/bignumber": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "bn.js": true - } - }, - "@ethersproject/bytes": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/constants": { - "packages": { - "@ethersproject/bignumber": true - } - }, - "@ethersproject/contracts": { - "globals": { - "setTimeout": true - }, - "packages": { - "@ethersproject/abi": true, - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/transactions": true - } - }, - "@ethersproject/hash": { - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/hdnode": { - "packages": { - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/pbkdf2": true, - "@ethersproject/properties": true, - "@ethersproject/sha2": true, - "@ethersproject/signing-key": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/wordlists": true - } - }, - "@ethersproject/json-wallets": { - "packages": { - "@ethersproject/address": true, - "@ethersproject/bytes": true, - "@ethersproject/hdnode": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/pbkdf2": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "aes-js": true, - "scrypt-js": true - } - }, - "@ethersproject/keccak256": { - "packages": { - "@ethersproject/bytes": true, - "js-sha3": true - } - }, - "@ethersproject/logger": { - "globals": { - "console": true - } - }, - "@ethersproject/networks": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/pbkdf2": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/sha2": true - } - }, - "@ethersproject/properties": { - "packages": { - "@ethersproject/logger": true - } - }, - "@ethersproject/providers": { - "globals": { - "WebSocket": true, - "clearInterval": true, - "clearTimeout": true, - "console.log": true, - "console.warn": true, - "name": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/hash": true, - "@ethersproject/logger": true, - "@ethersproject/networks": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/sha2": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/web": true, - "bech32": true - } - }, - "@ethersproject/random": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/rlp": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/sha2": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "hash.js": true - } - }, - "@ethersproject/signing-key": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "elliptic": true - } - }, - "@ethersproject/solidity": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/sha2": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/strings": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/transactions": { - "globals": { - "console.log": true - }, - "packages": { - "@ethersproject/address": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/rlp": true, - "@ethersproject/signing-key": true - } - }, - "@ethersproject/units": { - "packages": { - "@ethersproject/bignumber": true, - "@ethersproject/logger": true - } - }, - "@ethersproject/wallet": { - "packages": { - "@ethersproject/abstract-provider": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/bytes": true, - "@ethersproject/hash": true, - "@ethersproject/hdnode": true, - "@ethersproject/json-wallets": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/random": true, - "@ethersproject/signing-key": true, - "@ethersproject/transactions": true - } - }, - "@ethersproject/web": { - "globals": { - "clearTimeout": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@ethersproject/base64": true, - "@ethersproject/bytes": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true - } - }, - "@ethersproject/wordlists": { - "packages": { - "@ethersproject/bytes": true, - "@ethersproject/hash": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/strings": true + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-util": true } }, "@formatjs/intl-relativetimeformat": { @@ -404,55 +2349,109 @@ "Intl": true }, "packages": { - "@formatjs/intl-utils": true + "@formatjs/intl-relativetimeformat>@formatjs/intl-utils": true } }, - "@formatjs/intl-utils": { + "@formatjs/intl-relativetimeformat>@formatjs/intl-utils": { "globals": { "Intl.getCanonicalLocales": true } }, - "@keystonehq/base-eth-keyring": { + "@keystonehq/bc-ur-registry-eth": { "packages": { - "@ethereumjs/tx": true, - "@keystonehq/bc-ur-registry-eth": true, - "buffer": true, + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, "ethereumjs-util": true, - "hdkey": true, "uuid": true } }, - "@keystonehq/bc-ur-registry": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { "globals": { "define": true }, "packages": { "@ngraveio/bc-ur": true, - "bs58check": true, - "buffer": true + "browserify>buffer": true, + "ethereumjs-wallet>bs58check": true } }, - "@keystonehq/bc-ur-registry-eth": { + "@keystonehq/bc-ur-registry-eth>hdkey": { "packages": { - "@keystonehq/bc-ur-registry": true, - "buffer": true, - "ethereumjs-util": true, - "hdkey": true, - "uuid": true + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": true, + "browserify>assert": true, + "browserify>crypto-browserify": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": { + "packages": { + "3box>ethers>elliptic": true } }, "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, - "@keystonehq/base-eth-keyring": true, - "@keystonehq/bc-ur-registry-eth": true, - "@metamask/obs-store": true, - "buffer": true, - "events": true, - "rlp": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util>rlp": true, "uuid": true } }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": { + "packages": { + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/tx": true, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/common": true, + "browserify>buffer": true, + "ethereumjs-util": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { + "packages": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { + "packages": { + "@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, + "@keystonehq/bc-ur-registry-eth>hdkey": true, + "browserify>buffer": true, + "ethereumjs-util": true, + "uuid": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { + "packages": { + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, "@material-ui/core": { "globals": { "Image": true, @@ -477,20 +2476,20 @@ }, "packages": { "@babel/runtime": true, - "@material-ui/styles": true, - "@material-ui/system": true, - "@material-ui/utils": true, - "clsx": true, - "hoist-non-react-statics": true, - "popper.js": true, + "@material-ui/core>@material-ui/styles": true, + "@material-ui/core>@material-ui/system": true, + "@material-ui/core>@material-ui/utils": true, + "@material-ui/core>clsx": true, + "@material-ui/core>popper.js": true, + "@material-ui/core>react-transition-group": true, "prop-types": true, + "prop-types>react-is": true, "react": true, "react-dom": true, - "react-is": true, - "react-transition-group": true + "react-redux>hoist-non-react-statics": true } }, - "@material-ui/styles": { + "@material-ui/core>@material-ui/styles": { "globals": { "console.error": true, "console.warn": true, @@ -499,36 +2498,135 @@ }, "packages": { "@babel/runtime": true, - "@material-ui/utils": true, - "clsx": true, - "hoist-non-react-statics": true, - "jss": true, - "jss-plugin-camel-case": true, - "jss-plugin-default-unit": true, - "jss-plugin-global": true, - "jss-plugin-nested": true, - "jss-plugin-props-sort": true, - "jss-plugin-rule-value-function": true, - "jss-plugin-vendor-prefixer": true, + "@material-ui/core>@material-ui/styles>jss": true, + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case": true, + "@material-ui/core>@material-ui/styles>jss-plugin-default-unit": true, + "@material-ui/core>@material-ui/styles>jss-plugin-global": true, + "@material-ui/core>@material-ui/styles>jss-plugin-nested": true, + "@material-ui/core>@material-ui/styles>jss-plugin-props-sort": true, + "@material-ui/core>@material-ui/styles>jss-plugin-rule-value-function": true, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer": true, + "@material-ui/core>@material-ui/utils": true, + "@material-ui/core>clsx": true, "prop-types": true, - "react": true + "react": true, + "react-redux>hoist-non-react-statics": true } }, - "@material-ui/system": { + "@material-ui/core>@material-ui/styles>jss": { + "globals": { + "CSS": true, + "document.createElement": true, + "document.querySelector": true + }, + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case": { + "packages": { + "@material-ui/core>@material-ui/styles>jss-plugin-camel-case>hyphenate-style-name": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-default-unit": { + "globals": { + "CSS": true + }, + "packages": { + "@material-ui/core>@material-ui/styles>jss": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-global": { + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-nested": { + "packages": { + "@babel/runtime": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-rule-value-function": { + "packages": { + "@material-ui/core>@material-ui/styles>jss": true, + "react-router-dom>tiny-warning": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer": { + "packages": { + "@material-ui/core>@material-ui/styles>jss": true, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer>css-vendor": true + } + }, + "@material-ui/core>@material-ui/styles>jss-plugin-vendor-prefixer>css-vendor": { + "globals": { + "document.createElement": true, + "document.documentElement": true, + "getComputedStyle": true + }, + "packages": { + "@babel/runtime": true, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": true + } + }, + "@material-ui/core>@material-ui/styles>jss>is-in-browser": { + "globals": { + "document": true + } + }, + "@material-ui/core>@material-ui/system": { "globals": { "console.error": true }, "packages": { "@babel/runtime": true, - "@material-ui/utils": true, + "@material-ui/core>@material-ui/utils": true, "prop-types": true } }, - "@material-ui/utils": { + "@material-ui/core>@material-ui/utils": { "packages": { "@babel/runtime": true, "prop-types": true, - "react-is": true + "prop-types>react-is": true + } + }, + "@material-ui/core>popper.js": { + "globals": { + "MSInputMethodContext": true, + "Node.DOCUMENT_POSITION_FOLLOWING": true, + "cancelAnimationFrame": true, + "console.warn": true, + "define": true, + "devicePixelRatio": true, + "document": true, + "getComputedStyle": true, + "innerHeight": true, + "innerWidth": true, + "navigator": true, + "requestAnimationFrame": true, + "setTimeout": true + } + }, + "@material-ui/core>react-transition-group": { + "globals": { + "Element": true, + "setTimeout": true + }, + "packages": { + "@material-ui/core>react-transition-group>dom-helpers": true, + "prop-types": true, + "react": true, + "react-dom": true + } + }, + "@material-ui/core>react-transition-group>dom-helpers": { + "packages": { + "@babel/runtime": true } }, "@metamask/controllers": { @@ -547,36 +2645,314 @@ "@ethereumjs/common": true, "@ethereumjs/tx": true, "@metamask/contract-metadata": true, + "@metamask/controllers>abort-controller": true, + "@metamask/controllers>async-mutex": true, + "@metamask/controllers>eth-method-registry": true, + "@metamask/controllers>eth-phishing-detect": true, + "@metamask/controllers>ethereumjs-wallet": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/controllers>multiformats": true, + "@metamask/controllers>nanoid": true, + "@metamask/controllers>web3-provider-engine": true, "@metamask/metamask-eth-abis": true, - "abort-controller": true, - "async-mutex": true, - "buffer": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>events": true, "deep-freeze-strict": true, "eth-ens-namehash": true, "eth-json-rpc-infura": true, "eth-keyring-controller": true, - "eth-method-registry": true, - "eth-phishing-detect": true, "eth-query": true, "eth-rpc-errors": true, "eth-sig-util": true, "ethereumjs-util": true, - "ethereumjs-wallet": true, "ethers": true, - "ethjs-unit": true, - "events": true, - "fast-deep-equal": true, + "ethjs>ethjs-unit": true, "immer": true, - "isomorphic-fetch": true, "json-rpc-engine": true, "jsonschema": true, - "multiformats": true, - "nanoid": true, "punycode": true, "single-call-balance-checker-abi": true, "uuid": true, - "web3": true, - "web3-provider-engine": true + "web3": true + } + }, + "@metamask/controllers>abort-controller": { + "globals": { + "AbortController": true + } + }, + "@metamask/controllers>async-mutex": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/controllers>async-mutex>tslib": true + } + }, + "@metamask/controllers>async-mutex>tslib": { + "globals": { + "define": true + } + }, + "@metamask/controllers>eth-method-registry": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-abi": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract": true, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-query": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-abi": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract>ethjs-abi": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, + "promise-to-callback": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-contract>ethjs-abi": { + "packages": { + "@metamask/controllers>eth-method-registry>ethjs>bn.js": true, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>ethjs-query": { + "globals": { + "console": true + }, + "packages": { + "ethjs-query>babel-runtime": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, + "promise-to-callback": true + } + }, + "@metamask/controllers>eth-method-registry>ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "@metamask/controllers>eth-phishing-detect": { + "packages": { + "eslint>optionator>fast-levenshtein": true + } + }, + "@metamask/controllers>ethereumjs-wallet": { + "packages": { + "@metamask/controllers>ethereumjs-wallet>uuid": true, + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "ethereumjs-util": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "@metamask/controllers>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "@metamask/controllers>isomorphic-fetch": { + "globals": { + "fetch.bind": true + }, + "packages": { + "@metamask/controllers>isomorphic-fetch>whatwg-fetch": true + } + }, + "@metamask/controllers>isomorphic-fetch>whatwg-fetch": { + "globals": { + "Blob": true, + "FileReader": true, + "FormData": true, + "URLSearchParams.prototype.isPrototypeOf": true, + "XMLHttpRequest": true, + "define": true, + "setTimeout": true + } + }, + "@metamask/controllers>multiformats": { + "globals": { + "TextDecoder": true, + "TextEncoder": true, + "console.warn": true + } + }, + "@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/controllers>web3-provider-engine": { + "globals": { + "WebSocket": true, + "console": true, + "setTimeout": true + }, + "packages": { + "3box>ipfs>async": true, + "@ethereumjs/tx": true, + "@metamask/controllers>web3-provider-engine>backoff": true, + "@metamask/controllers>web3-provider-engine>eth-block-tracker": true, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware": true, + "@metamask/controllers>web3-provider-engine>eth-sig-util": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": true, + "@metamask/controllers>web3-provider-engine>semaphore": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>util": true, + "eth-json-rpc-filters": true, + "eth-json-rpc-infura": true, + "lavamoat>json-stable-stringify": true, + "watchify>xtend": true + } + }, + "@metamask/controllers>web3-provider-engine>backoff": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>backoff>precond": true, + "browserify>events": true, + "browserify>util": true + } + }, + "@metamask/controllers>web3-provider-engine>backoff>precond": { + "packages": { + "browserify>util": true + } + }, + "@metamask/controllers>web3-provider-engine>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-block-tracker": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>eth-block-tracker>pify": true, + "eth-query": true, + "safe-event-emitter": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware": { + "globals": { + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>json-rpc-engine": true, + "@metamask/controllers>web3-provider-engine>eth-rpc-errors": true, + "browserify>url": true, + "lavamoat>json-stable-stringify": true, + "node-fetch": true, + "source-map-explorer>btoa": true, + "vinyl>clone": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>node-fetch": { + "globals": { + "fetch": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-rpc-errors": { + "packages": { + "eth-rpc-errors>fast-safe-stringify": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util": { + "packages": { + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi": { + "packages": { + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi>ethereumjs-util": true, + "bn.js": true, + "browserify>buffer": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-sig-util>ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "@metamask/controllers>web3-provider-engine>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask/controllers>web3-provider-engine>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "@metamask/controllers>web3-provider-engine>semaphore": { + "globals": { + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>process": true } }, "@metamask/eth-ledger-bridge-keyring": { @@ -585,25 +2961,54 @@ "console.log": true, "document.createElement": true, "document.head.appendChild": true, - "fetch": true + "fetch": true, + "removeEventListener": true }, "packages": { "@ethereumjs/tx": true, - "buffer": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "events": true, - "hdkey": true + "@metamask/eth-ledger-bridge-keyring>eth-sig-util": true, + "@metamask/eth-ledger-bridge-keyring>hdkey": true, + "browserify>buffer": true, + "browserify>events": true, + "ethereumjs-util": true } }, - "@metamask/eth-sig-util": { + "@metamask/eth-ledger-bridge-keyring>eth-sig-util": { "packages": { - "buffer": true, - "ethereumjs-abi": true, - "ethereumjs-util": true, - "ethjs-util": true, - "tweetnacl": true, - "tweetnacl-util": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": true, + "browserify>buffer": true, + "ethereumjs-abi": true + } + }, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "@metamask/eth-ledger-bridge-keyring>hdkey": { + "packages": { + "browserify>assert": true, + "browserify>crypto-browserify": true, + "eth-trezor-keyring>hdkey>coinstring": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true } }, "@metamask/eth-token-tracker": { @@ -612,15 +3017,88 @@ }, "packages": { "@babel/runtime": true, - "deep-equal": true, - "eth-block-tracker": true, - "ethjs": true, + "@metamask/eth-token-tracker>eth-block-tracker": true, + "@metamask/eth-token-tracker>ethjs": true, + "@metamask/eth-token-tracker>human-standard-token-abi": true, "ethjs-contract": true, "ethjs-query": true, - "human-standard-token-abi": true, + "nock>deep-equal": true, "safe-event-emitter": true } }, + "@metamask/eth-token-tracker>eth-block-tracker": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/eth-token-tracker>eth-block-tracker>pify": true, + "eth-query": true, + "safe-event-emitter": true + } + }, + "@metamask/eth-token-tracker>ethjs": { + "globals": { + "clearInterval": true, + "setInterval": true + }, + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>ethjs-abi": true, + "@metamask/eth-token-tracker>ethjs>ethjs-contract": true, + "@metamask/eth-token-tracker>ethjs>ethjs-query": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-abi": { + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-contract": { + "packages": { + "@metamask/eth-token-tracker>ethjs>ethjs-contract>ethjs-abi": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, + "promise-to-callback": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-contract>ethjs-abi": { + "packages": { + "@metamask/eth-token-tracker>ethjs>bn.js": true, + "@metamask/eth-token-tracker>ethjs>js-sha3": true, + "browserify>buffer": true, + "ethjs>number-to-bn": true + } + }, + "@metamask/eth-token-tracker>ethjs>ethjs-query": { + "globals": { + "console": true + }, + "packages": { + "ethjs-query>babel-runtime": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, + "promise-to-callback": true + } + }, + "@metamask/eth-token-tracker>ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, "@metamask/etherscan-link": { "globals": { "URL": true @@ -632,18 +3110,30 @@ "document.createElementNS": true }, "packages": { - "color": true, - "mersenne-twister": true + "@metamask/jazzicon>color": true, + "@metamask/jazzicon>mersenne-twister": true } }, - "@metamask/key-tree": { + "@metamask/jazzicon>color": { "packages": { - "bip39": true, - "buffer": true, - "crypto-browserify": true, - "is-buffer": true, - "keccak": true, - "secp256k1": true + "@metamask/jazzicon>color>clone": true, + "@metamask/jazzicon>color>color-convert": true, + "@metamask/jazzicon>color>color-string": true + } + }, + "@metamask/jazzicon>color>clone": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask/jazzicon>color>color-convert": { + "packages": { + "@metamask/jazzicon>color>color-convert>color-name": true + } + }, + "@metamask/jazzicon>color>color-string": { + "packages": { + "jest-canvas-mock>moo-color>color-name": true } }, "@metamask/logo": { @@ -656,18 +3146,8 @@ "requestAnimationFrame": true }, "packages": { - "gl-mat4": true, - "gl-vec3": true - } - }, - "@metamask/object-multiplex": { - "globals": { - "console.warn": true - }, - "packages": { - "end-of-stream": true, - "once": true, - "readable-stream": true + "@metamask/logo>gl-mat4": true, + "@metamask/logo>gl-vec3": true } }, "@metamask/obs-store": { @@ -675,9 +3155,17 @@ "localStorage": true }, "packages": { - "@metamask/safe-event-emitter": true, - "stream-browserify": true, - "through2": true + "@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true } }, "@metamask/post-message-stream": { @@ -689,23 +3177,101 @@ "removeEventListener": true }, "packages": { + "@metamask/post-message-stream>readable-stream": true + } + }, + "@metamask/post-message-stream>readable-stream": { + "packages": { + "@metamask/post-message-stream>readable-stream>safe-buffer": true, + "@metamask/post-message-stream>readable-stream>string_decoder": true, + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>timers-browserify": true, + "pumpify>inherits": true, + "readable-stream>core-util-is": true, + "readable-stream>isarray": true, + "vinyl>cloneable-readable>process-nextick-args": true + } + }, + "@metamask/post-message-stream>readable-stream>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask/post-message-stream>readable-stream>string_decoder": { + "packages": { + "@metamask/post-message-stream>readable-stream>safe-buffer": true + } + }, + "@metamask/providers>@metamask/object-multiplex": { + "globals": { + "console.warn": true + }, + "packages": { + "end-of-stream": true, + "pump>once": true, "readable-stream": true } }, "@metamask/rpc-methods": { "packages": { "@metamask/controllers": true, - "@metamask/key-tree": true, + "@metamask/rpc-methods>@metamask/key-tree": true, + "@metamask/rpc-methods>@metamask/utils": true, "@metamask/snap-controllers": true, "eth-rpc-errors": true } }, - "@metamask/safe-event-emitter": { + "@metamask/rpc-methods>@metamask/key-tree": { + "packages": { + "@metamask/rpc-methods>@metamask/key-tree>@noble/ed25519": true, + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": true, + "@metamask/rpc-methods>@metamask/key-tree>@noble/secp256k1": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/bip39": true, + "browserify>buffer": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/ed25519": { "globals": { - "setTimeout": true + "crypto": true }, "packages": { - "events": true + "browserify>browser-resolve": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true, + "setTimeout": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@noble/secp256k1": { + "globals": { + "crypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + } + }, + "@metamask/rpc-methods>@metamask/key-tree>@scure/bip39": { + "packages": { + "@metamask/rpc-methods>@metamask/key-tree>@noble/hashes": true, + "@metamask/rpc-methods>@metamask/key-tree>@scure/base": true + } + }, + "@metamask/rpc-methods>@metamask/utils": { + "packages": { + "@storybook/api>fast-deep-equal": true } }, "@metamask/smart-transactions-controller": { @@ -715,62 +3281,331 @@ "console.error": true, "console.log": true, "fetch": true, - "setInterval": true, - "setTimeout": true + "setInterval": true }, "packages": { "@metamask/controllers": true, - "bignumber.js": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/smart-transactions-controller>bignumber.js": true, + "@metamask/smart-transactions-controller>fast-json-patch": true, "ethers": true, - "fast-json-patch": true, - "isomorphic-fetch": true, "lodash": true } }, + "@metamask/smart-transactions-controller>@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/smart-transactions-controller>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@metamask/smart-transactions-controller>fast-json-patch": { + "globals": { + "addEventListener": true, + "clearTimeout": true, + "removeEventListener": true, + "setTimeout": true + } + }, "@metamask/snap-controllers": { "globals": { "URL": true, "Worker": true, "clearTimeout": true, "console.error": true, + "console.info": true, "console.log": true, "console.warn": true, + "document.body.appendChild": true, + "document.createElement": true, + "document.getElementById": true, + "fetch": true, "setTimeout": true }, "packages": { - "@metamask/controllers": true, - "@metamask/execution-environments": true, - "@metamask/object-multiplex": true, - "@metamask/obs-store": true, "@metamask/post-message-stream": true, - "@metamask/safe-event-emitter": true, - "ajv": true, - "buffer": true, - "concat-stream": true, - "cross-fetch": true, - "crypto-browserify": true, + "@metamask/providers>@metamask/object-multiplex": true, + "@metamask/rpc-methods>@metamask/utils": true, + "@metamask/snap-controllers>@metamask/controllers": true, + "@metamask/snap-controllers>@metamask/execution-environments": true, + "@metamask/snap-controllers>@metamask/obs-store": true, + "@metamask/snap-controllers>ajv": true, + "@metamask/snap-controllers>concat-stream": true, + "@metamask/snap-controllers>gunzip-maybe": true, + "@metamask/snap-controllers>json-rpc-middleware-stream": true, + "@metamask/snap-controllers>nanoid": true, + "@metamask/snap-controllers>readable-web-to-node-stream": true, + "@metamask/snap-controllers>tar-stream": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, "eth-rpc-errors": true, - "fast-deep-equal": true, - "gunzip-maybe": true, "json-rpc-engine": true, - "json-rpc-middleware-stream": true, - "nanoid": true, + "json-rpc-engine>@metamask/safe-event-emitter": true, "pump": true, - "readable-web-to-node-stream": true, - "semver": true, - "tar-stream": true + "semver": true + } + }, + "@metamask/snap-controllers>@metamask/controllers": { + "globals": { + "Headers": true, + "URL": true, + "clearInterval": true, + "clearTimeout": true, + "console.error": true, + "console.log": true, + "fetch": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@metamask/contract-metadata": true, + "@metamask/controllers>abort-controller": true, + "@metamask/controllers>async-mutex": true, + "@metamask/controllers>eth-phishing-detect": true, + "@metamask/controllers>isomorphic-fetch": true, + "@metamask/controllers>multiformats": true, + "@metamask/controllers>web3-provider-engine": true, + "@metamask/metamask-eth-abis": true, + "@metamask/snap-controllers>nanoid": true, + "@storybook/api>fast-deep-equal": true, + "browserify>buffer": true, + "browserify>events": true, + "deep-freeze-strict": true, + "eth-ens-namehash": true, + "eth-json-rpc-infura": true, + "eth-keyring-controller": true, + "eth-method-registry": true, + "eth-query": true, + "eth-rpc-errors": true, + "eth-sig-util": true, + "ethereumjs-util": true, + "ethereumjs-wallet": true, + "ethers": true, + "ethjs>ethjs-unit": true, + "immer": true, + "json-rpc-engine": true, + "jsonschema": true, + "punycode": true, + "single-call-balance-checker-abi": true, + "uuid": true, + "web3": true + } + }, + "@metamask/snap-controllers>@metamask/obs-store": { + "packages": { + "@metamask/snap-controllers>@metamask/obs-store>through2": true, + "browserify>stream-browserify": true, + "json-rpc-engine>@metamask/safe-event-emitter": true + } + }, + "@metamask/snap-controllers>@metamask/obs-store>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>ajv": { + "packages": { + "@storybook/api>fast-deep-equal": true + } + }, + "@metamask/snap-controllers>concat-stream": { + "packages": { + "@metamask/snap-controllers>concat-stream>readable-stream": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>concat-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>gunzip-maybe": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib": true, + "@metamask/snap-controllers>gunzip-maybe>is-deflate": true, + "@metamask/snap-controllers>gunzip-maybe>is-gzip": true, + "@metamask/snap-controllers>gunzip-maybe>peek-stream": true, + "@metamask/snap-controllers>gunzip-maybe>pumpify": true, + "@metamask/snap-controllers>gunzip-maybe>through2": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>browserify-zlib>pako": true, + "browserify>assert": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>util": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>peek-stream>duplexify": true, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>through2": true, + "browserify>buffer": true, + "terser>source-map-support>buffer-from": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>duplexify": { + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>peek-stream>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify": { + "packages": { + "@metamask/snap-controllers>gunzip-maybe>pumpify>duplexify": true, + "@metamask/snap-controllers>gunzip-maybe>pumpify>pump": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify>duplexify": { + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>pumpify>pump": { + "packages": { + "browserify>browser-resolve": true, + "end-of-stream": true, + "pump>once": true + } + }, + "@metamask/snap-controllers>gunzip-maybe>through2": { + "packages": { + "browserify>process": true, + "browserify>util": true, + "readable-stream": true, + "watchify>xtend": true + } + }, + "@metamask/snap-controllers>json-rpc-middleware-stream": { + "globals": { + "setTimeout": true + }, + "packages": { + "json-rpc-engine>@metamask/safe-event-emitter": true, + "readable-stream": true + } + }, + "@metamask/snap-controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/snap-controllers>readable-web-to-node-stream": { + "packages": { + "@metamask/snap-controllers>readable-web-to-node-stream>readable-stream": true + } + }, + "@metamask/snap-controllers>readable-web-to-node-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream": { + "packages": { + "@metamask/snap-controllers>tar-stream>bl": true, + "@metamask/snap-controllers>tar-stream>fs-constants": true, + "@metamask/snap-controllers>tar-stream>readable-stream": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>string_decoder": true, + "browserify>util": true, + "end-of-stream": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream>bl": { + "packages": { + "@metamask/snap-controllers>tar-stream>readable-stream": true, + "browserify>buffer": true, + "pumpify>inherits": true + } + }, + "@metamask/snap-controllers>tar-stream>fs-constants": { + "packages": { + "browserify>constants-browserify": true + } + }, + "@metamask/snap-controllers>tar-stream>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, "@ngraveio/bc-ur": { "packages": { - "@apocentre/alias-sampling": true, - "assert": true, - "bignumber.js": true, - "buffer": true, - "cbor-sync": true, - "crc": true, - "jsbi": true, - "sha.js": true + "@ngraveio/bc-ur>@apocentre/alias-sampling": true, + "@ngraveio/bc-ur>bignumber.js": true, + "@ngraveio/bc-ur>crc": true, + "@ngraveio/bc-ur>jsbi": true, + "addons-linter>sha.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "pubnub>cbor-sync": true + } + }, + "@ngraveio/bc-ur>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@ngraveio/bc-ur>crc": { + "packages": { + "browserify>buffer": true + } + }, + "@ngraveio/bc-ur>jsbi": { + "globals": { + "define": true } }, "@popperjs/core": { @@ -794,18 +3629,10 @@ "console.warn": true }, "packages": { + "@reduxjs/toolkit>reselect": true, "immer": true, "redux": true, - "redux-thunk": true, - "reselect": true - } - }, - "@segment/loosely-validate-event": { - "packages": { - "assert": true, - "buffer": true, - "component-type": true, - "join-component": true + "redux-thunk": true } }, "@sentry/browser": { @@ -814,57 +3641,43 @@ "setTimeout": true }, "packages": { - "@sentry/core": true, - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/core": true, + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/core": { + "@sentry/browser>@sentry/core": { "globals": { "clearInterval": true, "setInterval": true }, "packages": { - "@sentry/hub": true, - "@sentry/minimal": true, - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/core>@sentry/hub": true, + "@sentry/browser>@sentry/core>@sentry/minimal": true, + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/hub": { + "@sentry/browser>@sentry/core>@sentry/hub": { "globals": { "clearInterval": true, "setInterval": true }, "packages": { - "@sentry/types": true, - "@sentry/utils": true, - "tslib": true + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true } }, - "@sentry/integrations": { - "globals": { - "clearTimeout": true, - "console.error": true, - "console.log": true, - "setTimeout": true - }, + "@sentry/browser>@sentry/core>@sentry/minimal": { "packages": { - "@sentry/types": true, - "@sentry/utils": true, - "localforage": true, - "tslib": true + "@sentry/browser>@sentry/core>@sentry/hub": true, + "@sentry/browser>tslib": true } }, - "@sentry/minimal": { - "packages": { - "@sentry/hub": true, - "tslib": true - } - }, - "@sentry/utils": { + "@sentry/browser>@sentry/utils": { "globals": { "CustomEvent": true, "DOMError": true, @@ -882,74 +3695,319 @@ "setTimeout": true }, "packages": { - "process": true, - "tslib": true + "@sentry/browser>tslib": true, + "browserify>process": true } }, - "@sindresorhus/is": { - "packages": { - "is-buffer": true, - "util": true + "@sentry/browser>tslib": { + "globals": { + "define": true } }, - "@truffle/abi-utils": { + "@sentry/integrations": { + "globals": { + "clearTimeout": true, + "console.error": true, + "console.log": true, + "setTimeout": true + }, "packages": { - "change-case": true, - "faker": true, - "fast-check": true + "@sentry/browser>@sentry/types": true, + "@sentry/browser>@sentry/utils": true, + "@sentry/browser>tslib": true, + "localforage": true } }, - "@truffle/code-utils": { - "packages": { - "buffer": true, - "cbor": true + "@storybook/api>regenerator-runtime": { + "globals": { + "regeneratorRuntime": "write" + } + }, + "@storybook/api>util-deprecate": { + "globals": { + "console.trace": true, + "console.warn": true, + "localStorage": true + } + }, + "@storybook/client-api>stable": { + "globals": { + "define": true } }, "@truffle/codec": { "packages": { - "@truffle/abi-utils": true, - "@truffle/compile-common": true, - "big.js": true, - "bn.js": true, - "buffer": true, - "cbor": true, - "debug": true, - "lodash.clonedeep": true, - "lodash.escaperegexp": true, - "lodash.partition": true, - "lodash.sum": true, - "semver": true, - "utf8": true, - "util": true, - "web3-utils": true + "@truffle/codec>@truffle/abi-utils": true, + "@truffle/codec>@truffle/compile-common": true, + "@truffle/codec>big.js": true, + "@truffle/codec>bn.js": true, + "@truffle/codec>cbor": true, + "@truffle/codec>lodash.escaperegexp": true, + "@truffle/codec>lodash.partition": true, + "@truffle/codec>lodash.sum": true, + "@truffle/codec>utf8": true, + "@truffle/codec>web3-utils": true, + "browserify>buffer": true, + "browserify>util": true, + "eslint>debug": true, + "gulp-dart-sass>lodash.clonedeep": true, + "semver": true } }, - "@truffle/compile-common": { + "@truffle/codec>@truffle/abi-utils": { "packages": { - "@truffle/error": true, - "colors": true, - "path-browserify": true + "@truffle/codec>@truffle/abi-utils>change-case": true, + "@truffle/codec>@truffle/abi-utils>faker": true, + "@truffle/codec>@truffle/abi-utils>fast-check": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>constant-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>dot-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>header-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>is-lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>is-upper-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case-first": true, + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>param-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>pascal-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>path-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>sentence-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>swap-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>title-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>constant-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>dot-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>header-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>is-lower-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>is-upper-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>lower-case-first": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>no-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>param-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>pascal-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>camel-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>path-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>sentence-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>snake-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>swap-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>lower-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>title-case": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>no-case": true, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>change-case>upper-case-first": { + "packages": { + "@truffle/codec>@truffle/abi-utils>change-case>upper-case": true + } + }, + "@truffle/codec>@truffle/abi-utils>faker": { + "globals": { + "console.error": true, + "console.log": true, + "dbg": "write" + } + }, + "@truffle/codec>@truffle/abi-utils>fast-check": { + "globals": { + "clearTimeout": true, + "console.log": true, + "setTimeout": true + }, + "packages": { + "@truffle/codec>@truffle/abi-utils>fast-check>pure-rand": true, + "browserify>buffer": true + } + }, + "@truffle/codec>@truffle/compile-common": { + "packages": { + "@truffle/codec>@truffle/compile-common>@truffle/error": true, + "@truffle/codec>@truffle/compile-common>colors": true, + "browserify>path-browserify": true + } + }, + "@truffle/codec>@truffle/compile-common>colors": { + "globals": { + "console.log": true + }, + "packages": { + "browserify>os-browserify": true, + "browserify>process": true, + "browserify>util": true + } + }, + "@truffle/codec>big.js": { + "globals": { + "define": true + } + }, + "@truffle/codec>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@truffle/codec>cbor": { + "globals": { + "TextDecoder": true + }, + "packages": { + "@truffle/codec>cbor>bignumber.js": true, + "@truffle/codec>cbor>nofilter": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "browserify>stream-browserify": true, + "browserify>url": true, + "browserify>util": true + } + }, + "@truffle/codec>cbor>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@truffle/codec>cbor>nofilter": { + "packages": { + "browserify>buffer": true, + "browserify>stream-browserify": true, + "browserify>util": true + } + }, + "@truffle/codec>web3-utils": { + "globals": { + "setTimeout": true + }, + "packages": { + "@truffle/codec>utf8": true, + "@truffle/codec>web3-utils>eth-lib": true, + "@truffle/codec>web3-utils>ethereum-bloom-filters": true, + "bn.js": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-wallet>randombytes": true, + "ethjs>ethjs-unit": true, + "ethjs>number-to-bn": true + } + }, + "@truffle/codec>web3-utils>ethereum-bloom-filters": { + "packages": { + "ethers>@ethersproject/keccak256>js-sha3": true } }, "@truffle/decoder": { "packages": { - "@truffle/abi-utils": true, "@truffle/codec": true, - "@truffle/compile-common": true, - "@truffle/source-map-utils": true, - "bn.js": true, - "debug": true, - "web3-utils": true + "@truffle/codec>@truffle/abi-utils": true, + "@truffle/codec>@truffle/compile-common": true, + "@truffle/codec>web3-utils": true, + "@truffle/decoder>@truffle/source-map-utils": true, + "@truffle/decoder>bn.js": true, + "eslint>debug": true } }, - "@truffle/source-map-utils": { + "@truffle/decoder>@truffle/source-map-utils": { "packages": { - "@truffle/code-utils": true, "@truffle/codec": true, - "debug": true, - "json-pointer": true, - "node-interval-tree": true, - "web3-utils": true + "@truffle/codec>web3-utils": true, + "@truffle/decoder>@truffle/source-map-utils>@truffle/code-utils": true, + "@truffle/decoder>@truffle/source-map-utils>json-pointer": true, + "@truffle/decoder>@truffle/source-map-utils>node-interval-tree": true, + "eslint>debug": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>@truffle/code-utils": { + "packages": { + "@truffle/codec>cbor": true, + "browserify>buffer": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>json-pointer": { + "packages": { + "@truffle/decoder>@truffle/source-map-utils>json-pointer>foreach": true + } + }, + "@truffle/decoder>@truffle/source-map-utils>node-interval-tree": { + "packages": { + "react-dnd>shallowequal": true + } + }, + "@truffle/decoder>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true } }, "@zxing/browser": { @@ -984,34 +4042,10 @@ "setTimeout": true } }, - "abort-controller": { - "globals": { - "AbortController": true - } - }, - "abstract-leveldown": { + "addons-linter>sha.js": { "packages": { - "buffer": true, - "immediate": true, - "is-buffer": true, - "level-supports": true, - "process": true, - "xtend": true - } - }, - "accounting": { - "globals": { - "define": true - } - }, - "aes-js": { - "globals": { - "define": true - } - }, - "ajv": { - "packages": { - "fast-deep-equal": true + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true } }, "analytics-node": { @@ -1022,91 +4056,27 @@ "setTimeout": true }, "packages": { - "@segment/loosely-validate-event": true, - "assert": true, - "axios": true, - "axios-retry": true, - "lodash.isstring": true, - "md5": true, - "ms": true, - "process": true, - "remove-trailing-slash": true, - "uuid": true + "analytics-node>@segment/loosely-validate-event": true, + "analytics-node>axios": true, + "analytics-node>axios-retry": true, + "analytics-node>lodash.isstring": true, + "analytics-node>md5": true, + "analytics-node>ms": true, + "analytics-node>remove-trailing-slash": true, + "analytics-node>uuid": true, + "browserify>assert": true, + "browserify>process": true } }, - "asap": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "document.createTextNode": true, - "setInterval": true, - "setTimeout": true - } - }, - "asn1.js": { + "analytics-node>@segment/loosely-validate-event": { "packages": { - "bn.js": true, - "buffer": true, - "inherits": true, - "minimalistic-assert": true, - "vm-browserify": true + "analytics-node>@segment/loosely-validate-event>component-type": true, + "analytics-node>@segment/loosely-validate-event>join-component": true, + "browserify>assert": true, + "browserify>buffer": true } }, - "assemblyscript": { - "globals": { - "WebAssembly.Instance": true, - "WebAssembly.Module": true, - "WebAssembly.instantiateStreaming": true, - "console.log": true - } - }, - "assert": { - "globals": { - "Buffer": true - }, - "packages": { - "object-assign": true, - "util": true - } - }, - "async": { - "globals": { - "clearTimeout": true, - "setTimeout": true - }, - "packages": { - "lodash": true, - "process": true, - "timers-browserify": true - } - }, - "async-iterator-to-pull-stream": { - "packages": { - "get-iterator": true, - "pull-stream-to-async-iterator": true - } - }, - "async-iterator-to-stream": { - "packages": { - "process": true, - "readable-stream": true - } - }, - "async-mutex": { - "globals": { - "setTimeout": true - }, - "packages": { - "tslib": true - } - }, - "await-semaphore": { - "packages": { - "process": true, - "timers-browserify": true - } - }, - "axios": { + "analytics-node>axios": { "globals": { "FormData": true, "URLSearchParams": true, @@ -1119,108 +4089,45 @@ "setTimeout": true }, "packages": { - "process": true + "browserify>process": true } }, - "axios-retry": { + "analytics-node>axios-retry": { "globals": { "setTimeout": true }, "packages": { - "is-retry-allowed": true + "geckodriver>got>is-retry-allowed": true } }, - "babel-runtime": { + "analytics-node>md5": { "packages": { - "core-js": true, - "regenerator-runtime": true + "analytics-node>md5>charenc": true, + "analytics-node>md5>crypt": true, + "browserify>insert-module-globals>is-buffer": true } }, - "backoff": { + "analytics-node>uuid": { "globals": { - "clearTimeout": true, - "setTimeout": true - }, - "packages": { - "events": true, - "precond": true, - "util": true + "crypto": true, + "msCrypto": true } }, - "base-x": { + "await-semaphore": { "packages": { - "safe-buffer": true + "browserify>process": true, + "browserify>timers-browserify": true } }, "base32-encode": { "packages": { - "to-data-view": true - } - }, - "base64url": { - "packages": { - "buffer": true - } - }, - "big.js": { - "globals": { - "define": true + "base32-encode>to-data-view": true } }, "bignumber.js": { "globals": { "crypto": true, "define": true - }, - "packages": { - "crypto-browserify": true - } - }, - "bip39": { - "globals": { - "console.log": true - }, - "packages": { - "buffer": true, - "create-hash": true, - "pbkdf2": true, - "randombytes": true, - "safe-buffer": true, - "unorm": true - } - }, - "bip66": { - "packages": { - "safe-buffer": true - } - }, - "bitwise": { - "packages": { - "buffer": true - } - }, - "bl": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true, - "util": true - } - }, - "blakejs": { - "globals": { - "console.log": true - }, - "packages": { - "buffer": true - } - }, - "blob": { - "globals": { - "Blob": true, - "MSBlobBuilder": true, - "MozBlobBuilder": true, - "WebKitBlobBuilder": true } }, "bn.js": { @@ -1228,217 +4135,305 @@ "Buffer": true }, "packages": { - "browser-resolve": true + "browserify>browser-resolve": true } }, - "borc": { + "browserify>assert": { "globals": { - "console": true + "Buffer": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "ieee754": true, - "iso-url": true + "browserify>assert>util": true, + "react>object-assign": true } }, - "brorand": { + "browserify>assert>util": { "globals": { - "crypto": true, - "msCrypto": true + "console.error": true, + "console.log": true, + "console.trace": true, + "process": true }, "packages": { - "browser-resolve": true + "browserify>assert>util>inherits": true, + "browserify>process": true } }, - "browser-passworder": { - "globals": { - "btoa": true, - "crypto.getRandomValues": true, - "crypto.subtle.decrypt": true, - "crypto.subtle.deriveKey": true, - "crypto.subtle.encrypt": true, - "crypto.subtle.importKey": true - }, + "browserify>browser-resolve": { "packages": { - "browserify-unibabel": true + "ethjs-query>babel-runtime>core-js": true } }, - "browserify-aes": { - "packages": { - "buffer": true, - "buffer-xor": true, - "cipher-base": true, - "evp_bytestokey": true, - "inherits": true, - "safe-buffer": true - } - }, - "browserify-cipher": { - "packages": { - "browserify-aes": true, - "browserify-des": true, - "evp_bytestokey": true - } - }, - "browserify-des": { - "packages": { - "buffer": true, - "cipher-base": true, - "des.js": true, - "inherits": true - } - }, - "browserify-rsa": { - "packages": { - "bn.js": true, - "buffer": true, - "randombytes": true - } - }, - "browserify-sign": { - "packages": { - "bn.js": true, - "browserify-rsa": true, - "buffer": true, - "create-hash": true, - "create-hmac": true, - "elliptic": true, - "inherits": true, - "parse-asn1": true, - "stream-browserify": true - } - }, - "browserify-unibabel": { - "globals": { - "atob": true, - "btoa": true - } - }, - "browserify-zlib": { - "packages": { - "assert": true, - "buffer": true, - "pako": true, - "process": true, - "readable-stream": true, - "util": true - } - }, - "bs58": { - "packages": { - "base-x": true - } - }, - "bs58check": { - "packages": { - "bs58": true, - "create-hash": true, - "safe-buffer": true - } - }, - "btoa": { - "packages": { - "buffer": true - } - }, - "buffer": { + "browserify>buffer": { "globals": { "console": true }, "packages": { "base64-js": true, - "ieee754": true + "browserify>buffer>ieee754": true } }, - "buffer-from": { + "browserify>crypto-browserify": { "packages": { - "buffer": true + "browserify>crypto-browserify>browserify-cipher": true, + "browserify>crypto-browserify>browserify-sign": true, + "browserify>crypto-browserify>create-ecdh": true, + "browserify>crypto-browserify>create-hmac": true, + "browserify>crypto-browserify>diffie-hellman": true, + "browserify>crypto-browserify>pbkdf2": true, + "browserify>crypto-browserify>public-encrypt": true, + "browserify>crypto-browserify>randomfill": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true } }, - "buffer-split": { + "browserify>crypto-browserify>browserify-cipher": { "packages": { - "buffer-indexof": true + "browserify>crypto-browserify>browserify-cipher>browserify-des": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true } }, - "buffer-xor": { + "browserify>crypto-browserify>browserify-cipher>browserify-des": { "packages": { - "buffer": true + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>browserify-des>des.js": true, + "ethereumjs-util>create-hash>cipher-base": true, + "pumpify>inherits": true } }, - "call-bind": { + "browserify>crypto-browserify>browserify-cipher>browserify-des>des.js": { "packages": { - "function-bind": true, - "get-intrinsic": true + "3box>ethers>hash.js>minimalistic-assert": true, + "pumpify>inherits": true } }, - "camel-case": { + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": { "packages": { - "no-case": true, - "upper-case": true + "ethereumjs-util>create-hash>md5.js": true, + "ethereumjs-wallet>safe-buffer": true } }, - "cbor": { + "browserify>crypto-browserify>browserify-sign": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1": true, + "browserify>stream-browserify": true, + "ethereumjs-util>create-hash": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>create-ecdh": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>buffer": true + } + }, + "browserify>crypto-browserify>create-hmac": { + "packages": { + "addons-linter>sha.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>create-hash>ripemd160": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>diffie-hellman": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>diffie-hellman>miller-rabin": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>diffie-hellman>miller-rabin": { + "packages": { + "3box>ethers>elliptic>brorand": true, + "bn.js": true + } + }, + "browserify>crypto-browserify>pbkdf2": { "globals": { - "TextDecoder": true + "crypto": true, + "process": true, + "queueMicrotask": true, + "setImmediate": true, + "setTimeout": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "is-buffer": true, - "nofilter": true, - "stream-browserify": true, - "url": true, - "util": true + "addons-linter>sha.js": true, + "browserify>process": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>create-hash>ripemd160": true, + "ethereumjs-wallet>safe-buffer": true } }, - "cbor-sync": { + "browserify>crypto-browserify>public-encrypt": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>public-encrypt>browserify-rsa": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "ethereumjs-wallet>randombytes": true + } + }, + "browserify>crypto-browserify>public-encrypt>parse-asn1": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "browserify>crypto-browserify>pbkdf2": true, + "browserify>crypto-browserify>public-encrypt>parse-asn1>asn1.js": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes": true + } + }, + "browserify>crypto-browserify>public-encrypt>parse-asn1>asn1.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "bn.js": true, + "browserify>buffer": true, + "browserify>vm-browserify": true, + "pumpify>inherits": true + } + }, + "browserify>crypto-browserify>randomfill": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>process": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "browserify>events": { + "globals": { + "console": true + } + }, + "browserify>https-browserify": { + "packages": { + "browserify>stream-http": true, + "browserify>url": true + } + }, + "browserify>os-browserify": { + "globals": { + "location": true, + "navigator": true + } + }, + "browserify>path-browserify": { + "packages": { + "browserify>process": true + } + }, + "browserify>process": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "browserify>punycode": { "globals": { "define": true + } + }, + "browserify>stream-browserify": { + "packages": { + "browserify>events": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "browserify>stream-http": { + "globals": { + "AbortController": true, + "Blob": true, + "MSStreamReader": true, + "ReadableStream": true, + "WritableStream": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "clearTimeout": true, + "fetch": true, + "location.protocol.search": true, + "setTimeout": true }, "packages": { - "buffer": true + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-http>builtin-status-codes": true, + "browserify>stream-http>readable-stream": true, + "browserify>url": true, + "pumpify>inherits": true, + "watchify>xtend": true } }, - "change-case": { + "browserify>stream-http>readable-stream": { "packages": { - "camel-case": true, - "constant-case": true, - "dot-case": true, - "header-case": true, - "is-lower-case": true, - "is-upper-case": true, - "lower-case": true, - "lower-case-first": true, - "no-case": true, - "param-case": true, - "pascal-case": true, - "path-case": true, - "sentence-case": true, - "snake-case": true, - "swap-case": true, - "title-case": true, - "upper-case": true, - "upper-case-first": true + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, - "cids": { + "browserify>string_decoder": { "packages": { - "buffer": true, - "class-is": true, - "is-buffer": true, - "multibase": true, - "multicodec": true, - "multihashes": true, - "uint8arrays": true + "ethereumjs-wallet>safe-buffer": true } }, - "cipher-base": { + "browserify>timers-browserify": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "setInterval": true, + "setTimeout": true + }, "packages": { - "inherits": true, - "safe-buffer": true, - "stream-browserify": true, - "string_decoder": true + "browserify>process": true + } + }, + "browserify>url": { + "packages": { + "browserify>punycode": true, + "browserify>querystring-es3": true + } + }, + "browserify>util": { + "globals": { + "console.error": true, + "console.log": true, + "console.trace": true, + "process": true + }, + "packages": { + "browserify>process": true, + "browserify>util>inherits": true + } + }, + "browserify>vm-browserify": { + "globals": { + "document.body.appendChild": true, + "document.body.removeChild": true, + "document.createElement": true } }, "classnames": { @@ -1447,63 +4442,6 @@ "define": true } }, - "clone": { - "packages": { - "buffer": true - } - }, - "coinstring": { - "packages": { - "bs58": true, - "buffer": true, - "create-hash": true - } - }, - "color": { - "packages": { - "clone": true, - "color-convert": true, - "color-string": true - } - }, - "color-convert": { - "packages": { - "color-name": true - } - }, - "color-string": { - "packages": { - "color-name": true - } - }, - "colors": { - "globals": { - "console.log": true - }, - "packages": { - "os-browserify": true, - "process": true, - "util": true - } - }, - "concat-stream": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true - } - }, - "constant-case": { - "packages": { - "snake-case": true, - "upper-case": true - } - }, - "cookiejar": { - "globals": { - "console.warn": true - } - }, "copy-to-clipboard": { "globals": { "clipboardData": true, @@ -1519,157 +4457,97 @@ "prompt": true }, "packages": { - "toggle-selection": true + "copy-to-clipboard>toggle-selection": true } }, - "core-js": { + "copy-to-clipboard>toggle-selection": { "globals": { - "PromiseRejectionEvent": true, - "__e": "write", - "__g": "write", - "document.createTextNode": true, - "postMessage": true, - "setTimeout": true - } - }, - "core-util-is": { - "packages": { - "is-buffer": true - } - }, - "crc": { - "packages": { - "buffer": true - } - }, - "crc-32": { - "globals": { - "DO_NOT_EXPORT_CRC": true, - "define": true - } - }, - "create-ecdh": { - "packages": { - "bn.js": true, - "buffer": true, - "elliptic": true - } - }, - "create-hash": { - "packages": { - "cipher-base": true, - "inherits": true, - "md5.js": true, - "ripemd160": true, - "sha.js": true - } - }, - "create-hmac": { - "packages": { - "cipher-base": true, - "create-hash": true, - "inherits": true, - "ripemd160": true, - "safe-buffer": true, - "sha.js": true - } - }, - "cross-fetch": { - "globals": { - "Blob": true, - "FileReader": true, - "FormData": true, - "URLSearchParams.prototype.isPrototypeOf": true, - "XMLHttpRequest": true - } - }, - "crypto-browserify": { - "packages": { - "browserify-cipher": true, - "browserify-sign": true, - "create-ecdh": true, - "create-hash": true, - "create-hmac": true, - "diffie-hellman": true, - "pbkdf2": true, - "public-encrypt": true, - "randombytes": true, - "randomfill": true - } - }, - "crypto-js": { - "globals": { - "define": true - } - }, - "css-vendor": { - "globals": { - "document.createElement": true, - "document.documentElement": true, - "getComputedStyle": true - }, - "packages": { - "@babel/runtime": true, - "is-in-browser": true + "document.activeElement": true, + "document.getSelection": true } }, "currency-formatter": { "packages": { - "accounting": true, - "locale-currency": true, - "object-assign": true + "currency-formatter>accounting": true, + "currency-formatter>locale-currency": true, + "react>object-assign": true } }, - "data-queue": { + "currency-formatter>accounting": { + "globals": { + "define": true + } + }, + "currency-formatter>locale-currency": { + "globals": { + "countryCode": true + } + }, + "debounce-stream": { "packages": { - "events": true + "debounce-stream>debounce": true, + "debounce-stream>duplexer": true, + "debounce-stream>through": true } }, - "datastore-core": { - "packages": { - "async": true, - "buffer": true, - "interface-datastore": true, - "pull-many": true, - "pull-stream": true - } - }, - "datastore-level": { - "packages": { - "buffer": true, - "encoding-down": true, - "interface-datastore": true, - "level-js": true, - "levelup": true, - "pull-stream": true - } - }, - "datastore-pubsub": { - "packages": { - "assert": true, - "buffer": true, - "debug": true, - "err-code": true, - "interface-datastore": true, - "multibase": true - } - }, - "debounce": { + "debounce-stream>debounce": { "globals": { "clearTimeout": true, "setTimeout": true } }, - "debounce-stream": { + "debounce-stream>duplexer": { "packages": { - "debounce": true, - "duplexer": true, - "through": true + "browserify>stream-browserify": true } }, - "debug": { + "debounce-stream>through": { + "packages": { + "browserify>process": true, + "browserify>stream-browserify": true + } + }, + "depcheck>@vue/compiler-sfc>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "dependency-tree>precinct>detective-postcss>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "end-of-stream": { + "packages": { + "browserify>process": true, + "pump>once": true + } + }, + "enzyme>has": { + "packages": { + "mocha>object.assign>function-bind": true + } + }, + "enzyme>is-regex": { + "packages": { + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "eslint-plugin-react>array-includes>get-intrinsic": { + "globals": { + "AggregateError": true, + "FinalizationRegistry": true, + "WeakRef": true + }, + "packages": { + "enzyme>has": true, + "mocha>object.assign>function-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "eslint>debug": { "globals": { - "chrome": true, "console": true, "document": true, "localStorage": true, @@ -1677,183 +4555,18 @@ "process": true }, "packages": { - "ms": true, - "process": true + "browserify>process": true, + "eslint>debug>ms": true } }, - "deep-equal": { - "packages": { - "is-arguments": true, - "is-date-object": true, - "is-regex": true, - "object-is": true, - "object-keys": true, - "regexp.prototype.flags": true - } - }, - "deep-extend": { - "packages": { - "buffer": true - } - }, - "deferred-leveldown": { - "packages": { - "abstract-leveldown": true, - "inherits": true - } - }, - "define-properties": { - "packages": { - "object-keys": true - } - }, - "des.js": { - "packages": { - "inherits": true, - "minimalistic-assert": true - } - }, - "did-jwt": { - "packages": { - "@babel/runtime": true, - "@stablelib/utf8": true, - "base64url": true, - "buffer": true, - "did-resolver": true, - "elliptic": true, - "js-sha256": true, - "js-sha3": true, - "tweetnacl": true, - "tweetnacl-util": true, - "uport-base64url": true - } - }, - "diffie-hellman": { - "packages": { - "bn.js": true, - "buffer": true, - "miller-rabin": true, - "randombytes": true - } - }, - "dlv": { + "eslint>optionator>fast-levenshtein": { "globals": { - "define": true - } - }, - "dnd-core": { - "packages": { - "asap": true, - "invariant": true, - "lodash": true, - "redux": true - } - }, - "dom-helpers": { - "globals": { - "document": true, - "setTimeout": true - }, - "packages": { - "@babel/runtime": true - } - }, - "dot-case": { - "packages": { - "no-case": true - } - }, - "drbg.js": { - "packages": { - "buffer": true, - "create-hmac": true - } - }, - "duplexer": { - "packages": { - "stream-browserify": true - } - }, - "duplexify": { - "packages": { - "buffer": true, - "end-of-stream": true, - "inherits": true, - "process": true, - "readable-stream": true, - "stream-shift": true - } - }, - "elliptic": { - "packages": { - "bn.js": true, - "brorand": true, - "hash.js": true, - "hmac-drbg": true, - "inherits": true, - "minimalistic-assert": true, - "minimalistic-crypto-utils": true - } - }, - "encoding-down": { - "packages": { - "abstract-leveldown": true, - "inherits": true, - "level-codec": true, - "level-errors": true - } - }, - "end-of-stream": { - "packages": { - "once": true, - "process": true - } - }, - "engine.io-client": { - "globals": { - "MozWebSocket": true, - "WebSocket": true, - "XDomainRequest": true, - "XMLHttpRequest": true, - "addEventListener": true, - "attachEvent": true, - "clearTimeout": true, - "document": true, - "location": true, - "navigator": true, - "setTimeout": true - }, - "packages": { - "browser-resolve": true, - "buffer": true, - "component-emitter": true, - "component-inherit": true, - "debug": true, - "engine.io-parser": true, - "has-cors": true, - "indexof": true, - "parseqs": true, - "parseuri": true, - "yeast": true - } - }, - "engine.io-parser": { - "globals": { - "FileReader": true, - "btoa": true, - "navigator": true - }, - "packages": { - "after": true, - "arraybuffer.slice": true, - "base64-arraybuffer": true, - "blob": true, - "has-binary2": true - } - }, - "errno": { - "packages": { - "prr": true + "Intl": true, + "Levenshtein": "write", + "console.log": true, + "define": true, + "importScripts": true, + "postMessage": true } }, "eth-block-tracker": { @@ -1863,21 +4576,9 @@ "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "eth-query": true, - "json-rpc-random-id": true, - "pify": true, - "safe-event-emitter": true - } - }, - "eth-eip712-util-browser": { - "globals": { - "intToBuffer": true - }, - "packages": { - "bn.js": true, - "buffer": true, - "js-sha3": true + "eth-block-tracker>pify": true, + "eth-query>json-rpc-random-id": true, + "json-rpc-engine>@metamask/safe-event-emitter": true } }, "eth-ens-namehash": { @@ -1885,19 +4586,22 @@ "name": "write" }, "packages": { - "buffer": true, - "idna-uts46": true, - "idna-uts46-hx": true, - "js-sha3": true + "browserify>buffer": true, + "eth-ens-namehash>idna-uts46-hx": true, + "eth-ens-namehash>js-sha3": true } }, - "eth-hd-keyring": { + "eth-ens-namehash>idna-uts46-hx": { + "globals": { + "define": true + }, "packages": { - "bip39": true, - "buffer": true, - "eth-sig-util": true, - "eth-simple-keyring": true, - "ethereumjs-wallet": true + "browserify>punycode": true + } + }, + "eth-ens-namehash>js-sha3": { + "packages": { + "browserify>process": true } }, "eth-json-rpc-filters": { @@ -1907,25 +4611,46 @@ }, "packages": { "await-semaphore": true, - "eth-json-rpc-middleware": true, + "eth-json-rpc-filters>eth-json-rpc-middleware": true, + "eth-json-rpc-filters>eth-json-rpc-middleware>pify": true, + "eth-json-rpc-filters>json-rpc-engine": true, + "eth-json-rpc-filters>lodash.flatmap": true, "eth-query": true, - "json-rpc-engine": true, - "lodash.flatmap": true, - "pify": true, "safe-event-emitter": true } }, + "eth-json-rpc-filters>eth-json-rpc-middleware": { + "packages": { + "eth-json-rpc-filters>json-rpc-engine": true + } + }, "eth-json-rpc-infura": { "globals": { "setTimeout": true }, "packages": { - "eth-json-rpc-middleware": true, - "eth-rpc-errors": true, - "json-rpc-engine": true, + "eth-json-rpc-infura>eth-json-rpc-middleware": true, + "eth-json-rpc-infura>eth-rpc-errors": true, + "eth-json-rpc-infura>json-rpc-engine": true, "node-fetch": true } }, + "eth-json-rpc-infura>eth-json-rpc-middleware": { + "packages": { + "safe-event-emitter": true + } + }, + "eth-json-rpc-infura>eth-rpc-errors": { + "packages": { + "eth-rpc-errors>fast-safe-stringify": true + } + }, + "eth-json-rpc-infura>json-rpc-engine": { + "packages": { + "eth-json-rpc-infura>eth-rpc-errors": true, + "safe-event-emitter": true + } + }, "eth-json-rpc-middleware": { "globals": { "URL": true, @@ -1935,32 +4660,158 @@ "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "browser-resolve": true, - "btoa": true, - "clone": true, + "browserify>browser-resolve": true, + "eth-json-rpc-middleware>eth-sig-util": true, + "eth-json-rpc-middleware>pify": true, "eth-rpc-errors": true, - "eth-sig-util": true, "json-rpc-engine": true, - "json-stable-stringify": true, - "node-fetch": true, - "pify": true, - "safe-event-emitter": true, - "url": true + "json-rpc-engine>@metamask/safe-event-emitter": true, + "lavamoat>json-stable-stringify": true, + "vinyl>clone": true + } + }, + "eth-json-rpc-middleware>eth-sig-util": { + "packages": { + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi": { + "packages": { + "bn.js": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi>ethereumjs-util": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "eth-keyring-controller": { "packages": { - "bip39": true, - "browser-passworder": true, - "buffer": true, - "eth-hd-keyring": true, - "eth-sig-util": true, - "eth-simple-keyring": true, + "browserify>buffer": true, + "browserify>events": true, + "eth-keyring-controller>@metamask/bip39": true, + "eth-keyring-controller>@metamask/eth-hd-keyring": true, + "eth-keyring-controller>browser-passworder": true, + "eth-keyring-controller>eth-simple-keyring": true, + "eth-keyring-controller>obs-store": true, + "eth-sig-util": true + } + }, + "eth-keyring-controller>@metamask/bip39": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>pbkdf2": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>randombytes": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring": { + "packages": { + "browserify>buffer": true, + "eth-keyring-controller>@metamask/bip39": true, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet": true, + "eth-keyring-controller>eth-simple-keyring": true, + "eth-trezor-keyring>@metamask/eth-sig-util": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet": { + "packages": { + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet>uuid": true, "ethereumjs-util": true, - "events": true, - "loglevel": true, - "obs-store": true + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "eth-keyring-controller>@metamask/eth-hd-keyring>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "eth-keyring-controller>browser-passworder": { + "globals": { + "btoa": true, + "crypto": true + }, + "packages": { + "eth-keyring-controller>browser-passworder>browserify-unibabel": true + } + }, + "eth-keyring-controller>browser-passworder>browserify-unibabel": { + "globals": { + "atob": true, + "btoa": true + } + }, + "eth-keyring-controller>eth-simple-keyring": { + "packages": { + "browserify>buffer": true, + "browserify>events": true, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet": true, + "eth-sig-util": true, + "ethereumjs-util": true + } + }, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet": { + "packages": { + "@truffle/codec>utf8": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet>uuid": true, + "ethereumjs-util": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true + } + }, + "eth-keyring-controller>eth-simple-keyring>ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true + } + }, + "eth-keyring-controller>obs-store": { + "packages": { + "safe-event-emitter": true, + "watchify>xtend": true } }, "eth-lattice-keyring": { @@ -1968,20 +4819,133 @@ "addEventListener": true, "browser": true, "clearInterval": true, + "console.warn": true, + "fetch": true, "open": true, - "rlp.encode": true, - "setInterval": true + "setInterval": true, + "txData.type": true }, "packages": { "@ethereumjs/common": true, "@ethereumjs/tx": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "browserify>events": true, + "eth-lattice-keyring>bn.js": true, + "eth-lattice-keyring>gridplus-sdk": true, + "eth-lattice-keyring>rlp": true, + "eth-lattice-keyring>secp256k1": true, + "ethereumjs-util": true + } + }, + "eth-lattice-keyring>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "eth-lattice-keyring>gridplus-sdk": { + "globals": { + "console.warn": true, + "setTimeout": true + }, + "packages": { + "3box>ethers>elliptic": true, + "@ethereumjs/common": true, + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx": true, "bn.js": true, - "buffer": true, - "crypto-browserify": true, - "ethereumjs-util": true, - "events": true, - "gridplus-sdk": true, - "secp256k1": true + "browserify>buffer": true, + "eth-lattice-keyring>gridplus-sdk>bech32": true, + "eth-lattice-keyring>gridplus-sdk>bignumber.js": true, + "eth-lattice-keyring>gridplus-sdk>bitwise": true, + "eth-lattice-keyring>gridplus-sdk>borc": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, + "eth-lattice-keyring>gridplus-sdk>rlp": true, + "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethers>@ethersproject/keccak256>js-sha3": true, + "ethers>@ethersproject/sha2>hash.js": true, + "lodash": true, + "pubnub>superagent": true + } + }, + "eth-lattice-keyring>gridplus-sdk>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, + "eth-lattice-keyring>gridplus-sdk>borc": { + "globals": { + "console": true + }, + "packages": { + "3box>ipfs>iso-url": true, + "browserify>buffer": true, + "browserify>buffer>ieee754": true, + "eth-lattice-keyring>gridplus-sdk>borc>bignumber.js": true + } + }, + "eth-lattice-keyring>gridplus-sdk>borc>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, + "packages": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>bn.js": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>buffer": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser>buffer": { + "globals": { + "console": true + }, + "packages": { + "base64-js": true, + "browserify>buffer>ieee754": true + } + }, + "eth-lattice-keyring>gridplus-sdk>rlp": { + "globals": { + "TextEncoder": true + } + }, + "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "packages": { + "3box>ethers>elliptic": true + } + }, + "eth-lattice-keyring>rlp": { + "globals": { + "TextEncoder": true + } + }, + "eth-lattice-keyring>secp256k1": { + "packages": { + "3box>ethers>elliptic": true } }, "eth-method-registry": { @@ -1989,38 +4953,44 @@ "ethjs": true } }, - "eth-phishing-detect": { - "packages": { - "fast-levenshtein": true - } - }, "eth-query": { "packages": { - "json-rpc-random-id": true, - "xtend": true + "eth-query>json-rpc-random-id": true, + "watchify>xtend": true } }, "eth-rpc-errors": { "packages": { - "fast-safe-stringify": true + "eth-rpc-errors>fast-safe-stringify": true } }, "eth-sig-util": { "packages": { - "buffer": true, - "ethereumjs-abi": true, - "ethereumjs-util": true, - "tweetnacl": true, - "tweetnacl-util": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util": true, + "ethereumjs-abi": true } }, - "eth-simple-keyring": { + "eth-sig-util>ethereumjs-util": { "packages": { - "buffer": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "ethereumjs-wallet": true, - "events": true + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-sig-util>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "eth-trezor-keyring": { @@ -2029,112 +4999,704 @@ }, "packages": { "@ethereumjs/tx": true, - "buffer": true, - "ethereumjs-util": true, - "events": true, - "hdkey": true, - "trezor-connect": true + "browserify>buffer": true, + "browserify>events": true, + "eth-trezor-keyring>hdkey": true, + "eth-trezor-keyring>trezor-connect": true, + "ethereumjs-util": true } }, - "ethereum-bloom-filters": { + "eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { - "js-sha3": true + "3box>tweetnacl": true, + "3box>tweetnacl-util": true, + "browserify>buffer": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethereumjs-util": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, + "ethereumjs-abi": true } }, - "ethereum-cryptography": { + "eth-trezor-keyring>@metamask/eth-sig-util>ethereumjs-util": { "packages": { - "assert": true, - "bs58check": true, - "buffer": true, - "create-hmac": true, - "hash.js": true, - "keccak": true, - "randombytes": true, - "safe-buffer": true, - "secp256k1": true + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "eth-trezor-keyring>hdkey": { + "packages": { + "browserify>assert": true, + "browserify>crypto-browserify": true, + "eth-trezor-keyring>hdkey>coinstring": true, + "eth-trezor-keyring>hdkey>secp256k1": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>coinstring": { + "packages": { + "browserify>buffer": true, + "eth-trezor-keyring>hdkey>coinstring>bs58": true, + "ethereumjs-util>create-hash": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-trezor-keyring>hdkey>secp256k1>bip66": true, + "eth-trezor-keyring>hdkey>secp256k1>drbg.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1>bip66": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "eth-trezor-keyring>hdkey>secp256k1>drbg.js": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true + } + }, + "eth-trezor-keyring>trezor-connect": { + "globals": { + "__TREZOR_CONNECT_SRC": true, + "addEventListener": true, + "btoa": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "document.body": true, + "document.createElement": true, + "document.createTextNode": true, + "document.getElementById": true, + "document.querySelectorAll": true, + "location": true, + "navigator": true, + "open": true, + "removeEventListener": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "3box>graphql-request>cross-fetch": true, + "@babel/runtime": true, + "browserify>events": true, + "eth-trezor-keyring>@metamask/eth-sig-util": true } }, "ethereumjs-abi": { "packages": { "bn.js": true, - "buffer": true, - "ethereumjs-util": true + "browserify>buffer": true, + "ethereumjs-abi>ethereumjs-util": true + } + }, + "ethereumjs-abi>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-abi>ethereumjs-util>ethjs-util": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true + } + }, + "ethereumjs-abi>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true } }, "ethereumjs-util": { "packages": { - "assert": true, - "bn.js": true, - "buffer": true, - "create-hash": true, - "elliptic": true, - "ethereum-cryptography": true, - "ethjs-util": true, - "is-buffer": true, - "keccak": true, - "rlp": true, - "safe-buffer": true, - "secp256k1": true + "browserify>assert": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "ethereumjs-util>bn.js": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>ethjs-util": true, + "ethereumjs-util>rlp": true + } + }, + "ethereumjs-util>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "ethereumjs-util>create-hash": { + "packages": { + "addons-linter>sha.js": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>create-hash>md5.js": true, + "ethereumjs-util>create-hash>ripemd160": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>cipher-base": { + "packages": { + "browserify>stream-browserify": true, + "browserify>string_decoder": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js": { + "packages": { + "ethereumjs-util>create-hash>md5.js>hash-base": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js>hash-base": { + "packages": { + "ethereumjs-util>create-hash>md5.js>hash-base>readable-stream": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>md5.js>hash-base>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>create-hash>ripemd160": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>create-hash>md5.js>hash-base": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography": { + "packages": { + "browserify>assert": true, + "browserify>buffer": true, + "browserify>crypto-browserify>create-hmac": true, + "ethereumjs-util>ethereum-cryptography>keccak": true, + "ethereumjs-util>ethereum-cryptography>secp256k1": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "ethereumjs-util>ethereum-cryptography>blakejs": { + "globals": { + "TextEncoder": true, + "console.log": true + } + }, + "ethereumjs-util>ethereum-cryptography>browserify-aes": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>browserify-cipher>evp_bytestokey": true, + "ethereumjs-util>create-hash>cipher-base": true, + "ethereumjs-util>ethereum-cryptography>browserify-aes>buffer-xor": true, + "ethereumjs-wallet>safe-buffer": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography>browserify-aes>buffer-xor": { + "packages": { + "browserify>buffer": true + } + }, + "ethereumjs-util>ethereum-cryptography>keccak": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>ethereum-cryptography>keccak>readable-stream": true + } + }, + "ethereumjs-util>ethereum-cryptography>keccak>readable-stream": { + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "ethereumjs-util>ethereum-cryptography>secp256k1": { + "packages": { + "3box>ethers>elliptic": true + } + }, + "ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethereumjs-util>rlp": { + "packages": { + "browserify>buffer": true, + "ethereumjs-util>rlp>bn.js": true + } + }, + "ethereumjs-util>rlp>bn.js": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>browser-resolve": true } }, "ethereumjs-wallet": { "packages": { - "aes-js": true, - "bs58check": true, - "buffer": true, - "crypto-browserify": true, - "ethereum-cryptography": true, - "ethereumjs-util": true, - "randombytes": true, - "safe-buffer": true, - "scrypt-js": true, - "scryptsy": true, - "utf8": true, - "uuid": true + "@truffle/codec>utf8": true, + "browserify>crypto-browserify": true, + "ethereumjs-wallet>aes-js": true, + "ethereumjs-wallet>bs58check": true, + "ethereumjs-wallet>ethereumjs-util": true, + "ethereumjs-wallet>randombytes": true, + "ethereumjs-wallet>safe-buffer": true, + "ethereumjs-wallet>scryptsy": true, + "ethereumjs-wallet>uuid": true + } + }, + "ethereumjs-wallet>aes-js": { + "globals": { + "define": true + } + }, + "ethereumjs-wallet>bs58check": { + "packages": { + "3box>ipfs>bs58": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "ethereumjs-wallet>ethereumjs-util": { + "packages": { + "3box>ethers>elliptic": true, + "bn.js": true, + "browserify>assert": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, + "ethereumjs-util>rlp": true, + "ethereumjs-wallet>ethereumjs-util>ethjs-util": true + } + }, + "ethereumjs-wallet>ethereumjs-util>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethereumjs-wallet>randombytes": { + "globals": { + "crypto": true, + "msCrypto": true + }, + "packages": { + "browserify>process": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "ethereumjs-wallet>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "ethereumjs-wallet>scryptsy": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify>pbkdf2": true + } + }, + "ethereumjs-wallet>uuid": { + "globals": { + "crypto": true, + "msCrypto": true } }, "ethers": { + "packages": { + "ethers>@ethersproject/abi": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/base64": true, + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/contracts": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/providers": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/rlp": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/solidity": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/units": true, + "ethers>@ethersproject/wallet": true, + "ethers>@ethersproject/web": true, + "ethers>@ethersproject/wordlists": true + } + }, + "ethers>@ethersproject/abi": { + "globals": { + "console.log": true + }, + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/abstract-provider": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/abstract-signer": { + "packages": { + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/address": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/rlp": true + } + }, + "ethers>@ethersproject/base64": { "globals": { - "MessageChannel": true, - "XMLHttpRequest": true, "atob": true, - "btoa": true, + "btoa": true + }, + "packages": { + "ethers>@ethersproject/bytes": true + } + }, + "ethers>@ethersproject/basex": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/bignumber": { + "packages": { + "bn.js": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/bytes": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/constants": { + "packages": { + "ethers>@ethersproject/bignumber": true + } + }, + "ethers>@ethersproject/contracts": { + "globals": { + "setTimeout": true + }, + "packages": { + "ethers>@ethersproject/abi": true, + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/hash": { + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/hdnode": { + "packages": { + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/pbkdf2": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/wordlists": true + } + }, + "ethers>@ethersproject/json-wallets": { + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets>aes-js": true, + "ethers>@ethersproject/json-wallets>scrypt-js": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/pbkdf2": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/json-wallets>aes-js": { + "globals": { + "define": true + } + }, + "ethers>@ethersproject/json-wallets>scrypt-js": { + "globals": { + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>timers-browserify": true + } + }, + "ethers>@ethersproject/keccak256": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256>js-sha3": true + } + }, + "ethers>@ethersproject/keccak256>js-sha3": { + "globals": { + "define": true + }, + "packages": { + "browserify>process": true + } + }, + "ethers>@ethersproject/logger": { + "globals": { + "console": true + } + }, + "ethers>@ethersproject/networks": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/pbkdf2": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/sha2": true + } + }, + "ethers>@ethersproject/properties": { + "packages": { + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/providers": { + "globals": { + "WebSocket": true, "clearInterval": true, "clearTimeout": true, - "console": true, - "crypto.getRandomValues": true, - "define": true, + "console.log": true, + "console.warn": true, + "name": true, "setInterval": true, "setTimeout": true }, "packages": { - "@ethersproject/abi": true, - "@ethersproject/abstract-signer": true, - "@ethersproject/address": true, - "@ethersproject/base64": true, - "@ethersproject/basex": true, - "@ethersproject/bignumber": true, - "@ethersproject/bytes": true, - "@ethersproject/constants": true, - "@ethersproject/contracts": true, - "@ethersproject/hash": true, - "@ethersproject/hdnode": true, - "@ethersproject/json-wallets": true, - "@ethersproject/keccak256": true, - "@ethersproject/logger": true, - "@ethersproject/properties": true, - "@ethersproject/providers": true, - "@ethersproject/random": true, - "@ethersproject/rlp": true, - "@ethersproject/sha2": true, - "@ethersproject/signing-key": true, - "@ethersproject/solidity": true, - "@ethersproject/strings": true, - "@ethersproject/transactions": true, - "@ethersproject/units": true, - "@ethersproject/wallet": true, - "@ethersproject/web": true, - "@ethersproject/wordlists": true + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/basex": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/networks": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/providers>bech32": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/strings": true, + "ethers>@ethersproject/transactions": true, + "ethers>@ethersproject/web": true + } + }, + "ethers>@ethersproject/random": { + "globals": { + "crypto.getRandomValues": true + }, + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/rlp": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/sha2": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/sha2>hash.js": true + } + }, + "ethers>@ethersproject/sha2>hash.js": { + "packages": { + "3box>ethers>hash.js>minimalistic-assert": true, + "pumpify>inherits": true + } + }, + "ethers>@ethersproject/signing-key": { + "packages": { + "3box>ethers>elliptic": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true + } + }, + "ethers>@ethersproject/solidity": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/sha2": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/strings": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/transactions": { + "globals": { + "console.log": true + }, + "packages": { + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/constants": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/rlp": true, + "ethers>@ethersproject/signing-key": true + } + }, + "ethers>@ethersproject/units": { + "packages": { + "ethers>@ethersproject/bignumber": true, + "ethers>@ethersproject/logger": true + } + }, + "ethers>@ethersproject/wallet": { + "packages": { + "ethers>@ethersproject/abstract-provider": true, + "ethers>@ethersproject/abstract-signer": true, + "ethers>@ethersproject/address": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/hdnode": true, + "ethers>@ethersproject/json-wallets": true, + "ethers>@ethersproject/keccak256": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/random": true, + "ethers>@ethersproject/signing-key": true, + "ethers>@ethersproject/transactions": true + } + }, + "ethers>@ethersproject/web": { + "globals": { + "clearTimeout": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "ethers>@ethersproject/base64": true, + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true + } + }, + "ethers>@ethersproject/wordlists": { + "packages": { + "ethers>@ethersproject/bytes": true, + "ethers>@ethersproject/hash": true, + "ethers>@ethersproject/logger": true, + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/strings": true } }, "ethjs": { @@ -2143,62 +5705,112 @@ "setInterval": true }, "packages": { - "bn.js": true, - "buffer": true, - "ethjs-abi": true, + "browserify>buffer": true, "ethjs-contract": true, - "ethjs-filter": true, - "ethjs-provider-http": true, "ethjs-query": true, - "ethjs-unit": true, - "ethjs-util": true, - "js-sha3": true, - "number-to-bn": true - } - }, - "ethjs-abi": { - "packages": { - "bn.js": true, - "buffer": true, - "js-sha3": true, - "number-to-bn": true + "ethjs>bn.js": true, + "ethjs>ethjs-abi": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-provider-http": true, + "ethjs>ethjs-unit": true, + "ethjs>ethjs-util": true, + "ethjs>js-sha3": true, + "ethjs>number-to-bn": true } }, "ethjs-contract": { "packages": { - "babel-runtime": true, - "ethjs-abi": true, - "ethjs-filter": true, - "ethjs-util": true, - "js-sha3": true, + "ethjs-contract>ethjs-abi": true, + "ethjs-contract>js-sha3": true, + "ethjs-query>babel-runtime": true, + "ethjs>ethjs-filter": true, + "ethjs>ethjs-util": true, "promise-to-callback": true } }, + "ethjs-contract>ethjs-abi": { + "packages": { + "browserify>buffer": true, + "ethjs-contract>ethjs-abi>bn.js": true, + "ethjs-contract>ethjs-abi>js-sha3": true, + "ethjs>number-to-bn": true + } + }, + "ethjs-contract>ethjs-abi>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs-contract>js-sha3": { + "packages": { + "browserify>process": true + } + }, "ethjs-ens": { "packages": { - "eth-ens-namehash": true, "ethereum-ens-network-map": true, - "ethjs-contract": true, - "ethjs-query": true + "ethjs-ens>eth-ens-namehash": true, + "ethjs-ens>ethjs-contract": true, + "ethjs-ens>ethjs-query": true } }, - "ethjs-filter": { + "ethjs-ens>eth-ens-namehash": { + "globals": { + "name": "write" + }, + "packages": { + "browserify>buffer": true, + "ethjs-ens>eth-ens-namehash>idna-uts46": true, + "ethjs-ens>eth-ens-namehash>js-sha3": true + } + }, + "ethjs-ens>eth-ens-namehash>idna-uts46": { + "globals": { + "define": true + }, + "packages": { + "browserify>punycode": true + } + }, + "ethjs-ens>eth-ens-namehash>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs-ens>ethjs-contract": { + "packages": { + "ethjs-contract>ethjs-abi": true, + "ethjs-ens>ethjs-contract>ethjs-filter": true, + "ethjs-ens>ethjs-contract>js-sha3": true, + "ethjs>ethjs-util": true + } + }, + "ethjs-ens>ethjs-contract>ethjs-filter": { "globals": { "clearInterval": true, "setInterval": true } }, - "ethjs-format": { + "ethjs-ens>ethjs-contract>js-sha3": { "packages": { - "ethjs-schema": true, - "ethjs-util": true, - "number-to-bn": true, - "strip-hex-prefix": true + "browserify>process": true } }, - "ethjs-provider-http": { + "ethjs-ens>ethjs-query": { + "globals": { + "console": true + }, "packages": { - "xhr2": true + "ethjs-ens>ethjs-query>ethjs-format": true, + "ethjs-ens>ethjs-query>ethjs-rpc": true + } + }, + "ethjs-ens>ethjs-query>ethjs-format": { + "packages": { + "ethjs-ens>ethjs-query>ethjs-format>ethjs-schema": true, + "ethjs>ethjs-util": true, + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn": true } }, "ethjs-query": { @@ -2206,63 +5818,98 @@ "console": true }, "packages": { - "babel-runtime": true, - "ethjs-format": true, - "ethjs-rpc": true, + "ethjs-query>ethjs-format": true, + "ethjs-query>ethjs-rpc": true, "promise-to-callback": true } }, - "ethjs-rpc": { + "ethjs-query>babel-runtime": { "packages": { - "promise-to-callback": true + "@babel/runtime": true, + "@storybook/api>regenerator-runtime": true, + "ethjs-query>babel-runtime>core-js": true } }, - "ethjs-unit": { - "packages": { - "bn.js": true, - "number-to-bn": true - } - }, - "ethjs-util": { - "packages": { - "buffer": true, - "is-hex-prefixed": true, - "strip-hex-prefix": true - } - }, - "events": { + "ethjs-query>babel-runtime>core-js": { "globals": { - "console": true + "PromiseRejectionEvent": true, + "__e": "write", + "__g": "write", + "document.createTextNode": true, + "postMessage": true, + "setTimeout": true } }, - "evp_bytestokey": { + "ethjs-query>ethjs-format": { "packages": { - "md5.js": true, - "safe-buffer": true + "ethjs-query>ethjs-format>ethjs-schema": true, + "ethjs>ethjs-util": true, + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn": true + } + }, + "ethjs-query>ethjs-rpc": { + "packages": { + "promise-to-callback": true + } + }, + "ethjs>ethjs-abi": { + "packages": { + "browserify>buffer": true, + "ethjs>bn.js": true, + "ethjs>js-sha3": true, + "ethjs>number-to-bn": true + } + }, + "ethjs>ethjs-filter": { + "globals": { + "clearInterval": true, + "setInterval": true + } + }, + "ethjs>ethjs-provider-http": { + "packages": { + "ethjs>ethjs-provider-http>xhr2": true + } + }, + "ethjs>ethjs-provider-http>xhr2": { + "globals": { + "XMLHttpRequest": true + } + }, + "ethjs>ethjs-unit": { + "packages": { + "ethjs>ethjs-unit>bn.js": true, + "ethjs>number-to-bn": true + } + }, + "ethjs>ethjs-util": { + "packages": { + "browserify>buffer": true, + "ethjs>ethjs-util>is-hex-prefixed": true, + "ethjs>ethjs-util>strip-hex-prefix": true + } + }, + "ethjs>ethjs-util>strip-hex-prefix": { + "packages": { + "ethjs>ethjs-util>is-hex-prefixed": true + } + }, + "ethjs>js-sha3": { + "packages": { + "browserify>process": true + } + }, + "ethjs>number-to-bn": { + "packages": { + "ethjs>ethjs-util>strip-hex-prefix": true, + "ethjs>number-to-bn>bn.js": true } }, "extension-port-stream": { "packages": { - "buffer": true, - "stream-browserify": true - } - }, - "faker": { - "globals": { - "console.error": true, - "console.log": true, - "dbg": "write" - } - }, - "fast-check": { - "globals": { - "clearTimeout": true, - "console.log": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "pure-rand": true + "browserify>buffer": true, + "browserify>stream-browserify": true } }, "fast-json-patch": { @@ -2273,29 +5920,7 @@ "setTimeout": true }, "packages": { - "fast-deep-equal": true - } - }, - "fast-levenshtein": { - "globals": { - "Intl": true, - "Levenshtein": "write", - "console.log": true, - "define": true, - "importScripts": true, - "postMessage": true - } - }, - "fs-constants": { - "packages": { - "constants-browserify": true - } - }, - "fsm-event": { - "packages": { - "assert": true, - "events": true, - "fsm": true + "fast-json-patch>fast-deep-equal": true } }, "fuse.js": { @@ -2304,1181 +5929,38 @@ "define": true } }, - "get-browser-rtc": { - "globals": { - "RTCIceCandidate": true, - "RTCPeerConnection": true, - "RTCSessionDescription": true, - "mozRTCIceCandidate": true, - "mozRTCPeerConnection": true, - "mozRTCSessionDescription": true, - "webkitRTCIceCandidate": true, - "webkitRTCPeerConnection": true, - "webkitRTCSessionDescription": true - } - }, - "get-intrinsic": { - "globals": { - "AggregateError": true, - "FinalizationRegistry": true, - "WeakRef": true - }, + "globalthis>define-properties": { "packages": { - "function-bind": true, - "has": true, - "has-symbols": true - } - }, - "graphql-request": { - "globals": { - "fetch": true - }, - "packages": { - "cross-fetch": true - } - }, - "gridplus-sdk": { - "globals": { - "console.error": true, - "console.warn": true, - "setTimeout": true - }, - "packages": { - "@ethereumjs/common": true, - "@ethereumjs/tx": true, - "aes-js": true, - "bech32": true, - "bignumber.js": true, - "bitwise": true, - "borc": true, - "bs58check": true, - "buffer": true, - "crc-32": true, - "elliptic": true, - "eth-eip712-util-browser": true, - "hash.js": true, - "js-sha3": true, - "rlp": true, - "rlp-browser": true, - "secp256k1": true, - "superagent": true - } - }, - "gunzip-maybe": { - "packages": { - "browserify-zlib": true, - "is-deflate": true, - "is-gzip": true, - "peek-stream": true, - "pumpify": true, - "through2": true - } - }, - "hamt-sharding": { - "packages": { - "is-buffer": true, - "sparse-array": true - } - }, - "has": { - "packages": { - "function-bind": true - } - }, - "has-binary2": { - "globals": { - "Blob": true, - "File": true - }, - "packages": { - "buffer": true, - "isarray": true - } - }, - "has-cors": { - "globals": { - "XMLHttpRequest": true - } - }, - "hash-base": { - "packages": { - "inherits": true, - "safe-buffer": true, - "stream-browserify": true - } - }, - "hash.js": { - "packages": { - "inherits": true, - "minimalistic-assert": true - } - }, - "hdkey": { - "packages": { - "assert": true, - "bs58check": true, - "coinstring": true, - "crypto-browserify": true, - "safe-buffer": true, - "secp256k1": true - } - }, - "header-case": { - "packages": { - "no-case": true, - "upper-case": true - } - }, - "heap": { - "globals": { - "define": true - } - }, - "hi-base32": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "history": { - "globals": { - "addEventListener": true, - "confirm": true, - "document": true, - "history": true, - "location": true, - "navigator.userAgent": true, - "removeEventListener": true - }, - "packages": { - "resolve-pathname": true, - "tiny-invariant": true, - "tiny-warning": true, - "value-equal": true - } - }, - "hmac-drbg": { - "packages": { - "hash.js": true, - "minimalistic-assert": true, - "minimalistic-crypto-utils": true - } - }, - "hoist-non-react-statics": { - "packages": { - "react-is": true - } - }, - "https-browserify": { - "packages": { - "stream-http": true, - "url": true - } - }, - "https-did-resolver": { - "globals": { - "XMLHttpRequest": true - }, - "packages": { - "browser-resolve": true, - "did-resolver": true - } - }, - "human-to-milliseconds": { - "packages": { - "promisify-es6": true - } - }, - "idb-readable-stream": { - "globals": { - "IDBKeyRange.bound": true, - "IDBKeyRange.lowerBound": true, - "IDBKeyRange.upperBound": true - }, - "packages": { - "stream-browserify": true, - "xtend": true - } - }, - "idna-uts46": { - "globals": { - "define": true - }, - "packages": { - "punycode": true - } - }, - "idna-uts46-hx": { - "globals": { - "define": true - }, - "packages": { - "punycode": true - } - }, - "immediate": { - "globals": { - "MessageChannel": true, - "MutationObserver": true, - "WebKitMutationObserver": true, - "clearTimeout": true, - "document.createElement": true, - "document.createTextNode": true, - "document.documentElement.appendChild": true, - "setImmediate": true, - "setTimeout": true - }, - "packages": { - "process": true - } - }, - "interface-connection": { - "packages": { - "pull-defer": true - } - }, - "interface-datastore": { - "packages": { - "async": true, - "buffer": true, - "class-is": true, - "err-code": true, - "os-browserify": true, - "path-browserify": true, - "pull-defer": true, - "pull-stream": true, - "uuid": true - } - }, - "ip": { - "packages": { - "buffer": true, - "os-browserify": true - } - }, - "ipfs": { - "globals": { - "AbortController": true, - "clearInterval": true, - "clearTimeout": true, - "console.log": true, - "fetch": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "async": true, - "async-iterator-all": true, - "async-iterator-to-pull-stream": true, - "async-iterator-to-stream": true, - "base32.js": true, - "bignumber.js": true, - "browser-resolve": true, - "buffer": true, - "callbackify": true, - "cids": true, - "class-is": true, - "datastore-core": true, - "datastore-pubsub": true, - "debug": true, - "dlv": true, - "err-code": true, - "events": true, - "fnv1a": true, - "fsm-event": true, - "human-to-milliseconds": true, - "interface-datastore": true, - "ipfs-bitswap": true, - "ipfs-block": true, - "ipfs-block-service": true, - "ipfs-mfs": true, - "ipfs-repo": true, - "ipfs-unixfs": true, - "ipfs-unixfs-exporter": true, - "ipfs-unixfs-importer": true, - "ipfs-utils": true, - "ipld": true, - "ipld-dag-cbor": true, - "ipld-dag-pb": true, - "ipld-raw": true, - "ipns": true, - "is-buffer": true, - "is-ipfs": true, - "is-pull-stream": true, - "is-stream": true, - "iso-url": true, - "just-flatten-it": true, - "kind-of": true, - "libp2p": true, - "libp2p-bootstrap": true, - "libp2p-crypto": true, - "libp2p-kad-dht": true, - "libp2p-keychain": true, - "libp2p-record": true, - "libp2p-secio": true, - "libp2p-webrtc-star": true, - "libp2p-websocket-star-multi": true, - "libp2p-websockets": true, - "mafmt": true, - "merge-options": true, - "multiaddr": true, - "multiaddr-to-uri": true, - "multibase": true, - "multicodec": true, - "multihashes": true, - "multihashing-async": true, - "peer-book": true, - "peer-id": true, - "peer-info": true, - "promisify-es6": true, - "protons": true, - "pull-cat": true, - "pull-defer": true, - "pull-mplex": true, - "pull-pushable": true, - "pull-sort": true, - "pull-stream": true, - "pull-stream-to-async-iterator": true, - "pull-stream-to-stream": true, - "pull-traverse": true, - "readable-stream": true, - "receptacle": true, - "stream-to-pull-stream": true, - "superstruct": true, - "timers-browserify": true, - "varint": true - } - }, - "ipfs-bitswap": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "assert": true, - "async": true, - "bignumber.js": true, - "cids": true, - "debug": true, - "events": true, - "ipfs-block": true, - "just-debounce-it": true, - "lodash.isequalwith": true, - "moving-average": true, - "multicodec": true, - "multihashing-async": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true, - "varint-decoder": true - } - }, - "ipfs-block": { - "packages": { - "cids": true, - "class-is": true, - "is-buffer": true - } - }, - "ipfs-block-service": { - "packages": { - "async": true - } - }, - "ipfs-log": { - "globals": { - "clearTimeout": true, - "console.warn": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "json-stringify-deterministic": true, - "orbit-db-io": true, - "p-each-series": true, - "p-map": true, - "p-whilst": true - } - }, - "ipfs-mfs": { - "globals": { - "Blob": true, - "FileReader": true - }, - "packages": { - "assert": true, - "async-iterator-last": true, - "browser-resolve": true, - "buffer": true, - "cids": true, - "debug": true, - "err-code": true, - "hamt-sharding": true, - "interface-datastore": true, - "ipfs-unixfs": true, - "ipfs-unixfs-exporter": true, - "ipfs-unixfs-importer": true, - "ipld-dag-pb": true, - "mortice": true, - "multicodec": true, - "multihashes": true, - "promisify-es6": true - } - }, - "ipfs-mini": { - "globals": { - "XMLHttpRequest": true - } - }, - "ipfs-pubsub-1on1": { - "globals": { - "clearInterval": true, - "setInterval": true - }, - "packages": { - "events": true, - "path-browserify": true, - "safe-buffer": true - } - }, - "ipfs-pubsub-peer-monitor": { - "globals": { - "clearInterval": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "events": true - } - }, - "ipfs-repo": { - "packages": { - "assert": true, - "async": true, - "base32.js": true, - "bignumber.js": true, - "buffer": true, - "cids": true, - "datastore-core": true, - "datastore-level": true, - "debug": true, - "dlv": true, - "interface-datastore": true, - "ipfs-block": true, - "just-safe-set": true, - "path-browserify": true, - "pull-stream": true, - "sort-keys": true, - "timers-browserify": true - } - }, - "ipfs-unixfs": { - "packages": { - "protons": true - } - }, - "ipfs-unixfs-exporter": { - "packages": { - "async-iterator-last": true, - "buffer": true, - "cids": true, - "err-code": true, - "hamt-sharding": true, - "ipfs-unixfs": true, - "ipfs-unixfs-importer": true, - "is-buffer": true - } - }, - "ipfs-unixfs-importer": { - "packages": { - "async-iterator-all": true, - "async-iterator-batch": true, - "async-iterator-first": true, - "bl": true, - "buffer": true, - "deep-extend": true, - "err-code": true, - "hamt-sharding": true, - "ipfs-unixfs": true, - "ipld-dag-pb": true, - "multicodec": true, - "multihashes": true, - "multihashing-async": true, - "rabin-wasm": true, - "superstruct": true - } - }, - "ipfs-utils": { - "globals": { - "FileReader": true - }, - "packages": { - "is-buffer": true, - "is-pull-stream": true, - "is-stream": true, - "kind-of": true, - "readable-stream": true - } - }, - "ipld": { - "packages": { - "cids": true, - "ipfs-block": true, - "ipld-dag-cbor": true, - "ipld-dag-pb": true, - "ipld-raw": true, - "is-buffer": true, - "merge-options": true, - "multicodec": true, - "promisify-es6": true, - "typical": true - } - }, - "ipld-dag-cbor": { - "packages": { - "borc": true, - "buffer": true, - "cids": true, - "is-buffer": true, - "is-circular": true, - "multicodec": true, - "multihashing-async": true - } - }, - "ipld-dag-pb": { - "packages": { - "assert": true, - "buffer": true, - "cids": true, - "class-is": true, - "is-buffer": true, - "multicodec": true, - "multihashing-async": true, - "protons": true, - "stable": true - } - }, - "ipld-raw": { - "packages": { - "cids": true, - "multicodec": true, - "multihashing-async": true - } - }, - "ipns": { - "packages": { - "base32-encode": true, - "buffer": true, - "debug": true, - "interface-datastore": true, - "libp2p-crypto": true, - "multihashes": true, - "peer-id": true, - "protons": true, - "timestamp-nano": true - } - }, - "is-dom": { - "globals": { - "Node": true - }, - "packages": { - "is-object": true, - "is-window": true - } - }, - "is-in-browser": { - "globals": { - "document": true - } - }, - "is-ip": { - "packages": { - "ip-regex": true - } - }, - "is-ipfs": { - "packages": { - "bs58": true, - "buffer": true, - "cids": true, - "mafmt": true, - "multiaddr": true, - "multibase": true, - "multihashes": true - } - }, - "is-lower-case": { - "packages": { - "lower-case": true - } - }, - "is-regex": { - "packages": { - "call-bind": true, - "has-symbols": true - } - }, - "is-upper-case": { - "packages": { - "upper-case": true - } - }, - "iso-random-stream": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "buffer": true - } - }, - "iso-url": { - "globals": { - "URL": true, - "URLSearchParams": true, - "location": true - } - }, - "isomorphic-fetch": { - "globals": { - "fetch.bind": true - }, - "packages": { - "whatwg-fetch": true - } - }, - "js-base64": { - "globals": { - "Base64": "write", - "TextDecoder": true, - "TextEncoder": true, - "atob": true, - "btoa": true, - "define": true - }, - "packages": { - "buffer": true - } - }, - "js-sha256": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "js-sha3": { - "globals": { - "define": true - }, - "packages": { - "process": true - } - }, - "jsbi": { - "globals": { - "define": true - } - }, - "json-pointer": { - "packages": { - "foreach": true + "nock>deep-equal>object-keys": true } }, "json-rpc-engine": { "packages": { - "@metamask/safe-event-emitter": true, "eth-rpc-errors": true, - "safe-event-emitter": true + "json-rpc-engine>@metamask/safe-event-emitter": true } }, - "json-rpc-middleware-stream": { + "json-rpc-engine>@metamask/safe-event-emitter": { "globals": { "setTimeout": true }, "packages": { - "@metamask/safe-event-emitter": true, - "readable-stream": true + "browserify>events": true } }, - "json-stable-stringify": { + "json-rpc-middleware-stream": { "packages": { - "jsonify": true + "readable-stream": true } }, "jsonschema": { "packages": { - "url": true + "browserify>url": true } }, - "jss": { - "globals": { - "CSS": true, - "document.createElement": true, - "document.querySelector": true - }, + "lavamoat>json-stable-stringify": { "packages": { - "@babel/runtime": true, - "is-in-browser": true, - "tiny-warning": true - } - }, - "jss-plugin-camel-case": { - "packages": { - "hyphenate-style-name": true - } - }, - "jss-plugin-default-unit": { - "globals": { - "CSS": true - }, - "packages": { - "jss": true - } - }, - "jss-plugin-global": { - "packages": { - "@babel/runtime": true, - "jss": true - } - }, - "jss-plugin-nested": { - "packages": { - "@babel/runtime": true, - "tiny-warning": true - } - }, - "jss-plugin-rule-value-function": { - "packages": { - "jss": true, - "tiny-warning": true - } - }, - "jss-plugin-vendor-prefixer": { - "packages": { - "css-vendor": true, - "jss": true - } - }, - "just-debounce-it": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "k-bucket": { - "packages": { - "events": true, - "randombytes": true - } - }, - "keccak": { - "packages": { - "buffer": true, - "inherits": true, - "readable-stream": true, - "safe-buffer": true, - "stream-browserify": true - } - }, - "latency-monitor": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "document": true, - "performance": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "debug": true, - "events": true, - "lodash": true, - "process": true - } - }, - "level-codec": { - "packages": { - "buffer": true - } - }, - "level-errors": { - "packages": { - "errno": true - } - }, - "level-iterator-stream": { - "packages": { - "inherits": true, - "readable-stream": true, - "xtend": true - } - }, - "level-js": { - "globals": { - "IDBKeyRange.bound": true, - "IDBKeyRange.lowerBound": true, - "IDBKeyRange.only": true, - "IDBKeyRange.upperBound": true, - "indexedDB": true - }, - "packages": { - "abstract-leveldown": true, - "buffer": true, - "idb-readable-stream": true, - "immediate": true, - "inherits": true, - "is-buffer": true, - "ltgt": true, - "process": true, - "stream-browserify": true, - "typedarray-to-buffer": true, - "util": true, - "xtend": true - } - }, - "level-supports": { - "packages": { - "xtend": true - } - }, - "levelup": { - "packages": { - "assert": true, - "deferred-leveldown": true, - "events": true, - "level-errors": true, - "level-iterator-stream": true, - "process": true, - "util": true, - "xtend": true - } - }, - "libp2p": { - "packages": { - "async": true, - "debug": true, - "err-code": true, - "events": true, - "fsm-event": true, - "is-buffer": true, - "libp2p-connection-manager": true, - "libp2p-floodsub": true, - "libp2p-ping": true, - "libp2p-switch": true, - "libp2p-websockets": true, - "multiaddr": true, - "once": true, - "peer-book": true, - "peer-id": true, - "peer-info": true, - "process": true, - "superstruct": true - } - }, - "libp2p-bootstrap": { - "globals": { - "clearInterval": true, - "setInterval": true - }, - "packages": { - "async": true, - "debug": true, - "events": true, - "mafmt": true, - "multiaddr": true, - "peer-id": true, - "peer-info": true - } - }, - "libp2p-circuit": { - "packages": { - "async": true, - "debug": true, - "events": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-connection-manager": { - "packages": { - "debug": true, - "events": true, - "latency-monitor": true - } - }, - "libp2p-crypto": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "asn1.js": true, - "async": true, - "browserify-aes": true, - "bs58": true, - "buffer": true, - "iso-random-stream": true, - "libp2p-crypto-secp256k1": true, - "multihashing-async": true, - "node-forge": true, - "protons": true, - "tweetnacl": true - } - }, - "libp2p-crypto-secp256k1": { - "packages": { - "async": true, - "bs58": true, - "multihashing-async": true, - "secp256k1": true - } - }, - "libp2p-floodsub": { - "packages": { - "assert": true, - "async": true, - "debug": true, - "libp2p-pubsub": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-identify": { - "globals": { - "console.warn": true - }, - "packages": { - "buffer": true, - "multiaddr": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-kad-dht": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "abort-controller": true, - "assert": true, - "async": true, - "base32.js": true, - "buffer": true, - "cids": true, - "debug": true, - "err-code": true, - "events": true, - "hashlru": true, - "heap": true, - "interface-datastore": true, - "is-buffer": true, - "k-bucket": true, - "libp2p-crypto": true, - "libp2p-record": true, - "multihashes": true, - "multihashing-async": true, - "p-queue": true, - "p-times": true, - "peer-id": true, - "peer-info": true, - "promise-to-callback": true, - "promisify-es6": true, - "protons": true, - "pull-length-prefixed": true, - "pull-stream": true, - "pull-stream-to-async-iterator": true, - "varint": true, - "xor-distance": true - } - }, - "libp2p-keychain": { - "globals": { - "setTimeout": true - }, - "packages": { - "async": true, - "buffer": true, - "err-code": true, - "interface-datastore": true, - "libp2p-crypto": true, - "merge-options": true, - "node-forge": true, - "pull-stream": true, - "sanitize-filename": true - } - }, - "libp2p-ping": { - "packages": { - "debug": true, - "events": true, - "libp2p-crypto": true, - "pull-handshake": true, - "pull-stream": true - } - }, - "libp2p-pubsub": { - "packages": { - "async": true, - "bs58": true, - "buffer": true, - "debug": true, - "err-code": true, - "events": true, - "is-buffer": true, - "libp2p-crypto": true, - "protons": true, - "pull-length-prefixed": true, - "pull-pushable": true, - "pull-stream": true, - "time-cache": true - } - }, - "libp2p-record": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "buffer-split": true, - "err-code": true, - "is-buffer": true, - "multihashing-async": true, - "protons": true - } - }, - "libp2p-secio": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "debug": true, - "interface-connection": true, - "libp2p-crypto": true, - "multihashing-async": true, - "once": true, - "peer-id": true, - "peer-info": true, - "protons": true, - "pull-defer": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true - } - }, - "libp2p-switch": { - "packages": { - "assert": true, - "async": true, - "bignumber.js": true, - "class-is": true, - "debug": true, - "err-code": true, - "events": true, - "fsm-event": true, - "hashlru": true, - "interface-connection": true, - "libp2p-circuit": true, - "libp2p-identify": true, - "moving-average": true, - "multiaddr": true, - "multistream-select": true, - "once": true, - "peer-id": true, - "peer-info": true, - "pull-stream": true, - "retimer": true - } - }, - "libp2p-webrtc-star": { - "packages": { - "async": true, - "class-is": true, - "debug": true, - "events": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "simple-peer": true, - "socket.io-client": true, - "stream-to-pull-stream": true, - "webrtcsupport": true - } - }, - "libp2p-websocket-star": { - "globals": { - "console.error": true - }, - "packages": { - "async": true, - "buffer": true, - "class-is": true, - "debug": true, - "events": true, - "interface-connection": true, - "libp2p-crypto": true, - "mafmt": true, - "multiaddr": true, - "once": true, - "peer-id": true, - "peer-info": true, - "pull-stream": true, - "socket.io-client": true, - "socket.io-pull-stream": true, - "uuid": true - } - }, - "libp2p-websocket-star-multi": { - "globals": { - "setTimeout": true - }, - "packages": { - "async": true, - "debug": true, - "events": true, - "libp2p-websocket-star": true, - "mafmt": true, - "multiaddr": true, - "once": true - } - }, - "libp2p-websockets": { - "packages": { - "class-is": true, - "debug": true, - "interface-connection": true, - "mafmt": true, - "multiaddr": true, - "multiaddr-to-uri": true, - "os-browserify": true, - "pull-ws": true - } - }, - "locale-currency": { - "globals": { - "countryCode": true + "lavamoat>json-stable-stringify>jsonify": true } }, "localforage": { @@ -3510,13 +5992,9 @@ } }, "lodash": { - "globals": { - "define": true - } - }, - "lodash.throttle": { "globals": { "clearTimeout": true, + "define": true, "setTimeout": true } }, @@ -3529,213 +6007,12 @@ "log": "write" } }, - "logplease": { - "globals": { - "LOG": true, - "console.error": true, - "console.log": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "process": true, - "util": true - } - }, - "lower-case-first": { - "packages": { - "lower-case": true - } - }, - "lru": { - "packages": { - "events": true, - "inherits": true - } - }, - "lru-cache": { - "packages": { - "yallist": true - } - }, - "ltgt": { - "packages": { - "is-buffer": true - } - }, "luxon": { "globals": { "Intl": true } }, - "mafmt": { - "packages": { - "multiaddr": true - } - }, - "md5": { - "packages": { - "charenc": true, - "crypt": true, - "is-buffer": true - } - }, - "md5.js": { - "packages": { - "hash-base": true, - "inherits": true, - "safe-buffer": true - } - }, - "merge-options": { - "packages": { - "is-plain-obj": true - } - }, - "miller-rabin": { - "packages": { - "bn.js": true, - "brorand": true - } - }, - "mini-create-react-context": { - "packages": { - "@babel/runtime": true, - "gud": true, - "prop-types": true, - "react": true, - "tiny-warning": true - } - }, - "mortice": { - "globals": { - "Worker": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "observable-webworkers": true, - "p-queue": true, - "process": true, - "promise-timeout": true, - "shortid": true - } - }, - "multiaddr": { - "packages": { - "bs58": true, - "buffer": true, - "class-is": true, - "hi-base32": true, - "ip": true, - "is-ip": true, - "varint": true - } - }, - "multiaddr-to-uri": { - "packages": { - "multiaddr": true - } - }, - "multibase": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@multiformats/base-x": true, - "base-x": true, - "buffer": true, - "web-encoding": true - } - }, - "multicodec": { - "packages": { - "buffer": true, - "uint8arrays": true, - "varint": true - } - }, - "multiformats": { - "globals": { - "TextDecoder": true, - "TextEncoder": true, - "console.warn": true - } - }, - "multihashes": { - "packages": { - "bs58": true, - "buffer": true, - "multibase": true, - "uint8arrays": true, - "varint": true, - "web-encoding": true - } - }, - "multihashing-async": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "blakejs": true, - "buffer": true, - "err-code": true, - "js-sha3": true, - "multihashes": true, - "murmurhash3js": true, - "murmurhash3js-revisited": true, - "nodeify": true, - "process": true - } - }, - "multistream-select": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "debug": true, - "err-code": true, - "interface-connection": true, - "once": true, - "pull-handshake": true, - "pull-length-prefixed": true, - "pull-stream": true, - "semver": true, - "varint": true - } - }, - "muport-did-resolver": { - "packages": { - "@babel/runtime": true, - "did-resolver": true, - "node-fetch": true - } - }, - "murmurhash3js": { - "globals": { - "define": true - } - }, - "murmurhash3js-revisited": { - "globals": { - "define": true - } - }, - "nanoid": { - "globals": { - "crypto": true, - "msCrypto": true, - "navigator": true - } - }, - "no-case": { - "packages": { - "lower-case": true - } - }, - "node-forge": { + "mockttp>node-forge": { "globals": { "Blob": true, "MutationObserver": true, @@ -3753,364 +6030,65 @@ "setTimeout": true }, "packages": { - "browser-resolve": true, - "process": true, - "timers-browserify": true + "browserify>browser-resolve": true, + "browserify>process": true, + "browserify>timers-browserify": true } }, - "node-interval-tree": { - "packages": { - "shallowequal": true - } - }, - "nodeify": { + "nanoid": { "globals": { - "setTimeout": true - }, - "packages": { - "is-promise": true, - "process": true, - "promise": true, - "timers-browserify": true + "crypto": true, + "msCrypto": true, + "navigator": true } }, - "nofilter": { + "nock>deep-equal": { "packages": { - "buffer": true, - "stream-browserify": true, - "util": true + "enzyme>is-regex": true, + "enzyme>object-is": true, + "nock>deep-equal>is-arguments": true, + "nock>deep-equal>is-date-object": true, + "nock>deep-equal>object-keys": true, + "string.prototype.matchall>regexp.prototype.flags": true + } + }, + "node-fetch": { + "globals": { + "Headers": true, + "Request": true, + "Response": true, + "fetch": true } }, "nonce-tracker": { "packages": { - "assert": true, "await-semaphore": true, + "browserify>assert": true, "ethjs-query": true } }, - "number-to-bn": { - "packages": { - "bn.js": true, - "strip-hex-prefix": true - } - }, "obj-multiplex": { "globals": { "console.warn": true }, "packages": { "end-of-stream": true, - "once": true, + "pump>once": true, "readable-stream": true } }, - "obs-store": { - "packages": { - "safe-event-emitter": true, - "xtend": true - } - }, - "once": { - "packages": { - "wrappy": true - } - }, - "orbit-db": { - "globals": { - "console.log": true - }, - "packages": { - "cids": true, - "ipfs-pubsub-1on1": true, - "logplease": true, - "multihashes": true, - "orbit-db-access-controllers": true, - "orbit-db-cache": true, - "orbit-db-counterstore": true, - "orbit-db-docstore": true, - "orbit-db-eventstore": true, - "orbit-db-feedstore": true, - "orbit-db-identity-provider": true, - "orbit-db-io": true, - "orbit-db-keystore": true, - "orbit-db-kvstore": true, - "orbit-db-pubsub": true, - "path-browserify": true - } - }, - "orbit-db-access-controllers": { - "globals": { - "console.log": true - }, - "packages": { - "events": true, - "orbit-db-io": true, - "p-map-series": true, - "path-browserify": true, - "safe-buffer": true - } - }, - "orbit-db-cache": { - "packages": { - "level-js": true, - "logplease": true, - "path-browserify": true - } - }, - "orbit-db-counterstore": { - "packages": { - "crdts": true, - "orbit-db-store": true - } - }, - "orbit-db-docstore": { - "packages": { - "orbit-db-store": true, - "p-map": true, - "readable-stream": true - } - }, - "orbit-db-eventstore": { - "packages": { - "orbit-db-store": true - } - }, - "orbit-db-feedstore": { - "packages": { - "orbit-db-eventstore": true - } - }, - "orbit-db-identity-provider": { - "packages": { - "orbit-db-keystore": true - } - }, - "orbit-db-io": { - "packages": { - "buffer": true, - "cids": true, - "ipld-dag-pb": true - } - }, - "orbit-db-keystore": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "elliptic": true, - "level-js": true, - "levelup": true, - "libp2p-crypto": true, - "lru": true, - "safe-buffer": true, - "secp256k1": true - } - }, - "orbit-db-kvstore": { - "packages": { - "orbit-db-store": true - } - }, - "orbit-db-pubsub": { - "packages": { - "buffer": true, - "ipfs-pubsub-peer-monitor": true, - "logplease": true, - "p-series": true - } - }, - "orbit-db-store": { - "globals": { - "clearInterval": true, - "console.error": true, - "console.warn": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "events": true, - "ipfs-log": true, - "logplease": true, - "orbit-db-io": true, - "p-each-series": true, - "p-map": true, - "readable-stream": true - } - }, - "os-browserify": { - "globals": { - "location": true, - "navigator": true - } - }, - "p-each-series": { - "packages": { - "p-reduce": true - } - }, - "p-map-series": { - "packages": { - "p-reduce": true - } - }, - "p-queue": { - "globals": { - "clearInterval": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "eventemitter3": true - } - }, - "p-series": { - "packages": { - "@sindresorhus/is": true, - "p-reduce": true - } - }, - "p-times": { - "packages": { - "p-map": true - } - }, - "param-case": { - "packages": { - "no-case": true - } - }, - "parse-asn1": { - "packages": { - "asn1.js": true, - "browserify-aes": true, - "buffer": true, - "evp_bytestokey": true, - "pbkdf2": true - } - }, - "pascal-case": { - "packages": { - "camel-case": true, - "upper-case-first": true - } - }, - "path-browserify": { - "packages": { - "process": true - } - }, - "path-case": { - "packages": { - "no-case": true - } - }, - "path-to-regexp": { - "packages": { - "isarray": true - } - }, - "pbkdf2": { - "globals": { - "crypto": true, - "process": true - }, - "packages": { - "create-hash": true, - "process": true, - "ripemd160": true, - "safe-buffer": true, - "sha.js": true - } - }, - "peek-stream": { - "packages": { - "buffer": true, - "buffer-from": true, - "duplexify": true, - "through2": true - } - }, - "peer-book": { - "packages": { - "bs58": true, - "is-buffer": true, - "peer-id": true, - "peer-info": true - } - }, - "peer-id": { - "packages": { - "assert": true, - "async": true, - "buffer": true, - "class-is": true, - "libp2p-crypto": true, - "multihashes": true - } - }, - "peer-info": { - "packages": { - "assert": true, - "multiaddr": true, - "peer-id": true, - "unique-by": true - } - }, - "popper.js": { - "globals": { - "MSInputMethodContext": true, - "Node.DOCUMENT_POSITION_FOLLOWING": true, - "cancelAnimationFrame": true, - "console.warn": true, - "define": true, - "devicePixelRatio": true, - "document": true, - "getComputedStyle": true, - "innerHeight": true, - "innerWidth": true, - "navigator": true, - "requestAnimationFrame": true, - "setTimeout": true - } - }, - "precond": { - "packages": { - "util": true - } - }, - "process": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "process-nextick-args": { - "packages": { - "process": true - } - }, - "promise": { - "globals": { - "setImediate": true, - "setTimeout": true - }, - "packages": { - "is-promise": true, - "process": true - } - }, - "promise-timeout": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, "promise-to-callback": { "packages": { - "is-fn": true, - "set-immediate-shim": true + "promise-to-callback>is-fn": true, + "promise-to-callback>set-immediate-shim": true + } + }, + "promise-to-callback>set-immediate-shim": { + "globals": { + "setTimeout.apply": true + }, + "packages": { + "browserify>timers-browserify": true } }, "prop-types": { @@ -4118,28 +6096,13 @@ "console": true }, "packages": { - "object-assign": true, - "react-is": true + "prop-types>react-is": true, + "react>object-assign": true } }, - "protons": { - "packages": { - "buffer": true, - "is-buffer": true, - "protocol-buffers-schema": true, - "safe-buffer": true, - "signed-varint": true, - "varint": true - } - }, - "public-encrypt": { - "packages": { - "bn.js": true, - "browserify-rsa": true, - "buffer": true, - "create-hash": true, - "parse-asn1": true, - "randombytes": true + "prop-types>react-is": { + "globals": { + "console": true } }, "pubnub": { @@ -4160,110 +6123,40 @@ "setTimeout": true } }, - "pull-handshake": { - "packages": { - "pull-cat": true, - "pull-pair": true, - "pull-pushable": true, - "pull-reader": true - } - }, - "pull-length-prefixed": { - "packages": { - "pull-pushable": true, - "pull-reader": true, - "safe-buffer": true, - "varint": true - } - }, - "pull-mplex": { - "packages": { - "async": true, - "buffer": true, - "debug": true, - "events": true, - "interface-connection": true, - "looper": true, - "pull-abortable": true, - "pull-pushable": true, - "pull-stream": true, - "pull-through": true, - "varint": true - } - }, - "pull-reader": { + "pubnub>cbor-sync": { "globals": { - "cb": true, + "define": true + }, + "packages": { + "browserify>buffer": true + } + }, + "pubnub>superagent": { + "globals": { + "ActiveXObject": true, + "XMLHttpRequest": true, + "btoa": true, "clearTimeout": true, + "console.error": true, + "console.trace": true, + "console.warn": true, "setTimeout": true }, "packages": { - "buffer": true - } - }, - "pull-sort": { - "packages": { - "pull-defer": true, - "pull-stream": true - } - }, - "pull-stream": { - "globals": { - "console.log": true - } - }, - "pull-stream-to-async-iterator": { - "packages": { - "pull-stream": true - } - }, - "pull-stream-to-stream": { - "packages": { - "process": true, - "stream-browserify": true, - "timers-browserify": true - } - }, - "pull-through": { - "packages": { - "looper": true - } - }, - "pull-ws": { - "globals": { - "WebSocket": true, - "location": true - }, - "packages": { - "browser-resolve": true, - "events": true, - "https-browserify": true, - "process": true, - "relative-url": true, - "safe-buffer": true, - "stream-http": true, - "timers-browserify": true, - "url": true + "pubnub>superagent>component-emitter": true } }, "pump": { "packages": { - "browser-resolve": true, + "browserify>browser-resolve": true, + "browserify>process": true, "end-of-stream": true, - "once": true, - "process": true + "pump>once": true } }, - "pumpify": { + "pump>once": { "packages": { - "duplexify": true, - "inherits": true, - "pump": true - } - }, - "punycode": { - "globals": { - "define": true + "pump>once>wrappy": true } }, "qrcode-generator": { @@ -4278,39 +6171,13 @@ }, "packages": { "prop-types": true, - "qr.js": true, + "qrcode.react>qr.js": true, "react": true } }, - "rabin-wasm": { - "globals": { - "Blob": true, - "Response": true, - "WebAssembly": true - }, + "rc>deep-extend": { "packages": { - "assemblyscript": true - } - }, - "randombytes": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "process": true, - "safe-buffer": true - } - }, - "randomfill": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "process": true, - "randombytes": true, - "safe-buffer": true + "browserify>buffer": true } }, "react": { @@ -4318,8 +6185,25 @@ "console": true }, "packages": { - "object-assign": true, - "prop-types": true + "prop-types": true, + "react>object-assign": true + } + }, + "react-devtools": { + "packages": { + "react-devtools>react-devtools-core": true + } + }, + "react-devtools>ip": { + "packages": { + "browserify>buffer": true, + "browserify>os-browserify": true + } + }, + "react-devtools>react-devtools-core": { + "globals": { + "WebSocket": true, + "setTimeout": true } }, "react-dnd": { @@ -4327,14 +6211,14 @@ "console.error": true }, "packages": { - "disposables": true, - "dnd-core": true, - "hoist-non-react-statics": true, - "invariant": true, "lodash": true, "prop-types": true, "react": true, - "shallowequal": true + "react-dnd>disposables": true, + "react-dnd>dnd-core": true, + "react-dnd>hoist-non-react-statics": true, + "react-dnd>invariant": true, + "react-dnd>shallowequal": true } }, "react-dnd-html5-backend": { @@ -4348,8 +6232,26 @@ "setTimeout": true } }, + "react-dnd>dnd-core": { + "packages": { + "lodash": true, + "react-dnd>dnd-core>asap": true, + "react-dnd>invariant": true, + "redux": true + } + }, + "react-dnd>dnd-core>asap": { + "globals": { + "clearInterval": true, + "clearTimeout": true, + "document.createTextNode": true, + "setInterval": true, + "setTimeout": true + } + }, "react-dom": { "globals": { + "HTMLIFrameElement": true, "MSApp": true, "__REACT_DEVTOOLS_GLOBAL_HOOK__": true, "addEventListener": true, @@ -4370,28 +6272,22 @@ "trustedTypes": true }, "packages": { - "object-assign": true, "prop-types": true, "react": true, - "scheduler": true + "react-dom>scheduler": true, + "react>object-assign": true } }, - "react-easy-swipe": { + "react-dom>scheduler": { "globals": { - "addEventListener": true, - "define": true, - "document.addEventListener": true, - "document.removeEventListener": true - }, - "packages": { - "prop-types": true, - "react": true - } - }, - "react-fast-compare": { - "globals": { - "Element": true, - "console.warn": true + "MessageChannel": true, + "cancelAnimationFrame": true, + "clearTimeout": true, + "console": true, + "navigator": true, + "performance": true, + "requestAnimationFrame": true, + "setTimeout": true } }, "react-idle-timer": { @@ -4417,15 +6313,19 @@ "Node.TEXT_NODE": true }, "packages": { - "babel-runtime": true, - "is-dom": true, + "ethjs-query>babel-runtime": true, "prop-types": true, - "react": true + "react": true, + "react-inspector>is-dom": true } }, - "react-is": { + "react-inspector>is-dom": { "globals": { - "console": true + "Node": true + }, + "packages": { + "proxyquire>fill-keys>is-object": true, + "react-inspector>is-dom>is-window": true } }, "react-popper": { @@ -4435,8 +6335,19 @@ "packages": { "@popperjs/core": true, "react": true, - "react-fast-compare": true, - "warning": true + "react-popper>react-fast-compare": true, + "react-popper>warning": true + } + }, + "react-popper>react-fast-compare": { + "globals": { + "Element": true, + "console.warn": true + } + }, + "react-popper>warning": { + "globals": { + "console": true } }, "react-redux": { @@ -4446,14 +6357,19 @@ }, "packages": { "@babel/runtime": true, - "hoist-non-react-statics": true, "prop-types": true, + "prop-types>react-is": true, "react": true, "react-dom": true, - "react-is": true, + "react-redux>hoist-non-react-statics": true, "redux": true } }, + "react-redux>hoist-non-react-statics": { + "packages": { + "prop-types>react-is": true + } + }, "react-responsive-carousel": { "globals": { "HTMLElement": true, @@ -4467,30 +6383,90 @@ "classnames": true, "react": true, "react-dom": true, - "react-easy-swipe": true + "react-responsive-carousel>react-easy-swipe": true } }, - "react-router": { + "react-responsive-carousel>react-easy-swipe": { + "globals": { + "addEventListener": true, + "define": true, + "document.addEventListener": true, + "document.removeEventListener": true + }, "packages": { - "history": true, - "hoist-non-react-statics": true, - "mini-create-react-context": true, - "path-to-regexp": true, "prop-types": true, - "react": true, - "react-is": true, - "tiny-invariant": true, - "tiny-warning": true + "react": true } }, "react-router-dom": { "packages": { - "history": true, "prop-types": true, "react": true, - "react-router": true, - "tiny-invariant": true, - "tiny-warning": true + "react-router-dom>history": true, + "react-router-dom>react-router": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>history": { + "globals": { + "addEventListener": true, + "confirm": true, + "document": true, + "history": true, + "location": true, + "navigator.userAgent": true, + "removeEventListener": true + }, + "packages": { + "react-router-dom>history>resolve-pathname": true, + "react-router-dom>history>value-equal": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>react-router": { + "packages": { + "prop-types": true, + "prop-types>react-is": true, + "react": true, + "react-redux>hoist-non-react-statics": true, + "react-router-dom>react-router>history": true, + "react-router-dom>react-router>mini-create-react-context": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true, + "sinon>nise>path-to-regexp": true + } + }, + "react-router-dom>react-router>history": { + "globals": { + "addEventListener": true, + "confirm": true, + "document": true, + "history": true, + "location": true, + "navigator.userAgent": true, + "removeEventListener": true + }, + "packages": { + "react-router-dom>history>resolve-pathname": true, + "react-router-dom>history>value-equal": true, + "react-router-dom>tiny-invariant": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>react-router>mini-create-react-context": { + "packages": { + "@babel/runtime": true, + "@storybook/api>@reach/router>create-react-context>gud": true, + "prop-types": true, + "react": true, + "react-router-dom>tiny-warning": true + } + }, + "react-router-dom>tiny-warning": { + "globals": { + "console": true } }, "react-simple-file-input": { @@ -4526,9 +6502,26 @@ "setTimeout": true }, "packages": { - "popper.js": true, "react": true, - "react-dom": true + "react-dom": true, + "react-tippy>popper.js": true + } + }, + "react-tippy>popper.js": { + "globals": { + "MSInputMethodContext": true, + "Node.DOCUMENT_POSITION_FOLLOWING": true, + "cancelAnimationFrame": true, + "console.warn": true, + "define": true, + "devicePixelRatio": true, + "document": true, + "getComputedStyle": true, + "innerHeight": true, + "innerWidth": true, + "navigator.userAgent": true, + "requestAnimationFrame": true, + "setTimeout": true } }, "react-toggle-button": { @@ -4545,47 +6538,65 @@ }, "react-transition-group": { "globals": { - "Element": true, "clearTimeout": true, "setTimeout": true }, "packages": { - "chain-function": true, - "dom-helpers": true, "prop-types": true, "react": true, "react-dom": true, - "warning": true + "react-transition-group>chain-function": true, + "react-transition-group>dom-helpers": true, + "react-transition-group>warning": true + } + }, + "react-transition-group>dom-helpers": { + "globals": { + "document": true, + "setTimeout": true + }, + "packages": { + "@babel/runtime": true + } + }, + "react-transition-group>warning": { + "globals": { + "console": true } }, "readable-stream": { "packages": { - "browser-resolve": true, - "buffer": true, - "core-util-is": true, - "events": true, - "inherits": true, - "isarray": true, - "process": true, - "process-nextick-args": true, - "safe-buffer": true, - "string_decoder": true, - "timers-browserify": true, - "util-deprecate": true + "@storybook/api>util-deprecate": true, + "browserify>browser-resolve": true, + "browserify>events": true, + "browserify>process": true, + "browserify>timers-browserify": true, + "pumpify>inherits": true, + "readable-stream>core-util-is": true, + "readable-stream>isarray": true, + "readable-stream>process-nextick-args": true, + "readable-stream>safe-buffer": true, + "readable-stream>string_decoder": true } }, - "readable-web-to-node-stream": { + "readable-stream>core-util-is": { "packages": { - "readable-stream": true + "browserify>insert-module-globals>is-buffer": true } }, - "receptacle": { - "globals": { - "clearTimeout": true, - "setTimeout": true - }, + "readable-stream>process-nextick-args": { "packages": { - "ms": true + "browserify>process": true + } + }, + "readable-stream>safe-buffer": { + "packages": { + "browserify>buffer": true + } + }, + "readable-stream>string_decoder": { + "packages": { + "readable-stream>safe-buffer": true } }, "redux": { @@ -4596,324 +6607,60 @@ "@babel/runtime": true } }, - "regenerator-runtime": { - "globals": { - "regeneratorRuntime": "write" - } - }, - "regexp.prototype.flags": { - "packages": { - "call-bind": true, - "define-properties": true - } - }, - "relative-url": { - "packages": { - "url": true - } - }, - "retimer": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "ripemd160": { - "packages": { - "buffer": true, - "hash-base": true, - "inherits": true - } - }, - "rlp": { - "globals": { - "TextEncoder": true - }, - "packages": { - "bn.js": true, - "buffer": true - } - }, - "rlp-browser": { - "packages": { - "assert": true, - "buffer": true - } - }, - "safe-buffer": { - "packages": { - "buffer": true - } - }, "safe-event-emitter": { "globals": { "setTimeout": true }, "packages": { - "events": true, - "util": true - } - }, - "sanitize-filename": { - "packages": { - "truncate-utf8-bytes": true - } - }, - "scheduler": { - "globals": { - "MessageChannel": true, - "cancelAnimationFrame": true, - "clearTimeout": true, - "console": true, - "navigator": true, - "performance": true, - "requestAnimationFrame": true, - "setTimeout": true - } - }, - "scrypt-js": { - "globals": { - "define": true, - "setTimeout": true - }, - "packages": { - "timers-browserify": true - } - }, - "scryptsy": { - "packages": { - "buffer": true, - "pbkdf2": true - } - }, - "secp256k1": { - "packages": { - "bip66": true, - "bn.js": true, - "create-hash": true, - "drbg.js": true, - "elliptic": true, - "is-buffer": true, - "safe-buffer": true - } - }, - "semaphore": { - "globals": { - "define": true, - "setTimeout": true - }, - "packages": { - "process": true + "3box>events": true, + "browserify>util": true } }, "semver": { - "globals": { - "console": true - }, - "packages": { - "lru-cache": true, - "process": true - } - }, - "sentence-case": { - "packages": { - "no-case": true, - "upper-case-first": true - } - }, - "set-immediate-shim": { - "globals": { - "setTimeout.apply": true - }, - "packages": { - "timers-browserify": true - } - }, - "sha.js": { - "packages": { - "inherits": true, - "safe-buffer": true - } - }, - "shortid": { - "globals": { - "crypto": true, - "msCrypto": true - }, - "packages": { - "nanoid": true - } - }, - "signed-varint": { - "packages": { - "varint": true - } - }, - "simple-peer": { - "globals": { - "clearInterval": true, - "console.warn": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "buffer": true, - "debug": true, - "get-browser-rtc": true, - "inherits": true, - "randombytes": true, - "readable-stream": true - } - }, - "snake-case": { - "packages": { - "no-case": true - } - }, - "socket.io-client": { - "globals": { - "clearTimeout": true, - "location": true, - "setTimeout": true - }, - "packages": { - "backo2": true, - "component-bind": true, - "component-emitter": true, - "debug": true, - "engine.io-client": true, - "has-binary2": true, - "indexof": true, - "parseqs": true, - "parseuri": true, - "socket.io-parser": true, - "to-array": true - } - }, - "socket.io-parser": { - "globals": { - "Blob": true, - "File": true, - "FileReader": true - }, - "packages": { - "buffer": true, - "component-emitter": true, - "debug": true, - "isarray": true - } - }, - "socket.io-pull-stream": { "globals": { "console.error": true }, "packages": { - "buffer": true, - "data-queue": true, - "debug": true, - "pull-stream": true, - "uuid": true + "browserify>process": true, + "semver>lru-cache": true } }, - "sort-keys": { + "semver>lru-cache": { "packages": { - "is-plain-obj": true + "semver>lru-cache>yallist": true } }, - "stable": { - "globals": { - "define": true - } - }, - "store": { - "globals": { - "ActiveXObject": true, - "console": true - } - }, - "stream-browserify": { + "sinon>nise>path-to-regexp": { "packages": { - "events": true, - "inherits": true, - "readable-stream": true + "sinon>nise>path-to-regexp>isarray": true } }, - "stream-http": { - "globals": { - "AbortController": true, - "Blob": true, - "MSStreamReader": true, - "ReadableStream": true, - "WritableStream": true, - "XDomainRequest": true, - "XMLHttpRequest": true, - "clearTimeout": true, - "fetch": true, - "location.protocol.search": true, - "setTimeout": true - }, + "source-map-explorer>btoa": { "packages": { - "buffer": true, - "builtin-status-codes": true, - "inherits": true, - "process": true, - "readable-stream": true, - "url": true, - "xtend": true + "browserify>buffer": true } }, - "stream-to-pull-stream": { - "globals": { - "console.error": true - }, + "string.prototype.matchall>call-bind": { "packages": { - "looper": true, - "process": true, - "pull-stream": true + "eslint-plugin-react>array-includes>get-intrinsic": true, + "mocha>object.assign>function-bind": true } }, - "string_decoder": { + "string.prototype.matchall>regexp.prototype.flags": { "packages": { - "safe-buffer": true + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true } }, - "strip-hex-prefix": { + "stylelint>write-file-atomic>typedarray-to-buffer": { "packages": { - "is-hex-prefixed": true + "browserify>buffer": true, + "jsdom>request>is-typedarray": true } }, - "superagent": { - "globals": { - "ActiveXObject": true, - "XMLHttpRequest": true, - "btoa": true, - "clearTimeout": true, - "console.error": true, - "console.trace": true, - "console.warn": true, - "setTimeout": true - }, + "terser>source-map-support>buffer-from": { "packages": { - "component-emitter": true - } - }, - "swap-case": { - "packages": { - "lower-case": true, - "upper-case": true - } - }, - "tar-stream": { - "packages": { - "bl": true, - "buffer": true, - "end-of-stream": true, - "fs-constants": true, - "inherits": true, - "process": true, - "readable-stream": true, - "string_decoder": true, - "util": true + "browserify>buffer": true } }, "textarea-caret": { @@ -4927,248 +6674,36 @@ "mozInnerScreenX": true } }, - "through": { - "packages": { - "process": true, - "stream-browserify": true - } - }, - "through2": { - "packages": { - "process": true, - "readable-stream": true, - "util": true, - "xtend": true - } - }, - "time-cache": { - "packages": { - "lodash.throttle": true - } - }, - "timers-browserify": { - "globals": { - "clearInterval": true, - "clearTimeout": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "process": true - } - }, - "tiny-warning": { - "globals": { - "console": true - } - }, - "title-case": { - "packages": { - "no-case": true, - "upper-case": true - } - }, - "toggle-selection": { - "globals": { - "document.activeElement": true, - "document.getSelection": true - } - }, - "trezor-connect": { - "globals": { - "__TREZOR_CONNECT_SRC": true, - "addEventListener": true, - "btoa": true, - "chrome": true, - "clearInterval": true, - "clearTimeout": true, - "console": true, - "document.body": true, - "document.createElement": true, - "document.createTextNode": true, - "document.getElementById": true, - "document.querySelectorAll": true, - "location": true, - "navigator": true, - "open": true, - "removeEventListener": true, - "setInterval": true, - "setTimeout": true - }, - "packages": { - "@babel/runtime": true, - "@metamask/eth-sig-util": true, - "cross-fetch": true, - "events": true - } - }, - "truncate-utf8-bytes": { - "packages": { - "utf8-byte-length": true - } - }, - "tslib": { - "globals": { - "define": true - } - }, - "tweetnacl": { - "globals": { - "crypto": true, - "msCrypto": true, - "nacl": "write" - }, - "packages": { - "browser-resolve": true - } - }, - "tweetnacl-util": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "browser-resolve": true - } - }, - "typedarray-to-buffer": { - "packages": { - "buffer": true, - "is-typedarray": true - } - }, - "typical": { - "globals": { - "define": true - } - }, - "uint8arrays": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "multibase": true, - "web-encoding": true - } - }, - "unorm": { - "globals": { - "define": true - } - }, - "uport-base64url": { - "packages": { - "buffer": true - } - }, - "upper-case-first": { - "packages": { - "upper-case": true - } - }, - "url": { - "packages": { - "punycode": true, - "querystring-es3": true - } - }, - "utf8": { - "globals": { - "define": true - } - }, - "util": { - "globals": { - "console.error": true, - "console.log": true, - "console.trace": true, - "process": true - }, - "packages": { - "inherits": true, - "process": true - } - }, - "util-deprecate": { - "globals": { - "console.trace": true, - "console.warn": true, - "localStorage": true - } - }, "uuid": { "globals": { "crypto": true, "msCrypto": true } }, - "varint-decoder": { + "vinyl>clone": { "packages": { - "is-buffer": true, - "varint": true + "browserify>buffer": true } }, - "vm-browserify": { - "globals": { - "document.body.appendChild": true, - "document.body.removeChild": true, - "document.createElement": true - } - }, - "warning": { - "globals": { - "console": true - } - }, - "web-encoding": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, + "vinyl>cloneable-readable>process-nextick-args": { "packages": { - "util": true + "browserify>process": true } }, "web3": { "globals": { "Web3": "write", - "XMLHttpRequest": "write", + "XMLHttpRequest": true, "clearTimeout": true, "console.error": true, "setTimeout": true }, "packages": { - "bignumber.js": true, - "buffer": true, - "crypto-js": true, - "utf8": true, - "xhr2-cookies": true - } - }, - "web3-provider-engine": { - "globals": { - "WebSocket": true, - "console": true, - "setTimeout": true - }, - "packages": { - "@ethereumjs/tx": true, - "async": true, - "backoff": true, - "browser-resolve": true, - "buffer": true, - "eth-block-tracker": true, - "eth-json-rpc-filters": true, - "eth-json-rpc-infura": true, - "eth-json-rpc-middleware": true, - "eth-sig-util": true, - "ethereumjs-util": true, - "events": true, - "json-stable-stringify": true, - "semaphore": true, - "util": true, - "xtend": true + "browserify>buffer": true, + "web3>bignumber.js": true, + "web3>crypto-js": true, + "web3>utf8": true, + "web3>xhr2-cookies": true } }, "web3-stream-provider": { @@ -5176,24 +6711,52 @@ "setTimeout": true }, "packages": { + "browserify>util": true, "readable-stream": true, - "util": true, - "uuid": true + "web3-stream-provider>uuid": true } }, - "web3-utils": { + "web3-stream-provider>uuid": { "globals": { - "setTimeout": true + "crypto": true, + "msCrypto": true + } + }, + "web3>bignumber.js": { + "globals": { + "define": true }, "packages": { - "bn.js": true, - "eth-lib": true, - "ethereum-bloom-filters": true, - "ethjs-unit": true, - "is-buffer": true, - "number-to-bn": true, - "randombytes": true, - "utf8": true + "browserify>crypto-browserify": true + } + }, + "web3>crypto-js": { + "globals": { + "define": true + } + }, + "web3>utf8": { + "globals": { + "define": true + } + }, + "web3>xhr2-cookies": { + "globals": { + "console.warn": true + }, + "packages": { + "browserify>buffer": true, + "browserify>https-browserify": true, + "browserify>os-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>url": true, + "web3>xhr2-cookies>cookiejar": true + } + }, + "web3>xhr2-cookies>cookiejar": { + "globals": { + "console.warn": true } }, "webextension-polyfill": { @@ -5205,61 +6768,9 @@ "define": true } }, - "webrtcsupport": { - "globals": { - "AudioContext": true, - "MediaStream": true, - "RTCIceCandidate": true, - "RTCPeerConnection": true, - "RTCSessionDescription": true, - "document": true, - "location.protocol": true, - "mozRTCIceCandidate": true, - "mozRTCPeerConnection": true, - "mozRTCSessionDescription": true, - "navigator.getUserMedia": true, - "navigator.mozGetUserMedia": true, - "navigator.msGetUserMedia": true, - "navigator.userAgent.match": true, - "navigator.webkitGetUserMedia": true, - "webkitAudioContext": true, - "webkitMediaStream": true, - "webkitRTCPeerConnection": true - } - }, - "whatwg-fetch": { - "globals": { - "Blob": true, - "FileReader": true, - "FormData": true, - "URLSearchParams.prototype.isPrototypeOf": true, - "XMLHttpRequest": true, - "define": true, - "setTimeout": true - } - }, - "xhr2": { - "globals": { - "XMLHttpRequest": true - } - }, - "xhr2-cookies": { - "globals": { - "console.warn": true - }, + "webpack>memory-fs>errno": { "packages": { - "buffer": true, - "cookiejar": true, - "https-browserify": true, - "os-browserify": true, - "process": true, - "stream-http": true, - "url": true - } - }, - "xor-distance": { - "packages": { - "buffer": true + "webpack>memory-fs>errno>prr": true } } } diff --git a/lavamoat/browserify/policy-override.json b/lavamoat/browserify/policy-override.json new file mode 100644 index 000000000..212074b38 --- /dev/null +++ b/lavamoat/browserify/policy-override.json @@ -0,0 +1,109 @@ +{ + "resources": { + "browserify>browser-resolve": { + "packages": { + "ethjs-query>babel-runtime>core-js": true + } + }, + "ethjs-query>babel-runtime": { + "packages": { + "@babel/runtime": true + } + }, + "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>node-fetch": { + "globals": { + "fetch": true + } + }, + "@metamask/controllers>web3-provider-engine>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "3box>graphql-request>cross-fetch>node-fetch": { + "globals": { + "fetch": true + } + }, + "lodash": { + "globals": { + "setTimeout": true, + "clearTimeout": true + } + }, + "ethers>@ethersproject/random": { + "globals": { + "crypto.getRandomValues": true + } + }, + "eth-keyring-controller>browser-passworder": { + "globals": { + "crypto": true + } + }, + "ethereumjs-wallet>randombytes": { + "globals": { + "crypto.getRandomValues": true + } + }, + "web3": { + "globals": { + "XMLHttpRequest": true + } + }, + "react-dom": { + "globals": { + "HTMLIFrameElement": true + } + }, + "react-devtools": { + "packages": { + "react-devtools>react-devtools-core": true + } + }, + "react-devtools>react-devtools-core": { + "globals": { + "setTimeout": true, + "WebSocket": true + } + }, + "node-fetch": { + "globals": { + "fetch": true, + "Headers": true, + "Request": true, + "Response": true + } + }, + "nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/snap-controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "@metamask/smart-transactions-controller>@metamask/controllers>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "depcheck>@vue/compiler-sfc>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + }, + "dependency-tree>precinct>detective-postcss>postcss>nanoid": { + "globals": { + "crypto.getRandomValues": true + } + } + } +} diff --git a/lavamoat/build-system/policy-override.json b/lavamoat/build-system/policy-override.json index 709d24252..b0f3f75a7 100644 --- a/lavamoat/build-system/policy-override.json +++ b/lavamoat/build-system/policy-override.json @@ -2,20 +2,20 @@ "resources": { "@babel/core": { "packages": { - "": true, + "$root$": true, + "@babel/preset-env": true, + "@babel/preset-react": true, + "@babel/plugin-transform-runtime": true, "@babel/plugin-proposal-class-properties": true, "@babel/plugin-proposal-nullish-coalescing-operator": true, "@babel/plugin-proposal-object-rest-spread": true, "@babel/plugin-proposal-optional-chaining": true, - "@babel/plugin-transform-runtime": true, - "@babel/preset-env": true, - "@babel/preset-react": true, "@babel/preset-typescript": true } }, - "@eslint/eslintrc": { + "eslint>@eslint/eslintrc": { "packages": { - "": true, + "$root$": true, "@babel/eslint-parser": true, "@babel/eslint-plugin": true, "@metamask/eslint-config": true, @@ -32,58 +32,56 @@ "eslint-plugin-react-hooks": true } }, - "@typescript-eslint/eslint-plugin": { + "eslint-plugin-jest": { "packages": { - "@typescript-eslint/experimental-utils": true, - "@typescript-eslint/scope-manager": true, - "debug": true, - "eslint": true, - "ignore": true, - "regexpp": true, - "semver": true, - "tsutils": true, - "typescript": true + "eslint-plugin-jest>@typescript-eslint/experimental-utils": true, + "@typescript-eslint/eslint-plugin": true } }, - "@typescript-eslint/experimental-utils": { + "eslint-plugin-jest>@typescript-eslint/experimental-utils": { "builtin": { "path": true }, "packages": { - "@typescript-eslint/scope-manager": true, - "@typescript-eslint/types": true, + "eslint-plugin-jest>@typescript-eslint/experimental-utils>eslint-utils": true, + "@typescript-eslint/parser>@typescript-eslint/types": true, "eslint": true, - "eslint-scope": true, - "eslint-utils": true + "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, + "eslint>eslint-scope": true } }, - "@typescript-eslint/scope-manager": { + "eslint-plugin-jest>@typescript-eslint/experimental-utils>eslint-utils": { "packages": { - "@typescript-eslint/types": true, - "@typescript-eslint/visitor-keys": true + "eslint-plugin-jest>@typescript-eslint/experimental-utils>eslint-utils>eslint-visitor-keys": true } }, - "@typescript-eslint/visitor-keys": { + "@typescript-eslint/eslint-plugin": { "packages": { - "eslint-visitor-keys": true + "typescript": true, + "eslint-plugin-jest>@typescript-eslint/experimental-utils": true, + "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, + "@typescript-eslint/eslint-plugin>tsutils": true, + "eslint>debug": true, + "eslint": true, + "semver": true, + "globby>ignore": true, + "eslint>regexpp": true } }, - "eslint-module-utils": { + "eslint-plugin-import>eslint-module-utils": { "packages": { - "@babel/eslint-parser": true, - "@typescript-eslint/parser": true, "eslint-import-resolver-node": true, - "eslint-import-resolver-typescript": true - } - }, - "module-deps": { - "packages": { - "loose-envify": true + "@babel/eslint-parser": true } }, "node-sass": { "native": true }, + "browserify>module-deps": { + "packages": { + "loose-envify": true + } + }, "sass": { "env": "unfrozen", "builtin": { diff --git a/lavamoat/build-system/policy.json b/lavamoat/build-system/policy.json index a1a3e4eee..2e1f4b6b2 100644 --- a/lavamoat/build-system/policy.json +++ b/lavamoat/build-system/policy.json @@ -1,12 +1,18 @@ { "resources": { + "3box>ipfs>superstruct>clone-deep>shallow-clone>mixin-object": { + "packages": { + "3box>ipfs>superstruct>clone-deep>shallow-clone>mixin-object>for-in": true, + "webpack>micromatch>extglob>extend-shallow>is-extendable": true + } + }, "@babel/code-frame": { "globals": { "console.warn": true, "process.emitWarning": true }, "packages": { - "@babel/highlight": true + "lavamoat>@babel/highlight": true } }, "@babel/core": { @@ -26,93 +32,781 @@ "process.versions.node": true }, "packages": { + "$root$": true, "@babel/code-frame": true, - "@babel/generator": true, - "@babel/helper-compilation-targets": true, - "@babel/helper-module-transforms": true, - "@babel/helpers": true, - "@babel/parser": true, - "@babel/template": true, - "@babel/traverse": true, - "@babel/types": true, - "convert-source-map": true, - "debug": true, - "gensync": true, - "json5": true, - "semver": true, - "source-map": true + "@babel/core>@babel/generator": true, + "@babel/core>@babel/helper-compilation-targets": true, + "@babel/core>@babel/helper-module-transforms": true, + "@babel/core>@babel/helpers": true, + "@babel/core>@babel/template": true, + "@babel/core>@babel/types": true, + "@babel/core>gensync": true, + "@babel/core>semver": true, + "@babel/core>source-map": true, + "@babel/plugin-proposal-class-properties": true, + "@babel/plugin-proposal-nullish-coalescing-operator": true, + "@babel/plugin-proposal-object-rest-spread": true, + "@babel/plugin-proposal-optional-chaining": true, + "@babel/plugin-transform-runtime": true, + "@babel/preset-env": true, + "@babel/preset-react": true, + "@babel/preset-typescript": true, + "depcheck>@babel/parser": true, + "depcheck>@babel/traverse": true, + "depcheck>json5": true, + "eslint>debug": true, + "nyc>convert-source-map": true } }, - "@babel/eslint-parser": { - "packages": { - "@babel/core": true, - "eslint-scope": true, - "eslint-visitor-keys": true, - "semver": true - } - }, - "@babel/eslint-plugin": { - "packages": { - "eslint": true, - "eslint-rule-composer": true - } - }, - "@babel/generator": { + "@babel/core>@babel/generator": { "globals": { "console.error": true }, "packages": { - "@babel/types": true, - "jsesc": true, - "source-map": true + "@babel/core>@babel/generator>jsesc": true, + "@babel/core>@babel/generator>source-map": true, + "@babel/core>@babel/types": true } }, - "@babel/helper-annotate-as-pure": { - "packages": { - "@babel/types": true + "@babel/core>@babel/generator>jsesc": { + "globals": { + "Buffer.isBuffer": true } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "packages": { - "@babel/helper-explode-assignable-expression": true, - "@babel/types": true - } - }, - "@babel/helper-compilation-targets": { + "@babel/core>@babel/helper-compilation-targets": { "globals": { "console.warn": true, "process.versions.node": true }, "packages": { - "@babel/compat-data": true, - "@babel/helper-validator-option": true, - "browserslist": true, - "semver": true + "@babel/core>@babel/helper-compilation-targets>semver": true, + "@babel/preset-env>@babel/compat-data": true, + "@babel/preset-env>@babel/helper-validator-option": true, + "stylelint>autoprefixer>browserslist": true } }, - "@babel/helper-create-class-features-plugin": { + "@babel/core>@babel/helper-compilation-targets>semver": { + "globals": { + "console": true, + "process": true + } + }, + "@babel/core>@babel/helper-module-transforms": { + "builtin": { + "assert": true, + "path.basename": true, + "path.extname": true + }, + "packages": { + "@babel/core>@babel/helper-module-transforms>@babel/helper-replace-supers": true, + "@babel/core>@babel/helper-module-transforms>@babel/helper-simple-access": true, + "@babel/core>@babel/template": true, + "@babel/core>@babel/types": true, + "@babel/plugin-transform-runtime>@babel/helper-module-imports": true, + "depcheck>@babel/traverse": true, + "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true, + "lavamoat>@babel/highlight>@babel/helper-validator-identifier": true + } + }, + "@babel/core>@babel/helper-module-transforms>@babel/helper-replace-supers": { + "packages": { + "@babel/core>@babel/types": true, + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin>@babel/helper-member-expression-to-functions": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": true, + "depcheck>@babel/traverse": true, + "depcheck>@babel/traverse>@babel/helper-environment-visitor": true + } + }, + "@babel/core>@babel/helper-module-transforms>@babel/helper-simple-access": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "@babel/core>@babel/helpers": { + "packages": { + "@babel/core>@babel/template": true, + "@babel/core>@babel/types": true, + "depcheck>@babel/traverse": true + } + }, + "@babel/core>@babel/template": { + "packages": { + "@babel/code-frame": true, + "@babel/core>@babel/types": true, + "depcheck>@babel/parser": true + } + }, + "@babel/core>@babel/types": { + "globals": { + "console.trace": true, + "process.env.BABEL_TYPES_8_BREAKING": true + }, + "packages": { + "@babel/core>@babel/types>to-fast-properties": true, + "lavamoat>@babel/highlight>@babel/helper-validator-identifier": true + } + }, + "@babel/core>semver": { + "globals": { + "console": true, + "process": true + } + }, + "@babel/eslint-parser": { + "packages": { + "@babel/core": true, + "@babel/eslint-parser>eslint-visitor-keys": true, + "@babel/eslint-parser>semver": true, + "eslint>eslint-scope": true + } + }, + "@babel/eslint-parser>semver": { + "globals": { + "console": true, + "process": true + } + }, + "@babel/eslint-plugin": { + "packages": { + "@babel/eslint-plugin>eslint-rule-composer": true, + "eslint": true + } + }, + "@babel/plugin-proposal-class-properties": { + "packages": { + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin": { "globals": { "console.warn": true }, "packages": { "@babel/core": true, - "@babel/helper-annotate-as-pure": true, - "@babel/helper-environment-visitor": true, - "@babel/helper-function-name": true, - "@babel/helper-member-expression-to-functions": true, - "@babel/helper-optimise-call-expression": true, - "@babel/helper-replace-supers": true, - "@babel/helper-split-export-declaration": true + "@babel/core>@babel/helper-module-transforms>@babel/helper-replace-supers": true, + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin>@babel/helper-member-expression-to-functions": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": true, + "depcheck>@babel/traverse>@babel/helper-environment-visitor": true, + "depcheck>@babel/traverse>@babel/helper-function-name": true, + "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true } }, - "@babel/helper-create-regexp-features-plugin": { + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin>@babel/helper-member-expression-to-functions": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { "packages": { "@babel/core": true, - "@babel/helper-annotate-as-pure": true, - "regexpu-core": true + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-nullish-coalescing-operator": true } }, - "@babel/helper-define-polyfill-provider": { + "@babel/plugin-proposal-object-rest-spread": { + "packages": { + "@babel/core": true, + "@babel/core>@babel/helper-compilation-targets": true, + "@babel/preset-env>@babel/compat-data": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-object-rest-spread": true, + "@babel/preset-env>@babel/plugin-transform-parameters": true + } + }, + "@babel/plugin-proposal-optional-chaining": { + "packages": { + "@babel/core": true, + "@babel/plugin-proposal-optional-chaining>@babel/helper-skip-transparent-expression-wrappers": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-optional-chaining": true + } + }, + "@babel/plugin-proposal-optional-chaining>@babel/helper-skip-transparent-expression-wrappers": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "@babel/plugin-transform-runtime": { + "builtin": { + "path": true + }, + "packages": { + "@babel/core": true, + "@babel/plugin-transform-runtime>@babel/helper-module-imports": true, + "@babel/plugin-transform-runtime>semver": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "brfs>resolve": true + } + }, + "@babel/plugin-transform-runtime>@babel/helper-module-imports": { + "builtin": { + "assert": true + }, + "packages": { + "@babel/core>@babel/types": true + } + }, + "@babel/plugin-transform-runtime>semver": { + "globals": { + "console": true, + "process": true + } + }, + "@babel/preset-env": { + "globals": { + "console.log": true, + "console.warn": true, + "process.cwd": true, + "process.env.BABEL_ENV": true + }, + "packages": { + "@babel/core>@babel/helper-compilation-targets": true, + "@babel/core>@babel/types": true, + "@babel/plugin-proposal-class-properties": true, + "@babel/plugin-proposal-nullish-coalescing-operator": true, + "@babel/plugin-proposal-object-rest-spread": true, + "@babel/plugin-proposal-optional-chaining": true, + "@babel/preset-env>@babel/compat-data": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/helper-validator-option": true, + "@babel/preset-env>@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": true, + "@babel/preset-env>@babel/plugin-proposal-async-generator-functions": true, + "@babel/preset-env>@babel/plugin-proposal-class-static-block": true, + "@babel/preset-env>@babel/plugin-proposal-dynamic-import": true, + "@babel/preset-env>@babel/plugin-proposal-export-namespace-from": true, + "@babel/preset-env>@babel/plugin-proposal-json-strings": true, + "@babel/preset-env>@babel/plugin-proposal-logical-assignment-operators": true, + "@babel/preset-env>@babel/plugin-proposal-numeric-separator": true, + "@babel/preset-env>@babel/plugin-proposal-optional-catch-binding": true, + "@babel/preset-env>@babel/plugin-proposal-private-methods": true, + "@babel/preset-env>@babel/plugin-proposal-private-property-in-object": true, + "@babel/preset-env>@babel/plugin-proposal-unicode-property-regex": true, + "@babel/preset-env>@babel/plugin-syntax-async-generators": true, + "@babel/preset-env>@babel/plugin-syntax-class-properties": true, + "@babel/preset-env>@babel/plugin-syntax-class-static-block": true, + "@babel/preset-env>@babel/plugin-syntax-dynamic-import": true, + "@babel/preset-env>@babel/plugin-syntax-export-namespace-from": true, + "@babel/preset-env>@babel/plugin-syntax-json-strings": true, + "@babel/preset-env>@babel/plugin-syntax-logical-assignment-operators": true, + "@babel/preset-env>@babel/plugin-syntax-nullish-coalescing-operator": true, + "@babel/preset-env>@babel/plugin-syntax-numeric-separator": true, + "@babel/preset-env>@babel/plugin-syntax-object-rest-spread": true, + "@babel/preset-env>@babel/plugin-syntax-optional-catch-binding": true, + "@babel/preset-env>@babel/plugin-syntax-optional-chaining": true, + "@babel/preset-env>@babel/plugin-syntax-private-property-in-object": true, + "@babel/preset-env>@babel/plugin-syntax-top-level-await": true, + "@babel/preset-env>@babel/plugin-transform-arrow-functions": true, + "@babel/preset-env>@babel/plugin-transform-async-to-generator": true, + "@babel/preset-env>@babel/plugin-transform-block-scoped-functions": true, + "@babel/preset-env>@babel/plugin-transform-block-scoping": true, + "@babel/preset-env>@babel/plugin-transform-classes": true, + "@babel/preset-env>@babel/plugin-transform-computed-properties": true, + "@babel/preset-env>@babel/plugin-transform-destructuring": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex": true, + "@babel/preset-env>@babel/plugin-transform-duplicate-keys": true, + "@babel/preset-env>@babel/plugin-transform-exponentiation-operator": true, + "@babel/preset-env>@babel/plugin-transform-for-of": true, + "@babel/preset-env>@babel/plugin-transform-function-name": true, + "@babel/preset-env>@babel/plugin-transform-literals": true, + "@babel/preset-env>@babel/plugin-transform-member-expression-literals": true, + "@babel/preset-env>@babel/plugin-transform-modules-amd": true, + "@babel/preset-env>@babel/plugin-transform-modules-commonjs": true, + "@babel/preset-env>@babel/plugin-transform-modules-systemjs": true, + "@babel/preset-env>@babel/plugin-transform-modules-umd": true, + "@babel/preset-env>@babel/plugin-transform-named-capturing-groups-regex": true, + "@babel/preset-env>@babel/plugin-transform-new-target": true, + "@babel/preset-env>@babel/plugin-transform-object-super": true, + "@babel/preset-env>@babel/plugin-transform-parameters": true, + "@babel/preset-env>@babel/plugin-transform-property-literals": true, + "@babel/preset-env>@babel/plugin-transform-regenerator": true, + "@babel/preset-env>@babel/plugin-transform-reserved-words": true, + "@babel/preset-env>@babel/plugin-transform-shorthand-properties": true, + "@babel/preset-env>@babel/plugin-transform-spread": true, + "@babel/preset-env>@babel/plugin-transform-sticky-regex": true, + "@babel/preset-env>@babel/plugin-transform-template-literals": true, + "@babel/preset-env>@babel/plugin-transform-typeof-symbol": true, + "@babel/preset-env>@babel/plugin-transform-unicode-escapes": true, + "@babel/preset-env>@babel/plugin-transform-unicode-regex": true, + "@babel/preset-env>@babel/preset-modules": true, + "@babel/preset-env>babel-plugin-polyfill-corejs2": true, + "@babel/preset-env>babel-plugin-polyfill-corejs3": true, + "@babel/preset-env>babel-plugin-polyfill-regenerator": true, + "@babel/preset-env>core-js-compat": true, + "@babel/preset-env>semver": true + } + }, + "@babel/preset-env>@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "packages": { + "@babel/core": true, + "@babel/plugin-proposal-optional-chaining": true, + "@babel/plugin-proposal-optional-chaining>@babel/helper-skip-transparent-expression-wrappers": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-async-generator-functions": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-async-generators": true, + "@babel/preset-env>@babel/plugin-transform-async-to-generator>@babel/helper-remap-async-to-generator": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-class-static-block": { + "packages": { + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-class-static-block": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-dynamic-import": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-dynamic-import": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-export-namespace-from": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-export-namespace-from": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-json-strings": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-json-strings": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-logical-assignment-operators": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-logical-assignment-operators": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-numeric-separator": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-numeric-separator": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-optional-catch-binding": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-optional-catch-binding": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-private-methods": { + "packages": { + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-private-property-in-object": { + "packages": { + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-syntax-private-property-in-object": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true + } + }, + "@babel/preset-env>@babel/plugin-proposal-unicode-property-regex": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-async-generators": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-class-properties": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-class-static-block": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-dynamic-import": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-export-namespace-from": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-json-strings": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-logical-assignment-operators": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-nullish-coalescing-operator": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-numeric-separator": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-object-rest-spread": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-optional-catch-binding": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-optional-chaining": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-private-property-in-object": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-syntax-top-level-await": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-arrow-functions": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-async-to-generator": { + "packages": { + "@babel/core": true, + "@babel/plugin-transform-runtime>@babel/helper-module-imports": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-async-to-generator>@babel/helper-remap-async-to-generator": true + } + }, + "@babel/preset-env>@babel/plugin-transform-async-to-generator>@babel/helper-remap-async-to-generator": { + "packages": { + "@babel/core>@babel/types": true, + "@babel/preset-env>@babel/plugin-transform-async-to-generator>@babel/helper-remap-async-to-generator>@babel/helper-wrap-function": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true + } + }, + "@babel/preset-env>@babel/plugin-transform-async-to-generator>@babel/helper-remap-async-to-generator>@babel/helper-wrap-function": { + "packages": { + "@babel/core>@babel/template": true, + "@babel/core>@babel/types": true, + "depcheck>@babel/traverse>@babel/helper-function-name": true + } + }, + "@babel/preset-env>@babel/plugin-transform-block-scoped-functions": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-block-scoping": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-classes": { + "packages": { + "@babel/core": true, + "@babel/core>@babel/helper-module-transforms>@babel/helper-replace-supers": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": true, + "@babel/preset-env>@babel/plugin-transform-classes>globals": true, + "depcheck>@babel/traverse>@babel/helper-function-name": true, + "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true + } + }, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "@babel/preset-env>@babel/plugin-transform-computed-properties": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-destructuring": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-dotall-regex": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin": true + } + }, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core": true + } + }, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core": { + "packages": { + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>regenerate": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>regjsgen": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>regjsparser": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>unicode-match-property-ecmascript": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>unicode-match-property-value-ecmascript": true + } + }, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>regenerate": { + "globals": { + "define": true + } + }, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>regjsgen": { + "globals": { + "define": true + } + }, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>regjsparser": { + "globals": { + "regjsparser": "write" + } + }, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>unicode-match-property-ecmascript": { + "packages": { + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>unicode-match-property-ecmascript>unicode-canonical-property-names-ecmascript": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin>regexpu-core>unicode-match-property-ecmascript>unicode-property-aliases-ecmascript": true + } + }, + "@babel/preset-env>@babel/plugin-transform-duplicate-keys": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-exponentiation-operator": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-exponentiation-operator>@babel/helper-builder-binary-assignment-operator-visitor": true + } + }, + "@babel/preset-env>@babel/plugin-transform-exponentiation-operator>@babel/helper-builder-binary-assignment-operator-visitor": { + "packages": { + "@babel/core>@babel/types": true, + "@babel/preset-env>@babel/plugin-transform-exponentiation-operator>@babel/helper-builder-binary-assignment-operator-visitor>@babel/helper-explode-assignable-expression": true + } + }, + "@babel/preset-env>@babel/plugin-transform-exponentiation-operator>@babel/helper-builder-binary-assignment-operator-visitor>@babel/helper-explode-assignable-expression": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "@babel/preset-env>@babel/plugin-transform-for-of": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-function-name": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "depcheck>@babel/traverse>@babel/helper-function-name": true + } + }, + "@babel/preset-env>@babel/plugin-transform-literals": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-member-expression-literals": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-modules-amd": { + "packages": { + "@babel/core": true, + "@babel/core>@babel/helper-module-transforms": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-modules-amd>babel-plugin-dynamic-import-node": true + } + }, + "@babel/preset-env>@babel/plugin-transform-modules-commonjs": { + "packages": { + "@babel/core": true, + "@babel/core>@babel/helper-module-transforms": true, + "@babel/core>@babel/helper-module-transforms>@babel/helper-simple-access": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-modules-amd>babel-plugin-dynamic-import-node": true + } + }, + "@babel/preset-env>@babel/plugin-transform-modules-systemjs": { + "globals": { + "console.warn": true + }, + "packages": { + "@babel/core": true, + "@babel/core>@babel/helper-module-transforms": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-modules-amd>babel-plugin-dynamic-import-node": true, + "depcheck>@babel/traverse>@babel/helper-hoist-variables": true, + "lavamoat>@babel/highlight>@babel/helper-validator-identifier": true + } + }, + "@babel/preset-env>@babel/plugin-transform-modules-umd": { + "builtin": { + "path.basename": true, + "path.extname": true + }, + "packages": { + "@babel/core": true, + "@babel/core>@babel/helper-module-transforms": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-named-capturing-groups-regex": { + "packages": { + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin": true + } + }, + "@babel/preset-env>@babel/plugin-transform-new-target": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-object-super": { + "packages": { + "@babel/core": true, + "@babel/core>@babel/helper-module-transforms>@babel/helper-replace-supers": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-parameters": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-property-literals": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-regenerator": { + "packages": { + "@babel/preset-env>@babel/plugin-transform-regenerator>regenerator-transform": true + } + }, + "@babel/preset-env>@babel/plugin-transform-regenerator>regenerator-transform": { + "builtin": { + "assert": true, + "util.inherits": true + }, + "packages": { + "@babel/runtime": true + } + }, + "@babel/preset-env>@babel/plugin-transform-reserved-words": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-shorthand-properties": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-spread": { + "packages": { + "@babel/core": true, + "@babel/plugin-proposal-optional-chaining>@babel/helper-skip-transparent-expression-wrappers": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-sticky-regex": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-template-literals": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-typeof-symbol": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-unicode-escapes": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-env>@babel/plugin-transform-unicode-regex": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-dotall-regex>@babel/helper-create-regexp-features-plugin": true + } + }, + "@babel/preset-env>babel-plugin-polyfill-corejs2": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/compat-data": true, + "@babel/preset-env>babel-plugin-polyfill-corejs2>semver": true, + "@babel/preset-env>babel-plugin-polyfill-corejs3>@babel/helper-define-polyfill-provider": true + } + }, + "@babel/preset-env>babel-plugin-polyfill-corejs2>semver": { + "globals": { + "console": true, + "process": true + } + }, + "@babel/preset-env>babel-plugin-polyfill-corejs3": { + "packages": { + "@babel/core": true, + "@babel/preset-env>babel-plugin-polyfill-corejs3>@babel/helper-define-polyfill-provider": true, + "@babel/preset-env>core-js-compat": true + } + }, + "@babel/preset-env>babel-plugin-polyfill-corejs3>@babel/helper-define-polyfill-provider": { "builtin": { "path": true }, @@ -124,796 +818,111 @@ }, "packages": { "@babel/core": true, - "@babel/helper-compilation-targets": true, - "@babel/helper-plugin-utils": true, - "lodash.debounce": true, - "resolve": true + "@babel/core>@babel/helper-compilation-targets": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>babel-plugin-polyfill-corejs3>@babel/helper-define-polyfill-provider>lodash.debounce": true, + "brfs>resolve": true } }, - "@babel/helper-environment-visitor": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-explode-assignable-expression": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-function-name": { - "packages": { - "@babel/helper-get-function-arity": true, - "@babel/template": true, - "@babel/types": true - } - }, - "@babel/helper-get-function-arity": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-hoist-variables": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-member-expression-to-functions": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-module-imports": { - "builtin": { - "assert": true - }, - "packages": { - "@babel/types": true - } - }, - "@babel/helper-module-transforms": { - "builtin": { - "assert": true, - "path.basename": true, - "path.extname": true - }, - "packages": { - "@babel/helper-module-imports": true, - "@babel/helper-replace-supers": true, - "@babel/helper-simple-access": true, - "@babel/helper-split-export-declaration": true, - "@babel/helper-validator-identifier": true, - "@babel/template": true, - "@babel/traverse": true, - "@babel/types": true - } - }, - "@babel/helper-optimise-call-expression": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-remap-async-to-generator": { - "packages": { - "@babel/helper-annotate-as-pure": true, - "@babel/helper-wrap-function": true, - "@babel/types": true - } - }, - "@babel/helper-replace-supers": { - "packages": { - "@babel/helper-environment-visitor": true, - "@babel/helper-member-expression-to-functions": true, - "@babel/helper-optimise-call-expression": true, - "@babel/traverse": true, - "@babel/types": true - } - }, - "@babel/helper-simple-access": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-split-export-declaration": { - "packages": { - "@babel/types": true - } - }, - "@babel/helper-wrap-function": { - "packages": { - "@babel/helper-function-name": true, - "@babel/template": true, - "@babel/types": true - } - }, - "@babel/helpers": { - "packages": { - "@babel/template": true, - "@babel/traverse": true, - "@babel/types": true - } - }, - "@babel/highlight": { - "packages": { - "@babel/helper-validator-identifier": true, - "chalk": true, - "js-tokens": true - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-skip-transparent-expression-wrappers": true, - "@babel/plugin-proposal-optional-chaining": true - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-remap-async-to-generator": true, - "@babel/plugin-syntax-async-generators": true - } - }, - "@babel/plugin-proposal-class-properties": { - "packages": { - "@babel/helper-create-class-features-plugin": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-proposal-class-static-block": { - "packages": { - "@babel/helper-create-class-features-plugin": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-class-static-block": true - } - }, - "@babel/plugin-proposal-dynamic-import": { - "packages": { - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-dynamic-import": true - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-export-namespace-from": true - } - }, - "@babel/plugin-proposal-json-strings": { - "packages": { - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-json-strings": true - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-logical-assignment-operators": true - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-nullish-coalescing-operator": true - } - }, - "@babel/plugin-proposal-numeric-separator": { - "packages": { - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-numeric-separator": true - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "packages": { - "@babel/compat-data": true, - "@babel/core": true, - "@babel/helper-compilation-targets": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-object-rest-spread": true, - "@babel/plugin-transform-parameters": true - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "packages": { - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-optional-catch-binding": true - } - }, - "@babel/plugin-proposal-optional-chaining": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-skip-transparent-expression-wrappers": true, - "@babel/plugin-syntax-optional-chaining": true - } - }, - "@babel/plugin-proposal-private-methods": { - "packages": { - "@babel/helper-create-class-features-plugin": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "packages": { - "@babel/helper-annotate-as-pure": true, - "@babel/helper-create-class-features-plugin": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-private-property-in-object": true - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "packages": { - "@babel/helper-create-regexp-features-plugin": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-async-generators": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-class-properties": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-class-static-block": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-dynamic-import": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-json-strings": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-jsx": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-numeric-separator": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-optional-chaining": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-top-level-await": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-syntax-typescript": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-arrow-functions": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-async-to-generator": { - "packages": { - "@babel/core": true, - "@babel/helper-module-imports": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-remap-async-to-generator": true - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-block-scoping": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-classes": { - "packages": { - "@babel/core": true, - "@babel/helper-annotate-as-pure": true, - "@babel/helper-function-name": true, - "@babel/helper-optimise-call-expression": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-replace-supers": true, - "@babel/helper-split-export-declaration": true, - "globals": true - } - }, - "@babel/plugin-transform-computed-properties": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-destructuring": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-dotall-regex": { - "packages": { - "@babel/helper-create-regexp-features-plugin": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-duplicate-keys": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "packages": { - "@babel/core": true, - "@babel/helper-builder-binary-assignment-operator-visitor": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-for-of": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-function-name": { - "packages": { - "@babel/helper-function-name": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-literals": { - "packages": { - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-member-expression-literals": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-modules-amd": { - "packages": { - "@babel/core": true, - "@babel/helper-module-transforms": true, - "@babel/helper-plugin-utils": true, - "babel-plugin-dynamic-import-node": true - } - }, - "@babel/plugin-transform-modules-commonjs": { - "packages": { - "@babel/core": true, - "@babel/helper-module-transforms": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-simple-access": true, - "babel-plugin-dynamic-import-node": true - } - }, - "@babel/plugin-transform-modules-systemjs": { + "@babel/preset-env>babel-plugin-polyfill-corejs3>@babel/helper-define-polyfill-provider>lodash.debounce": { "globals": { - "console.warn": true - }, - "packages": { - "@babel/core": true, - "@babel/helper-hoist-variables": true, - "@babel/helper-module-transforms": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-validator-identifier": true, - "babel-plugin-dynamic-import-node": true + "clearTimeout": true, + "setTimeout": true } }, - "@babel/plugin-transform-modules-umd": { - "builtin": { - "path.basename": true, - "path.extname": true - }, + "@babel/preset-env>babel-plugin-polyfill-regenerator": { "packages": { - "@babel/core": true, - "@babel/helper-module-transforms": true, - "@babel/helper-plugin-utils": true + "@babel/preset-env>babel-plugin-polyfill-corejs3>@babel/helper-define-polyfill-provider": true } }, - "@babel/plugin-transform-named-capturing-groups-regex": { + "@babel/preset-env>core-js-compat": { "packages": { - "@babel/helper-create-regexp-features-plugin": true + "@babel/preset-env>core-js-compat>semver": true } }, - "@babel/plugin-transform-new-target": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-object-super": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-replace-supers": true - } - }, - "@babel/plugin-transform-parameters": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-property-literals": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-react-display-name": { - "builtin": { - "path.basename": true, - "path.dirname": true, - "path.extname": true - }, - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-react-jsx": { - "packages": { - "@babel/core": true, - "@babel/helper-annotate-as-pure": true, - "@babel/helper-module-imports": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-jsx": true - } - }, - "@babel/plugin-transform-react-jsx-development": { - "packages": { - "@babel/plugin-transform-react-jsx": true - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "packages": { - "@babel/core": true, - "@babel/helper-annotate-as-pure": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-regenerator": { - "packages": { - "regenerator-transform": true - } - }, - "@babel/plugin-transform-reserved-words": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-runtime": { - "builtin": { - "path": true - }, - "packages": { - "@babel/core": true, - "@babel/helper-module-imports": true, - "@babel/helper-plugin-utils": true, - "resolve": true, - "semver": true - } - }, - "@babel/plugin-transform-shorthand-properties": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-spread": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-skip-transparent-expression-wrappers": true - } - }, - "@babel/plugin-transform-sticky-regex": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-template-literals": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-typeof-symbol": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-typescript": { - "builtin": { - "assert": true - }, + "@babel/preset-env>core-js-compat>semver": { "globals": { - "console.warn": true - }, - "packages": { - "@babel/core": true, - "@babel/helper-create-class-features-plugin": true, - "@babel/helper-plugin-utils": true, - "@babel/plugin-syntax-typescript": true + "console.error": true, + "process": true } }, - "@babel/plugin-transform-unicode-escapes": { - "packages": { - "@babel/core": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/plugin-transform-unicode-regex": { - "packages": { - "@babel/helper-create-regexp-features-plugin": true, - "@babel/helper-plugin-utils": true - } - }, - "@babel/preset-env": { + "@babel/preset-env>semver": { "globals": { - "console.log": true, - "console.warn": true, - "process.cwd": true, - "process.env.BABEL_ENV": true - }, - "packages": { - "@babel/compat-data": true, - "@babel/helper-compilation-targets": true, - "@babel/helper-plugin-utils": true, - "@babel/helper-validator-option": true, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": true, - "@babel/plugin-proposal-async-generator-functions": true, - "@babel/plugin-proposal-class-properties": true, - "@babel/plugin-proposal-class-static-block": true, - "@babel/plugin-proposal-dynamic-import": true, - "@babel/plugin-proposal-export-namespace-from": true, - "@babel/plugin-proposal-json-strings": true, - "@babel/plugin-proposal-logical-assignment-operators": true, - "@babel/plugin-proposal-nullish-coalescing-operator": true, - "@babel/plugin-proposal-numeric-separator": true, - "@babel/plugin-proposal-object-rest-spread": true, - "@babel/plugin-proposal-optional-catch-binding": true, - "@babel/plugin-proposal-optional-chaining": true, - "@babel/plugin-proposal-private-methods": true, - "@babel/plugin-proposal-private-property-in-object": true, - "@babel/plugin-proposal-unicode-property-regex": true, - "@babel/plugin-syntax-async-generators": true, - "@babel/plugin-syntax-class-properties": true, - "@babel/plugin-syntax-class-static-block": true, - "@babel/plugin-syntax-dynamic-import": true, - "@babel/plugin-syntax-export-namespace-from": true, - "@babel/plugin-syntax-json-strings": true, - "@babel/plugin-syntax-logical-assignment-operators": true, - "@babel/plugin-syntax-nullish-coalescing-operator": true, - "@babel/plugin-syntax-numeric-separator": true, - "@babel/plugin-syntax-object-rest-spread": true, - "@babel/plugin-syntax-optional-catch-binding": true, - "@babel/plugin-syntax-optional-chaining": true, - "@babel/plugin-syntax-private-property-in-object": true, - "@babel/plugin-syntax-top-level-await": true, - "@babel/plugin-transform-arrow-functions": true, - "@babel/plugin-transform-async-to-generator": true, - "@babel/plugin-transform-block-scoped-functions": true, - "@babel/plugin-transform-block-scoping": true, - "@babel/plugin-transform-classes": true, - "@babel/plugin-transform-computed-properties": true, - "@babel/plugin-transform-destructuring": true, - "@babel/plugin-transform-dotall-regex": true, - "@babel/plugin-transform-duplicate-keys": true, - "@babel/plugin-transform-exponentiation-operator": true, - "@babel/plugin-transform-for-of": true, - "@babel/plugin-transform-function-name": true, - "@babel/plugin-transform-literals": true, - "@babel/plugin-transform-member-expression-literals": true, - "@babel/plugin-transform-modules-amd": true, - "@babel/plugin-transform-modules-commonjs": true, - "@babel/plugin-transform-modules-systemjs": true, - "@babel/plugin-transform-modules-umd": true, - "@babel/plugin-transform-named-capturing-groups-regex": true, - "@babel/plugin-transform-new-target": true, - "@babel/plugin-transform-object-super": true, - "@babel/plugin-transform-parameters": true, - "@babel/plugin-transform-property-literals": true, - "@babel/plugin-transform-regenerator": true, - "@babel/plugin-transform-reserved-words": true, - "@babel/plugin-transform-shorthand-properties": true, - "@babel/plugin-transform-spread": true, - "@babel/plugin-transform-sticky-regex": true, - "@babel/plugin-transform-template-literals": true, - "@babel/plugin-transform-typeof-symbol": true, - "@babel/plugin-transform-unicode-escapes": true, - "@babel/plugin-transform-unicode-regex": true, - "@babel/preset-modules": true, - "@babel/types": true, - "babel-plugin-polyfill-corejs2": true, - "babel-plugin-polyfill-corejs3": true, - "babel-plugin-polyfill-regenerator": true, - "core-js-compat": true, - "semver": true + "console": true, + "process": true } }, "@babel/preset-react": { "packages": { - "@babel/helper-plugin-utils": true, - "@babel/helper-validator-option": true, - "@babel/plugin-transform-react-display-name": true, - "@babel/plugin-transform-react-jsx": true, - "@babel/plugin-transform-react-jsx-development": true, - "@babel/plugin-transform-react-pure-annotations": true + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/helper-validator-option": true, + "@babel/preset-react>@babel/plugin-transform-react-display-name": true, + "@babel/preset-react>@babel/plugin-transform-react-jsx": true, + "@babel/preset-react>@babel/plugin-transform-react-jsx-development": true, + "@babel/preset-react>@babel/plugin-transform-react-pure-annotations": true + } + }, + "@babel/preset-react>@babel/plugin-transform-react-display-name": { + "builtin": { + "path.basename": true, + "path.dirname": true, + "path.extname": true + }, + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-react>@babel/plugin-transform-react-jsx": { + "packages": { + "@babel/core": true, + "@babel/plugin-transform-runtime>@babel/helper-module-imports": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true, + "@babel/preset-react>@babel/plugin-transform-react-jsx>@babel/plugin-syntax-jsx": true + } + }, + "@babel/preset-react>@babel/plugin-transform-react-jsx-development": { + "packages": { + "@babel/preset-react>@babel/plugin-transform-react-jsx": true + } + }, + "@babel/preset-react>@babel/plugin-transform-react-jsx>@babel/plugin-syntax-jsx": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true + } + }, + "@babel/preset-react>@babel/plugin-transform-react-pure-annotations": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true } }, "@babel/preset-typescript": { "packages": { - "@babel/helper-plugin-utils": true, - "@babel/helper-validator-option": true, - "@babel/plugin-transform-typescript": true + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/helper-validator-option": true, + "@babel/preset-typescript>@babel/plugin-transform-typescript": true } }, - "@babel/template": { - "packages": { - "@babel/code-frame": true, - "@babel/parser": true, - "@babel/types": true - } - }, - "@babel/traverse": { - "globals": { - "console.log": true, - "console.trace": true - }, - "packages": { - "@babel/code-frame": true, - "@babel/generator": true, - "@babel/helper-environment-visitor": true, - "@babel/helper-function-name": true, - "@babel/helper-hoist-variables": true, - "@babel/helper-split-export-declaration": true, - "@babel/parser": true, - "@babel/types": true, - "debug": true, - "globals": true - } - }, - "@babel/types": { - "globals": { - "console.trace": true, - "process.env.BABEL_TYPES_8_BREAKING": true - }, - "packages": { - "@babel/helper-validator-identifier": true, - "to-fast-properties": true - } - }, - "@choojs/findup": { + "@babel/preset-typescript>@babel/plugin-transform-typescript": { "builtin": { - "events.EventEmitter": true, - "fs.access": true, - "fs.accessSync": true, - "fs.exists": true, - "fs.existsSync": true, - "path.join": true, - "util.inherits": true + "assert": true }, "globals": { - "console.log": true - } - }, - "@es-joy/jsdoccomment": { - "packages": { - "comment-parser": true, - "esquery": true, - "jsdoc-type-pratt-parser": true - } - }, - "@eslint/eslintrc": { - "builtin": { - "assert": true, - "fs.existsSync": true, - "fs.readFileSync": true, - "module.createRequire": true, - "module.createRequireFromPath": true, - "os.homedir": true, - "path.basename": true, - "path.dirname": true, - "path.extname": true, - "path.isAbsolute": true, - "path.join": true, - "path.relative": true, - "path.resolve": true, - "path.sep": true, - "util.inspect": true - }, - "globals": { - "__dirname": true, - "process.cwd": true, - "process.emitWarning": true, - "process.platform": true + "console.warn": true }, "packages": { - "ajv": true, - "debug": true, - "espree": true, - "globals": true, - "ignore": true, - "js-yaml": true, - "minimatch": true, - "strip-json-comments": true + "@babel/core": true, + "@babel/plugin-proposal-class-properties>@babel/helper-create-class-features-plugin": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-typescript>@babel/plugin-transform-typescript>@babel/plugin-syntax-typescript": true } }, - "@gulp-sourcemaps/identity-map": { + "@babel/preset-typescript>@babel/plugin-transform-typescript>@babel/plugin-syntax-typescript": { "packages": { - "acorn": true, - "normalize-path": true, - "postcss": true, - "source-map": true, - "through2": true - } - }, - "@gulp-sourcemaps/map-sources": { - "packages": { - "normalize-path": true, - "through2": true + "@babel/preset-env>@babel/helper-plugin-utils": true } }, "@lavamoat/lavapack": { @@ -930,89 +939,179 @@ "setTimeout": true }, "packages": { - "JSONStream": true, - "combine-source-map": true, - "convert-source-map": true, - "json-stable-stringify": true, - "lavamoat-core": true, - "readable-stream": true, - "through2": true, - "umd": true + "@lavamoat/lavapack>combine-source-map": true, + "@lavamoat/lavapack>readable-stream": true, + "@lavamoat/lavapack>umd": true, + "browserify>JSONStream": true, + "lavamoat>json-stable-stringify": true, + "lavamoat>lavamoat-core": true, + "nyc>convert-source-map": true, + "through2": true } }, - "@nodelib/fs.scandir": { + "@lavamoat/lavapack>combine-source-map": { "builtin": { - "fs.lstat": true, - "fs.lstatSync": true, - "fs.readdir": true, - "fs.readdirSync": true, - "fs.stat": true, - "fs.statSync": true, - "path.sep": true + "path.dirname": true, + "path.join": true }, "globals": { - "process.versions.node.split": true + "process.platform": true }, "packages": { - "@nodelib/fs.stat": true, - "run-parallel": true + "@lavamoat/lavapack>combine-source-map>convert-source-map": true, + "@lavamoat/lavapack>combine-source-map>inline-source-map": true, + "@lavamoat/lavapack>combine-source-map>lodash.memoize": true, + "@lavamoat/lavapack>combine-source-map>source-map": true } }, - "@nodelib/fs.stat": { + "@lavamoat/lavapack>combine-source-map>convert-source-map": { "builtin": { - "fs.lstat": true, - "fs.lstatSync": true, - "fs.stat": true, - "fs.statSync": true + "fs.readFileSync": true, + "path.join": true + }, + "globals": { + "Buffer.from": true } }, - "@nodelib/fs.walk": { + "@lavamoat/lavapack>combine-source-map>inline-source-map": { + "globals": { + "Buffer.from": true + }, + "packages": { + "@lavamoat/lavapack>combine-source-map>inline-source-map>source-map": true + } + }, + "@lavamoat/lavapack>readable-stream": { "builtin": { + "buffer.Buffer": true, "events.EventEmitter": true, - "path.sep": true, - "stream.Readable": true + "stream": true, + "util": true }, "globals": { - "setImmediate": true + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true }, "packages": { - "@nodelib/fs.scandir": true, - "fastq": true + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, - "@stylelint/postcss-css-in-js": { + "@metamask/jazzicon>color>color-convert": { + "packages": { + "@metamask/jazzicon>color>color-convert>color-name": true + } + }, + "@sentry/browser>tslib": { "globals": { - "__dirname": true - }, - "packages": { - "@babel/core": true, - "postcss": true, - "postcss-syntax": true + "define": true } }, - "@stylelint/postcss-markdown": { + "@storybook/addon-essentials>@storybook/addon-docs>acorn-walk": { + "globals": { + "define": true + } + }, + "@storybook/addon-essentials>@storybook/addon-docs>remark-slug>unist-util-visit": { "packages": { - "postcss-html": true, - "postcss-syntax": true, - "remark": true, - "unist-util-find-all-after": true + "@storybook/addon-essentials>@storybook/addon-docs>remark-slug>unist-util-visit>unist-util-visit-parents": true + } + }, + "@storybook/addon-essentials>@storybook/addon-docs>remark-slug>unist-util-visit>unist-util-visit-parents": { + "packages": { + "stylelint>@stylelint/postcss-markdown>unist-util-find-all-after>unist-util-is": true + } + }, + "@storybook/api>telejson>is-symbol": { + "packages": { + "string.prototype.matchall>has-symbols": true + } + }, + "@storybook/api>util-deprecate": { + "builtin": { + "util.deprecate": true + } + }, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities": { + "packages": { + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-entities": true, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-entities-legacy": true, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-reference-invalid": true, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-alphanumerical": true, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-hexadecimal": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true + } + }, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-alphanumerical": { + "packages": { + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-alphabetical": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true + } + }, + "@storybook/react>@storybook/core-common>glob-base": { + "builtin": { + "path.dirname": true + }, + "packages": { + "@storybook/react>@storybook/core-common>glob-base>glob-parent": true, + "@storybook/react>@storybook/core-common>glob-base>is-glob": true + } + }, + "@storybook/react>@storybook/core-common>glob-base>glob-parent": { + "builtin": { + "path.dirname": true + }, + "packages": { + "@storybook/react>@storybook/core-common>glob-base>is-glob": true + } + }, + "@storybook/react>@storybook/core-common>glob-base>is-glob": { + "packages": { + "gulp-watch>anymatch>micromatch>is-extglob": true + } + }, + "@typescript-eslint/eslint-plugin": { + "packages": { + "@typescript-eslint/eslint-plugin>tsutils": true, + "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, + "eslint": true, + "eslint-plugin-jest>@typescript-eslint/experimental-utils": true, + "eslint>debug": true, + "eslint>regexpp": true, + "globby>ignore": true, + "semver": true, + "typescript": true + } + }, + "@typescript-eslint/eslint-plugin>tsutils": { + "packages": { + "@sentry/browser>tslib": true, + "typescript": true } }, "@typescript-eslint/parser": { "packages": { - "@typescript-eslint/scope-manager": true, - "@typescript-eslint/typescript-estree": true, - "debug": true, + "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, + "@typescript-eslint/parser>@typescript-eslint/typescript-estree": true, + "eslint>debug": true, "typescript": true } }, - "@typescript-eslint/scope-manager": { + "@typescript-eslint/parser>@typescript-eslint/scope-manager": { "packages": { - "@typescript-eslint/types": true, - "@typescript-eslint/visitor-keys": true + "@typescript-eslint/parser>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys": true, + "@typescript-eslint/parser>@typescript-eslint/types": true } }, - "@typescript-eslint/typescript-estree": { + "@typescript-eslint/parser>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys": { + "packages": { + "@typescript-eslint/parser>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys>eslint-visitor-keys": true + } + }, + "@typescript-eslint/parser>@typescript-eslint/typescript-estree": { "builtin": { "fs": true, "path": true @@ -1025,217 +1124,16 @@ "target": true }, "packages": { - "@typescript-eslint/types": true, - "@typescript-eslint/visitor-keys": true, - "debug": true, + "@typescript-eslint/eslint-plugin>tsutils": true, + "@typescript-eslint/parser>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys": true, + "@typescript-eslint/parser>@typescript-eslint/types": true, + "eslint>debug": true, + "eslint>is-glob": true, "globby": true, - "is-glob": true, "semver": true, - "tsutils": true, "typescript": true } }, - "@typescript-eslint/visitor-keys": { - "packages": { - "eslint-visitor-keys": true - } - }, - "JSONStream": { - "globals": { - "Buffer": true - }, - "packages": { - "jsonparse": true, - "through": true - } - }, - "acorn": { - "globals": { - "define": true - } - }, - "acorn-jsx": { - "packages": { - "acorn": true - } - }, - "acorn-node": { - "packages": { - "acorn": true, - "acorn-walk": true, - "xtend": true - } - }, - "acorn-walk": { - "globals": { - "define": true - } - }, - "ajv": { - "globals": { - "console": true - }, - "packages": { - "fast-deep-equal": true, - "fast-json-stable-stringify": true, - "json-schema-traverse": true, - "uri-js": true - } - }, - "ansi-colors": { - "packages": { - "ansi-wrap": true - } - }, - "ansi-gray": { - "packages": { - "ansi-wrap": true - } - }, - "ansi-styles": { - "packages": { - "color-convert": true - } - }, - "anymatch": { - "builtin": { - "path.sep": true - }, - "packages": { - "micromatch": true, - "normalize-path": true, - "picomatch": true - } - }, - "append-buffer": { - "builtin": { - "os.EOL": true - }, - "globals": { - "Buffer": true - }, - "packages": { - "buffer-equal": true - } - }, - "arr-diff": { - "packages": { - "arr-flatten": true - } - }, - "arr-filter": { - "packages": { - "make-iterator": true - } - }, - "arr-map": { - "packages": { - "make-iterator": true - } - }, - "array-includes": { - "packages": { - "call-bind": true, - "define-properties": true, - "es-abstract": true, - "get-intrinsic": true, - "is-string": true - } - }, - "array-initial": { - "packages": { - "array-slice": true, - "is-number": true - } - }, - "array-last": { - "packages": { - "is-number": true - } - }, - "array-union": { - "packages": { - "array-uniq": true - } - }, - "array.prototype.flat": { - "packages": { - "define-properties": true, - "es-abstract": true - } - }, - "array.prototype.flatmap": { - "packages": { - "call-bind": true, - "define-properties": true, - "es-abstract": true - } - }, - "async-done": { - "builtin": { - "domain.create": true - }, - "globals": { - "process.nextTick": true - }, - "packages": { - "end-of-stream": true, - "once": true, - "process-nextick-args": true, - "stream-exhaust": true - } - }, - "async-each": { - "globals": { - "define": true - } - }, - "async-settle": { - "packages": { - "async-done": true - } - }, - "atob": { - "globals": { - "Buffer.from": true - } - }, - "autoprefixer": { - "globals": { - "console": true, - "process.cwd": true, - "process.env.AUTOPREFIXER_GRID": true - }, - "packages": { - "browserslist": true, - "caniuse-lite": true, - "normalize-range": true, - "num2fraction": true, - "picocolors": true, - "postcss": true, - "postcss-value-parser": true - } - }, - "babel-plugin-polyfill-corejs2": { - "packages": { - "@babel/compat-data": true, - "@babel/core": true, - "@babel/helper-define-polyfill-provider": true, - "semver": true - } - }, - "babel-plugin-polyfill-corejs3": { - "packages": { - "@babel/core": true, - "@babel/helper-define-polyfill-provider": true, - "core-js-compat": true - } - }, - "babel-plugin-polyfill-regenerator": { - "packages": { - "@babel/helper-define-polyfill-provider": true - } - }, "babelify": { "builtin": { "path.extname": true, @@ -1251,83 +1149,41 @@ "@babel/core": true } }, - "bach": { - "builtin": { - "assert.ok": true - }, - "packages": { - "arr-filter": true, - "arr-flatten": true, - "arr-map": true, - "array-each": true, - "array-initial": true, - "array-last": true, - "async-done": true, - "async-settle": true, - "now-and-later": true - } - }, - "base": { - "builtin": { - "util.inherits": true - }, - "packages": { - "cache-base": true, - "class-utils": true, - "component-emitter": true, - "define-property": true, - "isobject": true, - "mixin-deep": true, - "pascalcase": true - } - }, "bify-module-groups": { "packages": { + "bify-module-groups>through2": true, "pify": true, - "pump": true, - "through2": true + "pump": true } }, - "bl": { + "bify-module-groups>through2": { "builtin": { "util.inherits": true }, - "packages": { - "readable-stream": true, - "safe-buffer": true - } - }, - "body": { - "builtin": { - "querystring.parse": true + "globals": { + "process.nextTick": true }, "packages": { - "continuable-cache": true, - "error": true, - "raw-body": true, - "safe-json-parse": true + "bify-module-groups>through2>readable-stream": true } }, - "brace-expansion": { + "bify-module-groups>through2>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, "packages": { - "balanced-match": true, - "concat-map": true - } - }, - "braces": { - "packages": { - "arr-flatten": true, - "array-unique": true, - "expand-range": true, - "extend-shallow": true, - "fill-range": true, - "isobject": true, - "preserve": true, - "repeat-element": true, - "snapdragon": true, - "snapdragon-node": true, - "split-string": true, - "to-regex": true + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, "brfs": { @@ -1337,43 +1193,182 @@ "path": true }, "packages": { - "quote-stream": true, - "resolve": true, - "static-module": true, - "through2": true + "brfs>quote-stream": true, + "brfs>resolve": true, + "brfs>static-module": true, + "brfs>through2": true } }, - "browser-pack": { - "builtin": { - "fs.readFileSync": true, - "path.join": true, - "path.relative": true - }, + "brfs>quote-stream": { "globals": { - "__dirname": true, - "process.cwd": true + "Buffer": true }, "packages": { - "JSONStream": true, - "combine-source-map": true, - "defined": true, - "safe-buffer": true, - "through2": true, - "umd": true + "brfs>quote-stream>buffer-equal": true, + "brfs>quote-stream>through2": true } }, - "browser-resolve": { + "brfs>quote-stream>buffer-equal": { + "builtin": { + "buffer.Buffer.isBuffer": true + } + }, + "brfs>quote-stream>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "brfs>resolve": { "builtin": { "fs.readFile": true, "fs.readFileSync": true, - "path": true + "fs.realpath": true, + "fs.realpathSync": true, + "fs.stat": true, + "fs.statSync": true, + "path.dirname": true, + "path.join": true, + "path.parse": true, + "path.relative": true, + "path.resolve": true }, "globals": { - "__dirname": true, - "process.platform": true + "process.nextTick": true, + "process.platform": true, + "process.versions": true }, "packages": { - "resolve": true + "brfs>resolve>path-parse": true, + "depcheck>is-core-module": true + } + }, + "brfs>resolve>path-parse": { + "globals": { + "process.platform": true + } + }, + "brfs>static-module": { + "packages": { + "brfs>static-module>acorn-node": true, + "brfs>static-module>magic-string": true, + "brfs>static-module>merge-source-map": true, + "brfs>static-module>scope-analyzer": true, + "brfs>static-module>shallow-copy": true, + "brfs>static-module>static-eval": true, + "brfs>static-module>through2": true, + "browserify>concat-stream": true, + "browserify>duplexer2": true, + "enzyme>has": true, + "enzyme>object-inspect": true, + "jsdom>escodegen": true, + "nyc>convert-source-map": true, + "readable-stream": true + } + }, + "brfs>static-module>acorn-node": { + "packages": { + "@storybook/addon-essentials>@storybook/addon-docs>acorn-walk": true, + "eslint>espree>acorn": true, + "watchify>xtend": true + } + }, + "brfs>static-module>magic-string": { + "globals": { + "Buffer": true, + "btoa": true, + "console.warn": true + }, + "packages": { + "brfs>static-module>magic-string>sourcemap-codec": true + } + }, + "brfs>static-module>magic-string>sourcemap-codec": { + "globals": { + "define": true + } + }, + "brfs>static-module>merge-source-map": { + "packages": { + "brfs>static-module>merge-source-map>source-map": true + } + }, + "brfs>static-module>scope-analyzer": { + "builtin": { + "assert.ok": true, + "assert.strictEqual": true + }, + "packages": { + "brfs>static-module>scope-analyzer>array-from": true, + "brfs>static-module>scope-analyzer>dash-ast": true, + "brfs>static-module>scope-analyzer>es6-map": true, + "brfs>static-module>scope-analyzer>es6-set": true, + "brfs>static-module>scope-analyzer>estree-is-function": true, + "brfs>static-module>scope-analyzer>get-assigned-identifiers": true, + "resolve-url-loader>es6-iterator>es6-symbol": true + } + }, + "brfs>static-module>scope-analyzer>dash-ast": { + "builtin": { + "assert": true + } + }, + "brfs>static-module>scope-analyzer>es6-map": { + "packages": { + "gulp-sourcemaps>debug-fabulous>memoizee>event-emitter": true, + "resolve-url-loader>es6-iterator": true, + "resolve-url-loader>es6-iterator>d": true, + "resolve-url-loader>es6-iterator>es5-ext": true, + "resolve-url-loader>es6-iterator>es6-symbol": true + } + }, + "brfs>static-module>scope-analyzer>es6-set": { + "packages": { + "gulp-sourcemaps>debug-fabulous>memoizee>event-emitter": true, + "resolve-url-loader>es6-iterator": true, + "resolve-url-loader>es6-iterator>d": true, + "resolve-url-loader>es6-iterator>es5-ext": true, + "resolve-url-loader>es6-iterator>es6-symbol": true + } + }, + "brfs>static-module>scope-analyzer>get-assigned-identifiers": { + "builtin": { + "assert.equal": true + } + }, + "brfs>static-module>static-eval": { + "packages": { + "jsdom>escodegen": true + } + }, + "brfs>static-module>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "brfs>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true } }, "browserify": { @@ -1393,83 +1388,99 @@ "process.platform": true }, "packages": { - "browser-pack": true, - "browser-resolve": true, - "cached-path-relative": true, - "concat-stream": true, - "defined": true, - "deps-sort": true, - "has": true, - "htmlescape": true, - "inherits": true, - "insert-module-globals": true, + "brfs>resolve": true, + "browserify>browser-pack": true, + "browserify>browser-resolve": true, + "browserify>cached-path-relative": true, + "browserify>concat-stream": true, + "browserify>deps-sort": true, + "browserify>insert-module-globals": true, + "browserify>module-deps": true, + "browserify>read-only-stream": true, + "browserify>shasum": true, + "browserify>syntax-error": true, + "browserify>through2": true, + "enzyme>has": true, "labeled-stream-splicer": true, - "module-deps": true, - "read-only-stream": true, - "resolve": true, - "shasum": true, - "syntax-error": true, - "through2": true, - "xtend": true + "lavamoat>htmlescape": true, + "pumpify>inherits": true, + "watchify>defined": true, + "watchify>xtend": true } }, - "browserslist": { - "builtin": { - "fs.existsSync": true, - "fs.readFileSync": true, - "fs.statSync": true, - "path.basename": true, - "path.dirname": true, - "path.join": true, - "path.resolve": true - }, + "browserify>JSONStream": { "globals": { - "console.warn": true, - "process.env.BROWSERSLIST": true, - "process.env.BROWSERSLIST_CONFIG": true, - "process.env.BROWSERSLIST_DANGEROUS_EXTEND": true, - "process.env.BROWSERSLIST_DISABLE_CACHE": true, - "process.env.BROWSERSLIST_ENV": true, - "process.env.BROWSERSLIST_IGNORE_OLD_DATA": true, - "process.env.BROWSERSLIST_STATS": true, - "process.env.NODE_ENV": true, - "process.versions.node": true + "Buffer": true }, "packages": { - "caniuse-lite": true, - "electron-to-chromium": true, - "node-releases": true + "browserify>JSONStream>jsonparse": true, + "debounce-stream>through": true } }, - "buffer-crc32": { - "builtin": { - "buffer.Buffer": true - } - }, - "buffer-equal": { - "builtin": { - "buffer.Buffer.isBuffer": true - } - }, - "buffer-from": { + "browserify>JSONStream>jsonparse": { "globals": { "Buffer": true } }, - "cache-base": { + "browserify>browser-pack": { + "builtin": { + "fs.readFileSync": true, + "path.join": true, + "path.relative": true + }, + "globals": { + "__dirname": true, + "process.cwd": true + }, "packages": { - "collection-visit": true, - "component-emitter": true, - "get-value": true, - "has-value": true, - "isobject": true, - "set-value": true, - "to-object-path": true, - "union-value": true, - "unset-value": true + "@lavamoat/lavapack>combine-source-map": true, + "@lavamoat/lavapack>umd": true, + "browserify>JSONStream": true, + "browserify>browser-pack>through2": true, + "ethereumjs-wallet>safe-buffer": true, + "watchify>defined": true } }, - "cached-path-relative": { + "browserify>browser-pack>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "browserify>browser-resolve": { + "builtin": { + "fs.readFile": true, + "fs.readFileSync": true, + "path": true + }, + "globals": { + "__dirname": true, + "process.platform": true + }, + "packages": { + "browserify>browser-resolve>resolve": true + } + }, + "browserify>browser-resolve>resolve": { + "builtin": { + "fs.readFile": true, + "fs.readFileSync": true, + "fs.stat": true, + "fs.statSync": true, + "path": true + }, + "globals": { + "process.nextTick": true, + "process.platform": true + } + }, + "browserify>cached-path-relative": { "builtin": { "path": true }, @@ -1477,204 +1488,214 @@ "process.cwd": true } }, - "call-bind": { + "browserify>concat-stream": { + "globals": { + "Buffer.concat": true, + "Buffer.isBuffer": true + }, "packages": { - "function-bind": true, - "get-intrinsic": true + "browserify>concat-stream>typedarray": true, + "pumpify>inherits": true, + "readable-stream": true, + "terser>source-map-support>buffer-from": true + } + }, + "browserify>deps-sort": { + "packages": { + "browserify>deps-sort>through2": true, + "watchify>browserify>shasum-object": true + } + }, + "browserify>deps-sort>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "browserify>duplexer2": { + "packages": { + "readable-stream": true + } + }, + "browserify>insert-module-globals": { + "builtin": { + "path.dirname": true, + "path.isAbsolute": true, + "path.relative": true, + "path.sep": true + }, + "globals": { + "Buffer.concat": true, + "Buffer.isBuffer": true + }, + "packages": { + "@lavamoat/lavapack>combine-source-map": true, + "brfs>static-module>acorn-node": true, + "browserify>insert-module-globals>through2": true, + "browserify>insert-module-globals>undeclared-identifiers": true, + "gulp-watch>path-is-absolute": true, + "watchify>xtend": true + } + }, + "browserify>insert-module-globals>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "browserify>insert-module-globals>undeclared-identifiers": { + "packages": { + "brfs>static-module>acorn-node": true, + "brfs>static-module>scope-analyzer>get-assigned-identifiers": true, + "watchify>xtend": true + } + }, + "browserify>module-deps": { + "builtin": { + "fs.createReadStream": true, + "fs.readFile": true, + "path.delimiter": true, + "path.dirname": true, + "path.join": true, + "path.resolve": true + }, + "globals": { + "process.cwd": true, + "process.env.NODE_PATH": true, + "process.nextTick": true, + "process.platform": true, + "setTimeout": true, + "tr": true + }, + "packages": { + "brfs>resolve": true, + "browserify>cached-path-relative": true, + "browserify>concat-stream": true, + "browserify>duplexer2": true, + "browserify>module-deps>detective": true, + "browserify>module-deps>stream-combiner2": true, + "browserify>module-deps>through2": true, + "browserify>parents": true, + "lavamoat-browserify>browser-resolve": true, + "loose-envify": true, + "pumpify>inherits": true, + "readable-stream": true, + "watchify>defined": true, + "watchify>xtend": true + } + }, + "browserify>module-deps>detective": { + "packages": { + "brfs>static-module>acorn-node": true, + "watchify>defined": true + } + }, + "browserify>module-deps>stream-combiner2": { + "packages": { + "browserify>duplexer2": true, + "readable-stream": true + } + }, + "browserify>module-deps>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "browserify>parents": { + "globals": { + "process.cwd": true, + "process.platform": true + }, + "packages": { + "browserify>parents>path-platform": true + } + }, + "browserify>parents>path-platform": { + "builtin": { + "path": true, + "util.isObject": true, + "util.isString": true + }, + "globals": { + "process.cwd": true, + "process.env": true, + "process.platform": true + } + }, + "browserify>read-only-stream": { + "packages": { + "readable-stream": true + } + }, + "browserify>shasum": { + "builtin": { + "buffer.Buffer.isBuffer": true, + "crypto.createHash": true + }, + "packages": { + "browserify>shasum>json-stable-stringify": true + } + }, + "browserify>shasum>json-stable-stringify": { + "packages": { + "lavamoat>json-stable-stringify>jsonify": true + } + }, + "browserify>string_decoder": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, + "browserify>syntax-error": { + "packages": { + "brfs>static-module>acorn-node": true + } + }, + "browserify>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true } }, "chalk": { - "globals": { - "process.env.TERM": true, - "process.platform": true - }, "packages": { - "ansi-styles": true, - "escape-string-regexp": true, - "supports-color": true + "chalk>ansi-styles": true, + "sinon>supports-color": true } }, - "chokidar": { - "builtin": { - "events.EventEmitter": true, - "fs": true, - "os.type": true, - "path.basename": true, - "path.dirname": true, - "path.extname": true, - "path.isAbsolute": true, - "path.join": true, - "path.normalize": true, - "path.relative": true, - "path.resolve": true, - "path.sep": true, - "util.promisify": true - }, - "globals": { - "clearTimeout": true, - "console.error": true, - "process.env.CHOKIDAR_INTERVAL": true, - "process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR": true, - "process.env.CHOKIDAR_USEPOLLING": true, - "process.nextTick": true, - "process.platform": true, - "process.version.match": true, - "setTimeout": true - }, + "chalk>ansi-styles": { "packages": { - "anymatch": true, - "async-each": true, - "braces": true, - "glob-parent": true, - "inherits": true, - "is-binary-path": true, - "is-glob": true, - "normalize-path": true, - "path-is-absolute": true, - "readdirp": true, - "upath": true + "chalk>ansi-styles>color-convert": true } }, - "class-utils": { - "builtin": { - "util": true - }, + "chalk>ansi-styles>color-convert": { "packages": { - "arr-union": true, - "define-property": true, - "isobject": true, - "static-extend": true - } - }, - "clone": { - "globals": { - "Buffer": true - } - }, - "clone-buffer": { - "builtin": { - "buffer.Buffer": true - } - }, - "clone-deep": { - "packages": { - "for-own": true, - "is-plain-object": true, - "kind-of": true, - "lazy-cache": true, - "shallow-clone": true - } - }, - "clone-regexp": { - "packages": { - "is-regexp": true - } - }, - "clone-stats": { - "builtin": { - "fs.Stats": true - } - }, - "cloneable-readable": { - "packages": { - "inherits": true, - "process-nextick-args": true, - "through2": true - } - }, - "collection-map": { - "packages": { - "arr-map": true, - "for-own": true, - "make-iterator": true - } - }, - "collection-visit": { - "packages": { - "map-visit": true, - "object-visit": true - } - }, - "color-convert": { - "packages": { - "color-name": true - } - }, - "color-support": { - "globals": { - "process": true - } - }, - "combine-source-map": { - "builtin": { - "path.dirname": true, - "path.join": true - }, - "globals": { - "process.platform": true - }, - "packages": { - "convert-source-map": true, - "inline-source-map": true, - "lodash.memoize": true, - "source-map": true - } - }, - "concat-stream": { - "globals": { - "Buffer.concat": true, - "Buffer.from": true, - "Buffer.isBuffer": true - }, - "packages": { - "buffer-from": true, - "inherits": true, - "readable-stream": true, - "typedarray": true - } - }, - "contains-path": { - "builtin": { - "path.normalize": true - } - }, - "convert-source-map": { - "builtin": { - "fs.readFileSync": true, - "path.join": true, - "path.resolve": true - }, - "globals": { - "Buffer.from": true - }, - "packages": { - "safe-buffer": true - } - }, - "core-js-compat": { - "packages": { - "semver": true - } - }, - "core-util-is": { - "globals": { - "Buffer.isBuffer": true - } - }, - "cosmiconfig": { - "builtin": { - "fs": true, - "os": true, - "path": true - }, - "globals": { - "process.cwd": true - }, - "packages": { - "import-fresh": true, - "parse-json": true, - "path-type": true, - "yaml": true + "jest-canvas-mock>moo-color>color-name": true } }, "cross-spawn": { @@ -1696,80 +1717,48 @@ "process.platform": true }, "packages": { - "path-key": true, - "shebang-command": true, - "which": true + "cross-spawn>path-key": true, + "cross-spawn>shebang-command": true, + "cross-spawn>which": true } }, - "css": { - "builtin": { - "fs.readFileSync": true, - "path.dirname": true, - "path.sep": true - }, + "cross-spawn>path-key": { + "globals": { + "process.env": true, + "process.platform": true + } + }, + "cross-spawn>shebang-command": { "packages": { - "inherits": true, - "source-map": true, - "source-map-resolve": true + "cross-spawn>shebang-command>shebang-regex": true } }, - "d": { - "packages": { - "es5-ext": true - } - }, - "dash-ast": { + "cross-spawn>which": { "builtin": { - "assert": true - } - }, - "debug": { - "builtin": { - "fs.SyncWriteStream": true, - "net.Socket": true, - "tty.WriteStream": true, - "tty.isatty": true, - "util": true + "path.join": true }, "globals": { - "chrome": true, - "console": true, - "document": true, - "localStorage": true, - "navigator": true, - "process": true + "process.cwd": true, + "process.env.OSTYPE": true, + "process.env.PATH": true, + "process.env.PATHEXT": true, + "process.platform": true }, "packages": { - "ms": true, - "supports-color": true + "mocha>which>isexe": true } }, - "debug-fabulous": { - "packages": { - "debug": true, - "memoizee": true, - "object-assign": true + "debounce-stream>duplexer": { + "builtin": { + "stream": true } }, - "deep-extend": { + "debounce-stream>through": { + "builtin": { + "stream": true + }, "globals": { - "Buffer": true - } - }, - "default-resolution": { - "globals": { - "process.version.match": true - } - }, - "define-properties": { - "packages": { - "object-keys": true - } - }, - "define-property": { - "packages": { - "is-descriptor": true, - "isobject": true + "process.nextTick": true } }, "del": { @@ -1777,74 +1766,171 @@ "path.resolve": true }, "packages": { - "globby": true, - "is-path-cwd": true, - "is-path-in-cwd": true, - "p-map": true, - "pify": true, - "rimraf": true + "del>globby": true, + "del>is-path-cwd": true, + "del>is-path-in-cwd": true, + "del>p-map": true, + "del>pify": true, + "del>rimraf": true } }, - "deps-sort": { + "del>globby": { "packages": { - "shasum-object": true, - "through2": true + "del>globby>array-union": true, + "del>globby>pify": true, + "del>globby>pinkie-promise": true, + "nyc>glob": true, + "react>object-assign": true } }, - "detective": { + "del>globby>array-union": { "packages": { - "acorn-node": true, - "defined": true + "del>globby>array-union>array-uniq": true } }, - "dir-glob": { + "del>globby>pinkie-promise": { + "packages": { + "del>globby>pinkie-promise>pinkie": true + } + }, + "del>globby>pinkie-promise>pinkie": { + "globals": { + "process": true, + "setImmediate": true, + "setTimeout": true + } + }, + "del>is-path-cwd": { "builtin": { - "path.extname": true, - "path.isAbsolute": true, - "path.join": true, - "path.posix.join": true + "path.resolve": true }, + "globals": { + "process.cwd": true + } + }, + "del>is-path-in-cwd": { "globals": { "process.cwd": true }, "packages": { - "path-type": true + "del>is-path-in-cwd>is-path-inside": true } }, - "doctrine": { + "del>is-path-in-cwd>is-path-inside": { "builtin": { - "assert": true + "path.resolve": true }, "packages": { - "esutils": true, - "isarray": true + "serve-handler>path-is-inside": true } }, - "dom-serializer": { - "packages": { - "domelementtype": true, - "entities": true - } - }, - "domhandler": { - "packages": { - "domelementtype": true - } - }, - "domutils": { - "packages": { - "dom-serializer": true, - "domelementtype": true - } - }, - "duplexer": { + "del>rimraf": { "builtin": { - "stream": true + "assert": true, + "fs": true, + "path.join": true + }, + "globals": { + "process.platform": true, + "setTimeout": true + }, + "packages": { + "nyc>glob": true } }, - "duplexer2": { + "depcheck>@babel/traverse": { + "globals": { + "console.log": true, + "console.trace": true + }, "packages": { - "readable-stream": true + "@babel/code-frame": true, + "@babel/core>@babel/generator": true, + "@babel/core>@babel/types": true, + "depcheck>@babel/parser": true, + "depcheck>@babel/traverse>@babel/helper-environment-visitor": true, + "depcheck>@babel/traverse>@babel/helper-function-name": true, + "depcheck>@babel/traverse>@babel/helper-hoist-variables": true, + "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true, + "depcheck>@babel/traverse>globals": true, + "eslint>debug": true + } + }, + "depcheck>@babel/traverse>@babel/helper-environment-visitor": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "depcheck>@babel/traverse>@babel/helper-function-name": { + "packages": { + "@babel/core>@babel/template": true, + "@babel/core>@babel/types": true, + "depcheck>@babel/traverse>@babel/helper-function-name>@babel/helper-get-function-arity": true + } + }, + "depcheck>@babel/traverse>@babel/helper-function-name>@babel/helper-get-function-arity": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "depcheck>@babel/traverse>@babel/helper-hoist-variables": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "depcheck>@babel/traverse>@babel/helper-split-export-declaration": { + "packages": { + "@babel/core>@babel/types": true + } + }, + "depcheck>cosmiconfig>parse-json>error-ex": { + "builtin": { + "util.inherits": true + }, + "packages": { + "depcheck>cosmiconfig>parse-json>error-ex>is-arrayish": true + } + }, + "depcheck>cosmiconfig>yaml": { + "globals": { + "Buffer": true, + "YAML_SILENCE_DEPRECATION_WARNINGS": true, + "YAML_SILENCE_WARNINGS": true, + "atob": true, + "btoa": true, + "console.warn": true, + "process": true + } + }, + "depcheck>is-core-module": { + "globals": { + "process.versions": true + }, + "packages": { + "enzyme>has": true + } + }, + "depcheck>json5": { + "globals": { + "console.warn": true + } + }, + "depcheck>readdirp": { + "builtin": { + "fs": true, + "path.join": true, + "path.relative": true, + "path.resolve": true, + "path.sep": true, + "stream.Readable": true, + "util.promisify": true + }, + "globals": { + "process.platform": true, + "process.versions.node.split": true + }, + "packages": { + "fast-glob>picomatch": true } }, "duplexify": { @@ -1853,10 +1939,29 @@ "process.nextTick": true }, "packages": { + "duplexify>readable-stream": true, + "duplexify>stream-shift": true, "end-of-stream": true, - "inherits": true, - "readable-stream": true, - "stream-shift": true + "pumpify>inherits": true + } + }, + "duplexify>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true } }, "end-of-stream": { @@ -1864,96 +1969,53 @@ "process.nextTick": true }, "packages": { - "once": true + "pump>once": true } }, - "error": { - "builtin": { - "assert": true - }, + "enzyme>array.prototype.flat": { "packages": { - "string-template": true, - "xtend": true + "globalthis>define-properties": true, + "string.prototype.matchall>es-abstract": true } }, - "error-ex": { - "builtin": { - "util.inherits": true - }, + "enzyme>has": { "packages": { - "is-arrayish": true + "mocha>object.assign>function-bind": true } }, - "es-abstract": { - "packages": { - "call-bind": true, - "es-to-primitive": true, - "get-intrinsic": true, - "has": true, - "has-symbols": true, - "is-callable": true, - "is-regex": true, - "object-inspect": true - } - }, - "es-to-primitive": { - "packages": { - "is-callable": true, - "is-date-object": true, - "is-symbol": true - } - }, - "es5-ext": { - "packages": { - "es6-symbol": true - } - }, - "es6-iterator": { - "packages": { - "d": true, - "es5-ext": true, - "es6-symbol": true - } - }, - "es6-map": { - "packages": { - "d": true, - "es5-ext": true, - "es6-iterator": true, - "es6-symbol": true, - "event-emitter": true - } - }, - "es6-set": { - "packages": { - "d": true, - "es5-ext": true, - "es6-iterator": true, - "es6-symbol": true, - "event-emitter": true - } - }, - "es6-symbol": { - "packages": { - "d": true - } - }, - "es6-weak-map": { - "packages": { - "d": true, - "es5-ext": true, - "es6-iterator": true, - "es6-symbol": true - } - }, - "escodegen": { + "enzyme>is-callable": { "globals": { - "sourceMap.SourceNode": true - }, + "document": true + } + }, + "enzyme>is-regex": { "packages": { - "estraverse": true, - "esutils": true, - "source-map": true + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "enzyme>object-inspect": { + "builtin": { + "util.inspect": true + }, + "globals": { + "HTMLElement": true + } + }, + "enzyme>object.assign": { + "packages": { + "globalthis>define-properties": true, + "nock>deep-equal>object-keys": true, + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "enzyme>object.entries": { + "packages": { + "enzyme>has": true, + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>es-abstract": true } }, "eslint": { @@ -1986,29 +2048,29 @@ "process": true }, "packages": { - "@eslint/eslintrc": true, - "ajv": true, - "debug": true, - "doctrine": true, - "eslint-scope": true, - "eslint-utils": true, - "eslint-visitor-keys": true, - "espree": true, - "esquery": true, - "esutils": true, - "file-entry-cache": true, - "functional-red-black-tree": true, - "glob-parent": true, - "globals": true, - "ignore": true, - "imurmurhash": true, - "is-glob": true, - "json-stable-stringify-without-jsonify": true, - "levn": true, - "lodash": true, - "minimatch": true, - "natural-compare": true, - "regexpp": true + "eslint>@eslint/eslintrc": true, + "eslint>ajv": true, + "eslint>debug": true, + "eslint>doctrine": true, + "eslint>eslint-scope": true, + "eslint>eslint-utils": true, + "eslint>eslint-visitor-keys": true, + "eslint>espree": true, + "eslint>esquery": true, + "eslint>esutils": true, + "eslint>file-entry-cache": true, + "eslint>functional-red-black-tree": true, + "eslint>glob-parent": true, + "eslint>globals": true, + "eslint>ignore": true, + "eslint>imurmurhash": true, + "eslint>is-glob": true, + "eslint>json-stable-stringify-without-jsonify": true, + "eslint>levn": true, + "eslint>minimatch": true, + "eslint>natural-compare": true, + "eslint>regexpp": true, + "lodash": true } }, "eslint-config-prettier": { @@ -2022,8 +2084,28 @@ "path.resolve": true }, "packages": { - "debug": true, - "resolve": true + "brfs>resolve": true, + "eslint-import-resolver-node>debug": true + } + }, + "eslint-import-resolver-node>debug": { + "builtin": { + "fs.SyncWriteStream": true, + "net.Socket": true, + "tty.WriteStream": true, + "tty.isatty": true, + "util": true + }, + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "eslint-import-resolver-node>debug>ms": true } }, "eslint-import-resolver-typescript": { @@ -2035,14 +2117,75 @@ "process.cwd": true }, "packages": { - "debug": true, - "glob": true, - "is-glob": true, - "resolve": true, - "tsconfig-paths": true + "brfs>resolve": true, + "eslint-plugin-import>tsconfig-paths": true, + "eslint>debug": true, + "eslint>is-glob": true, + "nyc>glob": true } }, - "eslint-module-utils": { + "eslint-plugin-import": { + "builtin": { + "fs": true, + "path": true, + "vm": true + }, + "globals": { + "process.cwd": true, + "process.env": true + }, + "packages": { + "brfs>resolve": true, + "enzyme>array.prototype.flat": true, + "enzyme>has": true, + "enzyme>object.values": true, + "eslint": true, + "eslint-plugin-import>contains-path": true, + "eslint-plugin-import>debug": true, + "eslint-plugin-import>doctrine": true, + "eslint-plugin-import>eslint-module-utils": true, + "eslint-plugin-import>read-pkg-up": true, + "eslint-plugin-import>tsconfig-paths": true, + "eslint-plugin-react>array-includes": true, + "eslint>minimatch": true, + "typescript": true + } + }, + "eslint-plugin-import>contains-path": { + "builtin": { + "path.normalize": true + } + }, + "eslint-plugin-import>debug": { + "builtin": { + "fs.SyncWriteStream": true, + "net.Socket": true, + "tty.WriteStream": true, + "tty.isatty": true, + "util": true + }, + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "eslint-plugin-import>debug>ms": true + } + }, + "eslint-plugin-import>doctrine": { + "builtin": { + "assert": true + }, + "packages": { + "eslint>esutils": true, + "readable-stream>isarray": true + } + }, + "eslint-plugin-import>eslint-module-utils": { "builtin": { "crypto.createHash": true, "fs.existsSync": true, @@ -2061,54 +2204,239 @@ "process.hrtime": true }, "packages": { - "debug": true, - "pkg-dir": true + "@babel/eslint-parser": true, + "eslint-import-resolver-node": true, + "eslint-plugin-import>eslint-module-utils>debug": true, + "eslint-plugin-import>eslint-module-utils>pkg-dir": true } }, - "eslint-plugin-es": { - "packages": { - "eslint-utils": true, - "regexpp": true - } - }, - "eslint-plugin-import": { + "eslint-plugin-import>eslint-module-utils>debug": { "builtin": { - "fs": true, - "path": true, - "vm": true + "fs.SyncWriteStream": true, + "net.Socket": true, + "tty.WriteStream": true, + "tty.isatty": true, + "util": true }, "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "eslint-plugin-import>eslint-module-utils>debug>ms": true + } + }, + "eslint-plugin-import>eslint-module-utils>pkg-dir": { + "builtin": { + "path.dirname": true + }, + "packages": { + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up": true + } + }, + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up": { + "builtin": { + "path.dirname": true, + "path.join": true, + "path.parse": true, + "path.resolve": true + }, + "packages": { + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up>locate-path": true + } + }, + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up>locate-path": { + "builtin": { + "path.resolve": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up>locate-path>p-locate": true, + "mocha>find-up>locate-path>path-exists": true + } + }, + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up>locate-path>p-locate": { + "packages": { + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up>locate-path>p-locate>p-limit": true + } + }, + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up>locate-path>p-locate>p-limit": { + "packages": { + "eslint-plugin-import>eslint-module-utils>pkg-dir>find-up>locate-path>p-locate>p-limit>p-try": true + } + }, + "eslint-plugin-import>read-pkg-up": { + "packages": { + "eslint-plugin-import>read-pkg-up>find-up": true, + "eslint-plugin-import>read-pkg-up>read-pkg": true + } + }, + "eslint-plugin-import>read-pkg-up>find-up": { + "builtin": { + "path.dirname": true, + "path.join": true, + "path.parse": true, + "path.resolve": true + }, + "packages": { + "eslint-plugin-import>read-pkg-up>find-up>locate-path": true + } + }, + "eslint-plugin-import>read-pkg-up>find-up>locate-path": { + "builtin": { + "path.resolve": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "eslint-plugin-import>read-pkg-up>find-up>locate-path>p-locate": true, + "mocha>find-up>locate-path>path-exists": true + } + }, + "eslint-plugin-import>read-pkg-up>find-up>locate-path>p-locate": { + "packages": { + "eslint-plugin-import>read-pkg-up>find-up>locate-path>p-locate>p-limit": true + } + }, + "eslint-plugin-import>read-pkg-up>find-up>locate-path>p-locate>p-limit": { + "packages": { + "eslint-plugin-import>read-pkg-up>find-up>locate-path>p-locate>p-limit>p-try": true + } + }, + "eslint-plugin-import>read-pkg-up>read-pkg": { + "builtin": { + "path.join": true + }, + "packages": { + "eslint-plugin-import>read-pkg-up>read-pkg>load-json-file": true, + "eslint-plugin-import>read-pkg-up>read-pkg>path-type": true, + "stylelint>meow>normalize-package-data": true + } + }, + "eslint-plugin-import>read-pkg-up>read-pkg>load-json-file": { + "builtin": { + "path.relative": true + }, + "packages": { + "eslint-plugin-import>read-pkg-up>read-pkg>load-json-file>pify": true, + "eslint-plugin-import>read-pkg-up>read-pkg>load-json-file>strip-bom": true, + "fs-extra>graceful-fs": true, + "geckodriver>got>parse-json": true + } + }, + "eslint-plugin-import>read-pkg-up>read-pkg>path-type": { + "builtin": { + "fs": true + }, + "packages": { + "eslint-plugin-import>read-pkg-up>read-pkg>path-type>pify": true + } + }, + "eslint-plugin-import>tsconfig-paths": { + "builtin": { + "fs.existsSync": true, + "fs.lstatSync": true, + "fs.readFile": true, + "fs.readFileSync": true, + "fs.stat": true, + "fs.statSync": true, + "module._resolveFilename": true, + "module.builtinModules": true, + "path.dirname": true, + "path.isAbsolute": true, + "path.join": true, + "path.resolve": true, + "path.sep": true + }, + "globals": { + "console.warn": true, + "process.argv.slice": true, "process.cwd": true, "process.env": true }, "packages": { - "array-includes": true, - "array.prototype.flat": true, - "contains-path": true, - "debug": true, - "doctrine": true, + "eslint-plugin-import>tsconfig-paths>json5": true, + "eslint-plugin-import>tsconfig-paths>strip-bom": true, + "minimist": true + } + }, + "eslint-plugin-import>tsconfig-paths>json5": { + "globals": { + "console.warn": true + } + }, + "eslint-plugin-jest": { + "builtin": { + "fs.readdirSync": true, + "path.join": true, + "path.parse": true + }, + "globals": { + "__dirname": true + }, + "packages": { + "@typescript-eslint/eslint-plugin": true, + "eslint-plugin-jest>@typescript-eslint/experimental-utils": true + } + }, + "eslint-plugin-jest>@typescript-eslint/experimental-utils": { + "builtin": { + "path": true + }, + "packages": { + "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, + "@typescript-eslint/parser>@typescript-eslint/types": true, "eslint": true, - "eslint-module-utils": true, - "has": true, - "minimatch": true, - "object.values": true, - "read-pkg-up": true, - "resolve": true, - "tsconfig-paths": true, - "typescript": true + "eslint-plugin-jest>@typescript-eslint/experimental-utils>eslint-utils": true, + "eslint>eslint-scope": true + } + }, + "eslint-plugin-jest>@typescript-eslint/experimental-utils>eslint-utils": { + "packages": { + "eslint-plugin-jest>@typescript-eslint/experimental-utils>eslint-utils>eslint-visitor-keys": true } }, "eslint-plugin-jsdoc": { "packages": { - "@es-joy/jsdoccomment": true, - "comment-parser": true, - "debug": true, "eslint": true, - "jsdoc-type-pratt-parser": true, + "eslint-plugin-jsdoc>@es-joy/jsdoccomment": true, + "eslint-plugin-jsdoc>comment-parser": true, + "eslint-plugin-jsdoc>jsdoc-type-pratt-parser": true, + "eslint-plugin-jsdoc>regextras": true, + "eslint-plugin-jsdoc>spdx-expression-parse": true, + "eslint>debug": true, "lodash": true, - "regextras": true, - "semver": true, - "spdx-expression-parse": true + "semver": true + } + }, + "eslint-plugin-jsdoc>@es-joy/jsdoccomment": { + "packages": { + "eslint-plugin-jsdoc>comment-parser": true, + "eslint-plugin-jsdoc>jsdoc-type-pratt-parser": true, + "eslint>esquery": true + } + }, + "eslint-plugin-jsdoc>jsdoc-type-pratt-parser": { + "globals": { + "define": true + } + }, + "eslint-plugin-jsdoc>regextras": { + "globals": { + "define": true + } + }, + "eslint-plugin-jsdoc>spdx-expression-parse": { + "packages": { + "eslint-plugin-jsdoc>spdx-expression-parse>spdx-exceptions": true, + "eslint-plugin-jsdoc>spdx-expression-parse>spdx-license-ids": true } }, "eslint-plugin-node": { @@ -2129,18 +2457,35 @@ "process.cwd": true }, "packages": { - "eslint-plugin-es": true, - "eslint-utils": true, - "ignore": true, - "minimatch": true, - "resolve": true, - "semver": true + "brfs>resolve": true, + "eslint-plugin-node>eslint-plugin-es": true, + "eslint-plugin-node>semver": true, + "eslint>eslint-utils": true, + "eslint>minimatch": true, + "globby>ignore": true + } + }, + "eslint-plugin-node>eslint-plugin-es": { + "packages": { + "eslint>eslint-utils": true, + "eslint>regexpp": true + } + }, + "eslint-plugin-node>semver": { + "globals": { + "console": true, + "process": true } }, "eslint-plugin-prettier": { "packages": { - "prettier": true, - "prettier-linter-helpers": true + "eslint-plugin-prettier>prettier-linter-helpers": true, + "prettier": true + } + }, + "eslint-plugin-prettier>prettier-linter-helpers": { + "packages": { + "eslint-plugin-prettier>prettier-linter-helpers>fast-diff": true } }, "eslint-plugin-react": { @@ -2156,17 +2501,17 @@ "process.cwd": true }, "packages": { - "array-includes": true, - "array.prototype.flatmap": true, - "doctrine": true, - "has": true, - "jsx-ast-utils": true, - "minimatch": true, - "object.entries": true, - "object.fromentries": true, - "object.values": true, + "enzyme>has": true, + "enzyme>object.entries": true, + "enzyme>object.values": true, + "eslint-plugin-react>array-includes": true, + "eslint-plugin-react>array.prototype.flatmap": true, + "eslint-plugin-react>doctrine": true, + "eslint-plugin-react>jsx-ast-utils": true, + "eslint-plugin-react>resolve": true, + "eslint>minimatch": true, + "lavamoat>object.fromentries": true, "prop-types": true, - "resolve": true, "string.prototype.matchall": true } }, @@ -2175,107 +2520,317 @@ "process.env.NODE_ENV": true } }, - "eslint-scope": { + "eslint-plugin-react>array-includes": { + "packages": { + "enzyme>is-string": true, + "eslint-plugin-react>array-includes>get-intrinsic": true, + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>es-abstract": true + } + }, + "eslint-plugin-react>array-includes>get-intrinsic": { + "globals": { + "AggregateError": true, + "FinalizationRegistry": true, + "WeakRef": true + }, + "packages": { + "enzyme>has": true, + "mocha>object.assign>function-bind": true, + "string.prototype.matchall>has-symbols": true + } + }, + "eslint-plugin-react>array.prototype.flatmap": { + "packages": { + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>es-abstract": true + } + }, + "eslint-plugin-react>doctrine": { "builtin": { "assert": true }, "packages": { - "esrecurse": true, - "estraverse": true + "eslint>esutils": true } }, - "eslint-utils": { + "eslint-plugin-react>jsx-ast-utils": { + "globals": { + "console.error": true + }, "packages": { - "eslint-visitor-keys": true + "enzyme>object.assign": true } }, - "espree": { + "eslint-plugin-react>resolve": { + "builtin": { + "fs.readFile": true, + "fs.readFileSync": true, + "fs.realpath": true, + "fs.realpathSync": true, + "fs.stat": true, + "fs.statSync": true, + "path.dirname": true, + "path.join": true, + "path.parse": true, + "path.relative": true, + "path.resolve": true + }, + "globals": { + "process.nextTick": true, + "process.platform": true + }, "packages": { - "acorn": true, - "acorn-jsx": true, - "eslint-visitor-keys": true + "brfs>resolve>path-parse": true, + "depcheck>is-core-module": true } }, - "esquery": { + "eslint>@eslint/eslintrc": { + "builtin": { + "assert": true, + "fs.existsSync": true, + "fs.readFileSync": true, + "module.createRequire": true, + "module.createRequireFromPath": true, + "os.homedir": true, + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.isAbsolute": true, + "path.join": true, + "path.relative": true, + "path.resolve": true, + "path.sep": true, + "util.inspect": true + }, + "globals": { + "__dirname": true, + "process.cwd": true, + "process.emitWarning": true, + "process.platform": true + }, + "packages": { + "$root$": true, + "@babel/eslint-parser": true, + "@babel/eslint-plugin": true, + "@metamask/eslint-config": true, + "@metamask/eslint-config-nodejs": true, + "@metamask/eslint-config-typescript": true, + "@typescript-eslint/eslint-plugin": true, + "eslint": true, + "eslint-config-prettier": true, + "eslint-plugin-import": true, + "eslint-plugin-jsdoc": true, + "eslint-plugin-node": true, + "eslint-plugin-prettier": true, + "eslint-plugin-react": true, + "eslint-plugin-react-hooks": true, + "eslint>@eslint/eslintrc>globals": true, + "eslint>@eslint/eslintrc>ignore": true, + "eslint>ajv": true, + "eslint>debug": true, + "eslint>espree": true, + "eslint>minimatch": true, + "eslint>strip-json-comments": true, + "nyc>js-yaml": true + } + }, + "eslint>@eslint/eslintrc>ignore": { + "globals": { + "process": true + } + }, + "eslint>ajv": { + "globals": { + "console": true + }, + "packages": { + "@storybook/api>fast-deep-equal": true, + "eslint>ajv>fast-json-stable-stringify": true, + "eslint>ajv>json-schema-traverse": true, + "eslint>ajv>uri-js": true + } + }, + "eslint>ajv>uri-js": { "globals": { "define": true } }, - "esrecurse": { - "packages": { - "estraverse": true - } - }, - "event-emitter": { - "packages": { - "d": true, - "es5-ext": true - } - }, - "event-stream": { + "eslint>debug": { "builtin": { - "buffer.Buffer.isBuffer": true, - "stream.Stream": true + "tty.isatty": true, + "util.deprecate": true, + "util.format": true, + "util.inspect": true }, "globals": { - "Buffer.concat": true, - "Buffer.isBuffer": true, - "console.error": true, - "process.nextTick": true, - "setImmediate": true + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true }, "packages": { - "duplexer": true, - "from": true, - "map-stream": true, - "pause-stream": true, - "split": true, - "stream-combiner": true, - "through": true + "eslint>debug>ms": true, + "sinon>supports-color": true } }, - "execall": { + "eslint>doctrine": { + "builtin": { + "assert": true + }, "packages": { - "clone-regexp": true + "eslint>esutils": true } }, - "expand-brackets": { + "eslint>eslint-scope": { + "builtin": { + "assert": true + }, + "packages": { + "eslint>eslint-scope>esrecurse": true, + "eslint>eslint-scope>estraverse": true + } + }, + "eslint>eslint-scope>esrecurse": { + "packages": { + "eslint>esquery>estraverse": true + } + }, + "eslint>eslint-utils": { + "packages": { + "eslint>eslint-utils>eslint-visitor-keys": true + } + }, + "eslint>espree": { + "packages": { + "eslint>espree>acorn": true, + "eslint>espree>acorn-jsx": true, + "eslint>espree>eslint-visitor-keys": true + } + }, + "eslint>espree>acorn": { + "globals": { + "define": true + } + }, + "eslint>espree>acorn-jsx": { + "packages": { + "eslint>espree>acorn": true + } + }, + "eslint>esquery": { + "globals": { + "define": true + } + }, + "eslint>file-entry-cache": { + "builtin": { + "crypto.createHash": true, + "fs.readFileSync": true, + "fs.statSync": true, + "path.basename": true, + "path.dirname": true + }, + "packages": { + "eslint>file-entry-cache>flat-cache": true + } + }, + "eslint>file-entry-cache>flat-cache": { + "builtin": { + "fs.existsSync": true, + "fs.mkdirSync": true, + "fs.readFileSync": true, + "fs.writeFileSync": true, + "path.basename": true, + "path.dirname": true, + "path.resolve": true + }, + "globals": { + "__dirname": true + }, + "packages": { + "eslint>file-entry-cache>flat-cache>flatted": true, + "nyc>rimraf": true + } + }, + "eslint>glob-parent": { + "builtin": { + "os.platform": true, + "path.posix.dirname": true + }, + "packages": { + "eslint>is-glob": true + } + }, + "eslint>ignore": { + "globals": { + "process": true + } + }, + "eslint>import-fresh": { + "builtin": { + "path.dirname": true + }, "globals": { "__filename": true }, "packages": { - "debug": true, - "define-property": true, - "extend-shallow": true, - "is-posix-bracket": true, - "posix-character-classes": true, - "regex-not": true, - "snapdragon": true, - "to-regex": true + "eslint>import-fresh>parent-module": true, + "eslint>import-fresh>resolve-from": true } }, - "expand-range": { + "eslint>import-fresh>parent-module": { "packages": { - "fill-range": true + "eslint>import-fresh>parent-module>callsites": true } }, - "extend-shallow": { - "packages": { - "assign-symbols": true, - "is-extendable": true + "eslint>import-fresh>resolve-from": { + "builtin": { + "fs.realpathSync": true, + "module._nodeModulePaths": true, + "module._resolveFilename": true, + "path.join": true, + "path.resolve": true } }, - "extglob": { + "eslint>is-glob": { "packages": { - "array-unique": true, - "define-property": true, - "expand-brackets": true, - "extend-shallow": true, - "fragment-cache": true, - "is-extglob": true, - "regex-not": true, - "snapdragon": true, - "to-regex": true + "eslint>is-glob>is-extglob": true + } + }, + "eslint>levn": { + "packages": { + "eslint>levn>prelude-ls": true, + "eslint>levn>type-check": true + } + }, + "eslint>levn>type-check": { + "packages": { + "eslint>levn>prelude-ls": true + } + }, + "eslint>minimatch": { + "builtin": { + "path": true + }, + "globals": { + "console": true + }, + "packages": { + "mocha>minimatch>brace-expansion": true + } + }, + "eslint>strip-ansi": { + "packages": { + "eslint>strip-ansi>ansi-regex": true + } + }, + "ethereumjs-wallet>safe-buffer": { + "builtin": { + "buffer": true } }, "fancy-log": { @@ -2283,7 +2838,6 @@ "console.Console": true }, "globals": { - "console": true, "process.argv.indexOf": true, "process.platform": true, "process.stderr": true, @@ -2291,10 +2845,20 @@ "process.version": true }, "packages": { - "ansi-gray": true, - "color-support": true, - "parse-node-version": true, - "time-stamp": true + "fancy-log>ansi-gray": true, + "fancy-log>color-support": true, + "fancy-log>parse-node-version": true, + "fancy-log>time-stamp": true + } + }, + "fancy-log>ansi-gray": { + "packages": { + "fancy-log>ansi-gray>ansi-wrap": true + } + }, + "fancy-log>color-support": { + "globals": { + "process": true } }, "fast-glob": { @@ -2315,132 +2879,74 @@ "process.cwd": true }, "packages": { - "@nodelib/fs.stat": true, - "@nodelib/fs.walk": true, - "glob-parent": true, - "merge2": true, - "micromatch": true, - "picomatch": true + "eslint>glob-parent": true, + "fast-glob>@nodelib/fs.stat": true, + "fast-glob>@nodelib/fs.walk": true, + "fast-glob>picomatch": true, + "globby>merge2": true, + "stylelint>micromatch": true } }, - "fastq": { - "packages": { - "reusify": true - } - }, - "faye-websocket": { + "fast-glob>@nodelib/fs.stat": { "builtin": { - "net.connect": true, - "stream.Stream": true, - "tls.connect": true, - "url.parse": true, - "util.inherits": true + "fs.lstat": true, + "fs.lstatSync": true, + "fs.stat": true, + "fs.statSync": true + } + }, + "fast-glob>@nodelib/fs.walk": { + "builtin": { + "events.EventEmitter": true, + "path.sep": true, + "stream.Readable": true }, "globals": { - "Buffer": true, - "clearInterval": true, - "process.nextTick": true, - "setInterval": true - }, - "packages": { - "websocket-driver": true - } - }, - "file-entry-cache": { - "builtin": { - "crypto.createHash": true, - "fs.readFileSync": true, - "fs.statSync": true, - "path.basename": true, - "path.dirname": true - }, - "packages": { - "flat-cache": true - } - }, - "fill-range": { - "builtin": { - "util.inspect": true - }, - "packages": { - "extend-shallow": true, - "is-number": true, - "isobject": true, - "randomatic": true, - "repeat-element": true, - "repeat-string": true, - "to-regex-range": true - } - }, - "find-up": { - "builtin": { - "path.dirname": true, - "path.join": true, - "path.parse": true, - "path.resolve": true - }, - "packages": { - "locate-path": true - } - }, - "first-chunk-stream": { - "builtin": { - "util.inherits": true - }, - "globals": { - "Buffer.concat": true, "setImmediate": true }, "packages": { - "readable-stream": true + "fast-glob>@nodelib/fs.walk>@nodelib/fs.scandir": true, + "fast-glob>@nodelib/fs.walk>fastq": true } }, - "flat-cache": { + "fast-glob>@nodelib/fs.walk>@nodelib/fs.scandir": { "builtin": { - "fs.existsSync": true, - "fs.mkdirSync": true, - "fs.readFileSync": true, - "fs.writeFileSync": true, - "path.basename": true, - "path.dirname": true, - "path.resolve": true + "fs.lstat": true, + "fs.lstatSync": true, + "fs.readdir": true, + "fs.readdirSync": true, + "fs.stat": true, + "fs.statSync": true, + "path.sep": true }, "globals": { - "__dirname": true + "process.versions.node.split": true }, "packages": { - "flatted": true, - "rimraf": true, - "write": true + "fast-glob>@nodelib/fs.stat": true, + "fast-glob>@nodelib/fs.walk>@nodelib/fs.scandir>run-parallel": true } }, - "flush-write-stream": { - "globals": { - "Buffer": true - }, - "packages": { - "inherits": true, - "readable-stream": true - } - }, - "for-own": { - "packages": { - "for-in": true - } - }, - "fragment-cache": { - "packages": { - "map-cache": true - } - }, - "from": { - "builtin": { - "stream": true - }, + "fast-glob>@nodelib/fs.walk>@nodelib/fs.scandir>run-parallel": { "globals": { "process.nextTick": true } }, + "fast-glob>@nodelib/fs.walk>fastq": { + "packages": { + "fast-glob>@nodelib/fs.walk>fastq>reusify": true + } + }, + "fast-glob>picomatch": { + "builtin": { + "path.basename": true, + "path.sep": true + }, + "globals": { + "process.platform": true, + "process.version.slice": true + } + }, "fs-extra": { "builtin": { "assert": true, @@ -2466,12 +2972,2044 @@ "setTimeout": true }, "packages": { - "graceful-fs": true, - "jsonfile": true, - "universalify": true + "fs-extra>graceful-fs": true, + "fs-extra>jsonfile": true, + "fs-extra>universalify": true } }, - "fs-mkdirp-stream": { + "fs-extra>graceful-fs": { + "builtin": { + "assert.equal": true, + "constants.O_SYMLINK": true, + "constants.O_WRONLY": true, + "constants.hasOwnProperty": true, + "fs": true, + "stream.Stream.call": true, + "util": true + }, + "globals": { + "console.error": true, + "process": true, + "setTimeout": true + } + }, + "fs-extra>jsonfile": { + "builtin": { + "fs": true + }, + "globals": { + "Buffer.isBuffer": true + }, + "packages": { + "fs-extra>graceful-fs": true + } + }, + "geckodriver>got>parse-json": { + "packages": { + "depcheck>cosmiconfig>parse-json>error-ex": true + } + }, + "globalthis": { + "packages": { + "globalthis>define-properties": true + } + }, + "globalthis>define-properties": { + "packages": { + "nock>deep-equal>object-keys": true + } + }, + "globby": { + "builtin": { + "fs.Stats": true, + "fs.readFile": true, + "fs.readFileSync": true, + "fs.statSync": true, + "path.dirname": true, + "path.isAbsolute": true, + "path.join": true, + "path.posix.join": true, + "path.relative": true, + "stream.Transform": true, + "util.promisify": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "fast-glob": true, + "globby>array-union": true, + "globby>dir-glob": true, + "globby>ignore": true, + "globby>merge2": true, + "globby>slash": true + } + }, + "globby>dir-glob": { + "builtin": { + "path.extname": true, + "path.isAbsolute": true, + "path.join": true, + "path.posix.join": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "globby>dir-glob>path-type": true + } + }, + "globby>dir-glob>path-type": { + "builtin": { + "fs": true, + "util.promisify": true + } + }, + "globby>ignore": { + "globals": { + "process": true + } + }, + "globby>merge2": { + "builtin": { + "stream.PassThrough": true + }, + "globals": { + "process.nextTick": true + } + }, + "gulp": { + "builtin": { + "util.inherits": true + }, + "packages": { + "gulp>glob-watcher": true, + "gulp>undertaker": true, + "gulp>vinyl-fs": true + } + }, + "gulp-autoprefixer": { + "globals": { + "Buffer.from": true, + "setImmediate": true + }, + "packages": { + "fancy-log": true, + "gulp-autoprefixer>autoprefixer": true, + "gulp-autoprefixer>postcss": true, + "gulp-autoprefixer>through2": true, + "gulp-zip>plugin-error": true, + "vinyl-sourcemaps-apply": true + } + }, + "gulp-autoprefixer>autoprefixer": { + "globals": { + "process.cwd": true + }, + "packages": { + "gulp-autoprefixer>autoprefixer>browserslist": true, + "gulp-autoprefixer>autoprefixer>postcss-value-parser": true, + "gulp-autoprefixer>postcss": true, + "stylelint>autoprefixer>caniuse-lite": true, + "stylelint>autoprefixer>normalize-range": true, + "stylelint>autoprefixer>num2fraction": true + } + }, + "gulp-autoprefixer>autoprefixer>browserslist": { + "builtin": { + "fs.existsSync": true, + "fs.readFileSync": true, + "fs.statSync": true, + "path.basename": true, + "path.dirname": true, + "path.join": true, + "path.resolve": true + }, + "globals": { + "console.warn": true, + "process.env.BROWSERSLIST": true, + "process.env.BROWSERSLIST_CONFIG": true, + "process.env.BROWSERSLIST_DISABLE_CACHE": true, + "process.env.BROWSERSLIST_ENV": true, + "process.env.BROWSERSLIST_STATS": true, + "process.env.NODE_ENV": true + }, + "packages": { + "stylelint>autoprefixer>browserslist>electron-to-chromium": true, + "stylelint>autoprefixer>caniuse-lite": true + } + }, + "gulp-autoprefixer>postcss": { + "builtin": { + "fs": true, + "path": true + }, + "globals": { + "Buffer": true, + "atob": true, + "btoa": true, + "console": true + }, + "packages": { + "gulp-autoprefixer>postcss>chalk": true, + "gulp-autoprefixer>postcss>source-map": true, + "gulp-autoprefixer>postcss>supports-color": true + } + }, + "gulp-autoprefixer>postcss>chalk": { + "globals": { + "process.env.TERM": true, + "process.platform": true + }, + "packages": { + "gulp-autoprefixer>postcss>chalk>ansi-styles": true, + "gulp-autoprefixer>postcss>supports-color": true, + "mocha>escape-string-regexp": true + } + }, + "gulp-autoprefixer>postcss>chalk>ansi-styles": { + "packages": { + "@metamask/jazzicon>color>color-convert": true + } + }, + "gulp-autoprefixer>postcss>supports-color": { + "builtin": { + "os.release": true + }, + "globals": { + "process.env": true, + "process.platform": true, + "process.stderr": true, + "process.stdout": true, + "process.versions.node.split": true + }, + "packages": { + "mocha>supports-color>has-flag": true + } + }, + "gulp-autoprefixer>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp-dart-sass": { + "builtin": { + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true, + "path.relative": true + }, + "globals": { + "process.cwd": true, + "process.stderr.write": true + }, + "packages": { + "gulp-dart-sass>chalk": true, + "gulp-dart-sass>lodash.clonedeep": true, + "gulp-dart-sass>strip-ansi": true, + "gulp-dart-sass>through2": true, + "gulp-zip>plugin-error": true, + "sass": true, + "vinyl-sourcemaps-apply": true, + "vinyl>replace-ext": true + } + }, + "gulp-dart-sass>chalk": { + "globals": { + "process.env.TERM": true, + "process.platform": true + }, + "packages": { + "gulp-dart-sass>chalk>ansi-styles": true, + "gulp-dart-sass>chalk>supports-color": true, + "mocha>escape-string-regexp": true + } + }, + "gulp-dart-sass>chalk>ansi-styles": { + "packages": { + "@metamask/jazzicon>color>color-convert": true + } + }, + "gulp-dart-sass>chalk>supports-color": { + "builtin": { + "os.release": true + }, + "globals": { + "process.env": true, + "process.platform": true, + "process.stderr": true, + "process.stdout": true, + "process.versions.node.split": true + }, + "packages": { + "mocha>supports-color>has-flag": true + } + }, + "gulp-dart-sass>strip-ansi": { + "packages": { + "gulp-dart-sass>strip-ansi>ansi-regex": true + } + }, + "gulp-dart-sass>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp-livereload": { + "builtin": { + "path.relative": true + }, + "packages": { + "fancy-log": true, + "gulp-livereload>chalk": true, + "gulp-livereload>debug": true, + "gulp-livereload>event-stream": true, + "gulp-livereload>lodash.assign": true, + "gulp-livereload>tiny-lr": true + } + }, + "gulp-livereload>chalk": { + "globals": { + "process.env.TERM": true, + "process.platform": true + }, + "packages": { + "gulp-livereload>chalk>ansi-styles": true, + "gulp-livereload>chalk>supports-color": true, + "mocha>escape-string-regexp": true + } + }, + "gulp-livereload>chalk>ansi-styles": { + "packages": { + "@metamask/jazzicon>color>color-convert": true + } + }, + "gulp-livereload>chalk>supports-color": { + "builtin": { + "os.release": true + }, + "globals": { + "process.env": true, + "process.platform": true, + "process.stderr": true, + "process.stdout": true, + "process.versions.node.split": true + }, + "packages": { + "mocha>supports-color>has-flag": true + } + }, + "gulp-livereload>debug": { + "builtin": { + "tty.isatty": true, + "util": true + }, + "globals": { + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "analytics-node>ms": true, + "gulp-livereload>chalk>supports-color": true + } + }, + "gulp-livereload>event-stream": { + "builtin": { + "buffer.Buffer.isBuffer": true, + "stream.Stream": true + }, + "globals": { + "Buffer.concat": true, + "Buffer.isBuffer": true, + "console.error": true, + "process.nextTick": true, + "setImmediate": true + }, + "packages": { + "debounce-stream>duplexer": true, + "debounce-stream>through": true, + "gulp-livereload>event-stream>from": true, + "gulp-livereload>event-stream>map-stream": true, + "gulp-livereload>event-stream>pause-stream": true, + "gulp-livereload>event-stream>split": true, + "gulp-livereload>event-stream>stream-combiner": true + } + }, + "gulp-livereload>event-stream>from": { + "builtin": { + "stream": true + }, + "globals": { + "process.nextTick": true + } + }, + "gulp-livereload>event-stream>map-stream": { + "builtin": { + "stream.Stream": true + }, + "globals": { + "process.nextTick": true + } + }, + "gulp-livereload>event-stream>pause-stream": { + "packages": { + "debounce-stream>through": true + } + }, + "gulp-livereload>event-stream>split": { + "builtin": { + "string_decoder.StringDecoder": true + }, + "packages": { + "debounce-stream>through": true + } + }, + "gulp-livereload>event-stream>stream-combiner": { + "packages": { + "debounce-stream>duplexer": true + } + }, + "gulp-livereload>tiny-lr": { + "builtin": { + "events": true, + "fs": true, + "http": true, + "https": true, + "url.parse": true + }, + "globals": { + "console.error": true + }, + "packages": { + "gulp-livereload>tiny-lr>body": true, + "gulp-livereload>tiny-lr>debug": true, + "gulp-livereload>tiny-lr>faye-websocket": true, + "nock>qs": true, + "react>object-assign": true + } + }, + "gulp-livereload>tiny-lr>body": { + "builtin": { + "querystring.parse": true + }, + "packages": { + "gulp-livereload>tiny-lr>body>continuable-cache": true, + "gulp-livereload>tiny-lr>body>error": true, + "gulp-livereload>tiny-lr>body>raw-body": true, + "gulp-livereload>tiny-lr>body>safe-json-parse": true + } + }, + "gulp-livereload>tiny-lr>body>error": { + "builtin": { + "assert": true + }, + "packages": { + "gulp-livereload>tiny-lr>body>error>string-template": true, + "watchify>xtend": true + } + }, + "gulp-livereload>tiny-lr>body>raw-body": { + "globals": { + "Buffer.concat": true, + "process.nextTick": true + }, + "packages": { + "gulp-livereload>tiny-lr>body>raw-body>bytes": true, + "gulp-livereload>tiny-lr>body>raw-body>string_decoder": true + } + }, + "gulp-livereload>tiny-lr>body>raw-body>string_decoder": { + "builtin": { + "buffer.Buffer": true + } + }, + "gulp-livereload>tiny-lr>debug": { + "builtin": { + "tty.isatty": true, + "util": true + }, + "globals": { + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "analytics-node>ms": true, + "sinon>supports-color": true + } + }, + "gulp-livereload>tiny-lr>faye-websocket": { + "builtin": { + "net.connect": true, + "stream.Stream": true, + "tls.connect": true, + "url.parse": true, + "util.inherits": true + }, + "globals": { + "Buffer": true, + "clearInterval": true, + "process.nextTick": true, + "setInterval": true + }, + "packages": { + "gulp-livereload>tiny-lr>faye-websocket>websocket-driver": true + } + }, + "gulp-livereload>tiny-lr>faye-websocket>websocket-driver": { + "builtin": { + "crypto.createHash": true, + "crypto.randomBytes": true, + "events.EventEmitter": true, + "stream.Stream": true, + "url.parse": true, + "util.inherits": true + }, + "globals": { + "Buffer": true, + "process.version.match": true + }, + "packages": { + "gulp-livereload>tiny-lr>faye-websocket>websocket-driver>http-parser-js": true, + "gulp-livereload>tiny-lr>faye-websocket>websocket-driver>websocket-extensions": true + } + }, + "gulp-livereload>tiny-lr>faye-websocket>websocket-driver>http-parser-js": { + "builtin": { + "assert.equal": true, + "assert.ok": true + } + }, + "gulp-rename": { + "builtin": { + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true, + "stream.Transform": true + } + }, + "gulp-rtlcss": { + "globals": { + "Buffer.from": true + }, + "packages": { + "gulp-rtlcss>rtlcss": true, + "gulp-rtlcss>through2": true, + "gulp-zip>plugin-error": true, + "vinyl-sourcemaps-apply": true + } + }, + "gulp-rtlcss>rtlcss": { + "builtin": { + "fs.readFileSync": true, + "path.join": true, + "path.normalize": true + }, + "globals": { + "process.cwd": true, + "process.env.HOME": true, + "process.env.HOMEPATH": true, + "process.env.USERPROFILE": true + }, + "packages": { + "gulp-rtlcss>rtlcss>@choojs/findup": true, + "gulp-rtlcss>rtlcss>postcss": true, + "gulp-rtlcss>rtlcss>strip-json-comments": true + } + }, + "gulp-rtlcss>rtlcss>@choojs/findup": { + "builtin": { + "events.EventEmitter": true, + "fs.access": true, + "fs.accessSync": true, + "fs.exists": true, + "fs.existsSync": true, + "path.join": true, + "util.inherits": true + }, + "globals": { + "console.log": true + } + }, + "gulp-rtlcss>rtlcss>chalk": { + "globals": { + "process.env.TERM": true, + "process.platform": true + }, + "packages": { + "gulp-rtlcss>rtlcss>chalk>ansi-styles": true, + "gulp-rtlcss>rtlcss>chalk>supports-color": true, + "mocha>escape-string-regexp": true + } + }, + "gulp-rtlcss>rtlcss>chalk>ansi-styles": { + "packages": { + "@metamask/jazzicon>color>color-convert": true + } + }, + "gulp-rtlcss>rtlcss>chalk>supports-color": { + "builtin": { + "os.release": true + }, + "globals": { + "process.env": true, + "process.platform": true, + "process.stderr": true, + "process.stdout": true, + "process.versions.node.split": true + }, + "packages": { + "mocha>supports-color>has-flag": true + } + }, + "gulp-rtlcss>rtlcss>postcss": { + "builtin": { + "fs": true, + "path": true + }, + "globals": { + "Buffer": true, + "atob": true, + "btoa": true, + "console": true + }, + "packages": { + "gulp-rtlcss>rtlcss>chalk": true, + "gulp-rtlcss>rtlcss>chalk>supports-color": true, + "gulp-rtlcss>rtlcss>postcss>source-map": true + } + }, + "gulp-rtlcss>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp-sort": { + "packages": { + "gulp-sort>through2": true + } + }, + "gulp-sort>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp-sourcemaps": { + "builtin": { + "path.dirname": true, + "path.extname": true, + "path.join": true, + "path.relative": true, + "path.resolve": true, + "path.sep": true + }, + "globals": { + "Buffer.concat": true, + "Buffer.from": true + }, + "packages": { + "fs-extra>graceful-fs": true, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map": true, + "gulp-sourcemaps>@gulp-sourcemaps/map-sources": true, + "gulp-sourcemaps>acorn": true, + "gulp-sourcemaps>css": true, + "gulp-sourcemaps>debug-fabulous": true, + "gulp-sourcemaps>detect-newline": true, + "gulp-sourcemaps>source-map": true, + "gulp-sourcemaps>strip-bom-string": true, + "gulp-sourcemaps>through2": true, + "nyc>convert-source-map": true + } + }, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map": { + "packages": { + "css-loader>normalize-path": true, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map>acorn": true, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map>source-map": true, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map>through2": true, + "stylelint>postcss": true + } + }, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map>acorn": { + "globals": { + "define": true + } + }, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "gulp-sourcemaps>@gulp-sourcemaps/identity-map>through2>readable-stream": true + } + }, + "gulp-sourcemaps>@gulp-sourcemaps/identity-map>through2>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "gulp-sourcemaps>@gulp-sourcemaps/map-sources": { + "packages": { + "gulp-sourcemaps>@gulp-sourcemaps/map-sources>normalize-path": true, + "gulp-sourcemaps>@gulp-sourcemaps/map-sources>through2": true + } + }, + "gulp-sourcemaps>@gulp-sourcemaps/map-sources>normalize-path": { + "packages": { + "vinyl>remove-trailing-separator": true + } + }, + "gulp-sourcemaps>@gulp-sourcemaps/map-sources>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp-sourcemaps>acorn": { + "globals": { + "define": true + } + }, + "gulp-sourcemaps>css": { + "builtin": { + "fs.readFileSync": true, + "path.dirname": true, + "path.sep": true + }, + "packages": { + "gulp-sourcemaps>css>source-map": true, + "gulp-sourcemaps>css>source-map-resolve": true, + "pumpify>inherits": true + } + }, + "gulp-sourcemaps>css>source-map-resolve": { + "builtin": { + "path.sep": true, + "url.resolve": true + }, + "globals": { + "TextDecoder": true, + "setImmediate": true + }, + "packages": { + "gulp-sourcemaps>css>source-map-resolve>atob": true, + "gulp-sourcemaps>css>source-map-resolve>decode-uri-component": true + } + }, + "gulp-sourcemaps>css>source-map-resolve>atob": { + "globals": { + "Buffer.from": true + } + }, + "gulp-sourcemaps>debug-fabulous": { + "packages": { + "gulp-sourcemaps>debug-fabulous>debug": true, + "gulp-sourcemaps>debug-fabulous>memoizee": true, + "react>object-assign": true + } + }, + "gulp-sourcemaps>debug-fabulous>debug": { + "builtin": { + "tty.isatty": true, + "util": true + }, + "globals": { + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "analytics-node>ms": true, + "sinon>supports-color": true + } + }, + "gulp-sourcemaps>debug-fabulous>memoizee": { + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "gulp-sourcemaps>debug-fabulous>memoizee>event-emitter": true, + "gulp-sourcemaps>debug-fabulous>memoizee>is-promise": true, + "gulp-sourcemaps>debug-fabulous>memoizee>lru-queue": true, + "gulp-sourcemaps>debug-fabulous>memoizee>next-tick": true, + "gulp-sourcemaps>debug-fabulous>memoizee>timers-ext": true, + "resolve-url-loader>es6-iterator>d": true, + "resolve-url-loader>es6-iterator>es5-ext": true + } + }, + "gulp-sourcemaps>debug-fabulous>memoizee>event-emitter": { + "packages": { + "resolve-url-loader>es6-iterator>d": true, + "resolve-url-loader>es6-iterator>es5-ext": true + } + }, + "gulp-sourcemaps>debug-fabulous>memoizee>lru-queue": { + "packages": { + "resolve-url-loader>es6-iterator>es5-ext": true + } + }, + "gulp-sourcemaps>debug-fabulous>memoizee>next-tick": { + "globals": { + "MutationObserver": true, + "WebKitMutationObserver": true, + "document": true, + "process": true, + "setImmediate": true, + "setTimeout": true + } + }, + "gulp-sourcemaps>debug-fabulous>memoizee>timers-ext": { + "packages": { + "resolve-url-loader>es6-iterator>es5-ext": true + } + }, + "gulp-sourcemaps>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp-stylelint": { + "builtin": { + "fs.mkdir": true, + "fs.writeFile": true, + "path.dirname": true, + "path.resolve": true + }, + "globals": { + "Buffer.from": true, + "process.cwd": true, + "process.nextTick": true + }, + "packages": { + "eslint>strip-ansi": true, + "fancy-log": true, + "gulp-stylelint>through2": true, + "gulp-zip>plugin-error": true, + "source-map": true, + "stylelint": true + } + }, + "gulp-stylelint>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "gulp-stylelint>through2>readable-stream": true + } + }, + "gulp-stylelint>through2>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "gulp-watch": { + "builtin": { + "path.dirname": true, + "path.normalize": true, + "path.resolve": true + }, + "globals": { + "process.arch": true, + "process.cwd": true, + "process.platform": true, + "process.version": true, + "setTimeout": true + }, + "packages": { + "gulp-watch>ansi-colors": true, + "gulp-watch>anymatch": true, + "gulp-watch>chokidar": true, + "gulp-watch>fancy-log": true, + "gulp-watch>glob-parent": true, + "gulp-watch>path-is-absolute": true, + "gulp-watch>slash": true, + "gulp-watch>vinyl-file": true, + "gulp-zip>plugin-error": true, + "react>object-assign": true, + "readable-stream": true, + "vinyl": true + } + }, + "gulp-watch>ansi-colors": { + "packages": { + "fancy-log>ansi-gray>ansi-wrap": true + } + }, + "gulp-watch>anymatch": { + "builtin": { + "path.sep": true + }, + "packages": { + "gulp-watch>anymatch>micromatch": true, + "gulp-watch>anymatch>normalize-path": true + } + }, + "gulp-watch>anymatch>micromatch": { + "builtin": { + "path.sep": true + }, + "globals": { + "process": true + }, + "packages": { + "gulp-watch>anymatch>micromatch>arr-diff": true, + "gulp-watch>anymatch>micromatch>array-unique": true, + "gulp-watch>anymatch>micromatch>braces": true, + "gulp-watch>anymatch>micromatch>expand-brackets": true, + "gulp-watch>anymatch>micromatch>extglob": true, + "gulp-watch>anymatch>micromatch>filename-regex": true, + "gulp-watch>anymatch>micromatch>is-extglob": true, + "gulp-watch>anymatch>micromatch>is-glob": true, + "gulp-watch>anymatch>micromatch>kind-of": true, + "gulp-watch>anymatch>micromatch>object.omit": true, + "gulp-watch>anymatch>micromatch>parse-glob": true, + "gulp-watch>anymatch>micromatch>regex-cache": true, + "gulp-watch>anymatch>normalize-path": true + } + }, + "gulp-watch>anymatch>micromatch>arr-diff": { + "packages": { + "gulp>undertaker>arr-flatten": true + } + }, + "gulp-watch>anymatch>micromatch>braces": { + "packages": { + "gulp-watch>anymatch>micromatch>braces>expand-range": true, + "gulp-watch>anymatch>micromatch>braces>preserve": true, + "webpack>micromatch>braces>repeat-element": true + } + }, + "gulp-watch>anymatch>micromatch>braces>expand-range": { + "packages": { + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range": true + } + }, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range": { + "packages": { + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>is-number": true, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>isobject": true, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>randomatic": true, + "webpack>micromatch>braces>fill-range>repeat-string": true, + "webpack>micromatch>braces>repeat-element": true + } + }, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>is-number": { + "packages": { + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>is-number>kind-of": true + } + }, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>is-number>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>isobject": { + "packages": { + "readable-stream>isarray": true + } + }, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>randomatic": { + "packages": { + "3box>ipfs>kind-of": true, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>randomatic>math-random": true, + "gulp>undertaker>bach>array-last>is-number": true + } + }, + "gulp-watch>anymatch>micromatch>braces>expand-range>fill-range>randomatic>math-random": { + "builtin": { + "crypto.randomBytes": true + } + }, + "gulp-watch>anymatch>micromatch>expand-brackets": { + "packages": { + "gulp-watch>anymatch>micromatch>expand-brackets>is-posix-bracket": true + } + }, + "gulp-watch>anymatch>micromatch>extglob": { + "packages": { + "gulp-watch>anymatch>micromatch>is-extglob": true + } + }, + "gulp-watch>anymatch>micromatch>is-glob": { + "packages": { + "gulp-watch>anymatch>micromatch>is-extglob": true + } + }, + "gulp-watch>anymatch>micromatch>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "gulp-watch>anymatch>micromatch>object.omit": { + "packages": { + "gulp-watch>anymatch>micromatch>object.omit>for-own": true, + "webpack>micromatch>extglob>extend-shallow>is-extendable": true + } + }, + "gulp-watch>anymatch>micromatch>object.omit>for-own": { + "packages": { + "gulp>undertaker>object.reduce>for-own>for-in": true + } + }, + "gulp-watch>anymatch>micromatch>parse-glob": { + "packages": { + "@storybook/react>@storybook/core-common>glob-base": true, + "gulp-watch>anymatch>micromatch>is-extglob": true, + "gulp-watch>anymatch>micromatch>parse-glob>is-dotfile": true, + "gulp-watch>anymatch>micromatch>parse-glob>is-glob": true + } + }, + "gulp-watch>anymatch>micromatch>parse-glob>is-glob": { + "packages": { + "gulp-watch>anymatch>micromatch>is-extglob": true + } + }, + "gulp-watch>anymatch>micromatch>regex-cache": { + "packages": { + "gulp-watch>anymatch>micromatch>regex-cache>is-equal-shallow": true + } + }, + "gulp-watch>anymatch>micromatch>regex-cache>is-equal-shallow": { + "packages": { + "gulp-watch>anymatch>micromatch>regex-cache>is-equal-shallow>is-primitive": true + } + }, + "gulp-watch>anymatch>normalize-path": { + "packages": { + "vinyl>remove-trailing-separator": true + } + }, + "gulp-watch>chokidar": { + "builtin": { + "events.EventEmitter": true, + "fs": true, + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true, + "path.relative": true, + "path.resolve": true, + "path.sep": true + }, + "globals": { + "clearTimeout": true, + "console.error": true, + "process.env.CHOKIDAR_INTERVAL": true, + "process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR": true, + "process.env.CHOKIDAR_USEPOLLING": true, + "process.nextTick": true, + "process.platform": true, + "setTimeout": true + }, + "packages": { + "gulp-watch>chokidar>anymatch": true, + "gulp-watch>chokidar>async-each": true, + "gulp-watch>chokidar>braces": true, + "gulp-watch>chokidar>is-binary-path": true, + "gulp-watch>chokidar>is-glob": true, + "gulp-watch>chokidar>normalize-path": true, + "gulp-watch>chokidar>readdirp": true, + "gulp-watch>chokidar>upath": true, + "gulp-watch>glob-parent": true, + "gulp-watch>path-is-absolute": true, + "pumpify>inherits": true + } + }, + "gulp-watch>chokidar>anymatch": { + "builtin": { + "path.sep": true + }, + "packages": { + "gulp-watch>chokidar>anymatch>micromatch": true, + "gulp-watch>chokidar>anymatch>normalize-path": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch": { + "builtin": { + "path.basename": true, + "path.sep": true, + "util.inspect": true + }, + "globals": { + "process.platform": true + }, + "packages": { + "gulp-watch>chokidar>anymatch>micromatch>arr-diff": true, + "gulp-watch>chokidar>anymatch>micromatch>array-unique": true, + "gulp-watch>chokidar>anymatch>micromatch>extend-shallow": true, + "gulp-watch>chokidar>anymatch>micromatch>extglob": true, + "gulp-watch>chokidar>anymatch>micromatch>kind-of": true, + "gulp-watch>chokidar>braces": true, + "gulp-watch>chokidar>readdirp>micromatch>define-property": true, + "webpack>micromatch>fragment-cache": true, + "webpack>micromatch>nanomatch": true, + "webpack>micromatch>object.pick": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extend-shallow": { + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extend-shallow>is-extendable": true, + "webpack>micromatch>extend-shallow>assign-symbols": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extglob": { + "packages": { + "gulp-watch>chokidar>anymatch>micromatch>array-unique": true, + "gulp-watch>chokidar>anymatch>micromatch>extglob>define-property": true, + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets": true, + "gulp-watch>chokidar>anymatch>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>fragment-cache": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extglob>define-property": { + "packages": { + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets": { + "globals": { + "__filename": true + }, + "packages": { + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>define-property": true, + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>extend-shallow": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>debug": true, + "webpack>micromatch>extglob>expand-brackets>posix-character-classes": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>define-property": { + "packages": { + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>define-property>is-descriptor": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>define-property>is-descriptor": { + "packages": { + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>define-property>is-descriptor>kind-of": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-accessor-descriptor": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-data-descriptor": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>extend-shallow": { + "packages": { + "gulp-watch>chokidar>anymatch>micromatch>extglob>expand-brackets>extend-shallow>is-extendable": true + } + }, + "gulp-watch>chokidar>anymatch>micromatch>extglob>extend-shallow": { + "packages": { + "gulp-watch>chokidar>anymatch>micromatch>extglob>extend-shallow>is-extendable": true + } + }, + "gulp-watch>chokidar>anymatch>normalize-path": { + "packages": { + "vinyl>remove-trailing-separator": true + } + }, + "gulp-watch>chokidar>async-each": { + "globals": { + "define": true + } + }, + "gulp-watch>chokidar>braces": { + "packages": { + "gulp-watch>chokidar>braces>array-unique": true, + "gulp-watch>chokidar>braces>fill-range": true, + "gulp>gulp-cli>isobject": true, + "gulp>undertaker>arr-flatten": true, + "webpack>micromatch>braces>repeat-element": true, + "webpack>micromatch>braces>snapdragon-node": true, + "webpack>micromatch>braces>split-string": true, + "webpack>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp-watch>chokidar>braces>fill-range": { + "builtin": { + "util.inspect": true + }, + "packages": { + "gulp-watch>chokidar>braces>fill-range>is-number": true, + "gulp-watch>chokidar>braces>fill-range>to-regex-range": true, + "webpack>micromatch>braces>fill-range>repeat-string": true, + "webpack>micromatch>extglob>extend-shallow": true + } + }, + "gulp-watch>chokidar>braces>fill-range>is-number": { + "packages": { + "gulp-watch>anymatch>micromatch>kind-of": true + } + }, + "gulp-watch>chokidar>braces>fill-range>to-regex-range": { + "packages": { + "gulp-watch>chokidar>braces>fill-range>is-number": true, + "webpack>micromatch>braces>fill-range>repeat-string": true + } + }, + "gulp-watch>chokidar>is-binary-path": { + "builtin": { + "path.extname": true + }, + "packages": { + "gulp-watch>chokidar>is-binary-path>binary-extensions": true + } + }, + "gulp-watch>chokidar>is-glob": { + "packages": { + "gulp-watch>chokidar>is-glob>is-extglob": true + } + }, + "gulp-watch>chokidar>readdirp": { + "builtin": { + "path.join": true, + "path.relative": true, + "util.inherits": true + }, + "globals": { + "setImmediate": true + }, + "packages": { + "fs-extra>graceful-fs": true, + "gulp-watch>chokidar>readdirp>micromatch": true, + "readable-stream": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch": { + "builtin": { + "path.basename": true, + "path.sep": true, + "util.inspect": true + }, + "globals": { + "process.platform": true + }, + "packages": { + "gulp-watch>chokidar>braces": true, + "gulp-watch>chokidar>readdirp>micromatch>arr-diff": true, + "gulp-watch>chokidar>readdirp>micromatch>array-unique": true, + "gulp-watch>chokidar>readdirp>micromatch>define-property": true, + "gulp-watch>chokidar>readdirp>micromatch>extend-shallow": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob": true, + "gulp-watch>chokidar>readdirp>micromatch>kind-of": true, + "webpack>micromatch>fragment-cache": true, + "webpack>micromatch>nanomatch": true, + "webpack>micromatch>object.pick": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>define-property": { + "packages": { + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extend-shallow": { + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extend-shallow>is-extendable": true, + "webpack>micromatch>extend-shallow>assign-symbols": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extend-shallow>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob": { + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>array-unique": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>define-property": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>fragment-cache": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>define-property": { + "packages": { + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets": { + "globals": { + "__filename": true + }, + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>debug": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>extend-shallow": true, + "webpack>micromatch>extglob>expand-brackets>posix-character-classes": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>debug": { + "builtin": { + "fs.SyncWriteStream": true, + "net.Socket": true, + "tty.WriteStream": true, + "tty.isatty": true, + "util": true + }, + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>debug>ms": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property": { + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor": { + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-accessor-descriptor": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-data-descriptor": true, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor>kind-of": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-accessor-descriptor": { + "packages": { + "gulp-watch>anymatch>micromatch>kind-of": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-data-descriptor": { + "packages": { + "gulp-watch>anymatch>micromatch>kind-of": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>extend-shallow": { + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extglob>expand-brackets>extend-shallow>is-extendable": true + } + }, + "gulp-watch>chokidar>readdirp>micromatch>extglob>extend-shallow": { + "packages": { + "gulp-watch>chokidar>readdirp>micromatch>extglob>extend-shallow>is-extendable": true + } + }, + "gulp-watch>chokidar>upath": { + "builtin": { + "path": true + } + }, + "gulp-watch>fancy-log": { + "globals": { + "console": true, + "process.argv.indexOf": true, + "process.stderr.write": true, + "process.stdout.write": true + }, + "packages": { + "fancy-log>ansi-gray": true, + "fancy-log>color-support": true, + "fancy-log>time-stamp": true + } + }, + "gulp-watch>glob-parent": { + "builtin": { + "os.platform": true, + "path": true + }, + "packages": { + "gulp-watch>glob-parent>is-glob": true, + "gulp-watch>glob-parent>path-dirname": true + } + }, + "gulp-watch>glob-parent>is-glob": { + "packages": { + "gulp-watch>glob-parent>is-glob>is-extglob": true + } + }, + "gulp-watch>glob-parent>path-dirname": { + "builtin": { + "path": true, + "util.inspect": true + }, + "globals": { + "process.platform": true + } + }, + "gulp-watch>path-is-absolute": { + "globals": { + "process.platform": true + } + }, + "gulp-watch>vinyl-file": { + "builtin": { + "path.resolve": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "del>globby>pinkie-promise": true, + "fs-extra>graceful-fs": true, + "gulp-watch>vinyl-file>pify": true, + "gulp-watch>vinyl-file>strip-bom": true, + "gulp-watch>vinyl-file>strip-bom-stream": true, + "gulp-watch>vinyl-file>vinyl": true + } + }, + "gulp-watch>vinyl-file>strip-bom": { + "globals": { + "Buffer.isBuffer": true + }, + "packages": { + "gulp>vinyl-fs>remove-bom-buffer>is-utf8": true + } + }, + "gulp-watch>vinyl-file>strip-bom-stream": { + "packages": { + "gulp-watch>vinyl-file>strip-bom": true, + "gulp-watch>vinyl-file>strip-bom-stream>first-chunk-stream": true + } + }, + "gulp-watch>vinyl-file>strip-bom-stream>first-chunk-stream": { + "builtin": { + "util.inherits": true + }, + "globals": { + "Buffer.concat": true, + "setImmediate": true + }, + "packages": { + "readable-stream": true + } + }, + "gulp-watch>vinyl-file>vinyl": { + "builtin": { + "buffer.Buffer": true, + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true, + "path.relative": true, + "stream.PassThrough": true, + "stream.Stream": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "gulp-watch>vinyl-file>vinyl>clone": true, + "gulp-watch>vinyl-file>vinyl>clone-stats": true, + "gulp-watch>vinyl-file>vinyl>replace-ext": true + } + }, + "gulp-watch>vinyl-file>vinyl>clone": { + "globals": { + "Buffer": true + } + }, + "gulp-watch>vinyl-file>vinyl>clone-stats": { + "builtin": { + "fs.Stats": true + } + }, + "gulp-watch>vinyl-file>vinyl>replace-ext": { + "builtin": { + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true + } + }, + "gulp-zip": { + "builtin": { + "buffer.constants.MAX_LENGTH": true, + "path.join": true + }, + "packages": { + "gulp-zip>get-stream": true, + "gulp-zip>plugin-error": true, + "gulp-zip>through2": true, + "gulp-zip>yazl": true, + "vinyl": true + } + }, + "gulp-zip>get-stream": { + "builtin": { + "buffer.constants.MAX_LENGTH": true, + "stream.PassThrough": true + }, + "globals": { + "Buffer.concat": true + }, + "packages": { + "pump": true + } + }, + "gulp-zip>plugin-error": { + "builtin": { + "util.inherits": true + }, + "packages": { + "gulp-watch>ansi-colors": true, + "gulp-zip>plugin-error>arr-union": true, + "gulp-zip>plugin-error>extend-shallow": true, + "webpack>micromatch>arr-diff": true + } + }, + "gulp-zip>plugin-error>extend-shallow": { + "packages": { + "gulp-zip>plugin-error>extend-shallow>is-extendable": true, + "webpack>micromatch>extend-shallow>assign-symbols": true + } + }, + "gulp-zip>plugin-error>extend-shallow>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "gulp-zip>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "gulp-zip>through2>readable-stream": true + } + }, + "gulp-zip>through2>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "gulp-zip>yazl": { + "builtin": { + "events.EventEmitter": true, + "fs.createReadStream": true, + "fs.stat": true, + "stream.PassThrough": true, + "stream.Transform": true, + "util.inherits": true, + "zlib.DeflateRaw": true, + "zlib.deflateRaw": true + }, + "globals": { + "Buffer": true, + "setImmediate": true, + "utf8FileName.length": true + }, + "packages": { + "gulp-zip>yazl>buffer-crc32": true + } + }, + "gulp-zip>yazl>buffer-crc32": { + "builtin": { + "buffer.Buffer": true + } + }, + "gulp>glob-watcher": { + "packages": { + "gulp>glob-watcher>anymatch": true, + "gulp>glob-watcher>async-done": true, + "gulp>glob-watcher>chokidar": true, + "gulp>glob-watcher>is-negated-glob": true, + "gulp>glob-watcher>just-debounce": true, + "gulp>undertaker>object.defaults": true + } + }, + "gulp>glob-watcher>anymatch": { + "builtin": { + "path.sep": true + }, + "packages": { + "gulp>glob-watcher>anymatch>micromatch": true, + "gulp>glob-watcher>anymatch>normalize-path": true + } + }, + "gulp>glob-watcher>anymatch>micromatch": { + "builtin": { + "path.basename": true, + "path.sep": true, + "util.inspect": true + }, + "globals": { + "process.platform": true + }, + "packages": { + "3box>ipfs>kind-of": true, + "gulp>glob-watcher>anymatch>micromatch>define-property": true, + "gulp>glob-watcher>anymatch>micromatch>extend-shallow": true, + "gulp>glob-watcher>chokidar>braces": true, + "webpack>micromatch>arr-diff": true, + "webpack>micromatch>array-unique": true, + "webpack>micromatch>extglob": true, + "webpack>micromatch>fragment-cache": true, + "webpack>micromatch>nanomatch": true, + "webpack>micromatch>object.pick": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp>glob-watcher>anymatch>micromatch>define-property": { + "packages": { + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "gulp>glob-watcher>anymatch>micromatch>extend-shallow": { + "packages": { + "gulp>glob-watcher>anymatch>micromatch>extend-shallow>is-extendable": true, + "webpack>micromatch>extend-shallow>assign-symbols": true + } + }, + "gulp>glob-watcher>anymatch>micromatch>extend-shallow>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "gulp>glob-watcher>anymatch>normalize-path": { + "packages": { + "vinyl>remove-trailing-separator": true + } + }, + "gulp>glob-watcher>async-done": { + "builtin": { + "domain.create": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "end-of-stream": true, + "gulp>glob-watcher>async-done>stream-exhaust": true, + "pump>once": true, + "vinyl>cloneable-readable>process-nextick-args": true + } + }, + "gulp>glob-watcher>async-done>stream-exhaust": { + "builtin": { + "stream.Writable": true, + "util.inherits": true + }, + "globals": { + "setImmediate": true + } + }, + "gulp>glob-watcher>chokidar": { + "builtin": { + "events.EventEmitter": true, + "fs": true, + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true, + "path.relative": true, + "path.resolve": true, + "path.sep": true + }, + "globals": { + "clearTimeout": true, + "console.error": true, + "process.env.CHOKIDAR_INTERVAL": true, + "process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR": true, + "process.env.CHOKIDAR_USEPOLLING": true, + "process.nextTick": true, + "process.platform": true, + "setTimeout": true + }, + "packages": { + "eslint>is-glob": true, + "gulp-watch>chokidar>async-each": true, + "gulp-watch>path-is-absolute": true, + "gulp>glob-watcher>anymatch": true, + "gulp>glob-watcher>chokidar>braces": true, + "gulp>glob-watcher>chokidar>glob-parent": true, + "gulp>glob-watcher>chokidar>is-binary-path": true, + "gulp>glob-watcher>chokidar>normalize-path": true, + "gulp>glob-watcher>chokidar>readdirp": true, + "gulp>glob-watcher>chokidar>upath": true, + "pumpify>inherits": true + } + }, + "gulp>glob-watcher>chokidar>braces": { + "packages": { + "gulp>glob-watcher>chokidar>braces>fill-range": true, + "gulp>gulp-cli>isobject": true, + "gulp>undertaker>arr-flatten": true, + "webpack>micromatch>array-unique": true, + "webpack>micromatch>braces>repeat-element": true, + "webpack>micromatch>braces>snapdragon-node": true, + "webpack>micromatch>braces>split-string": true, + "webpack>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "gulp>glob-watcher>chokidar>braces>fill-range": { + "builtin": { + "util.inspect": true + }, + "packages": { + "gulp>glob-watcher>chokidar>braces>fill-range>is-number": true, + "gulp>glob-watcher>chokidar>braces>fill-range>to-regex-range": true, + "webpack>micromatch>braces>fill-range>repeat-string": true, + "webpack>micromatch>extglob>extend-shallow": true + } + }, + "gulp>glob-watcher>chokidar>braces>fill-range>is-number": { + "packages": { + "gulp>glob-watcher>chokidar>braces>fill-range>is-number>kind-of": true + } + }, + "gulp>glob-watcher>chokidar>braces>fill-range>is-number>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "gulp>glob-watcher>chokidar>braces>fill-range>to-regex-range": { + "packages": { + "gulp>glob-watcher>chokidar>braces>fill-range>is-number": true, + "webpack>micromatch>braces>fill-range>repeat-string": true + } + }, + "gulp>glob-watcher>chokidar>glob-parent": { + "builtin": { + "os.platform": true, + "path": true + }, + "packages": { + "gulp-watch>glob-parent>path-dirname": true, + "gulp>glob-watcher>chokidar>glob-parent>is-glob": true + } + }, + "gulp>glob-watcher>chokidar>glob-parent>is-glob": { + "packages": { + "gulp>glob-watcher>chokidar>glob-parent>is-glob>is-extglob": true + } + }, + "gulp>glob-watcher>chokidar>is-binary-path": { + "builtin": { + "path.extname": true + }, + "packages": { + "gulp>glob-watcher>chokidar>is-binary-path>binary-extensions": true + } + }, + "gulp>glob-watcher>chokidar>readdirp": { + "builtin": { + "path.join": true, + "path.relative": true, + "util.inherits": true + }, + "globals": { + "setImmediate": true + }, + "packages": { + "fs-extra>graceful-fs": true, + "gulp>glob-watcher>anymatch>micromatch": true, + "readable-stream": true + } + }, + "gulp>glob-watcher>chokidar>upath": { + "builtin": { + "path": true + } + }, + "gulp>glob-watcher>just-debounce": { + "globals": { + "clearTimeout": true, + "setTimeout": true + } + }, + "gulp>gulp-cli>liftoff>is-plain-object": { + "packages": { + "gulp>gulp-cli>isobject": true + } + }, + "gulp>gulp-cli>replace-homedir>is-absolute": { + "packages": { + "gulp>gulp-cli>replace-homedir>is-absolute>is-relative": true, + "nyc>spawn-wrap>is-windows": true + } + }, + "gulp>gulp-cli>replace-homedir>is-absolute>is-relative": { + "packages": { + "gulp>gulp-cli>replace-homedir>is-absolute>is-relative>is-unc-path": true + } + }, + "gulp>gulp-cli>replace-homedir>is-absolute>is-relative>is-unc-path": { + "packages": { + "gulp>gulp-cli>replace-homedir>is-absolute>is-relative>is-unc-path>unc-path-regex": true + } + }, + "gulp>undertaker": { + "builtin": { + "assert": true, + "events.EventEmitter": true, + "util.inherits": true + }, + "globals": { + "process.env.UNDERTAKER_SETTLE": true, + "process.env.UNDERTAKER_TIME_RESOLUTION": true, + "process.hrtime": true + }, + "packages": { + "gulp>undertaker>arr-flatten": true, + "gulp>undertaker>arr-map": true, + "gulp>undertaker>bach": true, + "gulp>undertaker>collection-map": true, + "gulp>undertaker>es6-weak-map": true, + "gulp>undertaker>last-run": true, + "gulp>undertaker>object.defaults": true, + "gulp>undertaker>object.reduce": true, + "gulp>undertaker>undertaker-registry": true + } + }, + "gulp>undertaker>arr-map": { + "packages": { + "gulp>undertaker>arr-map>make-iterator": true + } + }, + "gulp>undertaker>arr-map>make-iterator": { + "packages": { + "3box>ipfs>kind-of": true + } + }, + "gulp>undertaker>bach": { + "builtin": { + "assert.ok": true + }, + "packages": { + "gulp>glob-watcher>async-done": true, + "gulp>undertaker>arr-flatten": true, + "gulp>undertaker>arr-map": true, + "gulp>undertaker>bach>arr-filter": true, + "gulp>undertaker>bach>array-each": true, + "gulp>undertaker>bach>array-initial": true, + "gulp>undertaker>bach>array-last": true, + "gulp>undertaker>bach>async-settle": true, + "gulp>vinyl-fs>vinyl-sourcemap>now-and-later": true + } + }, + "gulp>undertaker>bach>arr-filter": { + "packages": { + "gulp>undertaker>arr-map>make-iterator": true + } + }, + "gulp>undertaker>bach>array-initial": { + "packages": { + "gulp>undertaker>bach>array-last>is-number": true, + "gulp>undertaker>object.defaults>array-slice": true + } + }, + "gulp>undertaker>bach>array-last": { + "packages": { + "gulp>undertaker>bach>array-last>is-number": true + } + }, + "gulp>undertaker>bach>async-settle": { + "packages": { + "gulp>glob-watcher>async-done": true + } + }, + "gulp>undertaker>collection-map": { + "packages": { + "gulp>undertaker>arr-map": true, + "gulp>undertaker>arr-map>make-iterator": true, + "gulp>undertaker>object.reduce>for-own": true + } + }, + "gulp>undertaker>es6-weak-map": { + "packages": { + "resolve-url-loader>es6-iterator": true, + "resolve-url-loader>es6-iterator>d": true, + "resolve-url-loader>es6-iterator>es5-ext": true, + "resolve-url-loader>es6-iterator>es6-symbol": true + } + }, + "gulp>undertaker>last-run": { + "builtin": { + "assert": true + }, + "packages": { + "gulp>undertaker>es6-weak-map": true, + "gulp>undertaker>last-run>default-resolution": true + } + }, + "gulp>undertaker>last-run>default-resolution": { + "globals": { + "process.version.match": true + } + }, + "gulp>undertaker>object.defaults": { + "packages": { + "gulp>gulp-cli>isobject": true, + "gulp>undertaker>bach>array-each": true, + "gulp>undertaker>object.defaults>array-slice": true, + "gulp>undertaker>object.reduce>for-own": true + } + }, + "gulp>undertaker>object.reduce": { + "packages": { + "gulp>undertaker>arr-map>make-iterator": true, + "gulp>undertaker>object.reduce>for-own": true + } + }, + "gulp>undertaker>object.reduce>for-own": { + "packages": { + "gulp>undertaker>object.reduce>for-own>for-in": true + } + }, + "gulp>vinyl-fs": { + "builtin": { + "os.platform": true, + "path.relative": true, + "path.resolve": true, + "util.inherits": true + }, + "globals": { + "Buffer.isBuffer": true, + "process.cwd": true, + "process.geteuid": true, + "process.getuid": true, + "process.nextTick": true + }, + "packages": { + "enzyme>object.assign": true, + "fs-extra>graceful-fs": true, + "gulp>vinyl-fs>fs-mkdirp-stream": true, + "gulp>vinyl-fs>glob-stream": true, + "gulp>vinyl-fs>is-valid-glob": true, + "gulp>vinyl-fs>lazystream": true, + "gulp>vinyl-fs>lead": true, + "gulp>vinyl-fs>pumpify": true, + "gulp>vinyl-fs>remove-bom-buffer": true, + "gulp>vinyl-fs>remove-bom-stream": true, + "gulp>vinyl-fs>resolve-options": true, + "gulp>vinyl-fs>through2": true, + "gulp>vinyl-fs>to-through": true, + "gulp>vinyl-fs>value-or-function": true, + "gulp>vinyl-fs>vinyl-sourcemap": true, + "readable-stream": true, + "vinyl": true + } + }, + "gulp>vinyl-fs>fs-mkdirp-stream": { "builtin": { "path.dirname": true, "path.resolve": true @@ -2480,11 +5018,667 @@ "process.umask": true }, "packages": { - "graceful-fs": true, - "through2": true + "fs-extra>graceful-fs": true, + "gulp>vinyl-fs>fs-mkdirp-stream>through2": true } }, - "fs.realpath": { + "gulp>vinyl-fs>fs-mkdirp-stream>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp>vinyl-fs>glob-stream": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.cwd": true, + "process.nextTick": true + }, + "packages": { + "gulp>glob-watcher>is-negated-glob": true, + "gulp>vinyl-fs>glob-stream>glob-parent": true, + "gulp>vinyl-fs>glob-stream>ordered-read-streams": true, + "gulp>vinyl-fs>glob-stream>pumpify": true, + "gulp>vinyl-fs>glob-stream>to-absolute-glob": true, + "gulp>vinyl-fs>glob-stream>unique-stream": true, + "jsdom>request>extend": true, + "nyc>glob": true, + "readable-stream": true, + "vinyl>remove-trailing-separator": true + } + }, + "gulp>vinyl-fs>glob-stream>glob-parent": { + "builtin": { + "os.platform": true, + "path": true + }, + "packages": { + "gulp-watch>glob-parent>path-dirname": true, + "gulp>vinyl-fs>glob-stream>glob-parent>is-glob": true + } + }, + "gulp>vinyl-fs>glob-stream>glob-parent>is-glob": { + "packages": { + "gulp>vinyl-fs>glob-stream>glob-parent>is-glob>is-extglob": true + } + }, + "gulp>vinyl-fs>glob-stream>ordered-read-streams": { + "builtin": { + "util.inherits": true + }, + "packages": { + "readable-stream": true + } + }, + "gulp>vinyl-fs>glob-stream>pumpify": { + "packages": { + "gulp>vinyl-fs>glob-stream>pumpify>duplexify": true, + "gulp>vinyl-fs>glob-stream>pumpify>pump": true, + "pumpify>inherits": true + } + }, + "gulp>vinyl-fs>glob-stream>pumpify>duplexify": { + "globals": { + "Buffer": true, + "process.nextTick": true + }, + "packages": { + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "gulp>vinyl-fs>glob-stream>pumpify>pump": { + "builtin": { + "fs": true + }, + "packages": { + "end-of-stream": true, + "pump>once": true + } + }, + "gulp>vinyl-fs>glob-stream>to-absolute-glob": { + "builtin": { + "path.resolve": true + }, + "globals": { + "process.cwd": true, + "process.platform": true + }, + "packages": { + "gulp>glob-watcher>is-negated-glob": true, + "gulp>gulp-cli>replace-homedir>is-absolute": true + } + }, + "gulp>vinyl-fs>glob-stream>unique-stream": { + "packages": { + "gulp>vinyl-fs>glob-stream>unique-stream>through2-filter": true, + "lavamoat>json-stable-stringify": true + } + }, + "gulp>vinyl-fs>glob-stream>unique-stream>through2-filter": { + "packages": { + "gulp>vinyl-fs>glob-stream>unique-stream>through2-filter>through2": true, + "watchify>xtend": true + } + }, + "gulp>vinyl-fs>glob-stream>unique-stream>through2-filter>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp>vinyl-fs>lazystream": { + "builtin": { + "util.inherits": true + }, + "packages": { + "readable-stream": true + } + }, + "gulp>vinyl-fs>lead": { + "globals": { + "process.nextTick": true + }, + "packages": { + "gulp>vinyl-fs>lead>flush-write-stream": true + } + }, + "gulp>vinyl-fs>lead>flush-write-stream": { + "globals": { + "Buffer": true + }, + "packages": { + "pumpify>inherits": true, + "readable-stream": true + } + }, + "gulp>vinyl-fs>pumpify": { + "packages": { + "gulp>vinyl-fs>pumpify>duplexify": true, + "gulp>vinyl-fs>pumpify>pump": true, + "pumpify>inherits": true + } + }, + "gulp>vinyl-fs>pumpify>duplexify": { + "globals": { + "Buffer": true, + "process.nextTick": true + }, + "packages": { + "duplexify>stream-shift": true, + "end-of-stream": true, + "pumpify>inherits": true, + "readable-stream": true + } + }, + "gulp>vinyl-fs>pumpify>pump": { + "builtin": { + "fs": true + }, + "packages": { + "end-of-stream": true, + "pump>once": true + } + }, + "gulp>vinyl-fs>remove-bom-buffer": { + "packages": { + "browserify>insert-module-globals>is-buffer": true, + "gulp>vinyl-fs>remove-bom-buffer>is-utf8": true + } + }, + "gulp>vinyl-fs>remove-bom-stream": { + "packages": { + "ethereumjs-wallet>safe-buffer": true, + "gulp>vinyl-fs>remove-bom-buffer": true, + "gulp>vinyl-fs>remove-bom-stream>through2": true + } + }, + "gulp>vinyl-fs>remove-bom-stream>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp>vinyl-fs>resolve-options": { + "packages": { + "gulp>vinyl-fs>value-or-function": true + } + }, + "gulp>vinyl-fs>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp>vinyl-fs>to-through": { + "packages": { + "gulp>vinyl-fs>to-through>through2": true + } + }, + "gulp>vinyl-fs>to-through>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "gulp>vinyl-fs>vinyl-sourcemap": { + "builtin": { + "path.dirname": true, + "path.join": true, + "path.relative": true, + "path.resolve": true + }, + "globals": { + "Buffer": true + }, + "packages": { + "fs-extra>graceful-fs": true, + "gulp>vinyl-fs>remove-bom-buffer": true, + "gulp>vinyl-fs>vinyl-sourcemap>append-buffer": true, + "gulp>vinyl-fs>vinyl-sourcemap>normalize-path": true, + "gulp>vinyl-fs>vinyl-sourcemap>now-and-later": true, + "nyc>convert-source-map": true, + "vinyl": true + } + }, + "gulp>vinyl-fs>vinyl-sourcemap>append-buffer": { + "builtin": { + "os.EOL": true + }, + "globals": { + "Buffer": true + }, + "packages": { + "gulp>vinyl-fs>vinyl-sourcemap>append-buffer>buffer-equal": true + } + }, + "gulp>vinyl-fs>vinyl-sourcemap>append-buffer>buffer-equal": { + "builtin": { + "buffer.Buffer.isBuffer": true + } + }, + "gulp>vinyl-fs>vinyl-sourcemap>normalize-path": { + "packages": { + "vinyl>remove-trailing-separator": true + } + }, + "gulp>vinyl-fs>vinyl-sourcemap>now-and-later": { + "packages": { + "pump>once": true + } + }, + "jsdom>escodegen": { + "globals": { + "sourceMap.SourceNode": true + }, + "packages": { + "eslint>esutils": true, + "jsdom>escodegen>estraverse": true, + "jsdom>escodegen>source-map": true + } + }, + "labeled-stream-splicer": { + "packages": { + "labeled-stream-splicer>stream-splicer": true, + "pumpify>inherits": true + } + }, + "labeled-stream-splicer>stream-splicer": { + "globals": { + "process.nextTick": true, + "setImmediate": true + }, + "packages": { + "pumpify>inherits": true, + "readable-stream": true + } + }, + "lavamoat-browserify": { + "builtin": { + "fs.existsSync": true, + "fs.mkdirSync": true, + "fs.readFileSync": true, + "fs.writeFileSync": true, + "path.dirname": true, + "path.extname": true, + "path.resolve": true, + "util.callbackify": true + }, + "globals": { + "console.warn": true, + "process.cwd": true, + "setTimeout": true + }, + "packages": { + "@lavamoat/lavapack": true, + "duplexify": true, + "lavamoat-browserify>browser-resolve": true, + "lavamoat-browserify>concat-stream": true, + "lavamoat-browserify>readable-stream": true, + "lavamoat-browserify>through2": true, + "lavamoat>@lavamoat/aa": true, + "lavamoat>json-stable-stringify": true, + "lavamoat>lavamoat-core": true + } + }, + "lavamoat-browserify>browser-resolve": { + "builtin": { + "fs.readFile": true, + "fs.readFileSync": true, + "path": true + }, + "globals": { + "__dirname": true, + "process.platform": true + }, + "packages": { + "brfs>resolve": true + } + }, + "lavamoat-browserify>concat-stream": { + "globals": { + "Buffer.concat": true, + "Buffer.from": true, + "Buffer.isBuffer": true + }, + "packages": { + "lavamoat-browserify>readable-stream": true, + "pumpify>inherits": true + } + }, + "lavamoat-browserify>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "lavamoat-browserify>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "lavamoat-browserify>readable-stream": true + } + }, + "lavamoat>@babel/highlight": { + "packages": { + "lavamoat>@babel/highlight>@babel/helper-validator-identifier": true, + "lavamoat>@babel/highlight>chalk": true, + "loose-envify>js-tokens": true + } + }, + "lavamoat>@babel/highlight>chalk": { + "globals": { + "process.env.TERM": true, + "process.platform": true + }, + "packages": { + "lavamoat>@babel/highlight>chalk>ansi-styles": true, + "lavamoat>@babel/highlight>chalk>supports-color": true, + "mocha>escape-string-regexp": true + } + }, + "lavamoat>@babel/highlight>chalk>ansi-styles": { + "packages": { + "@metamask/jazzicon>color>color-convert": true + } + }, + "lavamoat>@babel/highlight>chalk>supports-color": { + "builtin": { + "os.release": true + }, + "globals": { + "process.env": true, + "process.platform": true, + "process.stderr": true, + "process.stdout": true, + "process.versions.node.split": true + }, + "packages": { + "mocha>supports-color>has-flag": true + } + }, + "lavamoat>@lavamoat/aa": { + "builtin": { + "fs.readFileSync": true, + "fs.statSync": true, + "path.dirname": true, + "path.join": true, + "path.relative": true + }, + "globals": { + "performantResolve": true + }, + "packages": { + "brfs>resolve": true + } + }, + "lavamoat>json-stable-stringify": { + "packages": { + "lavamoat>json-stable-stringify>jsonify": true + } + }, + "lavamoat>lavamoat-core": { + "builtin": { + "events": true, + "fs.existsSync": true, + "fs.readFileSync": true, + "path.extname": true, + "path.join": true + }, + "globals": { + "__dirname": true, + "console.error": true, + "console.warn": true, + "define": true + }, + "packages": { + "lavamoat>json-stable-stringify": true, + "lavamoat>lavamoat-core>merge-deep": true, + "lavamoat>lavamoat-tofu": true, + "nyc>process-on-spawn>fromentries": true + } + }, + "lavamoat>lavamoat-core>merge-deep": { + "packages": { + "gulp-zip>plugin-error>arr-union": true, + "lavamoat>lavamoat-core>merge-deep>clone-deep": true, + "lavamoat>lavamoat-core>merge-deep>kind-of": true + } + }, + "lavamoat>lavamoat-core>merge-deep>clone-deep": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true, + "lavamoat>lavamoat-core>merge-deep>clone-deep>for-own": true, + "lavamoat>lavamoat-core>merge-deep>clone-deep>kind-of": true, + "lavamoat>lavamoat-core>merge-deep>clone-deep>lazy-cache": true, + "lavamoat>lavamoat-core>merge-deep>clone-deep>shallow-clone": true + } + }, + "lavamoat>lavamoat-core>merge-deep>clone-deep>for-own": { + "packages": { + "gulp>undertaker>object.reduce>for-own>for-in": true + } + }, + "lavamoat>lavamoat-core>merge-deep>clone-deep>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "lavamoat>lavamoat-core>merge-deep>clone-deep>lazy-cache": { + "globals": { + "process.env.TRAVIS": true, + "process.env.UNLAZY": true + } + }, + "lavamoat>lavamoat-core>merge-deep>clone-deep>shallow-clone": { + "packages": { + "3box>ipfs>superstruct>clone-deep>shallow-clone>mixin-object": true, + "lavamoat>lavamoat-core>merge-deep>clone-deep>shallow-clone>kind-of": true, + "lavamoat>lavamoat-core>merge-deep>clone-deep>shallow-clone>lazy-cache": true, + "webpack>micromatch>extglob>extend-shallow>is-extendable": true + } + }, + "lavamoat>lavamoat-core>merge-deep>clone-deep>shallow-clone>kind-of": { + "globals": { + "Buffer": true + }, + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "lavamoat>lavamoat-core>merge-deep>clone-deep>shallow-clone>lazy-cache": { + "globals": { + "process.env.UNLAZY": true + } + }, + "lavamoat>lavamoat-core>merge-deep>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "lavamoat>lavamoat-tofu": { + "globals": { + "console.log": true + }, + "packages": { + "depcheck>@babel/parser": true, + "depcheck>@babel/traverse": true + } + }, + "lavamoat>object.fromentries": { + "packages": { + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>es-abstract": true + } + }, + "lodash": { + "globals": { + "define": true + } + }, + "loose-envify": { + "builtin": { + "stream.PassThrough": true, + "stream.Transform": true, + "util.inherits": true + }, + "globals": { + "process.env": true + }, + "packages": { + "loose-envify>js-tokens": true + } + }, + "mocha>find-up>locate-path>path-exists": { + "builtin": { + "fs.access": true, + "fs.accessSync": true + } + }, + "mocha>minimatch>brace-expansion": { + "packages": { + "mocha>minimatch>brace-expansion>concat-map": true, + "stylelint>balanced-match": true + } + }, + "mocha>supports-color>has-flag": { + "globals": { + "process.argv": true + } + }, + "mocha>which": { + "builtin": { + "path.join": true + }, + "globals": { + "process.cwd": true, + "process.env.OSTYPE": true, + "process.env.PATH": true, + "process.env.PATHEXT": true, + "process.platform": true + }, + "packages": { + "mocha>which>isexe": true + } + }, + "mocha>which>isexe": { + "builtin": { + "fs": true + }, + "globals": { + "TESTING_WINDOWS": true, + "process.env.PATHEXT": true, + "process.getgid": true, + "process.getuid": true, + "process.platform": true + } + }, + "nock>mkdirp": { + "builtin": { + "fs": true, + "path.dirname": true, + "path.resolve": true + } + }, + "nock>qs": { + "packages": { + "string.prototype.matchall>side-channel": true + } + }, + "node-sass": { + "native": true + }, + "nyc>convert-source-map": { + "builtin": { + "fs.readFileSync": true, + "path.resolve": true + }, + "packages": { + "nyc>convert-source-map>safe-buffer": true + } + }, + "nyc>convert-source-map>safe-buffer": { + "builtin": { + "buffer": true + } + }, + "nyc>glob": { + "builtin": { + "assert": true, + "events.EventEmitter": true, + "fs": true, + "path.join": true, + "path.resolve": true, + "util": true + }, + "globals": { + "console.error": true, + "process.cwd": true, + "process.nextTick": true, + "process.platform": true + }, + "packages": { + "eslint>minimatch": true, + "gulp-watch>path-is-absolute": true, + "nyc>glob>fs.realpath": true, + "nyc>glob>inflight": true, + "pump>once": true, + "pumpify>inherits": true + } + }, + "nyc>glob>fs.realpath": { "builtin": { "fs.lstat": true, "fs.lstatSync": true, @@ -2509,1432 +5703,57 @@ "process.version": true } }, - "get-assigned-identifiers": { - "builtin": { - "assert.equal": true - } - }, - "get-intrinsic": { - "globals": { - "AggregateError": true, - "FinalizationRegistry": true, - "WeakRef": true - }, - "packages": { - "function-bind": true, - "has": true, - "has-symbols": true - } - }, - "get-stream": { - "builtin": { - "buffer.constants.MAX_LENGTH": true, - "stream.PassThrough": true - }, - "globals": { - "Buffer.concat": true - }, - "packages": { - "pump": true - } - }, - "glob": { - "builtin": { - "assert": true, - "events.EventEmitter": true, - "fs": true, - "path.join": true, - "path.resolve": true, - "util": true - }, - "globals": { - "console.error": true, - "process.cwd": true, - "process.nextTick": true, - "process.platform": true - }, - "packages": { - "fs.realpath": true, - "inflight": true, - "inherits": true, - "minimatch": true, - "once": true, - "path-is-absolute": true - } - }, - "glob-base": { - "builtin": { - "path.dirname": true - }, - "packages": { - "glob-parent": true, - "is-glob": true - } - }, - "glob-parent": { - "builtin": { - "os.platform": true, - "path": true - }, - "packages": { - "is-glob": true, - "path-dirname": true - } - }, - "glob-stream": { - "builtin": { - "util.inherits": true - }, - "globals": { - "process.cwd": true, - "process.nextTick": true - }, - "packages": { - "extend": true, - "glob": true, - "glob-parent": true, - "is-negated-glob": true, - "ordered-read-streams": true, - "pumpify": true, - "readable-stream": true, - "remove-trailing-separator": true, - "to-absolute-glob": true, - "unique-stream": true - } - }, - "glob-watcher": { - "packages": { - "anymatch": true, - "async-done": true, - "chokidar": true, - "is-negated-glob": true, - "just-debounce": true, - "object.defaults": true - } - }, - "global-modules": { - "builtin": { - "path.resolve": true - }, - "globals": { - "process.env.OSTYPE": true, - "process.platform": true - }, - "packages": { - "global-prefix": true - } - }, - "global-prefix": { - "builtin": { - "fs.readFileSync": true, - "fs.realpathSync": true, - "os.homedir": true, - "path.dirname": true, - "path.join": true, - "path.resolve": true - }, - "globals": { - "process.env.APPDATA": true, - "process.env.DESTDIR": true, - "process.env.OSTYPE": true, - "process.env.PREFIX": true, - "process.execPath": true, - "process.platform": true - }, - "packages": { - "ini": true, - "which": true - } - }, - "globalthis": { - "packages": { - "define-properties": true - } - }, - "globby": { - "builtin": { - "fs.Stats": true, - "fs.readFile": true, - "fs.readFileSync": true, - "fs.statSync": true, - "path.dirname": true, - "path.isAbsolute": true, - "path.join": true, - "path.posix.join": true, - "path.relative": true, - "stream.Transform": true, - "util.promisify": true - }, - "globals": { - "process.cwd": true - }, - "packages": { - "array-union": true, - "dir-glob": true, - "fast-glob": true, - "glob": true, - "ignore": true, - "merge2": true, - "object-assign": true, - "pify": true, - "pinkie-promise": true, - "slash": true - } - }, - "globjoin": { - "builtin": { - "path.join": true - } - }, - "gonzales-pe": { - "globals": { - "console.error": true, - "define": true - } - }, - "graceful-fs": { - "builtin": { - "assert.equal": true, - "constants.O_SYMLINK": true, - "constants.O_WRONLY": true, - "constants.hasOwnProperty": true, - "fs": true, - "stream.Stream.call": true, - "util": true - }, - "globals": { - "console.error": true, - "process": true, - "setTimeout": true - } - }, - "gulp": { - "builtin": { - "util.inherits": true - }, - "packages": { - "glob-watcher": true, - "undertaker": true, - "vinyl-fs": true - } - }, - "gulp-autoprefixer": { - "globals": { - "Buffer.from": true, - "setImmediate": true - }, - "packages": { - "autoprefixer": true, - "fancy-log": true, - "plugin-error": true, - "postcss": true, - "through2": true, - "vinyl-sourcemaps-apply": true - } - }, - "gulp-dart-sass": { - "builtin": { - "path.basename": true, - "path.dirname": true, - "path.extname": true, - "path.join": true, - "path.relative": true - }, - "globals": { - "process.cwd": true, - "process.stderr.write": true - }, - "packages": { - "chalk": true, - "lodash.clonedeep": true, - "plugin-error": true, - "replace-ext": true, - "sass": true, - "strip-ansi": true, - "through2": true, - "vinyl-sourcemaps-apply": true - } - }, - "gulp-livereload": { - "builtin": { - "path.relative": true - }, - "packages": { - "chalk": true, - "debug": true, - "event-stream": true, - "fancy-log": true, - "lodash.assign": true, - "tiny-lr": true - } - }, - "gulp-rename": { - "builtin": { - "path.basename": true, - "path.dirname": true, - "path.extname": true, - "path.join": true, - "stream.Transform": true - } - }, - "gulp-rtlcss": { - "globals": { - "Buffer.from": true - }, - "packages": { - "plugin-error": true, - "rtlcss": true, - "through2": true, - "vinyl-sourcemaps-apply": true - } - }, - "gulp-sort": { - "packages": { - "through2": true - } - }, - "gulp-sourcemaps": { - "builtin": { - "path.dirname": true, - "path.extname": true, - "path.join": true, - "path.relative": true, - "path.resolve": true, - "path.sep": true - }, - "globals": { - "Buffer.concat": true, - "Buffer.from": true - }, - "packages": { - "@gulp-sourcemaps/identity-map": true, - "@gulp-sourcemaps/map-sources": true, - "acorn": true, - "convert-source-map": true, - "css": true, - "debug-fabulous": true, - "detect-newline": true, - "graceful-fs": true, - "source-map": true, - "strip-bom-string": true, - "through2": true - } - }, - "gulp-stylelint": { - "builtin": { - "fs.mkdir": true, - "fs.writeFile": true, - "path.dirname": true, - "path.resolve": true - }, - "globals": { - "Buffer.from": true, - "process.cwd": true, - "process.nextTick": true - }, - "packages": { - "fancy-log": true, - "plugin-error": true, - "source-map": true, - "strip-ansi": true, - "stylelint": true, - "through2": true - } - }, - "gulp-watch": { - "builtin": { - "path.dirname": true, - "path.normalize": true, - "path.resolve": true - }, - "globals": { - "process.arch": true, - "process.cwd": true, - "process.platform": true, - "process.version": true, - "setTimeout": true - }, - "packages": { - "ansi-colors": true, - "anymatch": true, - "chokidar": true, - "fancy-log": true, - "glob-parent": true, - "object-assign": true, - "path-is-absolute": true, - "plugin-error": true, - "readable-stream": true, - "slash": true, - "vinyl": true, - "vinyl-file": true - } - }, - "gulp-zip": { - "builtin": { - "buffer.constants.MAX_LENGTH": true, - "path.join": true - }, - "packages": { - "get-stream": true, - "plugin-error": true, - "through2": true, - "vinyl": true, - "yazl": true - } - }, - "has": { - "packages": { - "function-bind": true - } - }, - "has-flag": { - "globals": { - "process.argv": true - } - }, - "has-value": { - "packages": { - "get-value": true, - "has-values": true, - "isobject": true - } - }, - "has-values": { - "packages": { - "is-number": true, - "kind-of": true - } - }, - "hosted-git-info": { - "builtin": { - "url.URL": true, - "url.parse": true - } - }, - "htmlparser2": { - "builtin": { - "buffer.Buffer": true, - "events.EventEmitter": true, - "string_decoder.StringDecoder": true - }, - "packages": { - "domelementtype": true, - "domhandler": true, - "domutils": true, - "entities": true, - "inherits": true, - "readable-stream": true - } - }, - "http-parser-js": { - "builtin": { - "assert.equal": true, - "assert.ok": true - } - }, - "ignore": { - "globals": { - "process": true - } - }, - "import-fresh": { - "builtin": { - "path.dirname": true - }, - "globals": { - "__filename": true - }, - "packages": { - "parent-module": true, - "resolve-from": true - } - }, - "inflight": { + "nyc>glob>inflight": { "globals": { "process.nextTick": true }, "packages": { - "once": true, - "wrappy": true + "pump>once": true, + "pump>once>wrappy": true } }, - "inherits": { - "builtin": { - "util.inherits": true - } - }, - "ini": { - "globals": { - "process": true - } - }, - "inline-source-map": { - "globals": { - "Buffer.from": true - }, - "packages": { - "source-map": true - } - }, - "insert-module-globals": { - "builtin": { - "path.dirname": true, - "path.isAbsolute": true, - "path.relative": true, - "path.sep": true - }, - "globals": { - "Buffer.concat": true, - "Buffer.isBuffer": true - }, - "packages": { - "acorn-node": true, - "combine-source-map": true, - "path-is-absolute": true, - "through2": true, - "undeclared-identifiers": true, - "xtend": true - } - }, - "internal-slot": { - "packages": { - "get-intrinsic": true, - "has": true, - "side-channel": true - } - }, - "is-absolute": { - "packages": { - "is-relative": true, - "is-windows": true - } - }, - "is-accessor-descriptor": { - "packages": { - "kind-of": true - } - }, - "is-alphanumerical": { - "packages": { - "is-alphabetical": true, - "is-decimal": true - } - }, - "is-binary-path": { - "builtin": { - "path.extname": true - }, - "packages": { - "binary-extensions": true - } - }, - "is-callable": { - "globals": { - "document": true - } - }, - "is-core-module": { - "globals": { - "process.versions": true - }, - "packages": { - "has": true - } - }, - "is-data-descriptor": { - "packages": { - "kind-of": true - } - }, - "is-descriptor": { - "packages": { - "is-accessor-descriptor": true, - "is-data-descriptor": true, - "kind-of": true - } - }, - "is-equal-shallow": { - "packages": { - "is-primitive": true - } - }, - "is-extendable": { - "packages": { - "is-plain-object": true - } - }, - "is-glob": { - "packages": { - "is-extglob": true - } - }, - "is-number": { - "packages": { - "kind-of": true - } - }, - "is-odd": { - "packages": { - "is-number": true - } - }, - "is-path-cwd": { - "builtin": { - "path.resolve": true - }, - "globals": { - "process.cwd": true - } - }, - "is-path-in-cwd": { - "globals": { - "process.cwd": true - }, - "packages": { - "is-path-inside": true - } - }, - "is-path-inside": { - "builtin": { - "path.resolve": true - }, - "packages": { - "path-is-inside": true - } - }, - "is-plain-object": { - "packages": { - "isobject": true - } - }, - "is-regex": { - "packages": { - "call-bind": true, - "has-symbols": true - } - }, - "is-relative": { - "packages": { - "is-unc-path": true - } - }, - "is-symbol": { - "packages": { - "has-symbols": true - } - }, - "is-unc-path": { - "packages": { - "unc-path-regex": true - } - }, - "is-windows": { - "globals": { - "define": true, - "isWindows": "write", - "process": true - } - }, - "isexe": { - "builtin": { - "fs": true - }, - "globals": { - "TESTING_WINDOWS": true, - "process.env.PATHEXT": true, - "process.getgid": true, - "process.getuid": true, - "process.platform": true - } - }, - "isobject": { - "packages": { - "isarray": true - } - }, - "js-yaml": { + "nyc>js-yaml": { "globals": { "esprima": true } }, - "jsdoc-type-pratt-parser": { - "globals": { - "define": true - } - }, - "jsesc": { - "globals": { - "Buffer.isBuffer": true - } - }, - "json-stable-stringify": { - "packages": { - "jsonify": true - } - }, - "json5": { - "globals": { - "console.warn": true - } - }, - "jsonfile": { + "nyc>resolve-from": { "builtin": { - "fs": true - }, - "globals": { - "Buffer.isBuffer": true - }, - "packages": { - "graceful-fs": true - } - }, - "jsonparse": { - "globals": { - "Buffer": true - } - }, - "jsx-ast-utils": { - "globals": { - "console.error": true - }, - "packages": { - "object.assign": true - } - }, - "just-debounce": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "kind-of": { - "globals": { - "Buffer": true - }, - "packages": { - "is-buffer": true - } - }, - "labeled-stream-splicer": { - "packages": { - "inherits": true, - "stream-splicer": true - } - }, - "last-run": { - "builtin": { - "assert": true - }, - "packages": { - "default-resolution": true, - "es6-weak-map": true - } - }, - "lavamoat-browserify": { - "builtin": { - "fs.existsSync": true, - "fs.mkdirSync": true, - "fs.readFileSync": true, - "fs.writeFileSync": true, - "path.dirname": true, - "path.extname": true, - "path.resolve": true, - "util.callbackify": true - }, - "globals": { - "console.warn": true, - "process.cwd": true, - "setTimeout": true - }, - "packages": { - "@lavamoat/lavapack": true, - "concat-stream": true, - "duplexify": true, - "json-stable-stringify": true, - "lavamoat-core": true, - "readable-stream": true, - "through2": true - } - }, - "lavamoat-core": { - "builtin": { - "events": true, - "fs.existsSync": true, - "fs.readFileSync": true, - "module.createRequire": true, - "module.createRequireFromPath": true, - "path.extname": true, + "fs.realpathSync": true, + "module._nodeModulePaths": true, + "module._resolveFilename": true, "path.join": true, - "path.sep": true - }, - "globals": { - "__dirname": true, - "console.warn": true, - "define": true - }, - "packages": { - "fromentries": true, - "json-stable-stringify": true, - "lavamoat-tofu": true, - "merge-deep": true, - "resolve": true - } - }, - "lavamoat-tofu": { - "globals": { - "console.log": true - }, - "packages": { - "@babel/parser": true, - "@babel/traverse": true - } - }, - "lazy-cache": { - "globals": { - "process.env.TRAVIS": true, - "process.env.UNLAZY": true - } - }, - "lazystream": { - "builtin": { - "util.inherits": true - }, - "packages": { - "readable-stream": true - } - }, - "lead": { - "globals": { - "process.nextTick": true - }, - "packages": { - "flush-write-stream": true - } - }, - "levn": { - "packages": { - "prelude-ls": true, - "type-check": true - } - }, - "load-json-file": { - "builtin": { - "path.relative": true - }, - "packages": { - "graceful-fs": true, - "parse-json": true, - "pify": true, - "strip-bom": true - } - }, - "locate-path": { - "builtin": { "path.resolve": true - }, - "globals": { - "process.cwd": true - }, - "packages": { - "p-locate": true, - "path-exists": true } }, - "lodash": { - "globals": { - "define": true - } - }, - "lodash.debounce": { - "globals": { - "clearTimeout": true, - "setTimeout": true - } - }, - "log-symbols": { - "globals": { - "process.env.CI": true, - "process.env.TERM": true, - "process.platform": true - }, - "packages": { - "chalk": true - } - }, - "loose-envify": { + "nyc>rimraf": { "builtin": { - "stream.PassThrough": true, - "stream.Transform": true, - "util.inherits": true + "assert": true, + "fs": true, + "path.join": true }, "globals": { - "process.env": true - }, - "packages": { - "js-tokens": true - } - }, - "lru-cache": { - "packages": { - "yallist": true - } - }, - "lru-queue": { - "packages": { - "es5-ext": true - } - }, - "magic-string": { - "globals": { - "Buffer": true, - "btoa": true, - "console.warn": true - }, - "packages": { - "sourcemap-codec": true - } - }, - "make-iterator": { - "packages": { - "kind-of": true - } - }, - "map-stream": { - "builtin": { - "stream.Stream": true - }, - "globals": { - "process.nextTick": true - } - }, - "map-visit": { - "builtin": { - "util.inspect": true - }, - "packages": { - "object-visit": true - } - }, - "markdown-table": { - "packages": { - "repeat-string": true - } - }, - "math-random": { - "builtin": { - "crypto.randomBytes": true - } - }, - "mdast-util-compact": { - "packages": { - "unist-util-visit": true - } - }, - "memoizee": { - "globals": { - "clearTimeout": true, + "process.platform": true, "setTimeout": true }, "packages": { - "d": true, - "es5-ext": true, - "event-emitter": true, - "is-promise": true, - "lru-queue": true, - "next-tick": true, - "timers-ext": true + "nyc>glob": true } }, - "merge-deep": { - "packages": { - "arr-union": true, - "clone-deep": true, - "kind-of": true - } - }, - "merge-source-map": { - "packages": { - "source-map": true - } - }, - "merge2": { + "nyc>signal-exit": { "builtin": { - "stream.PassThrough": true - }, - "globals": { - "process.nextTick": true - } - }, - "micromatch": { - "builtin": { - "path.basename": true, - "path.sep": true, - "util.inspect": true + "assert.equal": true, + "events": true }, "globals": { "process": true - }, - "packages": { - "arr-diff": true, - "array-unique": true, - "braces": true, - "define-property": true, - "expand-brackets": true, - "extend-shallow": true, - "extglob": true, - "filename-regex": true, - "fragment-cache": true, - "is-extglob": true, - "is-glob": true, - "kind-of": true, - "nanomatch": true, - "normalize-path": true, - "object.omit": true, - "object.pick": true, - "parse-glob": true, - "picomatch": true, - "regex-cache": true, - "regex-not": true, - "snapdragon": true, - "to-regex": true } }, - "minimatch": { - "builtin": { - "path": true - }, + "nyc>spawn-wrap>is-windows": { "globals": { - "console.error": true - }, - "packages": { - "brace-expansion": true - } - }, - "mixin-deep": { - "packages": { - "for-in": true, - "is-extendable": true - } - }, - "mixin-object": { - "packages": { - "for-in": true, - "is-extendable": true - } - }, - "mkdirp": { - "builtin": { - "fs": true, - "path.dirname": true, - "path.resolve": true - } - }, - "module-deps": { - "builtin": { - "fs.createReadStream": true, - "fs.readFile": true, - "path.delimiter": true, - "path.dirname": true, - "path.join": true, - "path.resolve": true - }, - "globals": { - "process.cwd": true, - "process.env.NODE_PATH": true, - "process.nextTick": true, - "process.platform": true, - "setTimeout": true, - "tr": true - }, - "packages": { - "browser-resolve": true, - "cached-path-relative": true, - "concat-stream": true, - "defined": true, - "detective": true, - "duplexer2": true, - "inherits": true, - "parents": true, - "readable-stream": true, - "resolve": true, - "stream-combiner2": true, - "through2": true, - "xtend": true - } - }, - "nanomatch": { - "builtin": { - "path.basename": true, - "path.sep": true, - "util.inspect": true - }, - "packages": { - "arr-diff": true, - "array-unique": true, - "define-property": true, - "extend-shallow": true, - "fragment-cache": true, - "is-odd": true, - "is-windows": true, - "kind-of": true, - "object.pick": true, - "regex-not": true, - "snapdragon": true, - "to-regex": true - } - }, - "next-tick": { - "globals": { - "MutationObserver": true, - "WebKitMutationObserver": true, - "document": true, - "process": true, - "setImmediate": true, - "setTimeout": true - } - }, - "normalize-package-data": { - "builtin": { - "url.parse": true, - "util.format": true - }, - "packages": { - "hosted-git-info": true, - "resolve": true, - "semver": true, - "validate-npm-package-license": true - } - }, - "normalize-path": { - "packages": { - "remove-trailing-separator": true - } - }, - "normalize-selector": { - "globals": { - "define": true - } - }, - "now-and-later": { - "packages": { - "once": true - } - }, - "object-copy": { - "packages": { - "copy-descriptor": true, - "define-property": true, - "kind-of": true - } - }, - "object-inspect": { - "builtin": { - "util.inspect": true - }, - "globals": { - "HTMLElement": true - } - }, - "object-visit": { - "packages": { - "isobject": true - } - }, - "object.assign": { - "packages": { - "call-bind": true, - "define-properties": true, - "has-symbols": true, - "object-keys": true - } - }, - "object.defaults": { - "packages": { - "array-each": true, - "array-slice": true, - "for-own": true, - "isobject": true - } - }, - "object.entries": { - "packages": { - "call-bind": true, - "define-properties": true, - "es-abstract": true, - "has": true - } - }, - "object.fromentries": { - "packages": { - "call-bind": true, - "define-properties": true, - "es-abstract": true - } - }, - "object.omit": { - "packages": { - "for-own": true, - "is-extendable": true - } - }, - "object.pick": { - "packages": { - "isobject": true - } - }, - "object.reduce": { - "packages": { - "for-own": true, - "make-iterator": true - } - }, - "once": { - "packages": { - "wrappy": true - } - }, - "ordered-read-streams": { - "builtin": { - "util.inherits": true - }, - "packages": { - "readable-stream": true - } - }, - "p-limit": { - "packages": { - "p-try": true - } - }, - "p-locate": { - "packages": { - "p-limit": true - } - }, - "parent-module": { - "packages": { - "callsites": true - } - }, - "parents": { - "globals": { - "process.cwd": true, - "process.platform": true - }, - "packages": { - "path-platform": true - } - }, - "parse-entities": { - "packages": { - "character-entities": true, - "character-entities-legacy": true, - "character-reference-invalid": true, - "is-alphanumerical": true, - "is-decimal": true, - "is-hexadecimal": true - } - }, - "parse-glob": { - "packages": { - "glob-base": true, - "is-dotfile": true, - "is-extglob": true, - "is-glob": true - } - }, - "parse-json": { - "packages": { - "@babel/code-frame": true, - "error-ex": true, - "json-parse-better-errors": true, - "lines-and-columns": true - } - }, - "path-dirname": { - "builtin": { - "path": true, - "util.inspect": true - }, - "globals": { - "process.platform": true - } - }, - "path-exists": { - "builtin": { - "fs.access": true, - "fs.accessSync": true - } - }, - "path-is-absolute": { - "globals": { - "process.platform": true - } - }, - "path-is-inside": { - "builtin": { - "path.sep": true - }, - "globals": { - "process.platform": true - } - }, - "path-key": { - "globals": { - "process.env": true, - "process.platform": true - } - }, - "path-parse": { - "globals": { - "process.platform": true - } - }, - "path-platform": { - "builtin": { - "path": true, - "util.isObject": true, - "util.isString": true - }, - "globals": { - "process.cwd": true, - "process.env": true, - "process.platform": true - } - }, - "path-type": { - "builtin": { - "fs": true, - "util.promisify": true - }, - "packages": { - "pify": true - } - }, - "pause-stream": { - "packages": { - "through": true - } - }, - "picocolors": { - "builtin": { - "tty.isatty": true - }, - "globals": { - "process.argv.includes": true, - "process.env": true, - "process.platform": true - } - }, - "picomatch": { - "builtin": { - "path.basename": true, - "path.sep": true - }, - "globals": { - "process.platform": true, - "process.version.slice": true - } - }, - "pinkie": { - "globals": { - "process": true, - "setImmediate": true, - "setTimeout": true - } - }, - "pinkie-promise": { - "packages": { - "pinkie": true - } - }, - "pkg-dir": { - "builtin": { - "path.dirname": true - }, - "packages": { - "find-up": true - } - }, - "plugin-error": { - "builtin": { - "util.inherits": true - }, - "packages": { - "ansi-colors": true, - "arr-diff": true, - "arr-union": true, - "extend-shallow": true - } - }, - "postcss": { - "builtin": { - "fs": true, - "path": true - }, - "globals": { - "Buffer": true, - "atob": true, - "btoa": true, - "console": true, - "process.env.NODE_ENV": true - }, - "packages": { - "chalk": true, - "picocolors": true, - "source-map": true, - "supports-color": true - } - }, - "postcss-html": { - "globals": { - "__dirname": true - }, - "packages": { - "htmlparser2": true, - "postcss-syntax": true - } - }, - "postcss-less": { - "packages": { - "postcss": true - } - }, - "postcss-reporter": { - "packages": { - "lodash": true - } - }, - "postcss-safe-parser": { - "packages": { - "postcss": true - } - }, - "postcss-sass": { - "packages": { - "gonzales-pe": true, - "postcss": true - } - }, - "postcss-scss": { - "packages": { - "postcss": true - } - }, - "postcss-selector-parser": { - "packages": { - "cssesc": true, - "util-deprecate": true - } - }, - "postcss-syntax": { - "builtin": { - "path.isAbsolute": true, - "path.resolve": true, - "path.sep": true - }, - "packages": { - "postcss": true + "define": true, + "isWindows": "write", + "process": true } }, "prettier": { @@ -3973,24 +5792,20 @@ "setTimeout": true } }, - "prettier-linter-helpers": { - "packages": { - "fast-diff": true - } - }, - "process-nextick-args": { - "globals": { - "process": true - } - }, "prop-types": { "globals": { "console": true, "process.env.NODE_ENV": true }, "packages": { - "object-assign": true, - "react-is": true + "prop-types>react-is": true, + "react>object-assign": true + } + }, + "prop-types>react-is": { + "globals": { + "console": true, + "process.env.NODE_ENV": true } }, "pump": { @@ -4002,35 +5817,24 @@ }, "packages": { "end-of-stream": true, - "once": true + "pump>once": true + } + }, + "pump>once": { + "packages": { + "pump>once>wrappy": true } }, "pumpify": { "packages": { "duplexify": true, - "inherits": true, - "pump": true + "pump": true, + "pumpify>inherits": true } }, - "qs": { - "packages": { - "side-channel": true - } - }, - "quote-stream": { - "globals": { - "Buffer": true - }, - "packages": { - "buffer-equal": true, - "through2": true - } - }, - "randomatic": { - "packages": { - "is-number": true, - "kind-of": true, - "math-random": true + "pumpify>inherits": { + "builtin": { + "util.inherits": true } }, "randomcolor": { @@ -4038,16 +5842,6 @@ "define": true } }, - "raw-body": { - "globals": { - "Buffer.concat": true, - "process.nextTick": true - }, - "packages": { - "bytes": true, - "string_decoder": true - } - }, "rc": { "builtin": { "fs.readFileSync": true, @@ -4062,42 +5856,24 @@ "process.platform": true }, "packages": { - "deep-extend": true, - "ini": true, "minimist": true, - "strip-json-comments": true + "rc>deep-extend": true, + "rc>ini": true, + "rc>strip-json-comments": true } }, - "react-is": { + "rc>deep-extend": { "globals": { - "console": true, - "process.env.NODE_ENV": true + "Buffer": true } }, - "read-only-stream": { - "packages": { - "readable-stream": true - } - }, - "read-pkg": { - "builtin": { - "path.join": true - }, - "packages": { - "load-json-file": true, - "normalize-package-data": true, - "path-type": true - } - }, - "read-pkg-up": { - "packages": { - "find-up": true, - "read-pkg": true + "rc>ini": { + "globals": { + "process": true } }, "readable-stream": { "builtin": { - "buffer.Buffer": true, "events.EventEmitter": true, "stream": true, "util": true @@ -4105,257 +5881,75 @@ "globals": { "process.browser": true, "process.env.READABLE_STREAM": true, - "process.nextTick": true, "process.stderr": true, "process.stdout": true, "process.version.slice": true, "setImmediate": true }, "packages": { - "core-util-is": true, - "inherits": true, - "isarray": true, - "process-nextick-args": true, - "safe-buffer": true, - "string_decoder": true, - "util-deprecate": true + "@storybook/api>util-deprecate": true, + "pumpify>inherits": true, + "readable-stream>core-util-is": true, + "readable-stream>isarray": true, + "readable-stream>process-nextick-args": true, + "readable-stream>safe-buffer": true, + "readable-stream>string_decoder": true } }, - "readdirp": { - "builtin": { - "fs": true, - "path.join": true, - "path.relative": true, - "path.resolve": true, - "path.sep": true, - "stream.Readable": true, - "util.inherits": true, - "util.promisify": true - }, + "readable-stream>core-util-is": { "globals": { - "process.platform": true, - "process.versions.node.split": true, - "setImmediate": true - }, - "packages": { - "graceful-fs": true, - "micromatch": true, - "picomatch": true, - "readable-stream": true + "Buffer.isBuffer": true } }, - "regenerate": { + "readable-stream>process-nextick-args": { "globals": { - "define": true + "process": true } }, - "regenerator-transform": { - "builtin": { - "assert": true, - "util.inherits": true - }, - "packages": { - "@babel/runtime": true - } - }, - "regex-cache": { - "packages": { - "is-equal-shallow": true - } - }, - "regex-not": { - "packages": { - "extend-shallow": true, - "safe-regex": true - } - }, - "regexp.prototype.flags": { - "packages": { - "call-bind": true, - "define-properties": true - } - }, - "regexpu-core": { - "packages": { - "regenerate": true, - "regjsgen": true, - "regjsparser": true, - "unicode-match-property-ecmascript": true, - "unicode-match-property-value-ecmascript": true - } - }, - "regextras": { - "globals": { - "define": true - } - }, - "regjsgen": { - "globals": { - "define": true - } - }, - "regjsparser": { - "globals": { - "regjsparser": "write" - } - }, - "remark": { - "packages": { - "remark-parse": true, - "remark-stringify": true, - "unified": true - } - }, - "remark-parse": { - "packages": { - "ccount": true, - "collapse-white-space": true, - "is-alphabetical": true, - "is-decimal": true, - "is-whitespace-character": true, - "is-word-character": true, - "markdown-escapes": true, - "parse-entities": true, - "repeat-string": true, - "state-toggle": true, - "trim": true, - "trim-trailing-lines": true, - "unherit": true, - "unist-util-remove-position": true, - "vfile-location": true, - "xtend": true - } - }, - "remark-stringify": { - "packages": { - "ccount": true, - "is-alphanumeric": true, - "is-decimal": true, - "is-whitespace-character": true, - "longest-streak": true, - "markdown-escapes": true, - "markdown-table": true, - "mdast-util-compact": true, - "parse-entities": true, - "repeat-string": true, - "state-toggle": true, - "stringify-entities": true, - "unherit": true, - "xtend": true - } - }, - "remove-bom-buffer": { - "packages": { - "is-buffer": true, - "is-utf8": true - } - }, - "remove-bom-stream": { - "packages": { - "remove-bom-buffer": true, - "safe-buffer": true, - "through2": true - } - }, - "remove-trailing-separator": { - "globals": { - "process.platform": true - } - }, - "replace-ext": { - "builtin": { - "path.basename": true, - "path.dirname": true, - "path.extname": true, - "path.join": true - } - }, - "resolve": { - "builtin": { - "fs.readFile": true, - "fs.readFileSync": true, - "fs.realpath": true, - "fs.realpathSync": true, - "fs.stat": true, - "fs.statSync": true, - "path": true - }, - "globals": { - "process.nextTick": true, - "process.platform": true, - "process.versions": true - }, - "packages": { - "is-core-module": true, - "path-parse": true - } - }, - "resolve-from": { - "builtin": { - "fs.realpathSync": true, - "module._nodeModulePaths": true, - "module._resolveFilename": true, - "path.join": true, - "path.resolve": true - } - }, - "resolve-options": { - "packages": { - "value-or-function": true - } - }, - "rimraf": { - "builtin": { - "assert": true, - "fs": true, - "path.join": true - }, - "globals": { - "process.platform": true, - "setTimeout": true - }, - "packages": { - "glob": true - } - }, - "rtlcss": { - "builtin": { - "fs.readFileSync": true, - "path.join": true, - "path.normalize": true - }, - "globals": { - "process.cwd": true, - "process.env.HOME": true, - "process.env.HOMEPATH": true, - "process.env.USERPROFILE": true - }, - "packages": { - "@choojs/findup": true, - "postcss": true, - "strip-json-comments": true - } - }, - "run-parallel": { - "globals": { - "process.nextTick": true - } - }, - "safe-buffer": { + "readable-stream>safe-buffer": { "builtin": { "buffer": true } }, - "safe-regex": { + "readable-stream>string_decoder": { "packages": { - "ret": true + "readable-stream>safe-buffer": true + } + }, + "resolve-url-loader>es6-iterator": { + "packages": { + "resolve-url-loader>es6-iterator>d": true, + "resolve-url-loader>es6-iterator>es5-ext": true, + "resolve-url-loader>es6-iterator>es6-symbol": true + } + }, + "resolve-url-loader>es6-iterator>d": { + "packages": { + "resolve-url-loader>es6-iterator>es5-ext": true + } + }, + "resolve-url-loader>es6-iterator>es5-ext": { + "packages": { + "resolve-url-loader>es6-iterator>es6-symbol": true + } + }, + "resolve-url-loader>es6-iterator>es6-symbol": { + "packages": { + "resolve-url-loader>es6-iterator>d": true + } + }, + "resolve-url-loader>rework>css>urix": { + "builtin": { + "path.sep": true } }, "sass": { "builtin": { "fs": true, - "readline": true + "readline": true, + "url": true }, + "env": "unfrozen", "globals": { "Buffer": true, "HTMLElement": true, @@ -4381,127 +5975,118 @@ "version": true }, "packages": { - "chokidar": true + "sass>chokidar": true } }, - "scope-analyzer": { + "sass>chokidar": { "builtin": { - "assert.ok": true, - "assert.strictEqual": true + "events.EventEmitter": true, + "fs.close": true, + "fs.lstat": true, + "fs.open": true, + "fs.readdir": true, + "fs.realpath": true, + "fs.stat": true, + "fs.unwatchFile": true, + "fs.watch": true, + "fs.watchFile": true, + "os.type": true, + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.isAbsolute": true, + "path.join": true, + "path.normalize": true, + "path.relative": true, + "path.resolve": true, + "path.sep": true, + "util.promisify": true + }, + "globals": { + "clearTimeout": true, + "console.error": true, + "process.env.CHOKIDAR_INTERVAL": true, + "process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR": true, + "process.env.CHOKIDAR_USEPOLLING": true, + "process.nextTick": true, + "process.platform": true, + "process.version.match": true, + "setTimeout": true }, "packages": { - "array-from": true, - "dash-ast": true, - "es6-map": true, - "es6-set": true, - "es6-symbol": true, - "estree-is-function": true, - "get-assigned-identifiers": true + "css-loader>normalize-path": true, + "depcheck>readdirp": true, + "eslint>glob-parent": true, + "eslint>is-glob": true, + "sass>chokidar>braces": true, + "sass>chokidar>is-binary-path": true, + "watchify>anymatch": true + } + }, + "sass>chokidar>braces": { + "packages": { + "sass>chokidar>braces>fill-range": true + } + }, + "sass>chokidar>braces>fill-range": { + "builtin": { + "util.inspect": true + }, + "packages": { + "sass>chokidar>braces>fill-range>to-regex-range": true + } + }, + "sass>chokidar>braces>fill-range>to-regex-range": { + "packages": { + "sass>chokidar>braces>fill-range>to-regex-range>is-number": true + } + }, + "sass>chokidar>is-binary-path": { + "builtin": { + "path.extname": true + }, + "packages": { + "sass>chokidar>is-binary-path>binary-extensions": true } }, "semver": { "globals": { - "console": true, + "console.error": true, "process": true }, "packages": { - "lru-cache": true + "semver>lru-cache": true } }, - "set-value": { + "semver>lru-cache": { "packages": { - "extend-shallow": true, - "is-extendable": true, - "is-plain-object": true, - "split-string": true + "semver>lru-cache>yallist": true } }, - "shallow-clone": { - "packages": { - "is-extendable": true, - "kind-of": true, - "lazy-cache": true, - "mixin-object": true - } - }, - "shasum": { + "serve-handler>path-is-inside": { "builtin": { - "buffer.Buffer.isBuffer": true, - "crypto.createHash": true - }, - "packages": { - "json-stable-stringify": true - } - }, - "shasum-object": { - "builtin": { - "crypto.createHash": true + "path.sep": true }, "globals": { - "Buffer.isBuffer": true - }, - "packages": { - "fast-safe-stringify": true + "process.platform": true } }, - "shebang-command": { - "packages": { - "shebang-regex": true - } - }, - "side-channel": { - "packages": { - "call-bind": true, - "get-intrinsic": true, - "object-inspect": true - } - }, - "signal-exit": { + "sinon>supports-color": { "builtin": { - "assert.equal": true, - "events": true + "os.release": true, + "tty.isatty": true }, "globals": { - "process": true - } - }, - "slice-ansi": { - "packages": { - "ansi-styles": true, - "astral-regex": true, - "is-fullwidth-code-point": true - } - }, - "snapdragon": { - "builtin": { - "fs.readFileSync": true, - "path.dirname": true, - "util.inspect": true + "process.env": true, + "process.platform": true }, + "packages": { + "sinon>supports-color>has-flag": true + } + }, + "sinon>supports-color>has-flag": { "globals": { - "__filename": true - }, - "packages": { - "base": true, - "debug": true, - "define-property": true, - "extend-shallow": true, - "map-cache": true, - "source-map": true, - "source-map-resolve": true, - "use": true - } - }, - "snapdragon-node": { - "packages": { - "define-property": true, - "isobject": true, - "snapdragon-util": true - } - }, - "snapdragon-util": { - "packages": { - "kind-of": true + "process.argv": true } }, "source-map": { @@ -4518,86 +6103,6 @@ "fetch": true } }, - "source-map-resolve": { - "builtin": { - "path.sep": true, - "url.resolve": true - }, - "globals": { - "TextDecoder": true, - "setImmediate": true - }, - "packages": { - "atob": true, - "decode-uri-component": true, - "source-map-url": true, - "urix": true - } - }, - "source-map-support": { - "builtin": { - "fs": true, - "path.dirname": true, - "path.resolve": true - }, - "globals": { - "XMLHttpRequest": true, - "console.error": true, - "process": true - }, - "packages": { - "buffer-from": true, - "source-map": true - } - }, - "source-map-url": { - "globals": { - "define": true - } - }, - "sourcemap-codec": { - "globals": { - "define": true - } - }, - "spdx-correct": { - "packages": { - "spdx-license-ids": true - } - }, - "spdx-expression-parse": { - "builtin": { - "fs.readFileSync": true, - "path.normalize": true - }, - "globals": { - "console.log": true, - "process.argv.slice": true, - "process.exit": true - }, - "packages": { - "spdx-exceptions": true, - "spdx-license-ids": true - } - }, - "specificity": { - "globals": { - "define": true - } - }, - "split": { - "builtin": { - "string_decoder.StringDecoder": true - }, - "packages": { - "through": true - } - }, - "split-string": { - "packages": { - "extend-shallow": true - } - }, "squirrelly": { "builtin": { "fs.existsSync": true, @@ -4607,119 +6112,59 @@ "path.resolve": true } }, - "static-eval": { - "packages": { - "escodegen": true - } - }, - "static-extend": { - "builtin": { - "util.inherits": true - }, - "packages": { - "define-property": true, - "object-copy": true - } - }, - "static-module": { - "packages": { - "acorn-node": true, - "concat-stream": true, - "convert-source-map": true, - "duplexer2": true, - "escodegen": true, - "has": true, - "magic-string": true, - "merge-source-map": true, - "object-inspect": true, - "readable-stream": true, - "scope-analyzer": true, - "shallow-copy": true, - "static-eval": true, - "through2": true - } - }, - "stream-combiner": { - "packages": { - "duplexer": true - } - }, - "stream-combiner2": { - "packages": { - "duplexer2": true, - "readable-stream": true - } - }, - "stream-exhaust": { - "builtin": { - "stream.Writable": true, - "util.inherits": true - }, - "globals": { - "setImmediate": true - } - }, - "stream-splicer": { - "globals": { - "process.nextTick": true, - "setImmediate": true - }, - "packages": { - "inherits": true, - "readable-stream": true - } - }, - "string-width": { - "packages": { - "emoji-regex": true, - "is-fullwidth-code-point": true, - "strip-ansi": true - } - }, "string.prototype.matchall": { "packages": { - "call-bind": true, - "define-properties": true, - "es-abstract": true, - "has-symbols": true, - "internal-slot": true, - "regexp.prototype.flags": true + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>es-abstract": true, + "string.prototype.matchall>has-symbols": true, + "string.prototype.matchall>internal-slot": true, + "string.prototype.matchall>regexp.prototype.flags": true } }, - "string_decoder": { - "builtin": { - "buffer.Buffer": true - }, + "string.prototype.matchall>call-bind": { "packages": { - "safe-buffer": true + "eslint-plugin-react>array-includes>get-intrinsic": true, + "mocha>object.assign>function-bind": true } }, - "stringify-entities": { + "string.prototype.matchall>es-abstract": { "packages": { - "character-entities-html4": true, - "character-entities-legacy": true, - "is-alphanumerical": true, - "is-decimal": true, - "is-hexadecimal": true + "enzyme>has": true, + "enzyme>is-callable": true, + "enzyme>is-regex": true, + "enzyme>object-inspect": true, + "eslint-plugin-react>array-includes>get-intrinsic": true, + "string.prototype.matchall>call-bind": true, + "string.prototype.matchall>es-abstract>es-to-primitive": true, + "string.prototype.matchall>has-symbols": true } }, - "strip-ansi": { + "string.prototype.matchall>es-abstract>es-to-primitive": { "packages": { - "ansi-regex": true + "@storybook/api>telejson>is-symbol": true, + "enzyme>is-callable": true, + "nock>deep-equal>is-date-object": true } }, - "strip-bom": { - "globals": { - "Buffer.isBuffer": true - }, + "string.prototype.matchall>internal-slot": { "packages": { - "is-utf8": true + "enzyme>has": true, + "eslint-plugin-react>array-includes>get-intrinsic": true, + "string.prototype.matchall>side-channel": true } }, - "strip-bom-stream": { + "string.prototype.matchall>regexp.prototype.flags": { "packages": { - "first-chunk-stream": true, - "strip-bom": true + "globalthis>define-properties": true, + "string.prototype.matchall>call-bind": true + } + }, + "string.prototype.matchall>side-channel": { + "packages": { + "enzyme>object-inspect": true, + "eslint-plugin-react>array-includes>get-intrinsic": true, + "string.prototype.matchall>call-bind": true } }, "stylelint": { @@ -4748,595 +6193,310 @@ "process.stdout.isTTY": true }, "packages": { - "@stylelint/postcss-css-in-js": true, - "@stylelint/postcss-markdown": true, - "autoprefixer": true, - "balanced-match": true, - "chalk": true, - "cosmiconfig": true, - "debug": true, - "execall": true, - "file-entry-cache": true, - "global-modules": true, + "eslint>debug": true, + "eslint>imurmurhash": true, "globby": true, - "globjoin": true, - "html-tags": true, - "ignore": true, - "import-lazy": true, - "imurmurhash": true, - "known-css-properties": true, - "leven": true, + "globby>ignore": true, + "globby>slash": true, "lodash": true, - "log-symbols": true, - "mathml-tag-names": true, - "micromatch": true, - "normalize-selector": true, - "postcss": true, - "postcss-html": true, - "postcss-less": true, - "postcss-media-query-parser": true, - "postcss-reporter": true, - "postcss-resolve-nested-selector": true, - "postcss-safe-parser": true, - "postcss-sass": true, - "postcss-scss": true, - "postcss-selector-parser": true, - "postcss-syntax": true, - "postcss-value-parser": true, - "resolve-from": true, - "slash": true, - "specificity": true, - "string-width": true, - "style-search": true, - "sugarss": true, - "svg-tags": true, - "table": true, - "write-file-atomic": true + "nyc>resolve-from": true, + "stylelint>@stylelint/postcss-css-in-js": true, + "stylelint>@stylelint/postcss-markdown": true, + "stylelint>autoprefixer": true, + "stylelint>balanced-match": true, + "stylelint>chalk": true, + "stylelint>cosmiconfig": true, + "stylelint>execall": true, + "stylelint>file-entry-cache": true, + "stylelint>global-modules": true, + "stylelint>globjoin": true, + "stylelint>html-tags": true, + "stylelint>import-lazy": true, + "stylelint>known-css-properties": true, + "stylelint>leven": true, + "stylelint>log-symbols": true, + "stylelint>mathml-tag-names": true, + "stylelint>micromatch": true, + "stylelint>normalize-selector": true, + "stylelint>postcss": true, + "stylelint>postcss-html": true, + "stylelint>postcss-less": true, + "stylelint>postcss-media-query-parser": true, + "stylelint>postcss-reporter": true, + "stylelint>postcss-resolve-nested-selector": true, + "stylelint>postcss-safe-parser": true, + "stylelint>postcss-sass": true, + "stylelint>postcss-scss": true, + "stylelint>postcss-selector-parser": true, + "stylelint>postcss-syntax": true, + "stylelint>postcss-value-parser": true, + "stylelint>specificity": true, + "stylelint>style-search": true, + "stylelint>sugarss": true, + "stylelint>svg-tags": true, + "stylelint>table": true, + "stylelint>write-file-atomic": true, + "yargs>string-width": true } }, - "sugarss": { + "stylelint>@stylelint/postcss-css-in-js": { + "globals": { + "__dirname": true + }, "packages": { - "postcss": true + "@babel/core": true, + "stylelint>postcss": true, + "stylelint>postcss-syntax": true } }, - "supports-color": { + "stylelint>@stylelint/postcss-markdown": { + "packages": { + "stylelint>@stylelint/postcss-markdown>remark": true, + "stylelint>@stylelint/postcss-markdown>unist-util-find-all-after": true, + "stylelint>postcss-html": true, + "stylelint>postcss-syntax": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark": { + "packages": { + "stylelint>@stylelint/postcss-markdown>remark>remark-parse": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify": true, + "stylelint>@stylelint/postcss-markdown>remark>unified": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse": { + "packages": { + "@storybook/components>react-syntax-highlighter>refractor>parse-entities": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>ccount": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>collapse-white-space": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-alphabetical": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-whitespace-character": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-word-character": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>markdown-escapes": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>state-toggle": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>trim": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>trim-trailing-lines": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>unherit": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>unist-util-remove-position": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>vfile-location": true, + "watchify>xtend": true, + "webpack>micromatch>braces>fill-range>repeat-string": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>unherit": { + "packages": { + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>unist-util-remove-position": { + "packages": { + "@storybook/addon-essentials>@storybook/addon-docs>remark-slug>unist-util-visit": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify": { + "packages": { + "@storybook/components>react-syntax-highlighter>refractor>parse-entities": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>ccount": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-whitespace-character": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>markdown-escapes": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>state-toggle": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>unherit": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>is-alphanumeric": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>longest-streak": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>markdown-table": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>mdast-util-compact": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>stringify-entities": true, + "watchify>xtend": true, + "webpack>micromatch>braces>fill-range>repeat-string": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>markdown-table": { + "packages": { + "webpack>micromatch>braces>fill-range>repeat-string": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>mdast-util-compact": { + "packages": { + "@storybook/addon-essentials>@storybook/addon-docs>remark-slug>unist-util-visit": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>stringify-entities": { + "packages": { + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-entities-legacy": true, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-alphanumerical": true, + "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-hexadecimal": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>stringify-entities>character-entities-html4": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>unified": { + "packages": { + "jsdom>request>extend": true, + "stylelint>@stylelint/postcss-markdown>remark>unified>bail": true, + "stylelint>@stylelint/postcss-markdown>remark>unified>is-buffer": true, + "stylelint>@stylelint/postcss-markdown>remark>unified>is-plain-obj": true, + "stylelint>@stylelint/postcss-markdown>remark>unified>trough": true, + "stylelint>@stylelint/postcss-markdown>remark>unified>vfile": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>unified>vfile": { "builtin": { - "os.release": true, - "tty.isatty": true + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true, + "path.sep": true }, "globals": { - "process.env": true, - "process.platform": true, - "process.stderr": true, - "process.stdout": true, - "process.versions.node.split": true + "process.cwd": true }, "packages": { - "has-flag": true + "stylelint>@stylelint/postcss-markdown>remark>unified>vfile>is-buffer": true, + "stylelint>@stylelint/postcss-markdown>remark>unified>vfile>vfile-message": true, + "vinyl>replace-ext": true } }, - "syntax-error": { + "stylelint>@stylelint/postcss-markdown>remark>unified>vfile>vfile-message": { "packages": { - "acorn-node": true + "stylelint>@stylelint/postcss-markdown>remark>unified>vfile>unist-util-stringify-position": true } }, - "table": { - "globals": { - "process.stdout.write": true - }, - "packages": { - "ajv": true, - "lodash": true, - "slice-ansi": true, - "string-width": true - } - }, - "terser": { - "globals": { - "Buffer.from": true, - "atob": true, - "btoa": true, - "console.log": true, - "console.warn": true, - "define": true, - "process.argv": true, - "process.exit": true, - "process.platform": true, - "process.stderr.write": true, - "process.stdin.on": true, - "process.stdin.resume": true, - "process.stdin.setEncoding": true - }, - "packages": { - "acorn": true, - "source-map": true - } - }, - "through": { - "builtin": { - "stream": true - }, - "globals": { - "process.nextTick": true - } - }, - "through2": { - "builtin": { - "util.inherits": true - }, - "globals": { - "process.nextTick": true - }, - "packages": { - "readable-stream": true, - "xtend": true - } - }, - "through2-filter": { - "packages": { - "through2": true, - "xtend": true - } - }, - "timers-ext": { - "packages": { - "es5-ext": true - } - }, - "tiny-lr": { - "builtin": { - "events": true, - "fs": true, - "http": true, - "https": true, - "url.parse": true - }, - "globals": { - "console.error": true - }, - "packages": { - "body": true, - "debug": true, - "faye-websocket": true, - "object-assign": true, - "qs": true - } - }, - "to-absolute-glob": { - "builtin": { - "path.resolve": true - }, + "stylelint>@stylelint/postcss-markdown>unist-util-find-all-after": { + "packages": { + "stylelint>@stylelint/postcss-markdown>unist-util-find-all-after>unist-util-is": true + } + }, + "stylelint>autoprefixer": { "globals": { + "console": true, "process.cwd": true, - "process.platform": true + "process.env.AUTOPREFIXER_GRID": true }, "packages": { - "is-absolute": true, - "is-negated-glob": true + "stylelint>autoprefixer>browserslist": true, + "stylelint>autoprefixer>caniuse-lite": true, + "stylelint>autoprefixer>normalize-range": true, + "stylelint>autoprefixer>num2fraction": true, + "stylelint>postcss": true, + "stylelint>postcss-value-parser": true, + "stylelint>postcss>picocolors": true } }, - "to-object-path": { - "packages": { - "kind-of": true - } - }, - "to-regex": { - "packages": { - "define-property": true, - "extend-shallow": true, - "regex-not": true, - "safe-regex": true - } - }, - "to-regex-range": { - "packages": { - "is-number": true, - "repeat-string": true - } - }, - "to-through": { - "packages": { - "through2": true - } - }, - "tsconfig-paths": { + "stylelint>autoprefixer>browserslist": { "builtin": { "fs.existsSync": true, - "fs.lstatSync": true, - "fs.readFile": true, "fs.readFileSync": true, - "fs.stat": true, "fs.statSync": true, - "module._resolveFilename": true, - "module.builtinModules": true, + "path.basename": true, "path.dirname": true, - "path.isAbsolute": true, "path.join": true, - "path.resolve": true, - "path.sep": true + "path.resolve": true }, "globals": { "console.warn": true, - "process.argv.slice": true, - "process.cwd": true, - "process.env": true + "process.env.BROWSERSLIST": true, + "process.env.BROWSERSLIST_CONFIG": true, + "process.env.BROWSERSLIST_DANGEROUS_EXTEND": true, + "process.env.BROWSERSLIST_DISABLE_CACHE": true, + "process.env.BROWSERSLIST_ENV": true, + "process.env.BROWSERSLIST_IGNORE_OLD_DATA": true, + "process.env.BROWSERSLIST_STATS": true, + "process.env.NODE_ENV": true, + "process.versions.node": true }, "packages": { - "json5": true, - "minimist": true, - "strip-bom": true + "stylelint>autoprefixer>browserslist>electron-to-chromium": true, + "stylelint>autoprefixer>browserslist>node-releases": true, + "stylelint>autoprefixer>caniuse-lite": true } }, - "tslib": { - "globals": { - "define": true - } - }, - "tsutils": { + "stylelint>chalk": { "packages": { - "tslib": true, - "typescript": true + "chalk>ansi-styles": true, + "sinon>supports-color": true } }, - "type-check": { - "packages": { - "prelude-ls": true - } - }, - "typedarray-to-buffer": { - "globals": { - "Buffer.from": true - }, - "packages": { - "is-typedarray": true - } - }, - "typescript": { + "stylelint>cosmiconfig": { "builtin": { - "buffer.Buffer": true, - "crypto": true, "fs": true, - "inspector": true, - "os.EOL": true, - "os.platform": true, - "path.dirname": true, - "path.join": true, - "path.resolve": true, - "perf_hooks.PerformanceObserver": true, - "perf_hooks.performance": true + "os": true, + "path": true }, "globals": { - "Intl": true, - "PerformanceObserver": true, - "TypeScript": "write", - "__dirname": true, - "__filename": true, - "__magic__": true, - "clearTimeout": true, - "console.log": true, - "gc": true, - "globalThis": "write", - "performance": true, - "process": true, - "setTimeout": true, - "toolsVersion": "write" + "process.cwd": true }, "packages": { - "source-map-support": true + "depcheck>cosmiconfig>yaml": true, + "eslint>import-fresh": true, + "globby>dir-glob>path-type": true, + "stylelint>cosmiconfig>parse-json": true } }, - "undeclared-identifiers": { + "stylelint>cosmiconfig>parse-json": { "packages": { - "acorn-node": true, - "get-assigned-identifiers": true, - "xtend": true + "@babel/code-frame": true, + "depcheck>cosmiconfig>parse-json>error-ex": true, + "depcheck>cosmiconfig>parse-json>lines-and-columns": true, + "webpack>json-parse-better-errors": true } }, - "undertaker": { + "stylelint>execall": { + "packages": { + "stylelint>execall>clone-regexp": true + } + }, + "stylelint>execall>clone-regexp": { + "packages": { + "stylelint>execall>clone-regexp>is-regexp": true + } + }, + "stylelint>file-entry-cache": { + "builtin": { + "crypto.createHash": true, + "fs.readFileSync": true, + "fs.statSync": true, + "path.basename": true, + "path.dirname": true + }, + "packages": { + "stylelint>file-entry-cache>flat-cache": true + } + }, + "stylelint>file-entry-cache>flat-cache": { + "builtin": { + "fs.existsSync": true, + "fs.readFileSync": true, + "path.basename": true, + "path.dirname": true, + "path.resolve": true + }, + "globals": { + "__dirname": true + }, + "packages": { + "stylelint>file-entry-cache>flat-cache>flatted": true, + "stylelint>file-entry-cache>flat-cache>rimraf": true, + "stylelint>file-entry-cache>flat-cache>write": true + } + }, + "stylelint>file-entry-cache>flat-cache>rimraf": { "builtin": { "assert": true, - "events.EventEmitter": true, - "util.inherits": true - }, - "globals": { - "process.env.UNDERTAKER_SETTLE": true, - "process.env.UNDERTAKER_TIME_RESOLUTION": true, - "process.hrtime": true - }, - "packages": { - "arr-flatten": true, - "arr-map": true, - "bach": true, - "collection-map": true, - "es6-weak-map": true, - "last-run": true, - "object.defaults": true, - "object.reduce": true, - "undertaker-registry": true - } - }, - "unherit": { - "packages": { - "inherits": true, - "xtend": true - } - }, - "unicode-match-property-ecmascript": { - "packages": { - "unicode-canonical-property-names-ecmascript": true, - "unicode-property-aliases-ecmascript": true - } - }, - "unified": { - "packages": { - "bail": true, - "extend": true, - "is-buffer": true, - "is-plain-obj": true, - "trough": true, - "vfile": true - } - }, - "union-value": { - "packages": { - "arr-union": true, - "get-value": true, - "is-extendable": true, - "set-value": true - } - }, - "unique-stream": { - "packages": { - "json-stable-stringify": true, - "through2-filter": true - } - }, - "unist-util-find-all-after": { - "packages": { - "unist-util-is": true - } - }, - "unist-util-remove-position": { - "packages": { - "unist-util-visit": true - } - }, - "unist-util-visit": { - "packages": { - "unist-util-visit-parents": true - } - }, - "unist-util-visit-parents": { - "packages": { - "unist-util-is": true - } - }, - "unset-value": { - "packages": { - "has-value": true, - "isobject": true - } - }, - "upath": { - "builtin": { - "path": true - } - }, - "uri-js": { - "globals": { - "define": true - } - }, - "urix": { - "builtin": { - "path.sep": true - } - }, - "use": { - "packages": { - "kind-of": true - } - }, - "util-deprecate": { - "builtin": { - "util.deprecate": true - } - }, - "validate-npm-package-license": { - "packages": { - "spdx-correct": true, - "spdx-expression-parse": true - } - }, - "vfile": { - "builtin": { - "path.basename": true, - "path.dirname": true, - "path.extname": true, - "path.join": true, - "path.sep": true - }, - "globals": { - "process.cwd": true - }, - "packages": { - "is-buffer": true, - "replace-ext": true, - "vfile-message": true - } - }, - "vfile-message": { - "packages": { - "unist-util-stringify-position": true - } - }, - "vinyl": { - "builtin": { - "buffer.Buffer": true, - "path.basename": true, - "path.dirname": true, - "path.extname": true, - "path.join": true, - "path.normalize": true, - "path.relative": true, - "stream.PassThrough": true, - "stream.Stream": true, - "util.inspect.custom": true - }, - "globals": { - "process.cwd": true - }, - "packages": { - "clone": true, - "clone-buffer": true, - "clone-stats": true, - "cloneable-readable": true, - "remove-trailing-separator": true, - "replace-ext": true - } - }, - "vinyl-buffer": { - "packages": { - "bl": true, - "through2": true - } - }, - "vinyl-file": { - "builtin": { - "path.resolve": true - }, - "globals": { - "process.cwd": true - }, - "packages": { - "graceful-fs": true, - "pify": true, - "pinkie-promise": true, - "strip-bom": true, - "strip-bom-stream": true, - "vinyl": true - } - }, - "vinyl-fs": { - "builtin": { - "os.platform": true, - "path.relative": true, - "path.resolve": true, - "util.inherits": true - }, - "globals": { - "Buffer.isBuffer": true, - "process.cwd": true, - "process.geteuid": true, - "process.getuid": true, - "process.nextTick": true - }, - "packages": { - "fs-mkdirp-stream": true, - "glob-stream": true, - "graceful-fs": true, - "is-valid-glob": true, - "lazystream": true, - "lead": true, - "object.assign": true, - "pumpify": true, - "readable-stream": true, - "remove-bom-buffer": true, - "remove-bom-stream": true, - "resolve-options": true, - "through2": true, - "to-through": true, - "value-or-function": true, - "vinyl": true, - "vinyl-sourcemap": true - } - }, - "vinyl-source-stream": { - "builtin": { - "path.resolve": true - }, - "globals": { - "process.cwd": true - }, - "packages": { - "through2": true, - "vinyl": true - } - }, - "vinyl-sourcemap": { - "builtin": { - "path.dirname": true, - "path.join": true, - "path.relative": true, - "path.resolve": true - }, - "globals": { - "Buffer": true - }, - "packages": { - "append-buffer": true, - "convert-source-map": true, - "graceful-fs": true, - "normalize-path": true, - "now-and-later": true, - "remove-bom-buffer": true, - "vinyl": true - } - }, - "vinyl-sourcemaps-apply": { - "packages": { - "source-map": true - } - }, - "watchify": { - "builtin": { + "fs": true, "path.join": true }, "globals": { - "clearTimeout": true, + "process.platform": true, "setTimeout": true }, "packages": { - "anymatch": true, - "chokidar": true, - "through2": true, - "xtend": true + "nyc>glob": true } }, - "websocket-driver": { - "builtin": { - "crypto.createHash": true, - "crypto.randomBytes": true, - "events.EventEmitter": true, - "stream.Stream": true, - "url.parse": true, - "util.inherits": true - }, - "globals": { - "Buffer": true, - "process.version.match": true - }, - "packages": { - "http-parser-js": true, - "websocket-extensions": true - } - }, - "which": { - "builtin": { - "path.join": true - }, - "globals": { - "process.cwd": true, - "process.env.OSTYPE": true, - "process.env.PATH": true, - "process.env.PATHEXT": true, - "process.platform": true - }, - "packages": { - "isexe": true - } - }, - "write": { + "stylelint>file-entry-cache>flat-cache>write": { "builtin": { "fs.createWriteStream": true, "fs.writeFile": true, @@ -5344,10 +6504,299 @@ "path.dirname": true }, "packages": { - "mkdirp": true + "nock>mkdirp": true } }, - "write-file-atomic": { + "stylelint>global-modules": { + "builtin": { + "path.resolve": true + }, + "globals": { + "process.env.OSTYPE": true, + "process.platform": true + }, + "packages": { + "stylelint>global-modules>global-prefix": true + } + }, + "stylelint>global-modules>global-prefix": { + "builtin": { + "fs.readFileSync": true, + "fs.realpathSync": true, + "os.homedir": true, + "path.dirname": true, + "path.join": true, + "path.resolve": true + }, + "globals": { + "process.env.APPDATA": true, + "process.env.DESTDIR": true, + "process.env.OSTYPE": true, + "process.env.PREFIX": true, + "process.execPath": true, + "process.platform": true + }, + "packages": { + "mocha>which": true, + "rc>ini": true + } + }, + "stylelint>globjoin": { + "builtin": { + "path.join": true + } + }, + "stylelint>log-symbols": { + "globals": { + "process.env.CI": true, + "process.env.TERM": true, + "process.platform": true + }, + "packages": { + "stylelint>chalk": true + } + }, + "stylelint>meow>normalize-package-data": { + "builtin": { + "url.parse": true, + "util.format": true + }, + "packages": { + "brfs>resolve": true, + "stylelint>meow>normalize-package-data>hosted-git-info": true, + "stylelint>meow>normalize-package-data>semver": true, + "stylelint>meow>normalize-package-data>validate-npm-package-license": true + } + }, + "stylelint>meow>normalize-package-data>hosted-git-info": { + "builtin": { + "url.URL": true, + "url.parse": true + } + }, + "stylelint>meow>normalize-package-data>semver": { + "globals": { + "console": true, + "process": true + } + }, + "stylelint>meow>normalize-package-data>validate-npm-package-license": { + "packages": { + "stylelint>meow>normalize-package-data>validate-npm-package-license>spdx-correct": true, + "stylelint>meow>normalize-package-data>validate-npm-package-license>spdx-expression-parse": true + } + }, + "stylelint>meow>normalize-package-data>validate-npm-package-license>spdx-correct": { + "packages": { + "stylelint>meow>normalize-package-data>validate-npm-package-license>spdx-correct>spdx-license-ids": true + } + }, + "stylelint>meow>normalize-package-data>validate-npm-package-license>spdx-expression-parse": { + "builtin": { + "fs.readFileSync": true, + "path.normalize": true + }, + "globals": { + "console.log": true, + "process.argv.slice": true, + "process.exit": true + } + }, + "stylelint>micromatch": { + "builtin": { + "util.inspect": true + }, + "packages": { + "fast-glob>picomatch": true, + "sass>chokidar>braces": true + } + }, + "stylelint>normalize-selector": { + "globals": { + "define": true + } + }, + "stylelint>postcss": { + "builtin": { + "fs": true, + "path": true + }, + "globals": { + "Buffer": true, + "atob": true, + "btoa": true, + "console": true, + "process.env.NODE_ENV": true + }, + "packages": { + "stylelint>postcss>picocolors": true, + "stylelint>postcss>source-map": true + } + }, + "stylelint>postcss-html": { + "globals": { + "__dirname": true + }, + "packages": { + "stylelint>postcss-html>htmlparser2": true, + "stylelint>postcss-syntax": true + } + }, + "stylelint>postcss-html>htmlparser2": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "string_decoder.StringDecoder": true + }, + "packages": { + "pumpify>inherits": true, + "stylelint>postcss-html>htmlparser2>domelementtype": true, + "stylelint>postcss-html>htmlparser2>domhandler": true, + "stylelint>postcss-html>htmlparser2>domutils": true, + "stylelint>postcss-html>htmlparser2>entities": true, + "stylelint>postcss-html>htmlparser2>readable-stream": true + } + }, + "stylelint>postcss-html>htmlparser2>domhandler": { + "packages": { + "stylelint>postcss-html>htmlparser2>domelementtype": true + } + }, + "stylelint>postcss-html>htmlparser2>domutils": { + "packages": { + "stylelint>postcss-html>htmlparser2>domelementtype": true, + "stylelint>postcss-html>htmlparser2>domutils>dom-serializer": true + } + }, + "stylelint>postcss-html>htmlparser2>domutils>dom-serializer": { + "packages": { + "stylelint>postcss-html>htmlparser2>domelementtype": true, + "stylelint>postcss-html>htmlparser2>entities": true + } + }, + "stylelint>postcss-html>htmlparser2>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "stylelint>postcss-less": { + "packages": { + "stylelint>postcss": true + } + }, + "stylelint>postcss-reporter": { + "packages": { + "lodash": true + } + }, + "stylelint>postcss-safe-parser": { + "packages": { + "stylelint>postcss": true + } + }, + "stylelint>postcss-sass": { + "packages": { + "stylelint>postcss": true, + "stylelint>postcss-sass>gonzales-pe": true + } + }, + "stylelint>postcss-sass>gonzales-pe": { + "globals": { + "console.error": true, + "define": true + } + }, + "stylelint>postcss-scss": { + "packages": { + "stylelint>postcss": true + } + }, + "stylelint>postcss-selector-parser": { + "packages": { + "@storybook/api>util-deprecate": true, + "stylelint>postcss-selector-parser>cssesc": true + } + }, + "stylelint>postcss-syntax": { + "builtin": { + "path.isAbsolute": true, + "path.resolve": true, + "path.sep": true + }, + "packages": { + "stylelint>postcss": true + } + }, + "stylelint>postcss>picocolors": { + "builtin": { + "tty.isatty": true + }, + "globals": { + "process.argv.includes": true, + "process.env": true, + "process.platform": true + } + }, + "stylelint>specificity": { + "globals": { + "define": true + } + }, + "stylelint>sugarss": { + "packages": { + "stylelint>postcss": true + } + }, + "stylelint>table": { + "globals": { + "process.stdout.write": true + }, + "packages": { + "eslint>ajv": true, + "lodash": true, + "stylelint>table>slice-ansi": true, + "stylelint>table>string-width": true + } + }, + "stylelint>table>slice-ansi": { + "packages": { + "mocha>yargs>string-width>is-fullwidth-code-point": true, + "stylelint>table>slice-ansi>ansi-styles": true, + "stylelint>table>slice-ansi>astral-regex": true + } + }, + "stylelint>table>slice-ansi>ansi-styles": { + "packages": { + "@metamask/jazzicon>color>color-convert": true + } + }, + "stylelint>table>string-width": { + "packages": { + "mocha>yargs>string-width>is-fullwidth-code-point": true, + "stylelint>table>string-width>emoji-regex": true, + "stylelint>table>string-width>strip-ansi": true + } + }, + "stylelint>table>string-width>strip-ansi": { + "packages": { + "stylelint>table>string-width>strip-ansi>ansi-regex": true + } + }, + "stylelint>write-file-atomic": { "builtin": { "fs.chmod": true, "fs.chmodSync": true, @@ -5380,41 +6829,800 @@ "process.pid": true }, "packages": { - "imurmurhash": true, - "is-typedarray": true, - "signal-exit": true, - "typedarray-to-buffer": true + "eslint>imurmurhash": true, + "jsdom>request>is-typedarray": true, + "nyc>signal-exit": true, + "stylelint>write-file-atomic>typedarray-to-buffer": true } }, - "yaml": { + "stylelint>write-file-atomic>typedarray-to-buffer": { "globals": { - "Buffer": true, - "YAML_SILENCE_DEPRECATION_WARNINGS": true, - "YAML_SILENCE_WARNINGS": true, - "atob": true, - "btoa": true, - "console.warn": true, - "process": true - } - }, - "yazl": { - "builtin": { - "events.EventEmitter": true, - "fs.createReadStream": true, - "fs.stat": true, - "stream.PassThrough": true, - "stream.Transform": true, - "util.inherits": true, - "zlib.DeflateRaw": true, - "zlib.deflateRaw": true - }, - "globals": { - "Buffer": true, - "setImmediate": true, - "utf8FileName.length": true + "Buffer.from": true }, "packages": { - "buffer-crc32": true + "jsdom>request>is-typedarray": true + } + }, + "terser": { + "globals": { + "Buffer.from": true, + "atob": true, + "btoa": true, + "console.log": true, + "console.warn": true, + "define": true, + "process.argv": true, + "process.exit": true, + "process.platform": true, + "process.stderr.write": true, + "process.stdin.on": true, + "process.stdin.resume": true, + "process.stdin.setEncoding": true + }, + "packages": { + "eslint>espree>acorn": true, + "source-map": true + } + }, + "terser>source-map-support": { + "builtin": { + "fs": true, + "path.dirname": true, + "path.resolve": true + }, + "globals": { + "XMLHttpRequest": true, + "console.error": true, + "process": true + }, + "packages": { + "terser>source-map-support>buffer-from": true, + "terser>source-map-support>source-map": true + } + }, + "terser>source-map-support>buffer-from": { + "globals": { + "Buffer": true + } + }, + "through2": { + "packages": { + "through2>readable-stream": true + } + }, + "through2>readable-stream": { + "builtin": { + "buffer.Buffer": true, + "events.EventEmitter": true, + "stream": true, + "util": true + }, + "globals": { + "process.env.READABLE_STREAM": true, + "process.nextTick": true, + "process.stderr": true, + "process.stdout": true + }, + "packages": { + "@storybook/api>util-deprecate": true, + "browserify>string_decoder": true, + "pumpify>inherits": true + } + }, + "tsutils": { + "packages": { + "tslib": true, + "typescript": true + } + }, + "typescript": { + "builtin": { + "buffer.Buffer": true, + "crypto": true, + "fs": true, + "inspector": true, + "os.EOL": true, + "os.platform": true, + "path.dirname": true, + "path.join": true, + "path.resolve": true, + "perf_hooks.PerformanceObserver": true, + "perf_hooks.performance": true + }, + "globals": { + "Intl": true, + "PerformanceObserver": true, + "TypeScript": "write", + "__dirname": true, + "__filename": true, + "__magic__": true, + "clearTimeout": true, + "console.log": true, + "gc": true, + "globalThis": true, + "performance": true, + "process": true, + "setTimeout": true, + "toolsVersion": "write" + }, + "packages": { + "terser>source-map-support": true + } + }, + "vinyl": { + "builtin": { + "buffer.Buffer.isBuffer": true, + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true, + "path.normalize": true, + "path.relative": true, + "util.inspect.custom": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "vinyl>clone": true, + "vinyl>clone-buffer": true, + "vinyl>clone-stats": true, + "vinyl>cloneable-readable": true, + "vinyl>remove-trailing-separator": true, + "vinyl>replace-ext": true + } + }, + "vinyl-buffer": { + "packages": { + "vinyl-buffer>bl": true, + "vinyl-buffer>through2": true + } + }, + "vinyl-buffer>bl": { + "builtin": { + "util.inherits": true + }, + "packages": { + "ethereumjs-wallet>safe-buffer": true, + "readable-stream": true + } + }, + "vinyl-buffer>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "vinyl-source-stream": { + "builtin": { + "path.resolve": true + }, + "globals": { + "process.cwd": true + }, + "packages": { + "vinyl": true, + "vinyl-source-stream>through2": true + } + }, + "vinyl-source-stream>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "vinyl-sourcemaps-apply": { + "packages": { + "vinyl-sourcemaps-apply>source-map": true + } + }, + "vinyl>clone": { + "globals": { + "Buffer": true + } + }, + "vinyl>clone-buffer": { + "builtin": { + "buffer.Buffer": true + } + }, + "vinyl>clone-stats": { + "builtin": { + "fs.Stats": true + } + }, + "vinyl>cloneable-readable": { + "packages": { + "pumpify>inherits": true, + "vinyl>cloneable-readable>process-nextick-args": true, + "vinyl>cloneable-readable>through2": true + } + }, + "vinyl>cloneable-readable>process-nextick-args": { + "globals": { + "process.nextTick": true, + "process.version": true + } + }, + "vinyl>cloneable-readable>through2": { + "builtin": { + "util.inherits": true + }, + "globals": { + "process.nextTick": true + }, + "packages": { + "readable-stream": true, + "watchify>xtend": true + } + }, + "vinyl>remove-trailing-separator": { + "globals": { + "process.platform": true + } + }, + "vinyl>replace-ext": { + "builtin": { + "path.basename": true, + "path.dirname": true, + "path.extname": true, + "path.join": true + } + }, + "watchify": { + "builtin": { + "path.join": true + }, + "globals": { + "clearTimeout": true, + "setTimeout": true + }, + "packages": { + "sass>chokidar": true, + "through2": true, + "watchify>anymatch": true, + "watchify>xtend": true + } + }, + "watchify>anymatch": { + "packages": { + "css-loader>normalize-path": true, + "fast-glob>picomatch": true + } + }, + "watchify>browserify>shasum-object": { + "builtin": { + "crypto.createHash": true + }, + "globals": { + "Buffer.isBuffer": true + }, + "packages": { + "eth-rpc-errors>fast-safe-stringify": true + } + }, + "webpack>micromatch>braces>snapdragon-node": { + "packages": { + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>braces>snapdragon-node>define-property": true, + "webpack>micromatch>braces>snapdragon-node>snapdragon-util": true + } + }, + "webpack>micromatch>braces>snapdragon-node>define-property": { + "packages": { + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "webpack>micromatch>braces>snapdragon-node>snapdragon-util": { + "packages": { + "webpack>micromatch>braces>snapdragon-node>snapdragon-util>kind-of": true + } + }, + "webpack>micromatch>braces>snapdragon-node>snapdragon-util>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>braces>split-string": { + "packages": { + "webpack>micromatch>braces>split-string>extend-shallow": true + } + }, + "webpack>micromatch>braces>split-string>extend-shallow": { + "packages": { + "webpack>micromatch>braces>split-string>extend-shallow>is-extendable": true, + "webpack>micromatch>extend-shallow>assign-symbols": true + } + }, + "webpack>micromatch>braces>split-string>extend-shallow>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "webpack>micromatch>define-property>is-descriptor": { + "packages": { + "3box>ipfs>kind-of": true, + "webpack>micromatch>define-property>is-descriptor>is-accessor-descriptor": true, + "webpack>micromatch>define-property>is-descriptor>is-data-descriptor": true + } + }, + "webpack>micromatch>define-property>is-descriptor>is-accessor-descriptor": { + "packages": { + "3box>ipfs>kind-of": true + } + }, + "webpack>micromatch>define-property>is-descriptor>is-data-descriptor": { + "packages": { + "3box>ipfs>kind-of": true + } + }, + "webpack>micromatch>extglob": { + "packages": { + "webpack>micromatch>array-unique": true, + "webpack>micromatch>extglob>define-property": true, + "webpack>micromatch>extglob>expand-brackets": true, + "webpack>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>fragment-cache": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "webpack>micromatch>extglob>define-property": { + "packages": { + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "webpack>micromatch>extglob>expand-brackets": { + "globals": { + "__filename": true + }, + "packages": { + "webpack>micromatch>extglob>expand-brackets>debug": true, + "webpack>micromatch>extglob>expand-brackets>define-property": true, + "webpack>micromatch>extglob>expand-brackets>posix-character-classes": true, + "webpack>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "webpack>micromatch>extglob>expand-brackets>debug": { + "builtin": { + "fs.SyncWriteStream": true, + "net.Socket": true, + "tty.WriteStream": true, + "tty.isatty": true, + "util": true + }, + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "webpack>micromatch>extglob>expand-brackets>debug>ms": true + } + }, + "webpack>micromatch>extglob>expand-brackets>define-property": { + "packages": { + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor": true + } + }, + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor": { + "packages": { + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-accessor-descriptor": true, + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-data-descriptor": true, + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>kind-of": true + } + }, + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-accessor-descriptor": { + "packages": { + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-accessor-descriptor>kind-of": true + } + }, + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-accessor-descriptor>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-data-descriptor": { + "packages": { + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-data-descriptor>kind-of": true + } + }, + "webpack>micromatch>extglob>expand-brackets>define-property>is-descriptor>is-data-descriptor>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>extglob>extend-shallow": { + "packages": { + "webpack>micromatch>extglob>extend-shallow>is-extendable": true + } + }, + "webpack>micromatch>fragment-cache": { + "packages": { + "webpack>micromatch>snapdragon>map-cache": true + } + }, + "webpack>micromatch>nanomatch": { + "builtin": { + "path.basename": true, + "path.sep": true, + "util.inspect": true + }, + "packages": { + "3box>ipfs>kind-of": true, + "nyc>spawn-wrap>is-windows": true, + "webpack>micromatch>arr-diff": true, + "webpack>micromatch>array-unique": true, + "webpack>micromatch>fragment-cache": true, + "webpack>micromatch>nanomatch>define-property": true, + "webpack>micromatch>nanomatch>extend-shallow": true, + "webpack>micromatch>nanomatch>is-odd": true, + "webpack>micromatch>object.pick": true, + "webpack>micromatch>regex-not": true, + "webpack>micromatch>snapdragon": true, + "webpack>micromatch>to-regex": true + } + }, + "webpack>micromatch>nanomatch>define-property": { + "packages": { + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "webpack>micromatch>nanomatch>extend-shallow": { + "packages": { + "webpack>micromatch>extend-shallow>assign-symbols": true, + "webpack>micromatch>nanomatch>extend-shallow>is-extendable": true + } + }, + "webpack>micromatch>nanomatch>extend-shallow>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "webpack>micromatch>nanomatch>is-odd": { + "packages": { + "gulp>undertaker>bach>array-last>is-number": true + } + }, + "webpack>micromatch>object.pick": { + "packages": { + "gulp>gulp-cli>isobject": true + } + }, + "webpack>micromatch>regex-not": { + "packages": { + "webpack>micromatch>regex-not>extend-shallow": true, + "webpack>micromatch>to-regex>safe-regex": true + } + }, + "webpack>micromatch>regex-not>extend-shallow": { + "packages": { + "webpack>micromatch>extend-shallow>assign-symbols": true, + "webpack>micromatch>regex-not>extend-shallow>is-extendable": true + } + }, + "webpack>micromatch>regex-not>extend-shallow>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "webpack>micromatch>snapdragon": { + "builtin": { + "fs.readFileSync": true, + "path.dirname": true, + "util.inspect": true + }, + "globals": { + "__filename": true + }, + "packages": { + "webpack>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>snapdragon>base": true, + "webpack>micromatch>snapdragon>debug": true, + "webpack>micromatch>snapdragon>define-property": true, + "webpack>micromatch>snapdragon>map-cache": true, + "webpack>micromatch>snapdragon>source-map": true, + "webpack>micromatch>snapdragon>source-map-resolve": true, + "webpack>micromatch>snapdragon>use": true + } + }, + "webpack>micromatch>snapdragon>base": { + "builtin": { + "util.inherits": true + }, + "packages": { + "gulp>gulp-cli>isobject": true, + "pubnub>superagent>component-emitter": true, + "webpack>micromatch>snapdragon>base>cache-base": true, + "webpack>micromatch>snapdragon>base>class-utils": true, + "webpack>micromatch>snapdragon>base>define-property": true, + "webpack>micromatch>snapdragon>base>mixin-deep": true, + "webpack>micromatch>snapdragon>base>pascalcase": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base": { + "packages": { + "gulp>gulp-cli>array-sort>get-value": true, + "gulp>gulp-cli>isobject": true, + "pubnub>superagent>component-emitter": true, + "webpack>micromatch>snapdragon>base>cache-base>collection-visit": true, + "webpack>micromatch>snapdragon>base>cache-base>has-value": true, + "webpack>micromatch>snapdragon>base>cache-base>set-value": true, + "webpack>micromatch>snapdragon>base>cache-base>to-object-path": true, + "webpack>micromatch>snapdragon>base>cache-base>union-value": true, + "webpack>micromatch>snapdragon>base>cache-base>unset-value": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>collection-visit": { + "packages": { + "webpack>micromatch>snapdragon>base>cache-base>collection-visit>map-visit": true, + "webpack>micromatch>snapdragon>base>cache-base>collection-visit>object-visit": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>collection-visit>map-visit": { + "builtin": { + "util.inspect": true + }, + "packages": { + "webpack>micromatch>snapdragon>base>cache-base>collection-visit>object-visit": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>collection-visit>object-visit": { + "packages": { + "gulp>gulp-cli>isobject": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>has-value": { + "packages": { + "gulp>gulp-cli>array-sort>get-value": true, + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values": { + "packages": { + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values>is-number": true, + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values>kind-of": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values>is-number": { + "packages": { + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values>is-number>kind-of": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values>is-number>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>has-value>has-values>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>set-value": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true, + "webpack>micromatch>braces>split-string": true, + "webpack>micromatch>extglob>extend-shallow": true, + "webpack>micromatch>extglob>extend-shallow>is-extendable": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>to-object-path": { + "packages": { + "webpack>micromatch>snapdragon>base>cache-base>to-object-path>kind-of": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>to-object-path>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>union-value": { + "packages": { + "gulp-zip>plugin-error>arr-union": true, + "gulp>gulp-cli>array-sort>get-value": true, + "webpack>micromatch>extglob>extend-shallow>is-extendable": true, + "webpack>micromatch>snapdragon>base>cache-base>set-value": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>unset-value": { + "packages": { + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>snapdragon>base>cache-base>unset-value>has-value": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>unset-value>has-value": { + "packages": { + "gulp>gulp-cli>array-sort>get-value": true, + "webpack>micromatch>snapdragon>base>cache-base>unset-value>has-value>has-values": true, + "webpack>micromatch>snapdragon>base>cache-base>unset-value>has-value>isobject": true + } + }, + "webpack>micromatch>snapdragon>base>cache-base>unset-value>has-value>isobject": { + "packages": { + "readable-stream>isarray": true + } + }, + "webpack>micromatch>snapdragon>base>class-utils": { + "builtin": { + "util": true + }, + "packages": { + "gulp-zip>plugin-error>arr-union": true, + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>snapdragon>base>class-utils>static-extend": true, + "webpack>micromatch>snapdragon>define-property": true + } + }, + "webpack>micromatch>snapdragon>base>class-utils>static-extend": { + "builtin": { + "util.inherits": true + }, + "packages": { + "webpack>micromatch>snapdragon>base>class-utils>static-extend>object-copy": true, + "webpack>micromatch>snapdragon>define-property": true + } + }, + "webpack>micromatch>snapdragon>base>class-utils>static-extend>object-copy": { + "packages": { + "webpack>micromatch>snapdragon>base>class-utils>static-extend>object-copy>copy-descriptor": true, + "webpack>micromatch>snapdragon>base>class-utils>static-extend>object-copy>kind-of": true, + "webpack>micromatch>snapdragon>define-property": true + } + }, + "webpack>micromatch>snapdragon>base>class-utils>static-extend>object-copy>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>snapdragon>base>define-property": { + "packages": { + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "webpack>micromatch>snapdragon>base>mixin-deep": { + "packages": { + "gulp>undertaker>object.reduce>for-own>for-in": true, + "webpack>micromatch>snapdragon>base>mixin-deep>is-extendable": true + } + }, + "webpack>micromatch>snapdragon>base>mixin-deep>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "webpack>micromatch>snapdragon>debug": { + "builtin": { + "fs.SyncWriteStream": true, + "net.Socket": true, + "tty.WriteStream": true, + "tty.isatty": true, + "util": true + }, + "globals": { + "chrome": true, + "console": true, + "document": true, + "localStorage": true, + "navigator": true, + "process": true + }, + "packages": { + "webpack>micromatch>snapdragon>debug>ms": true + } + }, + "webpack>micromatch>snapdragon>define-property": { + "packages": { + "webpack>micromatch>snapdragon>define-property>is-descriptor": true + } + }, + "webpack>micromatch>snapdragon>define-property>is-descriptor": { + "packages": { + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-accessor-descriptor": true, + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-data-descriptor": true, + "webpack>micromatch>snapdragon>define-property>is-descriptor>kind-of": true + } + }, + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-accessor-descriptor": { + "packages": { + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-accessor-descriptor>kind-of": true + } + }, + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-accessor-descriptor>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-data-descriptor": { + "packages": { + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-data-descriptor>kind-of": true + } + }, + "webpack>micromatch>snapdragon>define-property>is-descriptor>is-data-descriptor>kind-of": { + "packages": { + "browserify>insert-module-globals>is-buffer": true + } + }, + "webpack>micromatch>snapdragon>source-map-resolve": { + "builtin": { + "url.resolve": true + }, + "globals": { + "setImmediate": true + }, + "packages": { + "gulp-sourcemaps>css>source-map-resolve>atob": true, + "gulp-sourcemaps>css>source-map-resolve>decode-uri-component": true, + "resolve-url-loader>rework>css>urix": true, + "webpack>micromatch>snapdragon>source-map-resolve>source-map-url": true + } + }, + "webpack>micromatch>snapdragon>source-map-resolve>source-map-url": { + "globals": { + "define": true + } + }, + "webpack>micromatch>snapdragon>use": { + "packages": { + "3box>ipfs>kind-of": true + } + }, + "webpack>micromatch>to-regex": { + "packages": { + "webpack>micromatch>regex-not": true, + "webpack>micromatch>to-regex>define-property": true, + "webpack>micromatch>to-regex>extend-shallow": true, + "webpack>micromatch>to-regex>safe-regex": true + } + }, + "webpack>micromatch>to-regex>define-property": { + "packages": { + "gulp>gulp-cli>isobject": true, + "webpack>micromatch>define-property>is-descriptor": true + } + }, + "webpack>micromatch>to-regex>extend-shallow": { + "packages": { + "webpack>micromatch>extend-shallow>assign-symbols": true, + "webpack>micromatch>to-regex>extend-shallow>is-extendable": true + } + }, + "webpack>micromatch>to-regex>extend-shallow>is-extendable": { + "packages": { + "gulp>gulp-cli>liftoff>is-plain-object": true + } + }, + "webpack>micromatch>to-regex>safe-regex": { + "packages": { + "enzyme>rst-selector-parser>nearley>randexp>ret": true + } + }, + "yargs>string-width": { + "packages": { + "eslint>strip-ansi": true, + "yargs>string-width>emoji-regex": true, + "yargs>string-width>is-fullwidth-code-point": true } } } diff --git a/package.json b/package.json index 4d7846653..6b0f134d0 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,9 @@ "scripts": { "setup": "yarn install && yarn setup:postinstall", "setup:postinstall": "yarn patch-package && yarn allow-scripts", - "start": "yarn build:dev dev", - "start:lavamoat": "yarn build dev", + "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 prod", "build": "yarn lavamoat:build", "build:dev": "node development/build/index.js", @@ -34,7 +35,7 @@ "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", + "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", @@ -75,6 +76,7 @@ "resolutions": { "**/regenerator-runtime": "^0.13.7", "**/caniuse-lite": "1.0.30001265", + "**/cross-fetch": "^3.1.5", "**/configstore/dot-prop": "^5.1.1", "**/ethers/elliptic": "^6.5.4", "**/knex/minimist": "^1.2.5", @@ -114,22 +116,21 @@ "@keystonehq/metamask-airgapped-keyring": "0.2.1", "@material-ui/core": "^4.11.0", "@metamask/contract-metadata": "^1.31.0", - "@metamask/controllers": "^27.0.0", - "@metamask/design-tokens": "^1.5.1", - "@metamask/eth-ledger-bridge-keyring": "^0.11.0", + "@metamask/controllers": "^29.0.1", + "@metamask/design-tokens": "^1.6.5", + "@metamask/eth-ledger-bridge-keyring": "^0.13.0", "@metamask/eth-token-tracker": "^4.0.0", "@metamask/etherscan-link": "^2.1.0", - "@metamask/iframe-execution-environment-service": "^0.10.7", "@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": "^8.1.1", - "@metamask/rpc-methods": "^0.10.7", - "@metamask/slip44": "^2.0.0", - "@metamask/smart-transactions-controller": "^1.10.0", - "@metamask/snap-controllers": "^0.10.7", + "@metamask/rpc-methods": "^0.15.0", + "@metamask/slip44": "^2.1.0", + "@metamask/smart-transactions-controller": "^2.0.1", + "@metamask/snap-controllers": "^0.15.0", "@ngraveio/bc-ur": "^1.1.6", "@popperjs/core": "^2.4.0", "@reduxjs/toolkit": "^1.6.2", @@ -156,8 +157,8 @@ "eth-json-rpc-filters": "^4.2.1", "eth-json-rpc-infura": "^5.1.0", "eth-json-rpc-middleware": "^8.0.0", - "eth-keyring-controller": "^6.2.0", - "eth-lattice-keyring": "^0.6.1", + "eth-keyring-controller": "^7.0.2", + "eth-lattice-keyring": "^0.7.3", "eth-method-registry": "^2.0.0", "eth-query": "^2.1.2", "eth-rpc-errors": "^4.0.2", @@ -174,10 +175,8 @@ "ethjs-query": "^0.3.4", "extension-port-stream": "^2.0.0", "fast-json-patch": "^2.2.1", - "fast-safe-stringify": "^2.0.7", "fuse.js": "^3.2.0", "globalthis": "^1.0.1", - "human-standard-collectible-abi": "^1.0.2", "human-standard-token-abi": "^2.0.0", "immer": "^9.0.6", "json-rpc-engine": "^6.1.0", @@ -243,8 +242,8 @@ "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.16.7", "@babel/register": "^7.5.5", - "@lavamoat/allow-scripts": "^2.0.0", - "@lavamoat/lavapack": "^2.0.4", + "@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", @@ -276,14 +275,14 @@ "@types/react": "^16.9.53", "@typescript-eslint/eslint-plugin": "^4.20.0", "@typescript-eslint/parser": "^4.20.0", - "addons-linter": "1.14.0", + "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", - "chromedriver": "^100.0.0", + "chromedriver": "^101.0.0", "concurrently": "^5.2.0", "copy-webpack-plugin": "^6.0.3", "cross-spawn": "^7.0.3", @@ -328,10 +327,11 @@ "improved-yarn-audit": "^3.0.0", "jest": "^26.6.3", "jest-canvas-mock": "^2.3.1", + "jest-it-up": "^2.0.2", "jsdom": "^11.2.0", "koa": "^2.7.0", - "lavamoat": "^5.3.5", - "lavamoat-browserify": "^14.1.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", @@ -387,59 +387,67 @@ }, "lavamoat": { "allowScripts": { - "3box>3box-orbitdb-plugins>ipfs-log>orbit-db-identity-provider>orbit-db-keystore>leveldown": false, - "3box>3box-orbitdb-plugins>ipfs-log>orbit-db-identity-provider>orbit-db-keystore>libp2p-crypto-secp256k1>secp256k1": false, - "3box>3box-orbitdb-plugins>ipfs-log>orbit-db-identity-provider>orbit-db-keystore>libp2p-crypto>libp2p-crypto-secp256k1>secp256k1": false, - "3box>3box-orbitdb-plugins>ipfs-log>orbit-db-identity-provider>orbit-db-keystore>libp2p-crypto>ursa-optional": false, + "@sentry/cli": true, + "chromedriver": true, + "geckodriver": true, + "react-devtools>electron": true, "3box>ipfs-postmsg-proxy>peer-id>libp2p-crypto>libp2p-crypto-secp256k1>secp256k1": false, - "3box>ipfs>ipfs-mfs>ipfs-unixfs-exporter>ipfs-unixfs-importer>rabin-wasm>assemblyscript": false, "3box>ipfs>ipfs-repo>datastore-level>leveldown": false, - "3box>ipfs>ipld-bitcoin>bitcoinjs-lib>bip32>tiny-secp256k1": false, + "3box>ipfs>ipfs-unixfs-importer>rabin-wasm>assemblyscript": false, "3box>ipfs>ipld-ethereum>ethereumjs-account>ethereumjs-util>keccak": false, "3box>ipfs>ipld-ethereum>ethereumjs-account>ethereumjs-util>secp256k1": false, - "3box>ipfs>ipld-ethereum>ethereumjs-block>ethereumjs-tx>ethereumjs-util>ethereum-cryptography>keccak": false, - "3box>ipfs>ipld-ethereum>ethereumjs-block>ethereumjs-tx>ethereumjs-util>ethereum-cryptography>secp256k1": false, "3box>ipfs>ipld-ethereum>ethereumjs-block>ethereumjs-util>keccak": false, "3box>ipfs>ipld-ethereum>ethereumjs-block>ethereumjs-util>secp256k1": false, - "3box>ipfs>ipld-ethereum>ethereumjs-block>merkle-patricia-tree>ethereumjs-util>keccak": false, - "3box>ipfs>ipld-ethereum>ethereumjs-block>merkle-patricia-tree>ethereumjs-util>secp256k1": false, "3box>ipfs>ipld-ethereum>ethereumjs-tx>ethereumjs-util>keccak": false, "3box>ipfs>ipld-ethereum>ethereumjs-tx>ethereumjs-util>secp256k1": false, "3box>ipfs>ipld-ethereum>merkle-patricia-tree>ethereumjs-util>keccak": false, "3box>ipfs>ipld-ethereum>merkle-patricia-tree>ethereumjs-util>secp256k1": false, + "3box>ipfs>libp2p-crypto>libp2p-crypto-secp256k1>secp256k1": false, + "3box>ipfs>libp2p-crypto>ursa-optional": false, + "3box>ipfs>prometheus-gc-stats>gc-stats": false, "3box>orbit-db>orbit-db-cache>leveldown": false, - "@lavamoat/allow-scripts>@lavamoat/preinstall-always-fail": false, - "@metamask/controllers>babel-runtime>core-js": false, - "@metamask/controllers>eth-json-rpc-infura>eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>keccak": false, - "@metamask/controllers>eth-json-rpc-infura>eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>secp256k1": false, - "@metamask/controllers>eth-keyring-controller>eth-hd-keyring>eth-sig-util>ethereumjs-util>keccak": false, - "@metamask/controllers>eth-keyring-controller>eth-hd-keyring>eth-sig-util>ethereumjs-util>secp256k1": false, - "@metamask/controllers>web3-provider-engine>eth-json-rpc-filters>eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>keccak": false, - "@metamask/controllers>web3-provider-engine>eth-json-rpc-filters>eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>secp256k1": false, - "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>keccak": false, - "@metamask/controllers>web3-provider-engine>eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>secp256k1": false, + "3box>orbit-db>orbit-db-keystore>leveldown": false, + "3box>orbit-db>orbit-db-keystore>libp2p-crypto-secp256k1>secp256k1": false, + "@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>eth-sig-util>ethereumjs-util>secp256k1": false, - "@sentry/cli": true, - "@storybook/addon-a11y>@storybook/addons>@storybook/api>@storybook/channels>core-js": false, - "@storybook/addon-essentials>@storybook/addon-docs>@storybook/builder-webpack4>@storybook/ui>core-js-pure": false, - "chromedriver": true, + "@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-infura>eth-json-rpc-middleware>ethereumjs-util>keccak": false, + "eth-json-rpc-infura>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-link>protobufjs": 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, - "geckodriver": true, - "react-devtools>electron": true, - "eth-trezor-keyring>trezor-connect>@trezor/transport>protobufjs": false, - "@metamask/iframe-execution-environment-service>@metamask/execution-environments": false, - "@metamask/snap-controllers>@metamask/execution-environments": false, - "@metamask/iframe-execution-environment-service>@metamask/snap-controllers>@metamask/execution-environments": false, - "@metamask/rpc-methods>@metamask/snap-controllers>@metamask/execution-environments": 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 } } } diff --git a/patches/@lavamoat+lavapack+2.0.4.patch b/patches/@lavamoat+lavapack+3.1.0.patch similarity index 83% rename from patches/@lavamoat+lavapack+2.0.4.patch rename to patches/@lavamoat+lavapack+3.1.0.patch index 24c412dad..bdce11c01 100644 --- a/patches/@lavamoat+lavapack+2.0.4.patch +++ b/patches/@lavamoat+lavapack+3.1.0.patch @@ -1,11 +1,11 @@ diff --git a/node_modules/@lavamoat/lavapack/src/pack.js b/node_modules/@lavamoat/lavapack/src/pack.js -index 8e5284f..f0e4a64 100644 +index eb41a0a..3f891ea 100644 --- a/node_modules/@lavamoat/lavapack/src/pack.js +++ b/node_modules/@lavamoat/lavapack/src/pack.js -@@ -204,7 +204,9 @@ function createPacker({ +@@ -203,7 +203,9 @@ function createPacker({ + const jsonSerializeableData = { // id, package: packageName, - packageVersion, - file, + // Omit this absolute filename from bundle so that builds are reproducible between environments + // TODO: update lavapack with an option to omit this, and/or make this filepath relative to the current working directory diff --git a/patches/@metamask+snap-controllers+0.15.0.patch b/patches/@metamask+snap-controllers+0.15.0.patch new file mode 100644 index 000000000..b1566a9eb --- /dev/null +++ b/patches/@metamask+snap-controllers+0.15.0.patch @@ -0,0 +1,323 @@ +diff --git a/node_modules/@metamask/snap-controllers/CHANGELOG.md b/node_modules/@metamask/snap-controllers/CHANGELOG.md +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/LICENSE b/node_modules/@metamask/snap-controllers/LICENSE +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/README.md b/node_modules/@metamask/snap-controllers/README.md +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/index.d.ts b/node_modules/@metamask/snap-controllers/dist/index.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/index.js b/node_modules/@metamask/snap-controllers/dist/index.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/index.js.map b/node_modules/@metamask/snap-controllers/dist/index.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/resource/ExternalResourceController.d.ts b/node_modules/@metamask/snap-controllers/dist/resource/ExternalResourceController.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/resource/ExternalResourceController.js b/node_modules/@metamask/snap-controllers/dist/resource/ExternalResourceController.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/resource/ExternalResourceController.js.map b/node_modules/@metamask/snap-controllers/dist/resource/ExternalResourceController.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/resource/index.d.ts b/node_modules/@metamask/snap-controllers/dist/resource/index.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/resource/index.js b/node_modules/@metamask/snap-controllers/dist/resource/index.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/resource/index.js.map b/node_modules/@metamask/snap-controllers/dist/resource/index.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/AbstractExecutionService.d.ts b/node_modules/@metamask/snap-controllers/dist/services/AbstractExecutionService.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/AbstractExecutionService.js b/node_modules/@metamask/snap-controllers/dist/services/AbstractExecutionService.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/AbstractExecutionService.js.map b/node_modules/@metamask/snap-controllers/dist/services/AbstractExecutionService.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/ExecutionService.d.ts b/node_modules/@metamask/snap-controllers/dist/services/ExecutionService.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/ExecutionService.js b/node_modules/@metamask/snap-controllers/dist/services/ExecutionService.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/ExecutionService.js.map b/node_modules/@metamask/snap-controllers/dist/services/ExecutionService.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/WebWorkerExecutionService.d.ts b/node_modules/@metamask/snap-controllers/dist/services/WebWorkerExecutionService.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/WebWorkerExecutionService.js b/node_modules/@metamask/snap-controllers/dist/services/WebWorkerExecutionService.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/WebWorkerExecutionService.js.map b/node_modules/@metamask/snap-controllers/dist/services/WebWorkerExecutionService.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.d.ts b/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.d.ts +old mode 100644 +new mode 100755 +index 91b3138..8ba2b34 +--- a/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.d.ts ++++ b/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.d.ts +@@ -28,8 +28,9 @@ export declare class IframeExecutionService extends AbstractExecutionService; + private _initStreams; + /** +- * Creates the iframe to be used as the execution environment +- * This may run forever if the iframe never loads, but the promise should be wrapped in an initialization timeout in the SnapController ++ * Creates the iframe to be used as the execution environment. This may run ++ * forever if the iframe never loads, but the promise should be wrapped in ++ * an initialization timeout in the SnapController. + * + * @param uri - The iframe URI + * @param jobId - The job id +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js b/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js +old mode 100644 +new mode 100755 +index 8a93679..abf861d +--- a/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js ++++ b/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js +@@ -69,25 +69,54 @@ class IframeExecutionService extends AbstractExecutionService_1.AbstractExecutio + }; + } + /** +- * Creates the iframe to be used as the execution environment +- * This may run forever if the iframe never loads, but the promise should be wrapped in an initialization timeout in the SnapController ++ * Creates the iframe to be used as the execution environment. This may run ++ * forever if the iframe never loads, but the promise should be wrapped in ++ * an initialization timeout in the SnapController. + * + * @param uri - The iframe URI + * @param jobId - The job id + */ + _createWindow(uri, jobId) { +- const iframe = document.createElement('iframe'); +- return new Promise((resolve) => { ++ return new Promise((resolve, reject) => { ++ const iframe = document.createElement('iframe'); ++ // The order of operations appears to matter for everything except this ++ // attribute. We may as well set it here. ++ iframe.setAttribute('id', jobId); ++ // In the past, we've had problems that appear to be symptomatic of the ++ // iframe firing the `load` event before its scripts are actually loaded, ++ // which has prevented snaps from executing properly. Therefore, we set ++ // the `src` attribute and append the iframe to the DOM before attaching ++ // the `load` listener. ++ // ++ // `load` should only fire when "all dependent resources" have been ++ // loaded, which includes scripts. ++ // ++ // MDN article for `load` event: https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event ++ // Re: `load` firing twice: https://stackoverflow.com/questions/10781880/dynamically-created-iframe-triggers-onload-event-twice/15880489#15880489 ++ iframe.setAttribute('src', uri); ++ document.body.appendChild(iframe); + iframe.addEventListener('load', () => { + if (iframe.contentWindow) { + resolve(iframe.contentWindow); + } ++ else { ++ // We don't know of a case when this would happen, but better to fail ++ // fast if it does. ++ reject(new Error(`iframe.contentWindow not present on load for job "${jobId}".`)); ++ } + }); +- // Set attributes before adding the iframe to the DOM to trigger 'load' event once everything has been loaded. +- iframe.setAttribute('src', uri); +- iframe.setAttribute('id', jobId); ++ // We need to set the sandbox attribute after appending the iframe to the ++ // DOM, otherwise errors in the iframe will not be propagated via `error` ++ // and `unhandledrejection` events, and we cannot catch and handle them. ++ // We wish we knew why this was the case. ++ // ++ // We set this property after adding the `load` listener because it ++ // appears to work dependably. ¯\_(ツ)_/¯ ++ // ++ // We apply this property as a principle of least authority (POLA) ++ // measure. ++ // Ref: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox + iframe.setAttribute('sandbox', 'allow-scripts'); +- document.body.appendChild(iframe); + }); + } + } +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js.map b/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js.map +old mode 100644 +new mode 100755 +index a9e6647..62f6c49 +--- a/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js.map ++++ b/node_modules/@metamask/snap-controllers/dist/services/iframe/IframeExecutionService.js.map +@@ -1 +1 @@ +-{"version":3,"file":"IframeExecutionService.js","sourceRoot":"","sources":["../../../src/services/iframe/IframeExecutionService.ts"],"names":[],"mappings":";;;;;;AACA,uEAAwE;AAExE,6EAAqE;AACrE,qDAAgD;AAChD,2EAAoE;AACpE,mCAAgC;AAChC,gDAAwB;AACxB,0EAIqC;AAqBrC,MAAa,sBAAuB,SAAQ,mDAAqC;IAK/E,YAAY,EACV,iBAAiB,EACjB,SAAS,EACT,SAAS,GAC6B;QACtC,KAAK,CAAC;YACJ,iBAAiB;YACjB,SAAS;SACV,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAES,UAAU,CAAC,UAAuB;QAC1C,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACnD,CAAC;IAES,KAAK,CAAC,QAAQ;QACtB,MAAM,KAAK,GAAG,IAAA,eAAM,GAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,+BAAa,EAAE,CAAC;QAEtC,MAAM,iBAAiB,GAAG,IAAA,mDAAsB,GAAE,CAAC;QAEnD,IAAA,cAAI,EAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE1E,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG;YAClB,EAAE,EAAE,KAAK;YACT,OAAO;YACP,SAAS;SACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAElC,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAa;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EACzB,KAAK,CACN,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,6CAAuB,CAAC;YAC5C,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAC;QACH,+CAA+C;QAC/C,MAAM,GAAG,GAAG,IAAA,yCAAc,EACxB,SAA8B,EAC9B,SAAS,KAAK,GAAG,CAClB,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,0CAAiB,CAAC,OAAO,CAAC,CAAC;QAClE,4FAA4F;QAC5F,MAAM,YAAY,GAAG,CAAC,IAAS,EAAE,EAAE;YACjC,IACE,IAAI,CAAC,KAAK;gBACV,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,uCAAuC;cACnF;gBACA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,UAAU,CAAC,OAAO,CACrB,iCAAiC,EACjC,MAAM,EACN,IAAI,CAAC,KAAK,CACX,CAAC;iBACH;gBACD,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;aACpD;QACH,CAAC,CAAC;QACF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,0CAAiB,CAAC,QAAQ,CAAC,CAAC;QAE/D,iCAAiC;QACjC,OAAO;YACL,OAAO,EAAE,aAAkC;YAC3C,GAAG,EAAE,SAAS;YACd,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,GAAW,EAAE,KAAa;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBACnC,IAAI,MAAM,CAAC,aAAa,EAAE;oBACxB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;iBAC/B;YACH,CAAC,CAAC,CAAC;YACH,8GAA8G;YAC9G,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA7GD,wDA6GC"} +\ No newline at end of file ++{"version":3,"file":"IframeExecutionService.js","sourceRoot":"","sources":["../../../src/services/iframe/IframeExecutionService.ts"],"names":[],"mappings":";;;;;;AACA,uEAAwE;AAExE,6EAAqE;AACrE,qDAAgD;AAChD,2EAAoE;AACpE,mCAAgC;AAChC,gDAAwB;AACxB,0EAIqC;AAqBrC,MAAa,sBAAuB,SAAQ,mDAAqC;IAK/E,YAAY,EACV,iBAAiB,EACjB,SAAS,EACT,SAAS,GAC6B;QACtC,KAAK,CAAC;YACJ,iBAAiB;YACjB,SAAS;SACV,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAES,UAAU,CAAC,UAAuB;QAC1C,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACnD,CAAC;IAES,KAAK,CAAC,QAAQ;QACtB,MAAM,KAAK,GAAG,IAAA,eAAM,GAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,+BAAa,EAAE,CAAC;QAEtC,MAAM,iBAAiB,GAAG,IAAA,mDAAsB,GAAE,CAAC;QAEnD,IAAA,cAAI,EAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE1E,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG;YAClB,EAAE,EAAE,KAAK;YACT,OAAO;YACP,SAAS;SACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAElC,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAa;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EACzB,KAAK,CACN,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,6CAAuB,CAAC;YAC5C,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAC;QACH,+CAA+C;QAC/C,MAAM,GAAG,GAAG,IAAA,yCAAc,EACxB,SAA8B,EAC9B,SAAS,KAAK,GAAG,CAClB,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,0CAAiB,CAAC,OAAO,CAAC,CAAC;QAClE,4FAA4F;QAC5F,MAAM,YAAY,GAAG,CAAC,IAAS,EAAE,EAAE;YACjC,IACE,IAAI,CAAC,KAAK;gBACV,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,uCAAuC;cACnF;gBACA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,UAAU,CAAC,OAAO,CACrB,iCAAiC,EACjC,MAAM,EACN,IAAI,CAAC,KAAK,CACX,CAAC;iBACH;gBACD,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;aACpD;QACH,CAAC,CAAC;QACF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,0CAAiB,CAAC,QAAQ,CAAC,CAAC;QAE/D,iCAAiC;QACjC,OAAO;YACL,OAAO,EAAE,aAAkC;YAC3C,GAAG,EAAE,SAAS;YACd,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CAAC,GAAW,EAAE,KAAa;QAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,uEAAuE;YACvE,yCAAyC;YACzC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEjC,uEAAuE;YACvE,yEAAyE;YACzE,uEAAuE;YACvE,wEAAwE;YACxE,uBAAuB;YACvB,EAAE;YACF,mEAAmE;YACnE,kCAAkC;YAClC,EAAE;YACF,mGAAmG;YACnG,iJAAiJ;YACjJ,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBACnC,IAAI,MAAM,CAAC,aAAa,EAAE;oBACxB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;iBAC/B;qBAAM;oBACL,qEAAqE;oBACrE,mBAAmB;oBACnB,MAAM,CACJ,IAAI,KAAK,CACP,qDAAqD,KAAK,IAAI,CAC/D,CACF,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;YAEH,yEAAyE;YACzE,yEAAyE;YACzE,wEAAwE;YACxE,yCAAyC;YACzC,EAAE;YACF,mEAAmE;YACnE,wCAAwC;YACxC,EAAE;YACF,kEAAkE;YAClE,WAAW;YACX,qFAAqF;YACrF,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhJD,wDAgJC"} +\ No newline at end of file +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/index.d.ts b/node_modules/@metamask/snap-controllers/dist/services/iframe/index.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/index.js b/node_modules/@metamask/snap-controllers/dist/services/iframe/index.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/index.js.map b/node_modules/@metamask/snap-controllers/dist/services/iframe/index.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/testHelpers/server.d.ts b/node_modules/@metamask/snap-controllers/dist/services/iframe/testHelpers/server.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/testHelpers/server.js b/node_modules/@metamask/snap-controllers/dist/services/iframe/testHelpers/server.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/iframe/testHelpers/server.js.map b/node_modules/@metamask/snap-controllers/dist/services/iframe/testHelpers/server.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/index.d.ts b/node_modules/@metamask/snap-controllers/dist/services/index.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/index.js b/node_modules/@metamask/snap-controllers/dist/services/index.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/services/index.js.map b/node_modules/@metamask/snap-controllers/dist/services/index.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/RequestQueue.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/RequestQueue.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/RequestQueue.js b/node_modules/@metamask/snap-controllers/dist/snaps/RequestQueue.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/RequestQueue.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/RequestQueue.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/SnapController.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/SnapController.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/SnapController.js b/node_modules/@metamask/snap-controllers/dist/snaps/SnapController.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/SnapController.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/SnapController.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/default-endowments.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/default-endowments.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/default-endowments.js b/node_modules/@metamask/snap-controllers/dist/snaps/default-endowments.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/default-endowments.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/default-endowments.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/constants.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/constants.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/constants.js b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/constants.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/constants.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/constants.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/index.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/index.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/index.js b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/index.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/index.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/index.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/long-running.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/long-running.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/long-running.js b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/long-running.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/long-running.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/long-running.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/network-access.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/network-access.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/network-access.js b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/network-access.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/endowments/network-access.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/endowments/network-access.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/index.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/index.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/index.js b/node_modules/@metamask/snap-controllers/dist/snaps/index.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/index.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/index.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/NpmSnapPackageJson.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/NpmSnapPackageJson.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/NpmSnapPackageJson.js b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/NpmSnapPackageJson.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/NpmSnapPackageJson.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/NpmSnapPackageJson.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/SnapManifest.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/SnapManifest.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/SnapManifest.js b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/SnapManifest.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/SnapManifest.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/SnapManifest.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/index.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/index.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/index.js b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/index.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/index.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/index.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateNpmSnapPackageJson.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateNpmSnapPackageJson.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateNpmSnapPackageJson.js b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateNpmSnapPackageJson.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateNpmSnapPackageJson.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateNpmSnapPackageJson.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateSnapManifest.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateSnapManifest.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateSnapManifest.js b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateSnapManifest.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateSnapManifest.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/json-schemas/validateSnapManifest.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/utils.d.ts b/node_modules/@metamask/snap-controllers/dist/snaps/utils.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/utils.js b/node_modules/@metamask/snap-controllers/dist/snaps/utils.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/snaps/utils.js.map b/node_modules/@metamask/snap-controllers/dist/snaps/utils.js.map +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/utils.d.ts b/node_modules/@metamask/snap-controllers/dist/utils.d.ts +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/utils.js b/node_modules/@metamask/snap-controllers/dist/utils.js +old mode 100644 +new mode 100755 +diff --git a/node_modules/@metamask/snap-controllers/dist/utils.js.map b/node_modules/@metamask/snap-controllers/dist/utils.js.map +old mode 100644 +new mode 100755 diff --git a/patches/bip39+2.5.0.patch b/patches/bip39+2.5.0.patch deleted file mode 100644 index 2976f3bb2..000000000 --- a/patches/bip39+2.5.0.patch +++ /dev/null @@ -1,99 +0,0 @@ -diff --git a/node_modules/bip39/index.js b/node_modules/bip39/index.js -index aa0f29f..bee8008 100644 ---- a/node_modules/bip39/index.js -+++ b/node_modules/bip39/index.js -@@ -48,7 +48,9 @@ function salt (password) { - } - - function mnemonicToSeed (mnemonic, password) { -- var mnemonicBuffer = Buffer.from(unorm.nfkd(mnemonic), 'utf8') -+ var mnemonicBuffer = typeof mnemonic === 'string' -+ ? Buffer.from(unorm.nfkd(mnemonic), 'utf8') -+ : mnemonic - var saltBuffer = Buffer.from(salt(unorm.nfkd(password)), 'utf8') - - return pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512') -@@ -61,12 +63,28 @@ function mnemonicToSeedHex (mnemonic, password) { - function mnemonicToEntropy (mnemonic, wordlist) { - wordlist = wordlist || DEFAULT_WORDLIST - -- var words = unorm.nfkd(mnemonic).split(' ') -+ var mnemonicAsBuffer = typeof mnemonic === 'string' -+ ? Buffer.from(unorm.nfkd(mnemonic), 'utf8') -+ : mnemonic -+ -+ var words = []; -+ var currentWord = []; -+ for (const byte of mnemonicAsBuffer.values()) { -+ // split at space or \u3000 (ideographic space, for Japanese wordlists) -+ if (byte === 0x20 || byte === 0x3000) { -+ words.push(Buffer.from(currentWord)); -+ currentWord = []; -+ } else { -+ currentWord.push(byte); -+ } -+ } -+ words.push(Buffer.from(currentWord)); -+ - if (words.length % 3 !== 0) throw new Error(INVALID_MNEMONIC) - - // convert word indices to 11 bit binary strings - var bits = words.map(function (word) { -- var index = wordlist.indexOf(word) -+ var index = wordlist.indexOf(word.toString('utf8')) - if (index === -1) throw new Error(INVALID_MNEMONIC) - - return lpad(index.toString(2), '0', 11) -@@ -104,12 +122,41 @@ function entropyToMnemonic (entropy, wordlist) { - - var bits = entropyBits + checksumBits - var chunks = bits.match(/(.{1,11})/g) -- var words = chunks.map(function (binary) { -+ var wordsAsBuffers = chunks.map(function (binary) { - var index = binaryToByte(binary) -- return wordlist[index] -+ return Buffer.from(wordlist[index], 'utf8') - }) - -- return wordlist === JAPANESE_WORDLIST ? words.join('\u3000') : words.join(' ') -+ var bufferSize = wordsAsBuffers.reduce(function (bufferSize, wordAsBuffer, i) { -+ var shouldAddSeparator = i < wordsAsBuffers.length - 1 -+ return ( -+ bufferSize + -+ wordAsBuffer.length + -+ (shouldAddSeparator ? 1 : 0) -+ ) -+ }, 0) -+ var separator = wordlist === JAPANESE_WORDLIST ? '\u3000' : ' ' -+ var result = wordsAsBuffers.reduce(function (result, wordAsBuffer, i) { -+ var shouldAddSeparator = i < wordsAsBuffers.length - 1 -+ result.workingBuffer.set(wordAsBuffer, result.offset) -+ if (shouldAddSeparator) { -+ result.workingBuffer.write( -+ separator, -+ result.offset + wordAsBuffer.length, -+ separator.length, -+ 'utf8' -+ ) -+ } -+ return { -+ workingBuffer: result.workingBuffer, -+ offset: ( -+ result.offset + -+ wordAsBuffer.length + -+ (shouldAddSeparator ? 1 : 0) -+ ) -+ } -+ }, { workingBuffer: Buffer.alloc(bufferSize), offset: 0 }) -+ return result.workingBuffer; - } - - function generateMnemonic (strength, rng, wordlist) { -@@ -124,6 +171,7 @@ function validateMnemonic (mnemonic, wordlist) { - try { - mnemonicToEntropy(mnemonic, wordlist) - } catch (e) { -+ console.log('could not validate mnemonic', e) - return false - } - diff --git a/patches/eth-hd-keyring+3.6.0.patch b/patches/eth-hd-keyring+3.6.0.patch deleted file mode 100644 index 211cb89dd..000000000 --- a/patches/eth-hd-keyring+3.6.0.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/node_modules/eth-hd-keyring/index.js b/node_modules/eth-hd-keyring/index.js -index 19d1d7f..350d6b8 100644 ---- a/node_modules/eth-hd-keyring/index.js -+++ b/node_modules/eth-hd-keyring/index.js -@@ -17,8 +17,11 @@ class HdKeyring extends SimpleKeyring { - } - - serialize () { -+ const mnemonicAsBuffer = typeof this.mnemonic === 'string' -+ ? Buffer.from(this.mnemonic, 'utf8') -+ : this.mnemonic - return Promise.resolve({ -- mnemonic: this.mnemonic, -+ mnemonic: Array.from(mnemonicAsBuffer.values()), - numberOfAccounts: this.wallets.length, - hdPath: this.hdPath, - }) -@@ -69,9 +72,22 @@ class HdKeyring extends SimpleKeyring { - - /* PRIVATE METHODS */ - -- _initFromMnemonic (mnemonic) { -- this.mnemonic = mnemonic -- const seed = bip39.mnemonicToSeed(mnemonic) -+ /** -+ * Sets appropriate properties for the keyring based on the given -+ * BIP39-compliant mnemonic. -+ * -+ * @param {string|Array|Buffer} mnemonic - A seed phrase represented -+ * as a string, an array of UTF-8 bytes, or a Buffer. -+ */ -+ _initFromMnemonic(mnemonic) { -+ if (typeof mnemonic === 'string') { -+ this.mnemonic = Buffer.from(mnemonic, 'utf8') -+ } else if (Array.isArray(mnemonic)) { -+ this.mnemonic = Buffer.from(mnemonic) -+ } else { -+ this.mnemonic = mnemonic -+ } -+ const seed = bip39.mnemonicToSeed(this.mnemonic) - this.hdWallet = hdkey.fromMasterSeed(seed) - this.root = this.hdWallet.derivePath(this.hdPath) - } diff --git a/patches/eth-keyring-controller+6.2.1.patch b/patches/eth-keyring-controller+6.2.1.patch deleted file mode 100644 index aec0c7168..000000000 --- a/patches/eth-keyring-controller+6.2.1.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/node_modules/eth-keyring-controller/index.js b/node_modules/eth-keyring-controller/index.js -index 250ab98..38615aa 100644 ---- a/node_modules/eth-keyring-controller/index.js -+++ b/node_modules/eth-keyring-controller/index.js -@@ -84,15 +84,20 @@ class KeyringController extends EventEmitter { - * - * @emits KeyringController#unlock - * @param {string} password - The password to encrypt the vault with -- * @param {string} seed - The BIP44-compliant seed phrase. -+ * @param {string|Array} seedPhrase - The BIP39-compliant seed phrase, -+ * either as a string or an array of UTF-8 bytes that represent the string. - * @returns {Promise} A Promise that resolves to the state. - */ -- createNewVaultAndRestore (password, seed) { -+ createNewVaultAndRestore(password, seedPhrase) { -+ const seedPhraseAsBuffer = typeof seedPhrase === 'string' -+ ? Buffer.from(seedPhrase, 'utf8') -+ : Buffer.from(seedPhrase) -+ - if (typeof password !== 'string') { - return Promise.reject(new Error('Password must be text.')) - } - -- if (!bip39.validateMnemonic(seed)) { -+ if (!bip39.validateMnemonic(seedPhraseAsBuffer)) { - return Promise.reject(new Error('Seed phrase is invalid.')) - } - -@@ -101,7 +106,7 @@ class KeyringController extends EventEmitter { - return this.persistAllKeyrings(password) - .then(() => { - return this.addNewKeyring('HD Key Tree', { -- mnemonic: seed, -+ mnemonic: seedPhraseAsBuffer, - numberOfAccounts: 1, - }) - }) diff --git a/patches/secp256k1+3.8.0.patch b/patches/secp256k1+3.8.0.patch new file mode 100644 index 000000000..e44de3f04 --- /dev/null +++ b/patches/secp256k1+3.8.0.patch @@ -0,0 +1,37 @@ +lazy precompute for faster module initialization + +diff --git a/node_modules/secp256k1/lib/js/ecpointg.js b/node_modules/secp256k1/lib/js/ecpointg.js +index 0144364..09a87c5 100644 +--- a/node_modules/secp256k1/lib/js/ecpointg.js ++++ b/node_modules/secp256k1/lib/js/ecpointg.js +@@ -8,11 +8,12 @@ function ECPointG () { + this.x = BN.fromBuffer(Buffer.from('79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798', 'hex')) + this.y = BN.fromBuffer(Buffer.from('483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8', 'hex')) + this.inf = false +- +- this._precompute() ++ this.precomputed = undefined + } + + ECPointG.prototype._precompute = function () { ++ if (this.precomputed !== undefined) return ++ + var ecpoint = new ECPoint(this.x, this.y) + + var dstep = 4 +@@ -34,6 +35,7 @@ ECPointG.prototype._precompute = function () { + } + + ECPointG.prototype.mul = function (num) { ++ this._precompute() + // Algorithm 3.42 Fixed-base NAF windowing method for point multiplication + var step = this.precomputed.doubles.step + var points = this.precomputed.doubles.points +@@ -68,6 +70,7 @@ ECPointG.prototype.mul = function (num) { + } + + ECPointG.prototype.mulAdd = function (k1, p2, k2) { ++ this._precompute() + var nafPointsP1 = this.precomputed.naf + var nafPointsP2 = p2._getNAFPoints1() + var wnd = [nafPointsP1.points, nafPointsP2.points] diff --git a/patches/zxcvbn+4.4.2.patch b/patches/zxcvbn+4.4.2.patch new file mode 100644 index 000000000..9975da28d --- /dev/null +++ b/patches/zxcvbn+4.4.2.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/zxcvbn/lib/matching.js b/node_modules/zxcvbn/lib/matching.js +index 3940bad..748da8b 100644 +--- a/node_modules/zxcvbn/lib/matching.js ++++ b/node_modules/zxcvbn/lib/matching.js +@@ -13,7 +13,7 @@ build_ranked_dict = function(ordered_list) { + i = 1; + for (o = 0, len1 = ordered_list.length; o < len1; o++) { + word = ordered_list[o]; +- result[word] = i; ++ Reflect.defineProperty(result, word, { value: i, configurable: true, enumerable: true, writable: true }); + i += 1; + } + return result; diff --git a/shared/constants/app.js b/shared/constants/app.js index 6c099860d..0d1aecc06 100644 --- a/shared/constants/app.js +++ b/shared/constants/app.js @@ -70,3 +70,25 @@ export const POLLING_TOKEN_ENVIRONMENT_TYPES = { [ENVIRONMENT_TYPE_NOTIFICATION]: 'notificationGasPollTokens', [ENVIRONMENT_TYPE_FULLSCREEN]: 'fullScreenGasPollTokens', }; + +export const ORIGIN_METAMASK = 'metamask'; + +export const METAMASK_BETA_CHROME_ID = 'pbbkamfgmaedccnfkmjcofcecjhfgldn'; +export const METAMASK_PROD_CHROME_ID = 'nkbihfbeogaeaoehlefnkodbefgpgknn'; +export const METAMASK_FLASK_CHROME_ID = 'ljfoeinjpaedjfecbmggjgodbgkmjkjk'; + +export const CHROME_BUILD_IDS = [ + METAMASK_BETA_CHROME_ID, + METAMASK_PROD_CHROME_ID, + METAMASK_FLASK_CHROME_ID, +]; + +const METAMASK_BETA_FIREFOX_ID = 'webextension-beta@metamask.io'; +const METAMASK_PROD_FIREFOX_ID = 'webextension@metamask.io'; +const METAMASK_FLASK_FIREFOX_ID = 'webextension-flask@metamask.io'; + +export const FIREFOX_BUILD_IDS = [ + METAMASK_BETA_FIREFOX_ID, + METAMASK_PROD_FIREFOX_ID, + METAMASK_FLASK_FIREFOX_ID, +]; diff --git a/shared/constants/gas.js b/shared/constants/gas.js index ae674e4a2..0092e9ae0 100644 --- a/shared/constants/gas.js +++ b/shared/constants/gas.js @@ -10,9 +10,22 @@ export const GAS_LIMITS = { BASE_TOKEN_ESTIMATE: addHexPrefix(ONE_HUNDRED_THOUSAND.toString(16)), }; +/** + * @typedef {Object} GasEstimateTypes + * @property {'fee-market'} FEE_MARKET - A gas estimate for a fee market + * transaction generated by our gas estimation API. + * @property {'legacy'} LEGACY - A gas estimate for a legacy Transaction + * generated by our gas estimation API. + * @property {'eth_gasPrice'} ETH_GAS_PRICE - A gas estimate provided by the + * Ethereum node via eth_gasPrice. + * @property {'none'} NONE - No gas estimate available. + */ + /** * These are already declared in @metamask/controllers but importing them from * that module and re-exporting causes the UI bundle size to expand beyond 4MB + * + * @type {GasEstimateTypes} */ export const GAS_ESTIMATE_TYPES = { FEE_MARKET: 'fee-market', diff --git a/shared/constants/metametrics.js b/shared/constants/metametrics.js index 5636b5d67..1751c2a55 100644 --- a/shared/constants/metametrics.js +++ b/shared/constants/metametrics.js @@ -164,12 +164,16 @@ * trait * @property {'networks_added'} NETWORKS_ADDED - when user modifies networks * we identify the networks_added trait + * @property {'networks_without_ticker'} NETWORKS_WITHOUT_TICKER - when user + * modifies networks we identify the networks_without_ticker trait for + * networks without a ticker. * @property {'nft_autodetection_enabled'} NFT_AUTODETECTION_ENABLED - when Autodetect NFTs * feature is toggled we identify the nft_autodetection_enabled trait * @property {'number_of_accounts'} NUMBER_OF_ACCOUNTS - when identities * change, we identify the new number_of_accounts trait * @property {'number_of_nft_collections'} NUMBER_OF_NFT_COLLECTIONS - user * trait for number of unique NFT addresses + * @property {'number_of_nfts'} NUMBER_OF_NFTS - user trait for number of all NFT addresses * @property {'number_of_tokens'} NUMBER_OF_TOKENS - when the number of tokens change, we * identify the new number_of_tokens trait * @property {'opensea_api_enabled'} OPENSEA_API_ENABLED - when the OpenSea API is enabled @@ -177,6 +181,8 @@ * @property {'three_box_enabled'} THREE_BOX_ENABLED - when 3box feature is * toggled we identify the 3box_enabled trait * @property {'theme'} THEME - when the user's theme changes we identify the theme trait + * @property {'token_detection_enabled'} TOKEN_DETECTION_ENABLED - when token detection feature is toggled we + * identify the token_detection_enabled trait */ /** @@ -188,13 +194,16 @@ export const TRAITS = { ADDRESS_BOOK_ENTRIES: 'address_book_entries', LEDGER_CONNECTION_TYPE: 'ledger_connection_type', NETWORKS_ADDED: 'networks_added', + NETWORKS_WITHOUT_TICKER: 'networks_without_ticker', NFT_AUTODETECTION_ENABLED: 'nft_autodetection_enabled', NUMBER_OF_ACCOUNTS: 'number_of_accounts', NUMBER_OF_NFT_COLLECTIONS: 'number_of_nft_collections', + NUMBER_OF_NFTS: 'number_of_nfts', NUMBER_OF_TOKENS: 'number_of_tokens', OPENSEA_API_ENABLED: 'opensea_api_enabled', THREE_BOX_ENABLED: 'three_box_enabled', THEME: 'theme', + TOKEN_DETECTION_ENABLED: 'token_detection_enabled', }; /** @@ -205,12 +214,17 @@ export const TRAITS = { * type of ledger connection set by user preference. * @property {Array} [networks_added] - An array consisting of chainIds * that indicate the networks a user has added to their MetaMask. + * @property {Array} [networks_without_ticker] - An array consisting of + * chainIds that indicate the networks added by the user that do not have a + * ticker. * @property {number} [nft_autodetection_enabled] - does the user have the * use collection/nft detection enabled? * @property {number} [number_of_accounts] - A number representing the number * of identities(accounts) added to the user's MetaMask. * @property {number} [number_of_nft_collections] - A number representing the * amount of different NFT collections the user possesses an NFT from. + * @property {number} [number_of_nfts] - A number representing the + * amount of all NFTs the user possesses across all networks and accounts. * @property {number} [number_of_tokens] - The total number of token contracts * the user has across all networks and accounts. * @property {boolean} [opensea_api_enabled] - does the user have the OpenSea @@ -218,6 +232,7 @@ export const TRAITS = { * @property {boolean} [three_box_enabled] - does the user have 3box sync * enabled? * @property {string} [theme] - which theme the user has selected + * @property {boolean} [token_detection_enabled] - does the user have token detection is enabled? */ // Mixpanel converts the zero address value to a truly anonymous event, which @@ -256,9 +271,58 @@ export const REJECT_NOTFICIATION_CLOSE = 'Cancel Via Notification Close'; export const REJECT_NOTFICIATION_CLOSE_SIG = 'Cancel Sig Request Via Notification Close'; +/** + * EVENTS + */ + export const EVENT_NAMES = { - SIGNATURE_REQUESTED: 'Signature Requested', ENCRYPTION_PUBLIC_KEY_REQUESTED: 'Encryption Public Key Requested', DECRYPTION_REQUESTED: 'Decryption Requested', PERMISSIONS_REQUESTED: 'Permissions Requested', + SIGNATURE_REQUESTED: 'Signature Requested', + TOKEN_ADDED: 'Token Added', + TOKEN_DETECTED: 'Token Detected', + TOKEN_HIDDEN: 'Token Hidden', + TOKEN_IMPORT_CANCELED: 'Token Import Canceled', + TOKEN_IMPORT_CLICKED: 'Token Import Clicked', +}; + +export const EVENT = { + CATEGORIES: { + ACCOUNTS: 'Accounts', + AUTH: 'Auth', + BACKGROUND: 'Background', + INPAGE_PROVIDER: 'inpage_provider', + MESSAGES: 'Messages', + NAVIGATION: 'Navigation', + NETWORK: 'Network', + ONBOARDING: 'Onboarding', + RETENTION: 'Retention', + SETTINGS: 'Settings', + SNAPS: 'Snaps', + SWAPS: 'Swaps', + TRANSACTIONS: 'Transactions', + WALLET: 'Wallet', + }, + SOURCE: { + SWAPS: { + MAIN_VIEW: 'Main View', + TOKEN_VIEW: 'Token View', + }, + TRANSACTION: { + USER: 'user', + DAPP: 'dapp', + }, + TOKEN: { + CUSTOM: 'custom', + DETECTED: 'detected', + DAPP: 'dapp', + LIST: 'list', + }, + }, + LOCATION: { + TOKEN_DETECTION: 'token_detection', + TOKEN_MENU: 'token_menu', + TOKEN_DETAILS: 'token_details', + }, }; diff --git a/shared/constants/network.js b/shared/constants/network.js index dd3d78684..11f7803a6 100644 --- a/shared/constants/network.js +++ b/shared/constants/network.js @@ -1,3 +1,5 @@ +import { capitalize } from 'lodash'; + export const ROPSTEN = 'ropsten'; export const RINKEBY = 'rinkeby'; export const KOVAN = 'kovan'; @@ -79,16 +81,45 @@ export const TEST_CHAINS = [ LOCALHOST_CHAIN_ID, ]; +export const TEST_NETWORK_TICKER_MAP = { + [ROPSTEN]: `${capitalize(ROPSTEN)}${ETH_SYMBOL}`, + [RINKEBY]: `${capitalize(RINKEBY)}${ETH_SYMBOL}`, + [KOVAN]: `${capitalize(KOVAN)}${ETH_SYMBOL}`, + [GOERLI]: `${capitalize(GOERLI)}${ETH_SYMBOL}`, +}; + /** - * Map of all build-in Infura networks to their network and chain IDs. + * Map of all build-in Infura networks to their network, ticker and chain IDs. */ export const NETWORK_TYPE_TO_ID_MAP = { - [ROPSTEN]: { networkId: ROPSTEN_NETWORK_ID, chainId: ROPSTEN_CHAIN_ID }, - [RINKEBY]: { networkId: RINKEBY_NETWORK_ID, chainId: RINKEBY_CHAIN_ID }, - [KOVAN]: { networkId: KOVAN_NETWORK_ID, chainId: KOVAN_CHAIN_ID }, - [GOERLI]: { networkId: GOERLI_NETWORK_ID, chainId: GOERLI_CHAIN_ID }, - [MAINNET]: { networkId: MAINNET_NETWORK_ID, chainId: MAINNET_CHAIN_ID }, - [LOCALHOST]: { networkId: LOCALHOST_NETWORK_ID, chainId: LOCALHOST_CHAIN_ID }, + [ROPSTEN]: { + networkId: ROPSTEN_NETWORK_ID, + chainId: ROPSTEN_CHAIN_ID, + ticker: TEST_NETWORK_TICKER_MAP[ROPSTEN], + }, + [RINKEBY]: { + networkId: RINKEBY_NETWORK_ID, + chainId: RINKEBY_CHAIN_ID, + ticker: TEST_NETWORK_TICKER_MAP[RINKEBY], + }, + [KOVAN]: { + networkId: KOVAN_NETWORK_ID, + chainId: KOVAN_CHAIN_ID, + ticker: TEST_NETWORK_TICKER_MAP[KOVAN], + }, + [GOERLI]: { + networkId: GOERLI_NETWORK_ID, + chainId: GOERLI_CHAIN_ID, + ticker: TEST_NETWORK_TICKER_MAP[GOERLI], + }, + [MAINNET]: { + networkId: MAINNET_NETWORK_ID, + chainId: MAINNET_CHAIN_ID, + }, + [LOCALHOST]: { + networkId: LOCALHOST_NETWORK_ID, + chainId: LOCALHOST_CHAIN_ID, + }, }; export const NETWORK_TO_NAME_MAP = { @@ -205,21 +236,26 @@ export const BUYABLE_CHAINS_MAP = { defaultCurrencyCode: 'eth', showOnlyCurrencies: 'eth,usdt,usdc,dai', }, + wyre: { + srn: 'ethereum', + currencyCode: ETH_SYMBOL, + }, + coinbasePayCurrencies: [ETH_SYMBOL, 'USDC', 'DAI'], }, [ROPSTEN_CHAIN_ID]: { - nativeCurrency: ETH_SYMBOL, + nativeCurrency: TEST_NETWORK_TICKER_MAP[ROPSTEN], network: BUYABLE_CHAIN_ETHEREUM_NETWORK_NAME, }, [RINKEBY_CHAIN_ID]: { - nativeCurrency: ETH_SYMBOL, + nativeCurrency: TEST_NETWORK_TICKER_MAP[RINKEBY], network: BUYABLE_CHAIN_ETHEREUM_NETWORK_NAME, }, [GOERLI_CHAIN_ID]: { - nativeCurrency: ETH_SYMBOL, + nativeCurrency: TEST_NETWORK_TICKER_MAP[GOERLI], network: BUYABLE_CHAIN_ETHEREUM_NETWORK_NAME, }, [KOVAN_CHAIN_ID]: { - nativeCurrency: ETH_SYMBOL, + nativeCurrency: TEST_NETWORK_TICKER_MAP[KOVAN], network: BUYABLE_CHAIN_ETHEREUM_NETWORK_NAME, }, [BSC_CHAIN_ID]: { @@ -239,6 +275,10 @@ export const BUYABLE_CHAINS_MAP = { defaultCurrencyCode: 'matic_polygon', showOnlyCurrencies: 'matic_polygon,usdc_polygon', }, + wyre: { + srn: 'matic', + currencyCode: MATIC_SYMBOL, + }, }, [AVALANCHE_CHAIN_ID]: { nativeCurrency: AVALANCHE_SYMBOL, @@ -248,6 +288,11 @@ export const BUYABLE_CHAINS_MAP = { defaultCurrencyCode: 'avax_cchain', showOnlyCurrencies: 'avax_cchain', }, + wyre: { + srn: 'avalanche', + currencyCode: AVALANCHE_SYMBOL, + }, + coinbasePayCurrencies: [AVALANCHE_SYMBOL], }, [FANTOM_CHAIN_ID]: { nativeCurrency: FANTOM_SYMBOL, diff --git a/shared/constants/permissions.js b/shared/constants/permissions.js index c1e4e69e7..77df6431f 100644 --- a/shared/constants/permissions.js +++ b/shared/constants/permissions.js @@ -21,6 +21,7 @@ export const PermissionNamespaces = Object.freeze({ export const EndowmentPermissions = Object.freeze({ 'endowment:network-access': 'endowment:network-access', + 'endowment:long-running': 'endowment:long-running', }); // Methods / permissions in external packages that we are temporarily excluding. diff --git a/shared/constants/permissions.test.js b/shared/constants/permissions.test.js index c6ace6243..3637fed58 100644 --- a/shared/constants/permissions.test.js +++ b/shared/constants/permissions.test.js @@ -1,4 +1,4 @@ -import { endowmentPermissionBuilders } from '@metamask/controllers'; +import { endowmentPermissionBuilders } from '@metamask/snap-controllers'; import { restrictedMethodPermissionBuilders } from '@metamask/rpc-methods'; import { EndowmentPermissions, diff --git a/shared/constants/smartTransactions.js b/shared/constants/smartTransactions.js new file mode 100644 index 000000000..a77d993c7 --- /dev/null +++ b/shared/constants/smartTransactions.js @@ -0,0 +1,5 @@ +import { SECOND } from './time'; + +export const FALLBACK_SMART_TRANSACTIONS_REFRESH_TIME = SECOND * 10; +export const FALLBACK_SMART_TRANSACTIONS_DEADLINE = 180; +export const FALLBACK_SMART_TRANSACTIONS_MAX_FEE_MULTIPLIER = 2; diff --git a/shared/constants/transaction.js b/shared/constants/transaction.js index 1e461f491..8cb365f79 100644 --- a/shared/constants/transaction.js +++ b/shared/constants/transaction.js @@ -9,6 +9,10 @@ import { MESSAGE_TYPE } from './app'; * @property {'transferfrom'} TOKEN_METHOD_TRANSFER_FROM - A token transaction * transferring tokens from an account that the sender has an allowance of. * For more information on allowances, see the approve type. + * @property {'safetransferfrom'} TOKEN_METHOD_SAFE_TRANSFER_FROM - A token transaction + * transferring tokens from an account that the sender has an allowance of. + * The method is prefixed with safe because when calling this method the contract checks + * to ensure that the receiver is an address capable of handling with the token being sent. * @property {'approve'} TOKEN_METHOD_APPROVE - A token transaction requesting an * allowance of the token to spend on behalf of the user * @property {'incoming'} INCOMING - An incoming (deposit) transaction @@ -45,23 +49,23 @@ import { MESSAGE_TYPE } from './app'; */ export const TRANSACTION_TYPES = { CANCEL: 'cancel', - RETRY: 'retry', - TOKEN_METHOD_TRANSFER: 'transfer', - TOKEN_METHOD_TRANSFER_FROM: 'transferfrom', - TOKEN_METHOD_SAFE_TRANSFER_FROM: 'safetransferfrom', - TOKEN_METHOD_APPROVE: 'approve', - INCOMING: 'incoming', - SIMPLE_SEND: 'simpleSend', CONTRACT_INTERACTION: 'contractInteraction', DEPLOY_CONTRACT: 'contractDeployment', - SWAP: 'swap', - SWAP_APPROVAL: 'swapApproval', - SMART: 'smart', - SIGN: MESSAGE_TYPE.ETH_SIGN, - SIGN_TYPED_DATA: MESSAGE_TYPE.ETH_SIGN_TYPED_DATA, - PERSONAL_SIGN: MESSAGE_TYPE.PERSONAL_SIGN, ETH_DECRYPT: MESSAGE_TYPE.ETH_DECRYPT, ETH_GET_ENCRYPTION_PUBLIC_KEY: MESSAGE_TYPE.ETH_GET_ENCRYPTION_PUBLIC_KEY, + INCOMING: 'incoming', + PERSONAL_SIGN: MESSAGE_TYPE.PERSONAL_SIGN, + RETRY: 'retry', + SIGN: MESSAGE_TYPE.ETH_SIGN, + SIGN_TYPED_DATA: MESSAGE_TYPE.ETH_SIGN_TYPED_DATA, + SIMPLE_SEND: 'simpleSend', + SMART: 'smart', + SWAP: 'swap', + SWAP_APPROVAL: 'swapApproval', + TOKEN_METHOD_APPROVE: 'approve', + TOKEN_METHOD_SAFE_TRANSFER_FROM: 'safetransferfrom', + TOKEN_METHOD_TRANSFER: 'transfer', + TOKEN_METHOD_TRANSFER_FROM: 'transferfrom', }; /** @@ -133,6 +137,17 @@ export const TRANSACTION_STATUSES = { PENDING: 'pending', }; +/** + * With this list we can detect if a transaction is still in progress. + */ +export const IN_PROGRESS_TRANSACTION_STATUSES = [ + TRANSACTION_STATUSES.UNAPPROVED, + TRANSACTION_STATUSES.APPROVED, + TRANSACTION_STATUSES.SIGNED, + TRANSACTION_STATUSES.SUBMITTED, + TRANSACTION_STATUSES.PENDING, +]; + /** * Transaction Group Status is a MetaMask construct to track the status of groups * of transactions. @@ -159,6 +174,7 @@ export const TRANSACTION_GROUP_STATUSES = { * @typedef {Object} SmartTransactionStatuses * @property {'cancelled'} CANCELLED - It can be cancelled for various reasons. * @property {'pending'} PENDING - Smart transaction is being processed. + * @property {'success'} SUCCESS - Smart transaction was successfully mined. */ /** @@ -198,10 +214,10 @@ export const SMART_TRANSACTION_STATUSES = { * @type {TransactionGroupCategories} */ export const TRANSACTION_GROUP_CATEGORIES = { - SEND: 'send', - RECEIVE: 'receive', - INTERACTION: 'interaction', APPROVAL: 'approval', + INTERACTION: 'interaction', + RECEIVE: 'receive', + SEND: 'send', SIGNATURE_REQUEST: 'signature-request', SWAP: 'swap', }; @@ -307,13 +323,28 @@ export const TRANSACTION_EVENTS = { SUBMITTED: 'Transaction Submitted', }; +/** + * @typedef {Object} AssetTypes + * @property {'NATIVE'} NATIVE - The native asset for the current network, such + * as ETH + * @property {'TOKEN'} TOKEN - An ERC20 token. + * @property {'COLLECTIBLE'} COLLECTIBLE - An ERC721 or ERC1155 token. + * @property {'UNKNOWN'} UNKNOWN - A transaction interacting with a contract + * that isn't a token method interaction will be marked as dealing with an + * unknown asset type. + */ + +/** + * This type will work anywhere you expect a string that can be one of the + * above asset types + * + * @typedef {AssetTypes[keyof AssetTypes]} AssetTypesString + */ + /** * The types of assets that a user can send - * 1. NATIVE - The native asset for the current network, such as ETH - * 2. TOKEN - An ERC20 token. - * 3. COLLECTIBLE - An ERC721 or ERC1155 token. - * 4. UNKNOWN - A transaction interacting with a contract that isn't a token - * method interaction will be marked as dealing with an unknown asset type. + * + * @type {AssetTypes} */ export const ASSET_TYPES = { NATIVE: 'NATIVE', diff --git a/shared/modules/mv3.utils.js b/shared/modules/mv3.utils.js new file mode 100644 index 000000000..a990075b6 --- /dev/null +++ b/shared/modules/mv3.utils.js @@ -0,0 +1,4 @@ +import browser from 'webextension-polyfill'; + +export const isManifestV3 = () => + browser.runtime.getManifest().manifest_version === 3; diff --git a/shared/notifications/index.js b/shared/notifications/index.js index 52e0662a4..65fc49fde 100644 --- a/shared/notifications/index.js +++ b/shared/notifications/index.js @@ -58,6 +58,14 @@ export const UI_NOTIFICATIONS = { id: 11, date: '2022-04-18', }, + 12: { + id: 12, + date: '2022-05-18', + image: { + src: 'images/darkmode-banner.png', + width: '100%', + }, + }, }; export const getTranslatedUINoficiations = (t, locale) => { @@ -165,5 +173,14 @@ export const getTranslatedUINoficiations = (t, locale) => { new Date(UI_NOTIFICATIONS[11].date), ), }, + 12: { + ...UI_NOTIFICATIONS[12], + title: t('notifications12Title'), + description: t('notifications12Description'), + actionText: t('notifications12ActionText'), + date: new Intl.DateTimeFormat(formattedLocale).format( + new Date(UI_NOTIFICATIONS[12].date), + ), + }, }; }; diff --git a/test/data/mock-pending-transaction-data.json b/test/data/mock-pending-transaction-data.json index 46c4452f5..62f072c10 100644 --- a/test/data/mock-pending-transaction-data.json +++ b/test/data/mock-pending-transaction-data.json @@ -19,7 +19,7 @@ "type": "0x2" }, "origin": "metamask", - "type": "sentEther", + "type": "simpleSend", "history": [ { "id": 6854191329910881, @@ -39,7 +39,7 @@ "type": "0x2" }, "origin": "metamask", - "type": "sentEther" + "type": "simpleSend" }, [ { @@ -95,7 +95,7 @@ "type": "0x2" }, "origin": "metamask", - "type": "sentEther", + "type": "simpleSend", "history": [ { "id": 6854191329910881, @@ -115,7 +115,7 @@ "type": "0x2" }, "origin": "metamask", - "type": "sentEther" + "type": "simpleSend" }, [ { @@ -172,7 +172,7 @@ "type": "0x2" }, "origin": "metamask", - "type": "sentEther", + "type": "simpleSend", "history": [ { "id": 6854191329910881, @@ -192,7 +192,7 @@ "type": "0x2" }, "origin": "metamask", - "type": "sentEther" + "type": "simpleSend" }, [ { diff --git a/test/data/mock-state.json b/test/data/mock-state.json index d856bb3b6..231f05069 100644 --- a/test/data/mock-state.json +++ b/test/data/mock-state.json @@ -37,6 +37,22 @@ "1559": true } }, + "notifications": { + "test": { + "id": "test", + "origin": "local:http://localhost:8086/", + "createdDate": 1652967897732, + "readDate": null, + "message": "Hello, http://localhost:8086!" + }, + "test2": { + "id": "test2", + "origin": "local:http://localhost:8086/", + "createdDate": 1652967897732, + "readDate": 1652967897732, + "message": "Hello, http://localhost:8086!" + } + }, "cachedBalances": {}, "incomingTransactions": {}, "unapprovedTxs": { diff --git a/test/data/transaction-data.json b/test/data/transaction-data.json index dbc1ec138..b3f2b05c5 100644 --- a/test/data/transaction-data.json +++ b/test/data/transaction-data.json @@ -798,5 +798,415 @@ }, "hasRetried": false, "hasCancelled": false + }, + { + "initialTransaction": { + "blockNumber": "6195527", + "id": 4243712234858468, + "metamaskNetworkId": "4", + "status": "confirmed", + "time": 1585088013000, + "txParams": { + "from": "0xee014609ef9e09776ac5fe00bdbfef57bcdefebb", + "gas": "0x5208", + "gasPrice": "0x77359400", + "nonce": "0x3", + "value": "0x00", + "data": "0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808190555061023b806100686000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632e1a7d4d1461005c5780638da5cb5b1461009d578063d0e30db0146100f4575b600080fd5b34801561006857600080fd5b5061008760048036038101908080359060200190929190505050610112565b6040518082815260200191505060405180910390f35b3480156100a957600080fd5b506100b26101d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100fc6101f6565b6040518082815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561017057600080fd5b8160008082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156101c5573d6000803e3d6000fd5b506000549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003460008082825401925050819055506000549050905600a165627a7a72305820f237db3ec816a52589d82512117bc85bc08d3537683ffeff9059108caf3e5d400029" + }, + "hash": "0xbcb195f393f4468945b4045cd41bcdbc2f19ad75ae92a32cf153a3004e42009a", + "type": "contractDeployment", + "origin": "https://metamask.github.io" + }, + "transactions": [ + { + "blockNumber": "6195527", + "id": 4243712234858468, + "metamaskNetworkId": "4", + "status": "confirmed", + "time": 1585088013000, + "txParams": { + "from": "0xee014609ef9e09776ac5fe00bdbfef57bcdefebb", + "gas": "0x5208", + "gasPrice": "0x77359400", + "nonce": "0x3", + "value": "0x00", + "data": "0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808190555061023b806100686000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632e1a7d4d1461005c5780638da5cb5b1461009d578063d0e30db0146100f4575b600080fd5b34801561006857600080fd5b5061008760048036038101908080359060200190929190505050610112565b6040518082815260200191505060405180910390f35b3480156100a957600080fd5b506100b26101d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100fc6101f6565b6040518082815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561017057600080fd5b8160008082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156101c5573d6000803e3d6000fd5b506000549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003460008082825401925050819055506000549050905600a165627a7a72305820f237db3ec816a52589d82512117bc85bc08d3537683ffeff9059108caf3e5d400029" + }, + "hash": "0xbcb195f393f4468945b4045cd41bcdbc2f19ad75ae92a32cf153a3004e42009a", + "type": "contractDeployment" + } + ], + "primaryTransaction": { + "blockNumber": "6195527", + "id": 4243712234858468, + "metamaskNetworkId": "4", + "status": "confirmed", + "time": 1585088013000, + "txParams": { + "from": "0xee014609ef9e09776ac5fe00bdbfef57bcdefebb", + "gas": "0x5208", + "gasPrice": "0x77359400", + "nonce": "0x3", + "value": "0x00", + "data": "0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808190555061023b806100686000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632e1a7d4d1461005c5780638da5cb5b1461009d578063d0e30db0146100f4575b600080fd5b34801561006857600080fd5b5061008760048036038101908080359060200190929190505050610112565b6040518082815260200191505060405180910390f35b3480156100a957600080fd5b506100b26101d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100fc6101f6565b6040518082815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561017057600080fd5b8160008082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156101c5573d6000803e3d6000fd5b506000549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003460008082825401925050819055506000549050905600a165627a7a72305820f237db3ec816a52589d82512117bc85bc08d3537683ffeff9059108caf3e5d400029" + }, + "hash": "0xbcb195f393f4468945b4045cd41bcdbc2f19ad75ae92a32cf153a3004e42009a", + "type": "contractDeployment" + }, + "hasRetried": false, + "hasCancelled": false + }, + { + "nonce": "0x57", + "transactions": [ + { + "id": 1441203963845330, + "time": 1652206763566, + "status": "confirmed", + "metamaskNetworkId": "4", + "originalGasEstimate": "0x118e0", + "userEditedGasLimit": false, + "chainId": "0x4", + "loadingDefaults": false, + "dappSuggestedGasFees": { + "maxPriorityFeePerGas": "0x3B9ACA00", + "maxFeePerGas": "0x7be830aec" + }, + "sendFlowHistory": [], + "txParams": { + "from": "0x806627172af48bd5b0765d3449a7def80d6576ff", + "to": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "nonce": "0x57", + "value": "0x0", + "data": "0x42842e0e000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98000000000000000000000000000000000000000000000000000000000009a7cc", + "gas": "0x118e0", + "maxFeePerGas": "0x7be830aec", + "maxPriorityFeePerGas": "0x3B9ACA00" + }, + "origin": "https://rinkeby.etherscan.io", + "type": "safetransferfrom", + "userFeeLevel": "dappSuggested", + "defaultGasEstimates": { + "estimateType": "dappSuggested", + "gas": "0x118e0", + "maxFeePerGas": "0x7be830aec", + "maxPriorityFeePerGas": "0x3B9ACA00" + }, + "estimatedBaseFee": "3ba182755", + "nonceDetails": { + "params": { + "highestLocallyConfirmed": 87, + "highestSuggested": 87, + "nextNetworkNonce": 87 + }, + "local": { + "name": "local", + "nonce": 87, + "details": { + "startPoint": 87, + "highest": 87 + } + }, + "network": { + "name": "network", + "nonce": 87, + "details": { + "blockNumber": "0xa28e38", + "baseCount": 87 + } + } + }, + "r": "0xd13310569a8d5876e37788183034bfe4bc3b49c0663c5fd9b2bf13adf9b4791c", + "s": "0x7a83d8840e7edcdf4fdedfd2bc1ce19775e54fd17f29ede5165591a1cf3febea", + "v": "0x00", + "rawTx": "0x02f8d10457843b9aca008507be830aec830118e094f5de760f2e916647fd766b4ad9e85ff943ce3a2b80b86442842e0e000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98000000000000000000000000000000000000000000000000000000000009a7ccc080a0d13310569a8d5876e37788183034bfe4bc3b49c0663c5fd9b2bf13adf9b4791ca07a83d8840e7edcdf4fdedfd2bc1ce19775e54fd17f29ede5165591a1cf3febea", + "hash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "submittedTime": 1652206777046, + "txReceipt": { + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "contractAddress": null, + "cumulativeGasUsed": "fd5dee", + "effectiveGasPrice": "0x4028dcaf1", + "from": "0x806627172af48bd5b0765d3449a7def80d6576ff", + "gasUsed": "bb40", + "logs": [ + { + "address": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "data": "0x", + "logIndex": "45", + "removed": false, + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000009a7cc" + ], + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23" + }, + { + "address": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "data": "0x", + "logIndex": "46", + "removed": false, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff", + "0x000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98", + "0x000000000000000000000000000000000000000000000000000000000009a7cc" + ], + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23" + } + ], + "logsBloom": "0x00000000000000001000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000008000200000000000000000000000000008000000000000000000008000000000000000000000000000020800000000000000000800000000000000000000000010000000000000000000000000000080000010000000000000000000000000000000000000020000000000000000000001000000000000000000000000000000000000000000000202000000000000000000000800000000000000000000000000000020000010000000000002008000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23", + "type": "0x2" + }, + "baseFeePerGas": "0x3c6f300f1", + "blockTimestamp": "627aacc2" + } + ], + "initialTransaction": { + "id": 1441203963845330, + "time": 1652206763566, + "status": "confirmed", + "metamaskNetworkId": "4", + "originalGasEstimate": "0x118e0", + "userEditedGasLimit": false, + "chainId": "0x4", + "loadingDefaults": false, + "dappSuggestedGasFees": { + "maxPriorityFeePerGas": "0x3B9ACA00", + "maxFeePerGas": "0x7be830aec" + }, + "sendFlowHistory": [], + "txParams": { + "from": "0x806627172af48bd5b0765d3449a7def80d6576ff", + "to": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "nonce": "0x57", + "value": "0x0", + "data": "0x42842e0e000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98000000000000000000000000000000000000000000000000000000000009a7cc", + "gas": "0x118e0", + "maxFeePerGas": "0x7be830aec", + "maxPriorityFeePerGas": "0x3B9ACA00" + }, + "origin": "https://rinkeby.etherscan.io", + "type": "safetransferfrom", + "userFeeLevel": "dappSuggested", + "defaultGasEstimates": { + "estimateType": "dappSuggested", + "gas": "0x118e0", + "maxFeePerGas": "0x7be830aec", + "maxPriorityFeePerGas": "0x3B9ACA00" + }, + "estimatedBaseFee": "3ba182755", + "nonceDetails": { + "params": { + "highestLocallyConfirmed": 87, + "highestSuggested": 87, + "nextNetworkNonce": 87 + }, + "local": { + "name": "local", + "nonce": 87, + "details": { + "startPoint": 87, + "highest": 87 + } + }, + "network": { + "name": "network", + "nonce": 87, + "details": { + "blockNumber": "0xa28e38", + "baseCount": 87 + } + } + }, + "r": "0xd13310569a8d5876e37788183034bfe4bc3b49c0663c5fd9b2bf13adf9b4791c", + "s": "0x7a83d8840e7edcdf4fdedfd2bc1ce19775e54fd17f29ede5165591a1cf3febea", + "v": "0x00", + "rawTx": "0x02f8d10457843b9aca008507be830aec830118e094f5de760f2e916647fd766b4ad9e85ff943ce3a2b80b86442842e0e000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98000000000000000000000000000000000000000000000000000000000009a7ccc080a0d13310569a8d5876e37788183034bfe4bc3b49c0663c5fd9b2bf13adf9b4791ca07a83d8840e7edcdf4fdedfd2bc1ce19775e54fd17f29ede5165591a1cf3febea", + "hash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "submittedTime": 1652206777046, + "txReceipt": { + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "contractAddress": null, + "cumulativeGasUsed": "fd5dee", + "effectiveGasPrice": "0x4028dcaf1", + "from": "0x806627172af48bd5b0765d3449a7def80d6576ff", + "gasUsed": "bb40", + "logs": [ + { + "address": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "data": "0x", + "logIndex": "45", + "removed": false, + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000009a7cc" + ], + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23" + }, + { + "address": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "data": "0x", + "logIndex": "46", + "removed": false, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff", + "0x000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98", + "0x000000000000000000000000000000000000000000000000000000000009a7cc" + ], + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23" + } + ], + "logsBloom": "0x00000000000000001000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000008000200000000000000000000000000008000000000000000000008000000000000000000000000000020800000000000000000800000000000000000000000010000000000000000000000000000080000010000000000000000000000000000000000000020000000000000000000001000000000000000000000000000000000000000000000202000000000000000000000800000000000000000000000000000020000010000000000002008000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23", + "type": "0x2" + }, + "baseFeePerGas": "0x3c6f300f1", + "blockTimestamp": "627aacc2" + }, + "primaryTransaction": { + "id": 1441203963845330, + "time": 1652206763566, + "status": "confirmed", + "metamaskNetworkId": "4", + "originalGasEstimate": "0x118e0", + "userEditedGasLimit": false, + "chainId": "0x4", + "loadingDefaults": false, + "dappSuggestedGasFees": { + "maxPriorityFeePerGas": "0x3B9ACA00", + "maxFeePerGas": "0x7be830aec" + }, + "sendFlowHistory": [], + "txParams": { + "from": "0x806627172af48bd5b0765d3449a7def80d6576ff", + "to": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "nonce": "0x57", + "value": "0x0", + "data": "0x42842e0e000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98000000000000000000000000000000000000000000000000000000000009a7cc", + "gas": "0x118e0", + "maxFeePerGas": "0x7be830aec", + "maxPriorityFeePerGas": "0x3B9ACA00" + }, + "origin": "https://rinkeby.etherscan.io", + "type": "safetransferfrom", + "userFeeLevel": "dappSuggested", + "defaultGasEstimates": { + "estimateType": "dappSuggested", + "gas": "0x118e0", + "maxFeePerGas": "0x7be830aec", + "maxPriorityFeePerGas": "0x3B9ACA00" + }, + "estimatedBaseFee": "3ba182755", + "nonceDetails": { + "params": { + "highestLocallyConfirmed": 87, + "highestSuggested": 87, + "nextNetworkNonce": 87 + }, + "local": { + "name": "local", + "nonce": 87, + "details": { + "startPoint": 87, + "highest": 87 + } + }, + "network": { + "name": "network", + "nonce": 87, + "details": { + "blockNumber": "0xa28e38", + "baseCount": 87 + } + } + }, + "r": "0xd13310569a8d5876e37788183034bfe4bc3b49c0663c5fd9b2bf13adf9b4791c", + "s": "0x7a83d8840e7edcdf4fdedfd2bc1ce19775e54fd17f29ede5165591a1cf3febea", + "v": "0x00", + "rawTx": "0x02f8d10457843b9aca008507be830aec830118e094f5de760f2e916647fd766b4ad9e85ff943ce3a2b80b86442842e0e000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98000000000000000000000000000000000000000000000000000000000009a7ccc080a0d13310569a8d5876e37788183034bfe4bc3b49c0663c5fd9b2bf13adf9b4791ca07a83d8840e7edcdf4fdedfd2bc1ce19775e54fd17f29ede5165591a1cf3febea", + "hash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "submittedTime": 1652206777046, + "txReceipt": { + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "contractAddress": null, + "cumulativeGasUsed": "fd5dee", + "effectiveGasPrice": "0x4028dcaf1", + "from": "0x806627172af48bd5b0765d3449a7def80d6576ff", + "gasUsed": "bb40", + "logs": [ + { + "address": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "data": "0x", + "logIndex": "45", + "removed": false, + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000009a7cc" + ], + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23" + }, + { + "address": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "blockHash": "0x75eb415f79d24f62821b979e3a5f0d4904b2381e973da5fadbddc046c701e3d1", + "blockNumber": "a28e39", + "data": "0x", + "logIndex": "46", + "removed": false, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000806627172af48bd5b0765d3449a7def80d6576ff", + "0x000000000000000000000000e7d522230eff653bb0a9b4385f0be0815420dd98", + "0x000000000000000000000000000000000000000000000000000000000009a7cc" + ], + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23" + } + ], + "logsBloom": "0x00000000000000001000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000008000200000000000000000000000000008000000000000000000008000000000000000000000000000020800000000000000000800000000000000000000000010000000000000000000000000000080000010000000000000000000000000000000000000020000000000000000000001000000000000000000000000000000000000000000000202000000000000000000000800000000000000000000000000000020000010000000000002008000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xf5de760f2e916647fd766b4ad9e85ff943ce3a2b", + "transactionHash": "0xe8717d7b075f8bb555cd4bb9846659a7dfba70dc017a84782a2d23d21f948ee3", + "transactionIndex": "23", + "type": "0x2" + }, + "baseFeePerGas": "0x3c6f300f1", + "blockTimestamp": "627aacc2" + }, + "hasRetried": false, + "hasCancelled": false } ] diff --git a/test/e2e/fixtures/address-entry/state.json b/test/e2e/fixtures/address-entry/state.json index 59da933e5..96b17cdb1 100644 --- a/test/e2e/fixtures/address-entry/state.json +++ b/test/e2e/fixtures/address-entry/state.json @@ -66,6 +66,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/connected-state/state.json b/test/e2e/fixtures/connected-state/state.json index ccc9ab82d..4d48df472 100644 --- a/test/e2e/fixtures/connected-state/state.json +++ b/test/e2e/fixtures/connected-state/state.json @@ -56,6 +56,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/custom-rpc/state.json b/test/e2e/fixtures/custom-rpc/state.json index 43319cd60..222eb0159 100644 --- a/test/e2e/fixtures/custom-rpc/state.json +++ b/test/e2e/fixtures/custom-rpc/state.json @@ -52,6 +52,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/custom-token/state.json b/test/e2e/fixtures/custom-token/state.json index da6098fcf..ae1fcd1b4 100644 --- a/test/e2e/fixtures/custom-token/state.json +++ b/test/e2e/fixtures/custom-token/state.json @@ -70,6 +70,9 @@ "notifications": { "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/eip-1559-v2-dapp/state.json b/test/e2e/fixtures/eip-1559-v2-dapp/state.json index 3e29d737e..839484240 100644 --- a/test/e2e/fixtures/eip-1559-v2-dapp/state.json +++ b/test/e2e/fixtures/eip-1559-v2-dapp/state.json @@ -53,6 +53,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/eip-1559-v2/state.json b/test/e2e/fixtures/eip-1559-v2/state.json index 452c896c3..0c79d8c61 100644 --- a/test/e2e/fixtures/eip-1559-v2/state.json +++ b/test/e2e/fixtures/eip-1559-v2/state.json @@ -53,6 +53,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/import-ui/state.json b/test/e2e/fixtures/import-ui/state.json index 75aa4e7da..20c6bf87c 100644 --- a/test/e2e/fixtures/import-ui/state.json +++ b/test/e2e/fixtures/import-ui/state.json @@ -107,6 +107,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/imported-account/state.json b/test/e2e/fixtures/imported-account/state.json index c6e2f4a8e..cb5c96950 100644 --- a/test/e2e/fixtures/imported-account/state.json +++ b/test/e2e/fixtures/imported-account/state.json @@ -52,6 +52,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/localization/state.json b/test/e2e/fixtures/localization/state.json index 952a3a502..4b32460b5 100644 --- a/test/e2e/fixtures/localization/state.json +++ b/test/e2e/fixtures/localization/state.json @@ -52,6 +52,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/metrics-enabled/state.json b/test/e2e/fixtures/metrics-enabled/state.json index 3b272611e..43b345204 100644 --- a/test/e2e/fixtures/metrics-enabled/state.json +++ b/test/e2e/fixtures/metrics-enabled/state.json @@ -56,6 +56,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/navigate-transactions/state.json b/test/e2e/fixtures/navigate-transactions/state.json index 6760e0d4f..1613c7f58 100644 --- a/test/e2e/fixtures/navigate-transactions/state.json +++ b/test/e2e/fixtures/navigate-transactions/state.json @@ -52,6 +52,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, @@ -386,6 +389,35 @@ } } }, + "PermissionsController": { + "permissionsRequests": [], + "permissionsDescriptions": {}, + "domains": { + "http://127.0.0.1:8080": { + "permissions": [ + { + "@context": ["https://github.com/MetaMask/rpc-cap"], + "parentCapability": "eth_accounts", + "id": "f55a1c15-ea48-4088-968e-63be474d42fa", + "date": 1594348332268, + "invoker": "http://127.0.0.1:8080", + "caveats": [ + { + "type": "limitResponseLength", + "value": 1, + "name": "primaryAccountOnly" + }, + { + "type": "filterResponse", + "value": ["0x5cfe73b6021e818b776b421b1c4db2474086a7e1"], + "name": "exposedAccounts" + } + ] + } + ] + } + } + }, "config": {}, "firstTimeInfo": { "date": 1575697234195, diff --git a/test/e2e/fixtures/onboarding/state.json b/test/e2e/fixtures/onboarding/state.json index b0fbccd9a..6a4c94b96 100644 --- a/test/e2e/fixtures/onboarding/state.json +++ b/test/e2e/fixtures/onboarding/state.json @@ -26,6 +26,13 @@ }, "network": "1337" }, + "NotificationController": { + "notifications": { + "12": { + "isShown": true + } + } + }, "CurrencyController": { "conversionDate": 1617927806.941, "conversionRate": 2084.64, diff --git a/test/e2e/fixtures/send-edit-v2/state.json b/test/e2e/fixtures/send-edit-v2/state.json index fe1a4390c..9de073c00 100644 --- a/test/e2e/fixtures/send-edit-v2/state.json +++ b/test/e2e/fixtures/send-edit-v2/state.json @@ -53,6 +53,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/send-edit/state.json b/test/e2e/fixtures/send-edit/state.json index f538e00bf..1272fbd04 100644 --- a/test/e2e/fixtures/send-edit/state.json +++ b/test/e2e/fixtures/send-edit/state.json @@ -53,6 +53,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/fixtures/threebox-enabled/state.json b/test/e2e/fixtures/threebox-enabled/state.json index 565e8a122..78b6f1226 100644 --- a/test/e2e/fixtures/threebox-enabled/state.json +++ b/test/e2e/fixtures/threebox-enabled/state.json @@ -63,6 +63,9 @@ }, "8": { "isShown": true + }, + "12": { + "isShown": true } } }, diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index 1b611b989..cd05e38e0 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -267,6 +267,47 @@ const completeImportSRPOnboardingFlow = async ( } }; +const completeImportSRPOnboardingFlowWordByWord = async ( + driver, + seedPhrase, + password, +) => { + // clicks the continue button on the welcome screen + await driver.findElement('.welcome-page__header'); + await driver.clickElement({ + text: enLocaleMessages.getStarted.message, + tag: 'button', + }); + + // clicks the "Import Wallet" option + await driver.clickElement({ text: 'Import wallet', tag: 'button' }); + + // clicks the "No thanks" option on the metametrics opt-in screen + await driver.clickElement('.btn-secondary'); + + const words = seedPhrase.split(' '); + for (const word of words) { + await driver.pasteIntoField( + `[data-testid="import-srp__srp-word-${words.indexOf(word)}"]`, + word, + ); + } + + await driver.fill('#password', password); + await driver.fill('#confirm-password', password); + + await driver.clickElement('[data-testid="create-new-vault__terms-checkbox"]'); + + await driver.clickElement({ text: 'Import', tag: 'button' }); + + // clicks through the success screen + await driver.findElement({ text: 'Congratulations', tag: 'div' }); + await driver.clickElement({ + text: enLocaleMessages.endOfFlowMessage10.message, + tag: 'button', + }); +}; + module.exports = { getWindowHandles, convertToHexValue, @@ -277,4 +318,5 @@ module.exports = { withFixtures, connectDappWithExtensionPopup, completeImportSRPOnboardingFlow, + completeImportSRPOnboardingFlowWordByWord, }; diff --git a/test/e2e/metamask-ui.spec.js b/test/e2e/metamask-ui.spec.js index 1733aa6f9..854b597a0 100644 --- a/test/e2e/metamask-ui.spec.js +++ b/test/e2e/metamask-ui.spec.js @@ -555,11 +555,6 @@ describe('MetaMask', function () { }); it('displays the token approval data', async function () { - await driver.clickElement( - '.confirm-approve-content__view-full-tx-button', - ); - await driver.delay(regularDelayMs); - const functionType = await driver.findElement( '.confirm-approve-content__data .confirm-approve-content__small-text', ); @@ -750,11 +745,6 @@ describe('MetaMask', function () { }); it('shows the correct recipient', async function () { - await driver.clickElement( - '.confirm-approve-content__view-full-tx-button', - ); - await driver.delay(regularDelayMs); - const permissionInfo = await driver.findElements( '.confirm-approve-content__medium-text', ); diff --git a/test/e2e/run-e2e-test.js b/test/e2e/run-e2e-test.js index 0a8b5e37c..195ec41b6 100644 --- a/test/e2e/run-e2e-test.js +++ b/test/e2e/run-e2e-test.js @@ -69,15 +69,19 @@ async function main() { throw error; } + let testTimeoutInMilliseconds = 60 * 1000; + if (leaveRunning) { process.env.E2E_LEAVE_RUNNING = 'true'; + testTimeoutInMilliseconds = 0; } await retry({ retries }, async () => { await runInShell('yarn', [ 'mocha', '--no-config', - '--no-timeouts', + '--timeout', + testTimeoutInMilliseconds, e2eTestPath, ]); }); diff --git a/test/e2e/snaps/enums.js b/test/e2e/snaps/enums.js new file mode 100644 index 000000000..8906b38d8 --- /dev/null +++ b/test/e2e/snaps/enums.js @@ -0,0 +1,3 @@ +module.exports = { + TEST_SNAPS_WEBSITE_URL: 'https://metamask.github.io/test-snaps/0.3.0', +}; diff --git a/test/e2e/snaps/test-snap-bip-44.spec.js b/test/e2e/snaps/test-snap-bip-44.spec.js new file mode 100644 index 000000000..e1529fd28 --- /dev/null +++ b/test/e2e/snaps/test-snap-bip-44.spec.js @@ -0,0 +1,95 @@ +const { strict: assert } = require('assert'); +const { withFixtures } = require('../helpers'); +const { TEST_SNAPS_WEBSITE_URL } = require('./enums'); + +describe('Test Snap bip-44', function () { + it('can pop up bip-44 snap and get private key result', async function () { + const ganacheOptions = { + accounts: [ + { + secretKey: + '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', + balance: 25000000000000000000, + }, + ], + }; + await withFixtures( + { + fixtures: 'imported-account', + ganacheOptions, + title: this.test.title, + driverOptions: { + type: 'flask', + }, + }, + async ({ driver }) => { + await driver.navigate(); + + // enter pw into extension + await driver.fill('#password', 'correct horse battery staple'); + await driver.press('#password', driver.Key.ENTER); + + // navigate to test snaps page and connect + await driver.driver.get(TEST_SNAPS_WEBSITE_URL); + await driver.fill('.snapId3', 'npm:@metamask/test-snap-bip44'); + await driver.clickElement({ + text: 'Connect BIP-44 Snap', + tag: 'button', + }); + + // switch to metamask extension and click connect + await driver.waitUntilXWindowHandles(2, 5000, 10000); + let windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle( + 'MetaMask Notification', + windowHandles, + ); + await driver.clickElement( + { + text: 'Connect', + tag: 'button', + }, + 10000, + ); + + await driver.delay(2000); + + // approve install of snap + await driver.waitUntilXWindowHandles(2, 5000, 10000); + windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle( + 'MetaMask Notification', + windowHandles, + ); + await driver.clickElement({ + text: 'Approve & Install', + tag: 'button', + }); + // deal with permissions popover + await driver.delay(1000); + await driver.press('#warning-accept', driver.Key.SPACE); + await driver.clickElement({ + text: 'Confirm', + tag: 'button', + }); + + // click send inputs on test snap page + await driver.waitUntilXWindowHandles(1, 5000, 10000); + windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle('Test Snaps', windowHandles); + await driver.clickElement({ + text: 'Send Test to BIP-44 Snap', + tag: 'button', + }); + + // check the results of the public key test + await driver.delay(2000); + const bip44Result = await driver.findElement('.bip44Result'); + assert.equal( + await bip44Result.getText(), + 'Public key: "0x86debb44fb3a984d93f326131d4c1db0bc39644f1a67b673b3ab45941a1cea6a385981755185ac4594b6521e4d1e8d1"', + ); + }, + ); + }); +}); diff --git a/test/e2e/snaps/test-snap-confirm.spec.js b/test/e2e/snaps/test-snap-confirm.spec.js index 2100c2ff5..ba5212e85 100644 --- a/test/e2e/snaps/test-snap-confirm.spec.js +++ b/test/e2e/snaps/test-snap-confirm.spec.js @@ -1,5 +1,6 @@ const { strict: assert } = require('assert'); const { withFixtures } = require('../helpers'); +const { TEST_SNAPS_WEBSITE_URL } = require('./enums'); describe('Test Snap Confirm', function () { it('can pop up a snap confirm and get its result', async function () { @@ -29,8 +30,8 @@ describe('Test Snap Confirm', function () { await driver.press('#password', driver.Key.ENTER); // navigate to test snaps page and connect - await driver.driver.get('https://metamask.github.io/test-snaps/'); - await driver.fill('.snapId', 'npm:@metamask/test-snap-confirm'); + await driver.driver.get(TEST_SNAPS_WEBSITE_URL); + await driver.fill('.snapId1', 'npm:@metamask/test-snap-confirm'); await driver.clickElement({ text: 'Connect To Confirm Snap', tag: 'button', @@ -69,10 +70,7 @@ describe('Test Snap Confirm', function () { await driver.waitUntilXWindowHandles(1, 5000, 10000); windowHandles = await driver.getAllWindowHandles(); await driver.switchToWindowWithTitle('Test Snaps', windowHandles); - await driver.clickElement({ - text: 'Send Inputs to Hello Snap', - tag: 'button', - }); + await driver.clickElement('.sendConfirmButton'); // hit 'approve' on the custom confirm await driver.waitUntilXWindowHandles(2, 5000, 10000); @@ -90,7 +88,7 @@ describe('Test Snap Confirm', function () { await driver.waitUntilXWindowHandles(1, 5000, 10000); windowHandles = await driver.getAllWindowHandles(); await driver.switchToWindowWithTitle('Test Snaps', windowHandles); - const confirmResult = await driver.findElement('.sendResults'); + const confirmResult = await driver.findElement('.confirmResult'); assert.equal(await confirmResult.getText(), 'true'); }, ); diff --git a/test/e2e/snaps/test-snap-error.spec.js b/test/e2e/snaps/test-snap-error.spec.js index 91ebd2ce1..e8fcb49c1 100644 --- a/test/e2e/snaps/test-snap-error.spec.js +++ b/test/e2e/snaps/test-snap-error.spec.js @@ -1,6 +1,7 @@ const { strict: assert } = require('assert'); const { withFixtures } = require('../helpers'); const { PAGES } = require('../webdriver/driver'); +const { TEST_SNAPS_WEBSITE_URL } = require('./enums'); describe('Test Snap Error', function () { it('can pop up a snap error and see the error', async function () { @@ -28,7 +29,7 @@ describe('Test Snap Error', function () { await driver.press('#password', driver.Key.ENTER); // navigate to test snaps page and connect - await driver.driver.get('https://metamask.github.io/test-snaps/'); + await driver.driver.get(TEST_SNAPS_WEBSITE_URL); await driver.fill('.snapId2', 'npm:@metamask/test-snap-error'); await driver.clickElement({ text: 'Connect Error Snap', diff --git a/test/e2e/snaps/test-snap-managestate.spec.js b/test/e2e/snaps/test-snap-managestate.spec.js new file mode 100644 index 000000000..fbf2ec76c --- /dev/null +++ b/test/e2e/snaps/test-snap-managestate.spec.js @@ -0,0 +1,142 @@ +const { strict: assert } = require('assert'); +const { withFixtures } = require('../helpers'); +const { TEST_SNAPS_WEBSITE_URL } = require('./enums'); + +describe('Test Snap manageState', function () { + it('can pop up manageState snap and do update get and clear', async function () { + const ganacheOptions = { + accounts: [ + { + secretKey: + '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', + balance: 25000000000000000000, + }, + ], + }; + await withFixtures( + { + fixtures: 'imported-account', + ganacheOptions, + title: this.test.title, + driverOptions: { + type: 'flask', + }, + }, + async ({ driver }) => { + await driver.navigate(); + + // enter pw into extension + await driver.fill('#password', 'correct horse battery staple'); + await driver.press('#password', driver.Key.ENTER); + + // navigate to test snaps page and connect + await driver.driver.get(TEST_SNAPS_WEBSITE_URL); + await driver.fill('.snapId3', 'npm:@metamask/test-snap-managestate'); + await driver.clickElement({ + text: 'Connect manageState Snap', + tag: 'button', + }); + + // switch to metamask extension and click connect + await driver.waitUntilXWindowHandles(2, 5000, 10000); + let windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle( + 'MetaMask Notification', + windowHandles, + ); + await driver.clickElement( + { + text: 'Connect', + tag: 'button', + }, + 10000, + ); + + await driver.delay(2000); + + // approve install of snap + await driver.waitUntilXWindowHandles(2, 5000, 10000); + windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle( + 'MetaMask Notification', + windowHandles, + ); + await driver.clickElement({ + text: 'Approve & Install', + tag: 'button', + }); + + // fill and click send inputs on test snap page + await driver.waitUntilXWindowHandles(1, 5000, 10000); + windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle('Test Snaps', windowHandles); + await driver.fill('.dataManageState', '23'); + await driver.clickElement({ + text: 'Send data to manageState Snap', + tag: 'button', + }); + + // check the results of the public key test + await driver.delay(2000); + const manageStateResult = await driver.findElement( + '.sendManageStateResult', + ); + assert.equal(await manageStateResult.getText(), 'true'); + + // click get results + await driver.waitUntilXWindowHandles(1, 5000, 10000); + windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle('Test Snaps', windowHandles); + await driver.clickElement({ + text: 'Get data from manageState Snap', + tag: 'button', + }); + + // check the results + await driver.delay(2000); + const retrieveManageStateResult = await driver.findElement( + '.retrieveManageStateResult', + ); + assert.equal( + await retrieveManageStateResult.getText(), + '{"testState":["23"]}', + ); + + // click clear results + await driver.waitUntilXWindowHandles(1, 5000, 10000); + windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle('Test Snaps', windowHandles); + await driver.clickElement({ + text: 'Clear data of manageState Snap', + tag: 'button', + }); + + // check if true + await driver.delay(2000); + const clearManageStateResult = await driver.findElement( + '.clearManageStateResult', + ); + assert.equal(await clearManageStateResult.getText(), 'true'); + + // click get results again + await driver.waitUntilXWindowHandles(1, 5000, 10000); + windowHandles = await driver.getAllWindowHandles(); + await driver.switchToWindowWithTitle('Test Snaps', windowHandles); + await driver.clickElement({ + text: 'Get data from manageState Snap', + tag: 'button', + }); + + // check result array is empty + await driver.delay(2000); + const retrieveManageStateResult2 = await driver.findElement( + '.retrieveManageStateResult', + ); + assert.equal( + await retrieveManageStateResult2.getText(), + '{"testState":[]}', + ); + }, + ); + }); +}); diff --git a/test/e2e/tests/auto-lock.spec.js b/test/e2e/tests/auto-lock.spec.js new file mode 100644 index 000000000..dc27466d7 --- /dev/null +++ b/test/e2e/tests/auto-lock.spec.js @@ -0,0 +1,53 @@ +const { strict: assert } = require('assert'); +const { convertToHexValue, withFixtures } = require('../helpers'); + +describe('Auto-Lock Timer', function () { + const ganacheOptions = { + accounts: [ + { + secretKey: + '0x53CB0AB5226EEBF4D872113D98332C1555DC304443BEE1CF759D15798D3C55A9', + balance: convertToHexValue(25000000000000000000), + }, + ], + }; + + it('should automatically lock the wallet once the idle time has elapsed', async function () { + await withFixtures( + { + fixtures: 'imported-account', + ganacheOptions, + title: this.test.title, + }, + async ({ driver }) => { + await driver.navigate(); + await driver.fill('#password', 'correct horse battery staple'); + await driver.press('#password', driver.Key.ENTER); + // Set Auto Lock Timer + await driver.clickElement('.account-menu__icon'); + await driver.clickElement({ text: 'Settings', tag: 'div' }); + await driver.clickElement({ text: 'Advanced', tag: 'div' }); + const sixSecsInMins = '0.1'; + const autoLockTimerInput = await driver.findElement( + '[data-testid="advanced-setting-auto-lock"] input', + ); + await driver.scrollToElement(autoLockTimerInput); + await autoLockTimerInput.fill(10081); + await driver.waitForSelector({ + css: '#autoTimeout-helper-text', + text: 'Lock time is too great', + }); + await autoLockTimerInput.fill(sixSecsInMins); + await driver.assertElementNotPresent('#autoTimeout-helper-text'); + await driver.clickElement( + '[data-testid="advanced-setting-auto-lock"] button', + ); + // Verify the wallet is loccked + const pageTitle = await driver.findElement('.unlock-page__title'); + const unlockButton = await driver.findElement('.unlock-page button'); + assert.equal(await pageTitle.getText(), 'Welcome Back!'); + assert.equal(await unlockButton.isDisplayed(), true); + }, + ); + }); +}); diff --git a/test/e2e/tests/contract-interactions.spec.js b/test/e2e/tests/contract-interactions.spec.js index e8edd9107..db70f0845 100644 --- a/test/e2e/tests/contract-interactions.spec.js +++ b/test/e2e/tests/contract-interactions.spec.js @@ -1,9 +1,5 @@ const { strict: assert } = require('assert'); -const { - convertToHexValue, - withFixtures, - regularDelayMs, -} = require('../helpers'); +const { convertToHexValue, withFixtures } = require('../helpers'); describe('Deploy contract and call contract methods', function () { const ganacheOptions = { @@ -19,7 +15,7 @@ describe('Deploy contract and call contract methods', function () { await withFixtures( { dapp: true, - fixtures: 'imported-account', + fixtures: 'connected-state', ganacheOptions, title: this.test.title, }, @@ -28,32 +24,17 @@ describe('Deploy contract and call contract methods', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - // connects the dapp + // deploy contract await driver.openNewPage('http://127.0.0.1:8080/'); - await driver.clickElement({ text: 'Connect', tag: 'button' }); + await driver.clickElement('#deployButton'); await driver.waitUntilXWindowHandles(3); - await driver.delay(5000); let windowHandles = await driver.getAllWindowHandles(); const extension = windowHandles[0]; const dapp = await driver.switchToWindowWithTitle( 'E2E Test Dapp', windowHandles, ); - const popup = windowHandles.find( - (handle) => handle !== extension && handle !== dapp, - ); - await driver.switchToWindow(popup); - await driver.clickElement({ text: 'Next', tag: 'button' }); - await driver.clickElement({ text: 'Connect', tag: 'button' }); - await driver.waitUntilXWindowHandles(2); - - // creates a deploy contract transaction - await driver.switchToWindow(dapp); - await driver.clickElement('#deployButton'); - // displays the contract creation data - await driver.waitUntilXWindowHandles(3); - windowHandles = await driver.getAllWindowHandles(); await driver.switchToWindowWithTitle( 'MetaMask Notification', windowHandles, @@ -87,13 +68,15 @@ describe('Deploy contract and call contract methods', function () { await driver.switchToWindow(dapp); await driver.clickElement('#depositButton'); await driver.waitUntilXWindowHandles(3); - await driver.delay(5000); windowHandles = await driver.getAllWindowHandles(); await driver.switchToWindowWithTitle( 'MetaMask Notification', windowHandles, ); - await driver.delay(regularDelayMs); + await driver.waitForSelector({ + css: '.confirm-page-container-summary__action__name', + text: 'Deposit', + }); await driver.clickElement({ text: 'Confirm', tag: 'button' }); await driver.waitUntilXWindowHandles(2); await driver.switchToWindow(extension); @@ -113,13 +96,15 @@ describe('Deploy contract and call contract methods', function () { await driver.switchToWindow(dapp); await driver.clickElement('#withdrawButton'); await driver.waitUntilXWindowHandles(3); - await driver.delay(5000); windowHandles = await driver.getAllWindowHandles(); await driver.switchToWindowWithTitle( 'MetaMask Notification', windowHandles, ); - await driver.delay(regularDelayMs); + await driver.waitForSelector({ + css: '.confirm-page-container-summary__action__name', + text: 'Withdraw', + }); await driver.clickElement({ text: 'Confirm', tag: 'button' }); await driver.waitUntilXWindowHandles(2); await driver.switchToWindow(extension); diff --git a/test/e2e/tests/custom-rpc-history.spec.js b/test/e2e/tests/custom-rpc-history.spec.js index 49dd59059..dad19482c 100644 --- a/test/e2e/tests/custom-rpc-history.spec.js +++ b/test/e2e/tests/custom-rpc-history.spec.js @@ -1,5 +1,5 @@ const { strict: assert } = require('assert'); -const { convertToHexValue, withFixtures } = require('../helpers'); +const { convertToHexValue, withFixtures, largeDelayMs } = require('../helpers'); describe('Stores custom RPC history', function () { const ganacheOptions = { @@ -29,6 +29,8 @@ describe('Stores custom RPC history', function () { const rpcUrl = `http://127.0.0.1:${port}`; const networkName = 'Secondary Ganache Testnet'; + await driver.delay(largeDelayMs); + await driver.clickElement('.network-display'); await driver.clickElement({ text: 'Add Network', tag: 'button' }); @@ -77,6 +79,8 @@ describe('Stores custom RPC history', function () { // duplicate network const duplicateRpcUrl = 'https://mainnet.infura.io/v3/'; + await driver.delay(largeDelayMs); + await driver.clickElement('.network-display'); await driver.clickElement({ text: 'Add Network', tag: 'button' }); @@ -113,6 +117,8 @@ describe('Stores custom RPC history', function () { const newRpcUrl = 'http://localhost:8544'; const duplicateChainId = '0x539'; + await driver.delay(largeDelayMs); + await driver.clickElement('.network-display'); await driver.clickElement({ text: 'Add Network', tag: 'button' }); @@ -154,6 +160,8 @@ describe('Stores custom RPC history', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); + await driver.delay(largeDelayMs); + await driver.clickElement('.network-display'); await driver.clickElement({ text: 'Ethereum Mainnet', tag: 'span' }); @@ -173,6 +181,7 @@ describe('Stores custom RPC history', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); + await driver.delay(largeDelayMs); await driver.clickElement('.network-display'); // only recent 3 are found and in correct order (most recent at the top) @@ -202,6 +211,7 @@ describe('Stores custom RPC history', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); + await driver.delay(largeDelayMs); await driver.clickElement('.network-display'); await driver.clickElement({ text: 'Add Network', tag: 'button' }); diff --git a/test/e2e/tests/edit-gas-fee.spec.js b/test/e2e/tests/edit-gas-fee.spec.js index 44d21889b..368cc712b 100644 --- a/test/e2e/tests/edit-gas-fee.spec.js +++ b/test/e2e/tests/edit-gas-fee.spec.js @@ -3,9 +3,7 @@ const { convertToHexValue, connectDappWithExtensionPopup, getWindowHandles, - largeDelayMs, withFixtures, - regularDelayMs, } = require('../helpers'); describe('Editing Confirm Transaction', function () { @@ -69,7 +67,6 @@ describe('Editing Confirm Transaction', function () { // confirms the transaction await driver.clickElement({ text: 'Confirm', tag: 'button' }); - await driver.delay(regularDelayMs); await driver.clickElement('[data-testid="home__activity-tab"]'); await driver.wait(async () => { @@ -124,55 +121,35 @@ describe('Editing Confirm Transaction', function () { tag: 'span', }); await driver.clickElement('[data-testid="edit-gas-fee-item-custom"]'); - await driver.delay(regularDelayMs); // enter max fee - const maxBaseFee = await driver.findElement( - '[data-testid="base-fee-input"]', - ); - await maxBaseFee.clear(); - await maxBaseFee.sendKeys('8'); - await driver.delay(regularDelayMs); + await driver.fill('[data-testid="base-fee-input"]', '8'); // enter priority fee - const priorityFee = await driver.findElement( - '[data-testid="priority-fee-input"]', - ); - await priorityFee.clear(); - await priorityFee.sendKeys('8'); - await driver.delay(regularDelayMs); + await driver.fill('[data-testid="priority-fee-input"]', '8'); // save default values await driver.clickElement('input[type="checkbox"]'); - await driver.delay(regularDelayMs); // edit gas limit await driver.clickElement('[data-testid="advanced-gas-fee-edit"]'); - await driver.delay(regularDelayMs); - const gasLimit = await driver.findElement( - '[data-testid="gas-limit-input"]', - ); - await gasLimit.clear(); - await gasLimit.sendKeys('100000'); - await driver.delay(regularDelayMs); + await driver.fill('[data-testid="gas-limit-input"]', '100000'); // Submit gas fee changes await driver.clickElement({ text: 'Save', tag: 'button' }); - await driver.delay(largeDelayMs); // has correct updated value on the confirm screen the transaction - const editedTransactionAmounts = await driver.findElements( - '.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type', - ); - const editedTransactionAmount = editedTransactionAmounts[0]; - assert.equal(await editedTransactionAmount.getText(), '0.0008'); - - const editedTransactionFee = editedTransactionAmounts[1]; - assert.equal(await editedTransactionFee.getText(), '2.2008'); + await driver.waitForSelector({ + css: '.transaction-detail-item:nth-of-type(1) h6:nth-of-type(2)', + text: '0.0008 ETH', + }); + await driver.waitForSelector({ + css: '.transaction-detail-item:nth-of-type(2) h6:nth-of-type(2)', + text: '2.2008 ETH', + }); // confirms the transaction await driver.clickElement({ text: 'Confirm', tag: 'button' }); - await driver.delay(regularDelayMs); await driver.clickElement('[data-testid="home__activity-tab"]'); await driver.wait(async () => { @@ -226,7 +203,6 @@ describe('Editing Confirm Transaction', function () { // check transaction in extension popup const windowHandles = await getWindowHandles(driver, 3); await driver.switchToWindow(windowHandles.popup); - await driver.delay(largeDelayMs); await driver.waitForSelector({ text: '🌐' }); await driver.waitForSelector({ text: 'Site suggested', @@ -240,7 +216,6 @@ describe('Editing Confirm Transaction', function () { await driver.clickElement( '[data-testid="edit-gas-fee-item-dappSuggested"]', ); - await driver.delay(regularDelayMs); const transactionAmounts = await driver.findElements( '.currency-display-component__text', @@ -260,7 +235,6 @@ describe('Editing Confirm Transaction', function () { // confirms the transaction await driver.clickElement({ text: 'Confirm', tag: 'button' }); - await driver.delay(regularDelayMs); // transaction should correct values in activity tab await driver.switchToWindow(windowHandles.extension); diff --git a/test/e2e/tests/failing-contract.spec.js b/test/e2e/tests/failing-contract.spec.js index 603d0641e..50944c165 100644 --- a/test/e2e/tests/failing-contract.spec.js +++ b/test/e2e/tests/failing-contract.spec.js @@ -16,7 +16,7 @@ describe('Failing contract interaction ', function () { await withFixtures( { dapp: true, - fixtures: 'imported-account', + fixtures: 'connected-state', ganacheOptions, title: this.test.title, }, @@ -25,9 +25,9 @@ describe('Failing contract interaction ', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - // connects the dapp + // deploy contract await driver.openNewPage('http://127.0.0.1:8080/'); - await driver.clickElement({ text: 'Connect', tag: 'button' }); + await driver.clickElement('#deployFailingButton'); await driver.waitUntilXWindowHandles(3); let windowHandles = await driver.getAllWindowHandles(); const extension = windowHandles[0]; @@ -35,19 +35,6 @@ describe('Failing contract interaction ', function () { 'E2E Test Dapp', windowHandles, ); - const popup = windowHandles.find( - (handle) => handle !== extension && handle !== dapp, - ); - await driver.switchToWindow(popup); - await driver.clickElement({ text: 'Next', tag: 'button' }); - await driver.clickElement({ text: 'Connect', tag: 'button' }); - await driver.waitUntilXWindowHandles(2); - - // deploy contract - await driver.switchToWindow(dapp); - await driver.clickElement('#deployFailingButton'); - await driver.waitUntilXWindowHandles(3); - windowHandles = await driver.getAllWindowHandles(); await driver.switchToWindowWithTitle( 'MetaMask Notification', windowHandles, diff --git a/test/e2e/tests/from-import-ui.spec.js b/test/e2e/tests/from-import-ui.spec.js index dc31d1551..2b812e66d 100644 --- a/test/e2e/tests/from-import-ui.spec.js +++ b/test/e2e/tests/from-import-ui.spec.js @@ -6,6 +6,7 @@ const { regularDelayMs, largeDelayMs, completeImportSRPOnboardingFlow, + completeImportSRPOnboardingFlowWordByWord, } = require('../helpers'); describe('Metamask Import UI', function () { @@ -71,7 +72,8 @@ describe('Metamask Import UI', function () { await driver.press('#password', driver.Key.ENTER); // Create a new account - // switches to locakhost + // switches to localhost + await driver.delay(largeDelayMs); await driver.clickElement('.network-display'); await driver.clickElement({ text: 'Localhost', tag: 'span' }); @@ -126,6 +128,53 @@ describe('Metamask Import UI', function () { ); }); + it('Importing wallet using Secret Recovery Phrase with pasting word by word', async function () { + const ganacheOptions = { + accounts: [ + { + secretKey: + '0x53CB0AB5226EEBF4D872113D98332C1555DC304443BEE1CF759D15798D3C55A9', + balance: convertToHexValue(25000000000000000000), + }, + ], + }; + const testSeedPhrase = + 'forum vessel pink push lonely enact gentle tail admit parrot grunt dress'; + const testPassword = 'correct horse battery staple'; + const testAddress = '0x0Cc5261AB8cE458dc977078A3623E2BaDD27afD3'; + + await withFixtures( + { + fixtures: 'onboarding', + ganacheOptions, + title: this.test.title, + failOnConsoleError: false, + }, + async ({ driver }) => { + await driver.navigate(); + + await completeImportSRPOnboardingFlowWordByWord( + driver, + testSeedPhrase, + testPassword, + ); + + // Show account information + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); + await driver.clickElement( + '[data-testid="account-options-menu__account-details"]', + ); + await driver.findVisibleElement('.qr-code__wrapper'); + // shows the correct account address + const address = await driver.findElement('.qr-code__address'); + + assert.equal(await address.getText(), testAddress); + }, + ); + }); + it('Import Account using private key', async function () { const ganacheOptions = { accounts: [ diff --git a/test/e2e/tests/navigate-transactions.spec.js b/test/e2e/tests/navigate-transactions.spec.js index 64de4c7e8..4d02097f5 100644 --- a/test/e2e/tests/navigate-transactions.spec.js +++ b/test/e2e/tests/navigate-transactions.spec.js @@ -123,26 +123,12 @@ describe('Navigate transactions', function () { 'second transaction in focus', ); - // connects the dapp + // add transaction await driver.openNewPage('http://127.0.0.1:8080/'); - await driver.clickElement({ text: 'Connect', tag: 'button' }); + await driver.clickElement({ text: 'Send', tag: 'button' }); await driver.waitUntilXWindowHandles(3); const windowHandles = await driver.getAllWindowHandles(); const extension = windowHandles[0]; - const dapp = await driver.switchToWindowWithTitle( - 'E2E Test Dapp', - windowHandles, - ); - const popup = windowHandles.find( - (handle) => handle !== extension && handle !== dapp, - ); - await driver.switchToWindow(popup); - await driver.clickElement({ text: 'Next', tag: 'button' }); - await driver.clickElement({ text: 'Connect', tag: 'button' }); - - // add transaction - await driver.switchToWindow(dapp); - await driver.clickElement({ text: 'Send', tag: 'button' }); await driver.switchToWindow(extension); navigationElement = await driver.waitForSelector( { diff --git a/test/e2e/tests/send-edit.spec.js b/test/e2e/tests/send-edit.spec.js index 5c274acc2..8060392f2 100644 --- a/test/e2e/tests/send-edit.spec.js +++ b/test/e2e/tests/send-edit.spec.js @@ -1,11 +1,5 @@ const { strict: assert } = require('assert'); -const { - convertToHexValue, - withFixtures, - tinyDelayMs, - regularDelayMs, - largeDelayMs, -} = require('../helpers'); +const { convertToHexValue, withFixtures } = require('../helpers'); describe('Editing Confirm Transaction', function () { it('goes back from confirm page to edit eth value, gas price and gas limit', async function () { @@ -46,36 +40,27 @@ describe('Editing Confirm Transaction', function () { await driver.clickElement({ text: 'Next', tag: 'button' }); - await driver.delay(regularDelayMs); - await driver.clickElement({ text: 'Edit', tag: 'button' }); const [gasLimitInput, gasPriceInput] = await driver.findElements( 'input[type="number"]', ); - await gasPriceInput.fill('8'); - await driver.delay(tinyDelayMs); - await gasLimitInput.fill('100000'); - await driver.delay(largeDelayMs); - await driver.clickElement({ text: 'Save', tag: 'button' }); - await driver.delay(largeDelayMs); // has correct updated value on the confirm screen the transaction - const editedTransactionAmounts = await driver.findElements( - '.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type', - ); - const editedTransactionAmount = editedTransactionAmounts[0]; - assert.equal(await editedTransactionAmount.getText(), '0.0008'); - - const editedTransactionFee = editedTransactionAmounts[1]; - assert.equal(await editedTransactionFee.getText(), '2.2008'); + await driver.waitForSelector({ + css: '.transaction-detail-item:nth-of-type(1) h6:nth-of-type(2)', + text: '0.0008 ETH', + }); + await driver.waitForSelector({ + css: '.transaction-detail-item:nth-of-type(2) h6:nth-of-type(2)', + text: '2.2008 ETH', + }); // confirms the transaction await driver.clickElement({ text: 'Confirm', tag: 'button' }); - await driver.delay(regularDelayMs); await driver.clickElement('[data-testid="home__activity-tab"]'); await driver.wait(async () => { @@ -137,55 +122,34 @@ describe('Editing Confirm Transaction', function () { // open gas fee popover await driver.clickElement({ text: 'Edit', tag: 'button' }); - // show gas limit - await driver.clickElement('[data-testid="advanced-gas-fee-edit"]'); - await driver.delay(largeDelayMs); - // enter max fee - const maxBaseFee = await driver.findElement( - '[data-testid="base-fee-input"]', - ); - await maxBaseFee.clear(); - await maxBaseFee.sendKeys('8'); - await driver.delay(regularDelayMs); + await driver.fill('[data-testid="base-fee-input"]', '8'); // enter priority fee - const priorityFee = await driver.findElement( - '[data-testid="priority-fee-input"]', - ); - await priorityFee.clear(); - await priorityFee.sendKeys('8'); - await driver.delay(regularDelayMs); + await driver.fill('[data-testid="priority-fee-input"]', '8'); // edit gas limit - const gasLimit = await driver.findElement( - '[data-testid="gas-limit-input"]', - ); - await gasLimit.clear(); - await gasLimit.sendKeys('100000'); - await driver.delay(regularDelayMs); + await driver.clickElement('[data-testid="advanced-gas-fee-edit"]'); + await driver.fill('[data-testid="gas-limit-input"]', '100000'); // save default values await driver.clickElement('input[type="checkbox"]'); - await driver.delay(regularDelayMs); // Submit gas fee changes await driver.clickElement({ text: 'Save', tag: 'button' }); - await driver.delay(largeDelayMs); // has correct updated value on the confirm screen the transaction - const editedTransactionAmounts = await driver.findElements( - '.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type', - ); - const editedTransactionAmount = editedTransactionAmounts[0]; - assert.equal(await editedTransactionAmount.getText(), '0.0008'); - - const editedTransactionFee = editedTransactionAmounts[1]; - assert.equal(await editedTransactionFee.getText(), '2.2008'); + await driver.waitForSelector({ + css: '.transaction-detail-item:nth-of-type(1) h6:nth-of-type(2)', + text: '0.0008 ETH', + }); + await driver.waitForSelector({ + css: '.transaction-detail-item:nth-of-type(2) h6:nth-of-type(2)', + text: '2.2008 ETH', + }); // confirms the transaction await driver.clickElement({ text: 'Confirm', tag: 'button' }); - await driver.delay(regularDelayMs); await driver.clickElement('[data-testid="home__activity-tab"]'); await driver.wait(async () => { diff --git a/test/e2e/tests/send-eth.spec.js b/test/e2e/tests/send-eth.spec.js index b59f2cf4e..e34ab5731 100644 --- a/test/e2e/tests/send-eth.spec.js +++ b/test/e2e/tests/send-eth.spec.js @@ -1,9 +1,5 @@ const { strict: assert } = require('assert'); -const { - convertToHexValue, - withFixtures, - regularDelayMs, -} = require('../helpers'); +const { convertToHexValue, withFixtures } = require('../helpers'); describe('Send ETH from inside MetaMask using default gas', function () { const ganacheOptions = { @@ -47,7 +43,12 @@ describe('Send ETH from inside MetaMask using default gas', function () { await inputAmount.press(driver.Key.BACK_SPACE); await inputAmount.press(driver.Key.BACK_SPACE); await inputAmount.press(driver.Key.BACK_SPACE); - await driver.delay(regularDelayMs); + await driver.wait(async () => { + const sendDialogMsgs = await driver.findElements( + '.send-v2__form div.dialog', + ); + return sendDialogMsgs.length === 1; + }, 10000); await driver.assertElementNotPresent('.send-v2__error-amount'); @@ -158,10 +159,6 @@ describe('Send ETH from inside MetaMask using advanced gas modal', function () { }); describe('Send ETH from dapp using advanced gas controls', function () { - let windowHandles; - let extension; - let popup; - let dapp; const ganacheOptions = { accounts: [ { @@ -176,7 +173,7 @@ describe('Send ETH from dapp using advanced gas controls', function () { await withFixtures( { dapp: true, - fixtures: 'imported-account', + fixtures: 'connected-state', ganacheOptions, title: this.test.title, }, @@ -200,52 +197,44 @@ describe('Send ETH from dapp using advanced gas controls', function () { await driver.clickElement( '[data-testid="advanced-setting-advanced-gas-inline"] .settings-page__content-item-col > label > div', ); - windowHandles = await driver.getAllWindowHandles(); - extension = windowHandles[0]; - await driver.closeAllWindowHandlesExcept([extension]); await driver.clickElement('.app-header__logo-container'); - // connects the dapp - await driver.openNewPage('http://127.0.0.1:8080/'); - await driver.clickElement({ text: 'Connect', tag: 'button' }); - await driver.waitUntilXWindowHandles(3); - windowHandles = await driver.getAllWindowHandles(); - extension = windowHandles[0]; - dapp = await driver.switchToWindowWithTitle( - 'E2E Test Dapp', - windowHandles, - ); - popup = windowHandles.find( - (handle) => handle !== extension && handle !== dapp, - ); - await driver.switchToWindow(popup); - await driver.clickElement({ text: 'Next', tag: 'button' }); - await driver.clickElement({ text: 'Connect', tag: 'button' }); - await driver.waitUntilXWindowHandles(2); - await driver.switchToWindow(dapp); - // initiates a send from the dapp + await driver.openNewPage('http://127.0.0.1:8080/'); await driver.clickElement({ text: 'Send', tag: 'button' }); - await driver.delay(2000); - windowHandles = await driver.getAllWindowHandles(); + await driver.waitUntilXWindowHandles(3); + const windowHandles = await driver.getAllWindowHandles(); + const extension = windowHandles[0]; await driver.switchToWindowWithTitle( 'MetaMask Notification', windowHandles, ); await driver.assertElementNotPresent({ text: 'Data', tag: 'li' }); await driver.clickElement({ text: 'Edit', tag: 'button' }); - await driver.delay(1000); + await driver.waitForSelector({ + css: '.transaction-total-banner', + text: '0.00021 ETH', + }); await driver.clickElement( { text: 'Edit suggested gas fee', tag: 'button' }, 10000, ); - await driver.delay(1000); + await driver.waitForSelector({ + css: '.transaction-total-banner', + text: '0.00021 ETH', + }); const inputs = await driver.findElements('input[type="number"]'); const gasPriceInput = inputs[1]; await gasPriceInput.fill('100'); - await driver.delay(1000); + await driver.waitForSelector({ + css: '.transaction-total-banner', + text: '0.0021 ETH', + }); await driver.clickElement({ text: 'Save', tag: 'button' }); - await driver.delay(1000); + await driver.waitForSelector({ + css: '.transaction-detail-item:nth-of-type(1) h6:nth-of-type(2)', + text: '0.0021 ETH', + }); await driver.clickElement({ text: 'Confirm', tag: 'button' }); await driver.waitUntilXWindowHandles(2); await driver.switchToWindow(extension); diff --git a/test/e2e/webdriver/driver.js b/test/e2e/webdriver/driver.js index 6a90a44a4..630bd6683 100644 --- a/test/e2e/webdriver/driver.js +++ b/test/e2e/webdriver/driver.js @@ -15,7 +15,9 @@ function wrapElementWithAPI(element, driver) { element.press = (key) => element.sendKeys(key); element.fill = async (input) => { // The 'fill' method in playwright replaces existing input - await element.clear(); + await element.sendKeys( + Key.chord(driver.Key.MODIFIER, 'a', driver.Key.BACK_SPACE), + ); await element.sendKeys(input); }; element.waitForElementState = async (state, timeout) => { @@ -53,6 +55,10 @@ class Driver { this.Key = { BACK_SPACE: '\uE003', ENTER: '\uE007', + SPACE: '\uE00D', + CONTROL: '\uE009', + COMMAND: '\uE03D', + MODIFIER: process.platform === 'darwin' ? Key.COMMAND : Key.CONTROL, }; } @@ -274,9 +280,7 @@ class Driver { await this.executeScript( `navigator.clipboard.writeText("${contentToPaste}")`, ); - const modifierKey = - process.platform === 'darwin' ? Key.COMMAND : Key.CONTROL; - await this.fill(element, Key.chord(modifierKey, 'v')); + await this.fill(element, Key.chord(this.Key.MODIFIER, 'v')); } // Navigation diff --git a/test/helpers/setup-helper.js b/test/helpers/setup-helper.js index 75dfb8ea7..fb77e8ee6 100644 --- a/test/helpers/setup-helper.js +++ b/test/helpers/setup-helper.js @@ -70,6 +70,10 @@ Object.assign(window, { fetch, Headers, Request, Response }); window.localStorage = { removeItem: () => null, }; + +// used for native dark/light mode detection +window.matchMedia = () => true; + // override @metamask/logo window.requestAnimationFrame = () => undefined; diff --git a/test/jest/mock-store.js b/test/jest/mock-store.js index 443ccbe2c..2595746c0 100644 --- a/test/jest/mock-store.js +++ b/test/jest/mock-store.js @@ -2,51 +2,102 @@ import { MAINNET_CHAIN_ID } from '../../shared/constants/network'; const createGetSmartTransactionFeesApiResponse = () => { return { - cancelFees: [ - { maxFeePerGas: 2100001000, maxPriorityFeePerGas: 466503987 }, - { maxFeePerGas: 2310003200, maxPriorityFeePerGas: 513154852 }, - { maxFeePerGas: 2541005830, maxPriorityFeePerGas: 564470851 }, - { maxFeePerGas: 2795108954, maxPriorityFeePerGas: 620918500 }, - { maxFeePerGas: 3074622644, maxPriorityFeePerGas: 683010971 }, - { maxFeePerGas: 3382087983, maxPriorityFeePerGas: 751312751 }, - { maxFeePerGas: 3720300164, maxPriorityFeePerGas: 826444778 }, - { maxFeePerGas: 4092333900, maxPriorityFeePerGas: 909090082 }, - { maxFeePerGas: 4501571383, maxPriorityFeePerGas: 1000000000 }, - { maxFeePerGas: 4951733023, maxPriorityFeePerGas: 1100001000 }, - { maxFeePerGas: 5446911277, maxPriorityFeePerGas: 1210002200 }, - { maxFeePerGas: 5991607851, maxPriorityFeePerGas: 1331003630 }, - { maxFeePerGas: 6590774628, maxPriorityFeePerGas: 1464105324 }, - { maxFeePerGas: 7249858682, maxPriorityFeePerGas: 1610517320 }, - { maxFeePerGas: 7974851800, maxPriorityFeePerGas: 1771570663 }, - { maxFeePerGas: 8772344955, maxPriorityFeePerGas: 1948729500 }, - { maxFeePerGas: 9649588222, maxPriorityFeePerGas: 2143604399 }, - { maxFeePerGas: 10614556694, maxPriorityFeePerGas: 2357966983 }, - { maxFeePerGas: 11676022978, maxPriorityFeePerGas: 2593766039 }, - ], - feeEstimate: 42000000000000, - fees: [ - { maxFeePerGas: 2310003200, maxPriorityFeePerGas: 513154852 }, - { maxFeePerGas: 2541005830, maxPriorityFeePerGas: 564470850 }, - { maxFeePerGas: 2795108954, maxPriorityFeePerGas: 620918500 }, - { maxFeePerGas: 3074622644, maxPriorityFeePerGas: 683010970 }, - { maxFeePerGas: 3382087983, maxPriorityFeePerGas: 751312751 }, - { maxFeePerGas: 3720300163, maxPriorityFeePerGas: 826444777 }, - { maxFeePerGas: 4092333900, maxPriorityFeePerGas: 909090082 }, - { maxFeePerGas: 4501571382, maxPriorityFeePerGas: 999999999 }, - { maxFeePerGas: 4951733022, maxPriorityFeePerGas: 1100001000 }, - { maxFeePerGas: 5446911277, maxPriorityFeePerGas: 1210002200 }, - { maxFeePerGas: 5991607851, maxPriorityFeePerGas: 1331003630 }, - { maxFeePerGas: 6590774627, maxPriorityFeePerGas: 1464105324 }, - { maxFeePerGas: 7249858681, maxPriorityFeePerGas: 1610517320 }, - { maxFeePerGas: 7974851800, maxPriorityFeePerGas: 1771570662 }, - { maxFeePerGas: 8772344954, maxPriorityFeePerGas: 1948729500 }, - { maxFeePerGas: 9649588222, maxPriorityFeePerGas: 2143604398 }, - { maxFeePerGas: 10614556693, maxPriorityFeePerGas: 2357966982 }, - { maxFeePerGas: 11676022977, maxPriorityFeePerGas: 2593766039 }, - { maxFeePerGas: 12843636951, maxPriorityFeePerGas: 2853145236 }, - ], - gasLimit: 21000, - gasUsed: 21000, + tradeTxFees: { + // Approval tx. + cancelFees: [ + { maxFeePerGas: 2100001000, maxPriorityFeePerGas: 466503987 }, + { maxFeePerGas: 2310003200, maxPriorityFeePerGas: 513154852 }, + { maxFeePerGas: 2541005830, maxPriorityFeePerGas: 564470851 }, + { maxFeePerGas: 2795108954, maxPriorityFeePerGas: 620918500 }, + { maxFeePerGas: 3074622644, maxPriorityFeePerGas: 683010971 }, + { maxFeePerGas: 3382087983, maxPriorityFeePerGas: 751312751 }, + { maxFeePerGas: 3720300164, maxPriorityFeePerGas: 826444778 }, + { maxFeePerGas: 4092333900, maxPriorityFeePerGas: 909090082 }, + { maxFeePerGas: 4501571383, maxPriorityFeePerGas: 1000000000 }, + { maxFeePerGas: 4951733023, maxPriorityFeePerGas: 1100001000 }, + { maxFeePerGas: 5446911277, maxPriorityFeePerGas: 1210002200 }, + { maxFeePerGas: 5991607851, maxPriorityFeePerGas: 1331003630 }, + { maxFeePerGas: 6590774628, maxPriorityFeePerGas: 1464105324 }, + { maxFeePerGas: 7249858682, maxPriorityFeePerGas: 1610517320 }, + { maxFeePerGas: 7974851800, maxPriorityFeePerGas: 1771570663 }, + { maxFeePerGas: 8772344955, maxPriorityFeePerGas: 1948729500 }, + { maxFeePerGas: 9649588222, maxPriorityFeePerGas: 2143604399 }, + { maxFeePerGas: 10614556694, maxPriorityFeePerGas: 2357966983 }, + { maxFeePerGas: 11676022978, maxPriorityFeePerGas: 2593766039 }, + ], + feeEstimate: 42000000000000, + fees: [ + { maxFeePerGas: 2310003200, maxPriorityFeePerGas: 513154852 }, + { maxFeePerGas: 2541005830, maxPriorityFeePerGas: 564470850 }, + { maxFeePerGas: 2795108954, maxPriorityFeePerGas: 620918500 }, + { maxFeePerGas: 3074622644, maxPriorityFeePerGas: 683010970 }, + { maxFeePerGas: 3382087983, maxPriorityFeePerGas: 751312751 }, + { maxFeePerGas: 3720300163, maxPriorityFeePerGas: 826444777 }, + { maxFeePerGas: 4092333900, maxPriorityFeePerGas: 909090082 }, + { maxFeePerGas: 4501571382, maxPriorityFeePerGas: 999999999 }, + { maxFeePerGas: 4951733022, maxPriorityFeePerGas: 1100001000 }, + { maxFeePerGas: 5446911277, maxPriorityFeePerGas: 1210002200 }, + { maxFeePerGas: 5991607851, maxPriorityFeePerGas: 1331003630 }, + { maxFeePerGas: 6590774627, maxPriorityFeePerGas: 1464105324 }, + { maxFeePerGas: 7249858681, maxPriorityFeePerGas: 1610517320 }, + { maxFeePerGas: 7974851800, maxPriorityFeePerGas: 1771570662 }, + { maxFeePerGas: 8772344954, maxPriorityFeePerGas: 1948729500 }, + { maxFeePerGas: 9649588222, maxPriorityFeePerGas: 2143604398 }, + { maxFeePerGas: 10614556693, maxPriorityFeePerGas: 2357966982 }, + { maxFeePerGas: 11676022977, maxPriorityFeePerGas: 2593766039 }, + { maxFeePerGas: 12843636951, maxPriorityFeePerGas: 2853145236 }, + ], + gasLimit: 21000, + gasUsed: 21000, + }, + approvalTxFees: { + // Trade tx. + cancelFees: [ + { maxFeePerGas: 2100001000, maxPriorityFeePerGas: 466503987 }, + { maxFeePerGas: 2310003200, maxPriorityFeePerGas: 513154852 }, + { maxFeePerGas: 2541005830, maxPriorityFeePerGas: 564470851 }, + { maxFeePerGas: 2795108954, maxPriorityFeePerGas: 620918500 }, + { maxFeePerGas: 3074622644, maxPriorityFeePerGas: 683010971 }, + { maxFeePerGas: 3382087983, maxPriorityFeePerGas: 751312751 }, + { maxFeePerGas: 3720300164, maxPriorityFeePerGas: 826444778 }, + { maxFeePerGas: 4092333900, maxPriorityFeePerGas: 909090082 }, + { maxFeePerGas: 4501571383, maxPriorityFeePerGas: 1000000000 }, + { maxFeePerGas: 4951733023, maxPriorityFeePerGas: 1100001000 }, + { maxFeePerGas: 5446911277, maxPriorityFeePerGas: 1210002200 }, + { maxFeePerGas: 5991607851, maxPriorityFeePerGas: 1331003630 }, + { maxFeePerGas: 6590774628, maxPriorityFeePerGas: 1464105324 }, + { maxFeePerGas: 7249858682, maxPriorityFeePerGas: 1610517320 }, + { maxFeePerGas: 7974851800, maxPriorityFeePerGas: 1771570663 }, + { maxFeePerGas: 8772344955, maxPriorityFeePerGas: 1948729500 }, + { maxFeePerGas: 9649588222, maxPriorityFeePerGas: 2143604399 }, + { maxFeePerGas: 10614556694, maxPriorityFeePerGas: 2357966983 }, + { maxFeePerGas: 11676022978, maxPriorityFeePerGas: 2593766039 }, + ], + feeEstimate: 42000000000000, + fees: [ + { maxFeePerGas: 2310003200, maxPriorityFeePerGas: 513154852 }, + { maxFeePerGas: 2541005830, maxPriorityFeePerGas: 564470850 }, + { maxFeePerGas: 2795108954, maxPriorityFeePerGas: 620918500 }, + { maxFeePerGas: 3074622644, maxPriorityFeePerGas: 683010970 }, + { maxFeePerGas: 3382087983, maxPriorityFeePerGas: 751312751 }, + { maxFeePerGas: 3720300163, maxPriorityFeePerGas: 826444777 }, + { maxFeePerGas: 4092333900, maxPriorityFeePerGas: 909090082 }, + { maxFeePerGas: 4501571382, maxPriorityFeePerGas: 999999999 }, + { maxFeePerGas: 4951733022, maxPriorityFeePerGas: 1100001000 }, + { maxFeePerGas: 5446911277, maxPriorityFeePerGas: 1210002200 }, + { maxFeePerGas: 5991607851, maxPriorityFeePerGas: 1331003630 }, + { maxFeePerGas: 6590774627, maxPriorityFeePerGas: 1464105324 }, + { maxFeePerGas: 7249858681, maxPriorityFeePerGas: 1610517320 }, + { maxFeePerGas: 7974851800, maxPriorityFeePerGas: 1771570662 }, + { maxFeePerGas: 8772344954, maxPriorityFeePerGas: 1948729500 }, + { maxFeePerGas: 9649588222, maxPriorityFeePerGas: 2143604398 }, + { maxFeePerGas: 10614556693, maxPriorityFeePerGas: 2357966982 }, + { maxFeePerGas: 11676022977, maxPriorityFeePerGas: 2593766039 }, + { maxFeePerGas: 12843636951, maxPriorityFeePerGas: 2853145236 }, + ], + gasLimit: 21000, + gasUsed: 21000, + }, }; }; @@ -244,6 +295,7 @@ export const createSwapsMockStore = () => { fetchTime: 1354, aggregator: 'TEST_AGG_2', aggType: 'AGG', + isBestQuote: true, slippage: 2, sourceTokenInfo: { address: '0x6b175474e89094c44da98b954eedeac495271d0f', @@ -383,11 +435,6 @@ export const createSwapsMockStore = () => { }, ], }, - estimatedGas: { - txData: { - feeEstimate: 5435000587128155, - }, - }, }, }, appState: { diff --git a/ui/components/app/account-menu/account-menu.component.js b/ui/components/app/account-menu/account-menu.component.js index 5f542d99d..ada5e5577 100644 --- a/ui/components/app/account-menu/account-menu.component.js +++ b/ui/components/app/account-menu/account-menu.component.js @@ -5,6 +5,7 @@ import Fuse from 'fuse.js'; import InputAdornment from '@material-ui/core/InputAdornment'; import classnames from 'classnames'; import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { getEnvironmentType } from '../../../../app/scripts/lib/util'; import Identicon from '../../ui/identicon'; import SiteIcon from '../../ui/site-icon'; @@ -22,6 +23,9 @@ import { IMPORT_ACCOUNT_ROUTE, CONNECT_HARDWARE_ROUTE, DEFAULT_ROUTE, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + NOTIFICATIONS_ROUTE, + ///: END:ONLY_INCLUDE_IN } from '../../../helpers/constants/routes'; import TextField from '../../ui/text-field'; import SearchIcon from '../../ui/search-icon'; @@ -83,6 +87,9 @@ export default class AccountMenu extends Component { toggleAccountMenu: PropTypes.func, addressConnectedSubjectMap: PropTypes.object, originOfCurrentTab: PropTypes.string, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + unreadNotificationsCount: PropTypes.number, + ///: END:ONLY_INCLUDE_IN }; accountsRef; @@ -197,7 +204,7 @@ export default class AccountMenu extends Component { className="account-menu__account account-menu__item--clickable" onClick={() => { this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Switched Account', properties: { action: 'Main Menu', @@ -292,6 +299,9 @@ export default class AccountMenu extends Component { toggleAccountMenu, lockMetamask, history, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + unreadNotificationsCount, + ///: END:ONLY_INCLUDE_IN } = this.props; if (!isAccountMenuOpen) { @@ -340,7 +350,7 @@ export default class AccountMenu extends Component { onClick={() => { toggleAccountMenu(); trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Clicked Create Account', properties: { action: 'Main Menu', @@ -349,14 +359,14 @@ export default class AccountMenu extends Component { }); history.push(NEW_ACCOUNT_ROUTE); }} - icon={} + icon={} text={t('createAccount')} /> { toggleAccountMenu(); trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Clicked Import Account', properties: { action: 'Main Menu', @@ -367,7 +377,7 @@ export default class AccountMenu extends Component { }} icon={ } @@ -377,7 +387,7 @@ export default class AccountMenu extends Component { onClick={() => { toggleAccountMenu(); trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Clicked Connect Hardware', properties: { action: 'Main Menu', @@ -392,20 +402,47 @@ export default class AccountMenu extends Component { }} icon={ } text={t('connectHardwareWallet')} />
+ { + ///: BEGIN:ONLY_INCLUDE_IN(flask) + <> + { + toggleAccountMenu(); + history.push(NOTIFICATIONS_ROUTE); + }} + icon={ +
+ + {unreadNotificationsCount > 0 && ( +
+ {unreadNotificationsCount} +
+ )} +
+ } + text={t('notifications')} + /> +
+ + ///: END:ONLY_INCLUDE_IN + } { global.platform.openTab({ url: supportLink }); }} icon={ } @@ -417,7 +454,7 @@ export default class AccountMenu extends Component { toggleAccountMenu(); history.push(SETTINGS_ROUTE); this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Opened Settings', properties: { action: 'Main Menu', @@ -427,7 +464,7 @@ export default class AccountMenu extends Component { }} icon={ } diff --git a/ui/components/app/account-menu/account-menu.container.js b/ui/components/app/account-menu/account-menu.container.js index 936c05eb6..686270920 100644 --- a/ui/components/app/account-menu/account-menu.container.js +++ b/ui/components/app/account-menu/account-menu.container.js @@ -13,6 +13,9 @@ import { getMetaMaskKeyrings, getOriginOfCurrentTab, getSelectedAddress, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + getUnreadNotificationsCount, + ///: END:ONLY_INCLUDE_IN } from '../../../selectors'; import AccountMenu from './account-menu.component'; @@ -28,7 +31,9 @@ function mapStateToProps(state) { const accounts = getMetaMaskAccountsOrdered(state); const origin = getOriginOfCurrentTab(state); const selectedAddress = getSelectedAddress(state); - + ///: BEGIN:ONLY_INCLUDE_IN(flask) + const unreadNotificationsCount = getUnreadNotificationsCount(state); + ///: END:ONLY_INCLUDE_IN return { isAccountMenuOpen, addressConnectedSubjectMap: getAddressConnectedSubjectMap(state), @@ -37,6 +42,9 @@ function mapStateToProps(state) { keyrings: getMetaMaskKeyrings(state), accounts, shouldShowAccountsSearch: accounts.length >= SHOW_SEARCH_ACCOUNTS_MIN_COUNT, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + unreadNotificationsCount, + ///: END:ONLY_INCLUDE_IN }; } diff --git a/ui/components/app/account-menu/index.scss b/ui/components/app/account-menu/index.scss index b5bb8846d..c8b512ddf 100644 --- a/ui/components/app/account-menu/index.scss +++ b/ui/components/app/account-menu/index.scss @@ -53,6 +53,12 @@ &__icon { margin-right: 8px; display: flex; + color: var(--color-icon-default); + + i { + text-align: center; + width: 24px; + } } &__text { @@ -122,7 +128,7 @@ scrollbar-width: auto; @media screen and (max-width: $break-small) { - max-height: 228px; + max-height: 156px; } .keyring-label { @@ -136,6 +142,7 @@ margin-top: 5px; margin-right: 10px; background-color: var(--color-background-alternative); + border: 1px solid var(--color-border-default); color: var(--color-text-default); font-weight: normal; letter-spacing: 0.5px; @@ -144,6 +151,25 @@ } } + &__notifications { + position: relative; + + &__count { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + right: 0; + bottom: 0; + min-width: 12px; + min-height: 12px; + font-size: 8px; + border-radius: 50%; + background-color: var(--color-primary-default); + color: var(--color-primary-inverse); + } + } + &__no-accounts { @include H6; diff --git a/ui/components/app/add-network/add-network.js b/ui/components/app/add-network/add-network.js index 043926d38..c453eedf5 100644 --- a/ui/components/app/add-network/add-network.js +++ b/ui/components/app/add-network/add-network.js @@ -1,7 +1,7 @@ import React, { useContext } from 'react'; +import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import { I18nContext } from '../../../contexts/i18n'; -import ActionableMessage from '../../ui/actionable-message'; import Box from '../../ui/box'; import Typography from '../../ui/typography'; import { @@ -10,10 +10,17 @@ import { COLORS, DISPLAY, FLEX_DIRECTION, + FONT_WEIGHT, TYPOGRAPHY, + JUSTIFY_CONTENT, } from '../../../helpers/constants/design-system'; import Button from '../../ui/button'; import IconCaretLeft from '../../ui/icon/icon-caret-left'; +import Tooltip from '../../ui/tooltip'; +import IconWithFallback from '../../ui/icon-with-fallback'; +import IconBorder from '../../ui/icon-border'; +import { getTheme } from '../../../selectors'; +import { THEME_TYPE } from '../../../pages/settings/experimental-tab/experimental-tab.constant'; const AddNetwork = ({ onBackClick, @@ -22,10 +29,13 @@ const AddNetwork = ({ featuredRPCS, }) => { const t = useContext(I18nContext); + const theme = useSelector(getTheme); + + const infuraRegex = /infura.io/u; const nets = featuredRPCS .sort((a, b) => (a.ticker > b.ticker ? 1 : -1)) - .slice(0, 5); + .slice(0, 8); return ( @@ -63,28 +73,73 @@ const AddNetwork = ({ color={COLORS.TEXT_MUTED} margin={[4, 0, 3, 0]} > - {t('customNetworks')} + {t('popularCustomNetworks')} {nets.map((item, index) => ( - {t('logo', - - {item.ticker} - - + + + + + + {item.nickname} + + + + { + // Warning for the networks that doesn't use infura.io as the RPC + !infuraRegex.test(item.rpcUrl) && ( + + {t('addNetworkTooltipWarning', [ + + {t('learnMoreUpperCase')} + , + ])} + + } + trigger="mouseenter" + theme={theme === THEME_TYPE.DEFAULT ? 'light' : 'dark'} + > + + + ) + } + + ))} @@ -98,25 +153,6 @@ const AddNetwork = ({ {t('addANetworkManually')} - - {t('onlyInteractWith')} - - {t('endOfFlowMessage9')} - - - } - iconFillColor="var(--color-warning-default)" - useIcon - withRightButton - /> ); diff --git a/ui/components/app/add-network/add-network.stories.js b/ui/components/app/add-network/add-network.stories.js index 1617ea820..c0b206e28 100644 --- a/ui/components/app/add-network/add-network.stories.js +++ b/ui/components/app/add-network/add-network.stories.js @@ -1,9 +1,12 @@ import React from 'react'; -import AddNetwork from '.'; +import AddNetwork from './add-network'; const MATIC_TOKEN_IMAGE_URL = './images/matic-token.png'; const ARBITRUM_IMAGE_URL = './images/arbitrum.svg'; const OPTIMISM_IMAGE_URL = './images/optimism.svg'; +const AVALANCHE_IMAGE_URL = './images/avax-token.png'; +const PALM_IMAGE_URL = './images/palm.svg'; +const BSC_IMAGE_URL = './images/bsc-filled.svg'; export default { title: 'Components/APP/AddNetwork', @@ -25,36 +28,83 @@ export default { args: { featuredRPCS: [ { - chainId: '0x89', - nickname: 'Polygon Mumbai', - rpcUrl: - 'https://polygon-mainnet.infura.io/v3/2b6d4a83d89a438eb1b5d036788ab29c', - ticker: 'MATIC', + chainId: '42161', + nickname: 'Arbitrum One', + rpcUrl: 'https://arbitrum-mainnet.infura.io/v3/{INFURA_API_KEY}', + ticker: 'AETH', rpcPrefs: { - blockExplorerUrl: 'https://mumbai.polygonscan.com/', - imageUrl: MATIC_TOKEN_IMAGE_URL, + blockExplorerUrl: 'https://explorer.arbitrum.io', + imageUrl: ARBITRUM_IMAGE_URL, }, }, { - chainId: '0x99', - nickname: 'Optimism Testnet ', - rpcUrl: - 'https://optimism-kovan.infura.io/v3/2b6d4a83d89a438eb1b5d036788ab29c', + chainId: '43114', + nickname: 'Avalanche Mainnet C-Chain', + rpcUrl: 'https://api.avax.network/ext/bc/C/rpc', + ticker: 'AVAX', + rpcPrefs: { + blockExplorerUrl: 'https://snowtrace.io/', + imageUrl: AVALANCHE_IMAGE_URL, + }, + }, + { + chainId: '56', + nickname: 'BNB Smart Chain', + rpcUrl: 'https://bsc-dataseed.binance.org/', + ticker: 'BNB', + rpcPrefs: { + blockExplorerUrl: 'https://bscscan.com/', + imageUrl: BSC_IMAGE_URL, + }, + }, + { + chainId: '250', + nickname: 'Fantom Opera', + rpcUrl: 'https://rpc.ftm.tools/', + ticker: 'FTM', + rpcPrefs: { + blockExplorerUrl: 'https://ftmscan.com/', + imageUrl: '', + }, + }, + { + chainId: '1666600000', + nickname: 'Harmony Mainnet Shard 0', + rpcUrl: 'https://api.harmony.one/', + ticker: 'ONE', + rpcPrefs: { + blockExplorerUrl: 'https://explorer.harmony.one/', + imageUrl: '', + }, + }, + { + chainId: '10', + nickname: 'Optimism', + rpcUrl: 'https://optimism-mainnet.infura.io/v3/{INFURA_API_KEY}', ticker: 'KOR', rpcPrefs: { - blockExplorerUrl: 'https://kovan-optimistic.etherscan.io/', + blockExplorerUrl: 'https://optimistic.etherscan.io/', imageUrl: OPTIMISM_IMAGE_URL, }, }, { - chainId: '0x66eeb', - nickname: 'Arbitrum Testnet', - rpcUrl: - 'https://arbitrum-rinkeby.infura.io/v3/2b6d4a83d89a438eb1b5d036788ab29c', - ticker: 'ARETH', + chainId: '137', + nickname: 'Polygon Mainnet', + rpcUrl: 'https://polygon-mainnet.infura.io/v3/{INFURA_API_KEY}', + ticker: 'MATIC', rpcPrefs: { - blockExplorerUrl: 'https://testnet.arbiscan.io/', - imageUrl: ARBITRUM_IMAGE_URL, + blockExplorerUrl: 'https://polygonscan.com/', + imageUrl: MATIC_TOKEN_IMAGE_URL, + }, + }, + { + chainId: '11297108109', + nickname: 'Palm', + rpcUrl: 'https://palm-mainnet.infura.io/v3/{INFURA_API_KEY}', + ticker: 'PALM', + rpcPrefs: { + blockExplorerUrl: 'https://explorer.palm.io/', + imageUrl: PALM_IMAGE_URL, }, }, ], diff --git a/ui/components/app/add-network/index.scss b/ui/components/app/add-network/index.scss index 2260c78c3..6da064bf5 100644 --- a/ui/components/app/add-network/index.scss +++ b/ui/components/app/add-network/index.scss @@ -8,10 +8,17 @@ } } - &__token-image { - margin-right: 7px; - height: 24px; - width: 24px; + &__warning-icon { + color: var(--color-icon-muted); + } + + &__warning-tooltip { + color: var(--color-text-alternative); + width: 180px; + + a { + color: var(--color-primary-default); + } } &__add-icon { @@ -21,6 +28,12 @@ cursor: pointer; } + &__add-button.button { + color: var(--color-primary-default); + font-size: $font-size-h7; + margin-left: 24px; + } + &__footer { border-top: 1px solid var(--color-border-muted); @@ -39,3 +52,5 @@ } } } + + diff --git a/ui/components/app/advanced-gas-controls/index.scss b/ui/components/app/advanced-gas-controls/index.scss index e7b41ba31..48e0d8707 100644 --- a/ui/components/app/advanced-gas-controls/index.scss +++ b/ui/components/app/advanced-gas-controls/index.scss @@ -21,6 +21,6 @@ } path { - fill: var(--color-icon-muted); + fill: var(--color-icon-alternative); } } diff --git a/ui/components/app/advanced-gas-fee-popover/advanced-gas-fee-input-subtext/advanced-gas-fee-input-subtext.js b/ui/components/app/advanced-gas-fee-popover/advanced-gas-fee-input-subtext/advanced-gas-fee-input-subtext.js index ddc0fd1ad..9aba43ec0 100644 --- a/ui/components/app/advanced-gas-fee-popover/advanced-gas-fee-input-subtext/advanced-gas-fee-input-subtext.js +++ b/ui/components/app/advanced-gas-fee-popover/advanced-gas-fee-input-subtext/advanced-gas-fee-input-subtext.js @@ -25,7 +25,7 @@ function determineTrendInfo(trend, t) { case 'level': return { className: 'fa-arrow-right advanced-gas-fee-input-subtext__level', - color: 'var(--color-icon-default)', + color: 'var(--color-icon-alternative)', title: t('levelArrow'), }; default: diff --git a/ui/components/app/app-components.scss b/ui/components/app/app-components.scss index 62be2129b..3920e5372 100644 --- a/ui/components/app/app-components.scss +++ b/ui/components/app/app-components.scss @@ -89,4 +89,6 @@ @import 'detected-token/detected-token-address/index'; @import 'detected-token/detected-token-aggregators/index'; @import 'detected-token/detected-token-values/index'; -@import 'detected-token/detected-token-details/index' +@import 'detected-token/detected-token-details/index'; +@import 'detected-token/detected-token-ignored-popover/index'; +@import 'detected-token/detected-token-selection-popover/index'; diff --git a/ui/components/app/app-header/app-header.component.js b/ui/components/app/app-header/app-header.component.js index 274c4ed2e..8a97bddc5 100644 --- a/ui/components/app/app-header/app-header.component.js +++ b/ui/components/app/app-header/app-header.component.js @@ -4,6 +4,7 @@ import classnames from 'classnames'; import Identicon from '../../ui/identicon'; import MetaFoxLogo from '../../ui/metafox-logo'; import { DEFAULT_ROUTE } from '../../../helpers/constants/routes'; +import { EVENT } from '../../../../shared/constants/metametrics'; import NetworkDisplay from '../network-display'; export default class AppHeader extends PureComponent { @@ -19,6 +20,9 @@ export default class AppHeader extends PureComponent { disabled: PropTypes.bool, disableNetworkIndicator: PropTypes.bool, isAccountMenuOpen: PropTypes.bool, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + unreadNotificationsCount: PropTypes.number, + ///: END:ONLY_INCLUDE_IN onClick: PropTypes.func, }; @@ -45,7 +49,7 @@ export default class AppHeader extends PureComponent { if (networkDropdownOpen === false) { this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Opened Network Menu', properties: { action: 'Home', @@ -65,6 +69,9 @@ export default class AppHeader extends PureComponent { selectedAddress, disabled, isAccountMenuOpen, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + unreadNotificationsCount, + ///: END:ONLY_INCLUDE_IN } = this.props; return ( @@ -77,7 +84,7 @@ export default class AppHeader extends PureComponent { if (!disabled) { !isAccountMenuOpen && this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Opened Main Menu', properties: { action: 'Home', @@ -89,6 +96,15 @@ export default class AppHeader extends PureComponent { }} > + { + ///: BEGIN:ONLY_INCLUDE_IN(flask) + unreadNotificationsCount > 0 && ( +
+ {unreadNotificationsCount} +
+ ) + ///: END:ONLY_INCLUDE_IN + }
) ); diff --git a/ui/components/app/app-header/app-header.container.js b/ui/components/app/app-header/app-header.container.js index a7d632b6d..e30049bc3 100644 --- a/ui/components/app/app-header/app-header.container.js +++ b/ui/components/app/app-header/app-header.container.js @@ -1,6 +1,9 @@ import { connect } from 'react-redux'; import { withRouter } from 'react-router-dom'; import { compose } from 'redux'; +///: BEGIN:ONLY_INCLUDE_IN(flask) +import { getUnreadNotificationsCount } from '../../../selectors'; +///: END:ONLY_INCLUDE_IN import * as actions from '../../../store/actions'; import AppHeader from './app-header.component'; @@ -10,11 +13,18 @@ const mapStateToProps = (state) => { const { networkDropdownOpen } = appState; const { selectedAddress, isUnlocked, isAccountMenuOpen } = metamask; + ///: BEGIN:ONLY_INCLUDE_IN(flask) + const unreadNotificationsCount = getUnreadNotificationsCount(state); + ///: END:ONLY_INCLUDE_IN + return { networkDropdownOpen, selectedAddress, isUnlocked, isAccountMenuOpen, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + unreadNotificationsCount, + ///: END:ONLY_INCLUDE_IN }; }; diff --git a/ui/components/app/app-header/index.scss b/ui/components/app/app-header/index.scss index a5906af7f..8d5eb8c30 100644 --- a/ui/components/app/app-header/index.scss +++ b/ui/components/app/app-header/index.scss @@ -86,4 +86,23 @@ width: 0; justify-content: flex-end; } + + .account-menu__icon { + position: relative; + + &__notification-count { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + right: 0; + bottom: 0; + min-width: 16px; + min-height: 16px; + font-size: 10px; + border-radius: 50%; + background-color: var(--color-primary-default); + color: var(--color-primary-inverse); + } + } } diff --git a/ui/components/app/asset-list-item/asset-list-item.js b/ui/components/app/asset-list-item/asset-list-item.js index 2b54fce6c..77ab7f53d 100644 --- a/ui/components/app/asset-list-item/asset-list-item.js +++ b/ui/components/app/asset-list-item/asset-list-item.js @@ -13,6 +13,7 @@ import { updateSendAsset } from '../../../ducks/send'; import { SEND_ROUTE } from '../../../helpers/constants/routes'; import { SEVERITIES } from '../../../helpers/constants/design-system'; import { INVALID_ASSET_TYPE } from '../../../helpers/constants/error-keys'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { ASSET_TYPES } from '../../../../shared/constants/transaction'; import { MetaMetricsContext } from '../../../contexts/metametrics'; @@ -65,7 +66,7 @@ const AssetListItem = ({ e.stopPropagation(); trackEvent({ event: 'Clicked Send: Token', - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, properties: { action: 'Home', legacy_event: true, diff --git a/ui/components/app/asset-list/asset-list.js b/ui/components/app/asset-list/asset-list.js index adc404738..3ba7a0c7d 100644 --- a/ui/components/app/asset-list/asset-list.js +++ b/ui/components/app/asset-list/asset-list.js @@ -1,10 +1,8 @@ -import React, { useContext } from 'react'; +import React, { useContext, useState } from 'react'; import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; -import { useHistory } from 'react-router-dom'; import ImportTokenLink from '../import-token-link'; import TokenList from '../token-list'; -import { IMPORT_TOKEN_ROUTE } from '../../../helpers/constants/routes'; import AssetListItem from '../asset-list-item'; import { PRIMARY, SECONDARY } from '../../../helpers/constants/common'; import { useUserPreferencedCurrency } from '../../../hooks/useUserPreferencedCurrency'; @@ -12,7 +10,7 @@ import { getCurrentAccountWithSendEtherInfo, getShouldShowFiat, getNativeCurrencyImage, - getIsMainnet, + getDetectedTokensInCurrentNetwork, } from '../../../selectors'; import { getNativeCurrency } from '../../../ducks/metamask/metamask'; import { useCurrencyDisplay } from '../../../hooks/useCurrencyDisplay'; @@ -26,10 +24,15 @@ import { } from '../../../helpers/constants/design-system'; import { useI18nContext } from '../../../hooks/useI18nContext'; import { MetaMetricsContext } from '../../../contexts/metametrics'; +import { EVENT } from '../../../../shared/constants/metametrics'; +import DetectedToken from '../detected-token/detected-token'; +import DetectedTokensLink from './detetcted-tokens-link/detected-tokens-link'; const AssetList = ({ onClickAsset }) => { const t = useI18nContext(); - const history = useHistory(); + + const [showDetectedTokens, setShowDetectedTokens] = useState(false); + const selectedAccountBalance = useSelector( (state) => getCurrentAccountWithSendEtherInfo(state).balance, ); @@ -63,7 +66,7 @@ const AssetList = ({ onClickAsset }) => { }); const primaryTokenImage = useSelector(getNativeCurrencyImage); - const isMainnet = useSelector(getIsMainnet) || process.env.IN_TEST; + const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork) || []; return ( <> @@ -83,7 +86,7 @@ const AssetList = ({ onClickAsset }) => { onClickAsset(tokenAddress); trackEvent({ event: 'Clicked Token', - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, properties: { action: 'Token Menu', legacy_event: true, @@ -91,7 +94,12 @@ const AssetList = ({ onClickAsset }) => { }); }} /> - + {process.env.TOKEN_DETECTION_V2 + ? detectedTokens.length > 0 && ( + + ) + : null} + 0 ? 0 : 4}> { {t('missingToken')} - { - history.push(IMPORT_TOKEN_ROUTE); - trackEvent({ - event: 'Clicked "Add Token"', - category: 'Navigation', - properties: { - action: 'Token Menu', - legacy_event: true, - }, - }); - }} - /> + + {showDetectedTokens && ( + + )} ); }; diff --git a/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.js b/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.js index a1aa3fb41..f250067bb 100644 --- a/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.js +++ b/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useContext } from 'react'; import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import classNames from 'classnames'; @@ -7,11 +7,32 @@ import Box from '../../../ui/box/box'; import Button from '../../../ui/button'; import { useI18nContext } from '../../../../hooks/useI18nContext'; import { getDetectedTokensInCurrentNetwork } from '../../../../selectors'; +import { MetaMetricsContext } from '../../../../contexts/metametrics'; +import { + EVENT, + EVENT_NAMES, +} from '../../../../../shared/constants/metametrics'; -const DetectedTokensLink = ({ className = '', onClick }) => { +const DetectedTokensLink = ({ className = '', setShowDetectedTokens }) => { const t = useI18nContext(); - const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork); + const trackEvent = useContext(MetaMetricsContext); + const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork); + const detectedTokensDetails = detectedTokens.map( + ({ address, symbol }) => `${symbol} - ${address}`, + ); + + const onClick = () => { + setShowDetectedTokens(true); + trackEvent({ + event: EVENT_NAMES.TOKEN_IMPORT_CLICKED, + category: EVENT.CATEGORIES.WALLET, + properties: { + source: EVENT.SOURCE.TOKEN.DETECTED, + tokens: detectedTokensDetails, + }, + }); + }; return ( { }; DetectedTokensLink.propTypes = { - onClick: PropTypes.func.isRequired, + setShowDetectedTokens: PropTypes.func.isRequired, className: PropTypes.string, }; diff --git a/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.stories.js b/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.stories.js new file mode 100644 index 000000000..f7cbf629d --- /dev/null +++ b/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.stories.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { Provider } from 'react-redux'; + +import testData from '../../../../../.storybook/test-data'; +import configureStore from '../../../../store/store'; +import DetectedTokensLink from './detected-tokens-link'; + +const store = configureStore(testData); + +export default { + title: 'Components/App/AssetList/DetectedTokensLink', + decorators: [(story) => {story()}], + id: __filename, + argTypes: { + setShowDetectedTokens: { control: 'func' }, + }, + args: { + setShowDetectedTokens: 'setShowDetectedTokensSpy', + }, +}; + +const Template = (args) => { + return ; +}; + +export const DefaultStory = Template.bind({}); + +DefaultStory.storyName = 'Default'; diff --git a/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.test.js b/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.test.js new file mode 100644 index 000000000..07248c2e5 --- /dev/null +++ b/ui/components/app/asset-list/detetcted-tokens-link/detected-tokens-link.test.js @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { + renderWithProvider, + screen, + fireEvent, +} from '../../../../../test/jest'; +import configureStore from '../../../../store/store'; +import testData from '../../../../../.storybook/test-data'; + +import DetectedTokensLink from './detected-tokens-link'; + +describe('DetectedTokensLink', () => { + let setShowDetectedTokensSpy; + const args = {}; + + beforeEach(() => { + setShowDetectedTokensSpy = jest.fn(); + args.setShowDetectedTokens = setShowDetectedTokensSpy; + }); + + it('should render number of tokens detected link', () => { + const store = configureStore(testData); + renderWithProvider(, store); + + expect( + screen.getByText('3 new tokens found in this account'), + ).toBeInTheDocument(); + + fireEvent.click(screen.getByText('3 new tokens found in this account')); + expect(setShowDetectedTokensSpy).toHaveBeenCalled(); + }); +}); diff --git a/ui/components/app/cancel-speedup-popover/cancel-speedup-popover.js b/ui/components/app/cancel-speedup-popover/cancel-speedup-popover.js index df1cf472f..aa487cc6d 100644 --- a/ui/components/app/cancel-speedup-popover/cancel-speedup-popover.js +++ b/ui/components/app/cancel-speedup-popover/cancel-speedup-popover.js @@ -119,7 +119,9 @@ const CancelSpeedupPopover = () => { contentText={ {t('cancelSpeedUpTransactionTooltip', [ - EDIT_GAS_MODES.CANCEL ? t('cancel') : t('speedUp'), + editGasMode === EDIT_GAS_MODES.CANCEL + ? t('cancel') + : t('speedUp'), ])}
({ }), })); +jest.mock('../../ui/info-tooltip', () => jest.fn(() => null)); + const render = ( props, maxFeePerGas = MOCK_SUGGESTED_MEDIUM_MAXFEEPERGAS_HEX_WEI, @@ -111,6 +114,10 @@ const render = ( }; describe('CancelSpeedupPopover', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + it('should have ❌Cancel in header if editGasMode is cancel', async () => { await act(async () => render()); expect(screen.queryByText('❌Cancel')).toBeInTheDocument(); @@ -121,6 +128,24 @@ describe('CancelSpeedupPopover', () => { expect(screen.queryByText('🚀Speed Up')).toBeInTheDocument(); }); + it('information tooltip should contain the correct text if editGasMode is cancel', async () => { + await act(async () => render()); + expect( + InfoTooltip.mock.calls[0][0].contentText.props.children[0], + ).toStrictEqual( + 'To Cancel a transaction the gas fee must be increased by at least 10% for it to be recognized by the network.', + ); + }); + + it('information tooltip should contain the correct text if editGasMode is speedup', async () => { + await act(async () => render({ editGasMode: EDIT_GAS_MODES.SPEED_UP })); + expect( + InfoTooltip.mock.calls[0][0].contentText.props.children[0], + ).toStrictEqual( + 'To Speed Up a transaction the gas fee must be increased by at least 10% for it to be recognized by the network.', + ); + }); + it('should show correct gas values, increased by 10%, when initial initial gas value is above estimated medium', async () => { await act(async () => render( diff --git a/ui/components/app/collectible-details/collectible-details.js b/ui/components/app/collectible-details/collectible-details.js index 4e7c433d4..5c8bf8e3a 100644 --- a/ui/components/app/collectible-details/collectible-details.js +++ b/ui/components/app/collectible-details/collectible-details.js @@ -311,7 +311,7 @@ export default function CollectibleDetails({ collectible }) { {copied ? ( t('copiedExclamation') ) : ( - + )} diff --git a/ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.stories.js b/ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.stories.js new file mode 100644 index 000000000..929082c4d --- /dev/null +++ b/ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.stories.js @@ -0,0 +1,47 @@ +import React from 'react'; +import ConfirmDetailRow from '.'; + +export default { + title: 'Components/App/ConfirmPageContainer/ConfirmDetailRow', + id: __filename, + argTypes: { + headerText: { + control: 'text', + }, + headerTextClassName: { + control: 'text', + }, + label: { + control: 'text', + }, + onHeaderClick: { + control: 'text', + }, + primaryValueTextColor: { + control: 'text', + }, + primaryText: { + control: 'text', + }, + secondaryText: { + control: 'text', + }, + value: { + control: 'text', + }, + }, + args: { + headerText: 'headerText', + headerTextClassName: 'headerTextClassName', + label: 'label', + onHeaderClick: 'onHeaderClick', + primaryValueTextColor: 'primaryValueTextColor', + primaryText: 'primaryText', + secondaryText: 'secondaryText', + value: 'value', + }, +}; + +export const DefaultStory = (args) => ; + +DefaultStory.storyName = 'Default'; diff --git a/ui/components/app/confirm-page-container/confirm-detail-row/index.scss b/ui/components/app/confirm-page-container/confirm-detail-row/index.scss index 9645ef29b..cfb382f83 100644 --- a/ui/components/app/confirm-page-container/confirm-detail-row/index.scss +++ b/ui/components/app/confirm-page-container/confirm-detail-row/index.scss @@ -9,7 +9,7 @@ @include H7; font-weight: 500; - color: var(--color-text-allternative); + color: var(--color-text-alternative); text-transform: uppercase; } @@ -26,7 +26,7 @@ } &__secondary { - color: var(--color-icon-default); + color: var(--color-text-alternative); justify-content: flex-end; } @@ -35,7 +35,7 @@ text-transform: uppercase; margin-bottom: 6px; - color: var(--color-icon-default); + color: var(--color-text-default); &--edit { color: var(--color-primary-default); diff --git a/ui/components/app/confirm-page-container/confirm-page-container-container.test.js b/ui/components/app/confirm-page-container/confirm-page-container-container.test.js index da2025e12..6ca95a83b 100644 --- a/ui/components/app/confirm-page-container/confirm-page-container-container.test.js +++ b/ui/components/app/confirm-page-container/confirm-page-container-container.test.js @@ -49,6 +49,7 @@ describe('Confirm Page Container Container Test', () => { const store = configureMockStore()(mockStore); const props = { + title: 'Title', fromAddress: '0xd8f6a2ffb0fc5952d16c9768b71cfd35b6399aa5', toAddress: '0x7a1A4Ad9cc746a70ee58568466f7996dD0aCE4E8', origin: 'testOrigin', // required diff --git a/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js index c10d0219a..b09b534ed 100644 --- a/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js +++ b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js @@ -47,7 +47,7 @@ export default class ConfirmPageContainerContent extends Component { hideTitle: PropTypes.bool, supportsEIP1559V2: PropTypes.bool, hasTopBorder: PropTypes.bool, - currentTransaction: PropTypes.string, + currentTransaction: PropTypes.object, nativeCurrency: PropTypes.string, networkName: PropTypes.string, showBuyModal: PropTypes.func, diff --git a/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js index 218fc99a7..2d5fb8193 100644 --- a/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js +++ b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js @@ -13,6 +13,8 @@ import InfoTooltip from '../../../../ui/info-tooltip'; import NicknamePopovers from '../../../modals/nickname-popovers'; import Typography from '../../../../ui/typography'; import { TYPOGRAPHY } from '../../../../../helpers/constants/design-system'; +import { ORIGIN_METAMASK } from '../../../../../../shared/constants/app'; +import SiteOrigin from '../../../../ui/site-origin'; const ConfirmPageContainerSummary = (props) => { const { @@ -83,8 +85,11 @@ const ConfirmPageContainerSummary = (props) => { return (
- {origin === 'metamask' ? null : ( -
{origin}
+ {origin === ORIGIN_METAMASK ? null : ( + )}
diff --git a/ui/components/app/connected-accounts-list/connected-accounts-list.stories.js b/ui/components/app/connected-accounts-list/connected-accounts-list.stories.js new file mode 100644 index 000000000..48f79b19e --- /dev/null +++ b/ui/components/app/connected-accounts-list/connected-accounts-list.stories.js @@ -0,0 +1,38 @@ +import React from 'react'; +import ConnectedAccountsList from '.'; + +export default { + title: 'Components/App/ConnectedAccountsList', + id: __filename, + argTypes: { + connectedAccounts: { + control: 'array', + }, + selectedAddress: { + control: 'text', + }, + shouldRenderListOptions: { + control: 'boolean', + }, + }, + args: { + connectedAccounts: [ + { + name: 'This is a Really Long Account Name', + address: '0x64a845a5b02460acf8a3d84503b0d68d028b4bb4', + index: 0, + balance: '0x176e5b6f173ebe66', + }, + { + name: 'Account 2', + address: '0xb19ac54efa18cc3a14a5b821bfec73d284bf0c5e', + index: 1, + balance: '0x2d3142f5000', + }, + ], + }, +}; + +export const DefaultStory = (args) => ; + +DefaultStory.storyName = 'Default'; diff --git a/ui/components/app/connected-sites-list/connected-sites-list.component.js b/ui/components/app/connected-sites-list/connected-sites-list.component.js index 52245e7cb..7b23820c0 100644 --- a/ui/components/app/connected-sites-list/connected-sites-list.component.js +++ b/ui/components/app/connected-sites-list/connected-sites-list.component.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import Button from '../../ui/button'; import SiteIcon from '../../ui/site-icon'; import { stripHttpsSchemeWithoutPort } from '../../../helpers/utils/util'; +import SiteOrigin from '../../ui/site-origin'; export default class ConnectedSitesList extends Component { static contextTypes = { @@ -33,12 +34,11 @@ export default class ConnectedSitesList extends Component { >
- - {this.getSubjectDisplayName(subject)} - + siteOrigin={this.getSubjectDisplayName(subject)} + />
) : ( - - {`${aggregatorsList.join(', ')}.`} + + {`${aggregators.join(', ')}.`} ), ])} @@ -44,7 +58,7 @@ const DetectedTokenAggregators = ({ aggregatorsList }) => { }; DetectedTokenAggregators.propTypes = { - aggregatorsList: PropTypes.array.isRequired, + aggregators: PropTypes.array.isRequired, }; export default DetectedTokenAggregators; diff --git a/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.stories.js b/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.stories.js index c4c96b684..42d97b208 100644 --- a/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.stories.js +++ b/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.stories.js @@ -8,10 +8,10 @@ export default { title: 'Components/App/DetectedToken/DetectedTokenAggregators', id: __filename, argTypes: { - aggregatorsList: { control: 'array' }, + aggregators: { control: 'array' }, }, args: { - aggregatorsList1: [ + aggregators1: [ 'Aave', 'Bancor', 'CMC', @@ -25,15 +25,15 @@ export default { 'Zerion', '0x', ], - aggregatorsList2: ['Aave', 'Bancor'], + aggregators2: ['Aave', 'Bancor'], }, }; const Template = (args) => { return ( - - + + ); }; diff --git a/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.test.js b/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.test.js index 27757fb32..15f596b45 100644 --- a/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.test.js +++ b/ui/components/app/detected-token/detected-token-aggregators/detected-token-aggregators.test.js @@ -10,7 +10,7 @@ import DetectedTokenAggregators from './detected-token-aggregators'; describe('DetectedTokenAggregators', () => { const args = { - aggregatorsList: [ + aggregators: [ 'Aave', 'Bancor', 'CMC', diff --git a/ui/components/app/detected-token/detected-token-details/detected-token-details.js b/ui/components/app/detected-token/detected-token-details/detected-token-details.js index 0b6d4d59a..0238b5a53 100644 --- a/ui/components/app/detected-token/detected-token-details/detected-token-details.js +++ b/ui/components/app/detected-token/detected-token-details/detected-token-details.js @@ -1,5 +1,4 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import Box from '../../../ui/box'; @@ -8,17 +7,21 @@ import DetectedTokenValues from '../detected-token-values/detected-token-values' import DetectedTokenAddress from '../detected-token-address/detected-token-address'; import DetectedTokenAggregators from '../detected-token-aggregators/detected-token-aggregators'; import { DISPLAY } from '../../../../helpers/constants/design-system'; -import { getTokenList } from '../../../../selectors'; - -const DetectedTokenDetails = ({ tokenAddress }) => { - const tokenList = useSelector(getTokenList); - const token = tokenList[tokenAddress]; +const DetectedTokenDetails = ({ + token, + handleTokenSelection, + tokensListDetected, +}) => { return ( - + { marginLeft={2} className="detected-token-details__data" > - - - + + + ); }; DetectedTokenDetails.propTypes = { - tokenAddress: PropTypes.string, + token: PropTypes.shape({ + address: PropTypes.string.isRequired, + decimals: PropTypes.number, + symbol: PropTypes.string, + iconUrl: PropTypes.string, + aggregators: PropTypes.array, + }), + handleTokenSelection: PropTypes.func.isRequired, + tokensListDetected: PropTypes.object, }; export default DetectedTokenDetails; diff --git a/ui/components/app/detected-token/detected-token-details/detected-token-details.stories.js b/ui/components/app/detected-token/detected-token-details/detected-token-details.stories.js index fe95977f6..91a423708 100644 --- a/ui/components/app/detected-token/detected-token-details/detected-token-details.stories.js +++ b/ui/components/app/detected-token/detected-token-details/detected-token-details.stories.js @@ -6,17 +6,77 @@ export default { title: 'Components/App/DetectedToken/DetectedTokenDetails', id: __filename, argTypes: { - address: { control: 'text' }, + token: { control: 'object' }, + handleTokenSelection: { control: 'func' }, + tokensListDetected: { control: 'array' }, }, args: { - address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + token: { + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'aave', + 'bancor', + 'cmc', + 'cryptocom', + 'coinGecko', + 'oneInch', + 'paraswap', + 'pmm', + 'synthetix', + 'zapper', + 'zerion', + 'zeroEx', + ], + }, + tokensListDetected: { + '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f': { + token: { + name: 'Synthetix Network', + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: + 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'aave', + 'bancor', + 'cmc', + 'cryptocom', + 'coinGecko', + 'oneInch', + 'paraswap', + 'pmm', + 'synthetix', + 'zapper', + 'zerion', + 'zeroEx', + ], + }, + selected: true, + }, + '0x514910771af9ca656af840dff83e8264ecf986ca': { + token: { + name: 'ChainLink Token', + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + symbol: 'LINK', + decimals: 18, + iconUrl: + 'https://crypto.com/price/coin-data/icon/LINK/color_icon.png', + aggregators: ['coinGecko', 'oneInch', 'paraswap', 'zapper', 'zerion'], + }, + selected: true, + }, + }, }, }; const Template = (args) => { return (
- +
); }; diff --git a/ui/components/app/detected-token/detected-token-details/detected-token-details.test.js b/ui/components/app/detected-token/detected-token-details/detected-token-details.test.js index 4bebcb8eb..559c568bc 100644 --- a/ui/components/app/detected-token/detected-token-details/detected-token-details.test.js +++ b/ui/components/app/detected-token/detected-token-details/detected-token-details.test.js @@ -11,7 +11,66 @@ import DetectedTokenDetails from './detected-token-details'; describe('DetectedTokenDetails', () => { const args = { - tokenAddress: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + token: { + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'Aave', + 'Bancor', + 'CMC', + 'Crypto.com', + 'CoinGecko', + '1Inch', + 'Paraswap', + 'PMM', + 'Synthetix', + 'Zapper', + 'Zerion', + '0x', + ], + }, + handleTokenSelection: jest.fn(), + tokensListDetected: { + 0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f: { + token: { + name: 'Synthetix Network', + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: + 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'aave', + 'bancor', + 'cmc', + 'cryptocom', + 'coinGecko', + 'oneInch', + 'paraswap', + 'pmm', + 'synthetix', + 'zapper', + 'zerion', + 'zeroEx', + ], + }, + selected: true, + }, + 0x514910771af9ca656af840dff83e8264ecf986ca: { + token: { + name: 'ChainLink Token', + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + symbol: 'LINK', + decimals: 18, + iconUrl: + 'https://crypto.com/price/coin-data/icon/LINK/color_icon.png', + aggregators: ['coinGecko', 'oneInch', 'paraswap', 'zapper', 'zerion'], + }, + selected: true, + }, + }, }; it('should render the detected token details', async () => { @@ -28,7 +87,7 @@ describe('DetectedTokenDetails', () => { fireEvent.click(screen.getByText('+ 10 more')); expect( screen.getByText( - 'Aave, Bancor, CMC, Crypto.com, CoinGecko, 1inch, Paraswap, PMM, Synthetix, Zapper, Zerion, 0x.', + 'Aave, Bancor, CMC, Crypto.com, CoinGecko, 1Inch, Paraswap, PMM, Synthetix, Zapper, Zerion, 0x.', ), ).toBeInTheDocument(); }); diff --git a/ui/components/app/detected-token/detected-token-ignored-popover/detected-token-ignored-popover.js b/ui/components/app/detected-token/detected-token-ignored-popover/detected-token-ignored-popover.js new file mode 100644 index 000000000..25777ed49 --- /dev/null +++ b/ui/components/app/detected-token/detected-token-ignored-popover/detected-token-ignored-popover.js @@ -0,0 +1,57 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useI18nContext } from '../../../../hooks/useI18nContext'; + +import Popover from '../../../ui/popover'; +import Button from '../../../ui/button'; +import Typography from '../../../ui/typography/typography'; +import { TYPOGRAPHY } from '../../../../helpers/constants/design-system'; + +const DetectedTokenIgnoredPopover = ({ + onCancelIgnore, + handleClearTokensSelection, +}) => { + const t = useI18nContext(); + + const footer = ( + <> + + + + ); + + return ( + + + {t('ignoreTokenWarning')} + + + ); +}; + +DetectedTokenIgnoredPopover.propTypes = { + onCancelIgnore: PropTypes.func.isRequired, + handleClearTokensSelection: PropTypes.func.isRequired, +}; + +export default DetectedTokenIgnoredPopover; diff --git a/ui/components/app/detected-token/detected-token-ignored-popover/detected-token-ignored-popover.stories.js b/ui/components/app/detected-token/detected-token-ignored-popover/detected-token-ignored-popover.stories.js new file mode 100644 index 000000000..74b15d581 --- /dev/null +++ b/ui/components/app/detected-token/detected-token-ignored-popover/detected-token-ignored-popover.stories.js @@ -0,0 +1,24 @@ +import React from 'react'; + +import DetectedTokenIgnoredPopover from './detected-token-ignored-popover'; + +export default { + title: 'Components/App/DetectedToken/DetectedTokenIgnoredPopover', + id: __filename, + argTypes: { + onCancelIgnore: { + control: 'func', + }, + handleClearTokensSelection: { + control: 'func', + }, + }, +}; + +const Template = (args) => { + return ; +}; + +export const DefaultStory = Template.bind({}); + +DefaultStory.storyName = 'Default'; diff --git a/ui/components/app/detected-token/detected-token-ignored-popover/index.scss b/ui/components/app/detected-token/detected-token-ignored-popover/index.scss new file mode 100644 index 000000000..64e0d90bd --- /dev/null +++ b/ui/components/app/detected-token/detected-token-ignored-popover/index.scss @@ -0,0 +1,13 @@ +.detected-token-ignored-popover { + &__ignore-button { + margin-inline-end: 8px; + } + + &__import-button { + margin-inline-start: 8px; + } + + .popover-header { + margin-inline-start: 85px; + } +} diff --git a/ui/components/app/detected-token/detected-token-selection-popover/detected-token-selection-popover.js b/ui/components/app/detected-token/detected-token-selection-popover/detected-token-selection-popover.js new file mode 100644 index 000000000..afabb4ead --- /dev/null +++ b/ui/components/app/detected-token/detected-token-selection-popover/detected-token-selection-popover.js @@ -0,0 +1,104 @@ +import React, { useContext } from 'react'; +import PropTypes from 'prop-types'; +import { useSelector } from 'react-redux'; + +import { useI18nContext } from '../../../../hooks/useI18nContext'; +import { MetaMetricsContext } from '../../../../contexts/metametrics'; +import { + EVENT, + EVENT_NAMES, +} from '../../../../../shared/constants/metametrics'; +import { getDetectedTokensInCurrentNetwork } from '../../../../selectors'; + +import Popover from '../../../ui/popover'; +import Box from '../../../ui/box'; +import Button from '../../../ui/button'; +import DetectedTokenDetails from '../detected-token-details/detected-token-details'; + +const DetectedTokenSelectionPopover = ({ + tokensListDetected, + handleTokenSelection, + onImport, + onIgnoreAll, + setShowDetectedTokens, + sortingBasedOnTokenSelection, +}) => { + const t = useI18nContext(); + const trackEvent = useContext(MetaMetricsContext); + + const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork); + const { selected: selectedTokens = [] } = sortingBasedOnTokenSelection( + tokensListDetected, + ); + const numOfTokensImporting = + selectedTokens.length === detectedTokens.length + ? `All` + : `(${selectedTokens.length})`; + + const onClose = () => { + setShowDetectedTokens(false); + const eventTokensDetails = detectedTokens.map( + ({ address, symbol }) => `${symbol} - ${address}`, + ); + trackEvent({ + event: EVENT_NAMES.TOKEN_IMPORT_CANCELED, + category: EVENT.CATEGORIES.WALLET, + properties: { + source: EVENT.SOURCE.TOKEN.DETECTED, + tokens: eventTokensDetails, + }, + }); + }; + + const footer = ( + <> + + + + ); + + return ( + + + {detectedTokens.map((token, index) => { + return ( + + ); + })} + + + ); +}; + +DetectedTokenSelectionPopover.propTypes = { + tokensListDetected: PropTypes.object, + handleTokenSelection: PropTypes.func.isRequired, + onIgnoreAll: PropTypes.func.isRequired, + onImport: PropTypes.func.isRequired, + setShowDetectedTokens: PropTypes.func.isRequired, + sortingBasedOnTokenSelection: PropTypes.func.isRequired, +}; + +export default DetectedTokenSelectionPopover; diff --git a/ui/components/app/detected-token/detected-token-selection-popover/detected-token-selection-popover.stories.js b/ui/components/app/detected-token/detected-token-selection-popover/detected-token-selection-popover.stories.js new file mode 100644 index 000000000..3d013615f --- /dev/null +++ b/ui/components/app/detected-token/detected-token-selection-popover/detected-token-selection-popover.stories.js @@ -0,0 +1,69 @@ +import React from 'react'; +import { Provider } from 'react-redux'; + +import testData from '../../../../../.storybook/test-data'; +import configureStore from '../../../../store/store'; +import DetectedTokenSelectionPopover from './detected-token-selection-popover'; + +const store = configureStore(testData); + +export default { + title: 'Components/App/DetectedToken/DetectedTokenSelectionPopover', + decorators: [(story) => {story()}], + id: __filename, + argTypes: { + selectedTokens: { control: 'array' }, + handleTokenSelection: { control: 'func' }, + onImport: { control: 'func' }, + onIgnoreAll: { control: 'func' }, + }, + args: { + tokensListDetected: { + '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f': { + token: { + name: 'Synthetix Network', + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: + 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'aave', + 'bancor', + 'cmc', + 'cryptocom', + 'coinGecko', + 'oneInch', + 'paraswap', + 'pmm', + 'synthetix', + 'zapper', + 'zerion', + 'zeroEx', + ], + }, + selected: true, + }, + '0x514910771af9ca656af840dff83e8264ecf986ca': { + token: { + name: 'ChainLink Token', + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + symbol: 'LINK', + decimals: 18, + iconUrl: + 'https://crypto.com/price/coin-data/icon/LINK/color_icon.png', + aggregators: ['coinGecko', 'oneInch', 'paraswap', 'zapper', 'zerion'], + }, + selected: true, + }, + }, + }, +}; + +const Template = (args) => { + return ; +}; + +export const DefaultStory = Template.bind({}); + +DefaultStory.storyName = 'Default'; diff --git a/ui/components/app/detected-token/detected-token-selection-popover/index.scss b/ui/components/app/detected-token/detected-token-selection-popover/index.scss new file mode 100644 index 000000000..89cca42ce --- /dev/null +++ b/ui/components/app/detected-token/detected-token-selection-popover/index.scss @@ -0,0 +1,9 @@ +.detected-token-selection-popover { + &__ignore-button { + margin-right: 8px; + } + + &__import-button { + margin-left: 8px; + } +} diff --git a/ui/components/app/detected-token/detected-token-values/detected-token-values.js b/ui/components/app/detected-token/detected-token-values/detected-token-values.js index d234b67c2..b6c4f4648 100644 --- a/ui/components/app/detected-token/detected-token-values/detected-token-values.js +++ b/ui/components/app/detected-token/detected-token-values/detected-token-values.js @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import Box from '../../../ui/box'; @@ -13,32 +13,44 @@ import { import { useTokenTracker } from '../../../../hooks/useTokenTracker'; import { useTokenFiatAmount } from '../../../../hooks/useTokenFiatAmount'; -const DetectedTokenValues = ({ token }) => { - const [selectedTokens, setSelectedTokens] = useState(false); +const DetectedTokenValues = ({ + token, + handleTokenSelection, + tokensListDetected, +}) => { + const [tokenSelection, setTokenSelection] = useState(() => { + return tokensListDetected[token.address]?.selected; + }); + const { tokensWithBalances } = useTokenTracker([token]); - const balanceToRender = tokensWithBalances[0]?.string; - const balance = tokensWithBalances[0]?.balance; + const balanceString = tokensWithBalances[0]?.string; const formattedFiatBalance = useTokenFiatAmount( token.address, - balanceToRender, + balanceString, token.symbol, ); + useEffect(() => { + setTokenSelection(tokensListDetected[token.address]?.selected); + }, [tokensListDetected, token.address, tokenSelection, setTokenSelection]); + + const handleCheckBoxSelection = () => { + setTokenSelection(!tokenSelection); + handleTokenSelection(token); + }; + return ( - {`${balance || '0'} ${token.symbol}`} + {`${balanceString || '0'} ${token.symbol}`} {formattedFiatBalance || '$0'} - setSelectedTokens((checked) => !checked)} - /> + ); @@ -52,6 +64,8 @@ DetectedTokenValues.propTypes = { iconUrl: PropTypes.string, aggregators: PropTypes.array, }), + handleTokenSelection: PropTypes.func.isRequired, + tokensListDetected: PropTypes.object, }; export default DetectedTokenValues; diff --git a/ui/components/app/detected-token/detected-token-values/detected-token-values.stories.js b/ui/components/app/detected-token/detected-token-values/detected-token-values.stories.js index 6a3d12c39..98c1a8e1a 100644 --- a/ui/components/app/detected-token/detected-token-values/detected-token-values.stories.js +++ b/ui/components/app/detected-token/detected-token-values/detected-token-values.stories.js @@ -6,36 +6,75 @@ export default { title: 'Components/App/DetectedToken/DetectedTokenValues', id: __filename, argTypes: { - address: { control: 'text' }, - symbol: { control: 'text' }, - decimals: { control: 'text' }, - iconUrl: { control: 'text' }, - aggregators: { control: 'array' }, + token: { control: 'object' }, + handleTokenSelection: { control: 'func' }, + tokensListDetected: { control: 'array' }, }, args: { - address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', - symbol: 'SNX', - decimals: 18, - iconUrl: 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', - aggregators: [ - 'aave', - 'bancor', - 'cmc', - 'cryptocom', - 'coinGecko', - 'oneInch', - 'paraswap', - 'pmm', - 'synthetix', - 'zapper', - 'zerion', - 'zeroEx', - ], + token: { + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'aave', + 'bancor', + 'cmc', + 'cryptocom', + 'coinGecko', + 'oneInch', + 'paraswap', + 'pmm', + 'synthetix', + 'zapper', + 'zerion', + 'zeroEx', + ], + }, + tokensListDetected: { + '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f': { + token: { + name: 'Synthetix Network', + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: + 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'aave', + 'bancor', + 'cmc', + 'cryptocom', + 'coinGecko', + 'oneInch', + 'paraswap', + 'pmm', + 'synthetix', + 'zapper', + 'zerion', + 'zeroEx', + ], + }, + selected: true, + }, + '0x514910771af9ca656af840dff83e8264ecf986ca': { + token: { + name: 'ChainLink Token', + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + symbol: 'LINK', + decimals: 18, + iconUrl: + 'https://crypto.com/price/coin-data/icon/LINK/color_icon.png', + aggregators: ['coinGecko', 'oneInch', 'paraswap', 'zapper', 'zerion'], + }, + selected: true, + }, + }, }, }; const Template = (args) => { - return ; + return ; }; export const DefaultStory = Template.bind({}); diff --git a/ui/components/app/detected-token/detected-token-values/detected-token-values.test.js b/ui/components/app/detected-token/detected-token-values/detected-token-values.test.js index 18a5aae86..e94557eac 100644 --- a/ui/components/app/detected-token/detected-token-values/detected-token-values.test.js +++ b/ui/components/app/detected-token/detected-token-values/detected-token-values.test.js @@ -7,29 +7,71 @@ import DetectedTokenValues from './detected-token-values'; describe('DetectedTokenValues', () => { const args = { - address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', - symbol: 'SNX', - decimals: 18, - iconUrl: 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', - aggregators: [ - 'aave', - 'bancor', - 'cmc', - 'cryptocom', - 'coinGecko', - 'oneInch', - 'paraswap', - 'pmm', - 'synthetix', - 'zapper', - 'zerion', - 'zeroEx', - ], + token: { + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'Aave', + 'Bancor', + 'CMC', + 'Crypto.com', + 'CoinGecko', + '1Inch', + 'Paraswap', + 'PMM', + 'Synthetix', + 'Zapper', + 'Zerion', + '0x', + ], + }, + handleTokenSelection: jest.fn(), + tokensListDetected: { + '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f': { + token: { + name: 'Synthetix Network', + address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + symbol: 'SNX', + decimals: 18, + iconUrl: + 'https://assets.coingecko.com/coins/images/3406/large/SNX.png', + aggregators: [ + 'aave', + 'bancor', + 'cmc', + 'cryptocom', + 'coinGecko', + 'oneInch', + 'paraswap', + 'pmm', + 'synthetix', + 'zapper', + 'zerion', + 'zeroEx', + ], + }, + selected: true, + }, + '0x514910771af9ca656af840dff83e8264ecf986ca': { + token: { + name: 'ChainLink Token', + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + symbol: 'LINK', + decimals: 18, + iconUrl: + 'https://crypto.com/price/coin-data/icon/LINK/color_icon.png', + aggregators: ['coinGecko', 'oneInch', 'paraswap', 'zapper', 'zerion'], + }, + selected: true, + }, + }, }; it('should render the detected token address', async () => { const store = configureStore(testData); - renderWithProvider(, store); + renderWithProvider(, store); expect(screen.getByText('0 SNX')).toBeInTheDocument(); expect(screen.getByText('$0')).toBeInTheDocument(); diff --git a/ui/components/app/detected-token/detected-token.js b/ui/components/app/detected-token/detected-token.js new file mode 100644 index 000000000..0bfede9d1 --- /dev/null +++ b/ui/components/app/detected-token/detected-token.js @@ -0,0 +1,159 @@ +import React, { useState, useContext } from 'react'; +import PropTypes from 'prop-types'; +import { useSelector, useDispatch } from 'react-redux'; +import { chain } from 'lodash'; + +import { + importTokens, + ignoreTokens, + setNewTokensImported, +} from '../../../store/actions'; +import { getDetectedTokensInCurrentNetwork } from '../../../selectors'; +import { MetaMetricsContext } from '../../../contexts/metametrics'; + +import { TOKEN_STANDARDS } from '../../../helpers/constants/common'; +import { ASSET_TYPES } from '../../../../shared/constants/transaction'; +import { EVENT, EVENT_NAMES } from '../../../../shared/constants/metametrics'; +import DetectedTokenSelectionPopover from './detected-token-selection-popover/detected-token-selection-popover'; +import DetectedTokenIgnoredPopover from './detected-token-ignored-popover/detected-token-ignored-popover'; + +const sortingBasedOnTokenSelection = (tokensDetected) => { + return ( + chain(tokensDetected) + // get the values + .values() + // create a new object with keys 'selected', 'deselected' and group the tokens + .groupBy((token) => (token.selected ? 'selected' : 'deselected')) + // ditch the 'selected' property and get just the tokens' + .mapValues((group) => group.map(({ token }) => token)) + // Exit the chain and get the underlying value, an object. + .value() + ); +}; + +const DetectedToken = ({ setShowDetectedTokens }) => { + const dispatch = useDispatch(); + const trackEvent = useContext(MetaMetricsContext); + + const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork); + + const [tokensListDetected, setTokensListDetected] = useState(() => + detectedTokens.reduce((tokenObj, token) => { + tokenObj[token.address] = { token, selected: true }; + return tokenObj; + }, {}), + ); + const [ + showDetectedTokenIgnoredPopover, + setShowDetectedTokenIgnoredPopover, + ] = useState(false); + + const importSelectedTokens = async (selectedTokens) => { + selectedTokens.forEach((importedToken) => { + trackEvent({ + event: EVENT_NAMES.TOKEN_ADDED, + category: EVENT.CATEGORIES.WALLET, + sensitiveProperties: { + token_symbol: importedToken.symbol, + token_contract_address: importedToken.address, + token_decimal_precision: importedToken.decimals, + source: EVENT.SOURCE.TOKEN.DETECTED, + token_standard: TOKEN_STANDARDS.ERC20, + asset_type: ASSET_TYPES.TOKEN, + }, + }); + }); + await dispatch(importTokens(selectedTokens)); + const tokenSymbols = selectedTokens.map(({ symbol }) => symbol); + dispatch(setNewTokensImported(tokenSymbols.join(', '))); + }; + + const handleClearTokensSelection = async () => { + const { + selected: selectedTokens = [], + deselected: deSelectedTokens = [], + } = sortingBasedOnTokenSelection(tokensListDetected); + + if (deSelectedTokens.length < detectedTokens.length) { + await importSelectedTokens(selectedTokens); + } + const tokensDetailsList = deSelectedTokens.map( + ({ symbol, address }) => `${symbol} - ${address}`, + ); + trackEvent({ + event: EVENT_NAMES.TOKEN_HIDDEN, + category: EVENT.CATEGORIES.WALLET, + sensitiveProperties: { + tokens: tokensDetailsList, + location: EVENT.LOCATION.TOKEN_DETECTION, + token_standard: TOKEN_STANDARDS.ERC20, + asset_type: ASSET_TYPES.TOKEN, + }, + }); + await dispatch(ignoreTokens(deSelectedTokens)); + setShowDetectedTokens(false); + }; + + const handleTokenSelection = (token) => { + setTokensListDetected((prevState) => ({ + ...prevState, + [token.address]: { + ...prevState[token.address], + selected: !prevState[token.address].selected, + }, + })); + }; + + const onImport = async () => { + const { selected: selectedTokens = [] } = sortingBasedOnTokenSelection( + tokensListDetected, + ); + + if (selectedTokens.length < detectedTokens.length) { + setShowDetectedTokenIgnoredPopover(true); + } else { + await importSelectedTokens(selectedTokens); + setShowDetectedTokens(false); + } + }; + + const onIgnoreAll = () => { + const newTokensListDetected = { ...tokensListDetected }; + for (const tokenAddress of Object.keys(tokensListDetected)) { + newTokensListDetected[tokenAddress].selected = false; + } + + setTokensListDetected(newTokensListDetected); + setShowDetectedTokenIgnoredPopover(true); + }; + + const onCancelIgnore = () => { + setShowDetectedTokenIgnoredPopover(false); + }; + + return ( + <> + {showDetectedTokenIgnoredPopover && ( + + )} + + + ); +}; + +DetectedToken.propTypes = { + setShowDetectedTokens: PropTypes.func.isRequired, +}; + +export default DetectedToken; diff --git a/ui/components/app/detected-token/detected-token.test.js b/ui/components/app/detected-token/detected-token.test.js new file mode 100644 index 000000000..7c7f9ee79 --- /dev/null +++ b/ui/components/app/detected-token/detected-token.test.js @@ -0,0 +1,45 @@ +import * as React from 'react'; +import { renderWithProvider, screen, fireEvent } from '../../../../test/jest'; +import configureStore from '../../../store/store'; +import testData from '../../../../.storybook/test-data'; + +import DetectedToken from './detected-token'; + +describe('DetectedToken', () => { + it('should render the detected token found page', async () => { + const store = configureStore(testData); + renderWithProvider(, store); + + expect(screen.getByText('0 LINK')).toBeInTheDocument(); + expect(screen.getByText('0 COMP')).toBeInTheDocument(); + expect(screen.getByText('0 FSW')).toBeInTheDocument(); + expect(screen.getAllByText('$0')).toHaveLength(3); + expect(screen.getAllByText('Token address:')).toHaveLength(3); + expect(screen.getByText('0x514...86CA')).toBeInTheDocument(); + expect(screen.getByText('0xc00...6888')).toBeInTheDocument(); + expect(screen.getByText('0xfff...26DB')).toBeInTheDocument(); + expect(screen.getAllByText('From token lists:')).toHaveLength(3); + expect(screen.getByText('coinGecko, oneInch')).toBeInTheDocument(); + expect(screen.getByText('+ 3 more')).toBeInTheDocument(); + fireEvent.click(screen.getByText('+ 3 more')); + expect( + screen.getByText('coinGecko, oneInch, paraswap, zapper, zerion.'), + ).toBeInTheDocument(); + expect(screen.getByText('bancor, cmc')).toBeInTheDocument(); + expect(screen.getByText('+ 8 more')).toBeInTheDocument(); + fireEvent.click(screen.getByText('+ 8 more')); + expect( + screen.getByText( + 'bancor, cmc, cryptocom, coinGecko, oneInch, paraswap, pmm, zapper, zerion, zeroEx.', + ), + ).toBeInTheDocument(); + expect(screen.getByText('aave, cmc')).toBeInTheDocument(); + expect(screen.getByText('+ 5 more')).toBeInTheDocument(); + fireEvent.click(screen.getByText('+ 5 more')); + expect( + screen.getByText( + 'aave, cmc, coinGecko, oneInch, paraswap, zapper, zerion.', + ), + ).toBeInTheDocument(); + }); +}); diff --git a/ui/components/app/detected-token/index.js b/ui/components/app/detected-token/index.js new file mode 100644 index 000000000..61c896efe --- /dev/null +++ b/ui/components/app/detected-token/index.js @@ -0,0 +1 @@ +export { default } from './detected-token'; diff --git a/ui/components/app/dropdowns/network-dropdown.js b/ui/components/app/dropdowns/network-dropdown.js index 832733392..48af4be2c 100644 --- a/ui/components/app/dropdowns/network-dropdown.js +++ b/ui/components/app/dropdowns/network-dropdown.js @@ -17,6 +17,7 @@ import { COLORS, SIZES } from '../../../helpers/constants/design-system'; import { getShowTestNetworks } from '../../../selectors'; import { getEnvironmentType } from '../../../../app/scripts/lib/util'; import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { ADD_NETWORK_ROUTE, ADVANCED_ROUTE, @@ -110,7 +111,7 @@ class NetworkDropdown extends Component { const { trackEvent } = this.context; trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Switched Networks', properties: { action: 'Home', diff --git a/ui/components/app/dropdowns/network-dropdown.test.js b/ui/components/app/dropdowns/network-dropdown.test.js index 1a963c9e8..d1a330fce 100644 --- a/ui/components/app/dropdowns/network-dropdown.test.js +++ b/ui/components/app/dropdowns/network-dropdown.test.js @@ -19,6 +19,7 @@ describe('Network Dropdown', () => { provider: { type: 'test', }, + showTestnetMessageInDropdown: false, preferences: { showTestNetworks: true, }, @@ -50,6 +51,7 @@ describe('Network Dropdown', () => { provider: { type: 'test', }, + showTestnetMessageInDropdown: false, preferences: { showTestNetworks: true, }, @@ -156,6 +158,7 @@ describe('Network Dropdown', () => { provider: { type: 'test', }, + showTestnetMessageInDropdown: false, preferences: { showTestNetworks: false, }, diff --git a/ui/components/app/edit-gas-display/edit-gas-display.component.js b/ui/components/app/edit-gas-display/edit-gas-display.component.js index 59518f605..f1d0b04f4 100644 --- a/ui/components/app/edit-gas-display/edit-gas-display.component.js +++ b/ui/components/app/edit-gas-display/edit-gas-display.component.js @@ -9,6 +9,7 @@ import { GAS_ESTIMATE_TYPES, CUSTOM_GAS_ESTIMATE, } from '../../../../shared/constants/gas'; +import { EVENT } from '../../../../shared/constants/metametrics'; import Button from '../../ui/button'; import Typography from '../../ui/typography/typography'; @@ -280,7 +281,7 @@ export default function EditGasDisplay({ setShowAdvancedForm(!showAdvancedForm); trackEvent({ event: 'Clicked "Advanced Options"', - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, properties: { action: 'Edit Screen', legacy_event: true, diff --git a/ui/components/app/edit-gas-display/index.scss b/ui/components/app/edit-gas-display/index.scss index 3af1e402c..ee0e13145 100644 --- a/ui/components/app/edit-gas-display/index.scss +++ b/ui/components/app/edit-gas-display/index.scss @@ -28,8 +28,8 @@ button.edit-gas-display__dapp-acknowledgement-button { margin: 40px auto 0 auto; display: block; - color: var(--color-secondary-default); - border: 1px solid var(--color-secondary-default); + color: var(--color-warning-default); + border: 1px solid var(--color-warning-default); text-transform: unset; width: auto; background: transparent; diff --git a/ui/components/app/edit-gas-fee-button/edit-gas-fee-button.js b/ui/components/app/edit-gas-fee-button/edit-gas-fee-button.js index 7f73181c9..d872a2895 100644 --- a/ui/components/app/edit-gas-fee-button/edit-gas-fee-button.js +++ b/ui/components/app/edit-gas-fee-button/edit-gas-fee-button.js @@ -80,23 +80,22 @@ export default function EditGasFeeButton({ userAcknowledgedGasMissing }) { - - {t('dappSuggestedTooltip', [transaction.origin])} + {transaction?.origin && ( + + {t('dappSuggestedTooltip', [transaction.origin])} + + )} + + {t('maxBaseFee')} {maxFeePerGas} - {t('maxBaseFee')} - {maxFeePerGas} + {t('maxPriorityFee')} {maxPriorityFeePerGas} - {t('maxPriorityFee')} - {maxPriorityFeePerGas} - - - {t('gasLimit')} - {gasLimit} + {t('gasLimit')} {gasLimit}
} diff --git a/ui/components/app/edit-gas-fee-button/index.scss b/ui/components/app/edit-gas-fee-button/index.scss index 52c7cbaf4..448eab674 100644 --- a/ui/components/app/edit-gas-fee-button/index.scss +++ b/ui/components/app/edit-gas-fee-button/index.scss @@ -47,3 +47,10 @@ } } } + + +// Overrides react-tippy + +.tippy-tooltip .tippy-tooltip-content .edit-gas-fee-button__tooltip { + min-width: 170px; +} diff --git a/ui/components/app/edit-gas-fee-popover/edit-gas-item/index.scss b/ui/components/app/edit-gas-fee-popover/edit-gas-item/index.scss index ed6fd0035..8e8e2607a 100644 --- a/ui/components/app/edit-gas-fee-popover/edit-gas-item/index.scss +++ b/ui/components/app/edit-gas-fee-popover/edit-gas-item/index.scss @@ -78,7 +78,7 @@ &__time-estimate-low, &__fee-estimate-high { - color: var(--color-secondary-default); + color: var(--color-warning-default); } &__time-estimate-medium, diff --git a/ui/components/app/edit-gas-fee-popover/edit-gas-tooltip/index.scss b/ui/components/app/edit-gas-fee-popover/edit-gas-tooltip/index.scss index 92d067dec..0e354d33e 100644 --- a/ui/components/app/edit-gas-fee-popover/edit-gas-tooltip/index.scss +++ b/ui/components/app/edit-gas-fee-popover/edit-gas-tooltip/index.scss @@ -17,7 +17,7 @@ } &__dialog { - background-color: var(--color-secondary-default); + background-color: var(--color-warning-default); border-radius: 30px; margin: 4px 0; text-align: center; diff --git a/ui/components/app/edit-gas-fee-popover/network-statistics/status-slider/index.scss b/ui/components/app/edit-gas-fee-popover/network-statistics/status-slider/index.scss index 1c295cbb9..d8a89e0fc 100644 --- a/ui/components/app/edit-gas-fee-popover/network-statistics/status-slider/index.scss +++ b/ui/components/app/edit-gas-fee-popover/network-statistics/status-slider/index.scss @@ -29,7 +29,7 @@ height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; - border-top: 10px solid white; + border-top: 10px solid var(--color-background-default); position: relative; margin-bottom: -2px; } diff --git a/ui/components/app/flask/experimental-area/experimental-area.js b/ui/components/app/flask/experimental-area/experimental-area.js index 9a3a8ec1e..15160c395 100644 --- a/ui/components/app/flask/experimental-area/experimental-area.js +++ b/ui/components/app/flask/experimental-area/experimental-area.js @@ -86,6 +86,8 @@ export default function ExperimentalArea({ redirectTo }) {

{t('flaskWelcomeWarning2')}


{t('flaskWelcomeWarning3')}

+
+

{t('flaskWelcomeWarning4')}

) : null; - }, [isUnlocking, hasTriggeredUnlock, t]); + }, [isUnlocking, hasTriggeredUnlock, triggerOnLongPressed, t]); return (
+ {this.renderRow({ + logo: , + title: t('buyCryptoWithCoinbasePay', [symbol]), + text: t('buyCryptoWithCoinbasePayDescription', [symbol]), + buttonLabel: t('continueToCoinbasePay'), + onButtonClick: () => { + this.context.trackEvent({ + category: EVENT.CATEGORIES.ACCOUNTS, + event: 'Click buy Ether via Coinbase Pay', + properties: { + action: 'Deposit Ether', + legacy_event: true, + }, + }); + toCoinbasePay(address, chainId); + }, + hide: !isBuyableCoinbasePayChain, + })} {this.renderRow({ logo: , title: t('buyCryptoWithTransak', [symbol]), @@ -137,7 +161,7 @@ export default class DepositEtherModal extends Component { buttonLabel: t('continueToTransak'), onButtonClick: () => { this.context.trackEvent({ - category: 'Accounts', + category: EVENT.CATEGORIES.ACCOUNTS, event: 'Click buy Ether via Transak', properties: { action: 'Deposit Ether', @@ -155,7 +179,7 @@ export default class DepositEtherModal extends Component { buttonLabel: t('continueToMoonPay'), onButtonClick: () => { this.context.trackEvent({ - category: 'Accounts', + category: EVENT.CATEGORIES.ACCOUNTS, event: 'Click buy Ether via MoonPay', properties: { action: 'Deposit Ether', @@ -168,21 +192,21 @@ export default class DepositEtherModal extends Component { })} {this.renderRow({ logo: , - title: t('buyWithWyre'), - text: t('buyWithWyreDescription'), + title: t('buyWithWyre', [symbol]), + text: t('buyWithWyreDescription', [symbol]), buttonLabel: t('continueToWyre'), onButtonClick: () => { this.context.trackEvent({ - category: 'Accounts', + category: EVENT.CATEGORIES.ACCOUNTS, event: 'Click buy Ether via Wyre', properties: { action: 'Deposit Ether', legacy_event: true, }, }); - toWyre(address); + toWyre(address, chainId); }, - hide: !isMainnet, + hide: !isBuyableWyreChain, })} {this.renderRow({ logo: ( diff --git a/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js index 227e63047..3b71d5740 100644 --- a/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js +++ b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js @@ -12,6 +12,8 @@ import { getSelectedAddress, getIsBuyableTransakChain, getIsBuyableMoonPayChain, + getIsBuyableWyreChain, + getIsBuyableCoinbasePayChain, } from '../../../../selectors/selectors'; import DepositEtherModal from './deposit-ether-modal.component'; @@ -23,13 +25,15 @@ function mapStateToProps(state) { address: getSelectedAddress(state), isBuyableTransakChain: getIsBuyableTransakChain(state), isBuyableMoonPayChain: getIsBuyableMoonPayChain(state), + isBuyableWyreChain: getIsBuyableWyreChain(state), + isBuyableCoinbasePayChain: getIsBuyableCoinbasePayChain(state), }; } function mapDispatchToProps(dispatch) { return { - toWyre: (address) => { - dispatch(buyEth({ service: 'wyre', address })); + toWyre: (address, chainId) => { + dispatch(buyEth({ service: 'wyre', address, chainId })); }, toTransak: (address, chainId) => { dispatch(buyEth({ service: 'transak', address, chainId })); @@ -37,6 +41,9 @@ function mapDispatchToProps(dispatch) { toMoonPay: (address, chainId) => { dispatch(buyEth({ service: 'moonpay', address, chainId })); }, + toCoinbasePay: (address, chainId) => { + dispatch(buyEth({ service: 'coinbase', address, chainId })); + }, hideModal: () => { dispatch(hideModal()); }, diff --git a/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js index b80cc894c..15e0dfa08 100644 --- a/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js +++ b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import MetaFoxLogo from '../../../ui/metafox-logo'; import PageContainerFooter from '../../../ui/page-container/page-container-footer'; +import { EVENT } from '../../../../../shared/constants/metametrics'; export default class MetaMetricsOptInModal extends Component { static propTypes = { @@ -110,7 +111,7 @@ export default class MetaMetricsOptInModal extends Component { setParticipateInMetaMetrics(false).then(() => { trackEvent( { - category: 'Onboarding', + category: EVENT.CATEGORIES.ONBOARDING, event: 'Metrics Opt Out', properties: { action: 'Metrics Option', @@ -131,7 +132,7 @@ export default class MetaMetricsOptInModal extends Component { setParticipateInMetaMetrics(true).then(() => { trackEvent( { - category: 'Onboarding', + category: EVENT.CATEGORIES.ONBOARDING, event: 'Metrics Opt In', properties: { action: 'Metrics Option', diff --git a/ui/components/app/modals/modal.js b/ui/components/app/modals/modal.js index 3eab79fcc..0e5d1dcda 100644 --- a/ui/components/app/modals/modal.js +++ b/ui/components/app/modals/modal.js @@ -10,7 +10,6 @@ import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app'; // Modal Components import ConfirmCustomizeGasModal from '../gas-customization/gas-modal-page-container'; -import SwapsGasCustomizationModal from '../../../pages/swaps/swaps-gas-customization-modal'; import DepositEtherModal from './deposit-ether-modal'; import AccountDetailsModal from './account-details-modal'; import ExportPrivateKeyModal from './export-private-key-modal'; @@ -265,31 +264,6 @@ const MODALS = { }, }, - CUSTOMIZE_METASWAP_GAS: { - contents: , - mobileModalStyle: { - width: '100vw', - height: '100vh', - top: '0', - transform: 'none', - left: '0', - right: '0', - margin: '0 auto', - }, - laptopModalStyle: { - width: 'auto', - height: '0px', - top: '80px', - left: '0px', - transform: 'none', - margin: '0 auto', - position: 'relative', - }, - contentStyle: { - borderRadius: '8px', - }, - }, - EDIT_APPROVAL_PERMISSION: { contents: , mobileModalStyle: { diff --git a/ui/components/app/modals/qr-scanner/qr-scanner.component.js b/ui/components/app/modals/qr-scanner/qr-scanner.component.js index 68cd8444f..a3fd43501 100644 --- a/ui/components/app/modals/qr-scanner/qr-scanner.component.js +++ b/ui/components/app/modals/qr-scanner/qr-scanner.component.js @@ -251,7 +251,7 @@ export default class QrScanner extends Component { }} /> {ready === READY_STATE.READY ? null : ( - + )}
diff --git a/ui/components/app/permission-page-container/permission-page-container.component.js b/ui/components/app/permission-page-container/permission-page-container.component.js index c4ee6cde1..60b39bd39 100644 --- a/ui/components/app/permission-page-container/permission-page-container.component.js +++ b/ui/components/app/permission-page-container/permission-page-container.component.js @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { isEqual } from 'lodash'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { PageContainerFooter } from '../../ui/page-container'; import PermissionsConnectFooter from '../permissions-connect-footer'; import { PermissionPageContainerContent } from '.'; @@ -64,7 +65,7 @@ export default class PermissionPageContainer extends Component { componentDidMount() { this.context.trackEvent({ - category: 'Auth', + category: EVENT.CATEGORIES.AUTH, event: 'Tab Opened', properties: { action: 'Connect', diff --git a/ui/components/app/permissions-connect-header/index.scss b/ui/components/app/permissions-connect-header/index.scss index faecd4ab1..3f77ad9f5 100644 --- a/ui/components/app/permissions-connect-header/index.scss +++ b/ui/components/app/permissions-connect-header/index.scss @@ -7,6 +7,7 @@ display: flex; flex-direction: column; align-items: center; + margin-bottom: 16px; } &__title { @@ -14,7 +15,6 @@ text-align: center; color: var(--color-text-default); - margin-top: 16px; font-weight: bold; } diff --git a/ui/components/app/permissions-connect-header/permissions-connect-header.component.js b/ui/components/app/permissions-connect-header/permissions-connect-header.component.js index c5ddf0110..706037899 100644 --- a/ui/components/app/permissions-connect-header/permissions-connect-header.component.js +++ b/ui/components/app/permissions-connect-header/permissions-connect-header.component.js @@ -5,15 +5,9 @@ import Box from '../../ui/box'; import { FLEX_DIRECTION, JUSTIFY_CONTENT, - ///: BEGIN:ONLY_INCLUDE_IN(flask) - COLORS, - TYPOGRAPHY, - TEXT_ALIGN, - ///: END:ONLY_INCLUDE_IN } from '../../../helpers/constants/design-system'; ///: BEGIN:ONLY_INCLUDE_IN(flask) import SnapsAuthorshipPill from '../flask/snaps-authorship-pill'; -import Typography from '../../ui/typography'; ///: END:ONLY_INCLUDE_IN export default class PermissionsConnectHeader extends Component { @@ -31,8 +25,8 @@ export default class PermissionsConnectHeader extends Component { boxProps: PropTypes.shape({ ...Box.propTypes }), headerText: PropTypes.string, ///: BEGIN:ONLY_INCLUDE_IN(flask) - npmPackageName: PropTypes.string, snapVersion: PropTypes.string, + isSnapInstall: PropTypes.bool, ///: END:ONLY_INCLUDE_IN }; @@ -44,11 +38,29 @@ export default class PermissionsConnectHeader extends Component { }; renderHeaderIcon() { - const { iconUrl, iconName, siteOrigin } = this.props; + const { + iconUrl, + iconName, + siteOrigin, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + isSnapInstall, + ///: END:ONLY_INCLUDE_IN + } = this.props; + + ///: BEGIN:ONLY_INCLUDE_IN(flask) + if (isSnapInstall) { + return null; + } + ///: END:ONLY_INCLUDE_IN return (
- +
); } @@ -59,14 +71,11 @@ export default class PermissionsConnectHeader extends Component { headerTitle, headerText, ///: BEGIN:ONLY_INCLUDE_IN(flask) - npmPackageName, + siteOrigin, snapVersion, + isSnapInstall, ///: END:ONLY_INCLUDE_IN } = this.props; - ///: BEGIN:ONLY_INCLUDE_IN(flask) - const npmPackageUrl = `https://www.npmjs.com/package/${npmPackageName}`; - const { t } = this.context; - ///: END:ONLY_INCLUDE_IN return ( {headerTitle} { ///: BEGIN:ONLY_INCLUDE_IN(flask) - npmPackageName ? ( - - ) : null - ///: END:ONLY_INCLUDE_IN - } - { - ///: BEGIN:ONLY_INCLUDE_IN(flask) - snapVersion && ( - - {t('shorthandVersion', [snapVersion])} - + isSnapInstall && ( + ) ///: END:ONLY_INCLUDE_IN } diff --git a/ui/components/app/permissions-connect-permission-list/index.scss b/ui/components/app/permissions-connect-permission-list/index.scss index cb2b462db..8dfc4cb6b 100644 --- a/ui/components/app/permissions-connect-permission-list/index.scss +++ b/ui/components/app/permissions-connect-permission-list/index.scss @@ -17,7 +17,7 @@ padding: 16px; min-width: 16px; min-height: 16px; - color: var(--color-icon-default); + color: var(--color-icon-alternative); font-size: 1rem; } } diff --git a/ui/components/app/qr-hardware-popover/enhanced-reader.js b/ui/components/app/qr-hardware-popover/enhanced-reader.js index ae753145e..18ae2f931 100644 --- a/ui/components/app/qr-hardware-popover/enhanced-reader.js +++ b/ui/components/app/qr-hardware-popover/enhanced-reader.js @@ -55,7 +55,7 @@ const EnhancedReader = ({ handleScan }) => { filter: 'blur(4px)', }} /> - {canplay ? null : } + {canplay ? null : } ); }; diff --git a/ui/components/app/selected-account/index.scss b/ui/components/app/selected-account/index.scss index bb973d5c7..a0d87d47a 100644 --- a/ui/components/app/selected-account/index.scss +++ b/ui/components/app/selected-account/index.scss @@ -25,7 +25,7 @@ &__address { @include H7; - color: var(--color-text-muted); + color: var(--color-text-alternative); display: flex; align-items: center; } diff --git a/ui/components/app/selected-account/selected-account.component.js b/ui/components/app/selected-account/selected-account.component.js index 1dc3c135f..06609b54f 100644 --- a/ui/components/app/selected-account/selected-account.component.js +++ b/ui/components/app/selected-account/selected-account.component.js @@ -63,7 +63,7 @@ class SelectedAccount extends Component {
{shortenAddress(checksummedAddress)}
- +
diff --git a/ui/components/app/signature-request-original/README.mdx b/ui/components/app/signature-request-original/README.mdx new file mode 100644 index 000000000..6c07ccd38 --- /dev/null +++ b/ui/components/app/signature-request-original/README.mdx @@ -0,0 +1,15 @@ +import { Story, Canvas, ArgsTable } from '@storybook/addon-docs'; + +import SignatureRequestOriginal from '.'; + +# Signature Request + +dApp requesting a signature from the user. This component appears for eth_signTypedData signatures are not v3 or v4. For other signatures, please see SignatureRequest. + + + + + +## Component API + + diff --git a/ui/components/app/signature-request-original/index.scss b/ui/components/app/signature-request-original/index.scss index 2e2aca65f..e81a8df01 100644 --- a/ui/components/app/signature-request-original/index.scss +++ b/ui/components/app/signature-request-original/index.scss @@ -20,6 +20,10 @@ @media screen and (min-width: $break-large) { height: 620px; } + + &__reject { + padding-bottom: 20px; + } } &__typed-container { @@ -166,8 +170,6 @@ &__origin { margin-left: 5px; - overflow: hidden; - text-overflow: ellipsis; } &__notice, diff --git a/ui/components/app/signature-request-original/signature-request-original.component.js b/ui/components/app/signature-request-original/signature-request-original.component.js index 1c8959f18..6b878ac33 100644 --- a/ui/components/app/signature-request-original/signature-request-original.component.js +++ b/ui/components/app/signature-request-original/signature-request-original.component.js @@ -6,12 +6,14 @@ import { ObjectInspector } from 'react-inspector'; import LedgerInstructionField from '../ledger-instruction-field'; import { MESSAGE_TYPE } from '../../../../shared/constants/app'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { getURLHostName } from '../../../helpers/utils/util'; import Identicon from '../../ui/identicon'; import AccountListItem from '../account-list-item'; import { conversionUtil } from '../../../../shared/modules/conversion.utils'; import Button from '../../ui/button'; import SiteIcon from '../../ui/site-icon'; +import SiteOrigin from '../../ui/site-origin'; export default class SignatureRequestOriginal extends Component { static contextTypes = { @@ -37,6 +39,9 @@ export default class SignatureRequestOriginal extends Component { hardwareWalletRequiresConnection: PropTypes.bool, isLedgerWallet: PropTypes.bool, nativeCurrency: PropTypes.string.isRequired, + messagesCount: PropTypes.number, + showRejectTransactionsConfirmationModal: PropTypes.func.isRequired, + cancelAll: PropTypes.func.isRequired, }; state = { @@ -144,9 +149,10 @@ export default class SignatureRequestOriginal extends Component { size={24} /> ) : null} -
- {txData.msgParams.origin} -
+ ); }; @@ -223,11 +229,11 @@ export default class SignatureRequestOriginal extends Component { onClick={() => { global.platform.openTab({ url: - 'https://metamask.zendesk.com/hc/en-us/articles/360015488751', + 'https://consensys.net/blog/metamask/the-seal-of-approval-know-what-youre-consenting-to-with-permissions-and-approvals-in-metamask/', }); }} > - {this.context.t('learnMore')} + {this.context.t('learnMoreUpperCase')} ) : null} @@ -273,7 +279,7 @@ export default class SignatureRequestOriginal extends Component { onClick={async (event) => { await cancel(event); trackEvent({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, event: 'Cancel', properties: { action: 'Sign Request', @@ -296,7 +302,7 @@ export default class SignatureRequestOriginal extends Component { onClick={async (event) => { await sign(event); trackEvent({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, event: 'Confirm', properties: { action: 'Sign Request', @@ -314,7 +320,31 @@ export default class SignatureRequestOriginal extends Component { ); }; + handleCancelAll = () => { + const { + cancelAll, + clearConfirmTransaction, + history, + mostRecentOverviewPage, + showRejectTransactionsConfirmationModal, + messagesCount, + } = this.props; + const unapprovedTxCount = messagesCount; + + showRejectTransactionsConfirmationModal({ + unapprovedTxCount, + onSubmit: async () => { + await cancelAll(); + clearConfirmTransaction(); + history.push(mostRecentOverviewPage); + }, + }); + }; + render = () => { + const { messagesCount } = this.props; + const { t } = this.context; + const rejectNText = t('rejectTxsN', [messagesCount]); return (
{this.renderHeader()} @@ -325,6 +355,15 @@ export default class SignatureRequestOriginal extends Component {
) : null} {this.renderFooter()} + {messagesCount > 1 ? ( + + ) : null} ); }; diff --git a/ui/components/app/signature-request-original/signature-request-original.container.js b/ui/components/app/signature-request-original/signature-request-original.container.js index 8031d92ed..f30310358 100644 --- a/ui/components/app/signature-request-original/signature-request-original.container.js +++ b/ui/components/app/signature-request-original/signature-request-original.container.js @@ -3,14 +3,16 @@ import { compose } from 'redux'; import { withRouter } from 'react-router-dom'; import { MESSAGE_TYPE } from '../../../../shared/constants/app'; -import { goHome } from '../../../store/actions'; +import { goHome, cancelMsgs, showModal } from '../../../store/actions'; import { accountsWithSendEtherInfoSelector, conversionRateSelector, getSubjectMetadata, doesAddressRequireLedgerHidConnection, + unconfirmedMessagesHashSelector, + getTotalUnapprovedMessagesCount, } from '../../../selectors'; -import { getAccountByAddress } from '../../../helpers/utils/util'; +import { getAccountByAddress, valuesFor } from '../../../helpers/utils/util'; import { clearConfirmTransaction } from '../../../ducks/confirm-transaction/confirm-transaction.duck'; import { getMostRecentOverviewPage } from '../../../ducks/history/history'; import { @@ -29,6 +31,8 @@ function mapStateToProps(state, ownProps) { from, ); const isLedgerWallet = isAddressLedger(state, from); + const messagesList = unconfirmedMessagesHashSelector(state); + const messagesCount = getTotalUnapprovedMessagesCount(state); return { requester: null, @@ -41,6 +45,8 @@ function mapStateToProps(state, ownProps) { // not passed to component allAccounts: accountsWithSendEtherInfoSelector(state), subjectMetadata: getSubjectMetadata(state), + messagesList, + messagesCount, }; } @@ -48,6 +54,19 @@ function mapDispatchToProps(dispatch) { return { goHome: () => dispatch(goHome()), clearConfirmTransaction: () => dispatch(clearConfirmTransaction()), + showRejectTransactionsConfirmationModal: ({ + onSubmit, + unapprovedTxCount: messagesCount, + }) => { + return dispatch( + showModal({ + name: 'REJECT_TRANSACTIONS', + onSubmit, + unapprovedTxCount: messagesCount, + }), + ); + }, + cancelAll: (messagesList) => dispatch(cancelMsgs(messagesList)), }; } @@ -62,7 +81,7 @@ function mergeProps(stateProps, dispatchProps, ownProps) { txData, } = ownProps; - const { allAccounts, ...otherStateProps } = stateProps; + const { allAccounts, messagesList, ...otherStateProps } = stateProps; const { type, @@ -71,6 +90,8 @@ function mergeProps(stateProps, dispatchProps, ownProps) { const fromAccount = getAccountByAddress(allAccounts, from); + const { cancelAll: dispatchCancelAll } = dispatchProps; + let cancel; let sign; if (type === MESSAGE_TYPE.PERSONAL_SIGN) { @@ -92,6 +113,7 @@ function mergeProps(stateProps, dispatchProps, ownProps) { txData, cancel, sign, + cancelAll: () => dispatchCancelAll(valuesFor(messagesList)), }; } diff --git a/ui/components/app/signature-request-original/signature-request-original.stories.js b/ui/components/app/signature-request-original/signature-request-original.stories.js new file mode 100644 index 000000000..bc2c73900 --- /dev/null +++ b/ui/components/app/signature-request-original/signature-request-original.stories.js @@ -0,0 +1,132 @@ +import React from 'react'; +import { action } from '@storybook/addon-actions'; +import { MESSAGE_TYPE } from '../../../../shared/constants/app'; +import testData from '../../../../.storybook/test-data'; +import README from './README.mdx'; +import SignatureRequestOriginal from './signature-request-original.component'; + +const [MOCK_PRIMARY_IDENTITY] = Object.values(testData.metamask.identities); + +const MOCK_SIGN_DATA = JSON.stringify({ + domain: { + name: 'happydapp.website', + }, + message: { + string: 'haay wuurl', + number: 42, + }, + primaryType: 'Mail', + types: { + EIP712Domain: [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'address' }, + ], + Group: [ + { name: 'name', type: 'string' }, + { name: 'members', type: 'Person[]' }, + ], + Mail: [ + { name: 'from', type: 'Person' }, + { name: 'to', type: 'Person[]' }, + { name: 'contents', type: 'string' }, + ], + Person: [ + { name: 'name', type: 'string' }, + { name: 'wallets', type: 'address[]' }, + ], + }, +}); + +export default { + title: 'Components/App/SignatureRequestOriginal', + id: __filename, + component: SignatureRequestOriginal, + parameters: { + docs: { + page: README, + }, + }, + argTypes: { + fromAccount: { + table: { + address: { control: 'text' }, + balance: { control: 'text' }, + name: { control: 'text' }, + }, + }, + hardwareWalletRequiresConnection: { control: 'boolean' }, + isLedgerWallet: { control: 'boolean' }, + nativeCurrency: { control: 'text' }, + txData: { control: 'object' }, + clearConfirmTransaction: { action: 'Clean Confirm' }, + cancel: { action: 'Cancel' }, + sign: { action: 'Sign' }, + }, + args: { + fromAccount: MOCK_PRIMARY_IDENTITY, + history: { + push: action('history.push()'), + }, + mostRecentOverviewPage: '/', + nativeCurrency: 'ETH', + }, +}; + +const Template = (args) => { + return ; +}; + +export const DefaultStory = Template.bind({}); + +DefaultStory.storyName = 'personal_sign Type'; + +DefaultStory.args = { + txData: { + msgParams: { + data: MOCK_SIGN_DATA, + origin: 'https://happydapp.website/governance?futarchy=true', + }, + type: MESSAGE_TYPE.PERSONAL_SIGN, + }, +}; + +export const ETHSignStory = Template.bind({}); + +ETHSignStory.storyName = 'eth_sign Type'; + +ETHSignStory.args = { + txData: { + msgParams: { + data: MOCK_SIGN_DATA, + origin: 'https://happydapp.website/governance?futarchy=true', + }, + type: MESSAGE_TYPE.ETH_SIGN, + }, +}; + +export const ETHSignTypedStory = Template.bind({}); + +ETHSignTypedStory.storyName = 'eth_signTypedData Type'; + +ETHSignTypedStory.args = { + txData: { + msgParams: { + data: [ + { + type: 'string', + name: 'Message', + value: 'Hi, Alice!', + }, + { + type: 'uint32', + name: 'A number', + value: '1337', + }, + ], + origin: 'https://happydapp.website/governance?futarchy=true', + }, + type: MESSAGE_TYPE.ETH_SIGN_TYPED_DATA, + }, +}; diff --git a/ui/components/app/signature-request/index.scss b/ui/components/app/signature-request/index.scss index 1483054d5..a9896ed18 100644 --- a/ui/components/app/signature-request/index.scss +++ b/ui/components/app/signature-request/index.scss @@ -68,6 +68,8 @@ &__info { @include H7; + + padding: 0 12px 4px; } &__info--bolded { @@ -85,6 +87,3 @@ .identicon {} } -.signature-request-footer { - flex: 1 1 auto; -} diff --git a/ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js b/ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js index a42e4f2ae..f4a84b734 100644 --- a/ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js +++ b/ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js @@ -17,10 +17,10 @@ export default class SignatureRequestFooter extends PureComponent { const { cancelAction, signAction, disabled = false } = this.props; return (
- -
diff --git a/ui/components/app/signature-request/signature-request-message/index.scss b/ui/components/app/signature-request/signature-request-message/index.scss index 343bd0563..ef2baa76d 100644 --- a/ui/components/app/signature-request/signature-request-message/index.scss +++ b/ui/components/app/signature-request/signature-request-message/index.scss @@ -1,7 +1,7 @@ .signature-request-message { flex: 1 60%; display: flex; - max-height: 230px; + max-height: 231px; flex-direction: column; position: relative; diff --git a/ui/components/app/signature-request/signature-request-message/signature-request-message.component.js b/ui/components/app/signature-request/signature-request-message/signature-request-message.component.js index 2a02cdcdd..641931919 100644 --- a/ui/components/app/signature-request/signature-request-message/signature-request-message.component.js +++ b/ui/components/app/signature-request/signature-request-message/signature-request-message.component.js @@ -26,7 +26,7 @@ export default class SignatureRequestMessage extends PureComponent { } const { scrollTop, offsetHeight, scrollHeight } = this.props.messageRootRef; - const isAtBottom = scrollTop + offsetHeight >= scrollHeight; + const isAtBottom = Math.round(scrollTop) + offsetHeight >= scrollHeight; if (isAtBottom) { this.setState({ messageIsScrolled: true }); diff --git a/ui/components/app/signature-request/signature-request.component.js b/ui/components/app/signature-request/signature-request.component.js index 32a501880..a76dfa8b0 100644 --- a/ui/components/app/signature-request/signature-request.component.js +++ b/ui/components/app/signature-request/signature-request.component.js @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import Identicon from '../../ui/identicon'; import LedgerInstructionField from '../ledger-instruction-field'; import { sanitizeMessage } from '../../../helpers/utils/util'; +import { EVENT } from '../../../../shared/constants/metametrics'; +import SiteOrigin from '../../ui/site-origin'; import Header from './signature-request-header'; import Footer from './signature-request-footer'; import Message from './signature-request-message'; @@ -78,7 +80,7 @@ export default class SignatureRequest extends PureComponent { const onSign = (event) => { sign(event); trackEvent({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, event: 'Confirm', properties: { action: 'Sign Request', @@ -92,7 +94,7 @@ export default class SignatureRequest extends PureComponent { const onCancel = (event) => { cancel(event); trackEvent({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, event: 'Cancel', properties: { action: 'Sign Request', @@ -123,7 +125,10 @@ export default class SignatureRequest extends PureComponent {
{domain.name}
-
{origin}
+
{this.formatWallet(fromAddress)}
diff --git a/ui/components/app/signature-request/signature-request.stories.js b/ui/components/app/signature-request/signature-request.stories.js index a1c53a69b..f3ebe0e1b 100644 --- a/ui/components/app/signature-request/signature-request.stories.js +++ b/ui/components/app/signature-request/signature-request.stories.js @@ -3,7 +3,7 @@ import testData from '../../../../.storybook/test-data'; import README from './README.mdx'; import SignatureRequest from './signature-request.component'; -const primaryIdentity = Object.values(testData.metamask.identities)[0]; +const [MOCK_PRIMARY_IDENTITY] = Object.values(testData.metamask.identities); export default { title: 'Components/App/SignatureRequest', @@ -23,13 +23,11 @@ export default { name: { control: 'text' }, }, }, + hardwareWalletRequiresConnection: { control: 'boolean' }, isLedgerWallet: { control: 'boolean' }, clearConfirmTransaction: { action: 'Clean Confirm' }, cancel: { action: 'Cancel' }, sign: { action: 'Sign' }, - hardwareWalletRequiresConnection: { - action: 'hardwareWalletRequiresConnection', - }, }, }; @@ -50,11 +48,31 @@ DefaultStory.args = { string: 'haay wuurl', number: 42, }, + primaryType: 'Mail', + types: { + EIP712Domain: [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'address' }, + ], + Group: [ + { name: 'name', type: 'string' }, + { name: 'members', type: 'Person[]' }, + ], + Mail: [ + { name: 'from', type: 'Person' }, + { name: 'to', type: 'Person[]' }, + { name: 'contents', type: 'string' }, + ], + Person: [ + { name: 'name', type: 'string' }, + { name: 'wallets', type: 'address[]' }, + ], + }, }), origin: 'https://happydapp.website/governance?futarchy=true', }, }, - fromAccount: primaryIdentity, + fromAccount: MOCK_PRIMARY_IDENTITY, }; - -DefaultStory.storyName = 'Default'; diff --git a/ui/components/app/srp-input/srp-input.js b/ui/components/app/srp-input/srp-input.js index 0b114d63c..1a3eb5810 100644 --- a/ui/components/app/srp-input/srp-input.js +++ b/ui/components/app/srp-input/srp-input.js @@ -10,6 +10,7 @@ import Typography from '../../ui/typography'; import ShowHideToggle from '../../ui/show-hide-toggle'; import { FONT_WEIGHT, + TEXT_ALIGN, TYPOGRAPHY, } from '../../../helpers/constants/design-system'; import { parseSecretRecoveryPhrase } from './parse-secret-recovery-phrase'; @@ -124,7 +125,11 @@ export default function SrpInput({ onChange, srpText }) { return (
); diff --git a/ui/pages/keychains/restore-vault.js b/ui/pages/keychains/restore-vault.js index 87d6635e9..eda28ed55 100644 --- a/ui/pages/keychains/restore-vault.js +++ b/ui/pages/keychains/restore-vault.js @@ -13,6 +13,7 @@ import Box from '../../components/ui/box'; import Typography from '../../components/ui/typography'; import ZENDESK_URLS from '../../helpers/constants/zendesk-url'; import { TYPOGRAPHY, COLORS } from '../../helpers/constants/design-system'; +import { EVENT } from '../../../shared/constants/metametrics'; class RestoreVaultPage extends Component { static contextTypes = { @@ -41,7 +42,7 @@ class RestoreVaultPage extends Component { leaveImportSeedScreenState(); await createNewVaultAndRestore(password, seedPhrase); this.context.trackEvent({ - category: 'Retention', + category: EVENT.CATEGORIES.RETENTION, event: 'onboardingRestoredVault', properties: { action: 'userEntersSeedPhrase', diff --git a/ui/pages/notifications/index.js b/ui/pages/notifications/index.js new file mode 100644 index 000000000..d9f22168e --- /dev/null +++ b/ui/pages/notifications/index.js @@ -0,0 +1 @@ +export { default } from './notifications'; diff --git a/ui/pages/notifications/index.scss b/ui/pages/notifications/index.scss new file mode 100644 index 000000000..a76a4cb87 --- /dev/null +++ b/ui/pages/notifications/index.scss @@ -0,0 +1,114 @@ +.notifications { + position: relative; + display: flex; + flex-direction: column; + background-color: var(--color-background-default); + + &__header { + display: flex; + flex-direction: row; + justify-content: space-between; + width: 100%; + padding: 65px 24px 15px 24px; + border-bottom: 1px solid var(--color-border-muted); + + @media screen and (max-width: $break-small) { + padding: 10px 20px; + } + + &__title-container { + display: flex; + flex-flow: row; + align-items: center; + flex: 0 0 auto; + + &__title { + @include H3; + + margin-left: 26px; + + @media screen and (max-width: $break-small) { + @include H6; + + margin-left: 16px; + font-weight: bold; + } + } + } + + &_button { + width: auto; + + @media screen and (max-width: $break-small) { + font-size: 0.75rem; + padding: 3.5px 1rem; + } + } + } + + &__container { + display: flex; + overflow: auto; + flex-direction: column; + flex: 1 1 auto; + + @media screen and (max-width: $break-small) { + height: 100%; + } + + &__text { + @include H3; + + color: var(--color-text-muted); + text-align: center; + + @media screen and (max-width: $break-small) { + @include H6; + } + } + } + + .empty { + justify-content: center; + align-items: center; + } + + &__item { + display: flex; + flex-direction: row; + align-items: center; + border-bottom: 1px solid var(--color-border-muted); + padding: 16px; + cursor: pointer; + + &:hover { + background-color: var(--color-background-alternative); + } + + &__unread-dot { + content: ' '; + align-self: flex-start; + margin-top: 6px; + width: 8px; + height: 8px; + background-color: transparent; + border-radius: 50%; + } + + .unread { + background-color: var(--color-primary-default); + } + + &__details { + display: flex; + flex-direction: column; + margin-left: 12px; + + &__infos { + color: var(--color-text-muted); + font-size: 12px; + margin-top: 6px; + } + } + } +} diff --git a/ui/pages/notifications/notification.test.js b/ui/pages/notifications/notification.test.js new file mode 100644 index 000000000..b66a9113e --- /dev/null +++ b/ui/pages/notifications/notification.test.js @@ -0,0 +1,100 @@ +import React from 'react'; + +import { renderWithProvider } from '../../../test/lib/render-helpers'; +import configureStore from '../../store/store'; +import Notifications, { NotificationItem } from './notifications'; + +describe('Notifications', () => { + const render = (params) => { + const store = configureStore({ + ...params, + }); + + return renderWithProvider(, store); + }; + + it('can render a list of notifications', () => { + const mockStore = { + metamask: { + notifications: { + test: { + id: 'test', + origin: 'test', + createdDate: 1652967897732, + readDate: null, + message: 'foo', + }, + test2: { + id: 'test2', + origin: 'test', + createdDate: 1652967897732, + readDate: null, + message: 'bar', + }, + }, + snaps: { + test: { + enabled: true, + id: 'test', + manifest: { + proposedName: 'Notification Example Snap', + description: 'A notification example snap.', + }, + }, + }, + }, + }; + + const { getByText } = render(mockStore); + + expect( + getByText(mockStore.metamask.notifications.test.message), + ).toBeDefined(); + + expect( + getByText(mockStore.metamask.notifications.test2.message), + ).toBeDefined(); + }); + + it('can render an empty list of notifications', () => { + const mockStore = { + metamask: { + notifications: {}, + snaps: {}, + }, + }; + + const { getByText } = render(mockStore); + + expect(getByText('Nothing to see here.')).toBeDefined(); + }); +}); + +describe('NotificationItem', () => { + const render = (props) => renderWithProvider(); + it('can render notification item', () => { + const props = { + notification: { + id: 'test', + origin: 'test', + createdDate: 1652967897732, + readDate: null, + message: 'Hello, http://localhost:8086!', + }, + snaps: [ + { + id: 'test', + tabMessage: () => 'test snap name', + descriptionMessage: () => 'test description', + sectionMessage: () => 'test section Message', + route: '/test', + icon: 'test', + }, + ], + onItemClick: jest.fn(), + }; + const { getByText } = render(props); + + expect(getByText(props.notification.message)).toBeDefined(); + }); +}); diff --git a/ui/pages/notifications/notifications.js b/ui/pages/notifications/notifications.js new file mode 100644 index 000000000..3c485137a --- /dev/null +++ b/ui/pages/notifications/notifications.js @@ -0,0 +1,141 @@ +import React, { useEffect } from 'react'; +import PropTypes from 'prop-types'; +import classnames from 'classnames'; +import { useDispatch, useSelector } from 'react-redux'; +import { useHistory } from 'react-router-dom'; +import { formatDate } from '../../helpers/utils/util'; +import { + getNotifications, + getSnapsRouteObjects, + getUnreadNotifications, +} from '../../selectors'; +import { DEFAULT_ROUTE } from '../../helpers/constants/routes'; +import { + deleteExpiredNotifications, + markNotificationsAsRead, +} from '../../store/actions'; +import IconCaretLeft from '../../components/ui/icon/icon-caret-left'; +import Button from '../../components/ui/button'; +import { useI18nContext } from '../../hooks/useI18nContext'; + +export function NotificationItem({ notification, snaps, onItemClick }) { + const { message, origin, createdDate, readDate } = notification; + const history = useHistory(); + const t = useI18nContext(); + + const snap = snaps.find(({ id: snapId }) => { + return snapId === origin; + }); + + const handleNameClick = (e) => { + e.stopPropagation(); + history.push(snap.route); + }; + + const handleItemClick = () => onItemClick(notification); + + return ( +
+
+
+

{message}

+

+ {t('notificationsInfos', [ + formatDate(createdDate, "LLLL d',' yyyy 'at' t"), + , + ])} +

+
+
+ ); +} + +export default function Notifications() { + const history = useHistory(); + const dispatch = useDispatch(); + const t = useI18nContext(); + const notifications = useSelector(getNotifications); + const snapsRouteObject = useSelector(getSnapsRouteObjects); + const unreadNotifications = useSelector(getUnreadNotifications); + + const markAllAsRead = () => { + const unreadNotificationIds = unreadNotifications.map(({ id }) => id); + + dispatch(markNotificationsAsRead(unreadNotificationIds)); + }; + + const markAsRead = (notificationToMark) => { + if (!notificationToMark.readDate) { + dispatch(markNotificationsAsRead([notificationToMark.id])); + } + }; + + useEffect(() => { + return () => dispatch(deleteExpiredNotifications()); + }, [dispatch]); + + return ( +
+
+
+ history.push(DEFAULT_ROUTE)} + /> +
+ {t('notificationsHeader')} +
+
+ +
+
+ {notifications.length > 0 ? ( + notifications.map((notification, id) => ( + + )) + ) : ( +
+ {t('notificationsEmptyText')} +
+ )} +
+
+ ); +} + +NotificationItem.propTypes = { + notification: { + id: PropTypes.string.isRequired, + message: PropTypes.string.isRequired, + origin: PropTypes.string.isRequired, + createdDate: PropTypes.number.isRequired, + readDate: PropTypes.number.isRequired, + }, + snaps: PropTypes.array.isRequired, + onItemClick: PropTypes.func.isRequired, +}; diff --git a/ui/pages/onboarding-flow/create-password/create-password.js b/ui/pages/onboarding-flow/create-password/create-password.js index 0dba880d9..0bb23a96d 100644 --- a/ui/pages/onboarding-flow/create-password/create-password.js +++ b/ui/pages/onboarding-flow/create-password/create-password.js @@ -30,6 +30,7 @@ import ZENDESK_URLS from '../../../helpers/constants/zendesk-url'; import { getFirstTimeFlowType } from '../../../selectors'; import { FIRST_TIME_FLOW_TYPES } from '../../../helpers/constants/onboarding'; import { MetaMetricsContext } from '../../../contexts/metametrics'; +import { EVENT } from '../../../../shared/constants/metametrics'; export default function CreatePassword({ createNewAccount, @@ -140,7 +141,7 @@ export default function CreatePassword({ } trackEvent({ event: 'Submit Password', - category: 'Onboarding', + category: EVENT.CATEGORIES.ONBOARDING, }); history.push(ONBOARDING_SECURE_YOUR_WALLET_ROUTE); } catch (error) { @@ -153,25 +154,23 @@ export default function CreatePassword({
{secretRecoveryPhrase && firstTimeFlowType === FIRST_TIME_FLOW_TYPES.IMPORT ? ( - + ) : ( - + )} {t('createPassword')} - + {t('passwordSetupDetails')} - +
- + - {t('remember')} + + {t('remember')} +
  • diff --git a/ui/pages/onboarding-flow/creation-successful/index.scss b/ui/pages/onboarding-flow/creation-successful/index.scss index 54273b1e0..5aa7567bf 100644 --- a/ui/pages/onboarding-flow/creation-successful/index.scss +++ b/ui/pages/onboarding-flow/creation-successful/index.scss @@ -1,9 +1,15 @@ .creation-successful { + @media screen and (min-width: $break-large) { + display: flex; + flex-direction: column; + align-items: center; + } + img { align-self: center; } - max-width: 575px; + max-width: 600px; ul { list-style-type: disc; diff --git a/ui/pages/onboarding-flow/import-srp/import-srp.js b/ui/pages/onboarding-flow/import-srp/import-srp.js index df02244fb..536c5823f 100644 --- a/ui/pages/onboarding-flow/import-srp/import-srp.js +++ b/ui/pages/onboarding-flow/import-srp/import-srp.js @@ -25,7 +25,10 @@ export default function ImportSRP({ submitSecretRecoveryPhrase }) { return (
    - +
    {t('accessYourWalletWithSRP')} @@ -53,10 +56,10 @@ export default function ImportSRP({ submitSecretRecoveryPhrase }) { srpText={t('typeYourSRP')} /> - + {t('welcomeToMetaMask')} - + {t('welcomeToMetaMaskIntro')}
    diff --git a/ui/pages/pages.scss b/ui/pages/pages.scss index a2a6c56c2..d6160c24f 100644 --- a/ui/pages/pages.scss +++ b/ui/pages/pages.scss @@ -24,3 +24,4 @@ @import 'token-details/index'; @import 'unlock-page/index'; @import 'onboarding-flow/index'; +@import 'notifications/index'; diff --git a/ui/pages/permissions-connect/flask/snap-install/index.scss b/ui/pages/permissions-connect/flask/snap-install/index.scss index 53e525acb..87047ec05 100644 --- a/ui/pages/permissions-connect/flask/snap-install/index.scss +++ b/ui/pages/permissions-connect/flask/snap-install/index.scss @@ -22,10 +22,6 @@ } } - .version { - font-family: monospace; - } - .page-container__footer { width: 100%; margin-top: 12px; diff --git a/ui/pages/permissions-connect/flask/snap-install/snap-install.js b/ui/pages/permissions-connect/flask/snap-install/snap-install.js index 497ca45af..466a874fa 100644 --- a/ui/pages/permissions-connect/flask/snap-install/snap-install.js +++ b/ui/pages/permissions-connect/flask/snap-install/snap-install.js @@ -37,13 +37,6 @@ export default function SnapInstall({ approveSnapInstall, ]); - const npmId = useMemo(() => { - if (!targetSubjectMetadata.origin.startsWith('npm:')) { - return undefined; - } - return targetSubjectMetadata.origin.substring(4); - }, [targetSubjectMetadata]); - const shouldShowWarning = useMemo( () => Boolean( @@ -74,7 +67,7 @@ export default function SnapInstall({ headerTitle={t('snapInstall')} headerText={null} // TODO(ritave): Add header text when snaps support description siteOrigin={targetSubjectMetadata.origin} - npmPackageName={npmId} + isSnapInstall snapVersion={targetSubjectMetadata.version} boxProps={{ alignItems: ALIGN_ITEMS.CENTER }} /> diff --git a/ui/pages/permissions-connect/index.scss b/ui/pages/permissions-connect/index.scss index fc07dede8..fd02a75b2 100644 --- a/ui/pages/permissions-connect/index.scss +++ b/ui/pages/permissions-connect/index.scss @@ -27,7 +27,7 @@ &__back { @include H7; - color: var(--color-text-default); + color: var(--color-icon-default); font-weight: bold; cursor: pointer; @@ -39,7 +39,7 @@ &__page-count { @include H7; - color: var(--color-icon-default); + color: var(--color-text-default); grid-column: 2; justify-self: end; font-weight: bold; diff --git a/ui/pages/permissions-connect/redirect/index.scss b/ui/pages/permissions-connect/redirect/index.scss index 57bb9611f..9fbb6f121 100644 --- a/ui/pages/permissions-connect/redirect/index.scss +++ b/ui/pages/permissions-connect/redirect/index.scss @@ -13,19 +13,6 @@ &__icons { display: flex; position: relative; - max-width: 300px; - width: 100%; - - &::before { - content: ''; - position: absolute; - width: 90%; - left: 5%; - top: 50%; - border: 1px solid var(--color-border-muted); - border-style: dashed; - z-index: -1; - } } .icon-border { @@ -33,18 +20,38 @@ flex: 0 0 64px; } - &__line { + &__center-icon { position: relative; - display: flex; - align-items: center; - justify-content: center; + height: 64px; + } + + &__icon { + width: 64px; } &__check { - color: var(--color-success-default); + width: 32px; + height: 32px; + color: var(--color-success-inverse); + background-color: var(--color-success-default); border-radius: 50%; - background-color: var(--color-background-default); - margin-left: 40px; - margin-right: 40px; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + filter: drop-shadow(0 1px 5px rgba(0, 0, 0, 0.25)); + + &::before { + content: ''; + position: absolute; + left: 18%; + top: 25%; + } + } + + &__dashed-line { + width: 130px; + border-bottom: 1px solid var(--color-border-muted); + border-style: dashed; } } diff --git a/ui/pages/permissions-connect/redirect/permission-redirect.stories.js b/ui/pages/permissions-connect/redirect/permission-redirect.stories.js deleted file mode 100644 index 331c05ea3..000000000 --- a/ui/pages/permissions-connect/redirect/permission-redirect.stories.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import PermissionsRedirect from './permissions-redirect.component'; - -export default { - title: 'Pages/PermissionsRedirect', - id: __filename, -}; - -export const PermissionRedirectComponent = () => { - return ( - - ); -}; diff --git a/ui/pages/permissions-connect/redirect/permissions-redirect.component.js b/ui/pages/permissions-connect/redirect/permissions-redirect.component.js index 6f478e813..6076888f7 100644 --- a/ui/pages/permissions-connect/redirect/permissions-redirect.component.js +++ b/ui/pages/permissions-connect/redirect/permissions-redirect.component.js @@ -1,8 +1,14 @@ import React, { useContext } from 'react'; import PropTypes from 'prop-types'; import SiteIcon from '../../../components/ui/site-icon'; +import Box from '../../../components/ui/box'; import Typography from '../../../components/ui/typography/typography'; -import { TYPOGRAPHY } from '../../../helpers/constants/design-system'; +import { + TYPOGRAPHY, + DISPLAY, + JUSTIFY_CONTENT, + ALIGN_ITEMS, +} from '../../../helpers/constants/design-system'; import { I18nContext } from '../../../contexts/i18n'; export default function PermissionsRedirect({ subjectMetadata }) { @@ -21,9 +27,15 @@ export default function PermissionsRedirect({ subjectMetadata }) { size={64} className="permissions-redirect__site-icon" /> -
    - -
    + + +
    + + { + ///: BEGIN:ONLY_INCLUDE_IN(flask) + + ///: END:ONLY_INCLUDE_IN + } { + selectRecipient = (address, nickname = '', type = 'user input') => { + this.props.addHistoryEntry( + `sendFlow - User clicked recipient from ${type}. address: ${address}, nickname ${nickname}`, + ); this.props.updateRecipient({ address, nickname }); }; @@ -109,11 +113,13 @@ export default class AddRecipient extends Component { content = this.renderExplicitAddress( recipient.address, recipient.nickname, + 'validated user input', ); } else if (ensResolution) { content = this.renderExplicitAddress( ensResolution, addressBookEntryName || userInput, + 'ENS resolution', ); } else if (isUsingMyAccountsForRecipientSearch) { content = this.renderTransfer(); @@ -127,12 +133,12 @@ export default class AddRecipient extends Component { ); } - renderExplicitAddress(address, name) { + renderExplicitAddress(address, name, type) { return (
    this.selectRecipient(address, name)} + onClick={() => this.selectRecipient(address, name, type)} >
    @@ -179,7 +185,9 @@ export default class AddRecipient extends Component { + this.selectRecipient(address, name, 'my accounts') + } />
    ); @@ -200,7 +208,9 @@ export default class AddRecipient extends Component { addressBook={addressBook} searchForContacts={this.searchForContacts.bind(this)} searchForRecents={this.searchForRecents.bind(this)} - selectRecipient={this.selectRecipient.bind(this)} + selectRecipient={(address, name) => + this.selectRecipient(address, name, 'contact list') + } > {ownedAccounts && ownedAccounts.length > 1 && !userInput && ( -
  • -
  • - -
  • -
-
-`; - -exports[`GasCustomizationModalComponent renders the component with initial props 2`] = ` - -`; - -exports[`GasCustomizationModalComponent renders the component with initial props 3`] = ` - -`; - -exports[`GasCustomizationModalComponent renders the component with initial props 4`] = ` - -`; - -exports[`GasCustomizationModalComponent renders the component with initial props 5`] = ` - -`; diff --git a/ui/pages/swaps/swaps-gas-customization-modal/__snapshots__/swaps-gas-customization-modal.container.test.js.snap b/ui/pages/swaps/swaps-gas-customization-modal/__snapshots__/swaps-gas-customization-modal.container.test.js.snap deleted file mode 100644 index 91d0d69ba..000000000 --- a/ui/pages/swaps/swaps-gas-customization-modal/__snapshots__/swaps-gas-customization-modal.container.test.js.snap +++ /dev/null @@ -1,98 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`GasCustomizationModalContainer renders the component with initial props 1`] = ` -
-
- Customize Gas -
-
- Increasing fee may decrease processing times, but it is not guaranteed. -
- - Close - -
    -
  • - -
  • -
  • - -
  • -
-
-`; - -exports[`GasCustomizationModalContainer renders the component with initial props 2`] = ` - -`; - -exports[`GasCustomizationModalContainer renders the component with initial props 3`] = ` - -`; - -exports[`GasCustomizationModalContainer renders the component with initial props 4`] = ` - -`; diff --git a/ui/pages/swaps/swaps-gas-customization-modal/index.js b/ui/pages/swaps/swaps-gas-customization-modal/index.js deleted file mode 100644 index a54988ab9..000000000 --- a/ui/pages/swaps/swaps-gas-customization-modal/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from './swaps-gas-customization-modal.container'; diff --git a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js b/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js deleted file mode 100644 index d0f21cfe0..000000000 --- a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js +++ /dev/null @@ -1,280 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import PageContainer from '../../../components/ui/page-container'; -import { Tabs, Tab } from '../../../components/ui/tabs'; -import { calcGasTotal } from '../../send/send.utils'; -import { sumHexWEIsToUnformattedFiat } from '../../../helpers/utils/conversions.util'; -import AdvancedGasInputs from '../../../components/app/gas-customization/advanced-gas-inputs'; -import BasicTabContent from '../../../components/app/gas-customization/gas-modal-page-container/basic-tab-content'; -import { GAS_ESTIMATE_TYPES } from '../../../helpers/constants/common'; -import { CUSTOM_GAS_ESTIMATE } from '../../../../shared/constants/gas'; - -export default class GasModalPageContainer extends Component { - static contextTypes = { - t: PropTypes.func, - trackEvent: PropTypes.func, - }; - - static propTypes = { - insufficientBalance: PropTypes.bool, - gasPriceButtonGroupProps: PropTypes.object, - infoRowProps: PropTypes.shape({ - originalTotalFiat: PropTypes.string, - originalTotalEth: PropTypes.string, - newTotalFiat: PropTypes.string, - newTotalEth: PropTypes.string, - sendAmount: PropTypes.string, - transactionFee: PropTypes.string, - extraInfoRow: PropTypes.shape({ - label: PropTypes.string, - value: PropTypes.string, - }), - }), - onSubmit: PropTypes.func, - cancelAndClose: PropTypes.func, - showCustomPriceTooLowWarning: PropTypes.bool, - disableSave: PropTypes.bool, - customGasLimitMessage: PropTypes.string, - customTotalSupplement: PropTypes.string, - usdConversionRate: PropTypes.number, - customGasPrice: PropTypes.string, - customGasLimit: PropTypes.string, - setSwapsCustomizationModalPrice: PropTypes.func, - setSwapsCustomizationModalLimit: PropTypes.func, - gasEstimateLoadingHasFailed: PropTypes.bool, - minimumGasLimit: PropTypes.number.isRequired, - }; - - state = { - gasSpeedType: '', - }; - - setGasSpeedType(gasEstimateType) { - if (gasEstimateType === GAS_ESTIMATE_TYPES.AVERAGE) { - this.setState({ gasSpeedType: 'average' }); - } else { - this.setState({ gasSpeedType: 'fast' }); - } - } - - renderBasicTabContent(gasPriceButtonGroupProps) { - return ( - { - this.setGasSpeedType(gasEstimateType); - this.props.setSwapsCustomizationModalPrice(gasPrice); - }, - }} - /> - ); - } - - renderAdvancedTabContent() { - const { - insufficientBalance, - showCustomPriceTooLowWarning, - infoRowProps: { transactionFee }, - customGasLimitMessage, - setSwapsCustomizationModalPrice, - setSwapsCustomizationModalLimit, - customGasPrice, - customGasLimit, - minimumGasLimit, - } = this.props; - - return ( -
-
-
- {this.context.t('newTransactionFee')} -
-
-
- {transactionFee} -
-
-
-
-
- { - this.setState({ gasSpeedType: CUSTOM_GAS_ESTIMATE }); - setSwapsCustomizationModalPrice(updatedPrice); - }} - updateCustomGasLimit={(updatedLimit) => { - this.setState({ gasSpeedType: CUSTOM_GAS_ESTIMATE }); - setSwapsCustomizationModalLimit(updatedLimit); - }} - customGasPrice={customGasPrice} - customGasLimit={customGasLimit} - insufficientBalance={insufficientBalance} - customPriceIsSafe={!showCustomPriceTooLowWarning} - customGasLimitMessage={customGasLimitMessage} - minimumGasLimit={minimumGasLimit} - /> -
-
-
- ); - } - - renderInfoRows( - newTotalFiat, - newTotalEth, - sendAmount, - transactionFee, - extraInfoRow, - ) { - return ( -
-
-
- - {this.context.t('sendAmount')} - - - {sendAmount} - -
-
- - {this.context.t('transactionFee')} - - - {transactionFee} - -
- {extraInfoRow && ( -
- - {extraInfoRow.label} - - - {extraInfoRow.value} - -
- )} -
- - {this.context.t('newTotal')} - - - {newTotalEth} - -
-
- - {newTotalFiat} - -
-
-
- ); - } - - renderTabs() { - const { - gasPriceButtonGroupProps, - infoRowProps: { - newTotalFiat, - newTotalEth, - sendAmount, - transactionFee, - extraInfoRow, - }, - gasEstimateLoadingHasFailed, - } = this.props; - - const basicTabInfo = { - name: this.context.t('basic'), - content: this.renderBasicTabContent({ - ...gasPriceButtonGroupProps, - handleGasPriceSelection: this.props.setSwapsCustomizationModalPrice, - }), - }; - const advancedTabInfo = { - name: this.context.t('advanced'), - content: this.renderAdvancedTabContent(), - }; - - const tabsToRender = gasEstimateLoadingHasFailed - ? [advancedTabInfo] - : [basicTabInfo, advancedTabInfo]; - - return ( - - {tabsToRender.map(({ name, content }, i) => ( - -
- {content} - {this.renderInfoRows( - newTotalFiat, - newTotalEth, - sendAmount, - transactionFee, - extraInfoRow, - )} -
-
- ))} -
- ); - } - - render() { - const { - cancelAndClose, - onSubmit, - disableSave, - customGasPrice, - customGasLimit, - } = this.props; - - return ( -
- cancelAndClose()} - onClose={() => cancelAndClose()} - onSubmit={() => { - const newSwapGasTotal = calcGasTotal( - customGasLimit, - customGasPrice, - ); - - this.context.trackEvent({ - event: 'Gas Fees Changed', - category: 'swaps', - properties: { - speed_set: this.state.gasSpeedType, - gas_fees: sumHexWEIsToUnformattedFiat( - [newSwapGasTotal, this.props.customTotalSupplement], - 'usd', - this.props.usdConversionRate, - )?.slice(1), - }, - }); - onSubmit(customGasLimit, customGasPrice); - }} - submitText={this.context.t('save')} - headerCloseText={this.context.t('close')} - hideCancel - /> -
- ); - } -} diff --git a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.test.js b/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.test.js deleted file mode 100644 index 5e8660608..000000000 --- a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.test.js +++ /dev/null @@ -1,81 +0,0 @@ -import React from 'react'; - -import { renderWithProvider } from '../../../../test/jest'; -import GasCustomizationModalComponent from './swaps-gas-customization-modal.component'; - -const createProps = (customProps = {}) => { - return { - insufficientBalance: false, - onSubmit: jest.fn(), - cancelAndClose: jest.fn(), - minimumGasLimit: 100, - gasPriceButtonGroupProps: { - buttonDataLoading: false, - className: 'gas-price-button-group', - gasButtonInfo: [ - { - feeInPrimaryCurrency: '$0.52', - feeInSecondaryCurrency: '0.0048 ETH', - timeEstimate: '~ 1 min 0 sec', - priceInHexWei: '0xa1b2c3f', - gasEstimateType: 'FAST', - }, - { - feeInPrimaryCurrency: '$0.39', - feeInSecondaryCurrency: '0.004 ETH', - timeEstimate: '~ 1 min 30 sec', - priceInHexWei: '0xa1b2c39', - gasEstimateType: 'FAST', - }, - { - feeInPrimaryCurrency: '$0.30', - feeInSecondaryCurrency: '0.00354 ETH', - timeEstimate: '~ 2 min 1 sec', - priceInHexWei: '0xa1b2c30', - gasEstimateType: 'FAST', - }, - ], - handleGasPriceSelection: 'mockSelectionFunction', - noButtonActiveByDefault: true, - showCheck: true, - newTotalFiat: 'mockNewTotalFiat', - newTotalEth: 'mockNewTotalEth', - }, - infoRowProps: { - originalTotalFiat: 'mockOriginalTotalFiat', - originalTotalEth: 'mockOriginalTotalEth', - newTotalFiat: 'mockNewTotalFiat', - newTotalEth: 'mockNewTotalEth', - sendAmount: 'mockSendAmount', - transactionFee: 'mockTransactionFee', - extraInfoRow: { label: 'mockLabel', value: 'mockValue' }, - }, - ...customProps, - }; -}; - -describe('GasCustomizationModalComponent', () => { - it('renders the component with initial props', () => { - const props = createProps(); - const { getByText, getByTestId } = renderWithProvider( - , - ); - expect(getByTestId('page-container__header')).toMatchSnapshot(); - expect(getByText('$0.52')).toBeInTheDocument(); - expect(getByText('0.0048 ETH')).toBeInTheDocument(); - expect(getByTestId('button-group__button0')).toMatchSnapshot(); - expect(getByText('~ 1 min 30 sec')).toBeInTheDocument(); - expect(getByText('$0.39')).toBeInTheDocument(); - expect(getByText('0.004 ETH')).toBeInTheDocument(); - expect( - getByTestId('gas-modal-content__info-row__send-info'), - ).toMatchSnapshot(); - expect( - getByTestId('gas-modal-content__info-row__transaction-info'), - ).toMatchSnapshot(); - expect( - getByTestId('gas-modal-content__info-row__total-info'), - ).toMatchSnapshot(); - expect(getByText('Save')).toBeInTheDocument(); - }); -}); diff --git a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js b/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js deleted file mode 100644 index e4e78009b..000000000 --- a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js +++ /dev/null @@ -1,186 +0,0 @@ -import { connect } from 'react-redux'; -import BigNumber from 'bignumber.js'; -import { hideModal, customSwapsGasParamsUpdated } from '../../../store/actions'; -import { - conversionRateSelector as getConversionRate, - getCurrentCurrency, - getCurrentEthBalance, - getDefaultActiveButtonIndex, - getRenderableGasButtonData, - getUSDConversionRate, - getSwapsDefaultToken, -} from '../../../selectors'; -import { getNativeCurrency } from '../../../ducks/metamask/metamask'; - -import { - getSwapsCustomizationModalPrice, - getSwapsCustomizationModalLimit, - swapGasEstimateLoadingHasFailed, - swapGasPriceEstimateIsLoading, - getSwapGasPriceEstimateData, - swapCustomGasModalPriceEdited, - swapCustomGasModalLimitEdited, - shouldShowCustomPriceTooLowWarning, - swapCustomGasModalClosed, -} from '../../../ducks/swaps/swaps'; -import { - addHexes, - getValueFromWeiHex, - sumHexWEIsToRenderableFiat, -} from '../../../helpers/utils/conversions.util'; -import { formatETHFee } from '../../../helpers/utils/formatters'; -import { calcGasTotal, isBalanceSufficient } from '../../send/send.utils'; -import SwapsGasCustomizationModalComponent from './swaps-gas-customization-modal.component'; - -const mapStateToProps = (state) => { - const currentCurrency = getCurrentCurrency(state); - const conversionRate = getConversionRate(state); - const nativeCurrencySymbol = getNativeCurrency(state); - const { symbol: swapsDefaultCurrencySymbol } = getSwapsDefaultToken(state); - const usedCurrencySymbol = nativeCurrencySymbol || swapsDefaultCurrencySymbol; - - const { modalState: { props: modalProps } = {} } = state.appState.modal || {}; - const { - value, - customGasLimitMessage = '', - customTotalSupplement = '', - extraInfoRow = null, - initialGasPrice, - initialGasLimit, - minimumGasLimit, - } = modalProps; - const buttonDataLoading = swapGasPriceEstimateIsLoading(state); - - const swapsCustomizationModalPrice = getSwapsCustomizationModalPrice(state); - const swapsCustomizationModalLimit = getSwapsCustomizationModalLimit(state); - - const customGasPrice = swapsCustomizationModalPrice || initialGasPrice; - const customGasLimit = swapsCustomizationModalLimit || initialGasLimit; - - const customGasTotal = calcGasTotal(customGasLimit, customGasPrice); - - const gasEstimates = getSwapGasPriceEstimateData(state); - const gasEstimatesInNewFormat = { - low: gasEstimates.safeLow, - medium: gasEstimates.average, - high: gasEstimates.fast, - }; - - const { averageEstimateData, fastEstimateData } = getRenderableGasButtonData( - gasEstimatesInNewFormat, - customGasLimit, - true, - conversionRate, - currentCurrency, - usedCurrencySymbol, - ); - const gasButtonInfo = [averageEstimateData, fastEstimateData]; - - const newTotalFiat = sumHexWEIsToRenderableFiat( - [value, customGasTotal, customTotalSupplement], - currentCurrency, - conversionRate, - ); - - const balance = getCurrentEthBalance(state); - - const newTotalEth = sumHexWEIsToRenderableEth( - [value, customGasTotal, customTotalSupplement], - usedCurrencySymbol, - ); - - const sendAmount = sumHexWEIsToRenderableEth( - [value, '0x0'], - usedCurrencySymbol, - ); - - const insufficientBalance = !isBalanceSufficient({ - amount: value, - gasTotal: customGasTotal, - balance, - conversionRate, - }); - - const customGasLimitTooLow = new BigNumber(customGasLimit, 16).lt( - minimumGasLimit, - 10, - ); - - return { - customGasPrice, - customGasLimit, - showCustomPriceTooLowWarning: shouldShowCustomPriceTooLowWarning(state), - gasPriceButtonGroupProps: { - buttonDataLoading, - defaultActiveButtonIndex: getDefaultActiveButtonIndex( - gasButtonInfo, - customGasPrice, - ), - gasButtonInfo, - }, - infoRowProps: { - originalTotalFiat: sumHexWEIsToRenderableFiat( - [value, customGasTotal, customTotalSupplement], - currentCurrency, - conversionRate, - ), - originalTotalEth: sumHexWEIsToRenderableEth( - [value, customGasTotal, customTotalSupplement], - usedCurrencySymbol, - ), - newTotalFiat, - newTotalEth, - transactionFee: sumHexWEIsToRenderableEth( - ['0x0', customGasTotal], - usedCurrencySymbol, - ), - sendAmount, - extraInfoRow, - }, - gasEstimateLoadingHasFailed: swapGasEstimateLoadingHasFailed(state), - insufficientBalance, - customGasLimitMessage, - customTotalSupplement, - usdConversionRate: getUSDConversionRate(state), - disableSave: insufficientBalance || customGasLimitTooLow, - minimumGasLimit, - }; -}; - -const mapDispatchToProps = (dispatch) => { - return { - cancelAndClose: () => { - dispatch(swapCustomGasModalClosed()); - dispatch(hideModal()); - }, - onSubmit: async (gasLimit, gasPrice) => { - await dispatch(customSwapsGasParamsUpdated(gasLimit, gasPrice)); - dispatch(swapCustomGasModalClosed()); - dispatch(hideModal()); - }, - setSwapsCustomizationModalPrice: (newPrice) => { - dispatch(swapCustomGasModalPriceEdited(newPrice)); - }, - setSwapsCustomizationModalLimit: (newLimit) => { - dispatch(swapCustomGasModalLimitEdited(newLimit)); - }, - }; -}; - -export default connect( - mapStateToProps, - mapDispatchToProps, -)(SwapsGasCustomizationModalComponent); - -function sumHexWEIsToRenderableEth(hexWEIs, currencySymbol = 'ETH') { - const hexWEIsSum = hexWEIs.filter(Boolean).reduce(addHexes); - return formatETHFee( - getValueFromWeiHex({ - value: hexWEIsSum, - fromCurrency: currencySymbol, - toCurrency: currencySymbol, - numberOfDecimals: 6, - }), - currencySymbol, - ); -} diff --git a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.test.js b/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.test.js deleted file mode 100644 index 957458b39..000000000 --- a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.test.js +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import configureMockStore from 'redux-mock-store'; - -import { - renderWithProvider, - createSwapsMockStore, -} from '../../../../test/jest'; -import GasCustomizationModalContainer from '.'; - -describe('GasCustomizationModalContainer', () => { - it('renders the component with initial props', () => { - const store = configureMockStore()(createSwapsMockStore()); - const { getByText, getByTestId } = renderWithProvider( - , - store, - ); - expect(getByTestId('page-container__header')).toMatchSnapshot(); - expect(getByText('Basic')).toBeInTheDocument(); - expect(getByText('Advanced')).toBeInTheDocument(); - expect(getByText('Estimated Processing Times')).toBeInTheDocument(); - expect(getByText('Send Amount')).toBeInTheDocument(); - expect(getByText('Transaction fee')).toBeInTheDocument(); - expect( - getByTestId('gas-modal-content__info-row__send-info'), - ).toMatchSnapshot(); - expect( - getByTestId('gas-modal-content__info-row__transaction-info'), - ).toMatchSnapshot(); - expect( - getByTestId('gas-modal-content__info-row__total-info'), - ).toMatchSnapshot(); - expect(getByText('Save')).toBeInTheDocument(); - }); -}); diff --git a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.stories.js b/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.stories.js deleted file mode 100644 index 4be1e5fcb..000000000 --- a/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.stories.js +++ /dev/null @@ -1,253 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { Provider } from 'react-redux'; -import configureStore from '../../../store/store'; -import testData from '../../../../.storybook/test-data'; -import { formatETHFee } from '../../../helpers/utils/formatters'; -import { - addHexes, - getValueFromWeiHex, - getWeiHexFromDecimalValue, - sumHexWEIsToRenderableFiat, -} from '../../../helpers/utils/conversions.util'; -import { ETH } from '../../../helpers/constants/common'; -import { calcGasTotal, isBalanceSufficient } from '../../send/send.utils'; -import { conversionLessThan } from '../../../../shared/modules/conversion.utils'; -import GasModalPageContainer from './swaps-gas-customization-modal.component'; -// Using Test Data For Redux -const store = configureStore(testData); - -export default { - title: 'Pages/Swaps/GasModalPageContainer', - id: __filename, - component: GasModalPageContainer, - argTypes: { - sendAmountArg: { - name: 'Send Amount (this should be static)', - control: { type: 'number', min: 0, step: 0.01 }, - }, - walletBalance: { - name: 'Wallet Balance (this should be static)', - control: { type: 'number', min: 0, step: 0.01 }, - }, - averageGasPrice: { - name: 'Average Gas Price', - control: { type: 'number', min: 0, step: 0.01 }, - }, - insufficientBalance: { - table: { - disable: true, - }, - }, - gasPriceButtonGroupProps: { - table: { - disable: true, - }, - }, - infoRowProps: { - table: { - disable: true, - }, - }, - onSubmit: { - table: { - disable: true, - }, - }, - cancelAndClose: { - table: { - disable: true, - }, - }, - showCustomPriceTooLowWarning: { - table: { - disable: true, - }, - }, - disableSave: { - table: { - disable: true, - }, - }, - customGasLimitMessage: { - table: { - disable: true, - }, - }, - usdConversionRate: { - table: { - disable: true, - }, - }, - customGasPrice: { - table: { - disable: true, - }, - }, - customGasLimit: { - table: { - disable: true, - }, - }, - setSwapsCustomizationModalLimit: { - table: { - disable: true, - }, - }, - setSwapsCustomizationModalPrice: { - table: { - disable: true, - }, - }, - customTotalSupplement: { - table: { - disable: true, - }, - }, - gasEstimateLoadingHasFailed: { - table: { - disable: true, - }, - }, - minimumGasLimit: { - table: { - disable: true, - }, - }, - }, - args: { - sendAmountArg: 0.01, - walletBalance: 10, - averageGasPrice: 2, - }, - decorators: [(story) => {story()}], -}; - -// Convert Hex Wei to Decimal ETH -const sumHexWEIsToRenderableEth = (hexWEIs, currencySymbol = 'ETH') => { - const hexWEIsSum = hexWEIs.filter(Boolean).reduce(addHexes); - return formatETHFee( - getValueFromWeiHex({ - value: hexWEIsSum, - fromCurrency: currencySymbol, - toCurrency: currencySymbol, - numberOfDecimals: 6, - }), - currencySymbol, - ); -}; - -export const DefaultStory = (args) => { - const { sendAmountArg, walletBalance, averageGasPrice } = args; - - const hexWei = getWeiHexFromDecimalValue({ - value: sendAmountArg, - fromCurrency: ETH, - fromDenomination: ETH, - }); - - // ETH Balance - const balanceHexWei = getWeiHexFromDecimalValue({ - value: walletBalance, - fromCurrency: ETH, - fromDenomination: ETH, - }); - - const sendAmount = sumHexWEIsToRenderableEth([hexWei, '0x0']); - const [gasLimit, setGasLimit] = useState('5208'); - const [gasPrice, setGasPrice] = useState('ee6b2800'); - const [transactionFee, setTransactionFee] = useState(''); - const [totalETH, setTotalETH] = useState(''); - const [totalFiat, setTotalFiat] = useState(''); - const [isInsufficientBalance, setIsInsufficientBalance] = useState(false); - - const { metamask } = store.getState(); - const { currentCurrency, conversionRate } = metamask; - - useEffect(() => { - // Transfer Fee - const customGasTotal = calcGasTotal(gasLimit, gasPrice); - setTransactionFee(sumHexWEIsToRenderableEth(['0x0', customGasTotal])); - - // New Total ETH - setTotalETH(sumHexWEIsToRenderableEth([hexWei, customGasTotal, ''])); - - // New Total Fiat - setTotalFiat( - sumHexWEIsToRenderableFiat( - [hexWei, customGasTotal, ''], - currentCurrency, - conversionRate, - ), - ); - - // Check If Balance is Sufficient - setIsInsufficientBalance( - !isBalanceSufficient({ - amount: hexWei, - gasTotal: customGasTotal, - balance: balanceHexWei, - conversionRate, - }), - ); - }, [ - gasPrice, - gasLimit, - hexWei, - totalETH, - conversionRate, - currentCurrency, - totalFiat, - balanceHexWei, - ]); - - // Check If Gas Price Is Too Low - const shouldShowCustomPriceTooLowWarning = () => { - const customGasPrice = gasPrice; - - if (!customGasPrice || averageGasPrice === undefined) { - return false; - } - - const customPriceRisksSwapFailure = conversionLessThan( - { - value: customGasPrice, - fromNumericBase: 'hex', - fromDenomination: 'WEI', - toDenomination: 'GWEI', - }, - { value: averageGasPrice, fromNumericBase: 'dec' }, - ); - - return customPriceRisksSwapFailure; - }; - - return ( - { - setGasPrice(newPrice); - }} - setSwapsCustomizationModalLimit={(newLimit) => { - setGasLimit(newLimit); - }} - customGasPrice={gasPrice} - customGasLimit={gasLimit} - disableSave={ - isInsufficientBalance || shouldShowCustomPriceTooLowWarning() - } - /> - ); -}; - -DefaultStory.storyName = 'Default'; diff --git a/ui/pages/swaps/swaps.util.js b/ui/pages/swaps/swaps.util.js index 9c4f6b52d..446e6eff5 100644 --- a/ui/pages/swaps/swaps.util.js +++ b/ui/pages/swaps/swaps.util.js @@ -420,11 +420,12 @@ export async function fetchAggregatorMetadata(chainId) { export async function fetchTopAssets(chainId) { const topAssetsUrl = getBaseApi('topAssets', chainId); - const response = await fetchWithCache( - topAssetsUrl, - { method: 'GET', headers: clientIdHeader }, - { cacheRefreshTime: CACHE_REFRESH_FIVE_MINUTES }, - ); + const response = + (await fetchWithCache( + topAssetsUrl, + { method: 'GET', headers: clientIdHeader }, + { cacheRefreshTime: CACHE_REFRESH_FIVE_MINUTES }, + )) || []; const topAssetsMap = response.reduce((_topAssetsMap, asset, index) => { if (validateData(TOP_ASSET_VALIDATORS, asset, topAssetsUrl)) { return { ..._topAssetsMap, [asset.address]: { index: String(index) } }; @@ -500,6 +501,7 @@ export const getFeeForSmartTransaction = ({ chainId, currentCurrency, conversionRate, + USDConversionRate, nativeCurrencySymbol, feeInWeiDec, }) => { @@ -522,7 +524,7 @@ export const getFeeForSmartTransaction = ({ feeInUsd = getValueFromWeiHex({ value: feeInWeiHex, toCurrency: USD_CURRENCY_CODE, - conversionRate, + conversionRate: USDConversionRate, numberOfDecimals: 2, }); } @@ -543,6 +545,7 @@ export function getRenderableNetworkFeesForQuote({ gasPrice, currentCurrency, conversionRate, + USDConversionRate, tradeValue, sourceSymbol, sourceAmount, @@ -585,7 +588,7 @@ export function getRenderableNetworkFeesForQuote({ feeInUsd = getValueFromWeiHex({ value: totalWeiCost, toCurrency: USD_CURRENCY_CODE, - conversionRate, + conversionRate: USDConversionRate, numberOfDecimals: 2, }); } @@ -933,13 +936,13 @@ export const showRemainingTimeInMinAndSec = (remainingTimeInSec) => { export const stxErrorTypes = { UNAVAILABLE: 'unavailable', NOT_ENOUGH_FUNDS: 'not_enough_funds', - REGULAR_TX_PENDING: 'regular_tx_pending', + REGULAR_TX_IN_PROGRESS: 'regular_tx_pending', }; export const getTranslatedStxErrorMessage = (errorType, t) => { switch (errorType) { case stxErrorTypes.UNAVAILABLE: - case stxErrorTypes.REGULAR_TX_PENDING: + case stxErrorTypes.REGULAR_TX_IN_PROGRESS: return t('stxErrorUnavailable'); case stxErrorTypes.NOT_ENOUGH_FUNDS: return t('stxErrorNotEnoughFunds'); diff --git a/ui/pages/swaps/view-quote/index.scss b/ui/pages/swaps/view-quote/index.scss index 33b3c16c8..7f671e901 100644 --- a/ui/pages/swaps/view-quote/index.scss +++ b/ui/pages/swaps/view-quote/index.scss @@ -96,12 +96,12 @@ &.high { .actionable-message { - border-color: var(--color-warning-default); - background: var(--color-warning-muted); + border-color: var(--color-error-default); + background: var(--color-error-muted); button { - background: var(--color-warning-default); - color: var(--color-warning-inverse); + background: var(--color-error-default); + color: var(--color-error-inverse); } } } diff --git a/ui/pages/swaps/view-quote/view-quote.js b/ui/pages/swaps/view-quote/view-quote.js index d1fd19d17..3e42fb9e8 100644 --- a/ui/pages/swaps/view-quote/view-quote.js +++ b/ui/pages/swaps/view-quote/view-quote.js @@ -19,7 +19,6 @@ import { usePrevious } from '../../../hooks/usePrevious'; import { useGasFeeInputs } from '../../../hooks/gasFeeInput/useGasFeeInputs'; import { MetaMetricsContext } from '../../../contexts/metametrics'; import FeeCard from '../fee-card'; -import EditGasPopover from '../../../components/app/edit-gas-popover/edit-gas-popover.component'; import { FALLBACK_GAS_MULTIPLIER, getQuotes, @@ -43,13 +42,13 @@ import { getReviewSwapClickedTimestamp, getSmartTransactionsOptInStatus, signAndSendSwapsSmartTransaction, - getSwapsRefreshStates, + getSwapsNetworkConfig, getSmartTransactionsEnabled, getCurrentSmartTransactionsError, getCurrentSmartTransactionsErrorMessageDismissed, getSwapsSTXLoading, - estimateSwapsSmartTransactionsGas, - getSmartTransactionEstimatedGas, + fetchSwapsSmartTransactionFees, + getSmartTransactionFees, } from '../../../ducks/swaps/swaps'; import { conversionRateSelector, @@ -62,6 +61,7 @@ import { getHardwareWalletType, checkNetworkAndAccountSupports1559, getEIP1559V2Enabled, + getUSDConversionRate, } from '../../../selectors'; import { getNativeCurrency, getTokens } from '../../../ducks/metamask/metamask'; @@ -88,16 +88,12 @@ import { } from '../../../helpers/utils/token-util'; import { decimalToHex, - hexToDecimal, - getValueFromWeiHex, decGWEIToHexWEI, hexWEIToDecGWEI, addHexes, } from '../../../helpers/utils/conversions.util'; import { GasFeeContextProvider } from '../../../contexts/gasFee'; import { TransactionModalContextProvider } from '../../../contexts/transaction-modal'; -import AdvancedGasFeePopover from '../../../components/app/advanced-gas-fee-popover'; -import EditGasFeePopover from '../../../components/app/edit-gas-fee-popover'; import MainQuoteSummary from '../main-quote-summary'; import { calcGasTotal } from '../../send/send.utils'; import { getCustomTxParamsData } from '../../confirm-approve/confirm-approve.util'; @@ -117,6 +113,7 @@ import CountdownTimer from '../countdown-timer'; import SwapsFooter from '../swaps-footer'; import PulseLoader from '../../../components/ui/pulse-loader'; // TODO: Replace this with a different loading component. import Box from '../../../components/ui/box'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { isEqualCaseInsensitive } from '../../../../shared/modules/string-utils'; import { parseStandardTokenTransactionData } from '../../../../shared/modules/transaction.utils'; import ViewQuotePriceDifference from './view-quote-price-difference'; @@ -135,7 +132,6 @@ export default function ViewQuote() { const [selectQuotePopoverShown, setSelectQuotePopoverShown] = useState(false); const [warningHidden, setWarningHidden] = useState(false); const [originalApproveAmount, setOriginalApproveAmount] = useState(null); - const [showEditGasPopover, setShowEditGasPopover] = useState(false); // We need to have currentTimestamp in state, otherwise it would change with each rerender. const [currentTimestamp] = useState(Date.now()); @@ -170,6 +166,7 @@ export default function ViewQuote() { const memoizedTokenConversionRates = useEqualityCheck(tokenConversionRates); const { balance: ethBalance } = useSelector(getSelectedAccount, shallowEqual); const conversionRate = useSelector(conversionRateSelector); + const USDConversionRate = useSelector(getUSDConversionRate); const currentCurrency = useSelector(getCurrentCurrency); const swapsTokens = useSelector(getTokens, isEqual); const networkAndAccountSupports1559 = useSelector( @@ -205,10 +202,8 @@ export default function ViewQuote() { (currentSmartTransactionsError !== 'not_enough_funds' || currentSmartTransactionsErrorMessageDismissed) ); - const smartTransactionEstimatedGas = useSelector( - getSmartTransactionEstimatedGas, - ); - const swapsRefreshRates = useSelector(getSwapsRefreshStates); + const smartTransactionFees = useSelector(getSmartTransactionFees); + const swapsNetworkConfig = useSelector(getSwapsNetworkConfig); const unsignedTransaction = usedQuote.trade; let gasFeeInputs; @@ -311,7 +306,7 @@ export default function ViewQuote() { chainId, smartTransactionsEnabled && smartTransactionsOptInStatus && - smartTransactionEstimatedGas?.txData, + smartTransactionFees?.tradeTxFees, nativeCurrencySymbol, ); }, [ @@ -324,7 +319,7 @@ export default function ViewQuote() { approveGas, memoizedTokenConversionRates, chainId, - smartTransactionEstimatedGas?.txData, + smartTransactionFees?.tradeTxFees, nativeCurrencySymbol, smartTransactionsEnabled, smartTransactionsOptInStatus, @@ -359,6 +354,7 @@ export default function ViewQuote() { : gasPrice, currentCurrency, conversionRate, + USDConversionRate, tradeValue, sourceSymbol: sourceTokenSymbol, sourceAmount: usedQuote.sourceAmount, @@ -374,6 +370,7 @@ export default function ViewQuote() { gasPrice: maxFeePerGas || gasPrice, currentCurrency, conversionRate, + USDConversionRate, tradeValue, sourceSymbol: sourceTokenSymbol, sourceAmount: usedQuote.sourceAmount, @@ -386,30 +383,31 @@ export default function ViewQuote() { rawEthFee: maxRawEthFee, feeInUsd: maxFeeInUsd, } = renderableMaxFees; - const { nonGasFee } = renderableMaxFees; additionalTrackingParams.reg_tx_max_fee_in_usd = Number(maxFeeInUsd); additionalTrackingParams.reg_tx_max_fee_in_eth = Number(maxRawEthFee); if ( currentSmartTransactionsEnabled && smartTransactionsOptInStatus && - smartTransactionEstimatedGas?.txData + smartTransactionFees?.tradeTxFees ) { const stxEstimatedFeeInWeiDec = - smartTransactionEstimatedGas.txData.feeEstimate + - (smartTransactionEstimatedGas.approvalTxData?.feeEstimate || 0); - const stxMaxFeeInWeiDec = stxEstimatedFeeInWeiDec * 2; + smartTransactionFees?.tradeTxFees.feeEstimate + + (smartTransactionFees?.approvalTxFees?.feeEstimate || 0); + const stxMaxFeeInWeiDec = + stxEstimatedFeeInWeiDec * swapsNetworkConfig.stxMaxFeeMultiplier; ({ feeInFiat, feeInEth, rawEthFee, feeInUsd } = getFeeForSmartTransaction({ chainId, currentCurrency, conversionRate, + USDConversionRate, nativeCurrencySymbol, feeInWeiDec: stxEstimatedFeeInWeiDec, })); additionalTrackingParams.stx_fee_in_usd = Number(feeInUsd); additionalTrackingParams.stx_fee_in_eth = Number(rawEthFee); additionalTrackingParams.estimated_gas = - smartTransactionEstimatedGas.txData.gasLimit; + smartTransactionFees?.tradeTxFees.gasLimit; ({ feeInFiat: maxFeeInFiat, feeInEth: maxFeeInEth, @@ -419,6 +417,7 @@ export default function ViewQuote() { chainId, currentCurrency, conversionRate, + USDConversionRate, nativeCurrencySymbol, feeInWeiDec: stxMaxFeeInWeiDec, })); @@ -539,7 +538,7 @@ export default function ViewQuote() { const trackAllAvailableQuotesOpened = () => { trackEvent({ event: 'All Available Quotes Opened', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, sensitiveProperties: { ...eventObjectBase, other_quote_selected: usedQuote?.aggregator !== topQuote?.aggregator, @@ -553,7 +552,7 @@ export default function ViewQuote() { const trackQuoteDetailsOpened = () => { trackEvent({ event: 'Quote Details Opened', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, sensitiveProperties: { ...eventObjectBase, other_quote_selected: usedQuote?.aggregator !== topQuote?.aggregator, @@ -567,7 +566,7 @@ export default function ViewQuote() { const trackEditSpendLimitOpened = () => { trackEvent({ event: 'Edit Spend Limit Opened', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, sensitiveProperties: { ...eventObjectBase, custom_spend_limit_set: originalApproveAmount === approveAmount, @@ -579,7 +578,7 @@ export default function ViewQuote() { const trackBestQuoteReviewedEvent = useCallback(() => { trackEvent({ event: 'Best Quote Reviewed', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, sensitiveProperties: { ...eventObjectBase, network_fees: feeInFiat, @@ -589,7 +588,7 @@ export default function ViewQuote() { const trackViewQuotePageLoadedEvent = useCallback(() => { trackEvent({ event: 'View Quote Page Loaded', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, sensitiveProperties: { ...eventObjectBase, response_time: currentTimestamp - reviewSwapClickedTimestamp, @@ -670,53 +669,6 @@ export default function ViewQuote() { ); }; - const nonGasFeeIsPositive = new BigNumber(nonGasFee, 16).gt(0); - const approveGasTotal = calcGasTotal( - approveGas || '0x0', - networkAndAccountSupports1559 ? baseAndPriorityFeePerGas : gasPrice, - ); - const extraNetworkFeeTotalInHexWEI = new BigNumber(nonGasFee, 16) - .plus(approveGasTotal, 16) - .toString(16); - const extraNetworkFeeTotalInEth = getValueFromWeiHex({ - value: extraNetworkFeeTotalInHexWEI, - toDenomination: 'ETH', - numberOfDecimals: 4, - }); - - let extraInfoRowLabel = ''; - if (approveGas && nonGasFeeIsPositive) { - extraInfoRowLabel = t('approvalAndAggregatorTxFeeCost'); - } else if (approveGas) { - extraInfoRowLabel = t('approvalTxGasCost'); - } else if (nonGasFeeIsPositive) { - extraInfoRowLabel = t('aggregatorFeeCost'); - } - - const onFeeCardMaxRowClick = () => { - networkAndAccountSupports1559 - ? setShowEditGasPopover(true) - : dispatch( - showModal({ - name: 'CUSTOMIZE_METASWAP_GAS', - value: tradeValue, - customGasLimitMessage: approveGas - ? t('extraApprovalGas', [hexToDecimal(approveGas)]) - : '', - customTotalSupplement: approveGasTotal, - extraInfoRow: extraInfoRowLabel - ? { - label: extraInfoRowLabel, - value: `${extraNetworkFeeTotalInEth} ${nativeCurrencySymbol}`, - } - : null, - initialGasPrice: gasPrice, - initialGasLimit: maxGasLimit, - minimumGasLimit: new BigNumber(nonCustomMaxGasLimit, 16).toNumber(), - }), - ); - }; - const actionableBalanceErrorMessage = tokenBalanceUnavailable ? t('swapTokenBalanceUnavailable', [sourceTokenSymbol]) : t('swapApproveNeedMoreTokens', [ @@ -831,11 +783,11 @@ export default function ViewQuote() { chainId, }; intervalId = setInterval(() => { - dispatch( - estimateSwapsSmartTransactionsGas(unsignedTx, approveTxParams), - ); - }, swapsRefreshRates.stxGetTransactionsRefreshTime); - dispatch(estimateSwapsSmartTransactionsGas(unsignedTx, approveTxParams)); + if (!swapsSTXLoading) { + dispatch(fetchSwapsSmartTransactionFees(unsignedTx, approveTxParams)); + } + }, swapsNetworkConfig.stxGetTransactionsRefreshTime); + dispatch(fetchSwapsSmartTransactionFees(unsignedTx, approveTxParams)); } else if (intervalId) { clearInterval(intervalId); } @@ -851,14 +803,10 @@ export default function ViewQuote() { unsignedTransaction.gas, unsignedTransaction.to, chainId, - swapsRefreshRates.stxGetTransactionsRefreshTime, + swapsNetworkConfig.stxGetTransactionsRefreshTime, isSwapButtonDisabled, ]); - const onCloseEditGasPopover = () => { - setShowEditGasPopover(false); - }; - useEffect(() => { // Thanks to the next line we will only do quotes polling 3 times before showing a Quote Timeout modal. dispatch(setSwapsQuotesPollingLimitEnabled(true)); @@ -920,25 +868,6 @@ export default function ViewQuote() { /> )} - {!supportsEIP1559V2 && - showEditGasPopover && - networkAndAccountSupports1559 && ( - - )} - {supportsEIP1559V2 && ( - <> - - - - )} -
{currentSmartTransactionsEnabled && smartTransactionsOptInStatus && - !smartTransactionEstimatedGas?.txData && ( + !smartTransactionFees?.tradeTxFees && ( )} {(!currentSmartTransactionsEnabled || !smartTransactionsOptInStatus || - smartTransactionEstimatedGas?.txData) && ( + smartTransactionFees?.tradeTxFees) && (
{ getByTestId('main-quote-summary__exchange-rate-container'), ).toMatchSnapshot(); expect(getByText('Estimated gas fee')).toBeInTheDocument(); + expect(getByText('0.00008 ETH')).toBeInTheDocument(); expect(getByText('Max fee')).toBeInTheDocument(); expect(getByText('Swap')).toBeInTheDocument(); }); @@ -87,7 +88,7 @@ describe('ViewQuote', () => { getByTestId('main-quote-summary__exchange-rate-container'), ).toMatchSnapshot(); expect(getByText('Estimated gas fee')).toBeInTheDocument(); - expect(getByText('0.00544 ETH')).toBeInTheDocument(); + expect(getByText('0.00008 ETH')).toBeInTheDocument(); expect(getByText('Max fee')).toBeInTheDocument(); expect(getByText('Swap')).toBeInTheDocument(); }); diff --git a/ui/pages/unlock-page/index.scss b/ui/pages/unlock-page/index.scss index 8e3932715..745b68350 100644 --- a/ui/pages/unlock-page/index.scss +++ b/ui/pages/unlock-page/index.scss @@ -1,4 +1,5 @@ .unlock-page { + color: var(--color-text-default); display: flex; flex-direction: column; justify-content: flex-start; @@ -6,14 +7,13 @@ width: 357px; padding: 30px; font-weight: 400; - color: var(--color-text-default); &__container { - background: var(--color-background-default); display: flex; align-self: stretch; justify-content: center; flex: 1 0 auto; + background: var(--color-background-default); } &__mascot-container { diff --git a/ui/pages/unlock-page/unlock-page.component.js b/ui/pages/unlock-page/unlock-page.component.js index cdc25bb7d..55f8571da 100644 --- a/ui/pages/unlock-page/unlock-page.component.js +++ b/ui/pages/unlock-page/unlock-page.component.js @@ -7,6 +7,7 @@ import TextField from '../../components/ui/text-field'; import Mascot from '../../components/ui/mascot'; import { SUPPORT_LINK } from '../../helpers/constants/common'; import { DEFAULT_ROUTE } from '../../helpers/constants/routes'; +import { EVENT } from '../../../shared/constants/metametrics'; export default class UnlockPage extends Component { static contextTypes = { @@ -77,7 +78,7 @@ export default class UnlockPage extends Component { const newState = await forceUpdateMetamaskState(); this.context.trackEvent( { - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Success', properties: { action: 'Unlock', @@ -99,7 +100,7 @@ export default class UnlockPage extends Component { if (message === 'Incorrect password') { const newState = await forceUpdateMetamaskState(); this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Incorrect Password', properties: { action: 'Unlock', diff --git a/ui/selectors/confirm-transaction.js b/ui/selectors/confirm-transaction.js index e3e8f6efb..e502d473c 100644 --- a/ui/selectors/confirm-transaction.js +++ b/ui/selectors/confirm-transaction.js @@ -117,6 +117,29 @@ export const unconfirmedTransactionsHashSelector = createSelector( }, ); +export const unconfirmedMessagesHashSelector = createSelector( + unapprovedMsgsSelector, + unapprovedPersonalMsgsSelector, + unapprovedDecryptMsgsSelector, + unapprovedEncryptionPublicKeyMsgsSelector, + unapprovedTypedMessagesSelector, + ( + unapprovedMsgs = {}, + unapprovedPersonalMsgs = {}, + unapprovedDecryptMsgs = {}, + unapprovedEncryptionPublicKeyMsgs = {}, + unapprovedTypedMessages = {}, + ) => { + return { + ...unapprovedMsgs, + ...unapprovedPersonalMsgs, + ...unapprovedDecryptMsgs, + ...unapprovedEncryptionPublicKeyMsgs, + ...unapprovedTypedMessages, + }; + }, +); + const unapprovedMsgCountSelector = (state) => state.metamask.unapprovedMsgCount; const unapprovedPersonalMsgCountSelector = (state) => state.metamask.unapprovedPersonalMsgCount; diff --git a/ui/selectors/nonce-sorted-transactions-selector.test.js b/ui/selectors/nonce-sorted-transactions-selector.test.js new file mode 100644 index 000000000..12a22fc08 --- /dev/null +++ b/ui/selectors/nonce-sorted-transactions-selector.test.js @@ -0,0 +1,349 @@ +import { head, last } from 'lodash'; +import { MAINNET_CHAIN_ID } from '../../shared/constants/network'; +import { + TRANSACTION_STATUSES, + TRANSACTION_TYPES, +} from '../../shared/constants/transaction'; +import { nonceSortedTransactionsSelector } from './transactions'; + +const RECIPIENTS = { + ONE: '0xRecipient1', + TWO: '0xRecipient2', +}; + +const SENDERS = { + ONE: '0xSender1', + TWO: '0xSender2', +}; + +const INCOMING_TX = { + id: '0-incoming', + type: TRANSACTION_TYPES.INCOMING, + txParams: { + value: '0x0', + from: RECIPIENTS.ONE, + to: SENDERS.ONE, + }, +}; + +const SIGNING_REQUEST = { + type: TRANSACTION_TYPES.SIGNING_REQUEST, + id: '0-signing', + status: TRANSACTION_STATUSES.UNAPPROVED, +}; + +const SIMPLE_SEND_TX = { + id: '0-simple', + txParams: { + from: SENDERS.ONE, + to: RECIPIENTS.ONE, + }, + type: TRANSACTION_TYPES.SIMPLE_SEND, +}; + +const TOKEN_SEND_TX = { + id: '0-transfer', + txParams: { + from: SENDERS.ONE, + to: RECIPIENTS.TWO, + value: '0x0', + data: '0xdata', + }, + type: TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER, +}; + +const RETRY_TX = { + ...SIMPLE_SEND_TX, + id: '0-retry', + type: TRANSACTION_TYPES.RETRY, +}; + +const CANCEL_TX = { + id: '0-cancel', + txParams: { + value: '0x0', + from: SENDERS.ONE, + to: SENDERS.ONE, + }, + type: TRANSACTION_TYPES.CANCEL, +}; + +const getStateTree = ({ + txList = [], + incomingTxList = [], + unapprovedMsgs = [], +} = {}) => ({ + metamask: { + provider: { + nickname: 'mainnet', + chainId: MAINNET_CHAIN_ID, + }, + unapprovedMsgs, + selectedAddress: SENDERS.ONE, + featureFlags: { + showIncomingTransactions: true, + }, + incomingTransactions: [...incomingTxList], + currentNetworkTxList: [...txList], + }, +}); + +const duplicateTx = (base, overrides) => { + const { + nonce = '0x0', + time = 0, + status = TRANSACTION_STATUSES.CONFIRMED, + txReceipt, + } = overrides ?? {}; + return { + ...base, + txParams: { + ...base.txParams, + nonce, + }, + txReceipt, + time, + status, + }; +}; + +describe('nonceSortedTransactionsSelector', () => { + it('should properly group a simple send that is superseded by a retry', () => { + const txList = [ + duplicateTx(SIMPLE_SEND_TX, { status: TRANSACTION_STATUSES.DROPPED }), + duplicateTx(RETRY_TX, { time: 1 }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: last(txList), + hasRetried: true, + hasCancelled: false, + }, + ]); + }); + + it('should properly group a failed off-chain simple send that is superseded by a retry', () => { + const txList = [ + duplicateTx(SIMPLE_SEND_TX, { status: TRANSACTION_STATUSES.FAILED }), + duplicateTx(RETRY_TX, { time: 1 }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: last(txList), + hasRetried: true, + hasCancelled: false, + }, + ]); + }); + + it('should properly group a simple send that is superseded by a cancel', () => { + const txList = [ + duplicateTx(SIMPLE_SEND_TX, { status: TRANSACTION_STATUSES.DROPPED }), + duplicateTx(CANCEL_TX, { time: 1 }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: last(txList), + hasRetried: false, + hasCancelled: true, + }, + ]); + }); + + it('should properly group a simple send and retry that is superseded by a cancel', () => { + const txList = [ + duplicateTx(SIMPLE_SEND_TX, { status: TRANSACTION_STATUSES.DROPPED }), + duplicateTx(RETRY_TX, { time: 1, status: TRANSACTION_STATUSES.DROPPED }), + duplicateTx(CANCEL_TX, { time: 2 }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: last(txList), + hasRetried: true, + hasCancelled: true, + }, + ]); + }); + + it('should group transactions created by an advance user attempting to manually supersede own txs', () => { + // We do not want this behavior longterm. This test just keeps us from + // changing expectations from today. It will also allow us to invert this + // test case when we move and change grouping logic. + const txList = [ + duplicateTx(TOKEN_SEND_TX, { status: TRANSACTION_STATUSES.DROPPED }), + duplicateTx(SIMPLE_SEND_TX, { time: 1 }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: last(txList), + hasRetried: false, + hasCancelled: false, + }, + ]); + }); + + it('should NOT group sent and incoming tx with same nonce', () => { + const txList = [duplicateTx(SIMPLE_SEND_TX)]; + const incomingTxList = [duplicateTx(INCOMING_TX, { time: 1 })]; + + const state = getStateTree({ txList, incomingTxList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: head(txList), + hasRetried: false, + hasCancelled: false, + }, + { + nonce: '0x0', + transactions: incomingTxList, + initialTransaction: head(incomingTxList), + primaryTransaction: head(incomingTxList), + hasRetried: false, + hasCancelled: false, + }, + ]); + }); + + it('should display a signing request', () => { + const state = getStateTree({ unapprovedMsgs: [SIGNING_REQUEST] }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: undefined, + transactions: [SIGNING_REQUEST], + initialTransaction: SIGNING_REQUEST, + primaryTransaction: SIGNING_REQUEST, + hasRetried: false, + hasCancelled: false, + }, + ]); + }); + + it('should not set a failed off-chain transaction as primary, allowing additional retries', () => { + const txList = [ + duplicateTx(SIMPLE_SEND_TX, { status: TRANSACTION_STATUSES.SUBMITTED }), + duplicateTx(RETRY_TX, { status: TRANSACTION_STATUSES.FAILED, time: 1 }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: head(txList), + hasRetried: false, + hasCancelled: false, + }, + ]); + }); + + it('should not set a failed off-chain transaction as primary or initial, regardless of tx order', () => { + // Scenario: + // 1. You submit transaction A. + // 2. Transaction A fails off-chain (the network rejects it). + // 3. You submit transaction B. + // 4. Transaction A no longer has any visual representation in the UI. + // This is desired because we have no way currently to tell the intent + // of the transactions. + const txList = [ + duplicateTx(SIMPLE_SEND_TX, { status: TRANSACTION_STATUSES.FAILED }), + duplicateTx(SIMPLE_SEND_TX, { + status: TRANSACTION_STATUSES.SUBMITTED, + time: 1, + }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: last(txList), + primaryTransaction: last(txList), + hasRetried: false, + hasCancelled: false, + }, + ]); + }); + + it('should set a failed on-chain transaction as primary', () => { + const txList = [ + duplicateTx(SIMPLE_SEND_TX, { status: TRANSACTION_STATUSES.SUBMITTED }), + duplicateTx(RETRY_TX, { + status: TRANSACTION_STATUSES.FAILED, + txReceipt: { status: '0x0' }, + time: 1, + }), + ]; + + const state = getStateTree({ txList }); + + const result = nonceSortedTransactionsSelector(state); + + expect(result).toStrictEqual([ + { + nonce: '0x0', + transactions: txList, + initialTransaction: head(txList), + primaryTransaction: last(txList), + hasRetried: false, + hasCancelled: false, + }, + ]); + }); +}); diff --git a/ui/selectors/selectors.js b/ui/selectors/selectors.js index 537ac5e31..a8b3ba99a 100644 --- a/ui/selectors/selectors.js +++ b/ui/selectors/selectors.js @@ -470,6 +470,24 @@ export function getTotalUnapprovedCount(state) { ); } +export function getTotalUnapprovedMessagesCount(state) { + const { + unapprovedMsgCount = 0, + unapprovedPersonalMsgCount = 0, + unapprovedDecryptMsgCount = 0, + unapprovedEncryptionPublicKeyMsgCount = 0, + unapprovedTypedMessagesCount = 0, + } = state.metamask; + + return ( + unapprovedMsgCount + + unapprovedPersonalMsgCount + + unapprovedDecryptMsgCount + + unapprovedEncryptionPublicKeyMsgCount + + unapprovedTypedMessagesCount + ); +} + function getUnapprovedTxCount(state) { const { unapprovedTxs = {} } = state.metamask; return Object.keys(unapprovedTxs).length; @@ -671,7 +689,7 @@ export function getSwapsDefaultToken(state) { export function getIsSwapsChain(state) { const chainId = getCurrentChainId(state); const isNotDevelopment = - process.env.METAMASK_ENVIRONMENT !== 'development' || + process.env.METAMASK_ENVIRONMENT !== 'development' && process.env.METAMASK_ENVIRONMENT !== 'testing'; return isNotDevelopment ? ALLOWED_PROD_SWAPS_CHAIN_IDS.includes(chainId) @@ -693,6 +711,15 @@ export function getIsBuyableMoonPayChain(state) { return Boolean(BUYABLE_CHAINS_MAP?.[chainId]?.moonPay); } +export function getIsBuyableWyreChain(state) { + const chainId = getCurrentChainId(state); + return Boolean(BUYABLE_CHAINS_MAP?.[chainId]?.wyre); +} +export function getIsBuyableCoinbasePayChain(state) { + const chainId = getCurrentChainId(state); + return Boolean(BUYABLE_CHAINS_MAP?.[chainId]?.coinbasePayCurrencies); +} + export function getNativeCurrencyImage(state) { const nativeCurrency = getNativeCurrency(state).toUpperCase(); return NATIVE_CURRENCY_TOKEN_IMAGE_MAP[nativeCurrency]; @@ -714,25 +741,68 @@ export function getSnaps(state) { export const getSnapsRouteObjects = createSelector(getSnaps, (snaps) => { return Object.values(snaps).map((snap) => { return { + id: snap.id, tabMessage: () => snap.manifest.proposedName, descriptionMessage: () => snap.manifest.description, sectionMessage: () => snap.manifest.description, - route: `${SNAPS_VIEW_ROUTE}/${window.btoa( - unescape(encodeURIComponent(snap.id)), - )}`, + route: `${SNAPS_VIEW_ROUTE}/${encodeURIComponent(snap.id)}`, icon: 'fa fa-flask', }; }); }); + +/** + * @typedef {Object} Notification + * @property {string} id - A unique identifier for the notification + * @property {string} origin - A string identifing the snap origin + * @property {EpochTimeStamp} createdDate - A date in epochTimeStramps, identifying when the notification was first committed + * @property {EpochTimeStamp} readDate - A date in epochTimeStramps, identifying when the notification was read by the user + * @property {string} message - A string containing the notification message + */ + +/** + * Notifications are managed by the notification controller and referenced by + * `state.metamask.notifications`. This function returns a list of notifications + * the can be shown to the user. + * + * The returned notifications are sorted by date. + * + * @param {Object} state - the redux state object + * @returns {Notification[]} An array of notifications that can be shown to the user + */ + +export function getNotifications(state) { + const notifications = Object.values(state.metamask.notifications); + + const notificationsSortedByDate = notifications.sort( + (a, b) => new Date(b.createdDate) - new Date(a.createdDate), + ); + return notificationsSortedByDate; +} + +export function getUnreadNotifications(state) { + const notifications = getNotifications(state); + + const unreadNotificationCount = notifications.filter( + (notification) => notification.readDate === null, + ); + + return unreadNotificationCount; +} + +export const getUnreadNotificationsCount = createSelector( + getUnreadNotifications, + (notifications) => notifications.length, +); ///: END:ONLY_INCLUDE_IN /** - * Get an object of notification IDs and if they are allowed or not. + * Get an object of announcement IDs and if they are allowed or not. * * @param {Object} state * @returns {Object} */ -function getAllowedNotificationIds(state) { +function getAllowedAnnouncementIds(state) { const currentKeyring = getCurrentKeyring(state); const currentKeyringIsLedger = currentKeyring?.type === KEYRING_TYPES.LEDGER; const supportsWebHid = window.navigator.hid !== undefined; @@ -749,40 +819,41 @@ function getAllowedNotificationIds(state) { 7: false, 8: supportsWebHid && currentKeyringIsLedger && currentlyUsingLedgerLive, 9: getIsMainnet(state), - 10: Boolean(process.env.TOKEN_DETECTION_V2), - 11: Boolean(process.env.TOKEN_DETECTION_V2), + 10: Boolean(process.env.TOKEN_DETECTION_V2) && !process.env.IN_TEST, + 11: Boolean(process.env.TOKEN_DETECTION_V2) && !process.env.IN_TEST, + 12: true, }; } /** - * @typedef {Object} Notification - * @property {number} id - A unique identifier for the notification + * @typedef {Object} Announcement + * @property {number} id - A unique identifier for the announcement * @property {string} date - A date in YYYY-MM-DD format, identifying when the notification was first committed */ /** - * Notifications are managed by the notification controller and referenced by - * `state.metamask.notifications`. This function returns a list of notifications - * the can be shown to the user. This list includes all notifications that do not + * Announcements are managed by the announcement controller and referenced by + * `state.metamask.announcements`. This function returns a list of announcements + * the can be shown to the user. This list includes all announcements that do not * have a truthy `isShown` property. * - * The returned notifications are sorted by date. + * The returned announcements are sorted by date. * * @param {Object} state - the redux state object - * @returns {Notification[]} An array of notifications that can be shown to the user + * @returns {Announcement[]} An array of announcements that can be shown to the user */ -export function getSortedNotificationsToShow(state) { - const notifications = Object.values(state.metamask.notifications); - const allowedNotificationIds = getAllowedNotificationIds(state); - const notificationsToShow = notifications.filter( - (notification) => - !notification.isShown && allowedNotificationIds[notification.id], +export function getSortedAnnouncementsToShow(state) { + const announcements = Object.values(state.metamask.announcements); + const allowedAnnouncementIds = getAllowedAnnouncementIds(state); + const announcementsToShow = announcements.filter( + (announcement) => + !announcement.isShown && allowedAnnouncementIds[announcement.id], ); - const notificationsSortedByDate = notificationsToShow.sort( + const announcementsSortedByDate = announcementsToShow.sort( (a, b) => new Date(b.date) - new Date(a.date), ); - return notificationsSortedByDate; + return announcementsSortedByDate; } export function getShowRecoveryPhraseReminder(state) { @@ -968,6 +1039,22 @@ export function getIsTokenDetectionSupported(state) { ].includes(chainId); } +/** + * To retrieve the list of tokens detected and saved on the state to detectedToken object. + * + * @param {*} state + * @returns list of token objects + */ export function getDetectedTokensInCurrentNetwork(state) { return state.metamask.detectedTokens; } + +/** + * To fetch the name of the tokens that are imported from tokens found page + * + * @param {*} state + * @returns + */ +export function getNewTokensImported(state) { + return state.appState.newTokensImported; +} diff --git a/ui/selectors/selectors.test.js b/ui/selectors/selectors.test.js index ca3f9c92f..385bd2a56 100644 --- a/ui/selectors/selectors.test.js +++ b/ui/selectors/selectors.test.js @@ -244,4 +244,27 @@ describe('Selectors', () => { const appIsLoading = selectors.getAppIsLoading(mockState); expect(appIsLoading).toStrictEqual(false); }); + it('#getNotifications', () => { + const notifications = selectors.getNotifications(mockState); + + expect(notifications).toStrictEqual([ + mockState.metamask.notifications.test, + mockState.metamask.notifications.test2, + ]); + }); + it('#getUnreadNotificationsCount', () => { + const unreadNotificationCount = selectors.getUnreadNotificationsCount( + mockState, + ); + + expect(unreadNotificationCount).toStrictEqual(1); + }); + + it('#getUnreadNotifications', () => { + const unreadNotifications = selectors.getUnreadNotifications(mockState); + + expect(unreadNotifications).toStrictEqual([ + mockState.metamask.notifications.test, + ]); + }); }); diff --git a/ui/selectors/transactions.js b/ui/selectors/transactions.js index ca2bb8798..15e05d2f8 100644 --- a/ui/selectors/transactions.js +++ b/ui/selectors/transactions.js @@ -17,6 +17,11 @@ import { getSelectedAddress, } from './selectors'; +const INVALID_INITIAL_TRANSACTION_TYPES = [ + TRANSACTION_TYPES.CANCEL, + TRANSACTION_TYPES.RETRY, +]; + export const incomingTxListSelector = (state) => { const { showIncomingTransactions } = state.metamask.featureFlags; if (!showIncomingTransactions) { @@ -245,6 +250,7 @@ export const nonceSortedTransactionsSelector = createSelector( status, type, time: txTime, + txReceipt, } = transaction; if (typeof nonce === 'undefined' || type === TRANSACTION_TYPES.INCOMING) { @@ -254,6 +260,7 @@ export const nonceSortedTransactionsSelector = createSelector( primaryTransaction: transaction, hasRetried: false, hasCancelled: false, + nonce, }; if (type === TRANSACTION_TYPES.INCOMING) { @@ -270,45 +277,161 @@ export const nonceSortedTransactionsSelector = createSelector( const { primaryTransaction: { time: primaryTxTime = 0 } = {}, + initialTransaction: { time: initialTxTime = 0 } = {}, } = nonceProps; - const previousPrimaryIsNetworkFailure = - nonceProps.primaryTransaction.status === - TRANSACTION_STATUSES.FAILED && - nonceProps.primaryTransaction?.txReceipt?.status !== '0x0'; - const currentTransactionIsOnChainFailure = - transaction?.txReceipt?.status === '0x0'; + // Current Transaction Logic Cases + // -------------------------------------------------------------------- + // Current transaction: The transaction we are examining in this loop. + // Each iteration should be in time order, but that is not guaranteed. + // -------------------------------------------------------------------- + const currentTransaction = { + // A on chain failure means the current transaction was submitted and + // considered for inclusion in a block but something prevented it + // from being included, such as slippage on gas prices and conversion + // when doing a swap. These transactions will have a '0x0' value in + // the txReceipt.status field. + isOnChainFailure: txReceipt?.status === '0x0', + // Another type of failure is a "off chain" or "network" failure, + // where the error occurs on the JSON RPC call to the network client + // (Like Infura). These transactions are never broadcast for + // inclusion and the nonce associated with them is not consumed. When + // this occurs the next transaction will have the same nonce as the + // current, failed transaction. A failed on chain transaction will + // not have the FAILED status although it should (future TODO: add a + // new FAILED_ON_CHAIN) status. I use the word "Ephemeral" here + // because a failed transaction that does not get broadcast is not + // known outside of the user's local MetaMask and the nonce + // associated will be applied to the next. + isEphemeral: + status === TRANSACTION_STATUSES.FAILED && + txReceipt?.status !== '0x0', + // We never want to use a speed up (retry) or cancel as the initial + // transaction in a group, regardless of time order. This is because + // useTransactionDisplayData cannot parse a retry or cancel because + // it lacks information on whether its a simple send, token transfer, + // etc. + isRetryOrCancel: INVALID_INITIAL_TRANSACTION_TYPES.includes(type), + // Primary transactions usually are the latest transaction by time, + // but not always. This value shows whether this transaction occurred + // after the current primary. + occurredAfterPrimary: txTime > primaryTxTime, + // Priority Statuses are those that are ones either already confirmed + // on chain, submitted to the network, or waiting for user approval. + // These statuses typically indicate a transaction that needs to have + // its status reflected in the UI. + hasPriorityStatus: status in PRIORITY_STATUS_HASH, + // A confirmed transaction is the most valid transaction status to + // display because no other transaction of the same nonce can have a + // more valid status. + isConfirmed: status === TRANSACTION_STATUSES.CONFIRMED, + // Initial transactions usually are the earliest transaction by time, + // but not always. THis value shows whether this transaction occurred + // before the current initial. + occurredBeforeInitial: txTime < initialTxTime, + // We only allow users to retry the transaction in certain scenarios + // to help shield from expensive operations and other unwanted side + // effects. This value is used to determine if the entire transaction + // group should be marked as having had a retry. + isValidRetry: + type === TRANSACTION_TYPES.RETRY && + (status in PRIORITY_STATUS_HASH || + status === TRANSACTION_STATUSES.DROPPED), + // We only allow users to cancel the transaction in certain scenarios + // to help shield from expensive operations and other unwanted side + // effects. This value is used to determine if the entire transaction + // group should be marked as having had a cancel. + isValidCancel: + type === TRANSACTION_TYPES.CANCEL && + (status in PRIORITY_STATUS_HASH || + status === TRANSACTION_STATUSES.DROPPED), + }; + // We should never assign a retry or cancel transaction as the initial, + // likewise an ephemeral transaction should not be initial. + currentTransaction.eligibleForInitial = + !currentTransaction.isRetryOrCancel && + !currentTransaction.isEphemeral; + + // If a transaction failed on chain or was confirmed then it should + // always be the primary because no other transaction is more valid. + currentTransaction.shouldBePrimary = + currentTransaction.isConfirmed || currentTransaction.isOnChainFailure; + + // Primary Transaction Logic Cases + // -------------------------------------------------------------------- + // Primary transaction: The transaction for any given nonce which has + // the most valid status on the network. + // Example: + // 1. Submit transaction A + // 2. Speed up Transaction A. + // 3. This creates a new Transaction (B) with higher gas params. + // 4. Transaction A and Transaction B are both submitted. + // 5. We expect Transaction B to be the most valid transaction to use + // for the status of the transaction group because it has higher + // gas params and should be included first. + // The following logic variables are used for edge cases that protect + // against UI bugs when this breaks down. + const previousPrimaryTransaction = { + // As we loop through the transactions in state we may temporarily + // assign a primaryTransaction that is an "Ephemeral" transaction, + // which is one that failed before being broadcast for inclusion in a + // block. When this happens, and we have another transaction to + // consider in a nonce group, we should use the new transaction. + isEphemeral: + nonceProps.primaryTransaction.status === + TRANSACTION_STATUSES.FAILED && + nonceProps.primaryTransaction?.txReceipt?.status !== '0x0', + }; + + // Initial Transaction Logic Cases + // -------------------------------------------------------------------- + // Initial Transaction: The transaciton that most likely represents the + // user's intent when creating/approving the transaction. In most cases + // this is the first transaction of a nonce group, by time, but this + // breaks down in the case of users with the advanced setting enabled + // to set their own nonces manually. In that case a user may submit two + // completely different transactions of the same nonce and they will be + // bundled together by this selector as the same activity entry. + const previousInitialTransaction = { + // As we loop through the transactions in state we may temporarily + // assign a initialTransaction that is an "Ephemeral" transaction, + // which is one that failed before being broadcast for inclusion in a + // block. When this happens, and we have another transaction to + // consider in a nonce group, we should use the new transaction. + isEphemeral: + nonceProps.initialTransaction.status === + TRANSACTION_STATUSES.FAILED && + nonceProps.initialTransaction.txReceipt?.status !== '0x0', + }; + + // Check the above logic cases and assign a new primaryTransaction if + // appropriate if ( - status === TRANSACTION_STATUSES.CONFIRMED || - currentTransactionIsOnChainFailure || - previousPrimaryIsNetworkFailure || - (txTime > primaryTxTime && status in PRIORITY_STATUS_HASH) + currentTransaction.shouldBePrimary || + previousPrimaryTransaction.isEphemeral || + (currentTransaction.occurredAfterPrimary && + currentTransaction.hasPriorityStatus) ) { nonceProps.primaryTransaction = transaction; } - const { - initialTransaction: { time: initialTxTime = 0 } = {}, - } = nonceProps; - - // Used to display the transaction action, since we don't want to overwrite the action if - // it was replaced with a cancel attempt transaction. - if (txTime < initialTxTime) { + // Check the above logic cases and assign a new initialTransaction if + // appropriate + if ( + (currentTransaction.occurredBeforeInitial && + currentTransaction.eligibleForInitial) || + (previousInitialTransaction.isEphemeral && + currentTransaction.eligibleForInitial) + ) { nonceProps.initialTransaction = transaction; } - if ( - type === TRANSACTION_TYPES.RETRY && - status in PRIORITY_STATUS_HASH - ) { + if (currentTransaction.isValidRetry) { nonceProps.hasRetried = true; } - if ( - type === TRANSACTION_TYPES.CANCEL && - status in PRIORITY_STATUS_HASH - ) { + if (currentTransaction.isValidCancel) { nonceProps.hasCancelled = true; } } else { @@ -319,10 +442,12 @@ export const nonceSortedTransactionsSelector = createSelector( primaryTransaction: transaction, hasRetried: transaction.type === TRANSACTION_TYPES.RETRY && - transaction.status in PRIORITY_STATUS_HASH, + (transaction.status in PRIORITY_STATUS_HASH || + transaction.status === TRANSACTION_STATUSES.DROPPED), hasCancelled: transaction.type === TRANSACTION_TYPES.CANCEL && - transaction.status in PRIORITY_STATUS_HASH, + (transaction.status in PRIORITY_STATUS_HASH || + transaction.status === TRANSACTION_STATUSES.DROPPED), }; insertOrderedNonce(orderedNonces, nonce); @@ -336,7 +461,31 @@ export const nonceSortedTransactionsSelector = createSelector( orderedTransactionGroups, incomingTransactionGroups, ); - return unapprovedTransactionGroups.concat(orderedTransactionGroups); + return unapprovedTransactionGroups + .concat(orderedTransactionGroups) + .map((txGroup) => { + // In the case that we have a cancel or retry as initial transaction + // and there is a valid transaction in the group, we should reassign + // the other valid transaction as initial. In this case validity of the + // transaction is expanded to include off-chain failures because it is + // valid to retry those with higher gas prices. + if ( + INVALID_INITIAL_TRANSACTION_TYPES.includes( + txGroup.initialTransaction?.type, + ) + ) { + const nonRetryOrCancel = txGroup.transactions.find( + (tx) => !INVALID_INITIAL_TRANSACTION_TYPES.includes(tx.type), + ); + if (nonRetryOrCancel) { + return { + ...txGroup, + initialTransaction: nonRetryOrCancel, + }; + } + } + return txGroup; + }); }, ); diff --git a/ui/store/actionConstants.js b/ui/store/actionConstants.js index 1e426daea..2a5528e72 100644 --- a/ui/store/actionConstants.js +++ b/ui/store/actionConstants.js @@ -114,3 +114,6 @@ export const DISMISS_SMART_TRANSACTIONS_ERROR_MESSAGE = 'DISMISS_SMART_TRANSACTIONS_ERROR_MESSAGE'; export const TOGGLE_CURRENCY_INPUT_SWITCH = 'TOGGLE_CURRENCY_INPUT_SWITCH'; + +// Token detection v2 +export const SET_NEW_TOKENS_IMPORTED = 'SET_NEW_TOKENS_IMPORTED'; diff --git a/ui/store/actions.js b/ui/store/actions.js index df5411c52..b8f738882 100644 --- a/ui/store/actions.js +++ b/ui/store/actions.js @@ -11,7 +11,9 @@ import { getMethodDataAsync } from '../helpers/utils/transactions.util'; import switchDirection from '../helpers/utils/switch-direction'; import { ENVIRONMENT_TYPE_NOTIFICATION, + ORIGIN_METAMASK, POLLING_TOKEN_ENVIRONMENT_TYPES, + MESSAGE_TYPE, } from '../../shared/constants/app'; import { hasUnconfirmedTransactions } from '../helpers/utils/confirm-tx.util'; import txHelper from '../helpers/utils/tx-helper'; @@ -21,6 +23,9 @@ import { getMetaMaskAccounts, getPermittedAccountsForCurrentTab, getSelectedAddress, + ///: BEGIN:ONLY_INCLUDE_IN(flask) + getNotifications, + ///: END:ONLY_INCLUDE_IN } from '../selectors'; import { computeEstimatedGasLimit, resetSendState } from '../ducks/send'; import { switchedToUnconnectedAccount } from '../ducks/alerts/unconnected-account'; @@ -31,8 +36,12 @@ import { LEDGER_TRANSPORT_TYPES, LEDGER_USB_VENDOR_ID, } from '../../shared/constants/hardware-wallets'; +import { EVENT } from '../../shared/constants/metametrics'; import { parseSmartTransactionsError } from '../pages/swaps/swaps.util'; import { isEqualCaseInsensitive } from '../../shared/modules/string-utils'; +///: BEGIN:ONLY_INCLUDE_IN(flask) +import { NOTIFICATIONS_EXPIRATION_DELAY } from '../helpers/constants/notifications'; +///: END:ONLY_INCLUDE_IN import * as actionConstants from './actionConstants'; let background = null; @@ -736,6 +745,32 @@ export function updateEditableParams(txId, editableParams) { }; } +/** + * Appends new send flow history to a transaction + * + * @param {string} txId - the id of the transaction to update + * @param {Array<{event: string, timestamp: number}>} sendFlowHistory - the new send flow history to append to the + * transaction + * @returns {import('../../shared/constants/transaction').TransactionMeta} + */ +export function updateTransactionSendFlowHistory(txId, sendFlowHistory) { + return async (dispatch) => { + let updatedTransaction; + try { + updatedTransaction = await promisifiedBackground.updateTransactionSendFlowHistory( + txId, + sendFlowHistory, + ); + } catch (error) { + dispatch(txError(error)); + log.error(error.message); + throw error; + } + + return updatedTransaction; + }; +} + export function updateTransactionGasFees(txId, txGasFees) { return async (dispatch) => { let updatedTransaction; @@ -799,27 +834,67 @@ export function updateTransaction(txData, dontShowLoadingIndicator) { }; } -export function addUnapprovedTransaction(txParams, origin, type) { - log.debug('background.addUnapprovedTransaction'); - - return () => { - return new Promise((resolve, reject) => { - background.addUnapprovedTransaction( +/** + * Action to create a new transaction in the controller and route to the + * confirmation page. Returns the newly created txMeta in case additional logic + * should be applied to the transaction after creation. + * + * @param {import('../../shared/constants/transaction').TxParams} txParams - + * The transaction parameters + * @param {import( + * '../../shared/constants/transaction' + * ).TransactionTypeString} type - The type of the transaction being added. + * @param {Array<{event: string, timestamp: number}>} sendFlowHistory - The + * history of the send flow at time of creation. + * @returns {import('../../shared/constants/transaction').TransactionMeta} + */ +export function addUnapprovedTransactionAndRouteToConfirmationPage( + txParams, + type, + sendFlowHistory, +) { + return async (dispatch) => { + try { + log.debug('background.addUnapprovedTransaction'); + const txMeta = await promisifiedBackground.addUnapprovedTransaction( txParams, - origin, + ORIGIN_METAMASK, type, - (err, txMeta) => { - if (err) { - reject(err); - return; - } - resolve(txMeta); - }, + sendFlowHistory, ); - }); + dispatch(showConfTxPage()); + return txMeta; + } catch (error) { + dispatch(hideLoadingIndication()); + dispatch(displayWarning(error.message)); + } + return null; }; } +/** + * Wrapper around the promisifedBackground to create a new unapproved + * transaction in the background and return the newly created txMeta. + * This method does not show errors or route to a confirmation page and is + * used primarily for swaps functionality. + * + * @param {import('../../shared/constants/transaction').TxParams} txParams - + * The transaction parameters + * @param {import( + * '../../shared/constants/transaction' + * ).TransactionTypeString} type - The type of the transaction being added. + * @returns {import('../../shared/constants/transaction').TransactionMeta} + */ +export async function addUnapprovedTransaction(txParams, type) { + log.debug('background.addUnapprovedTransaction'); + const txMeta = await promisifiedBackground.addUnapprovedTransaction( + txParams, + ORIGIN_METAMASK, + type, + ); + return txMeta; +} + export function updateAndApproveTx(txData, dontShowLoadingIndicator) { return (dispatch) => { !dontShowLoadingIndicator && dispatch(showLoadingIndication()); @@ -923,9 +998,9 @@ export function enableSnap(snapId) { }; } -export function removeSnap(snap) { +export function removeSnap(snapId) { return async (dispatch) => { - await promisifiedBackground.removeSnap(snap); + await promisifiedBackground.removeSnap(snapId); await forceUpdateMetamaskState(dispatch); }; } @@ -933,6 +1008,44 @@ export function removeSnap(snap) { export async function removeSnapError(msgData) { return promisifiedBackground.removeSnapError(msgData); } + +export function dismissNotifications(ids) { + return async (dispatch) => { + await promisifiedBackground.dismissNotifications(ids); + await forceUpdateMetamaskState(dispatch); + }; +} + +export function deleteExpiredNotifications() { + return async (dispatch, getState) => { + const state = getState(); + const notifications = getNotifications(state); + + const notificationIdsToDelete = notifications + .filter((notification) => { + const expirationTime = new Date( + Date.now() - NOTIFICATIONS_EXPIRATION_DELAY, + ); + + return Boolean( + notification.readDate && + new Date(notification.readDate) < expirationTime, + ); + }) + .map(({ id }) => id); + if (notificationIdsToDelete.length) { + await promisifiedBackground.dismissNotifications(notificationIdsToDelete); + await forceUpdateMetamaskState(dispatch); + } + }; +} + +export function markNotificationsAsRead(ids) { + return async (dispatch) => { + await promisifiedBackground.markNotificationsAsRead(ids); + await forceUpdateMetamaskState(dispatch); + }; +} ///: END:ONLY_INCLUDE_IN export function cancelMsg(msgData) { @@ -953,6 +1066,96 @@ export function cancelMsg(msgData) { }; } +/** + * Cancels all of the given messages + * + * @param {Array} msgDataList - a list of msg data objects + * @returns {function(*): Promise} + */ +export function cancelMsgs(msgDataList) { + return async (dispatch) => { + dispatch(showLoadingIndication()); + + try { + const msgIds = msgDataList.map((id) => id); + const cancellations = msgDataList.map( + ({ id, type }) => + new Promise((resolve, reject) => { + switch (type) { + case MESSAGE_TYPE.ETH_SIGN_TYPED_DATA: + background.cancelTypedMessage(id, (err) => { + if (err) { + reject(err); + return; + } + resolve(); + }); + return; + case MESSAGE_TYPE.PERSONAL_SIGN: + background.cancelPersonalMessage(id, (err) => { + if (err) { + reject(err); + return; + } + resolve(); + }); + return; + case MESSAGE_TYPE.ETH_DECRYPT: + background.cancelDecryptMessage(id, (err) => { + if (err) { + reject(err); + return; + } + resolve(); + }); + return; + case MESSAGE_TYPE.ETH_GET_ENCRYPTION_PUBLIC_KEY: + background.cancelEncryptionPublicKeyMsg(id, (err) => { + if (err) { + reject(err); + return; + } + resolve(); + }); + return; + case MESSAGE_TYPE.ETH_SIGN: + background.cancelMessage(id, (err) => { + if (err) { + reject(err); + return; + } + resolve(); + }); + return; + default: + reject( + new Error( + `MetaMask Message Signature: Unknown message type: ${id}`, + ), + ); + } + }), + ); + + await Promise.all(cancellations); + const newState = await updateMetamaskStateFromBackground(); + dispatch(updateMetamaskState(newState)); + + msgIds.forEach((id) => { + dispatch(completedTx(id)); + }); + } catch (err) { + log.error(err); + } finally { + if (getEnvironmentType() === ENVIRONMENT_TYPE_NOTIFICATION) { + closeNotificationPopup(); + } else { + dispatch(hideLoadingIndication()); + } + } + }; +} + export function cancelPersonalMsg(msgData) { return async (dispatch) => { dispatch(showLoadingIndication()); @@ -2891,6 +3094,13 @@ export function setNewCollectibleAddedMessage(newCollectibleAddedMessage) { }; } +export function setNewTokensImported(newTokensImported) { + return { + type: actionConstants.SET_NEW_TOKENS_IMPORTED, + value: newTokensImported, + }; +} + export function setLastActiveTime() { return (dispatch) => { background.setLastActiveTime((err) => { @@ -3335,7 +3545,7 @@ export async function setSmartTransactionsOptInStatus( ) { trackMetaMetricsEvent({ event: 'STX OptIn', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, sensitiveProperties: { stx_enabled: true, current_stx_enabled: true, @@ -3346,36 +3556,16 @@ export async function setSmartTransactionsOptInStatus( await promisifiedBackground.setSmartTransactionsOptInStatus(optInState); } -export function fetchSmartTransactionFees(unsignedTransaction) { - return async (dispatch) => { - try { - return await promisifiedBackground.fetchSmartTransactionFees( - unsignedTransaction, - ); - } catch (e) { - log.error(e); - if (e.message.startsWith('Fetch error:')) { - const errorObj = parseSmartTransactionsError(e.message); - dispatch({ - type: actionConstants.SET_SMART_TRANSACTIONS_ERROR, - payload: errorObj.type, - }); - } - throw e; - } - }; -} - -export function estimateSmartTransactionsGas( +export function fetchSmartTransactionFees( unsignedTransaction, approveTxParams, ) { - if (approveTxParams) { - approveTxParams.value = '0x0'; - } return async (dispatch) => { + if (approveTxParams) { + approveTxParams.value = '0x0'; + } try { - await promisifiedBackground.estimateSmartTransactionsGas( + return await promisifiedBackground.fetchSmartTransactionFees( unsignedTransaction, approveTxParams, ); diff --git a/ui/store/actions.test.js b/ui/store/actions.test.js index 727835ecf..f956cc841 100644 --- a/ui/store/actions.test.js +++ b/ui/store/actions.test.js @@ -1696,4 +1696,58 @@ describe('Actions', () => { expect(expectedAction.value.id).toStrictEqual(txId); }); }); + + describe('#cancelMsgs', () => { + it('creates COMPLETED_TX with the cancelled messages IDs', async () => { + const store = mockStore(); + + const cancelTypedMessageStub = sinon.stub().callsFake((_, cb) => cb()); + + const cancelPersonalMessageStub = sinon.stub().callsFake((_, cb) => cb()); + + background.getApi.returns({ + cancelTypedMessage: cancelTypedMessageStub, + cancelPersonalMessage: cancelPersonalMessageStub, + getState: sinon.stub().callsFake((cb) => + cb(null, { + currentLocale: 'test', + selectedAddress: '0xFirstAddress', + provider: { + chainId: '0x1', + }, + accounts: { + '0xFirstAddress': { + balance: '0x0', + }, + }, + cachedBalances: { + '0x1': { + '0xFirstAddress': '0x0', + }, + }, + }), + ), + }); + + const msgsList = [ + { id: 7648683973086304, status: 'unapproved', type: 'personal_sign' }, + { + id: 7648683973086303, + status: 'unapproved', + type: 'eth_signTypedData', + }, + ]; + + actions._setBackgroundConnection(background.getApi()); + + await store.dispatch(actions.cancelMsgs(msgsList)); + const resultantActions = store.getActions(); + const expectedActions = resultantActions.filter( + (action) => action.type === 'COMPLETED_TX', + ); + + expect(expectedActions[0].value.id).toStrictEqual(msgsList[0]); + expect(expectedActions[1].value.id).toStrictEqual(msgsList[1]); + }); + }); }); diff --git a/yarn.lock b/yarn.lock index 359c78544..cd2a06003 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1411,6 +1411,21 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^1.2.2": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886" + integrity sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.9.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@eth-optimism/contracts@0.0.0-2021919175625": version "0.0.0-2021919175625" resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.0.0-2021919175625.tgz#551ed5d98ac4405596e97f723c28ee6376e65546" @@ -2197,6 +2212,52 @@ ws "*" xtend "^4.0.0" +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@inquirer/confirm@^0.0.14-alpha.0": + version "0.0.14-alpha.0" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-0.0.14-alpha.0.tgz#4a759c6def5ecd73bc239e090ee6197f74f52dbd" + integrity sha512-MTMCp/jUHJUB0IVkV5utQ1NUE3tqH2W0OtYXByW+ykoRXLiaYrv8vYtx6j0/rOiDHhNjNqTEIWomQx16w1x0uQ== + dependencies: + "@inquirer/core" "^0.0.15-alpha.0" + "@inquirer/input" "^0.0.15-alpha.0" + chalk "^4.1.1" + +"@inquirer/core@^0.0.15-alpha.0": + version "0.0.15-alpha.0" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-0.0.15-alpha.0.tgz#08b6439f3998669d1ba0165c0c5f91736b0c7848" + integrity sha512-aytWU6/yM9HkZ09BrgfTJlVsZjmxoiO1cBL5tlkO/jYe4ZuU84rHWnFFxorRzkmT6gkTs1L9TUKaeK3tbyJmJw== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-spinners "^2.6.0" + cli-width "^3.0.0" + lodash "^4.17.21" + mute-stream "^0.0.8" + run-async "^2.3.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +"@inquirer/input@^0.0.15-alpha.0": + version "0.0.15-alpha.0" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-0.0.15-alpha.0.tgz#60556547845775ac332d7b3406717f361b3ef721" + integrity sha512-h3mxEK9xTtdAX6a+S/pYRVRTxpnjOPQgQADpgFar/yQqklyBRM5+uX1YRRQG+uwU0IzpI18viPnEdibxrY7Kyw== + dependencies: + "@inquirer/core" "^0.0.15-alpha.0" + chalk "^4.1.1" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" @@ -2487,25 +2548,33 @@ rlp "^2.2.6" uuid "^8.3.2" -"@lavamoat/allow-scripts@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@lavamoat/allow-scripts/-/allow-scripts-2.0.0.tgz#d2b84491961c8b2b80281112e19654beae9eb584" - integrity sha512-WC8cvStg5/MZ0JwccYsLNhtFSiK4tGEfv4kdlMoWfji4sB053HB1xCLDMlhFSMM6m0ecKA18CmzhI6J6iyCc0w== +"@lavamoat/aa@^3.0.0", "@lavamoat/aa@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@lavamoat/aa/-/aa-3.1.0.tgz#28df51a17f529a5b04d6a3b6e5a727aefc8e474a" + integrity sha512-/j5LSZb1hlOksUs2z1FP9WyQjv7LZIq/BqkExzGx2eiDpbdDdANZuCe5bcIZseqW9VrtoTtoggMP0Ob7HrTluA== dependencies: - "@npmcli/run-script" "^1.8.1" resolve "^1.20.0" + +"@lavamoat/allow-scripts@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@lavamoat/allow-scripts/-/allow-scripts-2.0.3.tgz#9c50e8c1ab58e3c701fe8996f27b376efa13c029" + integrity sha512-OVm/eUFB62JY1kyG91aYh/K5mDp3LfHvY7EqwoKV5M/0Pup4buKf9zsKiYVod/1kkuNV6nJwoMW33EZXM+ZAPg== + dependencies: + "@lavamoat/aa" "^3.0.0" + "@npmcli/run-script" "^1.8.1" yargs "^16.2.0" -"@lavamoat/lavapack@^2.0.3", "@lavamoat/lavapack@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@lavamoat/lavapack/-/lavapack-2.0.4.tgz#504d942837c0141a385141220917d81d9f9f4c95" - integrity sha512-ttaEWUiROG12fGwzFcBlXNr39dzpU4W6Es7rFmS5ihT7j//eT1NrV73S357Lw8cmfZezvz1/ca1fqnZcZvarPw== +"@lavamoat/lavapack@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@lavamoat/lavapack/-/lavapack-3.1.0.tgz#88d46a4a795ed35e499e31581f16292d8001237c" + integrity sha512-iMP6ZQ7YSumL+8qeM9eu+mbS+hOFOpBDLJHwQ6SG4Hzf4bb7mwVo+K5jnbBOKxzinxYRw2Ryx6SrK9CsRLG+Eg== dependencies: JSONStream "^1.3.5" combine-source-map "^0.8.0" convert-source-map "^1.7.0" json-stable-stringify "^1.0.1" - lavamoat-core "^11.0.1" + lavamoat-core "^12.2.0" + readable-stream "^3.6.0" through2 "^4.0.2" umd "^3.0.3" @@ -2664,6 +2733,11 @@ prop-types "^15.7.2" react-is "^16.8.0" +"@mdn/browser-compat-data@4.1.19": + version "4.1.19" + resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-4.1.19.tgz#33f8c6c63a14a3acc50062df93eaa92f33a10a0a" + integrity sha512-zDrdjvX2dwunW4HOGwpibLHvfnDRQOJ89bGnkQ7TXZ7H7JSehbg2Gf0zNbML+R/03QItZ7EI6QHloOJ2znFSdA== + "@mdx-js/loader@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4" @@ -2709,64 +2783,34 @@ integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== "@metamask/auto-changelog@^2.1.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@metamask/auto-changelog/-/auto-changelog-2.5.0.tgz#078f38142a3086fdb5556c758969a015c71dfdc9" - integrity sha512-39FeU98Poll3eTqv/bggqo3Yisza0WQJ8l9IiYloMVa2LV8XqTNqVkS4cNEU/5yq62n47JSAv6lZBtWCqeAjZQ== + version "2.6.0" + resolved "https://registry.yarnpkg.com/@metamask/auto-changelog/-/auto-changelog-2.6.0.tgz#3cef14905635b144b0fc86aed8957e0942a91cc4" + integrity sha512-YzZ/Uc/3nfvDxZxZT9YMa0CJn8/kpxif/2y8TXi5blzxBiaYop9zUh9a+7PV3C4EQVUNZuTvkE816Ua3AZ0jHA== dependencies: diff "^5.0.0" execa "^5.1.1" semver "^7.3.5" yargs "^17.0.1" -"@metamask/contract-metadata@^1.31.0", "@metamask/contract-metadata@^1.33.0": - version "1.33.0" - resolved "https://registry.yarnpkg.com/@metamask/contract-metadata/-/contract-metadata-1.33.0.tgz#3f0501d5c6d9119ce09c1edb075fc0a8fed7d09c" - integrity sha512-sWfzsUe59UH2Y1A7czRjhPmYrWlg4UQDOUPdf+lY7kbXwYrlF/ZUvhQYajdgJVchv2yDzr+cFhWF7DmNb5NyTQ== - -"@metamask/controllers@^26.0.0": - version "26.0.0" - resolved "https://registry.yarnpkg.com/@metamask/controllers/-/controllers-26.0.0.tgz#3df4a3071ffb26d357ba99f288d52fb9d913c35a" - integrity sha512-iAWDoP/omxGzPfYyBFRNPJ32zcYvZHnUhIM2LyWoCwQj9ZYC1qh+dDX6I0O5jEeQcBrEb+Nl6AcnwHKVdEUz5Q== +"@metamask/bip39@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@metamask/bip39/-/bip39-4.0.0.tgz#1cb867a8454e3d45d065107b4e070d58bdb64aac" + integrity sha512-xH2g8mFe9p2WePnKeQJH4U8MB6pWPyvwpsz4stb0YdnMOR7cKA6Jm/KOSFiPKr1i9+AzNDImt/XxhwF5ej4jXQ== dependencies: - "@ethereumjs/common" "^2.3.1" - "@ethereumjs/tx" "^3.2.1" - "@metamask/contract-metadata" "^1.31.0" - "@metamask/metamask-eth-abis" "3.0.0" - "@metamask/types" "^1.1.0" - "@types/uuid" "^8.3.0" - abort-controller "^3.0.0" - async-mutex "^0.2.6" - babel-runtime "^6.26.0" - deep-freeze-strict "^1.1.1" - eth-ens-namehash "^2.0.8" - eth-json-rpc-infura "^5.1.0" - eth-keyring-controller "^6.2.1" - eth-method-registry "1.1.0" - eth-phishing-detect "^1.1.14" - eth-query "^2.1.2" - eth-rpc-errors "^4.0.0" - eth-sig-util "^3.0.0" - ethereumjs-util "^7.0.10" - ethereumjs-wallet "^1.0.1" - ethers "^5.4.1" - ethjs-unit "^0.1.6" - fast-deep-equal "^3.1.3" - immer "^9.0.6" - isomorphic-fetch "^3.0.0" - json-rpc-engine "^6.1.0" - jsonschema "^1.2.4" - multiformats "^9.5.2" - nanoid "^3.1.31" - punycode "^2.1.1" - single-call-balance-checker-abi "^1.0.0" - uuid "^8.3.2" - web3 "^0.20.7" - web3-provider-engine "^16.0.3" + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" -"@metamask/controllers@^27.0.0", "@metamask/controllers@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@metamask/controllers/-/controllers-27.1.1.tgz#b3288bfd05e381e9e32ed60b68a09b2855db1140" - integrity sha512-RzQ4zKsqmieYqAiVsIIazLTo9GYMcm9fDhYPJklP1M+bzm1k49GRFnZEfru3w/dPVY+wWgcDo/0ZWlOILbu3hg== +"@metamask/contract-metadata@^1.31.0", "@metamask/contract-metadata@^1.33.0": + version "1.35.0" + resolved "https://registry.yarnpkg.com/@metamask/contract-metadata/-/contract-metadata-1.35.0.tgz#2bf2b8f2b6fdbd5132f0bcfa594b6c02dc71c42e" + integrity sha512-zfZKwLFOVrQS8vTFoeoNCG9JhqmK4oyembGiGVVpUAYD9BHVZnd9WpicGoUC07ROXLEyQuAK9AJZNBtqwwzfEQ== + +"@metamask/controllers@^29.0.1": + version "29.0.1" + resolved "https://registry.yarnpkg.com/@metamask/controllers/-/controllers-29.0.1.tgz#8b6d066a23877c82de005ce566b7fd6bbaa7cc13" + integrity sha512-jOZiaOg9E0Th2Pq75kRNMtKmku7dba6KVvKA5olEd7YB+2tzCkBh+TU16RAS1RUQzGXahWvt+kXDV/FLFa2ixg== dependencies: "@ethereumjs/common" "^2.3.1" "@ethereumjs/tx" "^3.2.1" @@ -2781,7 +2825,7 @@ deep-freeze-strict "^1.1.1" eth-ens-namehash "^2.0.8" eth-json-rpc-infura "^5.1.0" - eth-keyring-controller "^6.2.1" + eth-keyring-controller "^7.0.2" eth-method-registry "1.1.0" eth-phishing-detect "^1.1.16" eth-query "^2.1.2" @@ -2804,7 +2848,7 @@ web3 "^0.20.7" web3-provider-engine "^16.0.3" -"@metamask/design-tokens@^1.5.1", "@metamask/design-tokens@^1.6.0": +"@metamask/design-tokens@^1.6.0", "@metamask/design-tokens@^1.6.5": version "1.6.5" resolved "https://registry.yarnpkg.com/@metamask/design-tokens/-/design-tokens-1.6.5.tgz#e585b67f73ce301e0218d98ba89e079f7e81c412" integrity sha512-5eCrUHXrIivXX1xx6kwNtM9s/ejhrPYSATSniFc7YKS9z+TkCK4/n52owOBnDIbrL8W3XxQIiaaqQAM+NQad4w== @@ -2834,10 +2878,21 @@ resolved "https://registry.yarnpkg.com/@metamask/eslint-config/-/eslint-config-9.0.0.tgz#22d4911b705f7e4e566efbdda0e37912da33e30f" integrity sha512-mWlLGQKjXXFOj9EtDClKSoTLeQuPW2kM1w3EpUMf4goYAQ+kLXCCa8pEff6h8ApWAnjhYmXydA1znQ2J4XvD+A== -"@metamask/eth-ledger-bridge-keyring@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@metamask/eth-ledger-bridge-keyring/-/eth-ledger-bridge-keyring-0.11.0.tgz#8502e2fd36c89aff7de6724354217274917cecd3" - integrity sha512-fCwM8LYC6SXLfsKc4oNiAatz2X8p/pjbM5zMfm4nb4sZPshBAWU32M4vnB3BSVeQEsisGuLfOWCOWhxmq25n+Q== +"@metamask/eth-hd-keyring@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@metamask/eth-hd-keyring/-/eth-hd-keyring-4.0.2.tgz#0a81556a556b361755c8d6fb5aced1ce5be0331c" + integrity sha512-v47VOTCCmZUZ6uxM5tQNoasQjLdrZADmgph2fhk4m7zKVUxDvYFU7FJT3Rm55fk8mg+dKSbEObDriqbdWeBbcA== + dependencies: + "@metamask/bip39" "^4.0.0" + "@metamask/eth-sig-util" "^4.0.0" + eth-simple-keyring "^4.2.0" + ethereumjs-util "^7.0.9" + ethereumjs-wallet "^1.0.1" + +"@metamask/eth-ledger-bridge-keyring@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@metamask/eth-ledger-bridge-keyring/-/eth-ledger-bridge-keyring-0.13.0.tgz#586b705d92339d08650f9eef42ab2388c4dd2675" + integrity sha512-Xtze0Itc2Z6hLOlCaUjmuRlG97vtx6bPcWHcV1TWWOAKwLgatymUvBB3LTVIjJ/vxo8vysxp3sDf0jlGGlo7OA== dependencies: "@ethereumjs/tx" "^3.2.0" eth-sig-util "^2.0.0" @@ -2873,19 +2928,19 @@ resolved "https://registry.yarnpkg.com/@metamask/etherscan-link/-/etherscan-link-2.1.0.tgz#c0be8e68445b7b83cf85bcc03a56cdf8e256c973" integrity sha512-ADuWlTUkFfN2vXlz81Bg/0BA+XRor+CdK1055p6k7H6BLIPoDKn9SBOFld9haQFuR9cKh/JYHcnlSIv5R4fUEw== -"@metamask/execution-environments@^0.10.7": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@metamask/execution-environments/-/execution-environments-0.10.7.tgz#aedc37c9c371a7229600e74e62a0157690152f2c" - integrity sha512-jD8Bzqo/QiDHCbo8D9pvQE7TZNGQJLW0nkz5vY2wLoJ1kLLlyJzyjRU77oZCSZMW0feLZWRifalUQT5tOrGA8w== +"@metamask/execution-environments@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@metamask/execution-environments/-/execution-environments-0.15.0.tgz#1c08229e4853b750fb532862cd1eac8443510133" + integrity sha512-qUDNAgdmXkZDqD/BQgBH20cyuIYKsGriABf87xLL1XMxvwIPrv+Rzzg71DnFt67CKO63haZ2rcOn/yXcNiOwzA== dependencies: "@metamask/object-multiplex" "^1.2.0" "@metamask/post-message-stream" "^4.0.0" "@metamask/providers" "^8.1.1" - "@metamask/snap-types" "^0.10.7" - cross-fetch "^3.1.5" + "@metamask/snap-types" "^0.15.0" + "@metamask/utils" "^2.0.0" eth-rpc-errors "^4.0.3" pump "^3.0.0" - ses "^0.15.7" + ses "^0.15.15" stream-browserify "^3.0.0" "@metamask/forwarder@^1.1.0": @@ -2893,24 +2948,6 @@ resolved "https://registry.yarnpkg.com/@metamask/forwarder/-/forwarder-1.1.0.tgz#13829d8244bbf19ea658c0b20d21a77b67de0bdd" integrity sha512-Hggj4y0QIjDzKGTXzarhEPIQyFSB2bi2y6YLJNwaT4JmP30UB5Cj6gqoY0M4pj3QT57fzp0BUuGp7F/AUe28tw== -"@metamask/iframe-execution-environment-service@^0.10.7": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@metamask/iframe-execution-environment-service/-/iframe-execution-environment-service-0.10.7.tgz#787093962cb04e46759a994b21ab7d8d3b63a518" - integrity sha512-pHrWrv5ywdFmp8PdewPqYcDql9djlvsywsdISVCsAIn3oIH65+ICAuycSNXWTaPQ0VMO5/mE9taynEyVOvw8pw== - dependencies: - "@metamask/controllers" "^26.0.0" - "@metamask/execution-environments" "^0.10.7" - "@metamask/object-multiplex" "^1.2.0" - "@metamask/post-message-stream" "^4.0.0" - "@metamask/snap-controllers" "^0.10.7" - "@metamask/snap-types" "^0.10.7" - eth-rpc-errors "^4.0.3" - json-rpc-engine "^6.1.0" - json-rpc-middleware-stream "^3.0.0" - nanoid "^3.1.31" - pump "^3.0.0" - stream "^0.0.2" - "@metamask/jazzicon@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@metamask/jazzicon/-/jazzicon-2.0.0.tgz#5615528e91c0fc5c9d79202d1f0954a7922525a0" @@ -2919,14 +2956,16 @@ color "^0.11.3" mersenne-twister "^1.1.0" -"@metamask/key-tree@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@metamask/key-tree/-/key-tree-3.0.1.tgz#e59b6c9c124c74382477f51a389815e849a16de7" - integrity sha512-CcpbQua96/CF+KKItrfw9Y6azrlkzFhoVAkyfUl7iq5qldA8xi4CilNjzIqnK8YJcLU44d7nRs5i5/9atY4Beg== +"@metamask/key-tree@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@metamask/key-tree/-/key-tree-4.0.0.tgz#2de20618793e85ee300b4b3d4ca4de9d7f40e276" + integrity sha512-Pj5nN6Ko15rei6dSgQnTH64JEN1I8JuTM6Q06/1V7Xp3Fw3g3Nf1scr/u7cQnL17YxXALMCDYaEPdQveo70kSA== dependencies: - bip39 "^3.0.4" - keccak "^3.0.2" - secp256k1 "^4.0.2" + "@noble/ed25519" "^1.6.0" + "@noble/hashes" "^1.0.0" + "@noble/secp256k1" "^1.5.5" + "@scure/base" "^1.0.0" + "@scure/bip39" "^1.0.0" "@metamask/logo@^3.1.1": version "3.1.1" @@ -3004,15 +3043,16 @@ pump "^3.0.0" webextension-polyfill-ts "^0.25.0" -"@metamask/rpc-methods@^0.10.7": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@metamask/rpc-methods/-/rpc-methods-0.10.7.tgz#d663599de9207bd35f7cf74e4a1ebb4c27b3ee2e" - integrity sha512-K83zkffYDMxzocxHC8eIGWl/XP+YzJu82dK3Ii43f2MEr66oE/bPPPIZAivDmLDxhc/cWE7RUhZCHaiWBR+SGQ== +"@metamask/rpc-methods@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@metamask/rpc-methods/-/rpc-methods-0.15.0.tgz#3bdfbf620d1ab328ff4d26f6a9c293136a50e51e" + integrity sha512-HyUaFey3zMFRZCmu4TTw3TyW+/8ODzJOAskMF4WZPiYg97yJikJ9tdDzhxQbiyWIZe+0+ZI65HuaUNCmV4j8DQ== dependencies: - "@metamask/controllers" "^26.0.0" - "@metamask/key-tree" "^3.0.1" - "@metamask/snap-controllers" "^0.10.7" + "@metamask/controllers" "^29.0.1" + "@metamask/key-tree" "^4.0.0" + "@metamask/snap-controllers" "^0.15.0" "@metamask/types" "^1.1.0" + "@metamask/utils" "^2.0.0" eth-rpc-errors "^4.0.2" "@metamask/safe-event-emitter@^2.0.0": @@ -3020,17 +3060,17 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== -"@metamask/slip44@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/slip44/-/slip44-2.0.0.tgz#1b646a1418af341d5ea979c28015a817ff23af33" - integrity sha512-eRomm783ti/1b/TlNnlTCUkYRuTaMYkeTAG0z2rt/WyT8UzxY+8+v/kbl9vk5qhDHeclzBrd9gbqLnLU1kh+Ow== +"@metamask/slip44@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@metamask/slip44/-/slip44-2.1.0.tgz#f76764ca54afc162fbfe563f1994b79ed4711bba" + integrity sha512-wkFDdY4XtpF+XCqbgwhsrLRgEM/bYfIt47927JTQZQ2QxQYRbSZ6u0QygnVjIR1eqMteRGx2jtUUZ+bxYQTo/w== -"@metamask/smart-transactions-controller@^1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@metamask/smart-transactions-controller/-/smart-transactions-controller-1.10.0.tgz#230f611eaf9eefc41bac0e7af78101a215c6acba" - integrity sha512-Bx2zT7UJJF2f11yANpC3OYCXYt2gpdqXj+RC4hnf18CELeF9Sp52xwQEkO6ig+3isrj6NsyVVmoo5PRcrU++cA== +"@metamask/smart-transactions-controller@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@metamask/smart-transactions-controller/-/smart-transactions-controller-2.0.1.tgz#64bdce4368d2f33e6a2c044efe8b1a87cb20af1c" + integrity sha512-W0RmziH9HswBbchD2a97j/2sMO2qCYwcpynIJkDVLTmXJ/a6j5cECSr+vMs207bJJDExFlEOXvL+/21oINVZvA== dependencies: - "@metamask/controllers" "^27.1.1" + "@metamask/controllers" "^29.0.1" "@types/lodash" "^4.14.176" bignumber.js "^9.0.1" ethers "^5.5.1" @@ -3038,22 +3078,22 @@ isomorphic-fetch "^3.0.0" lodash "^4.17.21" -"@metamask/snap-controllers@^0.10.7": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@metamask/snap-controllers/-/snap-controllers-0.10.7.tgz#df4f049264bcc805c3a5876f6c298b2c37c6734e" - integrity sha512-wXuelvjLI06RSxZjCGCCCxxAAyA3djMcjwcjmPbrMPI/6X0neUjrIJrQ4LTBxX2GPzSfU/4z/gFTdAsqi5bHKg== +"@metamask/snap-controllers@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@metamask/snap-controllers/-/snap-controllers-0.15.0.tgz#12e17d58c7b9290f5a581e0638daaeb6e0fba917" + integrity sha512-diNe7dq7/8OF/BwgodmkiAM6u9j+w8Q5aomrj0izcE9V5wxCNIZG21ogkrTGvGAASTjbXEsp9Mek++0YSjCc7Q== dependencies: - "@metamask/controllers" "^26.0.0" - "@metamask/execution-environments" "^0.10.7" + "@metamask/controllers" "^29.0.1" + "@metamask/execution-environments" "^0.15.0" "@metamask/object-multiplex" "^1.1.0" "@metamask/obs-store" "^7.0.0" "@metamask/post-message-stream" "4.0.0" "@metamask/safe-event-emitter" "^2.0.0" + "@metamask/utils" "^2.0.0" "@types/deep-freeze-strict" "^1.1.0" "@types/semver" "^7.3.9" ajv "^8.8.2" concat-stream "^2.0.0" - cross-fetch "^3.1.5" deep-freeze-strict "^1.1.1" eth-rpc-errors "^4.0.2" fast-deep-equal "^3.1.3" @@ -3067,12 +3107,12 @@ semver "^7.3.5" tar-stream "^2.2.0" -"@metamask/snap-types@^0.10.7": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@metamask/snap-types/-/snap-types-0.10.7.tgz#a314ba1082e65a41bde021735bbc57034416aa53" - integrity sha512-AHOwQ/7SxDBRUSrdlWRa5X549mSM1MOl8iErOccxfKzuHdJjmIZIv1Ob34bgdMUxvhkt7ztFCW/lcObmdCIGjA== +"@metamask/snap-types@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@metamask/snap-types/-/snap-types-0.15.0.tgz#ccf8ea495e9823430de4e6ca1d979ae10f25177e" + integrity sha512-U6fRnB4qUZVSWJl08V1+UqJjf8m4DzhORCQ6HL8BHg4Npfg7Zn5luFTfS6y6dXVDAydIB6JJr43efEcAgcEsdA== dependencies: - "@metamask/controllers" "^26.0.0" + "@metamask/controllers" "^29.0.1" "@metamask/test-dapp@^5.0.0": version "5.0.0" @@ -3084,6 +3124,13 @@ resolved "https://registry.yarnpkg.com/@metamask/types/-/types-1.1.0.tgz#9bd14b33427932833c50c9187298804a18c2e025" integrity sha512-EEV/GjlYkOSfSPnYXfOosxa3TqYtIW3fhg6jdw+cok/OhMgNn4wCfbENFqjytrHMU2f7ZKtBAvtiP5V8H44sSw== +"@metamask/utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-2.0.0.tgz#fe7e970416a256751c429f4a5e96aec6c4366ba7" + integrity sha512-AZ63AhRxAZXll+/SEiyEXgrxuAL4yOj0ny4V36VgPmTDvt+7GrmVJWrQF3o5PZZWV6ooaHZ9291RZHRcKZm0HA== + dependencies: + fast-deep-equal "^3.1.3" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -3110,6 +3157,21 @@ jsbi "^3.1.5" sha.js "^2.4.11" +"@noble/ed25519@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.6.0.tgz#b55f7c9e532b478bf1d7c4f609e1f3a37850b583" + integrity sha512-UKju89WV37IUALIMfKhKW3psO8AqmrE/GvH6QbPKjzolQ98zM7WmGUeY+xdIgSf5tqPFf75ZCYMgym6E9Jsw3Q== + +"@noble/hashes@^1.0.0", "@noble/hashes@~1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.0.0.tgz#d5e38bfbdaba174805a4e649f13be9a9ed3351ae" + integrity sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg== + +"@noble/secp256k1@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.5.5.tgz#315ab5745509d1a8c8e90d0bdf59823ccf9bcfc3" + integrity sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ== + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -3257,6 +3319,19 @@ redux-thunk "^2.3.0" reselect "^4.0.0" +"@scure/base@^1.0.0", "@scure/base@~1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.0.0.tgz#109fb595021de285f05a7db6806f2f48296fcee7" + integrity sha512-gIVaYhUsy+9s58m/ETjSJVKHhKTBMmcRb9cEV5/5dwvfDlfORjKrFsDeDHWRrm6RjcPvCLZFwGJjAjLj1gg4HA== + +"@scure/bip39@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.0.0.tgz#47504e58de9a56a4bbed95159d2d6829fa491bb0" + integrity sha512-HrtcikLbd58PWOkl02k9V6nXWQyoa7A0+Ek9VF7z17DDk9XZAFUcIdqfh0jJXLypmizc5/8P6OxoUeKliiWv4w== + dependencies: + "@noble/hashes" "~1.0.0" + "@scure/base" "~1.0.0" + "@segment/loosely-validate-event@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz#87dfc979e5b4e7b82c5f1d8b722dfd5d77644681" @@ -4623,10 +4698,10 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^16.7.10": - version "16.11.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.19.tgz#1afa165146997b8286b6eabcb1c2d50729055169" - integrity sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng== +"@types/node@*", "@types/node@>=13.7.0": + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.29.tgz#7f2e1159231d4a077bb660edab0fde373e375a3d" + integrity sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA== "@types/node@10.12.18": version "10.12.18" @@ -4648,6 +4723,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.27.tgz#5054610d37bb5f6e21342d0e6d24c494231f3b85" integrity sha512-94+Ahf9IcaDuJTle/2b+wzvjmutxXAEXU6O81JHblYXUg2BDG+dnBy7VxIPHKAyEEDHzCMQydTJuWvrE+Aanzw== +"@types/node@^16.7.10": + version "16.11.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.19.tgz#1afa165146997b8286b6eabcb1c2d50729055169" + integrity sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng== + "@types/node@^8.10.11": version "8.10.48" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.48.tgz#e385073561643a9ba6199a1985ffc03530f90781" @@ -4749,9 +4829,9 @@ redux "*" "@types/secp256k1@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.1.tgz#fb3aa61a1848ad97d7425ff9dcba784549fca5a4" - integrity sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog== + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== dependencies: "@types/node" "*" @@ -4859,7 +4939,7 @@ dependencies: "@types/yargs-parser" "*" -"@types/yauzl@^2.9.1": +"@types/yauzl@2.9.2", "@types/yauzl@^2.9.1": version "2.9.2" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== @@ -5302,17 +5382,10 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= - dependencies: - acorn "^3.0.4" - -acorn-jsx@^5.0.0, acorn-jsx@^5.0.2, acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: version "1.8.2" @@ -5338,17 +5411,12 @@ acorn-walk@^8.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= - -acorn@^5.1.2, acorn@^5.2.1: +acorn@^5.1.2: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1, acorn@^6.0.7, acorn@^6.4.1: +acorn@^6.0.1, acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== @@ -5358,53 +5426,64 @@ acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0, acorn@^7.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== +acorn@^8.2.4, acorn@^8.7.0, acorn@^8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== -addons-linter@1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-1.14.0.tgz#611f8d9e8c4cc84646ebd0b61c016f758225bf13" - integrity sha512-Of7A53J2ltaIZzD8RPH1hVxOR+DmLDuHBtwfhXJw8JTXwzpDIvOKn/i6XDtPgfFlj5wIWxpUGV+tFb/kE/K9gg== +addons-linter@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-5.2.0.tgz#a1a36cdb72f5df359e246c25e1261d2183b4f6a7" + integrity sha512-wMKD9aJYYIVXK/grrHErqbGFX0uvEehEiMlAkUA/4M3a9zJDvNrpW0OwZxLEAlNpFISOtKPaQTlt0MHKwQTGFQ== dependencies: - ajv "6.10.2" - ajv-merge-patch "4.1.0" - chalk "2.4.2" - cheerio "1.0.0-rc.3" - columnify "1.5.4" - common-tags "1.8.0" - deepmerge "4.0.0" - dispensary "0.40.0" - es6-promisify "6.0.2" - eslint "5.16.0" - eslint-plugin-no-unsafe-innerhtml "1.0.16" - eslint-visitor-keys "1.1.0" - espree "6.1.1" + "@mdn/browser-compat-data" "4.1.19" + addons-moz-compare "1.2.0" + addons-scanner-utils "7.0.0" + ajv "8.11.0" + ajv-merge-patch "5.0.1" + chalk "4.1.2" + cheerio "1.0.0-rc.10" + columnify "1.6.0" + common-tags "1.8.2" + deepmerge "4.2.2" + eslint "8.14.0" + eslint-plugin-no-unsanitized "4.0.1" + eslint-visitor-keys "3.3.0" + espree "9.3.1" esprima "4.0.1" - first-chunk-stream "3.0.0" fluent-syntax "0.13.0" - glob "7.1.4" + glob "8.0.1" + image-size "1.0.1" is-mergeable-object "1.1.1" jed "1.1.1" - mdn-browser-compat-data "0.0.94" - os-locale "4.0.0" - pino "5.13.3" - po2json "0.4.5" - postcss "7.0.18" - probe-image-size "5.0.0" - regenerator-runtime "0.13.3" + os-locale "5.0.0" + pino "7.11.0" + postcss "8.4.13" relaxed-json "1.0.3" - semver "6.3.0" - source-map-support "0.5.13" - strip-bom-stream "4.0.0" + semver "7.3.7" + sha.js "2.4.11" + source-map-support "0.5.21" tosource "1.0.0" - upath "1.2.0" - whatwg-url "7.0.0" - yargs "14.0.0" + upath "2.0.1" + yargs "17.4.1" + yauzl "2.10.0" + +addons-moz-compare@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/addons-moz-compare/-/addons-moz-compare-1.2.0.tgz#d6246cbae224ab629cb7da397b2b9602938ea085" + integrity sha512-COG8qk2/dubPqabfcoJW4E7pm2EQDI43iMrHnhlobvq/uRMEzx/PYJ1KaUZ97Vgg44R3QdRG5CvDsTRbMUHcDw== + +addons-scanner-utils@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/addons-scanner-utils/-/addons-scanner-utils-7.0.0.tgz#8528b184f51e6552f43676221ce2a7e0aa6de15d" + integrity sha512-5j/qMzL13uGSiaFKvUNiMwyWMYD2YtEeY477q7Ahan3c90wLCwXIGCdpCfstgT3hpl44r+d6lqTIo2j2FW6uJQ== + dependencies: + "@types/yauzl" "2.9.2" + common-tags "1.8.2" + first-chunk-stream "3.0.0" + strip-bom-stream "4.0.0" + upath "2.0.1" yauzl "2.10.0" - optionalDependencies: - fsevents "2.0.7" address@1.1.2, address@^1.0.1: version "1.1.2" @@ -5505,43 +5584,30 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= - ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv-merge-patch@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz#cd580e5860ac53431d6aa901fa3d5e2eb2b74a6c" - integrity sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw== +ajv-merge-patch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ajv-merge-patch/-/ajv-merge-patch-5.0.1.tgz#0aba921a2ea8632813478aa3d039d8134b58f876" + integrity sha512-0UP3aJCzfzBOkmLR+EinJDCfg6DNtprj3bVPo7JJNgUpZMKt097t9xxQOWFGRoB4JvKKIHE2qe0HkVaS/HyrjQ== dependencies: fast-json-patch "^2.0.6" - json-merge-patch "^0.2.3" + json-merge-patch "^1.0.2" -ajv@6.10.2: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== +ajv@8.11.0, ajv@^8.0.1, ajv@^8.8.2: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^4.7.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5551,16 +5617,6 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1, ajv@^8.8.2: - version "8.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" - integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -5611,21 +5667,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-colors@^4.1.1: +ansi-colors@^4.1.0, ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - ansi-escapes@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" @@ -5660,16 +5706,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-regex@^5.0.0: +ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -5685,11 +5726,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= - ansi-to-html@^0.6.11: version "0.6.13" resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.13.tgz#c72eae8b63e5ca0643aab11bfc6e6f2217425833" @@ -5780,6 +5816,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + args@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" @@ -5972,7 +6013,7 @@ arraybuffer.slice@~0.0.7: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -arrify@^1.0.0, arrify@^1.0.1: +arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= @@ -6186,11 +6227,6 @@ async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.4.0, async@^2.5.0, async@^2.6 dependencies: lodash "^4.17.14" -async@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.1.0.tgz#42b3b12ae1b74927b5217d8c0016baaf62463772" - integrity sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -6206,6 +6242,11 @@ atob@^2.0.0, atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + autoprefixer@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.1.0.tgz#374cf35be1c0e8fce97408d876f95f66f5cb4641" @@ -6277,15 +6318,6 @@ axios@^0.24.0: dependencies: follow-redirects "^1.14.4" -babel-code-frame@^6.16.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -6696,7 +6728,7 @@ binaryen@77.0.0-nightly.20190407: resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-77.0.0-nightly.20190407.tgz#fbe4f8ba0d6bd0809a84eb519d2d5b5ddff3a7d1" integrity sha512-1mxYNvQ0xywMe582K7V6Vo2zzhZZxMTeGHH8aE/+/AND8f64D8Q1GThVY3RVRwGY/4p+p95ccw9Xbw2ovFXRIg== -bindings@^1.2.1, bindings@^1.3.0, bindings@^1.5.0: +bindings@^1.3.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -6726,27 +6758,6 @@ bip32@^2.0.4: typeforce "^1.11.5" wif "^2.0.6" -bip39@^2.2.0, bip39@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -bip39@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" - integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== - dependencies: - "@types/node" "11.11.6" - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - bip66@^1.1.0, bip66@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" @@ -6820,16 +6831,16 @@ blake-hash@^2.0.0: readable-stream "^3.6.0" blakejs@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" - integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@3.7.2, bluebird@^3.3.5, bluebird@^3.5.0, bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@3.7.2, bluebird@^3.3.5, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -6906,7 +6917,7 @@ body@^5.1.0: raw-body "~1.1.0" safe-json-parse "~1.0.1" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -6990,6 +7001,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" @@ -7426,7 +7444,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.1.0, buffer@^5.2.1, buffer@^5.4.2, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.1.0, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -7612,18 +7630,6 @@ callbackify@^1.1.0: resolved "https://registry.yarnpkg.com/callbackify/-/callbackify-1.1.0.tgz#d2a36986d28aa69714526c111209beeb9979d31e" integrity sha1-0qNphtKKppcUUmwREgm+65l50x4= -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -7782,7 +7788,7 @@ chain-function@^1.0.0: resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.1.tgz#c63045e5b4b663fb86f1c6e186adaf1de402a1cc" integrity sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -7791,16 +7797,13 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" chalk@^3.0.0: version "3.0.0" @@ -7810,23 +7813,6 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - change-case@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" @@ -7876,11 +7862,6 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz#942835f750e4ec61a308e60c2ef8cc1011202efc" integrity sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw= -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - charenc@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -7898,17 +7879,29 @@ checkpoint-store@^1.1.0: dependencies: functional-red-black-tree "^1.0.1" -cheerio@1.0.0-rc.3, cheerio@^1.0.0-rc.2: - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" - integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== +cheerio-select@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" + integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.1" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash "^4.15.0" - parse5 "^3.0.1" + css-select "^4.3.0" + css-what "^6.0.1" + domelementtype "^2.2.0" + domhandler "^4.3.1" + domutils "^2.8.0" + +cheerio@1.0.0-rc.10, cheerio@^1.0.0-rc.2: + version "1.0.0-rc.10" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== + dependencies: + cheerio-select "^1.5.0" + dom-serializer "^1.3.2" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" chokidar@3.3.0: version "3.3.0" @@ -7976,10 +7969,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -chromedriver@^100.0.0: - version "100.0.0" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-100.0.0.tgz#1b4bf5c89cea12c79f53bc94d8f5bb5aa79ed7be" - integrity sha512-oLfB0IgFEGY9qYpFQO/BNSXbPw7bgfJUN5VX8Okps9W2qNT4IqKh5hDwKWtpUIQNI6K3ToWe2/J5NdpurTY02g== +chromedriver@^101.0.0: + version "101.0.0" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-101.0.0.tgz#ad19003008dd5df1770a1ad96059a9c5fe78e365" + integrity sha512-LkkWxy6KM/0YdJS8qBeg5vfkTZTRamhBfOttb4oic4echDgWvCU1E8QcBbUBOHqZpSrYMyi7WMKmKMhXFUaZ+w== dependencies: "@testim/chrome-version" "^1.1.2" axios "^0.24.0" @@ -8048,11 +8041,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - cjs-module-lexer@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" @@ -8100,19 +8088,10 @@ cli-boxes@^2.2.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" +cli-spinners@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-table3@0.6.0: version "0.6.0" @@ -8124,10 +8103,10 @@ cli-table3@0.6.0: optionalDependencies: colors "^1.1.2" -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== clipboard@^2.0.0: version "2.0.4" @@ -8234,7 +8213,7 @@ clone@^1.0.0, clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" integrity sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8= -clone@^2.0.0, clone@^2.1.1, clone@^2.1.2: +clone@^2.0.0, clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -8343,11 +8322,6 @@ color@^0.11.3: color-convert "^1.3.0" color-string "^0.3.0" -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - colors@0.5.x: version "0.5.1" resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" @@ -8358,12 +8332,12 @@ colors@^1.1.2, colors@^1.4.0: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -columnify@1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= +columnify@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: - strip-ansi "^3.0.0" + strip-ansi "^6.0.1" wcwidth "^1.0.0" combine-source-map@^0.8.0, combine-source-map@~0.8.0: @@ -8403,17 +8377,17 @@ commander@^6.1.0, commander@^6.2.1: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9" + integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== + comment-parser@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.2.4.tgz#489f3ee55dfd184a6e4bffb31baba284453cb760" integrity sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw== -common-tags@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -common-tags@^1.8.0: +common-tags@1.8.2, common-tags@^1.8.0: version "1.8.2" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== @@ -8485,7 +8459,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@^1.6.2, concat-stream@~1.6.0: +concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@^1.6.2, concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -8878,23 +8852,7 @@ create-react-context@0.3.0: gud "^1.0.0" warning "^4.0.3" -cross-fetch@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" - integrity sha1-pH/09/xxLauo9qaVoRyUhEDUVyM= - dependencies: - node-fetch "2.1.2" - whatwg-fetch "2.0.4" - -cross-fetch@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" - integrity sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw== - dependencies: - node-fetch "2.1.2" - whatwg-fetch "2.0.4" - -cross-fetch@^3.1.4, cross-fetch@^3.1.5: +cross-fetch@2.2.2, cross-fetch@^2.1.0, cross-fetch@^3.1.4, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -8998,7 +8956,7 @@ css-loader@^3.6.0: schema-utils "^2.7.0" semver "^6.3.0" -css-select@^1.1.0, css-select@~1.2.0: +css-select@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= @@ -9008,6 +8966,17 @@ css-select@^1.1.0, css-select@~1.2.0: domutils "1.5.1" nth-check "~1.0.1" +css-select@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + css-to-xpath@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/css-to-xpath/-/css-to-xpath-0.1.0.tgz#ac0d1c26cef023f7bd8cf2e1fc1f77134bc70c47" @@ -9029,6 +8998,11 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" @@ -9240,7 +9214,7 @@ debug-fabulous@^1.0.0: memoizee "0.4.X" object-assign "4.X" -debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -9394,12 +9368,7 @@ deep-object-diff@^1.1.0: resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a" integrity sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw== -deepmerge@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.0.0.tgz#3e3110ca29205f120d7cb064960a39c3d2087c09" - integrity sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww== - -deepmerge@^4.0.0, deepmerge@^4.2.2: +deepmerge@4.2.2, deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -9502,19 +9471,6 @@ degenerator@^3.0.1: esprima "^4.0.0" vm2 "^3.9.3" -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" @@ -9876,19 +9832,6 @@ discontinuous-range@1.0.0: resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= -dispensary@0.40.0: - version "0.40.0" - resolved "https://registry.yarnpkg.com/dispensary/-/dispensary-0.40.0.tgz#dedc4a4e4aebae7afcb6ae91f03e292ba107fe67" - integrity sha512-ttKDQvGBf+ygQ4rXuLBLErp3kMJIS+Gfmy+nJ6N/EfV8/RQdjd9SORpc729YK5SYAI+IuBo88S2xGUjKjU2jYw== - dependencies: - async "~3.1.0" - natural-compare-lite "~1.4.0" - pino "~5.13.0" - request "~2.88.0" - sha.js "~2.4.4" - source-map-support "~0.5.4" - yargs "~14.0.0" - disposables@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/disposables/-/disposables-1.0.2.tgz#36c6a674475f55a2d6913567a601444e487b4b6e" @@ -9944,7 +9887,7 @@ doctrine@1.5.0: esutils "^2.0.2" isarray "^1.0.0" -doctrine@^2.0.0, doctrine@^2.1.0: +doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== @@ -9985,7 +9928,7 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^2.6.7" -dom-serializer@0, dom-serializer@~0.1.1: +dom-serializer@0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== @@ -9993,6 +9936,15 @@ dom-serializer@0, dom-serializer@~0.1.1: domelementtype "^1.3.0" entities "^1.1.1" +dom-serializer@^1.0.1, dom-serializer@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" @@ -10008,6 +9960,11 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.0.tgz#81fe5df81b3f057052cde3a9fa9bf536a85b9ab0" @@ -10027,6 +9984,13 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -10043,6 +10007,15 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + dot-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" @@ -10141,10 +10114,10 @@ duplexify@^3.1.2, duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.5.1: readable-stream "^2.0.0" stream-shift "^1.0.0" -duplexify@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" - integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== +duplexify@^4.1.1, duplexify@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== dependencies: end-of-stream "^1.4.1" inherits "^2.0.3" @@ -10213,11 +10186,6 @@ elliptic@6.5.3, elliptic@6.5.4, elliptic@=3.0.3, elliptic@^6.0.0, elliptic@^6.4. minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emitter-component@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/emitter-component/-/emitter-component-1.1.1.tgz#065e2dbed6959bf470679edabeaf7981d1003ab6" - integrity sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY= - emittery@0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" @@ -10283,13 +10251,6 @@ encoding-down@~5.0.0: level-errors "^2.0.0" xtend "^4.0.1" -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -10378,11 +10339,16 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -entities@^1.1.1, entities@^1.1.2, entities@~1.1.1: +entities@^1.1.1, entities@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + env-paths@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" @@ -10555,7 +10521,7 @@ es6-iterator@2.0.3, es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0. es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-map@^0.1.3, es6-map@^0.1.5: +es6-map@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= @@ -10577,11 +10543,6 @@ es6-promise@^4.2.8: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== -es6-promisify@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.2.tgz#525c23725b8510f5f1f2feb5a1fbad93a93e29b4" - integrity sha512-eO6vFm0JvqGzjWIQA6QVKjxpmELfhWbDUWHm1rPfIbn55mhKPiAa5xpLmQWJrNa629ZIeQ8ZvMAi13kvrjK6Mg== - es6-set@^0.1.5, es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" @@ -10665,16 +10626,6 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-config-prettier@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz#4ef1eaf97afe5176e6a75ddfb57c335121abc5a6" @@ -10764,12 +10715,10 @@ eslint-plugin-mocha@^8.1.0: eslint-utils "^2.1.0" ramda "^0.27.1" -eslint-plugin-no-unsafe-innerhtml@1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz#7d02878c8e9bf7916b88836d5ac122b42f151932" - integrity sha1-fQKHjI6b95FriINtWsEitC8VGTI= - dependencies: - eslint "^3.7.1" +eslint-plugin-no-unsanitized@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz#e2343265467ba2270ade478cbe07bbafeaea412d" + integrity sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg== eslint-plugin-node@^11.1.0: version "11.1.0" @@ -10834,12 +10783,13 @@ eslint-scope@^5.1.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" @@ -10855,12 +10805,12 @@ eslint-utils@^3.0.0: dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@3.3.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -10870,88 +10820,46 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.14.0.tgz#62741f159d9eb4a79695b28ec4989fcdec623239" + integrity sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw== dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" + "@eslint/eslintrc" "^1.2.2" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" + glob-parent "^6.0.1" + globals "^13.6.0" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + is-glob "^4.0.0" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" + levn "^0.4.1" + lodash.merge "^4.6.2" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" text-table "^0.2.0" - -eslint@^3.7.1: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" - integrity sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw= - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" + v8-compile-cache "^2.0.3" eslint@^7.23.0: version "7.23.0" @@ -11001,31 +10909,14 @@ esm@^3.2.25: resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" - integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ== +espree@9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" + integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== dependencies: - acorn "^7.0.0" - acorn-jsx "^5.0.2" - eslint-visitor-keys "^1.1.0" - -espree@^3.4.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" - integrity sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ== - dependencies: - acorn "^5.2.1" - acorn-jsx "^3.0.0" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^8.7.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^3.3.0" espree@^7.3.0, espree@^7.3.1: version "7.3.1" @@ -11036,12 +10927,21 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" +espree@^9.3.1, espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== + dependencies: + acorn "^8.7.1" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + esprima@4.0.1, esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.0, esquery@^1.0.1, esquery@^1.4.0: +esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -11131,17 +11031,6 @@ eth-ens-namehash@^2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -eth-hd-keyring@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/eth-hd-keyring/-/eth-hd-keyring-3.6.0.tgz#6835d30aa411b8d3ef098e82f6427b5325082abb" - integrity sha512-n2CwE9VNXsxLrXQa6suv0Umt4NT6+HtoahKgWx3YviXx4rQFwVT5nDwZfjhwrT31ESuoXYNIeJgz5hKLD96QeQ== - dependencies: - bip39 "^2.2.0" - eth-sig-util "^3.0.1" - eth-simple-keyring "^4.2.0" - ethereumjs-util "^7.0.9" - ethereumjs-wallet "^1.0.1" - eth-json-rpc-filters@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.1.tgz#82204a13c99927dbf42cbb3962846650c6281f33" @@ -11182,9 +11071,9 @@ eth-json-rpc-middleware@^6.0.0: safe-event-emitter "^1.0.1" eth-json-rpc-middleware@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-8.0.1.tgz#b3761620d3e5dda3f5bed3fd953dc326c7dcee44" - integrity sha512-Ar/Sp1J9H0RT3TmzVBr//UW3Lf4TowUJMyu9bqffKV0iLdFwbE6k07NxchPEzO8D918uS2LdyIyZh4v6avGHwA== + version "8.0.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-8.0.2.tgz#7ce0b44443b8733c271ad64843a39d1782350fcb" + integrity sha512-aUx+Nf43pFAHnSQq1MqDETc6Bq0fIKpIen9oC3y4DLle4rsrSInx1Gxdde2/VZ1tlNcmN4M82ucbSMxR8bMqsg== dependencies: "@metamask/safe-event-emitter" "^2.0.0" btoa "^1.2.1" @@ -11193,34 +11082,31 @@ eth-json-rpc-middleware@^8.0.0: eth-sig-util "^1.4.2" json-rpc-engine "^6.1.0" json-stable-stringify "^1.0.1" - node-fetch "^2.6.1" + node-fetch "^2.6.7" pify "^3.0.0" -eth-keyring-controller@^6.2.0, eth-keyring-controller@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eth-keyring-controller/-/eth-keyring-controller-6.2.1.tgz#61901071fc74059ed37cb5ae93870fdcae6e3781" - integrity sha512-x2gTM1iHp2Kbvdtd9Eslysw0qzVZiqOzpVB3AU/ni2Xiit+rlcv2H80zYKjrEwlfWFDj4YILD3bOqlnEMmRJOA== +eth-keyring-controller@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/eth-keyring-controller/-/eth-keyring-controller-7.0.2.tgz#c4d7f9be179f08b3bb18410066bc4c8e91f50552" + integrity sha512-U4bqbXkTn7js/47rnFtVyBYQcvOKtmraD/YReBwuy4R56bFSJN8kinP0JJRl3WTtVfVS1l5A/jjsF3qk5TaTeg== dependencies: - bip39 "^2.4.0" - bluebird "^3.5.0" + "@metamask/bip39" "^4.0.0" + "@metamask/eth-hd-keyring" "^4.0.2" browser-passworder "^2.0.3" - eth-hd-keyring "^3.6.0" eth-sig-util "^3.0.1" eth-simple-keyring "^4.2.0" - ethereumjs-util "^7.0.9" - loglevel "^1.5.0" obs-store "^4.0.3" -eth-lattice-keyring@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/eth-lattice-keyring/-/eth-lattice-keyring-0.6.1.tgz#ebb6dfb8039d4c4c979280110aa49a7b74064850" - integrity sha512-FzP/TPIFuyo37B4dGKg6bQN0H61h9Bdejh9bxH6sUqmDB+X+a/PlydeWxZIhEjmIvD+Huuy+bcp9hXTcCcr2Ig== +eth-lattice-keyring@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/eth-lattice-keyring/-/eth-lattice-keyring-0.7.3.tgz#fe27b1ff3f81535506be5804801da1bfdc379cbe" + integrity sha512-DVyk316MUU0e/871eO/EFGPnMLT4sRwgft1iZ9dhY5dUcrcjs0G+Vza9/HPvKu7jJm3FPLcL2T3DJUlF4+XmZQ== dependencies: "@ethereumjs/common" "2.4.0" "@ethereumjs/tx" "3.3.0" bn.js "^5.2.0" ethereumjs-util "^7.0.10" - gridplus-sdk "^1.1.6" + gridplus-sdk "^1.2.3" rlp "^3.0.0" secp256k1 "4.0.2" @@ -11247,7 +11133,7 @@ eth-method-registry@^2.0.0: dependencies: ethjs "^0.4.0" -eth-phishing-detect@^1.1.14, eth-phishing-detect@^1.1.16: +eth-phishing-detect@^1.1.16: version "1.1.16" resolved "https://registry.yarnpkg.com/eth-phishing-detect/-/eth-phishing-detect-1.1.16.tgz#637158d5774819e1a861f6d169e6d77d076a47fd" integrity sha512-/o9arK5qFOKVdfZK9hJVAQP0eKXjAvImIKNBMfF9Nj1HGicD3wfsVuXDu1OHrxuEi6+4kYtD9wyAn/3G7g7VrA== @@ -11377,8 +11263,8 @@ ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.4, ethereumjs-abi@^0.6.8: ethereumjs-util "^6.0.0" "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.7" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#8431eab7b3384e65e8126a4602520b78031666fb" + version "0.6.8" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" dependencies: bn.js "^4.11.8" ethereumjs-util "^6.0.0" @@ -11436,17 +11322,17 @@ ethereumjs-tx@^2.1.1: ethereumjs-util "^6.0.0" ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" - integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== dependencies: bn.js "^4.11.0" create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" ethjs-util "^0.1.3" - keccak "^1.0.2" rlp "^2.0.0" safe-buffer "^5.1.1" - secp256k1 "^3.0.1" ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: version "6.2.1" @@ -11897,11 +11783,6 @@ execall@^2.0.0: dependencies: clone-regexp "^2.1.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" @@ -12029,7 +11910,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@3.0.2, extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -12041,15 +11922,6 @@ extension-port-stream@^2.0.0, extension-port-stream@^2.0.1: dependencies: webextension-polyfill-ts "^0.22.0" -external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -12216,10 +12088,15 @@ fast-redact@^1.4.4: resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-1.5.0.tgz#302892f566750c4f5eec7b830bfc9bc473484034" integrity sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ== +fast-redact@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.1.tgz#790fcff8f808c2e12fabbfb2be5cb2deda448fa0" + integrity sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A== + fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-url-parser@1.1.3: version "1.1.3" @@ -12280,29 +12157,6 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -12574,16 +12428,6 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" integrity sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c= -flat-cache@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" - integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -12886,11 +12730,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" - integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== - fsevents@^1.2.7: version "1.2.9" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" @@ -13013,20 +12852,6 @@ geckodriver@^1.21.0: https-proxy-agent "5.0.0" tar "6.0.2" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= - dependencies: - is-property "^1.0.0" - generic-names@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" @@ -13157,13 +12982,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -gettext-parser@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/gettext-parser/-/gettext-parser-1.1.0.tgz#2c5a6638d893934b9b55037d0ad82cb7004b2679" - integrity sha1-LFpmONiTk0ubVQN9CtgstwBLJnk= - dependencies: - encoding "^0.1.11" - git-up@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" @@ -13229,6 +13047,13 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0, dependencies: is-glob "^4.0.1" +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-promise@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" @@ -13281,15 +13106,15 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.1.tgz#00308f5c035aa0b2a447cd37ead267ddff1577d3" + integrity sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" path-is-absolute "^1.0.0" @@ -13387,7 +13212,7 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== @@ -13399,18 +13224,13 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globals@^13.6.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795" - integrity sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA== +globals@^13.6.0, globals@^13.9.0: + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== dependencies: type-fest "^0.20.2" -globals@^9.14.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globalthis@1.0.1, globalthis@^1.0.0, globalthis@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9" @@ -13442,18 +13262,6 @@ globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: merge2 "^1.3.0" slash "^3.0.0" -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -13585,10 +13393,10 @@ graphql-subscriptions@^1.1.0: resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== -gridplus-sdk@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/gridplus-sdk/-/gridplus-sdk-1.1.6.tgz#abec7eab81daa295806aaafda50cf3b463a53ae6" - integrity sha512-AjpnKouda18gwJpOqZRB9aY/cXKGLCj2U915hxjtlQvulRQfCtS1aNA71ZeN/rlBb77NPDZ8v1jJVerte4vKLQ== +gridplus-sdk@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/gridplus-sdk/-/gridplus-sdk-1.2.4.tgz#3bfd73a65b5af0a23bbc0164e8537981d35dd8db" + integrity sha512-S4Yg48GG+eAuXxO0I5yWnM8w7VFgvLuP0aS7f6L+h+et1FUF3yNIR2sBuFnijcuGVcMy+jqvA66r8iSttBQfQw== dependencies: "@ethereumjs/common" "2.4.0" "@ethereumjs/tx" "3.3.0" @@ -13605,7 +13413,6 @@ gridplus-sdk@^1.1.6: hash.js "^1.1.7" js-sha3 "^0.8.0" rlp "^3.0.0" - rlp-browser "^1.0.1" secp256k1 "4.0.2" superagent "^3.8.3" @@ -13839,13 +13646,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-bigints@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -13858,11 +13658,6 @@ has-binary2@~1.0.2: dependencies: isarray "2.0.1" -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= - has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" @@ -13944,12 +13739,13 @@ has@^1.0.0, has@^1.0.1, has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash-sum@^2.0.0: version "2.0.0" @@ -14230,7 +14026,7 @@ htmlescape@^1.1.0, htmlescape@^1.1.1: resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= -htmlparser2@^3.10.0, htmlparser2@^3.3.0, htmlparser2@^3.9.1: +htmlparser2@^3.10.0, htmlparser2@^3.3.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -14242,6 +14038,16 @@ htmlparser2@^3.10.0, htmlparser2@^3.3.0, htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + http-assert@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" @@ -14369,11 +14175,6 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -human-standard-collectible-abi@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/human-standard-collectible-abi/-/human-standard-collectible-abi-1.0.2.tgz#077bae9ed1b0b0b82bc46932104b4b499c941aa0" - integrity sha512-nD3ITUuSAIBgkaCm9J2BGwlHL8iEzFjJfTleDAC5Wi8RBJEXXhxV0JeJjd95o+rTwf98uTE5MW+VoBKOIYQh0g== - human-standard-token-abi@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/human-standard-token-abi/-/human-standard-token-abi-1.0.2.tgz#207d7846796ee5bb85fdd336e769cb38045b2ae0" @@ -14411,7 +14212,7 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -14473,20 +14274,22 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.2.0: - version "3.3.7" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" - integrity sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA== - ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +image-size@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.1.tgz#86d6cfc2b1d19eab5d2b368d4b9194d9e48541c5" + integrity sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ== + dependencies: + queue "6.0.2" immediate@^3.2.3, immediate@~3.2.3: version "3.2.3" @@ -14604,44 +14407,6 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34= - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - -inquirer@^6.2.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - insert-module-globals@^7.0.0, insert-module-globals@^7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.1.tgz#d5e33185181a4e1f33b15f7bf100ee91890d5cb3" @@ -15546,10 +15311,10 @@ is-glob@^3.0.0, is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -15622,22 +15387,6 @@ is-mergeable-object@1.1.1: resolved "https://registry.yarnpkg.com/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz#faaa3ed1cfce87d6f7d2f5885e92cc30af3e2ebf" integrity sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA== -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== - -is-my-json-valid@^2.10.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz#1345a6fca3e8daefc10d0fa77067f54cedafd59a" - integrity sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA== - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-nan@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" @@ -15788,7 +15537,7 @@ is-primitive@^2.0.0: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= -is-promise@^2.1, is-promise@^2.1.0: +is-promise@^2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= @@ -15798,11 +15547,6 @@ is-promise@~1, is-promise@~1.0.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" integrity sha1-MVc3YcBX4zwukaq56W2gjO++duU= -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - is-pull-stream@0.0.0, is-pull-stream@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/is-pull-stream/-/is-pull-stream-0.0.0.tgz#a3bc3d1c6d3055151c46bde6f399efed21440ca9" @@ -15843,11 +15587,6 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4" - integrity sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g== - is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" @@ -16277,6 +16016,15 @@ jest-haste-map@^26.6.2: optionalDependencies: fsevents "^2.1.2" +jest-it-up@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/jest-it-up/-/jest-it-up-2.0.2.tgz#c8c38d14fd4a9131c12f6947baa2063554c0738d" + integrity sha512-xup3Lv1uc+ihGwyFLjZOqY2L7m91TyBp/TRJxS7PYAVQc/vd3NbkPyypUlT59sQDfW9uULF9jLCedr7jABDNnA== + dependencies: + "@inquirer/confirm" "^0.0.14-alpha.0" + ansi-colors "^4.1.0" + commander "^9.0.0" + jest-jasmine2@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" @@ -16574,11 +16322,6 @@ js-string-escape@^1.0.1: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" @@ -16587,7 +16330,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.5.1: +js-yaml@^3.13.1, js-yaml@^3.14.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -16595,6 +16338,13 @@ js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.5.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsan@^3.1.13: version "3.1.13" resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.13.tgz#4de8c7bf8d1cfcd020c313d438f930cec4b91d86" @@ -16698,12 +16448,12 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-merge-patch@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-merge-patch/-/json-merge-patch-0.2.3.tgz#fa2c6b5af87da77bae2966a589d52e23ed81fe40" - integrity sha1-+ixrWvh9p3uuKWalidUuI+2B/kA= +json-merge-patch@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-merge-patch/-/json-merge-patch-1.0.2.tgz#c4626811943b2f362f8607ae8f03d528875465b0" + integrity sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg== dependencies: - deep-equal "^1.0.0" + fast-deep-equal "^3.1.3" json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" @@ -16857,11 +16607,6 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= - jsonschema@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.2.tgz#83ab9c63d65bf4d596f91d81195e78772f6452bc" @@ -17025,17 +16770,7 @@ keccak@3.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -keccak@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" - integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== - dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - safe-buffer "^5.1.0" - -keccak@^3.0.0, keccak@^3.0.2: +keccak@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== @@ -17211,26 +16946,24 @@ latest-version@^5.0.0: dependencies: package-json "^6.3.0" -lavamoat-browserify@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/lavamoat-browserify/-/lavamoat-browserify-14.1.0.tgz#bfe11d83e1c4cab295f87a0446c8f5ece7a3b20e" - integrity sha512-Q6DaR5ETmvUkrPnW6p1bXrDZxFh1eJr8aJB903iDozAYT6ftbHnvZL8pOCvCt80LW6Tj72I+tlbo0Ig9xjEzyA== +lavamoat-browserify@^15.2.0: + version "15.2.0" + resolved "https://registry.yarnpkg.com/lavamoat-browserify/-/lavamoat-browserify-15.2.0.tgz#02a755aedb571d9fda5b425c4eea3abf9a98a7f2" + integrity sha512-Ja4z3NBZ1+GnSR+W2VHS+/nL6f2iu3X5Mq8w64hTw3FXnNtNDwMjtVEpeG2X77vSwxNgLZoAO597OuCrfp/z6Q== dependencies: - "@lavamoat/lavapack" "^2.0.3" - JSONStream "^1.3.5" - clone "^2.1.2" + "@babel/code-frame" "^7.16.7" + "@lavamoat/aa" "^3.1.0" + "@lavamoat/lavapack" "^3.1.0" + browser-resolve "^2.0.0" concat-stream "^2.0.0" convert-source-map "^1.8.0" duplexify "^4.1.1" json-stable-stringify "^1.0.1" - lavamoat-core "^11.0.0" - merge-deep "^3.0.2" - offset-sourcemap-lines "^1.0.1" + lavamoat-core "^12.2.0" pify "^4.0.1" readable-stream "^3.6.0" - safe-buffer "^5.1.2" + source-map "^0.7.3" through2 "^3.0.0" - umd "^3.0.3" lavamoat-core@^10.0.1: version "10.0.1" @@ -17243,16 +16976,15 @@ lavamoat-core@^10.0.1: merge-deep "^3.0.2" resolve "^1.15.1" -lavamoat-core@^11.0.0, lavamoat-core@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/lavamoat-core/-/lavamoat-core-11.0.1.tgz#7560fdd8442e2ea4956f4b7636fd615b806afc93" - integrity sha512-Mz41jirTV1fiwkPfzkM73uW1bdQYGBUxLcHStERsD4/1XZYo6j3q88vJQvUJGV0yzB2IV/NMesuT/aoW2QxABA== +lavamoat-core@^12.2.0: + version "12.2.0" + resolved "https://registry.yarnpkg.com/lavamoat-core/-/lavamoat-core-12.2.0.tgz#73d77a031ef3e4d09a3b60def542f67fc251a033" + integrity sha512-9JXfEuzhK2vQomC1DaBY+ylhJvewTwwp3AoIx/WFCfJ7f/W4V89LJIk2qO5V9unHdMenW68BSlQBQ5LtFBU/Dw== dependencies: fromentries "^1.2.0" json-stable-stringify "^1.0.1" - lavamoat-tofu "^6.0.0" + lavamoat-tofu "^6.0.1" merge-deep "^3.0.2" - resolve "^1.15.1" lavamoat-tofu@^5.1.3: version "5.1.3" @@ -17262,10 +16994,10 @@ lavamoat-tofu@^5.1.3: "@babel/parser" "^7.10.1" "@babel/traverse" "^7.10.1" -lavamoat-tofu@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lavamoat-tofu/-/lavamoat-tofu-6.0.0.tgz#26d37c14864eb98df247195c5419a3a762ef650b" - integrity sha512-tgXf+/lplow/Ao2cOsbQ4ZqTuKBLwNnSSjPFIiGAHAM6xs+c+jEr60UAqOflyBg94VOE47G6o8zYZOAylZpUrw== +lavamoat-tofu@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/lavamoat-tofu/-/lavamoat-tofu-6.0.2.tgz#eed3031e31fac37b36eb42a7bad9ec7ef824ea34" + integrity sha512-za9lWVdB5hk1Clt77Sfb81x425sOi9nnZvJcsCfhQaojNJSn8B/3MQR9D7HmmNw4jJE+4B0ILqZoz/MNaABEYg== dependencies: "@babel/parser" "^7.10.1" "@babel/traverse" "^7.10.1" @@ -17282,18 +17014,19 @@ lavamoat-viz@^6.0.9: serve-handler "^6.1.3" yargs "^16.0.0" -lavamoat@^5.3.5: - version "5.3.5" - resolved "https://registry.yarnpkg.com/lavamoat/-/lavamoat-5.3.5.tgz#e4faaf0749195ebd55bee4b7deb7241ff7718be7" - integrity sha512-7ds094PVQXfBoGWkjnjAAXR+s9VLYNDvS1UbH/GrXNGeSTTVJb/KAE604j/t26AOW0sn0PMGY5OhCKPpuqOBqQ== +lavamoat@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/lavamoat/-/lavamoat-6.2.0.tgz#c03328710f63ddb2bade10c5d7b484c5d238481d" + integrity sha512-DLMY9HwLkR5H/eLupODjT9Kc53KHxd3op3M3hCqxwkMOodeM8t04Z/9FMR3zJoIALFNUXWN43cUqk0pl6bZITQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/highlight" "^7.10.4" + "@lavamoat/aa" "^3.1.0" bindings "^1.5.0" htmlescape "^1.1.1" json-stable-stringify "^1.0.1" - lavamoat-core "^11.0.0" - lavamoat-tofu "^5.1.3" + lavamoat-core "^12.2.0" + lavamoat-tofu "^6.0.1" node-gyp-build "^4.2.3" object.fromentries "^2.0.2" resolve "^1.17.0" @@ -17578,14 +17311,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -17594,6 +17319,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + libp2p-bootstrap@~0.9.3: version "0.9.7" resolved "https://registry.yarnpkg.com/libp2p-bootstrap/-/libp2p-bootstrap-0.9.7.tgz#eabedab24775a6175f07ce035b716e8114d84a76" @@ -18268,6 +18001,11 @@ lodash.memoize@~3.0.3: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.partition@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.partition/-/lodash.partition-4.6.0.tgz#a38e46b73469e0420b0da1212e66d414be364ba4" @@ -18303,7 +18041,7 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= -lodash@=3.10.1, lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.7.0, lodash@~4.17.2: +lodash@=3.10.1, lodash@^4.13.1, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.7.0, lodash@~4.17.2: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -18329,7 +18067,7 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" -loglevel@^1.4.1, loglevel@^1.5.0: +loglevel@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.0.tgz#ae0caa561111498c5ba13723d6fb631d24003934" integrity sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ= @@ -18660,13 +18398,6 @@ mdast-util-to-string@^1.0.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== -mdn-browser-compat-data@0.0.94: - version "0.0.94" - resolved "https://registry.yarnpkg.com/mdn-browser-compat-data/-/mdn-browser-compat-data-0.0.94.tgz#eaa1653761ce95881ea1858a8c0ce6066d85f94b" - integrity sha512-O3zJqbmehz0Hn3wpk62taA0+jNF7yn6BDWqQ9Wh2bEoO9Rx1BYiTmNX565eNVbW0ixfQkY6Sp9FvY/rr79Qmyg== - dependencies: - extend "3.0.2" - mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -18963,11 +18694,6 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - integrity sha1-5md4PZLonb00KBi1IwudYqZyrRg= - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -19014,13 +18740,27 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -19547,30 +19287,25 @@ mute-stdout@^1.0.0: resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= +mute-stream@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -nan@^2.11.1, nan@^2.12.1, nan@^2.13.2, nan@^2.14.0, nan@^2.2.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== +nan@^2.11.1, nan@^2.12.1, nan@^2.13.2, nan@^2.14.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== nanoid@^2.0.0, nanoid@^2.1.6: version "2.1.11" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== -nanoid@^3.1.23, nanoid@^3.1.31: - version "3.2.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== +nanoid@^3.1.31, nanoid@^3.3.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== nanomatch@^1.2.9: version "1.2.9" @@ -19617,11 +19352,6 @@ native-url@^0.2.6: dependencies: querystring "^0.2.0" -natural-compare-lite@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q= - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -19770,12 +19500,7 @@ node-environment-flags@1.0.6: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" - integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= - -node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@~2.6.1: +node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@~2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -19974,14 +19699,6 @@ nofilter@^1.0.4: resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== -nomnom@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" - integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= - dependencies: - chalk "~0.4.0" - underscore "~1.6.0" - nomnom@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" @@ -20118,6 +19835,13 @@ npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -20371,12 +20095,10 @@ observable-webworkers@^1.0.0: resolved "https://registry.yarnpkg.com/observable-webworkers/-/observable-webworkers-1.0.0.tgz#dcbd484a9644d512accc351962c6e710313fbb68" integrity sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ== -offset-sourcemap-lines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/offset-sourcemap-lines/-/offset-sourcemap-lines-1.0.1.tgz#5854dff74b73fc06efcb61d7b721a8113d99be92" - integrity sha1-WFTf90tz/Abvy2HXtyGoET2ZvpI= - dependencies: - source-map "^0.5.0" +on-exit-leak-free@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" + integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== on-finished@^2.3.0, on-finished@~2.3.0: version "2.3.0" @@ -20397,18 +20119,6 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -20446,7 +20156,7 @@ optional@^0.1.3: resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.4.tgz#cdb1a9bedc737d2025f690ceeb50e049444fd5b3" integrity sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw== -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= @@ -20624,12 +20334,12 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-4.0.0.tgz#06e4fb102f38f33e9e904f41af3c34a5aa3b2b7b" - integrity sha512-HsSR1+2l6as4Wp2SGZxqLnuFHxVvh1Ir9pvZxyujsC13egZVe7P0YeBLN0ijQzM/twrO5To3ia3jzBXAvpMTEA== +os-locale@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-5.0.0.tgz#6d26c1d95b6597c5d5317bf5fba37eccec3672e0" + integrity sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA== dependencies: - execa "^1.0.0" + execa "^4.0.0" lcid "^3.0.0" mem "^5.0.0" @@ -21072,12 +20782,19 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@6.0.1, parse5@^6.0.0: +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -parse5@^3.0.1, parse5@^3.0.2: +parse5@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== @@ -21183,7 +20900,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@1.0.2, path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@1.0.2, path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -21278,9 +20995,9 @@ pause-stream@0.0.11: through "~2.3" pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -21432,6 +21149,14 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pino-abstract-transport@v0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" + integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== + dependencies: + duplexify "^4.1.2" + split2 "^4.0.0" + pino-pretty@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-2.6.1.tgz#b5a8e28137deb1629428931d98c708b51f0e9555" @@ -21452,7 +21177,29 @@ pino-std-serializers@^2.3.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz#cb5e3e58c358b26f88969d7e619ae54bdfcc1ae1" integrity sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ== -pino@5.13.3, pino@^5.12.3, pino@~5.13.0: +pino-std-serializers@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" + integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== + +pino@7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" + integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.0.0" + on-exit-leak-free "^0.2.0" + pino-abstract-transport v0.5.0 + pino-std-serializers "^4.0.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.1.0" + safe-stable-stringify "^2.1.0" + sonic-boom "^2.2.1" + thread-stream "^0.15.1" + +pino@^5.12.3: version "5.13.3" resolved "https://registry.yarnpkg.com/pino/-/pino-5.13.3.tgz#26cd6f69b4bd03d6408af28eddcd9313687f143d" integrity sha512-FL12DKlPwBlbhztlUz6kseR03PRR8nD+wvLdN/Sji9UiBYYfSjX+k8ocU7/NwW55JdFRONTn3iACoelXnMFVVQ== @@ -21523,11 +21270,6 @@ plugin-error@1.0.1, plugin-error@^1.0.1: arr-union "^3.1.0" extend-shallow "^3.0.2" -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= - pn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -21540,14 +21282,6 @@ pnp-webpack-plugin@1.6.4: dependencies: ts-pnp "^1.1.6" -po2json@0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/po2json/-/po2json-0.4.5.tgz#47bb2952da32d58a1be2f256a598eebc0b745118" - integrity sha1-R7spUtoy1Yob4vJWpZjuvAt0URg= - dependencies: - gettext-parser "1.1.0" - nomnom "1.8.1" - polished@^4.0.5: version "4.1.3" resolved "https://registry.yarnpkg.com/polished/-/polished-4.1.3.tgz#7a3abf2972364e7d97770b827eec9a9e64002cfc" @@ -21784,15 +21518,6 @@ postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@7.0.18: - version "7.0.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" - integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - postcss@7.0.21: version "7.0.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" @@ -21802,6 +21527,15 @@ postcss@7.0.21: source-map "^0.6.1" supports-color "^6.1.0" +postcss@8.4.13, postcss@^8.1.10, postcss@^8.1.7: + version "8.4.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" + integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== + dependencies: + nanoid "^3.3.3" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@^6.0.1, postcss@^6.0.19, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" @@ -21819,15 +21553,6 @@ postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0. picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.1.10, postcss@^8.1.7: - version "8.3.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" - integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map-js "^0.6.2" - postmsg-rpc@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/postmsg-rpc/-/postmsg-rpc-2.4.0.tgz#4e2daf6851852364696debd5d6bf6936d1424cdf" @@ -22000,17 +21725,6 @@ prismjs@^1.21.0, prismjs@~1.22.0: optionalDependencies: clipboard "^2.0.0" -probe-image-size@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-5.0.0.tgz#1b87d20340ab8fcdb4324ec77fbc8a5f53419878" - integrity sha512-V6uBYw5eBc5UVIE7MUZD6Nxg0RYuGDWLDenEn0B1WC6PcTvn1xdQ6HLDDuznefsiExC6rNrCz7mFRBo0f3Xekg== - dependencies: - deepmerge "^4.0.0" - inherits "^2.0.3" - next-tick "^1.0.0" - request "^2.83.0" - stream-parser "~0.3.1" - process-nextick-args@^1.0.6, process-nextick-args@^1.0.7, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -22028,6 +21742,11 @@ process-on-spawn@^1.0.0: dependencies: fromentries "^1.2.0" +process-warning@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" + integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== + process@^0.11.10, process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -22038,11 +21757,6 @@ process@~0.5.1: resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= - progress@^2.0.0, progress@^2.0.1, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -22180,9 +21894,9 @@ proto-list@~1.2.1: integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= protobufjs@^6.11.2: - version "6.11.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" - integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== + version "6.11.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -22610,11 +22324,23 @@ queue-microtask@^1.2.3: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + quick-format-unescaped@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-3.0.2.tgz#0137e94d8fb37ffeb70040535111c378e75396fb" integrity sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA== +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -23345,14 +23071,10 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" +real-require@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" + integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== receptacle@^1.3.2: version "1.3.2" @@ -23447,7 +23169,7 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@0.13.3, regenerator-runtime@^0.11.0, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: +regenerator-runtime@^0.11.0, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -23487,15 +23209,10 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +regexpp@^3.0.0, regexpp@^3.1.0, regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^4.7.1: version "4.7.1" @@ -23780,7 +23497,7 @@ request-promise-native@^1.0.3: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@^2.83.0, request@^2.85.0, request@^2.88.2, request@~2.88.0: +request@^2.83.0, request@^2.85.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -23831,14 +23548,6 @@ require-package-name@^2.0.1: resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk= -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - requirejs-config-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" @@ -23887,11 +23596,6 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -23963,22 +23667,6 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -24097,13 +23785,6 @@ ripple-lib@1.10.0: ripple-lib-transactionparser "0.8.2" ws "^7.2.0" -rlp-browser@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rlp-browser/-/rlp-browser-1.0.1.tgz#d1ea37f289359200d33dfa006d46008a288761eb" - integrity sha512-JU+9ntlfyKanOOPwtNuMZBmCQ/fWVoryfa7ZSYDTUKAa1zk4v2smvM0WV8BsskJuqn/DdxpO7HO2vEikMvmhOA== - dependencies: - buffer "^5.4.2" - rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4, rlp@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" @@ -24172,19 +23853,10 @@ rtlcss@^2.4.0: postcss "^6.0.23" strip-json-comments "^2.0.0" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k= - dependencies: - once "^1.3.0" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" +run-async@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: version "1.1.9" @@ -24208,12 +23880,7 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= - -rxjs@6, rxjs@^6.4.0, rxjs@^6.5.2: +rxjs@6, rxjs@^6.5.2: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -24230,7 +23897,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@~5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -24254,6 +23921,11 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +safe-stable-stringify@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" + integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== + "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -24424,7 +24096,7 @@ scss-parser@^1.0.4: dependencies: invariant "2.2.4" -secp256k1@4.0.2, secp256k1@^4.0.0, secp256k1@^4.0.1, secp256k1@^4.0.2: +secp256k1@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== @@ -24447,6 +24119,15 @@ secp256k1@^3.0.1, secp256k1@^3.6.1, secp256k1@^3.6.2: nan "^2.14.0" safe-buffer "^5.1.2" +secp256k1@^4.0.0, secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" @@ -24490,23 +24171,23 @@ semver-greatest-satisfied-range@^1.1.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.3.0, semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@7.3.7, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -24604,10 +24285,10 @@ ses@0.12.4, ses@^0.12.4: "@agoric/make-hardener" "^0.1.2" "@agoric/transform-module" "^0.4.1" -ses@^0.15.7: - version "0.15.11" - resolved "https://registry.yarnpkg.com/ses/-/ses-0.15.11.tgz#851cb6a20d8967537075d25bb0185051c28c23db" - integrity sha512-lQg6q8/PVf+n18EjP+5Uv1tN9oVQ3br5QxJzPXoAVQleSYnlf20JY9coe7n1B9A6CtIKIHyr6m/TfskcRCufgA== +ses@^0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/ses/-/ses-0.15.15.tgz#082923a1cabeac3151f9b3867e325fe447ce037d" + integrity sha512-sJM4HRlM3VouA3RhRmS7wG5MRQPqZZnc6O4BvAefU7yeM+qp8EUfGAWQ9iB/X5cNh3+m5N9lC7DEpyxQ+E4D+w== set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -24649,7 +24330,7 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8, sha.js@~2.4.4: +sha.js@2.4.11, sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8, sha.js@~2.4.4: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -24730,15 +24411,6 @@ shell-quote@1.7.2, shell-quote@^1.4.2, shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shelljs@^0.7.5: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM= - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - shelljs@^0.8.1: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" @@ -24844,11 +24516,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -25016,6 +24683,13 @@ sonic-boom@^0.7.5: dependencies: flatstr "^1.0.12" +sonic-boom@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" + integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== + dependencies: + atomic-sleep "^1.0.0" + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -25046,10 +24720,10 @@ source-map-explorer@^2.4.2: temp "^0.9.1" yargs "^15.3.1" -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map-resolve@^0.5.0, source-map-resolve@^0.5.1: version "0.5.1" @@ -25070,18 +24744,10 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.11, source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20, source-map-support@~0.5.4: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +source-map-support@0.5.21, source-map-support@^0.5.11, source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -25204,6 +24870,11 @@ split2@^3.0.0, split2@^3.1.0: dependencies: readable-stream "^3.0.0" +split2@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== + split@0.3, split@~0.3.0: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -25421,13 +25092,6 @@ stream-http@^3.0.0: readable-stream "^3.6.0" xtend "^4.0.2" -stream-parser@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" - integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M= - dependencies: - debug "2" - stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" @@ -25456,13 +25120,6 @@ stream-to-pull-stream@^1.7.2, stream-to-pull-stream@^1.7.3: looper "^3.0.0" pull-stream "^3.2.3" -stream@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/stream/-/stream-0.0.2.tgz#7f5363f057f6592c5595f00bc80a27f5cec1f0ef" - integrity sha1-f1Nj8Ff2WSxVlfALyAon9c7B8O8= - dependencies: - emitter-component "^1.1.1" - streamsearch@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" @@ -25505,7 +25162,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -25522,14 +25179,14 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" "string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.2, string.prototype.matchall@^4.0.4: version "4.0.4" @@ -25593,11 +25250,11 @@ string_decoder@0.10, string_decoder@~0.10.x: integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~1.0.3: version "1.0.3" @@ -25633,7 +25290,7 @@ stringify-object@^3.2.1: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@6.0.0, strip-ansi@^6.0.0: +strip-ansi@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== @@ -25661,10 +25318,12 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" strip-bom-buf@^2.0.0: version "2.0.0" @@ -25735,7 +25394,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@2.0.1, strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@2.0.1, strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -25907,11 +25566,6 @@ supports-color@6.0.0: dependencies: has-flag "^3.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -25996,19 +25650,7 @@ syntax-error@^1.1.1: dependencies: acorn-node "^1.2.0" -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8= - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -table@^5.2.3, table@^5.4.6: +table@^5.4.6: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== @@ -26219,7 +25861,7 @@ text-encoding@^0.6.4: resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" integrity sha1-45mpgiV6J22uQou5KEXLcb3CbRk= -text-table@0.2.0, text-table@^0.2.0, text-table@~0.2.0: +text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -26229,6 +25871,13 @@ textarea-caret@^3.0.1: resolved "https://registry.yarnpkg.com/textarea-caret/-/textarea-caret-3.0.2.tgz#f360c48699aa1abf718680a43a31a850665c2caf" integrity sha1-82DEhpmqGr9xhoCkOjGoUGZcLK8= +thread-stream@^0.15.1: + version "0.15.2" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" + integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== + dependencies: + real-require "^0.1.0" + throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" @@ -26519,7 +26168,7 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@^1.0.0, tr46@^1.0.1: +tr46@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= @@ -26631,10 +26280,10 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== tslib@~2.0.1: version "2.0.3" @@ -26857,11 +26506,6 @@ underscore@~1.4.4: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= -underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= - undertaker-registry@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" @@ -27059,11 +26703,6 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unorm@^1.3.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.5.0.tgz#01fa9b76f1c60f7916834605c032aa8962c3f00a" - integrity sha512-sMfSWoiRaXXeDZSXC+YRZ23H4xchQpwxjpw1tmfR+kgbBCaOgln4NI0LXejJIhnBuKINrB3WRn+ZI8IWssirVw== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -27092,7 +26731,12 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -upath@1.2.0, upath@^1.1.1: +upath@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -27248,13 +26892,6 @@ use@^3.1.0: dependencies: kind-of "^6.0.2" -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8= - dependencies: - os-homedir "^1.0.0" - utf-8-validate@5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" @@ -27876,11 +27513,6 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - whatwg-fetch@^3.4.1: version "3.6.2" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" @@ -27891,15 +27523,6 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -28102,13 +27725,6 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - ws@*, ws@7.1.0, ws@7.4.6, ws@>=7.4.6, ws@^1.1.0, ws@^5.1.1, ws@^7, ws@^7.2.0, ws@^7.3.1, ws@^7.4.0, ws@^7.4.6, ws@~7.4.2: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -28253,7 +27869,7 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2: +yargs-parser@13.1.2, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -28282,6 +27898,11 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + yargs-promise@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/yargs-promise/-/yargs-promise-1.1.0.tgz#97ebb5198df734bb3b11745133ae5b501b16ab1f" @@ -28312,22 +27933,18 @@ yargs@13.3.2, yargs@^13.2.2, yargs@^13.2.4, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@14.0.0, yargs@~14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.0.0.tgz#ba4cacc802b3c0b3e36a9e791723763d57a85066" - integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow== +yargs@17.4.1, yargs@^17.0.1: + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" yargs@^15.0.0, yargs@^15.0.2, yargs@^15.3.1, yargs@^15.4.1: version "15.4.1" @@ -28359,19 +27976,6 @@ yargs@^16.0.0, yargs@^16.1.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" - integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@^7.1.0: version "7.1.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6"
@@ -179,8 +184,6 @@ export default function SrpInput({ onChange, srpText }) { if (newSrp.trim().match(/\s/u)) { event.preventDefault(); onSrpPaste(newSrp); - } else { - onSrpWordChange(index, newSrp); } }} /> diff --git a/ui/components/app/srp-input/srp-input.scss b/ui/components/app/srp-input/srp-input.scss index 21f0a576b..5d971147b 100644 --- a/ui/components/app/srp-input/srp-input.scss +++ b/ui/components/app/srp-input/srp-input.scss @@ -2,27 +2,28 @@ &__container { display: grid; grid-template-areas: - "title dropdown" - "paste-tip paste-tip" - "input input" - "error error" - "too-many-words-error too-many-words-error"; + 'title dropdown' + 'paste-tip paste-tip' + 'input input' + 'error error' + 'too-many-words-error too-many-words-error'; } @media (max-width: 767px) { &__container { grid-template-areas: - "title" - "dropdown" - "paste-tip" - "input" - "error" - "too-many-words-error"; + 'title' + 'dropdown' + 'paste-tip' + 'input' + 'error' + 'too-many-words-error'; } } &__srp-label { grid-area: title; + text-align: center; } &__number-of-words-dropdown { @@ -30,7 +31,7 @@ } &__paste-tip { - margin-bottom: 8px; + margin: 24px 0; grid-area: paste-tip; width: auto; margin-left: auto; diff --git a/ui/components/app/step-progress-bar/index.scss b/ui/components/app/step-progress-bar/index.scss index 7d37e2fae..b248cf69f 100644 --- a/ui/components/app/step-progress-bar/index.scss +++ b/ui/components/app/step-progress-bar/index.scss @@ -1,8 +1,10 @@ +$progress-bar-width: calc(100% - 34px); // 100% - (circle size + (circle border size * 2)) +$progress-bar-position-left: calc(-50% + 17px); // -50% + ((circle size / 2) + circle border size) + .progressbar { counter-reset: step; display: flex; - justify-content: space-evenly; - width: 500px; + justify-content: space-between; margin: 0 auto; } @@ -11,14 +13,17 @@ ul.two-steps { } .progressbar li { + @include H7; + list-style-type: none; - width: 25%; - float: left; - font-size: 12px; position: relative; text-align: center; color: var(--color-text-alternative); z-index: 2; + align-items: center; + display: flex; + flex: 1; + flex-direction: column; } .progressbar li::before { @@ -28,32 +33,30 @@ ul.two-steps { counter-increment: step; line-height: 30px; border: 2px solid var(--color-border-muted); - display: block; + display: flex; + justify-content: center; + align-items: center; text-align: center; margin: 0 auto 10px auto; border-radius: 50%; background-color: var(--color-background-default); - z-index: -1; } .progressbar li::after { - width: 100%; + width: $progress-bar-width; height: 2px; content: ''; position: absolute; background-color: var(--color-background-alternative); top: 15px; - right: 77px; - z-index: -1; + left: $progress-bar-position-left; [dir='rtl'] & { - width: 100%; + width: $progress-bar-width; height: 2px; content: ''; position: absolute; background-color: var(--color-background-alternative); - right: 77px; - z-index: -1; } } @@ -104,13 +107,11 @@ ul.two-steps { } .progressbar li.two-steps::after { - width: 180px; height: 2px; content: ''; position: absolute; background-color: var(--color-background-alternative); top: 15px; - right: 75px; z-index: -1; [dir='rtl'] & { @@ -119,7 +120,6 @@ ul.two-steps { content: ''; position: absolute; background-color: var(--color-background-alternative); - right: 75px; z-index: -1; } } diff --git a/ui/components/app/step-progress-bar/step-progress-bar.js b/ui/components/app/step-progress-bar/step-progress-bar.js index 88f49a826..71fe934b5 100644 --- a/ui/components/app/step-progress-bar/step-progress-bar.js +++ b/ui/components/app/step-progress-bar/step-progress-bar.js @@ -19,10 +19,10 @@ export const twoStepStages = { PASSWORD_CREATE: 2, }; -export function ThreeStepProgressBar({ stage }) { +export function ThreeStepProgressBar({ stage, ...boxProps }) { const t = useI18nContext(); return ( - +
  • +
    • event.stopPropagation()} - style={{ color: 'var(--color-secondary-default)' }} + style={{ color: 'var(--color-warning-default)' }} > {t('here')} diff --git a/ui/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.stories.js b/ui/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.stories.js index 94bda3be5..0436f28d1 100644 --- a/ui/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.stories.js +++ b/ui/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.stories.js @@ -14,6 +14,9 @@ export default { options: Object.keys(imageHash), }, }, + args: { + eventKey: Object.keys(imageHash)[0], + }, }; export const DefaultStory = (args) => ; diff --git a/ui/components/app/transaction-activity-log/transaction-activity-log.component.js b/ui/components/app/transaction-activity-log/transaction-activity-log.component.js index 6162f724d..6749f69a0 100644 --- a/ui/components/app/transaction-activity-log/transaction-activity-log.component.js +++ b/ui/components/app/transaction-activity-log/transaction-activity-log.component.js @@ -8,6 +8,7 @@ import { getValueFromWeiHex, } from '../../../helpers/utils/conversions.util'; import { formatDate, getURLHostName } from '../../../helpers/utils/util'; +import { EVENT } from '../../../../shared/constants/metametrics'; import TransactionActivityLogIcon from './transaction-activity-log-icon'; import { CONFIRMED_STATUS } from './transaction-activity-log.constants'; @@ -36,7 +37,7 @@ export default class TransactionActivityLog extends PureComponent { const etherscanUrl = getBlockExplorerLink(activity, rpcPrefs); this.context.trackEvent({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, event: 'Clicked Block Explorer Link', properties: { link_type: 'Transaction Block Explorer', diff --git a/ui/components/app/transaction-decoding/transaction-decoding.component.js b/ui/components/app/transaction-decoding/transaction-decoding.component.js index 00b858d4f..b04726910 100644 --- a/ui/components/app/transaction-decoding/transaction-decoding.component.js +++ b/ui/components/app/transaction-decoding/transaction-decoding.component.js @@ -202,7 +202,7 @@ export default function TransactionDecoding({ to = '', inputData: data = '' }) { if (loading) { return (
      - +
      ); } diff --git a/ui/components/app/transaction-detail-item/index.scss b/ui/components/app/transaction-detail-item/index.scss index c7a39c250..a51cae46d 100644 --- a/ui/components/app/transaction-detail-item/index.scss +++ b/ui/components/app/transaction-detail-item/index.scss @@ -34,7 +34,7 @@ margin-inline-start: 4px; path { - fill: var(--color-icon-default); + fill: var(--color-icon-alternative); } } diff --git a/ui/components/app/transaction-icon/transaction-icon.js b/ui/components/app/transaction-icon/transaction-icon.js index 1036b853a..e87b8520a 100644 --- a/ui/components/app/transaction-icon/transaction-icon.js +++ b/ui/components/app/transaction-icon/transaction-icon.js @@ -17,9 +17,9 @@ import { captureSingleException } from '../../../store/actions'; const ICON_MAP = { [TRANSACTION_GROUP_CATEGORIES.APPROVAL]: Approve, [TRANSACTION_GROUP_CATEGORIES.INTERACTION]: Interaction, + [TRANSACTION_GROUP_CATEGORIES.RECEIVE]: Receive, [TRANSACTION_GROUP_CATEGORIES.SEND]: Send, [TRANSACTION_GROUP_CATEGORIES.SIGNATURE_REQUEST]: Sign, - [TRANSACTION_GROUP_CATEGORIES.RECEIVE]: Receive, [TRANSACTION_GROUP_CATEGORIES.SWAP]: Swap, }; @@ -29,13 +29,13 @@ const OK_COLOR = 'var(--color-primary-default)'; const COLOR_MAP = { [TRANSACTION_GROUP_STATUSES.PENDING]: PENDING_COLOR, - [TRANSACTION_STATUSES.UNAPPROVED]: PENDING_COLOR, + [TRANSACTION_GROUP_STATUSES.CANCELLED]: FAIL_COLOR, [TRANSACTION_STATUSES.APPROVED]: PENDING_COLOR, + [TRANSACTION_STATUSES.DROPPED]: FAIL_COLOR, [TRANSACTION_STATUSES.FAILED]: FAIL_COLOR, [TRANSACTION_STATUSES.REJECTED]: FAIL_COLOR, - [TRANSACTION_GROUP_STATUSES.CANCELLED]: FAIL_COLOR, - [TRANSACTION_STATUSES.DROPPED]: FAIL_COLOR, [TRANSACTION_STATUSES.SUBMITTED]: PENDING_COLOR, + [TRANSACTION_STATUSES.UNAPPROVED]: PENDING_COLOR, }; export default function TransactionIcon({ status, category }) { @@ -58,22 +58,22 @@ export default function TransactionIcon({ status, category }) { TransactionIcon.propTypes = { status: PropTypes.oneOf([ + TRANSACTION_GROUP_STATUSES.CANCELLED, TRANSACTION_GROUP_STATUSES.PENDING, - TRANSACTION_STATUSES.UNAPPROVED, TRANSACTION_STATUSES.APPROVED, + TRANSACTION_STATUSES.CONFIRMED, + TRANSACTION_STATUSES.DROPPED, TRANSACTION_STATUSES.FAILED, TRANSACTION_STATUSES.REJECTED, - TRANSACTION_GROUP_STATUSES.CANCELLED, - TRANSACTION_STATUSES.DROPPED, - TRANSACTION_STATUSES.CONFIRMED, TRANSACTION_STATUSES.SUBMITTED, + TRANSACTION_STATUSES.UNAPPROVED, ]).isRequired, category: PropTypes.oneOf([ TRANSACTION_GROUP_CATEGORIES.APPROVAL, TRANSACTION_GROUP_CATEGORIES.INTERACTION, + TRANSACTION_GROUP_CATEGORIES.RECEIVE, TRANSACTION_GROUP_CATEGORIES.SEND, TRANSACTION_GROUP_CATEGORIES.SIGNATURE_REQUEST, - TRANSACTION_GROUP_CATEGORIES.RECEIVE, TRANSACTION_GROUP_CATEGORIES.SWAP, ]).isRequired, }; diff --git a/ui/components/app/transaction-list-item-details/index.scss b/ui/components/app/transaction-list-item-details/index.scss index 506b1bbdc..8501192e8 100644 --- a/ui/components/app/transaction-list-item-details/index.scss +++ b/ui/components/app/transaction-list-item-details/index.scss @@ -86,7 +86,8 @@ &-rounded-button { @include H8; - padding: 0 16px; + padding: 8px; + min-width: 75px; margin-right: 8px; } diff --git a/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.js b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.js index ed0a49113..331885364 100644 --- a/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.js +++ b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.js @@ -12,6 +12,7 @@ import Tooltip from '../../ui/tooltip'; import CancelButton from '../cancel-button'; import Popover from '../../ui/popover'; import { SECOND } from '../../../../shared/constants/time'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction'; import { getURLHostName } from '../../../helpers/utils/util'; import TransactionDecoding from '../transaction-decoding'; @@ -62,7 +63,7 @@ export default class TransactionListItemDetails extends PureComponent { ); this.context.trackEvent({ - category: 'Transactions', + category: EVENT.CATEGORIES.TRANSACTIONS, event: 'Clicked Block Explorer Link', properties: { link_type: 'Transaction Block Explorer', @@ -95,7 +96,7 @@ export default class TransactionListItemDetails extends PureComponent { const { hash } = transaction; this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Copied Transaction ID', properties: { action: 'Activity Log', @@ -227,7 +228,7 @@ export default class TransactionListItemDetails extends PureComponent { senderAddress={senderAddress} onRecipientClick={() => { this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Copied "To" Address', properties: { action: 'Activity Log', @@ -237,7 +238,7 @@ export default class TransactionListItemDetails extends PureComponent { }} onSenderClick={() => { this.context.trackEvent({ - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, event: 'Copied "From" Address', properties: { action: 'Activity Log', diff --git a/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js index 4164de3a3..18417627c 100644 --- a/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js +++ b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js @@ -6,6 +6,7 @@ import TransactionBreakdown from '../transaction-breakdown'; import TransactionActivityLog from '../transaction-activity-log'; import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction'; import { GAS_LIMITS } from '../../../../shared/constants/gas'; +import TransactionStatus from '../transaction-status/transaction-status.component'; import TransactionListItemDetails from './transaction-list-item-details.component'; describe('TransactionListItemDetails Component', () => { @@ -40,6 +41,7 @@ describe('TransactionListItemDetails Component', () => { transactionGroup={transactionGroup} senderNickname="sender-nickname" recipientNickname="recipient-nickname" + transactionStatus={TransactionStatus} />, { context: { t: (str1, str2) => (str2 ? str1 + str2 : str1) } }, ); @@ -86,6 +88,7 @@ describe('TransactionListItemDetails Component', () => { showSpeedUp senderNickname="sender-nickname" recipientNickname="recipient-nickname" + transactionStatus={TransactionStatus} />, { context: { t: (str1, str2) => (str2 ? str1 + str2 : str1) } }, ); @@ -127,6 +130,7 @@ describe('TransactionListItemDetails Component', () => { transactionGroup={transactionGroup} senderNickname="sender-nickname" recipientNickname="recipient-nickname" + transactionStatus={TransactionStatus} />, { context: { t: (str1, str2) => (str2 ? str1 + str2 : str1) } }, ); @@ -171,6 +175,7 @@ describe('TransactionListItemDetails Component', () => { transactionGroup={transactionGroup} senderNickname="sender-nickname" recipientNickname="recipient-nickname" + transactionStatus={TransactionStatus} />, { context: { t: (str1, str2) => (str2 ? str1 + str2 : str1) } }, ); diff --git a/ui/components/app/transaction-list-item/index.scss b/ui/components/app/transaction-list-item/index.scss index 69413b1e1..f523714bd 100644 --- a/ui/components/app/transaction-list-item/index.scss +++ b/ui/components/app/transaction-list-item/index.scss @@ -53,15 +53,9 @@ margin: 0 4px; } - &__origin, &__address { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } - - &__origin { - /*rtl:ignore*/ - direction: rtl; - } } diff --git a/ui/components/app/transaction-list-item/smart-transaction-list-item.component.js b/ui/components/app/transaction-list-item/smart-transaction-list-item.component.js index 26133341e..156b9d8ef 100644 --- a/ui/components/app/transaction-list-item/smart-transaction-list-item.component.js +++ b/ui/components/app/transaction-list-item/smart-transaction-list-item.component.js @@ -14,6 +14,7 @@ import { import CancelButton from '../cancel-button'; import { cancelSwapsSmartTransaction } from '../../../ducks/swaps/swaps'; +import SiteOrigin from '../../ui/site-origin'; export default function SmartTransactionListItem({ smartTransaction, @@ -60,9 +61,11 @@ export default function SmartTransactionListItem({ date={date} status={displayedStatusKey} /> - - {subtitle} - + } > diff --git a/ui/components/app/transaction-list-item/transaction-list-item.component.js b/ui/components/app/transaction-list-item/transaction-list-item.component.js index bdc58988c..867d236f9 100644 --- a/ui/components/app/transaction-list-item/transaction-list-item.component.js +++ b/ui/components/app/transaction-list-item/transaction-list-item.component.js @@ -13,6 +13,7 @@ import { CONFIRM_TRANSACTION_ROUTE } from '../../../helpers/constants/routes'; import { useShouldShowSpeedUp } from '../../../hooks/useShouldShowSpeedUp'; import TransactionStatus from '../transaction-status/transaction-status.component'; import TransactionIcon from '../transaction-icon'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { TRANSACTION_GROUP_CATEGORIES, TRANSACTION_STATUSES, @@ -38,6 +39,7 @@ import CancelSpeedupPopover from '../cancel-speedup-popover'; import EditGasFeePopover from '../edit-gas-fee-popover'; import EditGasPopover from '../edit-gas-popover'; import { MetaMetricsContext } from '../../../contexts/metametrics'; +import SiteOrigin from '../../ui/site-origin'; function TransactionListItemInner({ transactionGroup, @@ -67,7 +69,7 @@ function TransactionListItemInner({ event.stopPropagation(); trackEvent({ event: 'Clicked "Speed Up"', - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, properties: { action: 'Activity Log', legacy_event: true, @@ -88,7 +90,7 @@ function TransactionListItemInner({ event.stopPropagation(); trackEvent({ event: 'Clicked "Cancel"', - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, properties: { action: 'Activity Log', legacy_event: true, @@ -190,16 +192,13 @@ function TransactionListItemInner({ date={date} status={displayedStatusKey} /> - - {subtitle} - + {subtitleContainsOrigin ? ( + + ) : ( + + {subtitle} + + )} } rightContent={ diff --git a/ui/components/app/transaction-status/index.scss b/ui/components/app/transaction-status/index.scss index 55c22472c..6212c0849 100644 --- a/ui/components/app/transaction-status/index.scss +++ b/ui/components/app/transaction-status/index.scss @@ -14,7 +14,7 @@ &--unapproved, &--pending { - color: var(--color-secondary-default); + color: var(--color-warning-default); } &--queued { diff --git a/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js b/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js index c2beced07..6dc94607f 100644 --- a/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js +++ b/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js @@ -67,5 +67,5 @@ UserPreferencedCurrencyDisplay.propTypes = { PropTypes.string, PropTypes.number, ]), - showFiat: PropTypes.boolean, + showFiat: PropTypes.bool, }; diff --git a/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js b/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js index ed2a56fab..6c73d7576 100644 --- a/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js +++ b/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js @@ -4,7 +4,7 @@ import sinon from 'sinon'; import CurrencyDisplay from '../../ui/currency-display'; import * as currencyHook from '../../../hooks/useCurrencyDisplay'; import * as currencyPrefHook from '../../../hooks/useUserPreferencedCurrency'; -import UserPreferencedCurrencyDisplay from './user-preferenced-currency-display.component'; +import UserPreferencedCurrencyDisplay from '.'; describe('UserPreferencedCurrencyDisplay Component', () => { describe('rendering', () => { diff --git a/ui/components/app/wallet-overview/eth-overview.js b/ui/components/app/wallet-overview/eth-overview.js index cf5073bf1..de3339b3e 100644 --- a/ui/components/app/wallet-overview/eth-overview.js +++ b/ui/components/app/wallet-overview/eth-overview.js @@ -31,6 +31,7 @@ import { setSwapsFromToken } from '../../../ducks/swaps/swaps'; import IconButton from '../../ui/icon-button'; import { isHardwareKeyring } from '../../../helpers/utils/hardware'; import { MetaMetricsContext } from '../../../contexts/metametrics'; +import { EVENT } from '../../../../shared/constants/metametrics'; import WalletOverview from './wallet-overview'; const EthOverview = ({ className }) => { @@ -99,7 +100,7 @@ const EthOverview = ({ className }) => { onClick={() => { trackEvent({ event: 'Clicked Deposit', - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, properties: { action: 'Home', legacy_event: true, @@ -116,7 +117,7 @@ const EthOverview = ({ className }) => { onClick={() => { trackEvent({ event: 'Clicked Send: Eth', - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, properties: { action: 'Home', legacy_event: true, @@ -133,9 +134,9 @@ const EthOverview = ({ className }) => { if (isSwapsChain) { trackEvent({ event: 'Swaps Opened', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, properties: { - source: 'Main View', + source: EVENT.SOURCE.SWAPS.MAIN_VIEW, active_currency: 'ETH', }, }); diff --git a/ui/components/app/wallet-overview/index.scss b/ui/components/app/wallet-overview/index.scss index 19a4db1a2..16526b518 100644 --- a/ui/components/app/wallet-overview/index.scss +++ b/ui/components/app/wallet-overview/index.scss @@ -67,7 +67,7 @@ &__cached-balance, &__cached-star { - color: var(--color-secondary-default); + color: var(--color-warning-default); } &__cached-secondary-balance { @@ -79,7 +79,7 @@ &__secondary-balance { @include Paragraph; - color: var(--color-text-muted); + color: var(--color-text-alternative); } &__button { @@ -125,7 +125,7 @@ &__secondary-balance { @include H5; - color: var(--color-text-muted); + color: var(--color-text-alternative); } &__button { diff --git a/ui/components/app/wallet-overview/token-overview.js b/ui/components/app/wallet-overview/token-overview.js index fc2caa1b7..23d8997d8 100644 --- a/ui/components/app/wallet-overview/token-overview.js +++ b/ui/components/app/wallet-overview/token-overview.js @@ -28,6 +28,7 @@ import IconButton from '../../ui/icon-button'; import { INVALID_ASSET_TYPE } from '../../../helpers/constants/error-keys'; import { showModal } from '../../../store/actions'; import { MetaMetricsContext } from '../../../contexts/metametrics'; +import { EVENT } from '../../../../shared/constants/metametrics'; import { ASSET_TYPES } from '../../../../shared/constants/transaction'; import WalletOverview from './wallet-overview'; @@ -84,7 +85,7 @@ const TokenOverview = ({ className, token }) => { onClick={async () => { trackEvent({ event: 'Clicked Send: Token', - category: 'Navigation', + category: EVENT.CATEGORIES.NAVIGATION, properties: { action: 'Home', legacy_event: true, @@ -117,9 +118,9 @@ const TokenOverview = ({ className, token }) => { if (isSwapsChain) { trackEvent({ event: 'Swaps Opened', - category: 'swaps', + category: EVENT.CATEGORIES.SWAPS, properties: { - source: 'Token View', + source: EVENT.SOURCE.SWAPS.TOKEN_VIEW, active_currency: token.symbol, }, }); diff --git a/ui/components/app/whats-new-popup/whats-new-popup.js b/ui/components/app/whats-new-popup/whats-new-popup.js index bba492040..59b171102 100644 --- a/ui/components/app/whats-new-popup/whats-new-popup.js +++ b/ui/components/app/whats-new-popup/whats-new-popup.js @@ -11,10 +11,11 @@ import Popover from '../../ui/popover'; import Typography from '../../ui/typography'; import { updateViewedNotifications } from '../../../store/actions'; import { getTranslatedUINoficiations } from '../../../../shared/notifications'; -import { getSortedNotificationsToShow } from '../../../selectors'; +import { getSortedAnnouncementsToShow } from '../../../selectors'; import { BUILD_QUOTE_ROUTE, ADVANCED_ROUTE, + EXPERIMENTAL_ROUTE, } from '../../../helpers/constants/routes'; import { TYPOGRAPHY } from '../../../helpers/constants/design-system'; @@ -49,6 +50,10 @@ function getActionFunctionById(id, history) { updateViewedNotifications({ 10: true }); history.push(`${ADVANCED_ROUTE}#token-description`); }, + 12: () => { + updateViewedNotifications({ 12: true }); + history.push(EXPERIMENTAL_ROUTE); + }, }; return actionFunctions[id]; @@ -167,7 +172,7 @@ export default function WhatsNewPopup({ onClose }) { const t = useContext(I18nContext); const history = useHistory(); - const notifications = useSelector(getSortedNotificationsToShow); + const notifications = useSelector(getSortedAnnouncementsToShow); const locale = useSelector(getCurrentLocale); const [seenNotifications, setSeenNotifications] = useState({}); diff --git a/ui/components/ui/currency-display/index.scss b/ui/components/ui/currency-display/index.scss index 8f9ebf301..933554b0d 100644 --- a/ui/components/ui/currency-display/index.scss +++ b/ui/components/ui/currency-display/index.scss @@ -1,6 +1,7 @@ .currency-display-component { display: flex; align-items: center; + flex-wrap: wrap; &__text { /*rtl:ignore*/ diff --git a/ui/components/ui/dropdown/dropdown.scss b/ui/components/ui/dropdown/dropdown.scss index 7311bbac0..11d50976b 100644 --- a/ui/components/ui/dropdown/dropdown.scss +++ b/ui/components/ui/dropdown/dropdown.scss @@ -1,6 +1,7 @@ .dropdown { position: relative; display: inline-block; + height: 36px; &__select { appearance: none; diff --git a/ui/components/ui/form-field/form-field.stories.js b/ui/components/ui/form-field/form-field.stories.js index 0c7d0c36f..230ea0036 100644 --- a/ui/components/ui/form-field/form-field.stories.js +++ b/ui/components/ui/form-field/form-field.stories.js @@ -57,7 +57,7 @@ export const FormFieldWithTitleDetail = (args) => {