From e78d479956a91633399e7eeaa7fce2e4857e006c Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Fri, 15 Nov 2024 21:25:28 +0000 Subject: [PATCH 001/111] Version v12.8.0 --- CHANGELOG.md | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 201 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e849728f7781..24d8c7f0683d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,204 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [12.8.0] +### Uncategorized +- chore: Master sync ([#28459](https://github.com/MetaMask/metamask-extension/pull/28459)) +- Merge origin/develop into master-sync +- feat: Upgrade assets controllers to 43 with multichain polling for token lists + detection ([#28447](https://github.com/MetaMask/metamask-extension/pull/28447)) +- Version v12.7.0 RC ([#28235](https://github.com/MetaMask/metamask-extension/pull/28235)) +- fix: display btc account creation while in settings ([#28379](https://github.com/MetaMask/metamask-extension/pull/28379)) +- fix: Fix race condition validating ERC20 transfer (blockaid) ([#28487](https://github.com/MetaMask/metamask-extension/pull/28487)) +- chore: fix test path on CI ([#28482](https://github.com/MetaMask/metamask-extension/pull/28482)) +- chore: Fix flaky ERC20 transfer blockaid e2e ([#28453](https://github.com/MetaMask/metamask-extension/pull/28453)) +- test: [POM] Migrate vault decryption e2e tests to TS and Page Object Model ([#28419](https://github.com/MetaMask/metamask-extension/pull/28419)) +- feat: UI changes to show decoding data for permits ([#28342](https://github.com/MetaMask/metamask-extension/pull/28342)) +- chore: V12.7.0 changelog ([#28458](https://github.com/MetaMask/metamask-extension/pull/28458)) +- chore: Merge master (as of v12.6.1) into v12.7.0 ([#28468](https://github.com/MetaMask/metamask-extension/pull/28468)) +- fix: dont poll token prices during onboarding or when locked ([#28465](https://github.com/MetaMask/metamask-extension/pull/28465)) +- Fixed lint +- fix: Allow outerclick to close import modal ([#28448](https://github.com/MetaMask/metamask-extension/pull/28448)) +- Merge remote-tracking branch 'origin/master' into resolve-conflicts-v12.7.0-master +- fix (cherry-pick): add simulation metrics when simulation UI is not visible (#28427) ([#28427](https://github.com/MetaMask/metamask-extension/pull/28427)) +- fix: ui customizations for redesigned transactions (#28443) ([#28443](https://github.com/MetaMask/metamask-extension/pull/28443)) +- feat: add simulation metrics when simulation UI is not visible ([#28427](https://github.com/MetaMask/metamask-extension/pull/28427)) +- fix: Fix attribution generation ([#28415](https://github.com/MetaMask/metamask-extension/pull/28415)) +- test: Improve test for signatures ([#27532](https://github.com/MetaMask/metamask-extension/pull/27532)) +- fix: ui customizations for redesigned transactions ([#28443](https://github.com/MetaMask/metamask-extension/pull/28443)) +- fix: Remove multiple overlapping spinners ([#28301](https://github.com/MetaMask/metamask-extension/pull/28301)) +- fix: Hide "interacting with" when simulated balance changes are shown ([#28409](https://github.com/MetaMask/metamask-extension/pull/28409)) +- chore: Begin introducing patterns for Multichain AssetList ([#28429](https://github.com/MetaMask/metamask-extension/pull/28429)) +- feat: update signature controller and integrate decoding api ([#28397](https://github.com/MetaMask/metamask-extension/pull/28397)) +- fix: Update PortfolioView flag ([#28446](https://github.com/MetaMask/metamask-extension/pull/28446)) +- perf: Create custom spans for account overview tabs ([#28086](https://github.com/MetaMask/metamask-extension/pull/28086)) +- fix: fix network client ID used on the useGasFeeInputs hook (#28391) ([#28391](https://github.com/MetaMask/metamask-extension/pull/28391)) +- fix (cherry-pick): get `supportedChains` to avoid blocking the confirmation process ([#28422](https://github.com/MetaMask/metamask-extension/pull/28422)) +- fix: Default to dApp suggested fees only when user selects the option ([#28403](https://github.com/MetaMask/metamask-extension/pull/28403)) +- feat: btc send flow e2e ([#28340](https://github.com/MetaMask/metamask-extension/pull/28340)) +- test: fix state fixtures race condition ([#28421](https://github.com/MetaMask/metamask-extension/pull/28421)) +- test: [POM] Migrate autodetect and import nft e2e tests to use Page Object Model ([#28383](https://github.com/MetaMask/metamask-extension/pull/28383)) +- chore(deps): bump `@metamask/eth-ledger-bridge-keyring` to `^5.0.1` ([#27688](https://github.com/MetaMask/metamask-extension/pull/27688)) +- chore: limit bridge quote request frequency and cancel requests ([#27237](https://github.com/MetaMask/metamask-extension/pull/27237)) +- test: Reintegrate refactored Swap e2e tests to the pipeline ([#26493](https://github.com/MetaMask/metamask-extension/pull/26493)) +- fix: fix network client ID used on the useGasFeeInputs hook ([#28391](https://github.com/MetaMask/metamask-extension/pull/28391)) +- ci: Fix `attributions:check` silent failure ([#28413](https://github.com/MetaMask/metamask-extension/pull/28413)) +- fix: `Test Snap Cronjob can trigger a cronjob to open a di...` flaky tests ([#28363](https://github.com/MetaMask/metamask-extension/pull/28363)) +- feat: add `account_type`/`snap_id` for buy/send metrics ([#28011](https://github.com/MetaMask/metamask-extension/pull/28011)) +- fix: get `supportedChains` to avoid blocking the confirmation process ([#28313](https://github.com/MetaMask/metamask-extension/pull/28313)) +- test: [POM] Migrate reveal account srp e2e tests to use Page Object Model ([#28354](https://github.com/MetaMask/metamask-extension/pull/28354)) +- fix: Add metric trait for privacy mode ([#28335](https://github.com/MetaMask/metamask-extension/pull/28335)) +- fix: Properly ellipsize long token names ([#28392](https://github.com/MetaMask/metamask-extension/pull/28392)) +- fix(snaps): Patch `@metamask/snaps-utils` ([#28377](https://github.com/MetaMask/metamask-extension/pull/28377)) +- fix: cherry-pick: Return to send page with different asset types ([#28384](https://github.com/MetaMask/metamask-extension/pull/28384)) +- chore: Bump snaps-utils ([#28399](https://github.com/MetaMask/metamask-extension/pull/28399)) +- feat: migrate MetaMetricsController to BaseControllerV2 ([#28113](https://github.com/MetaMask/metamask-extension/pull/28113)) +- feat: change expand icon per new design ([#28267](https://github.com/MetaMask/metamask-extension/pull/28267)) +- chore: add unit test for `useMultiPolling` ([#28387](https://github.com/MetaMask/metamask-extension/pull/28387)) +- feat(Solana): add "Add a new Solana account" link to the account creation dialog ([#28270](https://github.com/MetaMask/metamask-extension/pull/28270)) +- fix: Return to send page with different asset types ([#28382](https://github.com/MetaMask/metamask-extension/pull/28382)) +- cherry-pick: bump `@metamask/queued-request-controller` with patch fix (#28355) ([#28355](https://github.com/MetaMask/metamask-extension/pull/28355)) +- test: [POM] Refactor import account e2e tests to use Page Object Model ([#28325](https://github.com/MetaMask/metamask-extension/pull/28325)) +- feat(1852): Implement sentry user report on error screen ([#27857](https://github.com/MetaMask/metamask-extension/pull/27857)) +- fix: disable buy for btc testnet accounts ([#28341](https://github.com/MetaMask/metamask-extension/pull/28341)) +- fix: Address design review for ERC20 token send ([#28212](https://github.com/MetaMask/metamask-extension/pull/28212)) +- refactor: remove global network usage from transaction confirmations ([#28236](https://github.com/MetaMask/metamask-extension/pull/28236)) +- build: update yarn to v4.5.1 ([#28365](https://github.com/MetaMask/metamask-extension/pull/28365)) +- fix: Bug 28347 - Privacy mode tweaks (#28367) ([#28367](https://github.com/MetaMask/metamask-extension/pull/28367)) +- fix: Bug 28347 - Privacy mode tweaks ([#28367](https://github.com/MetaMask/metamask-extension/pull/28367)) +- fix: mv2 firefox csp header ([#27770](https://github.com/MetaMask/metamask-extension/pull/27770)) +- perf: ensure `setupLocale` doesn't fetch `_locales/en/messages.json` twice ([#26553](https://github.com/MetaMask/metamask-extension/pull/26553)) +- fix: bump `@metamask/queued-request-controller` with patch fix ([#28355](https://github.com/MetaMask/metamask-extension/pull/28355)) +- fix (Cherrypick v12.7.0 ): disable account syncing ([#28361](https://github.com/MetaMask/metamask-extension/pull/28361)) +- fix: Revert "fix: Negate privacy mode in Send screen" ([#28360](https://github.com/MetaMask/metamask-extension/pull/28360)) +- fix: disable account syncing ([#28359](https://github.com/MetaMask/metamask-extension/pull/28359)) +- Cherrypick v12.7.0 feat: Add simulation metrics to "Transaction Submitted" and "Transaction Finalized" events ([#28314](https://github.com/MetaMask/metamask-extension/pull/28314)) +- feat: Convert mmi controller to a non-controller ([#27983](https://github.com/MetaMask/metamask-extension/pull/27983)) +- Cherrypick v12.7.0 feat: Enable simulation metrics for redesign transactions ([#28324](https://github.com/MetaMask/metamask-extension/pull/28324)) +- cherry pick: chore: add the gas_included prop into Quotes Received event ([#28351](https://github.com/MetaMask/metamask-extension/pull/28351)) +- cherry pick: fix: smart transactions in redesigned confirmations ([#28353](https://github.com/MetaMask/metamask-extension/pull/28353)) +- fix: Updates to the simulations component ([#28107](https://github.com/MetaMask/metamask-extension/pull/28107)) +- refactor: rename SECURITY_PROVIDER_SUPPORTED_CHAIN_IDS_FALLBACK_LIST ([#28337](https://github.com/MetaMask/metamask-extension/pull/28337)) +- chore: adds Solana snap to preinstall list ([#28141](https://github.com/MetaMask/metamask-extension/pull/28141)) +- feat: Show network badge in detected tokens modal ([#28231](https://github.com/MetaMask/metamask-extension/pull/28231)) +- fix: Negate privacy mode in Send screen ([#28248](https://github.com/MetaMask/metamask-extension/pull/28248)) +- feat: adds solana feature, code fence ([#28320](https://github.com/MetaMask/metamask-extension/pull/28320)) +- build(webpack): fix cache issues in webpack build by updating `html-bundler-webpack-plugin` to v4.4.1 ([#28225](https://github.com/MetaMask/metamask-extension/pull/28225)) +- feat: team-label-token ([#28134](https://github.com/MetaMask/metamask-extension/pull/28134)) +- chore: add Solana shared utilities and constants ([#28269](https://github.com/MetaMask/metamask-extension/pull/28269)) +- chore: Remove STX opt in modal ([#28291](https://github.com/MetaMask/metamask-extension/pull/28291)) +- chore: revert commit `3da34f4` (feat: btc e2e tests (#27986)) ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) +- chore: e2e quality gate enhancement ([#28206](https://github.com/MetaMask/metamask-extension/pull/28206)) +- chore: adding e2e tests for NFT permit ([#28004](https://github.com/MetaMask/metamask-extension/pull/28004)) +- feat: Enable simulation metrics for redesign transactions ([#28280](https://github.com/MetaMask/metamask-extension/pull/28280)) +- fix: GasDetailItem invalid paddingStart prop ([#28281](https://github.com/MetaMask/metamask-extension/pull/28281)) +- fix: use transaction address to get lock for custom nonce ([#28272](https://github.com/MetaMask/metamask-extension/pull/28272)) +- fix: flaky test `Phishing Detection Via Iframe should redirect users to the the MetaMask Phishing Detection page when an iframe domain is on the phishing blocklist` ([#28293](https://github.com/MetaMask/metamask-extension/pull/28293)) +- chore: add the gas_included prop into Quotes Requested event ([#28295](https://github.com/MetaMask/metamask-extension/pull/28295)) +- test: [POM] Refactor e2e tests to use onboarding flows defined in Page Object Models ([#28202](https://github.com/MetaMask/metamask-extension/pull/28202)) +- feat: btc e2e tests ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) +- fix: remove scroll-to-bottom requirement in redesigned transaction confirmations ([#27910](https://github.com/MetaMask/metamask-extension/pull/27910)) +- chore: Add gravity logo and image mappings ([#28306](https://github.com/MetaMask/metamask-extension/pull/28306)) +- chore: Bump Snaps packages ([#28215](https://github.com/MetaMask/metamask-extension/pull/28215)) +- feat: Add simulation metrics to "Transaction Submitted" and "Transaction Finalized" events ([#28240](https://github.com/MetaMask/metamask-extension/pull/28240)) +- fix: smart transactions in redesigned confirmations ([#28273](https://github.com/MetaMask/metamask-extension/pull/28273)) +- fix: unit flaky test `AddContact component › should disable submit button when input is not a valid address` ([#27941](https://github.com/MetaMask/metamask-extension/pull/27941)) +- fix: Hide fiat values on test networks ([#28219](https://github.com/MetaMask/metamask-extension/pull/28219)) +- chore: display bridge quotes ([#28031](https://github.com/MetaMask/metamask-extension/pull/28031)) +- fix: Permit message, dataTree value incorrectly using default ERC20 decimals for non-ERC20 token values ([#28142](https://github.com/MetaMask/metamask-extension/pull/28142)) +- fix: ignore error when getTokenStandardAndDetails fails ([#28030](https://github.com/MetaMask/metamask-extension/pull/28030)) +- fix: notification settings type ([#28271](https://github.com/MetaMask/metamask-extension/pull/28271)) +- chore: use accounts api for token detection ([#28254](https://github.com/MetaMask/metamask-extension/pull/28254)) +- fix: Fix alignment of long RPC labels in Networks menu ([#28244](https://github.com/MetaMask/metamask-extension/pull/28244)) +- feat: adds the experimental toggle for Solana ([#28190](https://github.com/MetaMask/metamask-extension/pull/28190)) +- feat: multi chain polling for token prices ([#28158](https://github.com/MetaMask/metamask-extension/pull/28158)) +- refactor: move `getInternalAccounts` from `selectors.js` to `accounts.ts` ([#27645](https://github.com/MetaMask/metamask-extension/pull/27645)) +- fix: Add different copy for tooltip when a snap is requesting a signature ([#27492](https://github.com/MetaMask/metamask-extension/pull/27492)) +- fix: Prevent coercing symbols to zero in the edit spending cap modal ([#28192](https://github.com/MetaMask/metamask-extension/pull/28192)) +- test: [POM] Migrate edit network rpc e2e tests and create related page class functions ([#28161](https://github.com/MetaMask/metamask-extension/pull/28161)) +- refactor: remove global network usage from signatures ([#28167](https://github.com/MetaMask/metamask-extension/pull/28167)) +- fix: margin on asset chart min/max indicators ([#27916](https://github.com/MetaMask/metamask-extension/pull/27916)) +- feat: add token verification source count and link to block explorer ([#27759](https://github.com/MetaMask/metamask-extension/pull/27759)) +- chore: Remove obsolete preview build support ([#27968](https://github.com/MetaMask/metamask-extension/pull/27968)) +- fix: Removing `warning` prop from settings ([#27990](https://github.com/MetaMask/metamask-extension/pull/27990)) +- chore: Adding installType to Sentry Tags for easy filtering ([#28084](https://github.com/MetaMask/metamask-extension/pull/28084)) +- chore: remove broken link in docs ([#28232](https://github.com/MetaMask/metamask-extension/pull/28232)) +- fix: Error handling for the state log download failure ([#26999](https://github.com/MetaMask/metamask-extension/pull/26999)) +- feat: Upgrade alert controller to base controller v2 ([#28054](https://github.com/MetaMask/metamask-extension/pull/28054)) +- chore: improve token lookup performance in `useAccountTotalFiatBalance` ([#28233](https://github.com/MetaMask/metamask-extension/pull/28233)) +- chore: Modify changelog title to fix ci job ([#28237](https://github.com/MetaMask/metamask-extension/pull/28237)) +- Version v12.7.0 +- chore: Master sync ([#28222](https://github.com/MetaMask/metamask-extension/pull/28222)) +- Merge origin/develop into master-sync +- refactor: move `getSelectedInternalAccount` from `selectors.js` to `accounts.ts` ([#27644](https://github.com/MetaMask/metamask-extension/pull/27644)) +- feat: Improve provider method metrics for add/switch chain ([#28214](https://github.com/MetaMask/metamask-extension/pull/28214)) +- fix: Fix left-aligned fullscreen UI ([#28218](https://github.com/MetaMask/metamask-extension/pull/28218)) +- test: add ui render for debug ui integration tests ([#27621](https://github.com/MetaMask/metamask-extension/pull/27621)) +- feat: poll native currency prices across chains ([#28196](https://github.com/MetaMask/metamask-extension/pull/28196)) +- test: Fix data deletion e2e tests ([#28221](https://github.com/MetaMask/metamask-extension/pull/28221)) +- chore: Add a new transaction event prop ([#28153](https://github.com/MetaMask/metamask-extension/pull/28153)) +- feat: Copy updates to satisfy UK regulation requirements ([#28157](https://github.com/MetaMask/metamask-extension/pull/28157)) +- fix: flaky test `BTC Account - Overview has balance` ([#28181](https://github.com/MetaMask/metamask-extension/pull/28181)) +- chore: poll for bridge quotes ([#28029](https://github.com/MetaMask/metamask-extension/pull/28029)) +- chore: update confirmations code ownership ([#27862](https://github.com/MetaMask/metamask-extension/pull/27862)) +- feat(snaps): Add `useDisplayName` hook ([#27868](https://github.com/MetaMask/metamask-extension/pull/27868)) +- chore: upgrade signature controller to remove global network ([#28063](https://github.com/MetaMask/metamask-extension/pull/28063)) +- chore: update bridge quote request on input change ([#28028](https://github.com/MetaMask/metamask-extension/pull/28028)) +- chore: bump asset controllers to 39 + polling API ([#28025](https://github.com/MetaMask/metamask-extension/pull/28025)) +- fix: incorrect standard swap gas fee estimation ([#28127](https://github.com/MetaMask/metamask-extension/pull/28127)) +- feat: Capture 3 existing properties within non-anonymous transaction … ([#28144](https://github.com/MetaMask/metamask-extension/pull/28144)) +- refactor: remove global network usage from transaction simulation ([#27895](https://github.com/MetaMask/metamask-extension/pull/27895)) +- test(ramps): fixes btc native token test ([#27601](https://github.com/MetaMask/metamask-extension/pull/27601)) +- refactor: clean up profile sync hooks ([#28132](https://github.com/MetaMask/metamask-extension/pull/28132)) +- chore: ignore warning for ethereumjs-wallet ([#28145](https://github.com/MetaMask/metamask-extension/pull/28145)) +- test: [Snaps E2E] Unified methods and clean up snaps e2e tests ([#27684](https://github.com/MetaMask/metamask-extension/pull/27684)) +- chore: update @metamask/bitcoin-wallet-snap to 0.8.2 ([#28135](https://github.com/MetaMask/metamask-extension/pull/28135)) +- chore: small storybook and docs updates to SensitiveText component ([#28089](https://github.com/MetaMask/metamask-extension/pull/28089)) +- chore: bridge-api fetchBridgeQuotes util ([#28027](https://github.com/MetaMask/metamask-extension/pull/28027)) +- feat: update phishing controller version ([#28131](https://github.com/MetaMask/metamask-extension/pull/28131)) +- fix: broken not existing type file import ([#28055](https://github.com/MetaMask/metamask-extension/pull/28055)) +- test: blockaid update version and reenable specs ([#28121](https://github.com/MetaMask/metamask-extension/pull/28121)) +- test: [POM] Migrate onboarding infura call privacy e2e tests ([#28079](https://github.com/MetaMask/metamask-extension/pull/28079)) +- feat: share the same user storage mock instance in tests ([#28119](https://github.com/MetaMask/metamask-extension/pull/28119)) +- chore: Using button icon component for clikable icons ([#28082](https://github.com/MetaMask/metamask-extension/pull/28082)) +- feat: convert MetaMetricsController to typescript ([#28072](https://github.com/MetaMask/metamask-extension/pull/28072)) +- feat: improved way to trigger mmi e2e tests ([#27932](https://github.com/MetaMask/metamask-extension/pull/27932)) +- test: allow more simple findElement by data-testid ([#28065](https://github.com/MetaMask/metamask-extension/pull/28065)) +- fix: json-rpc-middleware-stream@^5 -> @metamask/json-rpc-middleware-stream@^8 ([#28060](https://github.com/MetaMask/metamask-extension/pull/28060)) +- fix(devDeps): babel@7.23.2->7.25.9 ([#28068](https://github.com/MetaMask/metamask-extension/pull/28068)) +- feat: better storybook stories for the notification pages ([#27861](https://github.com/MetaMask/metamask-extension/pull/27861)) +- fix: update storybook to support NFT images ([#28105](https://github.com/MetaMask/metamask-extension/pull/28105)) +- fix: broken test `Vault Decryptor Page is able to decrypt the vault uploading the log file in the vault-decryptor webapp` ([#28098](https://github.com/MetaMask/metamask-extension/pull/28098)) +- test: Complete missing step for add a contact to the address book in existing E2E test ([#27959](https://github.com/MetaMask/metamask-extension/pull/27959)) +- feat(3419): sensitive text component ([#28056](https://github.com/MetaMask/metamask-extension/pull/28056)) +- test: Added e2e for switch network ([#27967](https://github.com/MetaMask/metamask-extension/pull/27967)) +- fix: c2 bypass ([#28057](https://github.com/MetaMask/metamask-extension/pull/28057)) +- test: NOTIFY-1256 - Extending E2E tests for Account Sync ([#28067](https://github.com/MetaMask/metamask-extension/pull/28067)) +- test: notifications integration tests ([#28022](https://github.com/MetaMask/metamask-extension/pull/28022)) +- chore: update stories for name component ([#28049](https://github.com/MetaMask/metamask-extension/pull/28049)) +- fix: flaky anti-pattern getText + assert 3 ([#28062](https://github.com/MetaMask/metamask-extension/pull/28062)) +- test: [POM] Create onboarding related page object modal base pages and migrate e2e tests ([#28036](https://github.com/MetaMask/metamask-extension/pull/28036)) +- docs: update debugging sentry step 3 ([#28034](https://github.com/MetaMask/metamask-extension/pull/28034)) +- fix: Support dynamic native token name on gas component ([#28048](https://github.com/MetaMask/metamask-extension/pull/28048)) +- fix: Fall back to token list for the token symbol ([#28003](https://github.com/MetaMask/metamask-extension/pull/28003)) +- fix: flaky anti-pattern getText + assert 2 ([#28043](https://github.com/MetaMask/metamask-extension/pull/28043)) +- fix(deps): @metamask/eth-json-rpc-filters@^8.0.0->^9.0.0 ([#27956](https://github.com/MetaMask/metamask-extension/pull/27956)) +- chore: Bump gridplus-sdk to 2.7.1 ([#28008](https://github.com/MetaMask/metamask-extension/pull/28008)) +- fix(deps): @keystonehq/metamask-airgapped-keyring@^0.13.1->^0.14.1 ([#27952](https://github.com/MetaMask/metamask-extension/pull/27952)) +- refactor: use `reselect`'s `createSelector` instead of going through `@redux/toolkit`, as the import names collide when trying to merge files. ([#27643](https://github.com/MetaMask/metamask-extension/pull/27643)) +- fix: storybook `getManifest` issue ([#28010](https://github.com/MetaMask/metamask-extension/pull/28010)) +- feat: bump @metamask/notification-services-controller from 0.7.0 to 0.11.0 ([#28017](https://github.com/MetaMask/metamask-extension/pull/28017)) +- refactor: remove global network usage from petnames ([#27946](https://github.com/MetaMask/metamask-extension/pull/27946)) +- chore: updated package ([#28002](https://github.com/MetaMask/metamask-extension/pull/28002)) +- feat(NOTIFY-1245): add account syncing E2E helpers & basic tests ([#28005](https://github.com/MetaMask/metamask-extension/pull/28005)) +- fix: Fix stream re-initialization ([#28024](https://github.com/MetaMask/metamask-extension/pull/28024)) +- refactor: routes.component.js and creation of ToastMaster ([#27735](https://github.com/MetaMask/metamask-extension/pull/27735)) +- fix: @metamask/eth-json-rpc-filters@^7.0.0->^8.0.0 ([#27917](https://github.com/MetaMask/metamask-extension/pull/27917)) +- refactor: remove relative imports to `selectors/index.js` from other selectors files ([#27642](https://github.com/MetaMask/metamask-extension/pull/27642)) +- refactor: remove circular dependency between `ui/ducks/custom-gas.js` and `ui/selectors/index.js` ([#27640](https://github.com/MetaMask/metamask-extension/pull/27640)) +- test: update notification date tests to be timezone agnostic ([#27925](https://github.com/MetaMask/metamask-extension/pull/27925)) +- fix: updated event name for site cell component ([#27981](https://github.com/MetaMask/metamask-extension/pull/27981)) +- fix(deps): gridplus-sdk@2.5.1->~2.6.0 ([#27973](https://github.com/MetaMask/metamask-extension/pull/27973)) + ## [12.7.0] ### Added - Added Token Network Filter UI, allowing users to filter tokens by network (behind a feature flag) ([#27884](https://github.com/MetaMask/metamask-extension/pull/27884)) @@ -5343,7 +5541,8 @@ Update styles and spacing on the critical error page ([#20350](https://github.c - Added the ability to restore accounts from seed words. -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.7.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.8.0...HEAD +[12.8.0]: https://github.com/MetaMask/metamask-extension/compare/v12.7.0...v12.8.0 [12.7.0]: https://github.com/MetaMask/metamask-extension/compare/v12.6.1...v12.7.0 [12.6.1]: https://github.com/MetaMask/metamask-extension/compare/v12.6.0...v12.6.1 [12.6.0]: https://github.com/MetaMask/metamask-extension/compare/v12.5.1...v12.6.0 diff --git a/package.json b/package.json index ae2ebbd338a9..eb22bd32b4c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask-crx", - "version": "12.7.0", + "version": "12.8.0", "private": true, "repository": { "type": "git", From 5fa1028ab6ef6052c248b241b5108eab9755e406 Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Fri, 15 Nov 2024 23:30:05 +0000 Subject: [PATCH 002/111] Update Attributions --- attribution.txt | 11018 ++++++++++++++++++++++------------------------ 1 file changed, 5344 insertions(+), 5674 deletions(-) diff --git a/attribution.txt b/attribution.txt index 364128f620f3..dd0a941aadd8 100644 --- a/attribution.txt +++ b/attribution.txt @@ -50,6 +50,61 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@adraffy/ens-normalize +1.10.1 +MIT License + +Copyright (c) 2021 Andrew Raffensperger + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +aes-js +3.0.0 +The MIT License (MIT) + +Copyright (c) 2015 Richard Moore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + ****************************** aes-js @@ -78,6 +133,34 @@ THE SOFTWARE. +****************************** + +aes-js +4.0.0-beta.5 +The MIT License (MIT) + +Copyright (c) 2022 Richard Moore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + ****************************** agent-base @@ -337,21 +420,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -ansi-regex -6.0.1 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** ansi-styles @@ -382,54 +450,14 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -ansi-styles -6.2.1 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -any-promise -1.3.0 -Copyright (C) 2014-2016 Kevin Beaty - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** apg-js -4.1.1 +4.4.0 ## [2-Clause BSD License](https://opensource.org/licenses/BSD-2-Clause)

-Copyright (c) 2021 Lowell D. Thomas
+Copyright (c) 2024 Lowell D. Thomas
All rights reserved. Redistribution and use in source and binary forms, with or without @@ -459,7 +487,7 @@ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** array-buffer-byte-length -1.0.0 +1.0.1 MIT License Copyright (c) 2023 Inspect JS @@ -534,33 +562,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -async-mutex -0.2.6 -The MIT License (MIT) - -Copyright (c) 2016 Christian Speckner - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** async-mutex @@ -618,7 +619,7 @@ THE SOFTWARE. ****************************** available-typed-arrays -1.0.5 +1.0.7 MIT License Copyright (c) 2020 Inspect JS @@ -672,14 +673,26 @@ SOFTWARE. ****************************** axios -1.6.8 -# Copyright (c) 2014-present Matt Zabriskie & Collaborators +0.28.1 +Copyright (c) 2014-present Matt Zabriskie -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** @@ -706,7 +719,7 @@ PERFORMANCE OF THIS SOFTWARE. ****************************** @babel/code-frame -7.10.4 +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -733,8 +746,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/code-frame -7.24.2 +@babel/compat-data +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -761,8 +774,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/compat-data -7.23.2 +@babel/core +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -789,8 +802,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/core -7.23.2 +@babel/generator +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -817,8 +830,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/generator -7.24.5 +@babel/helper-annotate-as-pure +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -845,8 +858,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-annotate-as-pure -7.22.5 +@babel/helper-compilation-targets +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -873,8 +886,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-compilation-targets -7.22.15 +@babel/helper-create-class-features-plugin +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -901,8 +914,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-create-class-features-plugin -7.24.5 +@babel/helper-member-expression-to-functions +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -929,8 +942,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-environment-visitor -7.22.20 +@babel/helper-module-imports +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -957,8 +970,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-function-name -7.23.0 +@babel/helper-module-transforms +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -985,8 +998,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-hoist-variables -7.22.5 +@babel/helper-optimise-call-expression +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1013,8 +1026,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-member-expression-to-functions -7.24.5 +@babel/helper-plugin-utils +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1041,8 +1054,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-module-imports -7.24.3 +@babel/helper-replace-supers +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1069,8 +1082,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-module-transforms -7.24.5 +@babel/helpers +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1097,8 +1110,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-optimise-call-expression -7.22.5 +@babel/helper-simple-access +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1125,8 +1138,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-plugin-utils -7.24.5 +@babel/helper-skip-transparent-expression-wrappers +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1153,8 +1166,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-replace-supers -7.24.1 +@babel/helper-string-parser +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1181,8 +1194,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helpers -7.23.2 +@babel/helper-validator-identifier +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1209,8 +1222,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-simple-access -7.24.5 +@babel/helper-validator-option +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1237,8 +1250,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-skip-transparent-expression-wrappers -7.22.5 +@babel/highlight +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1265,8 +1278,33 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-split-export-declaration -7.24.5 +@babel/parser +7.25.9 +Copyright (C) 2012-2014 by various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@babel/plugin-syntax-jsx +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1293,8 +1331,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-string-parser -7.24.1 +@babel/plugin-syntax-typescript +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1321,8 +1359,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-validator-identifier -7.24.5 +@babel/plugin-transform-modules-commonjs +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1349,8 +1387,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-validator-option -7.23.5 +@babel/plugin-transform-typescript +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1377,8 +1415,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/highlight -7.24.5 +@babel/preset-typescript +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1405,204 +1443,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/parser -7.24.5 -Copyright (C) 2012-2014 by various contributors (see AUTHORS) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +@babel/runtime +7.25.9 +MIT License -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -@babel/plugin-syntax-jsx -7.24.1 -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/plugin-syntax-typescript -7.24.1 -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/plugin-transform-modules-commonjs -7.24.1 -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/plugin-transform-typescript -7.24.5 -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/preset-typescript -7.24.1 -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/runtime -7.24.0 -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/runtime -7.24.5 -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Sebastian McKenzie and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -1627,7 +1472,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/template -7.22.15 +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1655,7 +1500,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/traverse -7.24.5 +7.25.9 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1683,7 +1528,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/types -7.24.5 +7.26.0 MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -1790,6 +1635,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +base58-js +1.0.5 +MIT License + +Copyright (c) 2021 pur3miish + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** base64-js @@ -1817,6 +1689,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +base-x +3.0.10 +The MIT License (MIT) + +Copyright (c) 2018 base-x contributors +Copyright (c) 2014-2018 The Bitcoin Core developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** base-x @@ -1873,6 +1773,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +base-x +5.0.0 +The MIT License (MIT) + +Copyright (c) 2018 base-x contributors +Copyright (c) 2014-2018 The Bitcoin Core developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** bchaddrjs @@ -2295,11 +2223,38 @@ SOFTWARE. ****************************** -bitcoin-ops -1.4.1 +bitcoin-address-validation +2.2.3 The MIT License (MIT) -Copyright (c) 2016 Daniel Cousens +Copyright (c) 2018 Rui Gomes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +bitcoin-ops +1.4.1 +The MIT License (MIT) + +Copyright (c) 2016 Daniel Cousens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -2323,10 +2278,10 @@ SOFTWARE. ****************************** bitwise -2.1.0 +2.2.1 # The MIT License (MIT) -Copyright (c) `2019` Florian Wendelborn +Copyright (c) `2023` Florian Wendelborn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -2410,7 +2365,7 @@ SOFTWARE. ****************************** @blockaid/ppom_release -1.4.6 <> +1.5.3 <> Blockaid BSL License, Version 1.0 (EPL-1.0) Licensor: Blockaid, Inc. @@ -2488,7 +2443,7 @@ SOFTWARE. ****************************** borc -2.1.2 +3.0.0 The MIT License (MIT) Copyright (c) 2016 Friedel Ziegelmayer @@ -2763,37 +2718,6 @@ programs and associated documentation files created by the Original Author, when distributed with the Software. -****************************** - -bplist-creator -0.1.1 -(The MIT License) - -Copyright (c) 2012 Near Infinity Corporation - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -bplist-parser -0.3.2 -license: MIT -authors: Joe Ferner - ****************************** brace-expansion @@ -2821,33 +2745,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -brace-expansion -2.0.1 -MIT License - -Copyright (c) 2013 Julian Gruber - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** brorand @@ -2961,7 +2858,7 @@ IN THE SOFTWARE. ****************************** browserslist -4.23.0 +4.24.2 The MIT License (MIT) Copyright 2014 Andrey Sitnik and other contributors @@ -3018,6 +2915,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +bs58 +6.0.0 +MIT License + +Copyright (c) 2018 cryptocoinjs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** bs58check @@ -3072,6 +2996,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +bs58check +4.0.0 +The MIT License (MIT) + +Copyright (c) 2017 Daniel Cousens + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** buffer @@ -3295,7 +3246,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** call-bind -1.0.6 +1.0.7 MIT License Copyright (c) 2020 Jordan Harband @@ -3322,7 +3273,7 @@ SOFTWARE. ****************************** caniuse-lite -1.0.30001600 +1.0.30001669 Attribution 4.0 International ======================================================================= @@ -3720,34 +3671,6 @@ public licenses. Creative Commons may be contacted at creativecommons.org. -****************************** - -case -1.6.3 -Copyright (c) 2013 Nathan Bubna - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - ****************************** cashaddrjs @@ -3816,286 +3739,54 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -@chainsafe/as-sha256 -0.3.1 - Copyright 2019 ChainSafe Systems +chalk +2.4.2 +MIT License - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Copyright (c) Sindre Sorhus (sindresorhus.com) - http://www.apache.org/licenses/LICENSE-2.0 +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@chainsafe/persistent-merkle-tree -0.4.2 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +chalk +4.1.2 +MIT License - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Copyright (c) Sindre Sorhus (sindresorhus.com) - 1. Definitions. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +****************************** - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +chalk +5.3.0 +MIT License - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +Copyright (c) Sindre Sorhus (https://sindresorhus.com) - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +****************************** - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -****************************** - -@chainsafe/ssz -0.9.4 <> -Copyright 2019- ChainSafe Systems - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -****************************** - -chalk -2.4.2 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -chalk -4.1.2 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -character-entities -1.2.1 -(The MIT License) +character-entities +1.2.1 +(The MIT License) Copyright (c) 2015 Titus Wormer @@ -4175,6 +3866,21 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +chart.js +4.4.1 +The MIT License (MIT) + +Copyright (c) 2014-2022 Chart.js Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** cids @@ -4504,7 +4210,7 @@ THE SOFTWARE. ****************************** commander -2.20.3 +12.1.0 (The MIT License) Copyright (c) 2011 TJ Holowaychuk @@ -4532,7 +4238,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** commander -4.1.1 +2.20.3 (The MIT License) Copyright (c) 2011 TJ Holowaychuk @@ -4645,64 +4351,10 @@ ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -contentful -10.8.7 -The MIT License (MIT) - -Copyright (c) 2016 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -contentful-resolve-response -1.8.1 -MIT License - -Copyright (c) 2018 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** @contentful/rich-text-html-renderer -16.3.5 +16.6.8 MIT License Copyright (c) 2018 Contentful @@ -4729,7 +4381,7 @@ SOFTWARE. ****************************** @contentful/rich-text-types -16.3.5 +16.8.3 MIT License Copyright (c) 2018 Contentful @@ -4753,33 +4405,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -contentful-sdk-core -8.1.2 -The MIT License (MIT) - -Copyright (c) 2016 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** convert-source-map @@ -4892,12 +4517,200 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** crc-32 -1.2.0 -Copyright (C) 2014-present SheetJS +1.2.2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2014-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @@ -4908,7 +4721,6 @@ Copyright (C) 2014-present SheetJS limitations under the License. - ****************************** create-hash @@ -5044,33 +4856,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -cross-spawn -7.0.3 -The MIT License (MIT) - -Copyright (c) 2018 Made With MOXY Lda - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** crypto @@ -5265,7 +5050,7 @@ THE SOFTWARE. ****************************** debug -4.3.4 +4.3.5 (The MIT License) Copyright (c) 2014-2017 TJ Holowaychuk @@ -5364,7 +5149,7 @@ THE SOFTWARE. ****************************** define-data-property -1.1.2 +1.1.4 MIT License Copyright (c) 2023 Jordan Harband @@ -5454,34 +5239,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -delimit-stream -0.1.0 -Copyright (c) 2013, Jason Kuhrt -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ****************************** detect-browser @@ -5597,13 +5354,6 @@ authors: Raynos ****************************** -eastasianwidth -0.2.0 -license: MIT -authors: Masaki Komagata - -****************************** - ecdsa-sig-formatter 1.0.11 Apache License @@ -5811,11 +5561,11 @@ Apache License ****************************** -eciesjs -0.3.16 +eip55 +2.1.1 MIT License -Copyright (c) 2019-2022 Weiliang Li +Copyright (c) 2018 Daniel Cousens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -5839,7 +5589,7 @@ SOFTWARE. ****************************** electron-to-chromium -1.4.715 +1.5.45 Copyright 2018 Kilian Valkhof Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. @@ -5850,7 +5600,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ****************************** elliptic -6.5.4 +6.5.7 license: MIT authors: Fedor Indutny @@ -5882,37 +5632,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -emoji-regex -9.2.2 -Copyright Mathias Bynens - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +@emotion/hash +0.8.0 +MIT License -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@emotion/hash -0.8.0 -MIT License - -Copyright (c) Emotion team and other contributors +Copyright (c) Emotion team and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -6222,32 +5946,6 @@ SOFTWARE. limitations under the License. -****************************** - -end-of-stream -1.4.4 -The MIT License (MIT) - -Copyright (c) 2014 Mathias Buus - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - ****************************** @ensdomains/content-hash @@ -6303,7 +6001,7 @@ authors: Mike Hall ****************************** escalade -3.1.1 +3.2.0 MIT License Copyright (c) Luke Edwards (lukeed.com) @@ -6372,6 +6070,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +es-define-property +1.0.0 +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** es-errors @@ -6771,10 +6496,29 @@ eslint-visitor-keys ****************************** -eth-eip712-util-browser -0.0.3 -license: ISC -authors: Dan Finlay +eth-chainlist +0.0.519 +The MIT License (MIT) + +Copyright (c) 2022 Zane J. Chua + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** @@ -6818,33 +6562,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** ethereum-cryptography -1.1.2 -The MIT License (MIT) - -Copyright (c) 2021 Patricio Palladino, Paul Miller, ethereum-cryptography contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -****************************** - -ethereum-cryptography -2.1.3 +2.2.1 The MIT License (MIT) Copyright (c) 2021 Patricio Palladino, Paul Miller, ethereum-cryptography contributors @@ -6869,15 +6587,8 @@ THE SOFTWARE. ****************************** -ethereum-ens-network-map -1.0.2 -license: ISC -authors: Dan Finlay - -****************************** - @ethereumjs/common -3.1.1 +3.2.0 The MIT License (MIT) Copyright (c) 2015 @@ -6905,7 +6616,7 @@ SOFTWARE. ****************************** @ethereumjs/common -3.2.0 +4.3.0 The MIT License (MIT) Copyright (c) 2015 @@ -6933,7 +6644,7 @@ SOFTWARE. ****************************** @ethereumjs/common -4.3.0 +4.4.0 The MIT License (MIT) Copyright (c) 2015 @@ -7719,7 +7430,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -4.1.1 +4.2.0 Mozilla Public License Version 2.0 ================================== @@ -8098,7 +7809,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -4.2.0 +5.3.0 Mozilla Public License Version 2.0 ================================== @@ -8477,7 +8188,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -5.3.0 +5.4.0 Mozilla Public License Version 2.0 ================================== @@ -9235,7 +8946,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/util -9.0.3 +9.1.0 Mozilla Public License Version 2.0 ================================== @@ -10017,6 +9728,60 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +ethers +5.7.2 +MIT License + +Copyright (c) 2019 Richard Moore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +ethers +6.13.2 +MIT License + +Copyright (c) 2016-2023 Richard Moore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** @ethersproject/abi @@ -10351,6 +10116,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@ethersproject/json-wallets +5.7.0 +MIT License + +Copyright (c) 2019 Richard Moore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** @ethersproject/keccak256 @@ -10603,7 +10395,7 @@ SOFTWARE. ****************************** -@ethersproject/strings +@ethersproject/solidity 5.7.0 MIT License @@ -10630,7 +10422,7 @@ SOFTWARE. ****************************** -@ethersproject/transactions +@ethersproject/strings 5.7.0 MIT License @@ -10657,8 +10449,8 @@ SOFTWARE. ****************************** -@ethersproject/web -5.7.1 +@ethersproject/transactions +5.7.0 MIT License Copyright (c) 2019 Richard Moore @@ -10684,7 +10476,7 @@ SOFTWARE. ****************************** -@ethersproject/wordlists +@ethersproject/units 5.7.0 MIT License @@ -10711,11 +10503,11 @@ SOFTWARE. ****************************** -ethjs-abi -0.2.1 -The MIT License (MIT) +@ethersproject/wallet +5.7.0 +MIT License -Copyright (c) 2016 Nick Dodson +Copyright (c) 2019 Richard Moore Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -10724,25 +10516,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -ethjs-schema -0.2.1 -The MIT License +@ethersproject/web +5.7.1 +MIT License -Copyright (c) 2016 Nick Dodson. nickdodson.com +Copyright (c) 2019 Richard Moore Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -10751,25 +10543,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -eth-lattice-keyring -0.12.4 +@ethersproject/wordlists +5.7.0 MIT License -Copyright (c) 2021 GridPlus +Copyright (c) 2019 Richard Moore Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -10792,64 +10584,65 @@ SOFTWARE. ****************************** -eth-method-registry -4.0.0 -ISC License +ethjs-abi +0.2.1 +The MIT License (MIT) -Copyright (c) 2020 MetaMask +Copyright (c) 2016 Nick Dodson -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -eth-phishing-detect -1.2.0 -# DON'T BE A DICK PUBLIC LICENSE +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -> Version 1.1, December 2016 +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -> Copyright (C) 2018 kumavis +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -Everyone is permitted to copy and distribute verbatim or modified -copies of this license document. -> DON'T BE A DICK PUBLIC LICENSE -> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +****************************** -1. Do whatever you like with the original work, just don't be a dick. +ethjs-schema +0.2.1 +The MIT License - Being a dick includes - but is not limited to - the following instances: +Copyright (c) 2016 Nick Dodson. nickdodson.com - 1a. Outright copyright infringement - Don't just copy this and change the name. - 1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick. - 1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -2. If you become rich through modifications, related works/services, or supporting the original work, -share the love. Only a dick would make loads off this work and not buy the original work's -creator(s) a pint. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes -you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -eth-rpc-errors -4.0.3 +eth-lattice-keyring +0.12.4 MIT License -Copyright (c) 2019 MetaMask +Copyright (c) 2021 GridPlus Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -10870,6 +10663,27 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +eth-method-registry +4.0.0 +ISC License + +Copyright (c) 2020 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ****************************** eventemitter3 @@ -10982,86 +10796,108 @@ SOFTWARE. ****************************** -exit-on-epipe -1.0.1 -Copyright (C) 2015-present SheetJS +extend +3.0.2 +The MIT License (MIT) - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Copyright (c) 2014 Stefan Thomas - http://www.apache.org/licenses/LICENSE-2.0 +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** -@expo/config -8.5.6 -The MIT License (MIT) -Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) +****************************** -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +extension-port-stream +3.0.0 +ISC License -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +Copyright (c) 2020 MetaMask -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -@expo/config-plugins -7.9.2 -The MIT License (MIT) +extension-port-stream +4.2.0 +ISC License -Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) +Copyright (c) 2020 MetaMask -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +****************************** + +eyes +0.1.8 <> +Copyright (c) 2009 cloudhead + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@expo/config-types -50.0.1 -The MIT License (MIT) +fast-deep-equal +3.1.3 +MIT License -Copyright (c) 2020-present 650 Industries, Inc. (aka Expo) +Copyright (c) 2017 Evgeny Poberezkin Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -11082,21 +10918,13 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -****************************** - -expo-constants -15.4.5 -license: MIT -authors: 650 Industries, Inc. - ****************************** -@expo/fingerprint -0.6.1 -The MIT License (MIT) +fastest-levenshtein +1.0.16 +MIT License -Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) +Copyright (c) 2020 Kasper Unn Weihe Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -11116,15 +10944,13 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** -@expo/json-file -8.3.3 +fast-fifo +1.3.2 The MIT License (MIT) -Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) +Copyright (c) 2019 Mathias Buus Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -11133,270 +10959,49 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -****************************** - -@expo/plist -0.1.3 -license: MIT -authors: undefined - -****************************** +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -@expo/sdk-runtime-versions -1.0.0 <> -license: MIT -authors: Expo ****************************** -@expo/spawn-async -1.7.2 -The MIT License (MIT) - -Copyright (c) 2015 650 Industries +@fastify/busboy +2.1.1 +Copyright Brian White. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. ****************************** -extend -3.0.2 -The MIT License (MIT) +fast-json-patch +3.1.1 +(The MIT License) -Copyright (c) 2014 Stefan Thomas - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -****************************** - -extension-port-stream -2.1.1 -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -extension-port-stream -3.0.0 -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -eyes -0.1.8 <> -Copyright (c) 2009 cloudhead - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -fast-copy -2.1.7 -MIT License - -Copyright (c) 2018 Tony Quetano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -fast-deep-equal -3.1.3 -MIT License - -Copyright (c) 2017 Evgeny Poberezkin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -fast-fifo -1.3.2 -The MIT License (MIT) - -Copyright (c) 2019 Mathias Buus - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -@fastify/busboy -2.1.1 -Copyright Brian White. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -****************************** - -fast-json-patch -3.1.1 -(The MIT License) - -Copyright (c) 2013, 2014, 2020 Joachim Wester +Copyright (c) 2013, 2014, 2020 Joachim Wester Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -11445,37 +11050,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -fast-levenshtein -2.0.6 -(MIT License) - -Copyright (c) 2013 [Ramesh Nair](http://www.hiddentao.com/) - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - - ****************************** fast-safe-stringify @@ -11535,7 +11109,7 @@ SOFTWARE. ****************************** fast-xml-parser -4.3.4 +4.4.1 MIT License Copyright (c) 2017 Amit Kumar Gupta @@ -11603,21 +11177,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -find-up -5.0.0 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** firebase @@ -11956,7 +11515,7 @@ SOFTWARE. ****************************** follow-redirects -1.15.6 +1.15.9 Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh Permission is hereby granted, free of charge, to any person obtaining a copy of @@ -12005,27 +11564,6 @@ SOFTWARE. -****************************** - -foreground-child -3.1.1 -The ISC License - -Copyright (c) 2015-2023 Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** form-data @@ -12351,214 +11889,6 @@ fuse.js limitations under the License. -****************************** - -futoin-hkdf -1.5.1 - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - ****************************** gensync @@ -12584,32 +11914,6 @@ Permission to use, copy, modify, and/or distribute this software for any purpose THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -getenv -1.0.0 -The MIT License (MIT) -Copyright (c) 2012-2019 Christoph Tavan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** get-intrinsic @@ -12715,27 +12019,6 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. -****************************** - -glob -10.4.1 -The ISC License - -Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** globals @@ -12819,32 +12102,11 @@ SOFTWARE. ****************************** -graceful-fs -4.2.11 -The ISC License - -Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors +gridplus-sdk +2.7.1 +MIT License -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -gridplus-sdk -2.5.1 -MIT License - -Copyright (c) 2019 GridPlus, Inc +Copyright (c) 2019 GridPlus, Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -12868,7 +12130,7 @@ SOFTWARE. ****************************** @grpc/grpc-js -1.9.14 +1.9.15 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -13279,13 +12541,6 @@ SOFTWARE. limitations under the License. -****************************** - -gud -1.0.0 -license: MIT -authors: Jamie Kyle - ****************************** has-bigints @@ -13380,7 +12635,7 @@ authors: Fedor Indutny ****************************** hasown -2.0.0 +2.0.2 MIT License Copyright (c) Jordan Harband and contributors @@ -13407,7 +12662,7 @@ SOFTWARE. ****************************** has-property-descriptors -1.0.1 +1.0.2 MIT License Copyright (c) 2022 Inspect JS @@ -13434,7 +12689,7 @@ SOFTWARE. ****************************** has-proto -1.0.1 +1.0.3 MIT License Copyright (c) 2022 Inspect JS @@ -13488,7 +12743,7 @@ SOFTWARE. ****************************** has-tostringtag -1.0.0 +1.0.2 MIT License Copyright (c) 2021 Inspect JS @@ -13592,6 +12847,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +history +5.3.0 +MIT License + +Copyright (c) React Training 2016-2020 +Copyright (c) Remix Software 2020-2021 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** hmac-drbg @@ -13637,7 +12920,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** http-parser-js -0.4.9 +0.5.8 Copyright (c) 2015 Tim Caswell (https://github.com/creationix) and other contributors. All rights reserved. @@ -13982,13 +13265,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -imurmurhash -0.1.4 -license: MIT -authors: Jens Taylor - ****************************** inherits @@ -14049,7 +13325,7 @@ SOFTWARE. ****************************** internal-slot -1.0.6 +1.0.7 MIT License Copyright (c) 2019 Jordan Harband @@ -14098,26 +13374,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@isaacs/cliui -8.0.2 -Copyright (c) 2015, Contributors - -Permission to use, copy, modify, and/or distribute this software -for any purpose with or without fee is hereby granted, provided -that the above copyright notice and this permission notice -appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE -LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** is-alphabetical @@ -14244,7 +13500,7 @@ SOFTWARE. ****************************** is-array-buffer -3.0.2 +3.0.4 MIT License Copyright (c) 2015 Chen Gengyuan, Inspect JS @@ -14474,27 +13730,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -isexe -2.0.0 -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** is-fn @@ -14735,7 +13970,7 @@ SOFTWARE. ****************************** iso-url -0.4.7 +1.2.1 MIT License Copyright (c) Hugo Dias (hugodias.me) @@ -14834,7 +14069,7 @@ SOFTWARE. ****************************** is-shared-array-buffer -1.0.2 +1.0.3 MIT License Copyright (c) 2021 Inspect JS @@ -14932,7 +14167,7 @@ SOFTWARE. ****************************** is-typed-array -1.1.10 +1.1.13 The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -15011,71 +14246,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -jackspeak -3.1.2 -# Blue Oak Model License - -Version 1.0.0 - -## Purpose - -This license gives everyone as much permission to work with -this software as possible, while protecting contributors -from liability. - -## Acceptance - -In order to receive this license, you must agree to its -rules. The rules of this license are both obligations -under that agreement and conditions to your license. -You must not do anything with this software that triggers -a rule that you cannot or will not follow. - -## Copyright - -Each contributor licenses you to do everything with this -software that would otherwise infringe that contributor's -copyright in it. - -## Notices - -You must ensure that everyone who gets a copy of -any part of this software from you, with or without -changes, also gets the text of this license or a link to -. - -## Excuse - -If anyone notifies you in writing that you have not -complied with [Notices](#notices), you can keep your -license by taking all practical steps to comply within 30 -days after the notice. If you do not do so, your license -ends immediately. - -## Patent - -Each contributor licenses you to do everything with this -software that would otherwise infringe any patent claims -they can license or become able to license. - -## Reliability - -No contributor can revoke this license. - -## No Liability - -***As far as the law allows, this software comes as is, -without any warranty or condition, and no contributor -will be liable to anyone for any damages related to this -software or this license, under any kind of legal claim.*** - - ****************************** jayson -4.1.0 +4.1.1 (The MIT License) Copyright (c) 2011-2012 Tedde Lundgren @@ -15758,7 +14932,7 @@ Address all questions regarding this license to: ****************************** jsesc -2.5.2 +3.0.2 Copyright Mathias Bynens Permission is hereby granted, free of charge, to any person obtaining @@ -15810,13 +14984,6 @@ SOFTWARE. [others]: https://github.com/json5/json5/contributors -****************************** - -jsonify -0.0.1 -license: Public Domain -authors: Douglas Crockford - ****************************** jsonparse @@ -15847,27 +15014,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -json-rpc-engine -6.1.0 -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** json-rpc-middleware-stream @@ -15950,33 +15096,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -json-stable-stringify -1.1.1 -MIT License - -Copyright (c) 2013 contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** JSONStream @@ -16022,7 +15141,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** json-text-sequence -0.1.1 +0.3.0 The MIT License (MIT) Copyright (c) 2014 Joe Hildebrand @@ -16086,38 +15205,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -jssha -3.2.0 -Copyright (c) 2008-2020 Brian Turek, 1998-2009 Paul Johnston & Contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - ****************************** js-sha3 @@ -16318,7 +15405,7 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEAL ****************************** keccak -3.0.2 +3.0.4 The MIT License (MIT) Copyright (c) 2016-2019 https://github.com/cryptocoinjs/keccak contributors @@ -16593,7 +15680,7 @@ authors: soralit ****************************** @keystonehq/metamask-airgapped-keyring -0.13.1 +0.14.1 license: MIT authors: aaronisme @@ -16612,6 +15699,21 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@kurkle/color +0.3.2 +The MIT License (MIT) + +Copyright (c) 2018-2021 Jukka Kurkela + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** @kwsites/file-exists @@ -16724,7 +15826,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** @lavamoat/snow -2.0.1 +2.0.2 The MIT License (MIT) Copyright (c) 2020 Consensys Software @@ -16738,23 +15840,38 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -lie -3.1.1 -#Copyright (c) 2014 Calvin Metcalf +@ledgerhq/cryptoassets-evm-signatures +13.5.0 +The MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Copyright (c) 2017-present Ledger https://www.ledger.com/ -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.** ****************************** -lines-and-columns -1.1.6 -The MIT License (MIT) +@ledgerhq/devices +8.4.4 +The MIT License -Copyright (c) 2015 Brian Donovan +Copyright (c) 2017-present Ledger https://www.ledger.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -16777,35 +15894,270 @@ THE SOFTWARE. ****************************** -locale-currency -0.0.1 -license: BSD-2-Clause -authors: Thomas Deegan +@ledgerhq/domain-service +1.2.6 +The MIT License -****************************** +Copyright (c) 2017-present Ledger https://www.ledger.com/ -localforage -1.10.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. - 1. Definitions. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +****************************** - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the +@ledgerhq/errors +6.19.1 +The MIT License + +Copyright (c) 2017-present Ledger https://www.ledger.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@ledgerhq/evm-tools +1.2.3 +The MIT License + +Copyright (c) 2017-present Ledger https://www.ledger.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@ledgerhq/hw-app-eth +6.39.0 +The MIT License + +Copyright (c) 2017-present Ledger https://www.ledger.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@ledgerhq/hw-transport +6.31.4 +The MIT License + +Copyright (c) 2017-present Ledger https://www.ledger.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@ledgerhq/hw-transport-mocker +6.29.4 +The MIT License + +Copyright (c) 2017-present Ledger https://www.ledger.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@ledgerhq/live-env +2.3.0 +The MIT License + +Copyright (c) 2017-present Ledger https://www.ledger.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@ledgerhq/logs +6.12.0 +license: Apache-2.0 +authors: undefined + +****************************** + +@ledgerhq/types-live +6.52.0 +The MIT License + +Copyright (c) 2017-present Ledger https://www.ledger.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +lie +3.1.1 +#Copyright (c) 2014 Calvin Metcalf + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.** + +****************************** + +locale-currency +0.0.1 +license: BSD-2-Clause +authors: Thomas Deegan + +****************************** + +localforage +1.10.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity @@ -16989,21 +16341,6 @@ localforage limitations under the License. -****************************** - -locate-path -6.0.0 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** lodash @@ -17165,111 +16502,30 @@ terms above. ****************************** -lodash.isplainobject -4.0.6 -Copyright jQuery Foundation and other contributors +loglevel +1.9.1 +Copyright (c) 2013 Tim Perry -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. - - -****************************** - -lodash.isstring -4.0.1 -Copyright 2012-2016 The Dojo Foundation -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -loglevel -1.9.1 -Copyright (c) 2013 Tim Perry - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -17717,24 +16973,29 @@ THE SOFTWARE. ****************************** -lru-cache -10.2.2 -The ISC License +lottie-web +5.12.2 +The MIT License (MIT) -Copyright (c) 2010-2023 Isaac Z. Schlueter and Contributors +Copyright (c) 2015 Bodymovin -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -17757,27 +17018,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -lru-cache -6.0.0 -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** luxon @@ -18182,14 +17422,14 @@ authors: Egor Gumenyuk ****************************** @metamask/abi-utils -2.0.2 +2.0.4 license: (Apache-2.0 AND MIT) authors: Maarten Zuidhoorn ****************************** @metamask/accounts-controller -14.0.0 +17.2.0 MIT License Copyright (c) 2018 MetaMask @@ -18214,8 +17454,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/address-book-controller -4.0.1 +@metamask/accounts-controller +18.2.2 MIT License Copyright (c) 2018 MetaMask @@ -18240,65 +17480,220 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/announcement-controller -6.1.0 -MIT License +@metamask/account-watcher +4.1.1 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 MetaMask + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -****************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -@metamask/approval-controller -6.0.2 -MIT License + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -Copyright (c) 2018 MetaMask + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -****************************** + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -@metamask/approval-controller -7.0.0 -MIT License + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -Copyright (c) 2018 MetaMask + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -Permission is hereby granted, free of charge, to any person obtaining a copy + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 ConsenSys Software Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +****************************** + +@metamask/address-book-controller +6.0.0 +MIT License + +Copyright (c) 2018 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell @@ -18318,8 +17713,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/assets-controllers -29.0.0 +@metamask/announcement-controller +7.0.0 MIT License Copyright (c) 2018 MetaMask @@ -18344,8 +17739,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/base-controller -3.2.3 +@metamask/approval-controller +7.1.1 MIT License Copyright (c) 2018 MetaMask @@ -18370,8 +17765,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/base-controller -4.1.1 +@metamask/assets-controllers +43.1.1 MIT License Copyright (c) 2018 MetaMask @@ -18423,7 +17818,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/base-controller -6.0.0 +6.0.3 +MIT License + +Copyright (c) 2018 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/base-controller +7.0.2 MIT License Copyright (c) 2018 MetaMask @@ -18446,6 +17867,13 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +****************************** + +@metamask/bitcoin-wallet-snap +0.8.2 +license: (MIT-0 OR Apache-2.0) +authors: undefined + ****************************** @metamask/browser-passworder @@ -18491,59 +17919,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/controller-utils -11.0.0 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/controller-utils -8.0.4 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/controller-utils -9.1.0 +11.4.3 MIT License Copyright (c) 2018 MetaMask @@ -18569,14 +17945,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/design-tokens -3.0.0 +4.0.0 license: MIT authors: undefined ****************************** -@metamask/desktop -0.3.0 +@metamask/ens-controller +13.0.1 MIT License Copyright (c) 2018 MetaMask @@ -18597,44 +17973,276 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ****************************** -@metamask/ens-controller -10.0.1 -MIT License +@metamask/ens-resolver-snap +0.1.2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 MetaMask + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -****************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -@metamask/eth-block-tracker -9.0.3 -MIT License + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -Copyright (c) 2018 MetaMask + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Permission is hereby granted, free of charge, to any person obtaining a copy + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 ConsenSys Software Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +****************************** + +@metamask/eth-block-tracker +10.0.0 +MIT License + +Copyright (c) 2018 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/eth-block-tracker +11.0.1 +MIT License + +Copyright (c) 2018 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/eth-block-tracker +9.0.3 +MIT License + +Copyright (c) 2018 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell @@ -18676,7 +18284,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-hd-keyring -7.0.1 +7.0.4 ISC License Copyright (c) 2020 MetaMask @@ -18805,7 +18413,7 @@ THE SOFTWARE. ****************************** @metamask/eth-json-rpc-filters -7.0.0 +9.0.0 ISC License Copyright (c) 2020 MetaMask @@ -18847,7 +18455,28 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-json-rpc-middleware -12.1.1 +13.0.0 +ISC License + +Copyright (c) 2020 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +@metamask/eth-json-rpc-middleware +14.0.1 ISC License Copyright (c) 2020 MetaMask @@ -18909,14 +18538,35 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -@metamask/ethjs-provider-http -0.3.0 -The MIT License +@metamask/eth-json-rpc-provider +4.1.3 +ISC License -Copyright (c) 2016 Nick Dodson. nickdodson.com +Copyright (c) 2022 MetaMask -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +@metamask/ethjs-provider-http +0.3.0 +The MIT License + +Copyright (c) 2016 Nick Dodson. nickdodson.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is @@ -19045,7 +18695,7 @@ THE SOFTWARE. ****************************** @metamask/eth-ledger-bridge-keyring -2.0.1 +5.0.1 ISC License Copyright (c) 2020 MetaMask @@ -19066,21 +18716,35 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-query -3.0.1 +4.0.0 license: ISC authors: undefined ****************************** -@metamask/eth-query -4.0.0 -license: ISC -authors: undefined +@metamask/eth-sig-util +7.0.3 +ISC License + +Copyright (c) 2020 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + ****************************** @metamask/eth-sig-util -7.0.1 +8.0.0 ISC License Copyright (c) 2020 MetaMask @@ -19101,7 +18765,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-simple-keyring -6.0.1 +6.0.5 ISC License Copyright (c) 2020 MetaMask @@ -19122,7 +18786,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-snap-keyring -4.2.1 +4.4.0 license: Custom: https://metamask.github.io/eth-snap-keyring/latest/ authors: undefined @@ -19150,7 +18814,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-trezor-keyring -3.1.0 +3.1.3 ISC License Copyright (c) 2020 MetaMask @@ -19171,33 +18835,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/gas-fee-controller -15.1.2 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/gas-fee-controller -17.0.0 +18.0.0 MIT License Copyright (c) 2018 MetaMask @@ -19250,7 +18888,7 @@ SOFTWARE. ****************************** @metamask-institutional/custody-controller -0.2.27 +0.3.0 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19277,7 +18915,7 @@ SOFTWARE. ****************************** @metamask-institutional/custody-keyring -2.0.0 +2.1.1 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19304,7 +18942,7 @@ SOFTWARE. ****************************** @metamask-institutional/extension -0.3.24 +0.3.28 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19331,7 +18969,7 @@ SOFTWARE. ****************************** @metamask-institutional/institutional-features -1.3.2 +1.3.6 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19412,7 +19050,7 @@ SOFTWARE. ****************************** @metamask-institutional/sdk -0.1.27 +0.2.0 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19466,7 +19104,7 @@ SOFTWARE. ****************************** @metamask-institutional/transaction-update -0.2.2 +0.2.6 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19493,7 +19131,7 @@ SOFTWARE. ****************************** @metamask-institutional/types -1.1.0 +1.2.0 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19520,7 +19158,7 @@ SOFTWARE. ****************************** @metamask-institutional/websocket-client -0.2.2 +0.2.6 MIT License Copyright (c) 2023 ConsenSys Vertical Apps @@ -19565,6 +19203,27 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/json-rpc-engine +10.0.1 +ISC License + +Copyright (c) 2022 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ****************************** @metamask/json-rpc-engine @@ -19607,10 +19266,31 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/json-rpc-engine +9.0.3 +ISC License + +Copyright (c) 2022 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ****************************** @metamask/json-rpc-middleware-stream -7.0.1 +8.0.5 ISC License Copyright (c) 2020 MetaMask @@ -19631,21 +19311,21 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/keyring-api -5.1.0 +8.1.3 license: Custom: https://docs.metamask.io/snaps/ authors: undefined ****************************** @metamask/keyring-api -6.3.1 +9.0.0 license: Custom: https://docs.metamask.io/snaps/ authors: undefined ****************************** @metamask/keyring-controller -15.0.0 +17.2.2 MIT License Copyright (c) 2018 MetaMask @@ -19671,7 +19351,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/key-tree -9.1.1 +9.1.2 MIT License Copyright (c) 2021 MetaMask @@ -19698,7 +19378,7 @@ SOFTWARE. ****************************** @metamask/logging-controller -3.0.1 +6.0.0 license: MIT authors: undefined @@ -19726,33 +19406,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/message-manager -7.3.9 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/message-manager -8.0.2 +10.1.0 MIT License Copyright (c) 2018 MetaMask @@ -19778,7 +19432,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/message-signing-snap -0.3.3 +0.4.0 license: Custom: http://localhost authors: undefined @@ -19805,7 +19459,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/name-controller -6.0.1 +8.0.0 MIT License Copyright (c) 2023 MetaMask @@ -19831,7 +19485,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/network-controller -18.1.2 +21.0.0 MIT License Copyright (c) 2018 MetaMask @@ -19883,11 +19537,11 @@ SOFTWARE. ****************************** -@metamask/notification-controller -3.0.0 +@metamask/nonce-tracker +6.0.0 MIT License -Copyright (c) 2018 MetaMask +Copyright (c) 2019 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -19905,15 +19559,16 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@metamask/number-to-bn -1.7.1 -The MIT License +@metamask/notification-controller +6.0.0 +MIT License -Copyright (c) 2016 Nick Dodson. nickdodson.com +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -19922,85 +19577,74 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/object-multiplex -2.0.0 -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** +@metamask/notification-services-controller +0.11.0 +MIT License -@metamask/obs-store -5.0.0 -ISC License +Copyright (c) 2024 MetaMask -Copyright (c) 2020 MetaMask +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/obs-store -7.0.0 -ISC License +@metamask/number-to-bn +1.7.1 +The MIT License -Copyright (c) 2020 MetaMask +Copyright (c) 2016 Nick Dodson. nickdodson.com -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -@metamask/obs-store -8.1.0 +@metamask/object-multiplex +2.0.0 ISC License Copyright (c) 2020 MetaMask @@ -20042,7 +19686,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/permission-controller -9.0.2 +10.0.0 MIT License Copyright (c) 2018 MetaMask @@ -20067,61 +19711,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/permission-log-controller -2.0.1 -Copyright ConsenSys Software Inc. 2022. All rights reserved. - -You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. +@metamask/permission-controller +11.0.3 +MIT License -Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. - -You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: - 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and - 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. - -“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: - 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; - 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or - 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. - -You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. - -If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. - - -****************************** - -@metamask/phishing-controller -9.0.2 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/polling-controller -6.0.2 -MIT License - -Copyright (c) 2018 MetaMask +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -20143,62 +19737,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/polling-controller -8.0.0 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** +@metamask/permission-log-controller +2.0.1 +Copyright ConsenSys Software Inc. 2022. All rights reserved. -@metamask/post-message-stream -8.1.0 -ISC License +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. -Copyright (c) 2020 MetaMask +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. -****************************** +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. -@metamask/ppom-validator -0.30.0 -license: Custom: https://nodejs.org -authors: undefined ****************************** -@metamask/preferences-controller -11.0.0 +@metamask/phishing-controller +12.3.0 MIT License Copyright (c) 2018 MetaMask @@ -20223,65 +19787,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/providers -14.0.2 -MIT License - -Copyright (c) 2020 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@metamask/providers -16.1.0 -MIT License - -Copyright (c) 2020 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@metamask/queued-request-controller -0.10.0 +@metamask/polling-controller +10.0.1 MIT License -Copyright (c) 2023 MetaMask +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -20303,8 +19813,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/rate-limit-controller -5.0.1 +@metamask/polling-controller +12.0.1 MIT License Copyright (c) 2018 MetaMask @@ -20329,11 +19839,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/rpc-errors -6.2.1 +@metamask/polling-controller +8.0.0 MIT License -Copyright (c) 2019 MetaMask +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -20351,13 +19861,12 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ****************************** -@metamask/safe-event-emitter -2.0.0 <> +@metamask/post-message-stream +8.1.1 ISC License Copyright (c) 2020 MetaMask @@ -20377,227 +19886,53 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -@metamask/safe-event-emitter -3.1.1 -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - +@metamask/ppom-validator +0.35.1 +license: Custom: https://nodejs.org +authors: undefined ****************************** -@metamask/scure-bip39 -2.1.1 -The MIT License (MIT) - -Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) +@metamask/preinstalled-example-snap +0.2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + 1. Definitions. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -****************************** + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -@metamask/selected-network-controller -13.0.0 -MIT License + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -Copyright (c) 2023 MetaMask + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/signature-controller -14.0.1 -MIT License - -Copyright (c) 2023 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/slip44 -3.1.0 -license: ISC -authors: Dan Finlay - -****************************** - -@metamask/smart-transactions-controller -10.0.1 -Copyright ConsenSys Software Inc. 2020. All rights reserved. - -You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. - -Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. - -You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: - 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and - 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. - -“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: - 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; - 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or - 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. - -You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. - -If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. - - -****************************** - -@metamask/snaps-controllers -8.2.0 -Copyright ConsenSys Software Inc. 2021. All rights reserved. - -You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. - -Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. - -You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: - 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and - 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. - -“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: - 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; - 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or - 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. - -You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. - -If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. - - -****************************** - -@metamask/snaps-execution-environments -6.2.0 -Copyright ConsenSys Software Inc. 2022. All rights reserved. - -You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. - -Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. - -You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: - -1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and -2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. - -“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: - -1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; -2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or -3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. - -You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. - -If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. - - -****************************** - -@metamask/snaps-registry -3.1.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the @@ -20748,7 +20083,7 @@ If you have any questions, comments or interest in pursuing any other use cases, same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2023 Consensys Software Inc. + Copyright 2024 Consensys Software Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -20765,84 +20100,64 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** -@metamask/snaps-rpc-methods -9.1.0 -Copyright ConsenSys Software Inc. 2021. All rights reserved. - -You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. - -Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. - -You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: - 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and - 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. - -“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: - 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; - 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or - 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. - -You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. - -If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. - - -****************************** +@metamask/profile-sync-controller +0.9.7 +MIT License -@metamask/snaps-sdk -4.3.0 -ISC License +Copyright (c) 2024 MetaMask -Copyright (c) 2023 MetaMask +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/snaps-utils -7.4.0 -ISC License - -Copyright (c) 2022 MetaMask +@metamask/providers +14.0.2 +MIT License -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Copyright (c) 2020 MetaMask -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -****************************** +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -@metamask/swappable-obj-proxy -2.2.0 -license: ISC -authors: undefined ****************************** -@metamask/transaction-controller -32.0.0 +@metamask/providers +18.1.1 MIT License -Copyright (c) 2018 MetaMask +Copyright (c) 2020 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -20860,12 +20175,13 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@metamask/user-operation-controller -10.0.0 +@metamask/queued-request-controller +7.0.1 MIT License Copyright (c) 2023 MetaMask @@ -20890,165 +20206,64 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/utils -5.0.2 -ISC License +@metamask/rate-limit-controller +6.0.0 +MIT License -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/utils -8.4.0 -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -micro-ftch -0.3.1 <> -The MIT License (MIT) - -Copyright (c) 2020 Paul Miller (https://paulmillr.com) +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal +of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -****************************** - -micromark -2.11.4 -(The MIT License) - -Copyright (c) 2020 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -mime-db -1.52.0 -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -mime-types -2.1.35 -(The MIT License) +@metamask/rpc-errors +6.4.0 +MIT License -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson +Copyright (c) 2019 MetaMask -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -mini-create-react-context -0.3.2 -Copyright (c) 2019-present StringEpsilon +@metamask/rpc-errors +7.0.1 +MIT License -Copyright (c) 2017-2019 James Kyle +Copyright (c) 2019 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21071,36 +20286,11 @@ SOFTWARE. ****************************** -minimalistic-assert -1.0.1 -Copyright 2015 Calvin Metcalf - -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -****************************** - -minimalistic-crypto-utils -1.0.1 -license: MIT -authors: Fedor Indutny - -****************************** - -minimatch -3.1.2 -The ISC License +@metamask/safe-event-emitter +3.1.1 +ISC License -Copyright (c) Isaac Z. Schlueter and Contributors +Copyright (c) 2020 MetaMask Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -21111,59 +20301,44 @@ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -minimatch -9.0.4 -The ISC License - -Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** +@metamask/scure-bip39 +2.1.1 +The MIT License (MIT) -minipass -7.1.2 -The ISC License +Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) -Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -mkdirp -1.0.4 -Copyright James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) +@metamask/selected-network-controller +18.0.2 +MIT License -This project is free software released under the MIT license: +Copyright (c) 2023 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21172,51 +20347,24 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@mobily/ts-belt -3.13.1 -The MIT License (MIT) +@metamask/signature-controller +21.1.0 +MIT License -Copyright (c) Marcin Dziewulski - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -mock-socket -9.2.1 -The MIT License (MIT) - -Copyright (c) 2017 Travis Hoover +Copyright (c) 2023 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21234,351 +20382,426 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ****************************** -ms -2.1.2 -The MIT License (MIT) +@metamask/slip44 +3.1.0 +license: ISC +authors: Dan Finlay -Copyright (c) 2016 Zeit, Inc. +****************************** -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +@metamask/slip44 +4.0.0 +license: ISC +authors: Dan Finlay -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +****************************** -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +@metamask/smart-transactions-controller +13.0.0 +Copyright ConsenSys Software Inc. 2020. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. ****************************** -ms -2.1.3 -The MIT License (MIT) +@metamask/snaps-controllers +9.12.0 +Copyright ConsenSys Software Inc. 2021. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. -Copyright (c) 2020 Vercel, Inc. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +****************************** -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +@metamask/snaps-execution-environments +6.9.2 +Copyright ConsenSys Software Inc. 2022. All rights reserved. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. -****************************** +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: -multibase -2.0.0 -MIT License +1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and +2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. -Copyright (c) 2020 Protocol Labs Inc. +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; +2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or +3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. ****************************** -multibase -4.0.4 -MIT License - -Copyright (c) 2020 Protocol Labs Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +@metamask/snaps-registry +3.2.2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + 1. Definitions. -****************************** + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -multicodec -3.2.1 -MIT License + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Copyright © 2016 Multiformats + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -****************************** + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -multiformats -9.9.0 -Copyright 2020 Protocol Labs + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - http://www.apache.org/licenses/LICENSE-2.0 + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -****************************** + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -@multiformats/base-x -4.0.1 -The MIT License (MIT) + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -Copyright (c) 2018 base-x contributors -Copyright (c) 2014-2018 The Bitcoin Core developers + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -****************************** + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -multihashes -2.0.0 -The MIT License (MIT) + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Copyright (c) 2020 Protocol Labs Inc. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + END OF TERMS AND CONDITIONS -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + APPENDIX: How to apply the Apache License to your work. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + Copyright 2023 Consensys Software Inc. -****************************** + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -multihashes -4.0.2 -The MIT License (MIT) + http://www.apache.org/licenses/LICENSE-2.0 -Copyright (c) 2020 Protocol Labs Inc. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +****************************** -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +@metamask/snaps-rpc-methods +11.5.1 +Copyright ConsenSys Software Inc. 2021. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. ****************************** -mz -2.7.0 - -The MIT License (MIT) - -Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors +@metamask/snaps-sdk +6.10.0 +ISC License -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Copyright (c) 2023 MetaMask -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -nan -2.15.0 -The MIT License (MIT) -===================== +@metamask/snaps-utils +7.8.1 +ISC License -Copyright (c) 2018 NAN contributors ------------------------------------ +Copyright (c) 2022 MetaMask -*NAN contributors listed at * +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** +@metamask/snaps-utils +8.5.2 +ISC License -****************************** +Copyright (c) 2022 MetaMask -nanoid -2.1.11 -The MIT License (MIT) - -Copyright 2017 Andrey Sitnik +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** +@metamask/solana-wallet-snap +0.1.9 +license: (MIT-0 OR Apache-2.0) +authors: undefined ****************************** -nanoid -3.3.7 -The MIT License (MIT) +@metamask/superstruct +3.1.0 +The MIT License -Copyright 2017 Andrey Sitnik +Copyright © 2017, [Ian Storm Taylor](https://ianstormtaylor.com) -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@ngraveio/bc-ur -1.1.12 +@metamask/swappable-obj-proxy +2.2.0 +license: ISC +authors: undefined + +****************************** + +@metamask/transaction-controller +34.0.0 MIT License -Copyright (c) 2021 NGRAVE +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21596,147 +20819,130 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ****************************** -@noble/ciphers -0.5.2 -The MIT License (MIT) +@metamask/transaction-controller +38.3.0 +MIT License -Copyright (c) 2022 Paul Miller (https://paulmillr.com) -Copyright (c) 2016 Thomas Pornin +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal +of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + ****************************** -@noble/curves -1.3.0 -The MIT License (MIT) +@metamask/user-operation-controller +13.0.0 +MIT License -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2023 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal +of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + ****************************** -@noble/curves -1.4.0 -The MIT License (MIT) +@metamask/utils +10.0.1 +ISC License -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2022 MetaMask -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. ****************************** -@noble/hashes -1.1.2 -The MIT License (MIT) +@metamask/utils +8.5.0 +ISC License -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2022 MetaMask -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. ****************************** -@noble/hashes -1.1.3 -The MIT License (MIT) +@metamask/utils +9.3.0 +ISC License -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2022 MetaMask -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. ****************************** -@noble/hashes -1.3.3 +micro-ftch +0.3.1 <> The MIT License (MIT) -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2020 Paul Miller (https://paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal @@ -21758,140 +20964,143 @@ THE SOFTWARE. ****************************** -@noble/hashes -1.4.0 -The MIT License (MIT) +micromark +2.11.4 +(The MIT License) -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2020 Titus Wormer -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. ****************************** -@noble/secp256k1 -1.6.3 -The MIT License (MIT) +mime-db +1.52.0 +(The MIT License) -Copyright (c) 2019 Paul Miller (https://paulmillr.com) +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -****************************** - -@noble/secp256k1 -1.7.1 -The MIT License (MIT) - -Copyright (c) 2019 Paul Miller (https://paulmillr.com) +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. ****************************** -node-addon-api -2.0.2 -The MIT License (MIT) -===================== +mime-types +2.1.35 +(The MIT License) -Copyright (c) 2017 Node.js API collaborators ------------------------------------ +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson -*Node.js API collaborators listed at * +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -node-addon-api -3.2.1 -The MIT License (MIT) -===================== - -Copyright (c) 2017 Node.js API collaborators ------------------------------------ +minimalistic-assert +1.0.1 +Copyright 2015 Calvin Metcalf -*Node.js API collaborators listed at * +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +****************************** -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +minimalistic-crypto-utils +1.0.1 +license: MIT +authors: Fedor Indutny ****************************** -node-addon-api -7.1.0 -The MIT License (MIT) - -Copyright (c) 2017 [Node.js API collaborators](https://github.com/nodejs/node-addon-api#collaborators) +minimatch +3.1.2 +The ISC License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Copyright (c) Isaac Z. Schlueter and Contributors -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -node-fetch -2.7.0 -The MIT License (MIT) +mkdirp +1.0.4 +Copyright James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) -Copyright (c) 2016 David Frank +This project is free software released under the MIT license: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21900,26 +21109,51 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +@mobily/ts-belt +3.13.1 +The MIT License (MIT) + +Copyright (c) Marcin Dziewulski + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -node-gyp-build -4.8.0 +mock-socket +9.2.1 The MIT License (MIT) -Copyright (c) 2017 Mathias Buus +Copyright (c) 2017 Travis Hoover Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21928,25 +21162,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -node-releases -2.0.14 -The MIT License +ms +2.1.2 +The MIT License (MIT) -Copyright (c) 2017 Sergey Rubanov (https://github.com/chicoxyzzy) +Copyright (c) 2016 Zeit, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21955,25 +21189,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -number-to-bn -1.7.0 -The MIT License +ms +2.1.3 +The MIT License (MIT) -Copyright (c) 2016 Nick Dodson. nickdodson.com +Copyright (c) 2020 Vercel, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -21982,25 +21216,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -object-assign -4.1.1 -The MIT License (MIT) +multibase +2.0.0 +MIT License -Copyright (c) Sindre Sorhus (sindresorhus.com) +Copyright (c) 2020 Protocol Labs Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22009,25 +21243,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -object.assign -4.1.4 -The MIT License (MIT) +multibase +4.0.4 +MIT License -Copyright (c) 2014 Jordan Harband +Copyright (c) 2020 Protocol Labs Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22047,13 +21281,14 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ****************************** -object-inspect -1.12.3 +multicodec +3.2.1 MIT License -Copyright (c) 2013 James Halliday +Copyright © 2016 Multiformats Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22076,37 +21311,41 @@ SOFTWARE. ****************************** -object-is -1.1.5 -The MIT License (MIT) +multiformats +13.2.2 +This project is dual licensed under MIT and Apache-2.0. -Copyright (c) 2014 Jordan Harband +MIT: https://www.opensource.org/licenses/mit +Apache-2.0: https://www.apache.org/licenses/license-2.0 -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +****************************** -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +multiformats +9.9.0 +Copyright 2020 Protocol Labs + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. ****************************** -object-keys -1.1.1 +@multiformats/base-x +4.0.1 The MIT License (MIT) -Copyright (C) 2013 Jordan Harband +Copyright (c) 2018 base-x contributors +Copyright (c) 2014-2018 The Bitcoin Core developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22115,53 +21354,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -****************************** - -obj-multiplex -1.0.0 <> -license: ISC -authors: undefined - -****************************** - -once -1.4.0 -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -otpauth -8.0.3 +multihashes +2.0.0 The MIT License (MIT) -===================== -Copyright © 2022 Héctor Molinero Fernández +Copyright (c) 2020 Protocol Labs Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22170,25 +21381,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -pako -1.0.6 -(The MIT License) +multihashes +4.0.2 +The MIT License (MIT) -Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn +Copyright (c) 2020 Protocol Labs Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22211,69 +21422,82 @@ THE SOFTWARE. ****************************** -parse-entities -2.0.0 -(The MIT License) +nan +2.15.0 +The MIT License (MIT) +===================== -Copyright (c) 2015 Titus Wormer +Copyright (c) 2018 NAN contributors +----------------------------------- -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +*NAN contributors listed at * -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -path-exists -4.0.0 -MIT License +nanoid +2.1.11 +The MIT License (MIT) -Copyright (c) Sindre Sorhus (sindresorhus.com) +Copyright 2017 Andrey Sitnik -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -path-key -3.1.1 -MIT License +nanoid +3.3.7 +The MIT License (MIT) -Copyright (c) Sindre Sorhus (sindresorhus.com) +Copyright 2017 Andrey Sitnik -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -path-parse -1.0.7 -The MIT License (MIT) +@ngraveio/bc-ur +1.1.12 +MIT License -Copyright (c) 2015 Javier Blanco +Copyright (c) 2021 NGRAVE Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22296,75 +21520,93 @@ SOFTWARE. ****************************** -path-scurry -1.11.1 -# Blue Oak Model License - -Version 1.0.0 - -## Purpose +@noble/ciphers +0.5.3 +The MIT License (MIT) -This license gives everyone as much permission to work with -this software as possible, while protecting contributors -from liability. +Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2016 Thomas Pornin -## Acceptance +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -In order to receive this license, you must agree to its -rules. The rules of this license are both obligations -under that agreement and conditions to your license. -You must not do anything with this software that triggers -a rule that you cannot or will not follow. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -## Copyright +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -Each contributor licenses you to do everything with this -software that would otherwise infringe that contributor's -copyright in it. +****************************** -## Notices +@noble/curves +1.2.0 +The MIT License (MIT) -You must ensure that everyone who gets a copy of -any part of this software from you, with or without -changes, also gets the text of this license or a link to -. +Copyright (c) 2022 Paul Miller (https://paulmillr.com) -## Excuse +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -If anyone notifies you in writing that you have not -complied with [Notices](#notices), you can keep your -license by taking all practical steps to comply within 30 -days after the notice. If you do not do so, your license -ends immediately. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -## Patent +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -Each contributor licenses you to do everything with this -software that would otherwise infringe any patent claims -they can license or become able to license. +****************************** -## Reliability +@noble/curves +1.4.2 +The MIT License (MIT) -No contributor can revoke this license. +Copyright (c) 2022 Paul Miller (https://paulmillr.com) -## No Liability +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -***As far as the law allows, this software comes as is, -without any warranty or condition, and no contributor -will be liable to anyone for any damages related to this -software or this license, under any kind of legal claim.*** +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -path-to-regexp -1.7.0 +@noble/hashes +1.3.2 The MIT License (MIT) -Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) +Copyright (c) 2022 Paul Miller (https://paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal +of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is @@ -22373,7 +21615,7 @@ furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -22381,39 +21623,121 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ****************************** -pbkdf2 -3.1.2 +@noble/hashes +1.3.3 The MIT License (MIT) -Copyright (c) 2014 Daniel Cousens +Copyright (c) 2022 Paul Miller (https://paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal +of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + +@noble/hashes +1.4.0 +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -performance-now -0.2.0 -Copyright (c) 2013 Meryn Stol +@noble/hashes +1.5.0 +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + +@noble/secp256k1 +1.7.1 +The MIT License (MIT) + +Copyright (c) 2019 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + +node-addon-api +2.0.2 +The MIT License (MIT) +===================== + +Copyright (c) 2017 Node.js API collaborators +----------------------------------- + +*Node.js API collaborators listed at * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -22423,9 +21747,15 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -performance-now -2.1.0 -Copyright (c) 2013 Braveg1rl +node-addon-api +3.2.1 +The MIT License (MIT) +===================== + +Copyright (c) 2017 Node.js API collaborators +----------------------------------- + +*Node.js API collaborators listed at * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -22435,32 +21765,29 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -picocolors -1.0.0 -ISC License +node-addon-api +5.1.0 +The MIT License (MIT) +===================== -Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov +Copyright (c) 2017 Node.js API collaborators +----------------------------------- -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +*Node.js API collaborators listed at * -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -pify -5.0.0 -MIT License +node-addon-api +7.1.0 +The MIT License (MIT) -Copyright (c) Sindre Sorhus (https://sindresorhus.com) +Copyright (c) 2017 [Node.js API collaborators](https://github.com/nodejs/node-addon-api#collaborators) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -22471,11 +21798,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -pirates -4.0.6 -MIT License +node-fetch +2.7.0 +The MIT License (MIT) -Copyright (c) 2016-2018 Ari Porad +Copyright (c) 2016 David Frank Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22496,314 +21823,175 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ****************************** -@pkgjs/parseargs -0.11.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +node-gyp-build +4.8.0 +The MIT License (MIT) - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Copyright (c) 2017 Mathias Buus - 1. Definitions. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +****************************** - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +node-releases +2.0.18 +The MIT License - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +Copyright (c) 2017 Sergey Rubanov (https://github.com/chicoxyzzy) - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +****************************** - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +number-to-bn +1.7.0 +The MIT License - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] +Copyright (c) 2016 Nick Dodson. nickdodson.com - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - http://www.apache.org/licenses/LICENSE-2.0 +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -p-limit -3.1.0 -MIT License +object-assign +4.1.1 +The MIT License (MIT) -Copyright (c) Sindre Sorhus (https://sindresorhus.com) +Copyright (c) Sindre Sorhus (sindresorhus.com) -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -plist -3.1.0 -(The MIT License) - -Copyright (c) 2010-2017 Nathan Rajlich +object.assign +4.1.5 +The MIT License (MIT) -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: +Copyright (c) 2014 Jordan Harband -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -p-locate -5.0.0 +object-inspect +1.13.2 MIT License -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -pony-cause -2.1.10 -BSD Zero Clause License (0BSD) - -Copyright (c) 2020 Pelle Wessman - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - +Copyright (c) 2013 James Halliday -****************************** +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -popper.js -1.15.0 -license: MIT -authors: Federico Zivolo +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -****************************** +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -popper.js -1.16.1-lts -license: MIT -authors: Federico Zivolo ****************************** -@popperjs/core -2.9.2 +object-is +1.1.5 The MIT License (MIT) -Copyright (c) 2019 Federico Zivolo +Copyright (c) 2014 Jordan Harband Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -22825,31 +22013,85 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -printj -1.1.2 -Copyright (C) 2016-present SheetJS - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +object-keys +1.1.1 +The MIT License (MIT) - http://www.apache.org/licenses/LICENSE-2.0 +Copyright (C) 2013 Jordan Harband - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -process -0.11.10 +once +1.4.0 +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +pako +1.0.6 (The MIT License) -Copyright (c) 2013 Roman Shtylman +Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +parse-entities +2.0.0 +(The MIT License) + +Copyright (c) 2015 Titus Wormer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -22873,9 +22115,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -process-nextick-args -2.0.1 -# Copyright (c) 2015 Calvin Metcalf +path-parse +1.0.7 +The MIT License (MIT) + +Copyright (c) 2015 Javier Blanco Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22887,21 +22131,22 @@ furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE.** +SOFTWARE. ****************************** -promise-polyfill -8.3.0 -Copyright (c) 2014 Taylor Hakes -Copyright (c) 2014 Forbes Lindesay +path-to-regexp +1.9.0 +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22921,13 +22166,14 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ****************************** -promise-to-callback -1.0.0 +pbkdf2 +3.1.2 The MIT License (MIT) -Copyright (c) Steve Mao (github.com/stevemao) +Copyright (c) 2014 Daniel Cousens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22936,53 +22182,145 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -property-information -5.6.0 -(The MIT License) +performance-now +0.2.0 +Copyright (c) 2013 Meryn Stol -Copyright (c) 2015 Titus Wormer +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +performance-now +2.1.0 +Copyright (c) 2013 Braveg1rl + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -prop-types -15.8.1 +picocolors +1.1.1 +ISC License + +Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +pify +5.0.0 MIT License -Copyright (c) 2013-present, Facebook, Inc. +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +pony-cause +2.1.10 +BSD Zero Clause License (0BSD) + +Copyright (c) 2020 Pelle Wessman + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +popper.js +1.15.0 +license: MIT +authors: Federico Zivolo + +****************************** + +popper.js +1.16.1-lts +license: MIT +authors: Federico Zivolo + +****************************** + +@popperjs/core +2.9.2 +The MIT License (MIT) + +Copyright (c) 2019 Federico Zivolo + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +possible-typed-array-names +1.0.0 +MIT License + +Copyright (c) 2024 Jordan Harband Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -23005,17 +22343,177 @@ SOFTWARE. ****************************** -protobufjs -7.2.6 -This license applies to all parts of protobuf.js except those files -either explicitly including or referencing a different license or -located in a directory containing a different LICENSE file. - ---- +process +0.11.10 +(The MIT License) -Copyright (c) 2016, Daniel Wirtz All rights reserved. +Copyright (c) 2013 Roman Shtylman -Redistribution and use in source and binary forms, with or without +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +process-nextick-args +2.0.1 +# Copyright (c) 2015 Calvin Metcalf + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.** + + +****************************** + +promise-polyfill +8.3.0 +Copyright (c) 2014 Taylor Hakes +Copyright (c) 2014 Forbes Lindesay + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + +promise-to-callback +1.0.0 +The MIT License (MIT) + +Copyright (c) Steve Mao (github.com/stevemao) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +property-information +5.6.0 +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +prop-types +15.8.1 +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +protobufjs +7.2.6 +This license applies to all parts of protobuf.js except those files +either explicitly including or referencing a different license or +located in a directory containing a different LICENSE file. + +--- + +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -23394,21 +22892,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -p-throttle -4.1.1 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** punycode @@ -23498,7 +22981,7 @@ authors: Kazuhiko Arase ****************************** qrcode.react -1.0.1 +3.1.0 ISC License Copyright (c) 2015, Paul O’Shannessy @@ -23515,53 +22998,8 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -****************************** - -qr.js -0.0.0 -Copyright (c) 2013 Roman Shtylman - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -qs -6.11.2 -BSD 3-Clause License - -Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors) -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +This product bundles QR Code Generator, which is available under a +"MIT" license. For details, see src/third-party/qrcodegen. ****************************** @@ -23679,6 +23117,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +react +18.2.0 +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** react-beautiful-dnd @@ -23698,6 +23163,19 @@ See the License for the specific language governing permissions and limitations under the License. +****************************** + +react-chartjs-2 +5.2.0 +Copyright 2020 Jeremy Ayerst + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** react-clientside-effect @@ -23755,11 +23233,38 @@ SOFTWARE. ****************************** -react-easy-swipe -0.0.21 -license: MIT -authors: Leandro Augusto Lemos - +react-dom +18.2.0 +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +react-easy-swipe +0.0.21 +license: MIT +authors: Leandro Augusto Lemos + ****************************** react-fast-compare @@ -23978,13 +23483,6 @@ SOFTWARE. -****************************** - -@react-native/normalize-color -2.1.0 -license: MIT -authors: undefined - ****************************** react-popper @@ -24015,7 +23513,7 @@ SOFTWARE. ****************************** react-redux -7.2.0 +7.2.9 The MIT License (MIT) Copyright (c) 2015-present Dan Abramov @@ -24069,10 +23567,40 @@ SOFTWARE. ****************************** react-router -5.1.2 +5.3.4 MIT License -Copyright (c) React Training 2016-2018 +Copyright (c) React Training 2015-2019 +Copyright (c) Remix Software 2020-2022 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +react-router +6.26.2 +MIT License + +Copyright (c) React Training LLC 2015-2019 +Copyright (c) Remix Software Inc. 2020-2021 +Copyright (c) Shopify Inc. 2022-2023 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -24096,10 +23624,40 @@ SOFTWARE. ****************************** react-router-dom -5.1.2 +5.3.4 MIT License -Copyright (c) React Training 2016-2018 +Copyright (c) React Training 2015-2019 +Copyright (c) Remix Software 2020-2022 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +react-router-dom-v5-compat +6.26.2 +MIT License + +Copyright (c) React Training LLC 2015-2019 +Copyright (c) Remix Software Inc. 2020-2021 +Copyright (c) Shopify Inc. 2022-2023 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -24481,7 +24039,7 @@ SOFTWARE. ****************************** regexp.prototype.flags -1.5.1 +1.5.2 The MIT License (MIT) Copyright (C) 2014 Jordan Harband @@ -24541,6 +24099,35 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@remix-run/router +1.19.2 +MIT License + +Copyright (c) React Training LLC 2015-2019 +Copyright (c) Remix Software Inc. 2020-2021 +Copyright (c) Shopify Inc. 2022-2023 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** remove-trailing-slash @@ -24605,11 +24192,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -require-from-string -2.0.2 +reselect +3.0.1 The MIT License (MIT) -Copyright (c) Vsevolod Strukchinsky (github.com/floatdrop) +Copyright (c) 2015-2016 Reselect Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -24618,25 +24205,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** reselect -3.0.1 +4.1.8 The MIT License (MIT) -Copyright (c) 2015-2016 Reselect Contributors +Copyright (c) 2015-2018 Reselect Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -24660,7 +24247,7 @@ SOFTWARE. ****************************** reselect -4.1.8 +5.1.1 The MIT License (MIT) Copyright (c) 2015-2018 Reselect Contributors @@ -24711,21 +24298,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -resolve-from -5.0.0 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** resolve-pathname @@ -25864,7 +25436,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** rpc-websockets -7.11.1 +8.0.1 Copyright (c) Elpheria j.d.o.o. rpc-websockets is an Open Source project licensed under the terms of @@ -25877,6 +25449,214 @@ Please see https://www.elpheria.com/products/rpc-websockets-pro.html or email us at info@elpheria.com for more detail. +****************************** + +rxjs +7.8.1 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + ****************************** safe-buffer @@ -25985,53 +25765,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -sax -1.3.0 -The ISC License - -Copyright (c) 2010-2022 Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -==== - -`String.fromCodePoint` by Mathias Bynens used according to terms of MIT -License, as follows: - -Copyright (c) 2010-2022 Mathias Bynens - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** scheduler @@ -26061,11 +25794,11 @@ SOFTWARE. ****************************** -scrypt-js -3.0.1 -The MIT License (MIT) +scheduler +0.23.0 +MIT License -Copyright (c) 2016 Richard Moore +Copyright (c) Facebook, Inc. and its affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26074,29 +25807,28 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@scure/base -1.1.6 +scrypt-js +3.0.1 The MIT License (MIT) -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2016 Richard Moore Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal +of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is @@ -26105,7 +25837,7 @@ furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -26114,40 +25846,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@scure/bip32 -1.1.0 -The MIT License (MIT) - -Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - ****************************** -@scure/bip32 -1.3.3 +@scure/base +1.1.9 The MIT License (MIT) -Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) +Copyright (c) 2022 Paul Miller (https://paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal @@ -26170,8 +25876,8 @@ THE SOFTWARE. ****************************** -@scure/bip39 -1.1.0 +@scure/bip32 +1.4.0 The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -26198,7 +25904,7 @@ THE SOFTWARE. ****************************** @scure/bip39 -1.2.2 +1.3.0 The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -26225,7 +25931,7 @@ THE SOFTWARE. ****************************** secp256k1 -4.0.2 +4.0.4 The MIT License (MIT) Copyright (c) 2014-2016 secp256k1-node contributors @@ -26255,7 +25961,7 @@ THE SOFTWARE. ****************************** secp256k1 -4.0.3 +5.0.1 The MIT License (MIT) Copyright (c) 2014-2016 secp256k1-node contributors @@ -26333,28 +26039,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** semver -7.5.3 -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -semver -7.6.2 +7.6.3 The ISC License Copyright (c) Isaac Z. Schlueter and Contributors @@ -26375,141 +26060,217 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @sentry/browser -7.53.0 -Copyright (c) 2019 Sentry (https://sentry.io) and individual contributors. All rights reserved. +8.33.1 +MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Copyright (c) 2019-2024 Functional Software, Inc. dba Sentry -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @sentry/core -7.53.0 -Copyright (c) 2019 Sentry (https://sentry.io) and individual contributors. All rights reserved. +8.33.1 +MIT License + +Copyright (c) 2019-2024 Functional Software, Inc. dba Sentry + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@sentry-internal/browser-utils +8.33.1 +MIT License + +Copyright (c) 2020-2024 Functional Software, Inc. dba Sentry -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@sentry/integrations -7.53.0 -Copyright (c) 2019 Sentry (https://sentry.io) and individual contributors. All rights reserved. +@sentry-internal/feedback +8.33.1 +MIT License + +Copyright (c) 2023-2024 Functional Software, Inc. dba Sentry -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@sentry-internal/tracing -7.53.0 -Copyright (c) 2020 Sentry (https://sentry.io) and individual contributors. All rights reserved. +@sentry-internal/replay +8.33.1 +MIT License + +Copyright (c) 2022-2024 Functional Software, Inc. dba Sentry -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@sentry/replay -7.53.0 -Copyright (c) 2022 Sentry (https://sentry.io) and individual contributors. All rights reserved. +@sentry-internal/replay-canvas +8.33.1 +MIT License + +Copyright (c) 2024 Functional Software, Inc. dba Sentry -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @sentry/types -7.53.0 -Copyright (c) 2019 Sentry (https://sentry.io) and individual contributors. All rights reserved. +8.33.1 +MIT License + +Copyright (c) 2019-2024 Functional Software, Inc. dba Sentry -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @sentry/utils -7.53.0 -Copyright (c) 2019 Sentry (https://sentry.io) and individual contributors. All rights reserved. +8.33.1 +MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Copyright (c) 2019-2024 Functional Software, Inc. dba Sentry + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -26722,7 +26483,7 @@ ses ****************************** set-function-length -1.2.1 +1.2.2 MIT License Copyright (c) Jordan Harband and contributors @@ -26749,7 +26510,7 @@ SOFTWARE. ****************************** set-function-name -2.0.1 +2.0.2 MIT License Copyright (c) Jordan Harband and contributors @@ -26806,6 +26567,33 @@ set-immediate-shim license: MIT authors: Sindre Sorhus +****************************** + +sha256-uint8array +0.10.7 +MIT License + +Copyright (c) 2020-2023 Yusuke Kawasaki + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** sha.js @@ -26861,36 +26649,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -****************************** - -shebang-command -2.0.0 -MIT License - -Copyright (c) Kevin Mårtensson (github.com/kevva) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -shebang-regex -3.0.0 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** side-channel @@ -26918,50 +26676,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -signal-exit -3.0.7 -The ISC License - -Copyright (c) 2015, Contributors - -Permission to use, copy, modify, and/or distribute this software -for any purpose with or without fee is hereby granted, provided -that the above copyright notice and this permission notice -appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE -LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -signal-exit -4.0.2 -The ISC License - -Copyright (c) 2015-2023 Benjamin Coe, Isaac Z. Schlueter, and Contributors - -Permission to use, copy, modify, and/or distribute this software -for any purpose with or without fee is hereby granted, provided -that the above copyright notice and this permission notice -appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE -LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** simple-git @@ -26969,32 +26683,6 @@ simple-git license: MIT authors: Steve King -****************************** - -simple-plist -1.4.0 -The MIT License (MIT) - -Copyright (c) 2013 Joe Wollard - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** @sinclair/typebox @@ -27032,53 +26720,18 @@ authors: Will O'Beirne ****************************** -slash -3.0.0 -MIT License +siwe +2.3.2 +license: Apache-2.0 +authors: Spruce Systems Inc. -Copyright (c) Sindre Sorhus (sindresorhus.com) +****************************** -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +smart-buffer +4.2.0 +The MIT License (MIT) -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -slugify -1.6.6 -The MIT License (MIT) - -Copyright (c) Simeon Velichkov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -smart-buffer -4.2.0 -The MIT License (MIT) - -Copyright (c) 2013-2017 Josh Glazebrook +Copyright (c) 2013-2017 Josh Glazebrook Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -27131,6 +26784,58 @@ socks-proxy-agent license: MIT authors: Nathan Rajlich (http://n8.io/) +****************************** + +@solana/addresses +2.0.0-rc.4 +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/assertions +2.0.0-rc.4 +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** @solana/buffer-layout @@ -27158,10 +26863,114 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@solana/codecs-core +2.0.0-rc.4 +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-numbers +2.0.0-rc.4 +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-strings +2.0.0-rc.4 +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/errors +2.0.0-rc.4 +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** @solana/web3.js -1.91.8 +1.95.4 Copyright (c) 2023 Solana Labs, Inc Permission is hereby granted, free of charge, to any person obtaining @@ -27184,6 +26993,13 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@sovpro/delimited-stream +1.1.0 +license: MIT +authors: sovpro + ****************************** space-separated-tokens @@ -27251,18 +27067,25 @@ authors: Spruce Systems Inc. ****************************** -stop-iteration-iterator -1.0.0 -MIT License +@spruceid/siwe-parser +2.1.2 +license: Apache-2.0 +authors: Spruce Systems Inc. -Copyright (c) 2023 Jordan Harband +****************************** -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +@stablelib/binary +1.0.1 +This software is licensed under the MIT license: + +Copyright (C) 2016 Dmitry Chestnykh + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. @@ -27278,73 +27101,174 @@ SOFTWARE. ****************************** -stream-browserify -3.0.0 -MIT License +@stablelib/int +1.0.1 +This software is licensed under the MIT license: -Copyright (c) James Halliday +Copyright (C) 2016 Dmitry Chestnykh Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -stream-buffers -2.2.0 -license: Unlicense -authors: Sam Day - -****************************** +@stablelib/random +1.0.2 +This software is licensed under the MIT license: -stream-splicer -2.0.0 -This software is released under the MIT license: +Copyright (C) 2016 Dmitry Chestnykh Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -streamx -2.15.1 -The MIT License (MIT) +@stablelib/wipe +1.0.1 +This software is licensed under the MIT license: -Copyright (c) 2019 Mathias Buus +Copyright (C) 2016 Dmitry Chestnykh -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +stop-iteration-iterator +1.0.0 +MIT License + +Copyright (c) 2023 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +stream-browserify +3.0.0 +MIT License + +Copyright (c) James Halliday + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +stream-splicer +2.0.0 +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +streamx +2.15.1 +The MIT License (MIT) + +Copyright (c) 2019 Mathias Buus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -27483,21 +27407,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -string-width -5.1.2 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** strip-ansi @@ -27513,21 +27422,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -strip-ansi -7.1.0 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** strip-hex-prefix @@ -27610,37 +27504,10 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -sucrase -3.35.0 -The MIT License (MIT) - -Copyright (c) 2012-2018 various contributors (see AUTHORS) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** superstruct -0.14.2 +1.0.3 The MIT License Copyright © 2017, [Ian Storm Taylor](https://ianstormtaylor.com) @@ -27655,7 +27522,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** superstruct -1.0.3 +2.0.2 The MIT License Copyright © 2017, [Ian Storm Taylor](https://ianstormtaylor.com) @@ -27724,6 +27591,432 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@swc/core +1.4.11 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +****************************** + +@swc/core-linux-x64-gnu +1.4.11 +license: Apache-2.0 AND MIT +authors: 강동윤 + +****************************** + +@swc/counter +0.1.3 +license: Apache-2.0 +authors: 강동윤 + +****************************** + +@swc/types +0.1.12 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + ****************************** tar-stream @@ -27787,12 +28080,32 @@ For more information, please refer to ****************************** -thenify -3.3.1 +through +2.3.8 +Apache License, Version 2.0 + +Copyright (c) 2011 Dominic Tarr -The MIT License (MIT) +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +****************************** + +tiny-invariant +1.3.3 +MIT License -Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and contributors +Copyright (c) 2019 Alexander Reardon Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -27801,115 +28114,24 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -thenify-all -1.6.0 +tiny-secp256k1 +1.1.6 +MIT License -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -through -2.3.8 -Apache License, Version 2.0 - -Copyright (c) 2011 Dominic Tarr - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -****************************** - -through2 -2.0.5 -# The MIT License (MIT) - -**Copyright (c) Rod Vagg (the "Original Author") and additional contributors** - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -tiny-invariant -1.3.3 -MIT License - -Copyright (c) 2019 Alexander Reardon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -****************************** - -tiny-secp256k1 -1.1.6 -MIT License - -Copyright (c) 2018 bitcoinjs contributors +Copyright (c) 2018 bitcoinjs contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -27963,22 +28185,6 @@ to-data-view license: MIT authors: undefined -****************************** - -to-fast-properties -2.0.0 -MIT License - -Copyright (c) 2014 Petka Antonov - 2015 Sindre Sorhus - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** toggle-selection @@ -27996,14 +28202,14 @@ authors: Sebastian Mayr ****************************** @trezor/analytics -1.0.16 <> +1.2.0 <> license: Custom: https://data.trezor.io authors: undefined ****************************** @trezor/blockchain-link -2.1.28 +2.3.0 # TREZOR REFERENCE SOURCE LICENSE (T-RSL) This license governs use of the accompanying software. If you use the software, @@ -28059,21 +28265,21 @@ non-infringement. ****************************** @trezor/blockchain-link-types -1.0.15 <> +1.2.0 <> license: UNKNOWN authors: undefined ****************************** @trezor/blockchain-link-utils -1.0.16 <> +1.2.0 <> license: UNKNOWN authors: undefined ****************************** @trezor/connect -9.2.2 +9.4.0 # TREZOR REFERENCE SOURCE LICENSE (T-RSL) This license governs use of the accompanying software. If you use the software, @@ -28129,14 +28335,14 @@ non-infringement. ****************************** @trezor/connect-analytics -1.0.14 <> +1.2.0 <> license: UNKNOWN authors: undefined ****************************** @trezor/connect-common -0.0.31 +0.2.0 # TREZOR REFERENCE SOURCE LICENSE (T-RSL) This license governs use of the accompanying software. If you use the software, @@ -28248,7 +28454,7 @@ non-infringement. ****************************** @trezor/connect-web -9.2.2 +9.4.0 # TREZOR REFERENCE SOURCE LICENSE (T-RSL) This license governs use of the accompanying software. If you use the software, @@ -28304,35 +28510,35 @@ non-infringement. ****************************** @trezor/env-utils -1.0.15 +1.2.0 license: UNKNOWN authors: undefined ****************************** @trezor/protobuf -1.0.11 -license: UNKNOWN +1.2.0 +license: Custom: https://github.com/trezor/trezor-firmware/tree/main/common/protob authors: undefined ****************************** @trezor/protocol -1.0.7 +1.2.0 license: UNKNOWN authors: undefined ****************************** @trezor/schema-utils -1.0.3 <> +1.2.0 <> license: Custom: https://github.com/sinclairzx81/typebox authors: undefined ****************************** @trezor/transport -1.1.27 +1.3.0 # TREZOR REFERENCE SOURCE LICENSE (T-RSL) This license governs use of the accompanying software. If you use the software, @@ -28388,14 +28594,14 @@ non-infringement. ****************************** @trezor/type-utils -1.0.5 <> +1.1.0 <> license: UNKNOWN authors: undefined ****************************** @trezor/utils -9.0.23 +9.2.0 # TREZOR REFERENCE SOURCE LICENSE (T-RSL) This license governs use of the accompanying software. If you use the software, @@ -28451,7 +28657,7 @@ non-infringement. ****************************** @trezor/utxo-lib -2.0.8 +2.2.0 # TREZOR REFERENCE SOURCE LICENSE (T-RSL) This license governs use of the accompanying software. If you use the software, @@ -28560,328 +28766,91 @@ THE SOFTWARE. ****************************** -ts-interface-checker -0.1.13 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +tslib +2.4.0 +Copyright (c) Microsoft Corporation. - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. - 1. Definitions. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +****************************** - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +tslib +2.6.2 +Copyright (c) Microsoft Corporation. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +****************************** - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +ts-mixer +6.0.4 +MIT License - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +Copyright (c) 2024 Tanner Nielsen - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +****************************** - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +tweetnacl +1.0.3 +This is free and unencumbered software released into the public domain. - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -****************************** - -tslib -1.14.1 -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -****************************** - -tslib -2.6.2 -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -****************************** - -ts-mixer -6.0.4 -MIT License - -Copyright (c) 2024 Tanner Nielsen - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -tweetnacl -1.0.3 -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to - - -****************************** - -tweetnacl-util -0.15.1 -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to @@ -28942,13 +28911,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -type-fest -4.15.0 -license: (MIT OR CC0-1.0) -authors: Sindre Sorhus - ****************************** typeforce @@ -29118,6 +29080,33 @@ authors: Mohamed Hegazy SOFTWARE +****************************** + +@types/hoist-non-react-statics +3.3.1 + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + ****************************** @types/jsonwebtoken @@ -29148,7 +29137,7 @@ authors: Mohamed Hegazy ****************************** @types/lodash -4.14.184 +4.17.0 MIT License Copyright (c) Microsoft Corporation. @@ -29256,7 +29245,7 @@ authors: Mohamed Hegazy ****************************** @types/node -20.12.7 +18.15.13 MIT License Copyright (c) Microsoft Corporation. @@ -29282,8 +29271,8 @@ authors: Mohamed Hegazy ****************************** -@types/pbkdf2 -3.1.0 +@types/node +20.16.11 MIT License Copyright (c) Microsoft Corporation. @@ -29309,11 +29298,11 @@ authors: Mohamed Hegazy ****************************** -@types/prop-types -15.7.3 +@types/pbkdf2 +3.1.0 MIT License - Copyright (c) Microsoft Corporation. All rights reserved. + Copyright (c) Microsoft Corporation. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -29336,8 +29325,8 @@ authors: Mohamed Hegazy ****************************** -@types/punycode -2.1.0 +@types/prop-types +15.7.3 MIT License Copyright (c) Microsoft Corporation. All rights reserved. @@ -29363,9 +29352,63 @@ authors: Mohamed Hegazy ****************************** -@types/react -16.9.53 - MIT License +@types/punycode +2.1.0 + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/react +16.9.53 + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/react-redux +7.1.33 + MIT License Copyright (c) Microsoft Corporation. @@ -29469,6 +29512,33 @@ authors: Mohamed Hegazy SOFTWARE +****************************** + +@types/uuid +10.0.0 + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + ****************************** @types/uuid @@ -29709,9 +29779,29 @@ SOFTWARE. ****************************** undici-types -5.26.5 -license: MIT -authors: Daniele Belardi , Ethan Arrowood , Matteo Collina , Matthew Aitken , Robert Nagy , Szymon Marczak , Tomas Della Vedova +6.19.8 +MIT License + +Copyright (c) Matteo Collina and Undici contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + ****************************** @@ -29965,7 +30055,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** update-browserslist-db -1.0.13 +1.1.1 The MIT License (MIT) Copyright 2022 Andrey Sitnik and other contributors @@ -30215,11 +30305,11 @@ OTHER DEALINGS IN THE SOFTWARE. ****************************** -uuid -7.0.3 -The MIT License (MIT) +utility-types +3.11.0 +MIT License -Copyright (c) 2010-2016 Robert Kieffer and other contributors +Copyright (c) 2016 Piotr Witek (http://piotrwitek.github.io) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -30240,6 +30330,21 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +uuid +10.0.0 +The MIT License (MIT) + +Copyright (c) 2010-2020 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** uuid @@ -30894,7 +30999,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** webextension-polyfill -0.8.0 +0.12.0 Mozilla Public License Version 2.0 ================================== @@ -31291,27 +31396,19 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ****************************** websocket-driver -0.7.0 -# The MIT License - -Copyright (c) 2010-2017 James Coglan +0.7.4 +Copyright 2010-2020 James Coglan -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the 'Software'), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + http://www.apache.org/licenses/LICENSE-2.0 -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. ****************************** @@ -31359,499 +31456,20 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -which -2.0.2 -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** which-boxed-primitive -1.0.2 -MIT License - -Copyright (c) 2019 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -which-collection -1.0.1 -MIT License - -Copyright (c) 2019 Inspect JS - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -which-typed-array -1.1.9 -The MIT License (MIT) - -Copyright (c) 2015 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -****************************** - -wif -4.0.0 -The MIT License (MIT) - -Copyright (c) 2015 Daniel Cousens - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -wrap-ansi -7.0.0 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -wrap-ansi -8.1.0 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -wrappy -1.0.2 -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -write-file-atomic -2.4.3 -Copyright (c) 2015, Rebecca Turner - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - - -****************************** - -ws -7.4.6 -The MIT License (MIT) - -Copyright (c) 2011 Einar Otto Stangvik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -ws -7.5.9 -The MIT License (MIT) - -Copyright (c) 2011 Einar Otto Stangvik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -ws -8.16.0 -Copyright (c) 2011 Einar Otto Stangvik -Copyright (c) 2013 Arnout Kazemier and contributors -Copyright (c) 2016 Luigi Pinca and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -xcode -3.0.1 - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -****************************** - -xhr2 -0.2.1 -Copyright (c) 2013 Victor Costan - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: +1.0.2 +MIT License + +Copyright (c) 2019 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. @@ -31867,64 +31485,38 @@ SOFTWARE. ****************************** -xml -1.0.1 -(The MIT License) - -Copyright (c) 2011-2016 Dylan Greene - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** +which-collection +1.0.1 +MIT License -xml2js -0.6.0 -Copyright 2010, 2011, 2012, 2013. All rights reserved. +Copyright (c) 2019 Inspect JS Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -xmlbuilder -11.0.1 +which-typed-array +1.1.15 The MIT License (MIT) -Copyright (c) 2013 Ozgur Ozcitak +Copyright (c) 2015 Jordan Harband Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -31933,25 +31525,26 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + ****************************** -xmlbuilder -14.0.0 +wif +4.0.0 The MIT License (MIT) -Copyright (c) 2013 Ozgur Ozcitak +Copyright (c) 2015 Daniel Cousens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -31960,25 +31553,61 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +wrap-ansi +7.0.0 +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +wrappy +1.0.2 +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -xmlbuilder -15.1.1 +ws +7.5.10 The MIT License (MIT) -Copyright (c) 2013 Ozgur Ozcitak +Copyright (c) 2011 Einar Otto Stangvik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -31987,44 +31616,121 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@xmldom/xmldom -0.7.13 -Copyright 2019 - present Christopher J. Brody and other contributors, as listed in: https://github.com/xmldom/xmldom/graphs/contributors -Copyright 2012 - 2017 @jindw and other contributors, as listed in: https://github.com/jindw/xmldom/graphs/contributors +ws +8.17.1 +Copyright (c) 2011 Einar Otto Stangvik +Copyright (c) 2013 Arnout Kazemier and contributors +Copyright (c) 2016 Luigi Pinca and contributors -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@xmldom/xmldom -0.8.10 -Copyright 2019 - present Christopher J. Brody and other contributors, as listed in: https://github.com/xmldom/xmldom/graphs/contributors -Copyright 2012 - 2017 @jindw and other contributors, as listed in: https://github.com/jindw/xmldom/graphs/contributors +ws +8.18.0 +Copyright (c) 2011 Einar Otto Stangvik +Copyright (c) 2013 Arnout Kazemier and contributors +Copyright (c) 2016 Luigi Pinca and contributors -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +xhr2 +0.2.1 +Copyright (c) 2013 Victor Costan + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +xml +1.0.1 +(The MIT License) + +Copyright (c) 2011-2016 Dylan Greene + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -32121,27 +31827,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -yallist -4.0.0 -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** yargs @@ -32189,25 +31874,10 @@ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -yocto-queue -0.1.0 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** zod -3.22.4 +3.23.8 MIT License Copyright (c) 2020 Colin McDonnell From ec359ed9ce1e4cffdccd580f22e524ed4ae2d5dd Mon Sep 17 00:00:00 2001 From: Harika <153644847+hjetpoluru@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:48:19 -0500 Subject: [PATCH 003/111] chore: Fix changelog title v12.8.0 (#28505) ## **Description** Updating the title in the changelog for v12.8.0 entries to help pass the CI [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28505?quickstart=1) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24d8c7f0683d..36b5649b3bf8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [12.8.0] -### Uncategorized +### Fixed - chore: Master sync ([#28459](https://github.com/MetaMask/metamask-extension/pull/28459)) - Merge origin/develop into master-sync - feat: Upgrade assets controllers to 43 with multichain polling for token lists + detection ([#28447](https://github.com/MetaMask/metamask-extension/pull/28447)) From 2d8473200ce510fde6ad041cdbb166c4093dfa43 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Thu, 21 Nov 2024 16:28:09 -0330 Subject: [PATCH 004/111] [cherry pick] chore: Reduce E2E test jobs run on PRs (#28525) (#28621) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a cherry-pick of #28525 for v12.8.0. This won't actually impact the release candidate branch or release, but this is being cherry-picked to reduce credit usage from cherry-pick PRs targeting this release. E2e test runs from cherry-pick PRs aren't a major source of credit usage, but these have been making it difficult for us to gauge how many branches are still running these jobs "illegitimately" due to being out-of-date. The hope is that after merging this, we can more easily detect which branches need to be updated, and be able to evaluate the success of this strategy in reducing credit usage. Original description: ## **Description** The number of E2E test jobs run on PRs has been reduced to save on CircleCI credits. We still run the "chrome MV3" test job, but the Firefox and "chrome MV2/webpack build" E2E test jobs are now only run on `develop`, `master`, and RC branches. This should result in huge CircleCI credit savings. These jobs were chosen because it's uncommon for test failures or flakiness to manifest in these jobs without also appearing in the Chrome MV3 E2E test job, and this job represents the mmajority of our userbase (the Chrome MV2/webpack build is only used for development). [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28525?quickstart=1) ## **Related issues** This is intended to reduce credit usage. There is no linked issue. ## **Manual testing steps** N/A ## **Screenshots/Recordings** N/A ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 70268a812421..7a81017489c1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -197,6 +197,7 @@ workflows: requires: - prep-deps - test-e2e-chrome-webpack: + <<: *develop_master_rc_only requires: - prep-build-test-webpack - get-changed-files-with-git-diff @@ -205,6 +206,7 @@ workflows: - prep-build-test - get-changed-files-with-git-diff - test-e2e-firefox: + <<: *develop_master_rc_only requires: - prep-build-test-mv2 - get-changed-files-with-git-diff From 5453b96a555fc86b00addcefd2007aed39826756 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Wed, 27 Nov 2024 11:37:56 -0330 Subject: [PATCH 005/111] Lint changelog --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cec2a6d7f67..9cb8f9eee839 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -203,6 +203,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - test: update notification date tests to be timezone agnostic ([#27925](https://github.com/MetaMask/metamask-extension/pull/27925)) - fix: updated event name for site cell component ([#27981](https://github.com/MetaMask/metamask-extension/pull/27981)) - fix(deps): gridplus-sdk@2.5.1->~2.6.0 ([#27973](https://github.com/MetaMask/metamask-extension/pull/27973)) + + ## [12.7.2] ### Fixed - Fix message signatures for Gridplus lattice hardware wallets ([#28694](https://github.com/MetaMask/metamask-extension/pull/28694)) @@ -5554,9 +5556,7 @@ Update styles and spacing on the critical error page ([#20350](https://github.c [Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.8.0...HEAD -[12.8.0]: https://github.com/MetaMask/metamask-extension/compare/v12.7.0...v12.8.0 -[12.7.0]: https://github.com/MetaMask/metamask-extension/compare/v12.6.1...v12.7.0 -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.7.2...HEAD +[12.8.0]: https://github.com/MetaMask/metamask-extension/compare/v12.7.2...v12.8.0 [12.7.2]: https://github.com/MetaMask/metamask-extension/compare/v12.7.1...v12.7.2 [12.7.1]: https://github.com/MetaMask/metamask-extension/compare/v12.7.0...v12.7.1 [12.7.0]: https://github.com/MetaMask/metamask-extension/compare/v12.6.2...v12.7.0 From a48abf3978ad5e5328b8827633bf54321db176cc Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Fri, 29 Nov 2024 10:20:31 +0000 Subject: [PATCH 006/111] Version v12.9.0 --- CHANGELOG.md | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 242 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dcfeae11739..926adfb6e190 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,245 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [12.9.0] +### Uncategorized +- fix: SIWE e2e test timing out and breaking ci ([#28801](https://github.com/MetaMask/metamask-extension/pull/28801)) +- fix: has_marketing_consent flag on metametrics ([#28795](https://github.com/MetaMask/metamask-extension/pull/28795)) +- chore: Bump `@metamask/eth-token-tracker` from v8 to v9 ([#28754](https://github.com/MetaMask/metamask-extension/pull/28754)) +- test: Fix `getEventPayloads` e2e test helper ([#28796](https://github.com/MetaMask/metamask-extension/pull/28796)) +- chore: bump `@metamask/preferences-controller` to `^14.0.0` ([#28778](https://github.com/MetaMask/metamask-extension/pull/28778)) +- chore: Master sync after 12.7.2 ([#28794](https://github.com/MetaMask/metamask-extension/pull/28794)) +- Merge branch 'master-sync' of https://github.com/MetaMask/metamask-extension into master-sync +- Merge origin/develop into master-sync +- feat: adding e2e for signature decoding api and enable it in extension ([#28423](https://github.com/MetaMask/metamask-extension/pull/28423)) +- feat: Support returning a txHash asap for smart transactions ([#28770](https://github.com/MetaMask/metamask-extension/pull/28770)) +- feat: multichain send action adds solana ([#28738](https://github.com/MetaMask/metamask-extension/pull/28738)) +- chore: Cleanup PortfolioView ([#28785](https://github.com/MetaMask/metamask-extension/pull/28785)) +- test: migrate signature redesign tests to page object model ([#28538](https://github.com/MetaMask/metamask-extension/pull/28538)) +- chore: Bump `@metamask/message-manager` to v11 ([#28758](https://github.com/MetaMask/metamask-extension/pull/28758)) +- feat: migrate `AppMedataController` to inherit from BaseController V2 ([#28783](https://github.com/MetaMask/metamask-extension/pull/28783)) +- chore: Add error handling for `setCorrectChain` ([#28740](https://github.com/MetaMask/metamask-extension/pull/28740)) +- fix: Add optional chaining to currencyRates check for stability ([#28753](https://github.com/MetaMask/metamask-extension/pull/28753)) +- chore: Bump `@metamask/providers` to v18 ([#28757](https://github.com/MetaMask/metamask-extension/pull/28757)) +- chore: Bump `@metamask/eth-json-rpc-middleware` to v15.0.0 ([#28756](https://github.com/MetaMask/metamask-extension/pull/28756)) +- fix: Phishing page metrics ([#28364](https://github.com/MetaMask/metamask-extension/pull/28364)) +- feat: Turn on `PortfolioView` ([#28661](https://github.com/MetaMask/metamask-extension/pull/28661)) +- fix: remove network modal ([#28765](https://github.com/MetaMask/metamask-extension/pull/28765)) +- chore: Update `@metamask/polling-controller` to v11 ([#28759](https://github.com/MetaMask/metamask-extension/pull/28759)) +- perf: Prevent Sentry from auto-generating spans for requests to Sentry ([#28613](https://github.com/MetaMask/metamask-extension/pull/28613)) +- feat: Integrate Snap notification services ([#27975](https://github.com/MetaMask/metamask-extension/pull/27975)) +- feat: PortfolioView: Add feature flag check for polling intervals ([#28501](https://github.com/MetaMask/metamask-extension/pull/28501)) +- fix: add dispatch detect Nfts on network switch ([#28769](https://github.com/MetaMask/metamask-extension/pull/28769)) +- feat: on UI side filtering put typed sign V4 requests for which decoding data is displayed ([#28762](https://github.com/MetaMask/metamask-extension/pull/28762)) +- chore: Bump `@metamask/eth-json-rpc-middleware` to v14.0.2 ([#28755](https://github.com/MetaMask/metamask-extension/pull/28755)) +- fix(wallet-overview): prevent send button clicked event to be sent twice ([#28772](https://github.com/MetaMask/metamask-extension/pull/28772)) +- refactor: move `getCurrentChainId` from `selectors/selectors.js` to `shared/modules/selectors/networks.ts` ([#27647](https://github.com/MetaMask/metamask-extension/pull/27647)) +- feat: adding metrics for signature decoding ([#28719](https://github.com/MetaMask/metamask-extension/pull/28719)) +- fix: fix transaction list message on token detail page ([#28764](https://github.com/MetaMask/metamask-extension/pull/28764)) +- chore: Bump `@metamask/permission-log-controller` to v3.0.1 ([#28747](https://github.com/MetaMask/metamask-extension/pull/28747)) +- chore: Bump `@metamask/ens-controller` from v13 to v14 ([#28746](https://github.com/MetaMask/metamask-extension/pull/28746)) +- test: add e2e for transaction decoding ([#28204](https://github.com/MetaMask/metamask-extension/pull/28204)) +- test: add integration tests for different types of Permit ([#27446](https://github.com/MetaMask/metamask-extension/pull/27446)) +- test: [POM] Migrate add token e2e tests to TS and Page Object Model ([#28658](https://github.com/MetaMask/metamask-extension/pull/28658)) +- chore: node.js 20.18 ([#28058](https://github.com/MetaMask/metamask-extension/pull/28058)) +- chore: Update `@metamask/gas-fee-controller` and peer deps ([#28745](https://github.com/MetaMask/metamask-extension/pull/28745)) +- fix: content dialog styling is being applied to all dialogs ([#28739](https://github.com/MetaMask/metamask-extension/pull/28739)) +- feat: Bump `@metamask/permission-controller` to `^11.0.0` ([#28743](https://github.com/MetaMask/metamask-extension/pull/28743)) +- feat: add e2e tests for multichain ([#28708](https://github.com/MetaMask/metamask-extension/pull/28708)) +- fix: Add metric trait for token network filter preference ([#28336](https://github.com/MetaMask/metamask-extension/pull/28336)) +- fix: Provide selector that enables cross-chain polling, regardless of network filter state ([#28662](https://github.com/MetaMask/metamask-extension/pull/28662)) +- chore: Remove unnecessary event prop ([#28546](https://github.com/MetaMask/metamask-extension/pull/28546)) +- fix: Revert "feat: Changing title for permit requests (#28537)" ([#28537](https://github.com/MetaMask/metamask-extension/pull/28537)) +- fix: Fix avatar size for current network ([#28731](https://github.com/MetaMask/metamask-extension/pull/28731)) +- fix:updated account name and length for dapp connections ([#28725](https://github.com/MetaMask/metamask-extension/pull/28725)) +- fix: Pass along decimal balance from asset-page to swaps UI ([#28707](https://github.com/MetaMask/metamask-extension/pull/28707)) +- chore: adds Solana support for the account overview ([#28411](https://github.com/MetaMask/metamask-extension/pull/28411)) +- feat: Enable redesigned transaction confirmations for all users ([#28321](https://github.com/MetaMask/metamask-extension/pull/28321)) +- feat: cross chain swaps - tx status - BridgeStatusController ([#28636](https://github.com/MetaMask/metamask-extension/pull/28636)) +- fix: use BN from bn.js instead of ethereumjs-util ([#28146](https://github.com/MetaMask/metamask-extension/pull/28146)) +- feat: Add first time interaction warning ([#28435](https://github.com/MetaMask/metamask-extension/pull/28435)) +- feat: enable account syncing in production ([#28596](https://github.com/MetaMask/metamask-extension/pull/28596)) +- test: add accounts sync test with balance detection ([#28715](https://github.com/MetaMask/metamask-extension/pull/28715)) +- chore: Bump Snaps packages ([#28678](https://github.com/MetaMask/metamask-extension/pull/28678)) +- fix: transaction flow section layout on re-designed confirmation pages ([#28720](https://github.com/MetaMask/metamask-extension/pull/28720)) +- feat: Changing title for permit requests ([#28537](https://github.com/MetaMask/metamask-extension/pull/28537)) +- fix: add e2e for portfolio view polling ([#28682](https://github.com/MetaMask/metamask-extension/pull/28682)) +- fix: PortfolioView swap native token bug ([#28639](https://github.com/MetaMask/metamask-extension/pull/28639)) +- fix: prevent non-current network tokens from being hidden incorrectly ([#28674](https://github.com/MetaMask/metamask-extension/pull/28674)) +- fix: fix `ConnectPage` when a non-EVM account is selected ([#28436](https://github.com/MetaMask/metamask-extension/pull/28436)) +- test: [POM] Migrate create btc account e2e tests to TS and Page Object Model ([#28437](https://github.com/MetaMask/metamask-extension/pull/28437)) +- fix: SonarCloud workflow_run ([#28693](https://github.com/MetaMask/metamask-extension/pull/28693)) +- fix: swaps approval checking for approvals between 0 and unlimited ([#28680](https://github.com/MetaMask/metamask-extension/pull/28680)) +- chore: Restrict MMI test runs ([#28655](https://github.com/MetaMask/metamask-extension/pull/28655)) +- feat: change description of enabling simulation message in settings ([#28536](https://github.com/MetaMask/metamask-extension/pull/28536)) +- test: blockaid e2e test for contract interaction ([#28156](https://github.com/MetaMask/metamask-extension/pull/28156)) +- perf: add React.lazy to the Routes ([#28172](https://github.com/MetaMask/metamask-extension/pull/28172)) +- fix: add missing filter for scheduled job rerun-from-failed ([#28644](https://github.com/MetaMask/metamask-extension/pull/28644)) +- fix: Add default value to custom nonce modal ([#28659](https://github.com/MetaMask/metamask-extension/pull/28659)) +- fix: Reduce max pet name length ([#28660](https://github.com/MetaMask/metamask-extension/pull/28660)) +- test: rename balance functions to cover both Ganache and Anvil in preparation for ganache migration ([#28676](https://github.com/MetaMask/metamask-extension/pull/28676)) +- fix: display new network popup only for accounts that are compatible. ([#28535](https://github.com/MetaMask/metamask-extension/pull/28535)) +- feat: adding tooltip to signature decoding state changes ([#28430](https://github.com/MetaMask/metamask-extension/pull/28430)) +- fix: add alert when selected account is different from signing account in confirmation ([#28562](https://github.com/MetaMask/metamask-extension/pull/28562)) +- test: Adding unit test for setupPhishingCommunication and setUpCookieHandlerCommunication ([#27736](https://github.com/MetaMask/metamask-extension/pull/27736)) +- chore: PortfolioView™: Design Review Cleanup: Networks, sort, & Menu ([#28663](https://github.com/MetaMask/metamask-extension/pull/28663)) +- chore: sort and display all bridge quotes ([#27731](https://github.com/MetaMask/metamask-extension/pull/27731)) +- fix: market data for native tokens with non zero addresses ([#28584](https://github.com/MetaMask/metamask-extension/pull/28584)) +- fix: Reset streams on BFCache events ([#24950](https://github.com/MetaMask/metamask-extension/pull/24950)) +- fix: add unit test for assets polling loops ([#28646](https://github.com/MetaMask/metamask-extension/pull/28646)) +- chore: Run MMI tests on long-running branches ([#28651](https://github.com/MetaMask/metamask-extension/pull/28651)) +- fix: Provide maximal asset list filter space ([#28590](https://github.com/MetaMask/metamask-extension/pull/28590)) +- chore: bump `keyring-api` to `^10.1.0` + `eth-snap-keyring` to `^5.0.1` ([#28545](https://github.com/MetaMask/metamask-extension/pull/28545)) +- chore: updating filter icon to align with figma ([#28547](https://github.com/MetaMask/metamask-extension/pull/28547)) +- test: rename the `GanacheContractAddressRegistry` class in preparation for ganache migration ([#28595](https://github.com/MetaMask/metamask-extension/pull/28595)) +- chore: Update and use selectors for which chains to poll ([#28586](https://github.com/MetaMask/metamask-extension/pull/28586)) +- feat: Display '< 0.01' instead of '0.00' for the fiat value of networ… ([#28543](https://github.com/MetaMask/metamask-extension/pull/28543)) +- Merge origin/develop into master-sync +- chore: rerun workflow from failed ([#28143](https://github.com/MetaMask/metamask-extension/pull/28143)) +- chore: change e2e quality gate reruns for new/changed tests from 5 to 4 ([#28611](https://github.com/MetaMask/metamask-extension/pull/28611)) +- feat: display native values returned from decoding api ([#28374](https://github.com/MetaMask/metamask-extension/pull/28374)) +- chore: Branch off of "New Crowdin translations by Github Action" ([#28390](https://github.com/MetaMask/metamask-extension/pull/28390)) +- refactor: move `getProviderConfig` out of `ducks/metamask.js` to `shared/selectors/networks.ts` ([#27646](https://github.com/MetaMask/metamask-extension/pull/27646)) +- test: Fixed artifacts issue due to switching window title ([#28469](https://github.com/MetaMask/metamask-extension/pull/28469)) +- fix: Network filter must respect `PORTFOLIO_VIEW` feature flag ([#28626](https://github.com/MetaMask/metamask-extension/pull/28626)) +- test: Fix flakiness caused by display of newly switched to network modal ([#28625](https://github.com/MetaMask/metamask-extension/pull/28625)) +- feat: multichain token detection ([#28380](https://github.com/MetaMask/metamask-extension/pull/28380)) +- fix: fix test networks display for portfolio view ([#28601](https://github.com/MetaMask/metamask-extension/pull/28601)) +- feat(SwapsController): Remove reliance on global network ([#28275](https://github.com/MetaMask/metamask-extension/pull/28275)) +- feat: `PortfolioView` ([#28593](https://github.com/MetaMask/metamask-extension/pull/28593)) +- fix: replace unreliable setTimeout usage with waitFor ([#28620](https://github.com/MetaMask/metamask-extension/pull/28620)) +- feat: Hook in Portfolio Entry Points ([#27607](https://github.com/MetaMask/metamask-extension/pull/27607)) +- feat: cross chain swaps - tx submit ([#27262](https://github.com/MetaMask/metamask-extension/pull/27262)) +- chore: centralize redesigned confirmation decision logic ([#28445](https://github.com/MetaMask/metamask-extension/pull/28445)) +- chore: upgrade transaction controller to increase polling rate ([#28452](https://github.com/MetaMask/metamask-extension/pull/28452)) +- fix: fix account list item for portfolio view ([#28598](https://github.com/MetaMask/metamask-extension/pull/28598)) +- feat: Better handle very long names in the name component ([#28560](https://github.com/MetaMask/metamask-extension/pull/28560)) +- fix: PortfolioView: Remove pausedChainIds from selector ([#28552](https://github.com/MetaMask/metamask-extension/pull/28552)) +- refactor: Cherry pick asset-list-control-bar updates ([#28575](https://github.com/MetaMask/metamask-extension/pull/28575)) +- fix: Gracefully handle bad responses from `net_version` calls to RPC endpoint when getting Provider Network State ([#27509](https://github.com/MetaMask/metamask-extension/pull/27509)) +- fix: use PORTFOLIO_VIEW flag to determine token list polling ([#28579](https://github.com/MetaMask/metamask-extension/pull/28579)) +- ci: limit playwright install to chromium browser only ([#28580](https://github.com/MetaMask/metamask-extension/pull/28580)) +- fix: use PORTFOLIO_VIEW flag to determine chain polling ([#28504](https://github.com/MetaMask/metamask-extension/pull/28504)) +- fix(sentry sampling): divide by 2 our sentry trace sample rate to avoid exceeding our quota ([#28573](https://github.com/MetaMask/metamask-extension/pull/28573)) +- fix: contact names should not allow duplication ([#28249](https://github.com/MetaMask/metamask-extension/pull/28249)) +- feat: account syncing various updates ([#28541](https://github.com/MetaMask/metamask-extension/pull/28541)) +- chore: Bump Snaps packages ([#28557](https://github.com/MetaMask/metamask-extension/pull/28557)) +- feat: cross chain aggregated balance ([#28456](https://github.com/MetaMask/metamask-extension/pull/28456)) +- fix: Address design review for NFT token send ([#28433](https://github.com/MetaMask/metamask-extension/pull/28433)) +- test: add token price privacy spec ([#28556](https://github.com/MetaMask/metamask-extension/pull/28556)) +- feat: display ERC20 and ERC721 token details returns by decoding api ([#28366](https://github.com/MetaMask/metamask-extension/pull/28366)) +- chore: Reduce E2E test jobs run on PRs ([#28525](https://github.com/MetaMask/metamask-extension/pull/28525)) +- fix: account tracker controller with useMultiPolling ([#28277](https://github.com/MetaMask/metamask-extension/pull/28277)) +- perf: optimize fonts by using woff2 instead of ttf ([#26554](https://github.com/MetaMask/metamask-extension/pull/26554)) +- test: [POM] Migrate onboarding metrics e2e tests to TS and Page Object Model to reduce flakiness ([#28424](https://github.com/MetaMask/metamask-extension/pull/28424)) +- test: improve logs for e2e errors ([#28479](https://github.com/MetaMask/metamask-extension/pull/28479)) +- fix: PortfolioView: Selector to determine networks to poll ([#28502](https://github.com/MetaMask/metamask-extension/pull/28502)) +- chore: Update `cross-spawn` ([#28522](https://github.com/MetaMask/metamask-extension/pull/28522)) +- feat: upgrade assets controllers to version 44 ([#28472](https://github.com/MetaMask/metamask-extension/pull/28472)) +- chore: Master sync ([#28459](https://github.com/MetaMask/metamask-extension/pull/28459)) +- Merge origin/develop into master-sync +- feat: Upgrade assets controllers to 43 with multichain polling for token lists + detection ([#28447](https://github.com/MetaMask/metamask-extension/pull/28447)) +- fix: display btc account creation while in settings ([#28379](https://github.com/MetaMask/metamask-extension/pull/28379)) +- chore: fix test path on CI ([#28482](https://github.com/MetaMask/metamask-extension/pull/28482)) +- chore: Fix flaky ERC20 transfer blockaid e2e ([#28453](https://github.com/MetaMask/metamask-extension/pull/28453)) +- test: [POM] Migrate vault decryption e2e tests to TS and Page Object Model ([#28419](https://github.com/MetaMask/metamask-extension/pull/28419)) +- feat: UI changes to show decoding data for permits ([#28342](https://github.com/MetaMask/metamask-extension/pull/28342)) +- fix: dont poll token prices during onboarding or when locked ([#28465](https://github.com/MetaMask/metamask-extension/pull/28465)) +- fix: Allow outerclick to close import modal ([#28448](https://github.com/MetaMask/metamask-extension/pull/28448)) +- feat: add simulation metrics when simulation UI is not visible ([#28427](https://github.com/MetaMask/metamask-extension/pull/28427)) +- fix: Fix attribution generation ([#28415](https://github.com/MetaMask/metamask-extension/pull/28415)) +- test: Improve test for signatures ([#27532](https://github.com/MetaMask/metamask-extension/pull/27532)) +- fix: ui customizations for redesigned transactions ([#28443](https://github.com/MetaMask/metamask-extension/pull/28443)) +- fix: Remove multiple overlapping spinners ([#28301](https://github.com/MetaMask/metamask-extension/pull/28301)) +- fix: Hide "interacting with" when simulated balance changes are shown ([#28409](https://github.com/MetaMask/metamask-extension/pull/28409)) +- chore: Begin introducing patterns for Multichain AssetList ([#28429](https://github.com/MetaMask/metamask-extension/pull/28429)) +- feat: update signature controller and integrate decoding api ([#28397](https://github.com/MetaMask/metamask-extension/pull/28397)) +- fix: Update PortfolioView flag ([#28446](https://github.com/MetaMask/metamask-extension/pull/28446)) +- perf: Create custom spans for account overview tabs ([#28086](https://github.com/MetaMask/metamask-extension/pull/28086)) +- fix: Default to dApp suggested fees only when user selects the option ([#28403](https://github.com/MetaMask/metamask-extension/pull/28403)) +- feat: btc send flow e2e ([#28340](https://github.com/MetaMask/metamask-extension/pull/28340)) +- test: fix state fixtures race condition ([#28421](https://github.com/MetaMask/metamask-extension/pull/28421)) +- test: [POM] Migrate autodetect and import nft e2e tests to use Page Object Model ([#28383](https://github.com/MetaMask/metamask-extension/pull/28383)) +- chore(deps): bump `@metamask/eth-ledger-bridge-keyring` to `^5.0.1` ([#27688](https://github.com/MetaMask/metamask-extension/pull/27688)) +- chore: limit bridge quote request frequency and cancel requests ([#27237](https://github.com/MetaMask/metamask-extension/pull/27237)) +- test: Reintegrate refactored Swap e2e tests to the pipeline ([#26493](https://github.com/MetaMask/metamask-extension/pull/26493)) +- fix: fix network client ID used on the useGasFeeInputs hook ([#28391](https://github.com/MetaMask/metamask-extension/pull/28391)) +- ci: Fix `attributions:check` silent failure ([#28413](https://github.com/MetaMask/metamask-extension/pull/28413)) +- fix: `Test Snap Cronjob can trigger a cronjob to open a di...` flaky tests ([#28363](https://github.com/MetaMask/metamask-extension/pull/28363)) +- feat: add `account_type`/`snap_id` for buy/send metrics ([#28011](https://github.com/MetaMask/metamask-extension/pull/28011)) +- fix: get `supportedChains` to avoid blocking the confirmation process ([#28313](https://github.com/MetaMask/metamask-extension/pull/28313)) +- test: [POM] Migrate reveal account srp e2e tests to use Page Object Model ([#28354](https://github.com/MetaMask/metamask-extension/pull/28354)) +- fix: Add metric trait for privacy mode ([#28335](https://github.com/MetaMask/metamask-extension/pull/28335)) +- fix: Properly ellipsize long token names ([#28392](https://github.com/MetaMask/metamask-extension/pull/28392)) +- chore: Bump snaps-utils ([#28399](https://github.com/MetaMask/metamask-extension/pull/28399)) +- feat: migrate MetaMetricsController to BaseControllerV2 ([#28113](https://github.com/MetaMask/metamask-extension/pull/28113)) +- feat: change expand icon per new design ([#28267](https://github.com/MetaMask/metamask-extension/pull/28267)) +- chore: add unit test for `useMultiPolling` ([#28387](https://github.com/MetaMask/metamask-extension/pull/28387)) +- feat(Solana): add "Add a new Solana account" link to the account creation dialog ([#28270](https://github.com/MetaMask/metamask-extension/pull/28270)) +- fix: Return to send page with different asset types ([#28382](https://github.com/MetaMask/metamask-extension/pull/28382)) +- test: [POM] Refactor import account e2e tests to use Page Object Model ([#28325](https://github.com/MetaMask/metamask-extension/pull/28325)) +- feat(1852): Implement sentry user report on error screen ([#27857](https://github.com/MetaMask/metamask-extension/pull/27857)) +- fix: disable buy for btc testnet accounts ([#28341](https://github.com/MetaMask/metamask-extension/pull/28341)) +- fix: Address design review for ERC20 token send ([#28212](https://github.com/MetaMask/metamask-extension/pull/28212)) +- refactor: remove global network usage from transaction confirmations ([#28236](https://github.com/MetaMask/metamask-extension/pull/28236)) +- build: update yarn to v4.5.1 ([#28365](https://github.com/MetaMask/metamask-extension/pull/28365)) +- fix: Bug 28347 - Privacy mode tweaks ([#28367](https://github.com/MetaMask/metamask-extension/pull/28367)) +- fix: mv2 firefox csp header ([#27770](https://github.com/MetaMask/metamask-extension/pull/27770)) +- perf: ensure `setupLocale` doesn't fetch `_locales/en/messages.json` twice ([#26553](https://github.com/MetaMask/metamask-extension/pull/26553)) +- fix: bump `@metamask/queued-request-controller` with patch fix ([#28355](https://github.com/MetaMask/metamask-extension/pull/28355)) +- fix: Revert "fix: Negate privacy mode in Send screen" ([#28360](https://github.com/MetaMask/metamask-extension/pull/28360)) +- fix: disable account syncing ([#28359](https://github.com/MetaMask/metamask-extension/pull/28359)) +- feat: Convert mmi controller to a non-controller ([#27983](https://github.com/MetaMask/metamask-extension/pull/27983)) +- fix: Updates to the simulations component ([#28107](https://github.com/MetaMask/metamask-extension/pull/28107)) +- refactor: rename SECURITY_PROVIDER_SUPPORTED_CHAIN_IDS_FALLBACK_LIST ([#28337](https://github.com/MetaMask/metamask-extension/pull/28337)) +- chore: adds Solana snap to preinstall list ([#28141](https://github.com/MetaMask/metamask-extension/pull/28141)) +- feat: Show network badge in detected tokens modal ([#28231](https://github.com/MetaMask/metamask-extension/pull/28231)) +- fix: Negate privacy mode in Send screen ([#28248](https://github.com/MetaMask/metamask-extension/pull/28248)) +- feat: adds solana feature, code fence ([#28320](https://github.com/MetaMask/metamask-extension/pull/28320)) +- build(webpack): fix cache issues in webpack build by updating `html-bundler-webpack-plugin` to v4.4.1 ([#28225](https://github.com/MetaMask/metamask-extension/pull/28225)) +- feat: team-label-token ([#28134](https://github.com/MetaMask/metamask-extension/pull/28134)) +- chore: add Solana shared utilities and constants ([#28269](https://github.com/MetaMask/metamask-extension/pull/28269)) +- chore: Remove STX opt in modal ([#28291](https://github.com/MetaMask/metamask-extension/pull/28291)) +- chore: revert commit `3da34f4` (feat: btc e2e tests (#27986)) ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) +- chore: e2e quality gate enhancement ([#28206](https://github.com/MetaMask/metamask-extension/pull/28206)) +- chore: adding e2e tests for NFT permit ([#28004](https://github.com/MetaMask/metamask-extension/pull/28004)) +- feat: Enable simulation metrics for redesign transactions ([#28280](https://github.com/MetaMask/metamask-extension/pull/28280)) +- fix: GasDetailItem invalid paddingStart prop ([#28281](https://github.com/MetaMask/metamask-extension/pull/28281)) +- fix: use transaction address to get lock for custom nonce ([#28272](https://github.com/MetaMask/metamask-extension/pull/28272)) +- fix: flaky test `Phishing Detection Via Iframe should redirect users to the the MetaMask Phishing Detection page when an iframe domain is on the phishing blocklist` ([#28293](https://github.com/MetaMask/metamask-extension/pull/28293)) +- chore: add the gas_included prop into Quotes Requested event ([#28295](https://github.com/MetaMask/metamask-extension/pull/28295)) +- test: [POM] Refactor e2e tests to use onboarding flows defined in Page Object Models ([#28202](https://github.com/MetaMask/metamask-extension/pull/28202)) +- feat: btc e2e tests ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) +- fix: remove scroll-to-bottom requirement in redesigned transaction confirmations ([#27910](https://github.com/MetaMask/metamask-extension/pull/27910)) +- chore: Add gravity logo and image mappings ([#28306](https://github.com/MetaMask/metamask-extension/pull/28306)) +- chore: Bump Snaps packages ([#28215](https://github.com/MetaMask/metamask-extension/pull/28215)) +- feat: Add simulation metrics to "Transaction Submitted" and "Transaction Finalized" events ([#28240](https://github.com/MetaMask/metamask-extension/pull/28240)) +- fix: smart transactions in redesigned confirmations ([#28273](https://github.com/MetaMask/metamask-extension/pull/28273)) +- fix: unit flaky test `AddContact component › should disable submit button when input is not a valid address` ([#27941](https://github.com/MetaMask/metamask-extension/pull/27941)) +- fix: Hide fiat values on test networks ([#28219](https://github.com/MetaMask/metamask-extension/pull/28219)) +- chore: display bridge quotes ([#28031](https://github.com/MetaMask/metamask-extension/pull/28031)) +- fix: Permit message, dataTree value incorrectly using default ERC20 decimals for non-ERC20 token values ([#28142](https://github.com/MetaMask/metamask-extension/pull/28142)) +- fix: ignore error when getTokenStandardAndDetails fails ([#28030](https://github.com/MetaMask/metamask-extension/pull/28030)) +- fix: notification settings type ([#28271](https://github.com/MetaMask/metamask-extension/pull/28271)) +- chore: use accounts api for token detection ([#28254](https://github.com/MetaMask/metamask-extension/pull/28254)) +- fix: Fix alignment of long RPC labels in Networks menu ([#28244](https://github.com/MetaMask/metamask-extension/pull/28244)) +- feat: adds the experimental toggle for Solana ([#28190](https://github.com/MetaMask/metamask-extension/pull/28190)) +- feat: multi chain polling for token prices ([#28158](https://github.com/MetaMask/metamask-extension/pull/28158)) +- refactor: move `getInternalAccounts` from `selectors.js` to `accounts.ts` ([#27645](https://github.com/MetaMask/metamask-extension/pull/27645)) +- fix: Add different copy for tooltip when a snap is requesting a signature ([#27492](https://github.com/MetaMask/metamask-extension/pull/27492)) +- fix: Prevent coercing symbols to zero in the edit spending cap modal ([#28192](https://github.com/MetaMask/metamask-extension/pull/28192)) +- test: [POM] Migrate edit network rpc e2e tests and create related page class functions ([#28161](https://github.com/MetaMask/metamask-extension/pull/28161)) +- refactor: remove global network usage from signatures ([#28167](https://github.com/MetaMask/metamask-extension/pull/28167)) +- fix: margin on asset chart min/max indicators ([#27916](https://github.com/MetaMask/metamask-extension/pull/27916)) +- feat: add token verification source count and link to block explorer ([#27759](https://github.com/MetaMask/metamask-extension/pull/27759)) +- chore: Remove obsolete preview build support ([#27968](https://github.com/MetaMask/metamask-extension/pull/27968)) +- fix: Removing `warning` prop from settings ([#27990](https://github.com/MetaMask/metamask-extension/pull/27990)) +- chore: Adding installType to Sentry Tags for easy filtering ([#28084](https://github.com/MetaMask/metamask-extension/pull/28084)) +- chore: remove broken link in docs ([#28232](https://github.com/MetaMask/metamask-extension/pull/28232)) +- fix: Error handling for the state log download failure ([#26999](https://github.com/MetaMask/metamask-extension/pull/26999)) +- feat: Upgrade alert controller to base controller v2 ([#28054](https://github.com/MetaMask/metamask-extension/pull/28054)) +- chore: improve token lookup performance in `useAccountTotalFiatBalance` ([#28233](https://github.com/MetaMask/metamask-extension/pull/28233)) + ## [12.7.2] ### Fixed - Fix message signatures for Gridplus lattice hardware wallets ([#28694](https://github.com/MetaMask/metamask-extension/pull/28694)) @@ -5356,7 +5595,8 @@ Update styles and spacing on the critical error page ([#20350](https://github.c - Added the ability to restore accounts from seed words. -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.7.2...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.9.0...HEAD +[12.9.0]: https://github.com/MetaMask/metamask-extension/compare/v12.7.2...v12.9.0 [12.7.2]: https://github.com/MetaMask/metamask-extension/compare/v12.7.1...v12.7.2 [12.7.1]: https://github.com/MetaMask/metamask-extension/compare/v12.7.0...v12.7.1 [12.7.0]: https://github.com/MetaMask/metamask-extension/compare/v12.6.2...v12.7.0 diff --git a/package.json b/package.json index e7827cb6d92b..c86ea2d35cb4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask-crx", - "version": "12.7.2", + "version": "12.9.0", "private": true, "repository": { "type": "git", From 8c7e8b154d91bd721499ba46b2aea93dcf492430 Mon Sep 17 00:00:00 2001 From: chloeYue <105063779+chloeYue@users.noreply.github.com> Date: Fri, 29 Nov 2024 12:00:14 +0100 Subject: [PATCH 007/111] chore: Fix changelog title v12.9.0 (#28807) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Updating the title in the changelog for v12.9.0 entries to help pass the CI [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28807?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 926adfb6e190..7cb76fdef740 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [12.9.0] -### Uncategorized +### Fixed - fix: SIWE e2e test timing out and breaking ci ([#28801](https://github.com/MetaMask/metamask-extension/pull/28801)) - fix: has_marketing_consent flag on metametrics ([#28795](https://github.com/MetaMask/metamask-extension/pull/28795)) - chore: Bump `@metamask/eth-token-tracker` from v8 to v9 ([#28754](https://github.com/MetaMask/metamask-extension/pull/28754)) From 717745208357ea656d65d2ae25b351236d1e5892 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Fri, 29 Nov 2024 14:57:39 +0100 Subject: [PATCH 008/111] [cherry-pick] fix: Correct preferences controller usage for `isOnPhishingList` hook (#28806) ## **Description** This is a cherry-pick to the RC for the following commit: https://github.com/MetaMask/metamask-extension/commit/db4386f6e25c8a96bd2510588c9ba462a51d9ca1 In [this commit](https://github.com/MetaMask/metamask-extension/commit/cedabc62e45601c77871689425320c54d717275e) the preferences controller was converted to `BaseControllerV2`, however the `isOnPhishingList` hook was not corrected to reference the state properly. The hook will currently always throw which means that link validation fails for Snaps notifications, making them unable to display. This PR corrects that mistake. Note: This is an edge-case of the Snaps API that doesn't have good E2E coverage yet. We should prioritize that. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28803?quickstart=1) ## **Manual testing steps** The following Snap should work correctly and display a notification: ``` export const onRpcRequest: OnRpcRequestHandler = async ({ origin, request, }) => { switch (request.method) { case 'hello': return snap.request({ method: 'snap_notify', params: { type: 'inApp', message: 'Hello! [metamask.io](https://metamask.io)', }, }); default: throw new Error('Method not found.'); } }; ``` --- app/scripts/metamask-controller.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 992302983baf..d60d937e1c3c 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -2897,8 +2897,7 @@ export default class MetamaskController extends EventEmitter { ); }, isOnPhishingList: (url) => { - const { usePhishDetect } = - this.preferencesController.store.getState(); + const { usePhishDetect } = this.preferencesController.state; if (!usePhishDetect) { return false; From b744b09a2c0164b8f446c6fa7b2ee8b21601ba16 Mon Sep 17 00:00:00 2001 From: Salim TOUBAL Date: Mon, 2 Dec 2024 15:22:16 +0100 Subject: [PATCH 009/111] fix: fix asset-list e2e test (#28822) (#28841) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** cherry pick #28822 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28841?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- test/e2e/fixture-builder.js | 16 ++++++++++++ test/e2e/tests/multichain/asset-list.spec.ts | 27 ++++++++++---------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/test/e2e/fixture-builder.js b/test/e2e/fixture-builder.js index 844c4766db3e..0a397acb6c97 100644 --- a/test/e2e/fixture-builder.js +++ b/test/e2e/fixture-builder.js @@ -305,6 +305,22 @@ class FixtureBuilder { }); } + withNetworkControllerOnPolygon() { + return this.withNetworkController({ + networkConfigurations: { + networkConfigurationId: { + chainId: CHAIN_IDS.POLYGON, + nickname: 'Polygon Mainnet', + rpcPrefs: {}, + rpcUrl: 'https://mainnet.infura.io', + ticker: 'ETH', + networkConfigurationId: 'networkConfigurationId', + id: 'networkConfigurationId', + }, + }, + }); + } + withNetworkControllerDoubleGanache() { const ganacheNetworks = mockNetworkStateOld({ id: '76e9cd59-d8e2-47e7-b369-9c205ccb602c', diff --git a/test/e2e/tests/multichain/asset-list.spec.ts b/test/e2e/tests/multichain/asset-list.spec.ts index 5b210730ef36..d7120a1fcace 100644 --- a/test/e2e/tests/multichain/asset-list.spec.ts +++ b/test/e2e/tests/multichain/asset-list.spec.ts @@ -13,14 +13,15 @@ import AssetListPage from '../../page-objects/pages/asset-list'; const NETWORK_NAME_MAINNET = 'Ethereum Mainnet'; const LINEA_NAME_MAINNET = 'Linea Mainnet'; -const LOCALHOST = 'Localhost 8545'; +const POLYGON_NAME_MAINNET = 'Polygon'; const BALANCE_AMOUNT = '24.9956'; -function buildFixtures(title: string) { +function buildFixtures(title: string, chainId: number = 1337) { return { fixtures: new FixtureBuilder() .withPermissionControllerConnectedToTestDapp() - .withTokensControllerERC20() + .withNetworkControllerOnPolygon() + .withTokensControllerERC20({ chainId }) .build(), ganacheOptions: defaultGanacheOptions, smartContract: SMART_CONTRACTS.HST, @@ -49,7 +50,7 @@ describe('Multichain Asset List', function (this: Suite) { const assetListPage = new AssetListPage(driver); await headerNavbar.clickSwitchNetworkDropDown(); await selectNetworkDialog.selectNetworkName(NETWORK_NAME_MAINNET); - await assetListPage.waitUntilAssetListHasItems(2); + await assetListPage.waitUntilAssetListHasItems(3); await assetListPage.openNetworksFilter(); await assetListPage.clickCurrentNetworkOption(); await headerNavbar.clickSwitchNetworkDropDown(); @@ -79,7 +80,7 @@ describe('Multichain Asset List', function (this: Suite) { const assetListPage = new AssetListPage(driver); await headerNavbar.clickSwitchNetworkDropDown(); await selectNetworkDialog.selectNetworkName(NETWORK_NAME_MAINNET); - await assetListPage.waitUntilAssetListHasItems(2); + await assetListPage.waitUntilAssetListHasItems(3); await driver.clickElement('.multichain-token-list-item'); const coinOverviewElement = await driver.findElement( '[data-testid="coin-overview-buy"]', @@ -97,7 +98,7 @@ describe('Multichain Asset List', function (this: Suite) { }); it('switches networks when clicking on send for a token on another network', async function () { await withFixtures( - buildFixtures(this.test?.fullTitle() as string), + buildFixtures(this.test?.fullTitle() as string, 137), async ({ driver, ganacheServer, @@ -112,10 +113,10 @@ describe('Multichain Asset List', function (this: Suite) { await headerNavbar.clickSwitchNetworkDropDown(); await selectNetworkDialog.selectNetworkName(NETWORK_NAME_MAINNET); const sendPage = new SendTokenPage(driver); - await assetListPage.waitUntilAssetListHasItems(2); + await assetListPage.waitUntilAssetListHasItems(4); await assetListPage.clickOnAsset('TST'); await driver.clickElement('[data-testid="eth-overview-send"]'); - await sendPage.check_networkChange(LOCALHOST); + await sendPage.check_networkChange(POLYGON_NAME_MAINNET); await sendPage.check_pageIsLoaded(); await sendPage.fillRecipient( '0x2f318C334780961FB129D2a6c30D0763d9a5C970', @@ -132,7 +133,7 @@ describe('Multichain Asset List', function (this: Suite) { }); it('switches networks when clicking on swap for a token on another network', async function () { await withFixtures( - buildFixtures(this.test?.fullTitle() as string), + buildFixtures(this.test?.fullTitle() as string, 137), async ({ driver, ganacheServer, @@ -146,14 +147,14 @@ describe('Multichain Asset List', function (this: Suite) { const assetListPage = new AssetListPage(driver); await headerNavbar.clickSwitchNetworkDropDown(); await selectNetworkDialog.selectNetworkName(NETWORK_NAME_MAINNET); - await assetListPage.waitUntilAssetListHasItems(2); + await assetListPage.waitUntilAssetListHasItems(4); await assetListPage.clickOnAsset('TST'); await driver.clickElement('.mm-box > button:nth-of-type(3)'); const toastTextElement = await driver.findElement('.toast-text'); const toastText = await toastTextElement.getText(); assert.equal( toastText, - `You're now using ${LOCALHOST}`, + `You're now using ${POLYGON_NAME_MAINNET}`, 'Toast text is correct', ); }, @@ -175,7 +176,7 @@ describe('Multichain Asset List', function (this: Suite) { const selectNetworkDialog = new SelectNetwork(driver); await headerNavbar.clickSwitchNetworkDropDown(); await selectNetworkDialog.selectNetworkName(LINEA_NAME_MAINNET); - await assetListPage.waitUntilAssetListHasItems(2); + await assetListPage.waitUntilAssetListHasItems(3); await assetListPage.clickOnAsset('Ethereum'); @@ -187,7 +188,7 @@ describe('Multichain Asset List', function (this: Suite) { const toastText = await toastTextElement.getText(); assert.equal( toastText, - `You're now using ${LOCALHOST}`, + `You're now using Ethereum Mainnet`, 'Toast text is correct', ); const balanceMessageElement = await driver.findElement( From 0304023863503c2cd4b81720f2a8f0c520a99eb4 Mon Sep 17 00:00:00 2001 From: Harika <153644847+hjetpoluru@users.noreply.github.com> Date: Mon, 2 Dec 2024 14:21:55 -0500 Subject: [PATCH 010/111] chore: Changelog v12.8.0 (#28692) ## **Description** This PR is to document changelog with v12.8.0 PR's [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28692?quickstart=1) --- CHANGELOG.md | 254 ++++++++++++--------------------------------------- 1 file changed, 58 insertions(+), 196 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cb8f9eee839..71056ec1113f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,202 +7,64 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [12.8.0] -### Fixed -- chore: Master sync ([#28459](https://github.com/MetaMask/metamask-extension/pull/28459)) -- Merge origin/develop into master-sync -- feat: Upgrade assets controllers to 43 with multichain polling for token lists + detection ([#28447](https://github.com/MetaMask/metamask-extension/pull/28447)) -- Version v12.7.0 RC ([#28235](https://github.com/MetaMask/metamask-extension/pull/28235)) -- fix: display btc account creation while in settings ([#28379](https://github.com/MetaMask/metamask-extension/pull/28379)) -- fix: Fix race condition validating ERC20 transfer (blockaid) ([#28487](https://github.com/MetaMask/metamask-extension/pull/28487)) -- chore: fix test path on CI ([#28482](https://github.com/MetaMask/metamask-extension/pull/28482)) -- chore: Fix flaky ERC20 transfer blockaid e2e ([#28453](https://github.com/MetaMask/metamask-extension/pull/28453)) -- test: [POM] Migrate vault decryption e2e tests to TS and Page Object Model ([#28419](https://github.com/MetaMask/metamask-extension/pull/28419)) -- feat: UI changes to show decoding data for permits ([#28342](https://github.com/MetaMask/metamask-extension/pull/28342)) -- chore: V12.7.0 changelog ([#28458](https://github.com/MetaMask/metamask-extension/pull/28458)) -- chore: Merge master (as of v12.6.1) into v12.7.0 ([#28468](https://github.com/MetaMask/metamask-extension/pull/28468)) -- fix: dont poll token prices during onboarding or when locked ([#28465](https://github.com/MetaMask/metamask-extension/pull/28465)) -- Fixed lint -- fix: Allow outerclick to close import modal ([#28448](https://github.com/MetaMask/metamask-extension/pull/28448)) -- Merge remote-tracking branch 'origin/master' into resolve-conflicts-v12.7.0-master -- fix (cherry-pick): add simulation metrics when simulation UI is not visible (#28427) ([#28427](https://github.com/MetaMask/metamask-extension/pull/28427)) -- fix: ui customizations for redesigned transactions (#28443) ([#28443](https://github.com/MetaMask/metamask-extension/pull/28443)) -- feat: add simulation metrics when simulation UI is not visible ([#28427](https://github.com/MetaMask/metamask-extension/pull/28427)) -- fix: Fix attribution generation ([#28415](https://github.com/MetaMask/metamask-extension/pull/28415)) -- test: Improve test for signatures ([#27532](https://github.com/MetaMask/metamask-extension/pull/27532)) -- fix: ui customizations for redesigned transactions ([#28443](https://github.com/MetaMask/metamask-extension/pull/28443)) -- fix: Remove multiple overlapping spinners ([#28301](https://github.com/MetaMask/metamask-extension/pull/28301)) -- fix: Hide "interacting with" when simulated balance changes are shown ([#28409](https://github.com/MetaMask/metamask-extension/pull/28409)) -- chore: Begin introducing patterns for Multichain AssetList ([#28429](https://github.com/MetaMask/metamask-extension/pull/28429)) -- feat: update signature controller and integrate decoding api ([#28397](https://github.com/MetaMask/metamask-extension/pull/28397)) -- fix: Update PortfolioView flag ([#28446](https://github.com/MetaMask/metamask-extension/pull/28446)) -- perf: Create custom spans for account overview tabs ([#28086](https://github.com/MetaMask/metamask-extension/pull/28086)) -- fix: fix network client ID used on the useGasFeeInputs hook (#28391) ([#28391](https://github.com/MetaMask/metamask-extension/pull/28391)) -- fix (cherry-pick): get `supportedChains` to avoid blocking the confirmation process ([#28422](https://github.com/MetaMask/metamask-extension/pull/28422)) -- fix: Default to dApp suggested fees only when user selects the option ([#28403](https://github.com/MetaMask/metamask-extension/pull/28403)) -- feat: btc send flow e2e ([#28340](https://github.com/MetaMask/metamask-extension/pull/28340)) -- test: fix state fixtures race condition ([#28421](https://github.com/MetaMask/metamask-extension/pull/28421)) -- test: [POM] Migrate autodetect and import nft e2e tests to use Page Object Model ([#28383](https://github.com/MetaMask/metamask-extension/pull/28383)) -- chore(deps): bump `@metamask/eth-ledger-bridge-keyring` to `^5.0.1` ([#27688](https://github.com/MetaMask/metamask-extension/pull/27688)) -- chore: limit bridge quote request frequency and cancel requests ([#27237](https://github.com/MetaMask/metamask-extension/pull/27237)) -- test: Reintegrate refactored Swap e2e tests to the pipeline ([#26493](https://github.com/MetaMask/metamask-extension/pull/26493)) -- fix: fix network client ID used on the useGasFeeInputs hook ([#28391](https://github.com/MetaMask/metamask-extension/pull/28391)) -- ci: Fix `attributions:check` silent failure ([#28413](https://github.com/MetaMask/metamask-extension/pull/28413)) -- fix: `Test Snap Cronjob can trigger a cronjob to open a di...` flaky tests ([#28363](https://github.com/MetaMask/metamask-extension/pull/28363)) -- feat: add `account_type`/`snap_id` for buy/send metrics ([#28011](https://github.com/MetaMask/metamask-extension/pull/28011)) -- fix: get `supportedChains` to avoid blocking the confirmation process ([#28313](https://github.com/MetaMask/metamask-extension/pull/28313)) -- test: [POM] Migrate reveal account srp e2e tests to use Page Object Model ([#28354](https://github.com/MetaMask/metamask-extension/pull/28354)) -- fix: Add metric trait for privacy mode ([#28335](https://github.com/MetaMask/metamask-extension/pull/28335)) -- fix: Properly ellipsize long token names ([#28392](https://github.com/MetaMask/metamask-extension/pull/28392)) -- fix(snaps): Patch `@metamask/snaps-utils` ([#28377](https://github.com/MetaMask/metamask-extension/pull/28377)) -- fix: cherry-pick: Return to send page with different asset types ([#28384](https://github.com/MetaMask/metamask-extension/pull/28384)) -- chore: Bump snaps-utils ([#28399](https://github.com/MetaMask/metamask-extension/pull/28399)) -- feat: migrate MetaMetricsController to BaseControllerV2 ([#28113](https://github.com/MetaMask/metamask-extension/pull/28113)) -- feat: change expand icon per new design ([#28267](https://github.com/MetaMask/metamask-extension/pull/28267)) -- chore: add unit test for `useMultiPolling` ([#28387](https://github.com/MetaMask/metamask-extension/pull/28387)) -- feat(Solana): add "Add a new Solana account" link to the account creation dialog ([#28270](https://github.com/MetaMask/metamask-extension/pull/28270)) -- fix: Return to send page with different asset types ([#28382](https://github.com/MetaMask/metamask-extension/pull/28382)) -- cherry-pick: bump `@metamask/queued-request-controller` with patch fix (#28355) ([#28355](https://github.com/MetaMask/metamask-extension/pull/28355)) -- test: [POM] Refactor import account e2e tests to use Page Object Model ([#28325](https://github.com/MetaMask/metamask-extension/pull/28325)) -- feat(1852): Implement sentry user report on error screen ([#27857](https://github.com/MetaMask/metamask-extension/pull/27857)) -- fix: disable buy for btc testnet accounts ([#28341](https://github.com/MetaMask/metamask-extension/pull/28341)) -- fix: Address design review for ERC20 token send ([#28212](https://github.com/MetaMask/metamask-extension/pull/28212)) -- refactor: remove global network usage from transaction confirmations ([#28236](https://github.com/MetaMask/metamask-extension/pull/28236)) -- build: update yarn to v4.5.1 ([#28365](https://github.com/MetaMask/metamask-extension/pull/28365)) -- fix: Bug 28347 - Privacy mode tweaks (#28367) ([#28367](https://github.com/MetaMask/metamask-extension/pull/28367)) -- fix: Bug 28347 - Privacy mode tweaks ([#28367](https://github.com/MetaMask/metamask-extension/pull/28367)) -- fix: mv2 firefox csp header ([#27770](https://github.com/MetaMask/metamask-extension/pull/27770)) -- perf: ensure `setupLocale` doesn't fetch `_locales/en/messages.json` twice ([#26553](https://github.com/MetaMask/metamask-extension/pull/26553)) -- fix: bump `@metamask/queued-request-controller` with patch fix ([#28355](https://github.com/MetaMask/metamask-extension/pull/28355)) -- fix (Cherrypick v12.7.0 ): disable account syncing ([#28361](https://github.com/MetaMask/metamask-extension/pull/28361)) -- fix: Revert "fix: Negate privacy mode in Send screen" ([#28360](https://github.com/MetaMask/metamask-extension/pull/28360)) -- fix: disable account syncing ([#28359](https://github.com/MetaMask/metamask-extension/pull/28359)) -- Cherrypick v12.7.0 feat: Add simulation metrics to "Transaction Submitted" and "Transaction Finalized" events ([#28314](https://github.com/MetaMask/metamask-extension/pull/28314)) -- feat: Convert mmi controller to a non-controller ([#27983](https://github.com/MetaMask/metamask-extension/pull/27983)) -- Cherrypick v12.7.0 feat: Enable simulation metrics for redesign transactions ([#28324](https://github.com/MetaMask/metamask-extension/pull/28324)) -- cherry pick: chore: add the gas_included prop into Quotes Received event ([#28351](https://github.com/MetaMask/metamask-extension/pull/28351)) -- cherry pick: fix: smart transactions in redesigned confirmations ([#28353](https://github.com/MetaMask/metamask-extension/pull/28353)) -- fix: Updates to the simulations component ([#28107](https://github.com/MetaMask/metamask-extension/pull/28107)) -- refactor: rename SECURITY_PROVIDER_SUPPORTED_CHAIN_IDS_FALLBACK_LIST ([#28337](https://github.com/MetaMask/metamask-extension/pull/28337)) -- chore: adds Solana snap to preinstall list ([#28141](https://github.com/MetaMask/metamask-extension/pull/28141)) -- feat: Show network badge in detected tokens modal ([#28231](https://github.com/MetaMask/metamask-extension/pull/28231)) -- fix: Negate privacy mode in Send screen ([#28248](https://github.com/MetaMask/metamask-extension/pull/28248)) -- feat: adds solana feature, code fence ([#28320](https://github.com/MetaMask/metamask-extension/pull/28320)) -- build(webpack): fix cache issues in webpack build by updating `html-bundler-webpack-plugin` to v4.4.1 ([#28225](https://github.com/MetaMask/metamask-extension/pull/28225)) -- feat: team-label-token ([#28134](https://github.com/MetaMask/metamask-extension/pull/28134)) -- chore: add Solana shared utilities and constants ([#28269](https://github.com/MetaMask/metamask-extension/pull/28269)) -- chore: Remove STX opt in modal ([#28291](https://github.com/MetaMask/metamask-extension/pull/28291)) -- chore: revert commit `3da34f4` (feat: btc e2e tests (#27986)) ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) -- chore: e2e quality gate enhancement ([#28206](https://github.com/MetaMask/metamask-extension/pull/28206)) -- chore: adding e2e tests for NFT permit ([#28004](https://github.com/MetaMask/metamask-extension/pull/28004)) -- feat: Enable simulation metrics for redesign transactions ([#28280](https://github.com/MetaMask/metamask-extension/pull/28280)) -- fix: GasDetailItem invalid paddingStart prop ([#28281](https://github.com/MetaMask/metamask-extension/pull/28281)) -- fix: use transaction address to get lock for custom nonce ([#28272](https://github.com/MetaMask/metamask-extension/pull/28272)) -- fix: flaky test `Phishing Detection Via Iframe should redirect users to the the MetaMask Phishing Detection page when an iframe domain is on the phishing blocklist` ([#28293](https://github.com/MetaMask/metamask-extension/pull/28293)) -- chore: add the gas_included prop into Quotes Requested event ([#28295](https://github.com/MetaMask/metamask-extension/pull/28295)) -- test: [POM] Refactor e2e tests to use onboarding flows defined in Page Object Models ([#28202](https://github.com/MetaMask/metamask-extension/pull/28202)) -- feat: btc e2e tests ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) -- fix: remove scroll-to-bottom requirement in redesigned transaction confirmations ([#27910](https://github.com/MetaMask/metamask-extension/pull/27910)) -- chore: Add gravity logo and image mappings ([#28306](https://github.com/MetaMask/metamask-extension/pull/28306)) -- chore: Bump Snaps packages ([#28215](https://github.com/MetaMask/metamask-extension/pull/28215)) -- feat: Add simulation metrics to "Transaction Submitted" and "Transaction Finalized" events ([#28240](https://github.com/MetaMask/metamask-extension/pull/28240)) -- fix: smart transactions in redesigned confirmations ([#28273](https://github.com/MetaMask/metamask-extension/pull/28273)) -- fix: unit flaky test `AddContact component › should disable submit button when input is not a valid address` ([#27941](https://github.com/MetaMask/metamask-extension/pull/27941)) -- fix: Hide fiat values on test networks ([#28219](https://github.com/MetaMask/metamask-extension/pull/28219)) -- chore: display bridge quotes ([#28031](https://github.com/MetaMask/metamask-extension/pull/28031)) -- fix: Permit message, dataTree value incorrectly using default ERC20 decimals for non-ERC20 token values ([#28142](https://github.com/MetaMask/metamask-extension/pull/28142)) -- fix: ignore error when getTokenStandardAndDetails fails ([#28030](https://github.com/MetaMask/metamask-extension/pull/28030)) -- fix: notification settings type ([#28271](https://github.com/MetaMask/metamask-extension/pull/28271)) -- chore: use accounts api for token detection ([#28254](https://github.com/MetaMask/metamask-extension/pull/28254)) -- fix: Fix alignment of long RPC labels in Networks menu ([#28244](https://github.com/MetaMask/metamask-extension/pull/28244)) -- feat: adds the experimental toggle for Solana ([#28190](https://github.com/MetaMask/metamask-extension/pull/28190)) -- feat: multi chain polling for token prices ([#28158](https://github.com/MetaMask/metamask-extension/pull/28158)) -- refactor: move `getInternalAccounts` from `selectors.js` to `accounts.ts` ([#27645](https://github.com/MetaMask/metamask-extension/pull/27645)) -- fix: Add different copy for tooltip when a snap is requesting a signature ([#27492](https://github.com/MetaMask/metamask-extension/pull/27492)) -- fix: Prevent coercing symbols to zero in the edit spending cap modal ([#28192](https://github.com/MetaMask/metamask-extension/pull/28192)) -- test: [POM] Migrate edit network rpc e2e tests and create related page class functions ([#28161](https://github.com/MetaMask/metamask-extension/pull/28161)) -- refactor: remove global network usage from signatures ([#28167](https://github.com/MetaMask/metamask-extension/pull/28167)) -- fix: margin on asset chart min/max indicators ([#27916](https://github.com/MetaMask/metamask-extension/pull/27916)) -- feat: add token verification source count and link to block explorer ([#27759](https://github.com/MetaMask/metamask-extension/pull/27759)) -- chore: Remove obsolete preview build support ([#27968](https://github.com/MetaMask/metamask-extension/pull/27968)) -- fix: Removing `warning` prop from settings ([#27990](https://github.com/MetaMask/metamask-extension/pull/27990)) -- chore: Adding installType to Sentry Tags for easy filtering ([#28084](https://github.com/MetaMask/metamask-extension/pull/28084)) -- chore: remove broken link in docs ([#28232](https://github.com/MetaMask/metamask-extension/pull/28232)) -- fix: Error handling for the state log download failure ([#26999](https://github.com/MetaMask/metamask-extension/pull/26999)) -- feat: Upgrade alert controller to base controller v2 ([#28054](https://github.com/MetaMask/metamask-extension/pull/28054)) -- chore: improve token lookup performance in `useAccountTotalFiatBalance` ([#28233](https://github.com/MetaMask/metamask-extension/pull/28233)) -- chore: Modify changelog title to fix ci job ([#28237](https://github.com/MetaMask/metamask-extension/pull/28237)) -- Version v12.7.0 -- chore: Master sync ([#28222](https://github.com/MetaMask/metamask-extension/pull/28222)) -- Merge origin/develop into master-sync -- refactor: move `getSelectedInternalAccount` from `selectors.js` to `accounts.ts` ([#27644](https://github.com/MetaMask/metamask-extension/pull/27644)) -- feat: Improve provider method metrics for add/switch chain ([#28214](https://github.com/MetaMask/metamask-extension/pull/28214)) -- fix: Fix left-aligned fullscreen UI ([#28218](https://github.com/MetaMask/metamask-extension/pull/28218)) -- test: add ui render for debug ui integration tests ([#27621](https://github.com/MetaMask/metamask-extension/pull/27621)) -- feat: poll native currency prices across chains ([#28196](https://github.com/MetaMask/metamask-extension/pull/28196)) -- test: Fix data deletion e2e tests ([#28221](https://github.com/MetaMask/metamask-extension/pull/28221)) -- chore: Add a new transaction event prop ([#28153](https://github.com/MetaMask/metamask-extension/pull/28153)) -- feat: Copy updates to satisfy UK regulation requirements ([#28157](https://github.com/MetaMask/metamask-extension/pull/28157)) -- fix: flaky test `BTC Account - Overview has balance` ([#28181](https://github.com/MetaMask/metamask-extension/pull/28181)) -- chore: poll for bridge quotes ([#28029](https://github.com/MetaMask/metamask-extension/pull/28029)) -- chore: update confirmations code ownership ([#27862](https://github.com/MetaMask/metamask-extension/pull/27862)) -- feat(snaps): Add `useDisplayName` hook ([#27868](https://github.com/MetaMask/metamask-extension/pull/27868)) -- chore: upgrade signature controller to remove global network ([#28063](https://github.com/MetaMask/metamask-extension/pull/28063)) -- chore: update bridge quote request on input change ([#28028](https://github.com/MetaMask/metamask-extension/pull/28028)) -- chore: bump asset controllers to 39 + polling API ([#28025](https://github.com/MetaMask/metamask-extension/pull/28025)) -- fix: incorrect standard swap gas fee estimation ([#28127](https://github.com/MetaMask/metamask-extension/pull/28127)) -- feat: Capture 3 existing properties within non-anonymous transaction … ([#28144](https://github.com/MetaMask/metamask-extension/pull/28144)) -- refactor: remove global network usage from transaction simulation ([#27895](https://github.com/MetaMask/metamask-extension/pull/27895)) -- test(ramps): fixes btc native token test ([#27601](https://github.com/MetaMask/metamask-extension/pull/27601)) -- refactor: clean up profile sync hooks ([#28132](https://github.com/MetaMask/metamask-extension/pull/28132)) -- chore: ignore warning for ethereumjs-wallet ([#28145](https://github.com/MetaMask/metamask-extension/pull/28145)) -- test: [Snaps E2E] Unified methods and clean up snaps e2e tests ([#27684](https://github.com/MetaMask/metamask-extension/pull/27684)) -- chore: update @metamask/bitcoin-wallet-snap to 0.8.2 ([#28135](https://github.com/MetaMask/metamask-extension/pull/28135)) -- chore: small storybook and docs updates to SensitiveText component ([#28089](https://github.com/MetaMask/metamask-extension/pull/28089)) -- chore: bridge-api fetchBridgeQuotes util ([#28027](https://github.com/MetaMask/metamask-extension/pull/28027)) -- feat: update phishing controller version ([#28131](https://github.com/MetaMask/metamask-extension/pull/28131)) -- fix: broken not existing type file import ([#28055](https://github.com/MetaMask/metamask-extension/pull/28055)) -- test: blockaid update version and reenable specs ([#28121](https://github.com/MetaMask/metamask-extension/pull/28121)) -- test: [POM] Migrate onboarding infura call privacy e2e tests ([#28079](https://github.com/MetaMask/metamask-extension/pull/28079)) -- feat: share the same user storage mock instance in tests ([#28119](https://github.com/MetaMask/metamask-extension/pull/28119)) -- chore: Using button icon component for clikable icons ([#28082](https://github.com/MetaMask/metamask-extension/pull/28082)) -- feat: convert MetaMetricsController to typescript ([#28072](https://github.com/MetaMask/metamask-extension/pull/28072)) -- feat: improved way to trigger mmi e2e tests ([#27932](https://github.com/MetaMask/metamask-extension/pull/27932)) -- test: allow more simple findElement by data-testid ([#28065](https://github.com/MetaMask/metamask-extension/pull/28065)) -- fix: json-rpc-middleware-stream@^5 -> @metamask/json-rpc-middleware-stream@^8 ([#28060](https://github.com/MetaMask/metamask-extension/pull/28060)) -- fix(devDeps): babel@7.23.2->7.25.9 ([#28068](https://github.com/MetaMask/metamask-extension/pull/28068)) -- feat: better storybook stories for the notification pages ([#27861](https://github.com/MetaMask/metamask-extension/pull/27861)) -- fix: update storybook to support NFT images ([#28105](https://github.com/MetaMask/metamask-extension/pull/28105)) -- fix: broken test `Vault Decryptor Page is able to decrypt the vault uploading the log file in the vault-decryptor webapp` ([#28098](https://github.com/MetaMask/metamask-extension/pull/28098)) -- test: Complete missing step for add a contact to the address book in existing E2E test ([#27959](https://github.com/MetaMask/metamask-extension/pull/27959)) -- feat(3419): sensitive text component ([#28056](https://github.com/MetaMask/metamask-extension/pull/28056)) -- test: Added e2e for switch network ([#27967](https://github.com/MetaMask/metamask-extension/pull/27967)) -- fix: c2 bypass ([#28057](https://github.com/MetaMask/metamask-extension/pull/28057)) -- test: NOTIFY-1256 - Extending E2E tests for Account Sync ([#28067](https://github.com/MetaMask/metamask-extension/pull/28067)) -- test: notifications integration tests ([#28022](https://github.com/MetaMask/metamask-extension/pull/28022)) -- chore: update stories for name component ([#28049](https://github.com/MetaMask/metamask-extension/pull/28049)) -- fix: flaky anti-pattern getText + assert 3 ([#28062](https://github.com/MetaMask/metamask-extension/pull/28062)) -- test: [POM] Create onboarding related page object modal base pages and migrate e2e tests ([#28036](https://github.com/MetaMask/metamask-extension/pull/28036)) -- docs: update debugging sentry step 3 ([#28034](https://github.com/MetaMask/metamask-extension/pull/28034)) -- fix: Support dynamic native token name on gas component ([#28048](https://github.com/MetaMask/metamask-extension/pull/28048)) -- fix: Fall back to token list for the token symbol ([#28003](https://github.com/MetaMask/metamask-extension/pull/28003)) -- fix: flaky anti-pattern getText + assert 2 ([#28043](https://github.com/MetaMask/metamask-extension/pull/28043)) -- fix(deps): @metamask/eth-json-rpc-filters@^8.0.0->^9.0.0 ([#27956](https://github.com/MetaMask/metamask-extension/pull/27956)) -- chore: Bump gridplus-sdk to 2.7.1 ([#28008](https://github.com/MetaMask/metamask-extension/pull/28008)) -- fix(deps): @keystonehq/metamask-airgapped-keyring@^0.13.1->^0.14.1 ([#27952](https://github.com/MetaMask/metamask-extension/pull/27952)) -- refactor: use `reselect`'s `createSelector` instead of going through `@redux/toolkit`, as the import names collide when trying to merge files. ([#27643](https://github.com/MetaMask/metamask-extension/pull/27643)) -- fix: storybook `getManifest` issue ([#28010](https://github.com/MetaMask/metamask-extension/pull/28010)) -- feat: bump @metamask/notification-services-controller from 0.7.0 to 0.11.0 ([#28017](https://github.com/MetaMask/metamask-extension/pull/28017)) -- refactor: remove global network usage from petnames ([#27946](https://github.com/MetaMask/metamask-extension/pull/27946)) -- chore: updated package ([#28002](https://github.com/MetaMask/metamask-extension/pull/28002)) -- feat(NOTIFY-1245): add account syncing E2E helpers & basic tests ([#28005](https://github.com/MetaMask/metamask-extension/pull/28005)) -- fix: Fix stream re-initialization ([#28024](https://github.com/MetaMask/metamask-extension/pull/28024)) -- refactor: routes.component.js and creation of ToastMaster ([#27735](https://github.com/MetaMask/metamask-extension/pull/27735)) -- fix: @metamask/eth-json-rpc-filters@^7.0.0->^8.0.0 ([#27917](https://github.com/MetaMask/metamask-extension/pull/27917)) -- refactor: remove relative imports to `selectors/index.js` from other selectors files ([#27642](https://github.com/MetaMask/metamask-extension/pull/27642)) -- refactor: remove circular dependency between `ui/ducks/custom-gas.js` and `ui/selectors/index.js` ([#27640](https://github.com/MetaMask/metamask-extension/pull/27640)) -- test: update notification date tests to be timezone agnostic ([#27925](https://github.com/MetaMask/metamask-extension/pull/27925)) -- fix: updated event name for site cell component ([#27981](https://github.com/MetaMask/metamask-extension/pull/27981)) -- fix(deps): gridplus-sdk@2.5.1->~2.6.0 ([#27973](https://github.com/MetaMask/metamask-extension/pull/27973)) +### Added +- Added multi-chain polling for token prices ([#28158](https://github.com/MetaMask/metamask-extension/pull/28158)) +- Added account_type/snap_id for buy/send metrics ([#28011](https://github.com/MetaMask/metamask-extension/pull/28011)) +- Made UI changes to show decoding data for permits ([#28342](https://github.com/MetaMask/metamask-extension/pull/28342)) +- Implemented Sentry user report on error screen ([#27857](https://github.com/MetaMask/metamask-extension/pull/27857)) +- Showed network badge in detected tokens modal ([#28231](https://github.com/MetaMask/metamask-extension/pull/28231)) +- Migrated MetaMetricsController to BaseControllerV2 ([#28113](https://github.com/MetaMask/metamask-extension/pull/28113)) +- Converted MMI controller to a non-controller ([#27983](https://github.com/MetaMask/metamask-extension/pull/27983)) +- Upgraded alert controller to BaseControllerV2 ([#28054](https://github.com/MetaMask/metamask-extension/pull/28054)) +- Added token verification source count and link to block explorer ([#27759](https://github.com/MetaMask/metamask-extension/pull/27759)) +- Added "Add a new Solana account" link to the account creation dialog ([#28270](https://github.com/MetaMask/metamask-extension/pull/28270)) +- Added Solana snap to preinstall list ([#28141](https://github.com/MetaMask/metamask-extension/pull/28141)) +- Added the experimental toggle for Solana ([#28190](https://github.com/MetaMask/metamask-extension/pull/28190)) +- Added gravity logo and image mappings ([#28306](https://github.com/MetaMask/metamask-extension/pull/28306)) +- Used accounts API for token detection ([#28254](https://github.com/MetaMask/metamask-extension/pull/28254)) +- Displayed bridge quotes ([#28031](https://github.com/MetaMask/metamask-extension/pull/28031)) + +### Changed +- Upgraded assets controllers to version 43 with multi-chain polling for token lists and detection which allows for more efficient and accurate tracking of tokens across multiple chains ([#28447](https://github.com/MetaMask/metamask-extension/pull/28447)) +- Changed expand icon to align with the new design, improving the user interface and overall user experience ([#28267](https://github.com/MetaMask/metamask-extension/pull/28267)) +- Prevented polling of token prices during onboarding or when the wallet is locked, ensuring that unnecessary network requests are avoided. ([#28465](https://github.com/MetaMask/metamask-extension/pull/28465)) +- Disabled the buy feature for BTC testnet accounts to prevent users from attempting to purchase BTC on test networks ([#28341](https://github.com/MetaMask/metamask-extension/pull/28341)) +- Removed the warning prop from settings to clean up the code and prevent potential issues ([#27990](https://github.com/MetaMask/metamask-extension/pull/27990)) +- Improved error handling for state log download failures, providing better feedback and stability when issues occur ([#26999](https://github.com/MetaMask/metamask-extension/pull/26999)) +- Improved token lookup performance in useAccountTotalFiatBalance, enhancing the speed and efficiency of balance calculations ([#28233](https://github.com/MetaMask/metamask-extension/pull/28233)) +- Limited the frequency of bridge quote requests and added functionality to cancel requests, reducing unnecessary network traffic and improving performance ([#27237](https://github.com/MetaMask/metamask-extension/pull/27237)) +- Bumped Snaps packages to the latest versions, ensuring compatibility and leveraging new features and fixes ([#28215](https://github.com/MetaMask/metamask-extension/pull/28215)) +- Removed the STX opt-in modal to streamline the user experience and reduce unnecessary prompts ([#28291](https://github.com/MetaMask/metamask-extension/pull/28291)) +- Added the gas_included prop into the Quotes Requested event, providing more detailed and accurate event tracking for gas usage ([#28295](https://github.com/MetaMask/metamask-extension/pull/28295)) + +### Fixed +- Fixed network client ID used on the useGasFeeInputs hook ([#28391](https://github.com/MetaMask/metamask-extension/pull/28391)) +- Ignored error when getTokenStandardAndDetails fails ([#[28030](https://github.com/MetaMask/metamask-extension/pull/28030)]) +- Adjusted margin on asset chart min/max indicators ([#[27916](https://github.com/MetaMask/metamask-extension/pull/27916)]) +- Removed multiple overlapping spinners ([#[28301](https://github.com/MetaMask/metamask-extension/pull/28301)]) +- Hid "interacting with" when simulated balance changes are shown ([#[28409](https://github.com/MetaMask/metamask-extension/pull/28409)]) +- Ensured supportedChains does not block the confirmation process ([#[28313](https://github.com/MetaMask/metamask-extension/pull/28313)]) +- Returned to send page with different asset types ([#[28382](https://github.com/MetaMask/metamask-extension/pull/28382)]) +- Addressed design review for ERC20 token send ([#[28212](https://github.com/MetaMask/metamask-extension/pull/28212)]) +- Improved gas limit estimation ([#[28327](https://github.com/MetaMask/metamask-extension/pull/28327)]) +- Updated simulations component ([#[28107](https://github.com/MetaMask/metamask-extension/pull/28107)]) +- Used transaction address to get lock for custom nonce ([#[28272](https://github.com/MetaMask/metamask-extension/pull/28272)]) +- Removed scroll-to-bottom requirement in redesigned transaction confirmations ([#[27910](https://github.com/MetaMask/metamask-extension/pull/27910)]) +- Hid fiat values on test networks ([#[28219](https://github.com/MetaMask/metamask-extension/pull/28219)]) +- Corrected Permit message dataTree value using default ERC20 decimals for non-ERC20 token values ([#[28142](https://github.com/MetaMask/metamask-extension/pull/28142)]) +- Prevented coercing symbols to zero in the edit spending cap modal ([#[28192](https://github.com/MetaMask/metamask-extension/pull/28192)]) +- Fixed MV2 Firefox CSP header ([#[27770](https://github.com/MetaMask/metamask-extension/pull/27770)]) +- Allowed outer click to close import modal ([#[28448](https://github.com/MetaMask/metamask-extension/pull/28448)]) +- Updated PortfolioView flag ([#[28446](https://github.com/MetaMask/metamask-extension/pull/28446)]) +- Added metric trait for privacy mode ([#[28335](https://github.com/MetaMask/metamask-extension/pull/28335)]) +- Properly ellipsized long token names ([#[28392](https://github.com/MetaMask/metamask-extension/pull/28392)]) +- Reverted "fix: Negate privacy mode in Send screen" ([#[28360](https://github.com/MetaMask/metamask-extension/pull/28360)]) +- Fixed alignment of long RPC labels in Networks menu ([#[28244](https://github.com/MetaMask/metamask-extension/pull/28244)]) +- Fixed attribution generation ([#[28415](https://github.com/MetaMask/metamask-extension/pull/28415)]) +- Added different copy for tooltip when a snap is requesting a signature ([#[27492](https://github.com/MetaMask/metamask-extension/pull/27492)]) +- Bumped @metamask/queued-request-controller with patch fix ([#[28355](https://github.com/MetaMask/metamask-extension/pull/28355)]) +- Corrected notification settings type ([[#28271](https://github.com/MetaMask/metamask-extension/pull/28271)]) +- Improved performance to Ensured setupLocale doesn't fetch _locales/en/messages.json twice ([[#26553](https://github.com/MetaMask/metamask-extension/pull/26553)]) ## [12.7.2] From 8e074a60b4b97d0d31b3259048dc333792029716 Mon Sep 17 00:00:00 2001 From: Brian Bergeron Date: Mon, 2 Dec 2024 13:26:37 -0800 Subject: [PATCH 011/111] fix(cherry-pick): use PORTFOLIO_VIEW flag to determine chain polling (#28578) Cherry picks https://github.com/MetaMask/metamask-extension/pull/28504 to 12.8.0 so chains aren't polled unnecessarily Co-authored-by: Dan J Miller --- ui/hooks/useTokenDetectionPolling.ts | 8 +++++++- ui/hooks/useTokenRatesPolling.ts | 10 ++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ui/hooks/useTokenDetectionPolling.ts b/ui/hooks/useTokenDetectionPolling.ts index 790384e21cbf..d2e08d01892d 100644 --- a/ui/hooks/useTokenDetectionPolling.ts +++ b/ui/hooks/useTokenDetectionPolling.ts @@ -1,5 +1,6 @@ import { useSelector } from 'react-redux'; import { + getCurrentChainId, getNetworkConfigurationsByChainId, getUseTokenDetection, } from '../selectors'; @@ -17,14 +18,19 @@ const useTokenDetectionPolling = () => { const useTokenDetection = useSelector(getUseTokenDetection); const completedOnboarding = useSelector(getCompletedOnboarding); const isUnlocked = useSelector(getIsUnlocked); + const currentChainId = useSelector(getCurrentChainId); const networkConfigurations = useSelector(getNetworkConfigurationsByChainId); const enabled = completedOnboarding && isUnlocked && useTokenDetection; + const chainIds = process.env.PORTFOLIO_VIEW + ? Object.keys(networkConfigurations) + : [currentChainId]; + useMultiPolling({ startPolling: tokenDetectionStartPolling, stopPollingByPollingToken: tokenDetectionStopPollingByPollingToken, - input: enabled ? [Object.keys(networkConfigurations)] : [], + input: enabled ? [chainIds] : [], }); return {}; diff --git a/ui/hooks/useTokenRatesPolling.ts b/ui/hooks/useTokenRatesPolling.ts index a740a426e36c..37864ec89b82 100644 --- a/ui/hooks/useTokenRatesPolling.ts +++ b/ui/hooks/useTokenRatesPolling.ts @@ -1,5 +1,6 @@ import { useSelector } from 'react-redux'; import { + getCurrentChainId, getMarketData, getNetworkConfigurationsByChainId, getTokenExchangeRates, @@ -16,10 +17,11 @@ import { } from '../ducks/metamask/metamask'; import useMultiPolling from './useMultiPolling'; -const useTokenRatesPolling = ({ chainIds }: { chainIds?: string[] } = {}) => { +const useTokenRatesPolling = () => { // Selectors to determine polling input const completedOnboarding = useSelector(getCompletedOnboarding); const isUnlocked = useSelector(getIsUnlocked); + const currentChainId = useSelector(getCurrentChainId); const useCurrencyRateCheck = useSelector(getUseCurrencyRateCheck); const networkConfigurations = useSelector(getNetworkConfigurationsByChainId); @@ -30,10 +32,14 @@ const useTokenRatesPolling = ({ chainIds }: { chainIds?: string[] } = {}) => { const enabled = completedOnboarding && isUnlocked && useCurrencyRateCheck; + const chainIds = process.env.PORTFOLIO_VIEW + ? Object.keys(networkConfigurations) + : [currentChainId]; + useMultiPolling({ startPolling: tokenRatesStartPolling, stopPollingByPollingToken: tokenRatesStopPollingByPollingToken, - input: enabled ? chainIds ?? Object.keys(networkConfigurations) : [], + input: enabled ? chainIds : [], }); return { From d909bde8ead2447f4746e1b435ad71179df4ec88 Mon Sep 17 00:00:00 2001 From: Brian Bergeron Date: Mon, 2 Dec 2024 16:12:59 -0800 Subject: [PATCH 012/111] fix(cherry-pick): use PORTFOLIO_VIEW flag to determine token list polling (#28585) Cherry picks https://github.com/MetaMask/metamask-extension/pull/28579 to 12.8.0 so chains aren't polled unnecessarily Co-authored-by: Dan J Miller --- ...rs-after-init-opt-in-background-state.json | 6 +----- .../errors-after-init-opt-in-ui-state.json | 6 +----- ui/hooks/useTokenListPolling.test.ts | 21 +++++++++++-------- ui/hooks/useTokenListPolling.ts | 8 ++++++- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json index 999dce99ca0c..9b0571e204d5 100644 --- a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json +++ b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json @@ -317,11 +317,7 @@ "TokenListController": { "tokenList": "object", "tokensChainsCache": { - "0x1": "object", - "0x539": "object", - "0xaa36a7": "object", - "0xe705": "object", - "0xe708": "object" + "0x539": "object" }, "preventPollingOnNetworkRestart": false }, diff --git a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json index acd9d6f8d074..60125eaa8d5f 100644 --- a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json +++ b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json @@ -175,11 +175,7 @@ "nonRPCGasFeeApisDisabled": "boolean", "tokenList": "object", "tokensChainsCache": { - "0x1": "object", - "0x539": "object", - "0xaa36a7": "object", - "0xe705": "object", - "0xe708": "object" + "0x539": "object" }, "preventPollingOnNetworkRestart": false, "tokens": "object", diff --git a/ui/hooks/useTokenListPolling.test.ts b/ui/hooks/useTokenListPolling.test.ts index 09a22fffea50..001dca71c80e 100644 --- a/ui/hooks/useTokenListPolling.test.ts +++ b/ui/hooks/useTokenListPolling.test.ts @@ -22,16 +22,23 @@ describe('useTokenListPolling', () => { jest.clearAllMocks(); }); - it('should poll for token lists on each chain when enabled, and stop on dismount', async () => { + it('should poll the selected network when enabled, and stop on dismount', async () => { const state = { metamask: { isUnlocked: true, completedOnboarding: true, useExternalServices: true, useTokenDetection: true, + selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { - '0x1': {}, - '0x89': {}, + '0x1': { + chainId: '0x1', + rpcEndpoints: [ + { + networkClientId: 'selectedNetworkClientId', + }, + ], + }, }, }, }; @@ -43,19 +50,15 @@ describe('useTokenListPolling', () => { // Should poll each chain await Promise.all(mockPromises); - expect(tokenListStartPolling).toHaveBeenCalledTimes(2); + expect(tokenListStartPolling).toHaveBeenCalledTimes(1); expect(tokenListStartPolling).toHaveBeenCalledWith('0x1'); - expect(tokenListStartPolling).toHaveBeenCalledWith('0x89'); // Stop polling on dismount unmount(); - expect(tokenListStopPollingByPollingToken).toHaveBeenCalledTimes(2); + expect(tokenListStopPollingByPollingToken).toHaveBeenCalledTimes(1); expect(tokenListStopPollingByPollingToken).toHaveBeenCalledWith( '0x1_token', ); - expect(tokenListStopPollingByPollingToken).toHaveBeenCalledWith( - '0x89_token', - ); }); it('should not poll before onboarding is completed', async () => { diff --git a/ui/hooks/useTokenListPolling.ts b/ui/hooks/useTokenListPolling.ts index 9b43c3c6959a..7f7de517c304 100644 --- a/ui/hooks/useTokenListPolling.ts +++ b/ui/hooks/useTokenListPolling.ts @@ -1,5 +1,6 @@ import { useSelector } from 'react-redux'; import { + getCurrentChainId, getNetworkConfigurationsByChainId, getPetnamesEnabled, getUseExternalServices, @@ -17,6 +18,7 @@ import { import useMultiPolling from './useMultiPolling'; const useTokenListPolling = () => { + const currentChainId = useSelector(getCurrentChainId); const networkConfigurations = useSelector(getNetworkConfigurationsByChainId); const useTokenDetection = useSelector(getUseTokenDetection); const useTransactionSimulations = useSelector(getUseTransactionSimulations); @@ -31,10 +33,14 @@ const useTokenListPolling = () => { useExternalServices && (useTokenDetection || petnamesEnabled || useTransactionSimulations); + const chainIds = process.env.PORTFOLIO_VIEW + ? Object.keys(networkConfigurations) + : [currentChainId]; + useMultiPolling({ startPolling: tokenListStartPolling, stopPollingByPollingToken: tokenListStopPollingByPollingToken, - input: enabled ? Object.keys(networkConfigurations) : [], + input: enabled ? chainIds : [], }); return {}; From 95a62e834402618f3cc8d68dca97d6c94c3bbc16 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Wed, 4 Dec 2024 20:01:28 +0530 Subject: [PATCH 013/111] cherry-pick: Fix decoding data display for ERC-1155 tokens (#28924) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Signature decoding data was not being displayed for ERC-1155 tokens, this PR fixes it. Original PR: https://github.com/MetaMask/metamask-extension/pull/28921 Cherry-picked link: https://github.com/MetaMask/metamask-extension/commit/fc8e51e9479890a0c25caca246ce9f2515d51a42 ## **Related issues** Fixes: https://github.com/MetaMask/metamask-extension/issues/28903 ## **Manual testing steps** Detailed [here](https://www.notion.so/metamask-consensys/Signature-Decoding-v12-9-QA-151f86d67d68802baddfebf3e44aea5e?pvs=4#151f86d67d6880f5a69aff17d227329d) ## **Screenshots/Recordings** Screenshot 2024-12-04 at 4 01 53 PM ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../decoded-simulation.test.tsx | 55 +++++++++++++++++++ .../decoded-simulation/decoded-simulation.tsx | 3 +- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx index 93cc6b9e4474..26b4c46f26cd 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx @@ -41,6 +41,23 @@ const decodingDataListing: DecodingDataStateChanges = [ }, ]; +const decodingDataListingERC1155: DecodingDataStateChanges = [ + { + assetType: 'NATIVE', + changeType: DecodingDataChangeType.Receive, + address: '', + amount: '900000000000000000', + contractAddress: '', + }, + { + assetType: 'ERC1155', + changeType: DecodingDataChangeType.Listing, + address: '', + amount: '', + contractAddress: '0xafd4896984CA60d2feF66136e57f958dCe9482d5', + tokenID: '2233', + }, +]; const decodingDataBidding: DecodingDataStateChanges = [ { assetType: 'ERC721', @@ -78,6 +95,44 @@ describe('DecodedSimulation', () => { expect(await findByText('1,461,501,637,3...')).toBeInTheDocument(); }); + it('render correctly for ERC712 token', async () => { + const state = getMockTypedSignConfirmStateForRequest({ + ...permitSignatureMsg, + decodingLoading: false, + decodingData: { stateChanges: decodingDataListing }, + }); + const mockStore = configureMockStore([])(state); + + const { findByText } = renderWithConfirmContextProvider( + , + mockStore, + ); + + expect(await findByText('Estimated changes')).toBeInTheDocument(); + expect(await findByText('You receive')).toBeInTheDocument(); + expect(await findByText('You list')).toBeInTheDocument(); + expect(await findByText('#2101')).toBeInTheDocument(); + }); + + it('render correctly for ERC1155 token', async () => { + const state = getMockTypedSignConfirmStateForRequest({ + ...permitSignatureMsg, + decodingLoading: false, + decodingData: { stateChanges: decodingDataListingERC1155 }, + }); + const mockStore = configureMockStore([])(state); + + const { findByText } = renderWithConfirmContextProvider( + , + mockStore, + ); + + expect(await findByText('Estimated changes')).toBeInTheDocument(); + expect(await findByText('You receive')).toBeInTheDocument(); + expect(await findByText('You list')).toBeInTheDocument(); + expect(await findByText('#2233')).toBeInTheDocument(); + }); + it('renders unavailable message if no state change is returned', async () => { const state = getMockTypedSignConfirmStateForRequest(permitSignatureMsg); const mockStore = configureMockStore([])(state); diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx index 55197e689600..ec07ae253405 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx @@ -75,7 +75,8 @@ const StateChangeRow = ({ tooltip={tooltip} > {(assetType === TokenStandard.ERC20 || - assetType === TokenStandard.ERC721) && ( + assetType === TokenStandard.ERC721 || + assetType === TokenStandard.ERC1155) && ( Date: Thu, 5 Dec 2024 13:34:38 +0000 Subject: [PATCH 014/111] fix: updated analytics preferences to be logged during onboarding (cherrypick-28897) (#28930) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit During onboarding while clicking on I agree button, the analytics preferences event was not being triggered. This PR is to ensure analytics preferences are logged when user click on `I agree` button in Onboarding Page ## **Related issues** Fixes: [https://github.com/MetaMask/MetaMask-planning/issues/3723](https://github.com/MetaMask/MetaMask-planning/issues/3723) ## **Manual testing steps** 1. Run extension with yarn start 2. Add console.log in trackEvent in ui/contexts/metametrics.js to see the payload 3. Do a fresh install and go on onboading flow 4. Click on I agree button on onboarding screen, check analytics preferences selected are being logged in console ## **Screenshots/Recordings** ### **Before** ### **After** https://github.com/user-attachments/assets/35e156a1-ea81-4dd6-a037-87cfcd581773 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28930?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../metametrics/metametrics.js | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/ui/pages/onboarding-flow/metametrics/metametrics.js b/ui/pages/onboarding-flow/metametrics/metametrics.js index 242638b08c5e..3a36ea90bb14 100644 --- a/ui/pages/onboarding-flow/metametrics/metametrics.js +++ b/ui/pages/onboarding-flow/metametrics/metametrics.js @@ -17,7 +17,6 @@ import { setDataCollectionForMarketing, } from '../../../store/actions'; import { - getParticipateInMetaMetrics, getDataCollectionForMarketing, getFirstTimeFlowType, getFirstTimeFlowTypeRouteAfterMetaMetricsOptIn, @@ -53,7 +52,6 @@ export default function OnboardingMetametrics() { const firstTimeFlowType = useSelector(getFirstTimeFlowType); const dataCollectionForMarketing = useSelector(getDataCollectionForMarketing); - const participateInMetaMetrics = useSelector(getParticipateInMetaMetrics); const trackEvent = useContext(MetaMetricsContext); @@ -82,22 +80,20 @@ export default function OnboardingMetametrics() { }, ); - if (participateInMetaMetrics) { - trackEvent({ - category: MetaMetricsEventCategory.Onboarding, - event: MetaMetricsEventName.AppInstalled, - }); + trackEvent({ + category: MetaMetricsEventCategory.Onboarding, + event: MetaMetricsEventName.AppInstalled, + }); - trackEvent({ - category: MetaMetricsEventCategory.Onboarding, - event: MetaMetricsEventName.AnalyticsPreferenceSelected, - properties: { - is_metrics_opted_in: true, - has_marketing_consent: Boolean(dataCollectionForMarketing), - location: 'onboarding_metametrics', - }, - }); - } + trackEvent({ + category: MetaMetricsEventCategory.Onboarding, + event: MetaMetricsEventName.AnalyticsPreferenceSelected, + properties: { + is_metrics_opted_in: true, + has_marketing_consent: Boolean(dataCollectionForMarketing), + location: 'onboarding_metametrics', + }, + }); } finally { history.push(nextRoute); } From 8cd3ced78943c6cae0bbd55eb5973c739cb2d215 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Thu, 5 Dec 2024 21:37:46 +0530 Subject: [PATCH 015/111] cherry-pick: Adding production URL for signature decoding (#28951) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Production URL for signature decoding. Original PR: https://github.com/MetaMask/metamask-extension/pull/28918 Cherry-picked commit: https://github.com/MetaMask/metamask-extension/commit/bf946bc494c71bfaaef89ae3b0c43f8e25490613 ## **Related issues** Fixes: https://github.com/MetaMask/metamask-extension/issues/28892 ## **Manual testing steps** NA ## **Screenshots/Recordings** NA ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- builds.yml | 2 +- privacy-snapshot.json | 2 +- test/e2e/tests/confirmations/helpers.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/builds.yml b/builds.yml index 3963aeda93e5..5bbe17480496 100644 --- a/builds.yml +++ b/builds.yml @@ -236,7 +236,7 @@ env: # Used to enable confirmation redesigned pages - ENABLE_CONFIRMATION_REDESIGN: '' # URL of the decoding API used to provide additional data from signature requests - - DECODING_API_URL: 'https://qtgdj2huxh.execute-api.us-east-2.amazonaws.com/uat/v1' + - DECODING_API_URL: 'https://signature-insights.api.cx.metamask.io/v1' # Determines if feature flagged Settings Page - Developer Options should be used - ENABLE_SETTINGS_PAGE_DEV_OPTIONS: false # Used for debugging changes to the phishing warning page. diff --git a/privacy-snapshot.json b/privacy-snapshot.json index 5620903a5c73..6ee430ca943c 100644 --- a/privacy-snapshot.json +++ b/privacy-snapshot.json @@ -48,7 +48,7 @@ "price.api.cx.metamask.io", "proxy.api.cx.metamask.io", "proxy.dev-api.cx.metamask.io", - "qtgdj2huxh.execute-api.us-east-2.amazonaws.com", + "signature-insights.api.cx.metamask.io", "raw.githubusercontent.com", "registry.npmjs.org", "responsive-rpc.test", diff --git a/test/e2e/tests/confirmations/helpers.ts b/test/e2e/tests/confirmations/helpers.ts index 3ea2a2927729..c9001d3e0914 100644 --- a/test/e2e/tests/confirmations/helpers.ts +++ b/test/e2e/tests/confirmations/helpers.ts @@ -11,7 +11,7 @@ import { Driver } from '../../webdriver/driver'; import Confirmation from '../../page-objects/pages/confirmations/redesign/confirmation'; export const DECODING_E2E_API_URL = - 'https://qtgdj2huxh.execute-api.us-east-2.amazonaws.com/uat/v1'; + 'https://signature-insights.api.cx.metamask.io/v1'; export async function scrollAndConfirmAndAssertConfirm(driver: Driver) { const confirmation = new Confirmation(driver); From e8a5d50076d6ecd74eb2b0f2603553da22a4794a Mon Sep 17 00:00:00 2001 From: Nick Gambino <35090461+gambinish@users.noreply.github.com> Date: Thu, 5 Dec 2024 08:08:33 -0800 Subject: [PATCH 016/111] fix: cherry-pick fix check for undefined marketData (#28870) (#28950) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Cherry pick to 12.9 RC of: https://github.com/MetaMask/metamask-extension/pull/28870 This PR fixes app crash after user removes a network then adds it back and clicks on import token banner [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28870?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/metamask-extension/issues/28019#issuecomment-2513839152 Fixes: https://github.com/MetaMask/metamask-extension/issues/28882 Fixes: https://github.com/MetaMask/metamask-extension/issues/28864 ## **Manual testing steps** Manual steps are also described in the github [issue](https://github.com/MetaMask/metamask-extension/issues/28019#issuecomment-2513839152). However; I do not think that the Show native token as main balance needs to be ONt o repro the initial issue. Also no need to add new RPC from chainList; Settings: 1. Show balance and token price OFF 2. Token autodetect ON On main view 1. Select an account which has some ERC20 tokens in Polygon 2. Add Polygon default network 3. See tokens are autodetected and you can open the modal -> but don't import the tokens! 4. Switch to another network 5. Delete Polygon network 6. Re-add Polygon default network 7. Click Import tokens --> Wallet should not crash 12. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28950?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: sahar-fehri --- .../asset-list-control-bar.tsx | 2 +- .../app/assets/asset-list/asset-list.tsx | 5 +++-- .../app/assets/token-list/token-list.tsx | 4 +--- ui/hooks/useTokenFiatAmount.js | 19 ++++++++++--------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ui/components/app/assets/asset-list/asset-list-control-bar/asset-list-control-bar.tsx b/ui/components/app/assets/asset-list/asset-list-control-bar/asset-list-control-bar.tsx index 8e6abb940d1c..00e0692cfc73 100644 --- a/ui/components/app/assets/asset-list/asset-list-control-bar/asset-list-control-bar.tsx +++ b/ui/components/app/assets/asset-list/asset-list-control-bar/asset-list-control-bar.tsx @@ -99,7 +99,7 @@ const AssetListControlBar = ({ showTokensLinks }: AssetListControlBarProps) => { // When a network gets added/removed we want to make sure that we switch to the filtered list of the current network // We only want to do this if the "Current Network" filter is selected useEffect(() => { - if (Object.keys(tokenNetworkFilter).length === 1) { + if (Object.keys(tokenNetworkFilter || {}).length === 1) { dispatch(setTokenNetworkFilter({ [currentNetwork.chainId]: true })); } }, [Object.keys(allNetworks).length]); diff --git a/ui/components/app/assets/asset-list/asset-list.tsx b/ui/components/app/assets/asset-list/asset-list.tsx index 6a3036f88764..ab2adb308bf4 100644 --- a/ui/components/app/assets/asset-list/asset-list.tsx +++ b/ui/components/app/assets/asset-list/asset-list.tsx @@ -117,14 +117,15 @@ const AssetList = ({ onClickAsset, showTokensLinks }: AssetListProps) => { ); const totalTokens = - process.env.PORTFOLIO_VIEW && !allNetworksFilterShown + process.env.PORTFOLIO_VIEW && + !allNetworksFilterShown && + detectedTokensMultichain ? (Object.values(detectedTokensMultichain).reduce( // @ts-expect-error TS18046: 'tokenArray' is of type 'unknown' (count, tokenArray) => count + tokenArray.length, 0, ) as number) : detectedTokens.length; - return ( <> {totalTokens && diff --git a/ui/components/app/assets/token-list/token-list.tsx b/ui/components/app/assets/token-list/token-list.tsx index 5e25c7ff5f41..d3e67f6204cc 100644 --- a/ui/components/app/assets/token-list/token-list.tsx +++ b/ui/components/app/assets/token-list/token-list.tsx @@ -116,8 +116,7 @@ export default function TokenList({ const allNetworkFilters = Object.fromEntries( Object.keys(allNetworks).map((chainId) => [chainId, true]), ); - - if (Object.keys(tokenNetworkFilter).length > 1) { + if (Object.keys(tokenNetworkFilter || {}).length > 1) { dispatch(setTokenNetworkFilter(allNetworkFilters)); } } @@ -125,7 +124,6 @@ export default function TokenList({ const consolidatedBalances = () => { const tokensWithBalance: TokenWithFiatAmount[] = []; - Object.entries(selectedAccountTokensChains).forEach( ([stringChainKey, tokens]) => { const chainId = stringChainKey as Hex; diff --git a/ui/hooks/useTokenFiatAmount.js b/ui/hooks/useTokenFiatAmount.js index 486b8ba14fd6..325dbf5eea22 100644 --- a/ui/hooks/useTokenFiatAmount.js +++ b/ui/hooks/useTokenFiatAmount.js @@ -42,15 +42,16 @@ export function useTokenFiatAmount( shallowEqual, ); - const contractMarketData = chainId - ? Object.entries(allMarketData[chainId]).reduce( - (acc, [address, marketData]) => { - acc[address] = marketData?.price ?? null; - return acc; - }, - {}, - ) - : null; + const contractMarketData = + chainId && allMarketData[chainId] + ? Object.entries(allMarketData[chainId]).reduce( + (acc, [address, marketData]) => { + acc[address] = marketData?.price ?? null; + return acc; + }, + {}, + ) + : null; const tokenMarketData = chainId ? contractMarketData : contractExchangeRates; From a2e99dc1ddf2cfece9e7e01ca3cc14474ebbb57b Mon Sep 17 00:00:00 2001 From: Pedro Pablo Aste Kompen Date: Thu, 5 Dec 2024 13:10:55 -0300 Subject: [PATCH 017/111] chore: cherry pick merge of #28898 (#28965) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** cherry pick https://github.com/MetaMask/metamask-extension/issues/28898 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28841?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28965?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: George Weiler Co-authored-by: Dan J Miller --- ui/hooks/ramps/useRamps/useRamps.test.tsx | 14 +++++++++++ ui/hooks/ramps/useRamps/useRamps.ts | 30 ++++++++++++++--------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/ui/hooks/ramps/useRamps/useRamps.test.tsx b/ui/hooks/ramps/useRamps/useRamps.test.tsx index 0b0b8124666b..a1c4101bcbcd 100644 --- a/ui/hooks/ramps/useRamps/useRamps.test.tsx +++ b/ui/hooks/ramps/useRamps/useRamps.test.tsx @@ -103,4 +103,18 @@ describe('useRamps', () => { }); }, ); + it('should return the default URL when an invalid URL is provided', () => { + jest.resetModules(); + + const originalPortfolioUrl = process.env.PORTFOLIO_URL; + process.env = { PORTFOLIO_URL: 'invalid-url' }; + + const { result } = renderHook(() => useRamps(), { wrapper }); + + const buyURI = result.current.getBuyURI('0x1'); + expect(buyURI).toBe('https://portfolio.metamask.io/buy'); + + process.env.PORTFOLIO_URL = originalPortfolioUrl; + jest.resetModules(); + }); }); diff --git a/ui/hooks/ramps/useRamps/useRamps.ts b/ui/hooks/ramps/useRamps/useRamps.ts index 3dd230eaf6ea..b4c457809be6 100644 --- a/ui/hooks/ramps/useRamps/useRamps.ts +++ b/ui/hooks/ramps/useRamps/useRamps.ts @@ -22,7 +22,6 @@ export enum RampsMetaMaskEntry { BtcBanner = 'ext_buy_banner_btc', } -const portfolioUrl = process.env.PORTFOLIO_URL; const useRamps = ( metamaskEntry: RampsMetaMaskEntry = RampsMetaMaskEntry.BuySellButton, ): IUseRamps => { @@ -33,18 +32,25 @@ const useRamps = ( const getBuyURI = useCallback( (_chainId: Hex | CaipChainId) => { - const params = new URLSearchParams(); - params.set('metamaskEntry', metamaskEntry); - params.set('chainId', _chainId); - if (metaMetricsId) { - params.set('metametricsId', metaMetricsId); - } - params.set('metricsEnabled', String(isMetaMetricsEnabled)); - if (isMarketingEnabled) { - params.set('marketingEnabled', String(isMarketingEnabled)); - } + try { + const params = new URLSearchParams(); + params.set('metamaskEntry', metamaskEntry); + params.set('chainId', _chainId); + if (metaMetricsId) { + params.set('metametricsId', metaMetricsId); + } + params.set('metricsEnabled', String(isMetaMetricsEnabled)); + if (isMarketingEnabled) { + params.set('marketingEnabled', String(isMarketingEnabled)); + } - return `${portfolioUrl}/buy?${params.toString()}`; + const url = new URL(process.env.PORTFOLIO_URL || ''); + url.pathname = 'buy'; + url.search = params.toString(); + return url.toString(); + } catch { + return 'https://portfolio.metamask.io/buy'; + } }, [metaMetricsId], ); From 56a51c18045e106751481aca8e1e53e3134dc0c3 Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Thu, 5 Dec 2024 20:04:13 +0000 Subject: [PATCH 018/111] Version v12.8.1 --- CHANGELOG.md | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71056ec1113f..cc1e9013064a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [12.8.1] + ## [12.8.0] ### Added - Added multi-chain polling for token prices ([#28158](https://github.com/MetaMask/metamask-extension/pull/28158)) @@ -5417,7 +5419,8 @@ Update styles and spacing on the critical error page ([#20350](https://github.c - Added the ability to restore accounts from seed words. -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.8.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v12.8.1...HEAD +[12.8.1]: https://github.com/MetaMask/metamask-extension/compare/v12.8.0...v12.8.1 [12.8.0]: https://github.com/MetaMask/metamask-extension/compare/v12.7.2...v12.8.0 [12.7.2]: https://github.com/MetaMask/metamask-extension/compare/v12.7.1...v12.7.2 [12.7.1]: https://github.com/MetaMask/metamask-extension/compare/v12.7.0...v12.7.1 diff --git a/package.json b/package.json index a57350b4ed76..f99dc9280e23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask-crx", - "version": "12.8.0", + "version": "12.8.1", "private": true, "repository": { "type": "git", From 3343be52b72e752e3568c16121e1dc58a4301ed8 Mon Sep 17 00:00:00 2001 From: Salim TOUBAL Date: Fri, 6 Dec 2024 00:48:36 +0100 Subject: [PATCH 019/111] feat: migrate base mainnet rpc to infura (#28974) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR introduces a migration to replace the Base network RPC URL (`https://mainnet.base.org`) with the new Infura RPC URL (`https://base-mainnet.infura.io/v3/{infuraProjectId}`) in the MetaMask state. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28895?quickstart=1) Fixes: 1. build the app on main branch and put the file on tmp-chrome folder 2. Add base network 3. build the app on the current branch 4. replace the main build with the new one 5. base url should be updated before Screenshot 2024-12-05 at 20 12 53 - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/scripts/migrations/135.test.ts | 254 +++++++++++++++++++++++++++++ app/scripts/migrations/135.ts | 128 +++++++++++++++ app/scripts/migrations/index.js | 1 + shared/constants/network.test.ts | 4 +- shared/constants/network.ts | 64 +++++++- 5 files changed, 448 insertions(+), 3 deletions(-) create mode 100644 app/scripts/migrations/135.test.ts create mode 100644 app/scripts/migrations/135.ts diff --git a/app/scripts/migrations/135.test.ts b/app/scripts/migrations/135.test.ts new file mode 100644 index 000000000000..d016c10b7edc --- /dev/null +++ b/app/scripts/migrations/135.test.ts @@ -0,0 +1,254 @@ +import { cloneDeep } from 'lodash'; +import { NetworkState } from '@metamask/network-controller'; +import { infuraProjectId } from '../../../shared/constants/network'; +import { migrate, version } from './135'; + +const oldVersion = 134; +const BASE_CHAIN_ID = '0x2105'; + +describe('migration #135', () => { + it('updates the version metadata', async () => { + const oldStorage = { + meta: { version: oldVersion }, + data: {}, + }; + + const newStorage = await migrate(cloneDeep(oldStorage)); + + expect(newStorage.meta).toStrictEqual({ version }); + }); + + describe('Base Network Migration', () => { + it('does nothing if networkConfigurationsByChainId is not in state', async () => { + const oldState = { + OtherController: {}, + }; + + const transformedState = await migrate({ + meta: { version: oldVersion }, + data: cloneDeep(oldState), + }); + + expect(transformedState.data).toEqual(oldState); + }); + + it('does nothing if no Infura RPC endpoints are used', async () => { + const oldState = { + NetworkController: { + networkConfigurationsByChainId: { + '0x1': { + rpcEndpoints: [ + { + url: 'https://custom.rpc', + type: 'custom', + }, + ], + defaultRpcEndpointIndex: 0, + }, + }, + }, + }; + + const transformedState = await migrate({ + meta: { version: oldVersion }, + data: cloneDeep(oldState), + }); + + expect(transformedState.data).toEqual(oldState); + }); + + it('does nothing if Base network configuration is missing', async () => { + const oldState = { + NetworkController: { + networkConfigurationsByChainId: { + '0x1': { + rpcEndpoints: [ + { + url: `https://mainnet.infura.io/v3/${infuraProjectId}`, + type: 'infura', + }, + ], + defaultRpcEndpointIndex: 0, + }, + }, + }, + }; + + const transformedState = await migrate({ + meta: { version: oldVersion }, + data: cloneDeep(oldState), + }); + + expect(transformedState.data).toEqual(oldState); + }); + + it('replaces "https://mainnet.base.org" if the default RPC endpoint is Infura', async () => { + const oldState = { + NetworkController: { + networkConfigurationsByChainId: { + [BASE_CHAIN_ID]: { + rpcEndpoints: [ + { + url: 'https://mainnet.base.org', + type: 'custom', + }, + ], + defaultRpcEndpointIndex: 0, + }, + '0x1': { + rpcEndpoints: [ + { + url: `https://mainnet.infura.io/v3/${infuraProjectId}`, + type: 'infura', + }, + ], + defaultRpcEndpointIndex: 0, + }, + }, + }, + }; + + const transformedState = await migrate({ + meta: { version: oldVersion }, + data: cloneDeep(oldState), + }); + + const updatedNetworkController = transformedState.data + .NetworkController as NetworkState; + + expect( + updatedNetworkController.networkConfigurationsByChainId[BASE_CHAIN_ID] + .rpcEndpoints[0].url, + ).toEqual(`https://base-mainnet.infura.io/v3/${infuraProjectId}`); + }); + + it('does not modify RPC endpoints if the default RPC endpoint is not Infura', async () => { + const oldState = { + NetworkController: { + networkConfigurationsByChainId: { + [BASE_CHAIN_ID]: { + rpcEndpoints: [ + { + url: 'https://other.rpc', + type: 'custom', + }, + ], + defaultRpcEndpointIndex: 0, + }, + '0x1': { + rpcEndpoints: [ + { + url: 'https://custom.rpc', + type: 'custom', + }, + ], + defaultRpcEndpointIndex: 0, + }, + }, + }, + }; + + const transformedState = await migrate({ + meta: { version: oldVersion }, + data: cloneDeep(oldState), + }); + + const updatedNetworkController = transformedState.data + .NetworkController as NetworkState; + + expect( + updatedNetworkController.networkConfigurationsByChainId[BASE_CHAIN_ID] + .rpcEndpoints[0].url, + ).toEqual('https://other.rpc'); + }); + + it('keeps defaultRpcEndpointIndex unchanged when replacing "https://mainnet.base.org"', async () => { + const oldState = { + NetworkController: { + networkConfigurationsByChainId: { + [BASE_CHAIN_ID]: { + rpcEndpoints: [ + { + url: 'https://mainnet.base.org', + type: 'custom', + }, + ], + defaultRpcEndpointIndex: 0, + }, + '0x1': { + rpcEndpoints: [ + { + url: `https://mainnet.infura.io/v3/${infuraProjectId}`, + type: 'infura', + }, + ], + defaultRpcEndpointIndex: 0, + }, + }, + }, + }; + + const transformedState = await migrate({ + meta: { version: oldVersion }, + data: cloneDeep(oldState), + }); + + const updatedNetworkController = transformedState.data + .NetworkController as NetworkState; + + expect( + updatedNetworkController.networkConfigurationsByChainId[BASE_CHAIN_ID] + .defaultRpcEndpointIndex, + ).toEqual(0); + }); + + it('does nothing if Linea mainnet is excluded', async () => { + const oldState = { + NetworkController: { + networkConfigurationsByChainId: { + [BASE_CHAIN_ID]: { + rpcEndpoints: [ + { + url: 'https://mainnet.base.org', + type: 'custom', + }, + ], + defaultRpcEndpointIndex: 0, + }, + '0x1': { + rpcEndpoints: [ + { + url: `https://mainnet.infura.io/v3/${infuraProjectId}`, + type: 'infura', + }, + ], + defaultRpcEndpointIndex: 0, + }, + '0x13881': { + rpcEndpoints: [ + { + url: 'https://rpc.goerli.linea.io', + type: 'custom', + }, + ], + defaultRpcEndpointIndex: 0, + }, + }, + }, + }; + + const transformedState = await migrate({ + meta: { version: oldVersion }, + data: cloneDeep(oldState), + }); + + const updatedNetworkController = transformedState.data + .NetworkController as NetworkState; + + expect( + updatedNetworkController.networkConfigurationsByChainId['0x13881'] + .rpcEndpoints[0].url, + ).toEqual('https://rpc.goerli.linea.io'); + }); + }); +}); diff --git a/app/scripts/migrations/135.ts b/app/scripts/migrations/135.ts new file mode 100644 index 000000000000..3120b7caff21 --- /dev/null +++ b/app/scripts/migrations/135.ts @@ -0,0 +1,128 @@ +import { hasProperty, isObject } from '@metamask/utils'; +import { RpcEndpointType } from '@metamask/network-controller'; +import { cloneDeep } from 'lodash'; +import { + allowedInfuraHosts, + CHAIN_IDS, + infuraChainIdsTestNets, + infuraProjectId, +} from '../../../shared/constants/network'; + +export const version = 135; +const BASE_CHAIN_ID = '0x2105'; + +/** + * Replace all occurrences of "https://mainnet.base.org" with + * "https://base-mainnet.infura.io/v3/${infuraProjectId}" in the Base network configuration, + * if the user already relies on at least one Infura RPC endpoint. + * + * @param originalVersionedData - Versioned MetaMask extension state, exactly + * what we persist to dist. + * @param originalVersionedData.meta - State metadata. + * @param originalVersionedData.meta.version - The current state version. + * @param originalVersionedData.data - The persisted MetaMask state, keyed by + * controller. + * @returns Updated versioned MetaMask extension state. + */ +export async function migrate(originalVersionedData: { + meta: { version: number }; + data: Record; +}) { + const versionedData = cloneDeep(originalVersionedData); + versionedData.meta.version = version; + versionedData.data = transformState(versionedData.data); + return versionedData; +} + +function transformState(state: Record) { + if ( + hasProperty(state, 'NetworkController') && + isObject(state.NetworkController) && + hasProperty(state.NetworkController, 'networkConfigurationsByChainId') && + isObject(state.NetworkController.networkConfigurationsByChainId) + ) { + const { networkConfigurationsByChainId } = state.NetworkController; + + // Check if at least one network uses an Infura RPC endpoint, excluding testnets + const usesInfura = Object.entries(networkConfigurationsByChainId) + .filter( + ([chainId]) => + ![...infuraChainIdsTestNets, CHAIN_IDS.LINEA_MAINNET].includes( + chainId, + ), + ) + .some(([, networkConfig]) => { + if ( + !isObject(networkConfig) || + !Array.isArray(networkConfig.rpcEndpoints) || + typeof networkConfig.defaultRpcEndpointIndex !== 'number' + ) { + return false; + } + + // Get the default RPC endpoint used by the network + const defaultRpcEndpoint = + networkConfig?.rpcEndpoints?.[networkConfig?.defaultRpcEndpointIndex]; + + if ( + !isObject(defaultRpcEndpoint) || + typeof defaultRpcEndpoint.url !== 'string' + ) { + return false; + } + + try { + const urlHost = new URL(defaultRpcEndpoint.url).host; + return ( + defaultRpcEndpoint.type === RpcEndpointType.Infura || + allowedInfuraHosts.includes(urlHost) + ); + } catch { + return false; + } + }); + + if (!usesInfura) { + // If no Infura endpoints are used, return the state unchanged + return state; + } + + // Check for Base network configuration (chainId 8453 / 0x2105) + const baseNetworkConfig = networkConfigurationsByChainId[BASE_CHAIN_ID]; + if (isObject(baseNetworkConfig)) { + const { rpcEndpoints } = baseNetworkConfig; + + if (Array.isArray(rpcEndpoints)) { + // Find the first occurrence of "https://mainnet.base.org" + const index = rpcEndpoints.findIndex( + (endpoint) => + isObject(endpoint) && endpoint.url === 'https://mainnet.base.org', + ); + + if (index !== -1) { + // Replace the URL with the new Infura URL + rpcEndpoints[index] = { + ...rpcEndpoints[index], + url: `https://base-mainnet.infura.io/v3/${infuraProjectId}`, + }; + + // Update the configuration + networkConfigurationsByChainId[BASE_CHAIN_ID] = { + ...baseNetworkConfig, + rpcEndpoints, + }; + + return { + ...state, + NetworkController: { + ...state.NetworkController, + networkConfigurationsByChainId, + }, + }; + } + } + } + } + + return state; +} diff --git a/app/scripts/migrations/index.js b/app/scripts/migrations/index.js index d2c63eb2e35c..a43fbf6ca632 100644 --- a/app/scripts/migrations/index.js +++ b/app/scripts/migrations/index.js @@ -152,6 +152,7 @@ const migrations = [ require('./129'), require('./130'), require('./131'), + require('./135'), ]; export default migrations; diff --git a/shared/constants/network.test.ts b/shared/constants/network.test.ts index 9d9ca72b46cd..1fe489488f8f 100644 --- a/shared/constants/network.test.ts +++ b/shared/constants/network.test.ts @@ -87,11 +87,11 @@ describe('NetworkConstants', () => { expect(zksyncEraRpc.rpcEndpoints[0].url).not.toContain('infura.io'); }); - it('base entry should not use Infura', () => { + it('base entry should use Infura', () => { const [baseRpc] = FEATURED_RPCS.filter( (rpc) => rpc.chainId === CHAIN_IDS.BASE, ); - expect(baseRpc.rpcEndpoints[0].url).not.toContain('infura.io'); + expect(baseRpc.rpcEndpoints[0].url).toContain('infura.io'); }); }); }); diff --git a/shared/constants/network.ts b/shared/constants/network.ts index 4844e7c2e981..b17d60035ef7 100644 --- a/shared/constants/network.ts +++ b/shared/constants/network.ts @@ -125,8 +125,18 @@ export const CHAIN_IDS = { HARMONY: '0x63564c40', PALM: '0x2a15c308d', SEPOLIA: '0xaa36a7', + HOLESKY: '0x4268', LINEA_GOERLI: '0xe704', LINEA_SEPOLIA: '0xe705', + AMOY: '0x13882', + BASE_SEPOLIA: '0x14a34', + BLAST_SEPOLIA: '0xa0c71fd', + OPTIMISM_SEPOLIA: '0xaa37dc', + PALM_TESTNET: '0x2a15c3083', + CELO_TESTNET: '0xaef3', + ZK_SYNC_ERA_TESTNET: '0x12c', + MANTA_SEPOLIA: '0x138b', + UNICHAIN_SEPOLIA: '0x515', LINEA_MAINNET: '0xe708', AURORA: '0x4e454152', MOONBEAM: '0x504', @@ -1056,7 +1066,7 @@ export const FEATURED_RPCS: AddNetworkFields[] = [ nativeCurrency: CURRENCY_SYMBOLS.ETH, rpcEndpoints: [ { - url: `https://mainnet.base.org`, + url: `https://base-mainnet.infura.io/v3/${infuraProjectId}`, type: RpcEndpointType.Custom, }, ], @@ -1066,6 +1076,58 @@ export const FEATURED_RPCS: AddNetworkFields[] = [ }, ]; +export const infuraChainIdsTestNets: string[] = [ + CHAIN_IDS.SEPOLIA, + CHAIN_IDS.HOLESKY, + CHAIN_IDS.LINEA_SEPOLIA, + CHAIN_IDS.AMOY, + CHAIN_IDS.BASE_SEPOLIA, + CHAIN_IDS.OPTIMISM_SEPOLIA, + CHAIN_IDS.ARBITRUM_SEPOLIA, + CHAIN_IDS.PALM_TESTNET, + CHAIN_IDS.AVALANCHE_TESTNET, + CHAIN_IDS.CELO_TESTNET, + CHAIN_IDS.ZK_SYNC_ERA_TESTNET, + CHAIN_IDS.BSC_TESTNET, + CHAIN_IDS.MANTA_SEPOLIA, + CHAIN_IDS.OPBNB_TESTNET, + CHAIN_IDS.SCROLL_SEPOLIA, + CHAIN_IDS.UNICHAIN_SEPOLIA, +]; + +export const allowedInfuraHosts = [ + // Ethereum + 'mainnet.infura.io', + // Linea + 'linea-mainnet.infura.io', + // Polygon + 'polygon-mainnet.infura.io', + // Base + 'base-mainnet.infura.io', + // Blast + 'blast-mainnet.infura.io', + // Optimism + 'optimism-mainnet.infura.io', + // Arbitrum + 'arbitrum-mainnet.infura.io', + // Palm + 'palm-mainnet.infura.io', + // Avalanche + 'avalanche-mainnet.infura.io', + // Celo + 'celo-mainnet.infura.io', + // ZKSync + 'zksync-mainnet.infura.io', + // BSC + 'bsc-mainnet.infura.io', + // Mantle + 'mantle-mainnet.infura.io', + // OPBNB + 'opbnb-mainnet.infura.io', + // Scroll + 'scroll-mainnet.infura.io', +]; + /** * Represents the availability state of the currently selected network. */ From 12e02aaac8399c9421e1d58d00efefc01b6dc10c Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Fri, 6 Dec 2024 00:33:04 -0330 Subject: [PATCH 020/111] Update changelog for v12.8.1 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc1e9013064a..c216563f3315 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [12.8.1] +### Fixed +- Update default Base rpc to https://base-mainnet.infura.io/ ([#28974](https://github.com/MetaMask/metamask-extension/pull/28974)) ## [12.8.0] ### Added From 2fe56cbc168e0c99baade841502813ecc3ea0979 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Fri, 6 Dec 2024 00:11:25 -0330 Subject: [PATCH 021/111] chore: Renumber migration 135 to 131.1 (#28979) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR updates the number on migration 135 to 131.1, so that we can smoothly release it in a v12.8.1 hotfix Migration 135 was just added here https://github.com/MetaMask/metamask-extension/pull/28974 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28979?quickstart=1) Fixes: 1. Go to this page... 2. 3. - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/scripts/migrations/{135.test.ts => 131.1.test.ts} | 6 +++--- app/scripts/migrations/{135.ts => 131.1.ts} | 2 +- app/scripts/migrations/index.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) rename app/scripts/migrations/{135.test.ts => 131.1.test.ts} (98%) rename app/scripts/migrations/{135.ts => 131.1.ts} (99%) diff --git a/app/scripts/migrations/135.test.ts b/app/scripts/migrations/131.1.test.ts similarity index 98% rename from app/scripts/migrations/135.test.ts rename to app/scripts/migrations/131.1.test.ts index d016c10b7edc..3d1d8446a983 100644 --- a/app/scripts/migrations/135.test.ts +++ b/app/scripts/migrations/131.1.test.ts @@ -1,12 +1,12 @@ import { cloneDeep } from 'lodash'; import { NetworkState } from '@metamask/network-controller'; import { infuraProjectId } from '../../../shared/constants/network'; -import { migrate, version } from './135'; +import { migrate, version } from './131.1'; -const oldVersion = 134; +const oldVersion = 131; const BASE_CHAIN_ID = '0x2105'; -describe('migration #135', () => { +describe('migration #131.1', () => { it('updates the version metadata', async () => { const oldStorage = { meta: { version: oldVersion }, diff --git a/app/scripts/migrations/135.ts b/app/scripts/migrations/131.1.ts similarity index 99% rename from app/scripts/migrations/135.ts rename to app/scripts/migrations/131.1.ts index 3120b7caff21..4b9478afd2ab 100644 --- a/app/scripts/migrations/135.ts +++ b/app/scripts/migrations/131.1.ts @@ -8,7 +8,7 @@ import { infuraProjectId, } from '../../../shared/constants/network'; -export const version = 135; +export const version = 131.1; const BASE_CHAIN_ID = '0x2105'; /** diff --git a/app/scripts/migrations/index.js b/app/scripts/migrations/index.js index a43fbf6ca632..4b74b11218ca 100644 --- a/app/scripts/migrations/index.js +++ b/app/scripts/migrations/index.js @@ -152,7 +152,7 @@ const migrations = [ require('./129'), require('./130'), require('./131'), - require('./135'), + require('./131.1'), ]; export default migrations; From ef35d13f6990b8046c19709d03a2ac627a4721c6 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Thu, 5 Dec 2024 20:56:51 -0330 Subject: [PATCH 022/111] fix: Fix create metric fragment (#28970) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The function `createEventFragment` of the `MetaMetricsController` was broken recently in the migration to BaseControllerV2 (#28113). We ended up trying to mutate a piece of Immer state, resulting in an error. The affected line was updated to use `cloneDeep` prior to mutating, so that we're no longer attempting to mutate a frozen object. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28970?quickstart=1) Fixes #28599 I'm not sure exactly how to reproduce the error using a real build. But the problem is easy to demonstrate in the "should update existing fragment state with new fragment props" unit test. The problem is that we didn't catch this before because Lodash doesn't have strict mode enabled, so in unit tests the attempt to mutate a frozen object will silently fail. In a production build, [strict mode is enabled by LavaMoat](https://github.com/LavaMoat/LavaMoat/blob/7a3896a08b45f667649c46a56f27fe7bf20f4207/packages/lavapack/src/pack.js#L333). You can reproduce the problem by adding `"use strict"` to the top of the file `node_modules/lodash/lodash.js` and running the test with the `{}, ` removed. Then you can test that adding back `{}` as the initial parameter fixes the problem. N/A - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/scripts/controllers/metametrics-controller.test.ts | 1 + app/scripts/controllers/metametrics-controller.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/scripts/controllers/metametrics-controller.test.ts b/app/scripts/controllers/metametrics-controller.test.ts index 58fad403fdab..af9b890698d8 100644 --- a/app/scripts/controllers/metametrics-controller.test.ts +++ b/app/scripts/controllers/metametrics-controller.test.ts @@ -309,6 +309,7 @@ describe('MetaMetricsController', function () { }); const expectedFragment = merge( + {}, SAMPLE_TX_SUBMITTED_PARTIAL_FRAGMENT, SAMPLE_PERSISTED_EVENT_NO_ID, { diff --git a/app/scripts/controllers/metametrics-controller.ts b/app/scripts/controllers/metametrics-controller.ts index d29a2840eb27..ffef1e37ed41 100644 --- a/app/scripts/controllers/metametrics-controller.ts +++ b/app/scripts/controllers/metametrics-controller.ts @@ -584,7 +584,7 @@ export default class MetaMetricsController extends BaseController< this.update((state) => { // @ts-expect-error this is caused by a bug in Immer, not being able to handle recursive types like Json - state.fragments[id] = merge(additionalFragmentProps, fragment); + state.fragments[id] = merge({}, additionalFragmentProps, fragment); }); if (fragment.initialEvent) { From 4fa2bd1b49de1fe483440976bf58b0c6f2157e67 Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Fri, 6 Dec 2024 12:33:25 +0000 Subject: [PATCH 023/111] Update Attributions --- attribution.txt | 972 +++++++++++++++++++++++++++--------------------- 1 file changed, 556 insertions(+), 416 deletions(-) diff --git a/attribution.txt b/attribution.txt index dd0a941aadd8..bd4b636a2170 100644 --- a/attribution.txt +++ b/attribution.txt @@ -1773,34 +1773,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -base-x -5.0.0 -The MIT License (MIT) - -Copyright (c) 2018 base-x contributors -Copyright (c) 2014-2018 The Bitcoin Core developers - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** bchaddrjs @@ -2278,10 +2250,10 @@ SOFTWARE. ****************************** bitwise -2.2.1 +2.1.0 # The MIT License (MIT) -Copyright (c) `2023` Florian Wendelborn +Copyright (c) `2019` Florian Wendelborn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -2443,7 +2415,7 @@ SOFTWARE. ****************************** borc -3.0.0 +2.1.2 The MIT License (MIT) Copyright (c) 2016 Friedel Ziegelmayer @@ -2915,33 +2887,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -bs58 -6.0.0 -MIT License - -Copyright (c) 2018 cryptocoinjs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** bs58check @@ -2996,33 +2941,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -bs58check -4.0.0 -The MIT License (MIT) - -Copyright (c) 2017 Daniel Cousens - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** buffer @@ -3671,6 +3589,34 @@ public licenses. Creative Commons may be contacted at creativecommons.org. +****************************** + +case +1.6.3 +Copyright (c) 2013 Nathan Bubna + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + ****************************** cashaddrjs @@ -3739,90 +3685,337 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -chalk -2.4.2 -MIT License +@chainsafe/as-sha256 +0.3.1 + Copyright 2019 ChainSafe Systems -Copyright (c) Sindre Sorhus (sindresorhus.com) + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + http://www.apache.org/licenses/LICENSE-2.0 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -chalk -4.1.2 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +@chainsafe/persistent-merkle-tree +0.4.2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -****************************** + 1. Definitions. -chalk -5.3.0 -MIT License + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Copyright (c) Sindre Sorhus (https://sindresorhus.com) + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -****************************** + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -character-entities -1.2.1 -(The MIT License) + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -Copyright (c) 2015 Titus Wormer + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -****************************** + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -character-entities-legacy -1.1.1 -(The MIT License) + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -Copyright (c) 2015 Titus Wormer + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +****************************** + +@chainsafe/ssz +0.9.4 <> +Copyright 2019- ChainSafe Systems + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +****************************** + +chalk +2.4.2 +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +chalk +4.1.2 +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +chalk +5.3.0 +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +character-entities +1.2.1 +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +character-entities-legacy +1.1.1 +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -4502,211 +4695,23 @@ distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -crc-32 -1.2.2 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. - APPENDIX: How to apply the Apache License to your work. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - Copyright (C) 2014-present SheetJS LLC +****************************** + +crc-32 +1.2.0 +Copyright (C) 2014-present SheetJS Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -4721,6 +4726,7 @@ crc-32 limitations under the License. + ****************************** create-hash @@ -5239,6 +5245,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +delimit-stream +0.1.0 +Copyright (c) 2013, Jason Kuhrt +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ****************************** detect-browser @@ -5600,7 +5634,14 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ****************************** elliptic -6.5.7 +6.5.4 +license: MIT +authors: Fedor Indutny + +****************************** + +elliptic +6.6.1 license: MIT authors: Fedor Indutny @@ -6497,7 +6538,7 @@ eslint-visitor-keys ****************************** eth-chainlist -0.0.519 +0.0.498 The MIT License (MIT) Copyright (c) 2022 Zane J. Chua @@ -6522,6 +6563,13 @@ THE SOFTWARE. ****************************** +eth-eip712-util-browser +0.0.3 +license: ISC +authors: Dan Finlay + +****************************** + eth-ens-namehash 2.0.8 license: ISC @@ -6559,6 +6607,32 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +ethereum-cryptography +1.1.2 +The MIT License (MIT) + +Copyright (c) 2021 Patricio Palladino, Paul Miller, ethereum-cryptography contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + ****************************** ethereum-cryptography @@ -6588,7 +6662,7 @@ THE SOFTWARE. ****************************** @ethereumjs/common -3.2.0 +3.1.1 The MIT License (MIT) Copyright (c) 2015 @@ -6616,7 +6690,7 @@ SOFTWARE. ****************************** @ethereumjs/common -4.3.0 +3.2.0 The MIT License (MIT) Copyright (c) 2015 @@ -7430,7 +7504,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -4.2.0 +4.1.1 Mozilla Public License Version 2.0 ================================== @@ -7809,7 +7883,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -5.3.0 +4.2.0 Mozilla Public License Version 2.0 ================================== @@ -10794,6 +10868,25 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +exit-on-epipe +1.0.1 +Copyright (C) 2015-present SheetJS + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ****************************** extend @@ -12103,7 +12196,7 @@ SOFTWARE. ****************************** gridplus-sdk -2.7.1 +2.5.1 MIT License Copyright (c) 2019 GridPlus, Inc @@ -13970,7 +14063,7 @@ SOFTWARE. ****************************** iso-url -1.2.1 +0.4.7 MIT License Copyright (c) Hugo Dias (hugodias.me) @@ -15141,7 +15234,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** json-text-sequence -0.3.0 +0.1.1 The MIT License (MIT) Copyright (c) 2014 Joe Hildebrand @@ -21599,6 +21692,58 @@ THE SOFTWARE. ****************************** +@noble/hashes +1.1.2 +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + +@noble/hashes +1.1.3 +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + @noble/hashes 1.3.2 The MIT License (MIT) @@ -21677,11 +21822,11 @@ THE SOFTWARE. ****************************** -@noble/hashes -1.5.0 +@noble/secp256k1 +1.6.3 The MIT License (MIT) -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2019 Paul Miller (https://paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal @@ -22341,6 +22486,26 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +printj +1.1.2 +Copyright (C) 2016-present SheetJS + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + ****************************** process @@ -25850,7 +26015,7 @@ THE SOFTWARE. ****************************** @scure/base -1.1.9 +1.1.7 The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -25874,6 +26039,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@scure/bip32 +1.1.0 +The MIT License (MIT) + +Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ****************************** @scure/bip32 @@ -25904,7 +26096,7 @@ THE SOFTWARE. ****************************** @scure/bip39 -1.3.0 +1.1.0 The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -25930,17 +26122,14 @@ THE SOFTWARE. ****************************** -secp256k1 -4.0.4 +@scure/bip39 +1.3.0 The MIT License (MIT) -Copyright (c) 2014-2016 secp256k1-node contributors - -Parts of this software are based on bn.js, elliptic, hash.js -Copyright (c) 2014-2016 Fedor Indutny +Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal +of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is @@ -25949,7 +26138,7 @@ furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -25961,7 +26150,7 @@ THE SOFTWARE. ****************************** secp256k1 -5.0.1 +4.0.4 The MIT License (MIT) Copyright (c) 2014-2016 secp256k1-node contributors @@ -26993,13 +27182,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@sovpro/delimited-stream -1.1.0 -license: MIT -authors: sovpro - ****************************** space-separated-tokens @@ -29512,33 +29694,6 @@ authors: Mohamed Hegazy SOFTWARE -****************************** - -@types/uuid -10.0.0 - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - ****************************** @types/uuid @@ -30330,21 +30485,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -uuid -10.0.0 -The MIT License (MIT) - -Copyright (c) 2010-2020 Robert Kieffer and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** uuid From 01d276c2175c3f48cbf39cddc69258d60bebfeb7 Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Fri, 6 Dec 2024 14:47:37 +0000 Subject: [PATCH 024/111] fix: cherry-pick: Add origin row to transfer confirmations (#28989) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cherry-picks: https://github.com/MetaMask/metamask-extension/pull/28936 ## **Description** This PR adds an origin row as well as a content divider as per the latest designs (see screenshot below). Additionally, ConfirmInfoSection has been moved to inside the SimulationDetails component, to fix a visual bug that showed additional margin on the UI, even when the SimulationDetails component was not being rendered. Screenshot 2024-12-04 at 17 34 20 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28936?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/metamask-extension/issues/28928 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28989?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../base-transaction-info.tsx | 14 ++-- .../native-transfer.test.tsx.snap | 53 +++++++++++- .../info/native-transfer/native-transfer.tsx | 17 ++-- .../nft-token-transfer.test.tsx.snap | 53 +++++++++++- .../nft-token-transfer/nft-token-transfer.tsx | 17 ++-- .../token-details-section.test.tsx.snap | 51 +++++++++++- .../token-transfer.test.tsx.snap | 53 +++++++++++- .../token-transfer/token-details-section.tsx | 38 +++++---- .../info/token-transfer/token-transfer.tsx | 17 ++-- .../simulation-details/simulation-details.tsx | 80 +++++++++++++------ 10 files changed, 300 insertions(+), 93 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/base-transaction-info/base-transaction-info.tsx b/ui/pages/confirmations/components/confirm/info/base-transaction-info/base-transaction-info.tsx index 23629ee5096c..2b986aa42f3f 100644 --- a/ui/pages/confirmations/components/confirm/info/base-transaction-info/base-transaction-info.tsx +++ b/ui/pages/confirmations/components/confirm/info/base-transaction-info/base-transaction-info.tsx @@ -1,7 +1,5 @@ import { TransactionMeta } from '@metamask/transaction-controller'; import React from 'react'; - -import { ConfirmInfoSection } from '../../../../../../components/app/confirm/info/row/section'; import { useConfirmContext } from '../../../../context/confirm'; import { SimulationDetails } from '../../../simulation-details'; import { AdvancedDetails } from '../shared/advanced-details/advanced-details'; @@ -18,13 +16,11 @@ const BaseTransactionInfo = () => { return ( <> - - - + diff --git a/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap index dcfe4ff35624..d1cf681798e7 100644 --- a/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap @@ -107,7 +107,7 @@ exports[`NativeTransferInfo renders correctly 1`] = `

+
+
+
+
+

+ Request from +

+
+
+ +
+
+
+
+
+

+ metamask.github.io +

+
+
{ <> - { - - - - } + diff --git a/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap index e835130ff73c..bcf20679ccc6 100644 --- a/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap @@ -135,7 +135,7 @@ exports[`NFTTokenTransferInfo renders correctly 1`] = `
+
+
+
+
+

+ Request from +

+
+
+ +
+
+
+
+
+

+ metamask.github.io +

+
+
{ <> - { - - - - } + diff --git a/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-details-section.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-details-section.test.tsx.snap index 6ab7ebb270b7..ef5bff116f7d 100644 --- a/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-details-section.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-details-section.test.tsx.snap @@ -4,7 +4,7 @@ exports[`TokenDetailsSection renders correctly 1`] = `
+
+
+
+
+

+ Request from +

+
+
+ +
+
+
+
+
+

+ metamask.github.io +

+
+
+
+
+
+
+

+ Request from +

+
+
+ +
+
+
+
+
+

+ metamask.github.io +

+
+
{ const t = useI18nContext(); @@ -80,22 +83,29 @@ export const TokenDetailsSection = () => { ); - const tokenRow = transactionMeta.type !== TransactionType.simpleSend && - (showAdvancedDetails || isSimulationEmpty || isSimulationError) && ( - - - - ); + const shouldShowTokenRow = + transactionMeta.type !== TransactionType.simpleSend && + (showAdvancedDetails || isSimulationEmpty || isSimulationError); + + const tokenRow = shouldShowTokenRow && ( + + + + ); + + const shouldShowOriginRow = transactionMeta?.origin !== ORIGIN_METAMASK; return ( - + {networkRow} + {(shouldShowOriginRow || shouldShowTokenRow) && } + {shouldShowOriginRow && } {tokenRow} ); diff --git a/ui/pages/confirmations/components/confirm/info/token-transfer/token-transfer.tsx b/ui/pages/confirmations/components/confirm/info/token-transfer/token-transfer.tsx index dd95e841c2c0..6a51534705e5 100644 --- a/ui/pages/confirmations/components/confirm/info/token-transfer/token-transfer.tsx +++ b/ui/pages/confirmations/components/confirm/info/token-transfer/token-transfer.tsx @@ -1,6 +1,5 @@ import { TransactionMeta } from '@metamask/transaction-controller'; import React from 'react'; -import { ConfirmInfoSection } from '../../../../../../components/app/confirm/info/row/section'; import { useConfirmContext } from '../../../../context/confirm'; import { SimulationDetails } from '../../../simulation-details'; import { AdvancedDetails } from '../shared/advanced-details/advanced-details'; @@ -19,16 +18,12 @@ const TokenTransferInfo = () => { <> - { - - - - } + diff --git a/ui/pages/confirmations/components/simulation-details/simulation-details.tsx b/ui/pages/confirmations/components/simulation-details/simulation-details.tsx index 412467b4ff8a..9fbc8309251b 100644 --- a/ui/pages/confirmations/components/simulation-details/simulation-details.tsx +++ b/ui/pages/confirmations/components/simulation-details/simulation-details.tsx @@ -4,6 +4,9 @@ import { TransactionMeta, } from '@metamask/transaction-controller'; import React from 'react'; +import { ConfirmInfoAlertRow } from '../../../../components/app/confirm/info/row/alert-row/alert-row'; +import { RowAlertKey } from '../../../../components/app/confirm/info/row/constants'; +import { ConfirmInfoSection } from '../../../../components/app/confirm/info/row/section'; import { Box, Icon, @@ -25,8 +28,6 @@ import { TextVariant, } from '../../../../helpers/constants/design-system'; import { useI18nContext } from '../../../../hooks/useI18nContext'; -import { ConfirmInfoAlertRow } from '../../../../components/app/confirm/info/row/alert-row/alert-row'; -import { RowAlertKey } from '../../../../components/app/confirm/info/row/constants'; import { BalanceChangeList } from './balance-change-list'; import { useBalanceChanges } from './useBalanceChanges'; import { useSimulationMetrics } from './useSimulationMetrics'; @@ -189,31 +190,58 @@ const SimulationDetailsLayout: React.FC<{ inHeader?: React.ReactNode; isTransactionsRedesign: boolean; transactionId: string; -}> = ({ inHeader, isTransactionsRedesign, transactionId, children }) => ( - - = ({ inHeader, isTransactionsRedesign, transactionId, children }) => + isTransactionsRedesign ? ( + + + + {inHeader} + + {children} + + + ) : ( + - {inHeader} - - {children} - -); + + {inHeader} + + {children} + + ); /** * Preview of a transaction's effects using simulation data. From baf387b41c422b2c879593cb42dd65f254966931 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Fri, 6 Dec 2024 19:03:46 +0000 Subject: [PATCH 025/111] fix (cherry-pick): hide first time interaction alert if internal account (#28990) (#28998) --- .../useFirstTimeInteractionAlert.test.ts | 84 ++++++++++++------- .../useFirstTimeInteractionAlert.ts | 16 +++- 2 files changed, 68 insertions(+), 32 deletions(-) diff --git a/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.test.ts b/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.test.ts index 964b218e8501..a695abe29d8a 100644 --- a/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.test.ts +++ b/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.test.ts @@ -9,51 +9,52 @@ import { getMockConfirmState } from '../../../../../../test/data/confirmations/h import { renderHookWithConfirmContextProvider } from '../../../../../../test/lib/confirmations/render-helpers'; import { Severity } from '../../../../../helpers/constants/design-system'; import { RowAlertKey } from '../../../../../components/app/confirm/info/row/constants'; -import { genUnapprovedContractInteractionConfirmation } from '../../../../../../test/data/confirmations/contract-interaction'; import { useFirstTimeInteractionAlert } from './useFirstTimeInteractionAlert'; const ACCOUNT_ADDRESS = '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc'; const TRANSACTION_ID_MOCK = '123-456'; -const CONFIRMATION_MOCK = genUnapprovedContractInteractionConfirmation({ - chainId: '0x5', -}) as TransactionMeta; - const TRANSACTION_META_MOCK = { id: TRANSACTION_ID_MOCK, chainId: '0x5', - status: TransactionStatus.submitted, + status: TransactionStatus.unapproved, type: TransactionType.contractInteraction, txParams: { from: ACCOUNT_ADDRESS, }, time: new Date().getTime() - 10000, - firstTimeInteraction: true, } as TransactionMeta; function runHook({ currentConfirmation, - transactions = [], + internalAccountAddresses, }: { currentConfirmation?: TransactionMeta; - transactions?: TransactionMeta[]; + internalAccountAddresses?: string[]; } = {}) { - let pendingApprovals = {}; - if (currentConfirmation) { - pendingApprovals = { - [currentConfirmation.id as string]: { - id: currentConfirmation.id, - type: ApprovalType.Transaction, - }, - }; - transactions.push(currentConfirmation); - } + const pendingApprovals = currentConfirmation + ? { + [currentConfirmation.id as string]: { + id: currentConfirmation.id, + type: ApprovalType.Transaction, + }, + } + : {}; + + const transactions = currentConfirmation ? [currentConfirmation] : []; + + const internalAccounts = { + accounts: internalAccountAddresses?.map((address) => ({ address })) ?? [], + }; + const state = getMockConfirmState({ metamask: { + internalAccounts, pendingApprovals, transactions, }, }); + const response = renderHookWithConfirmContextProvider( useFirstTimeInteractionAlert, state, @@ -71,19 +72,22 @@ describe('useFirstTimeInteractionAlert', () => { expect(runHook()).toEqual([]); }); - it('returns no alerts if no transactions', () => { + it('returns no alerts if firstTimeInteraction is false', () => { + const notFirstTimeConfirmation = { + ...TRANSACTION_META_MOCK, + isFirstTimeInteraction: false, + }; expect( runHook({ - currentConfirmation: CONFIRMATION_MOCK, - transactions: [], + currentConfirmation: notFirstTimeConfirmation, }), ).toEqual([]); }); - it('returns no alerts if firstTimeInteraction is false', () => { + it('returns no alerts if firstTimeInteraction is undefined', () => { const notFirstTimeConfirmation = { ...TRANSACTION_META_MOCK, - firstTimeInteraction: false, + isFirstTimeInteraction: undefined, }; expect( runHook({ @@ -92,21 +96,43 @@ describe('useFirstTimeInteractionAlert', () => { ).toEqual([]); }); - it('returns no alerts if firstTimeInteraction is undefined', () => { - const notFirstTimeConfirmation = { + it('returns no alerts if transaction destination is internal account', () => { + const firstTimeConfirmation = { ...TRANSACTION_META_MOCK, - firstTimeInteraction: undefined, + isFirstTimeInteraction: true, + txParams: { + ...TRANSACTION_META_MOCK.txParams, + to: ACCOUNT_ADDRESS, + }, }; expect( runHook({ - currentConfirmation: notFirstTimeConfirmation, + currentConfirmation: firstTimeConfirmation, + internalAccountAddresses: [ACCOUNT_ADDRESS], + }), + ).toEqual([]); + }); + + it('returns no alerts if transaction destination is internal account with different case', () => { + const firstTimeConfirmation = { + ...TRANSACTION_META_MOCK, + isFirstTimeInteraction: true, + txParams: { + ...TRANSACTION_META_MOCK.txParams, + to: ACCOUNT_ADDRESS.toLowerCase(), + }, + }; + expect( + runHook({ + currentConfirmation: firstTimeConfirmation, + internalAccountAddresses: [ACCOUNT_ADDRESS.toUpperCase()], }), ).toEqual([]); }); it('returns alert if isFirstTimeInteraction is true', () => { const firstTimeConfirmation = { - ...CONFIRMATION_MOCK, + ...TRANSACTION_META_MOCK, isFirstTimeInteraction: true, }; const alerts = runHook({ diff --git a/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.ts b/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.ts index 7e4a86c3802f..c74552575667 100644 --- a/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.ts +++ b/ui/pages/confirmations/hooks/alerts/transactions/useFirstTimeInteractionAlert.ts @@ -1,22 +1,32 @@ import { useMemo } from 'react'; import { TransactionMeta } from '@metamask/transaction-controller'; +import { useSelector } from 'react-redux'; import { Alert } from '../../../../../ducks/confirm-alerts/confirm-alerts'; import { useI18nContext } from '../../../../../hooks/useI18nContext'; import { Severity } from '../../../../../helpers/constants/design-system'; import { RowAlertKey } from '../../../../../components/app/confirm/info/row/constants'; import { useConfirmContext } from '../../../context/confirm'; +import { getInternalAccounts } from '../../../../../selectors'; export function useFirstTimeInteractionAlert(): Alert[] { const t = useI18nContext(); const { currentConfirmation } = useConfirmContext(); + const internalAccounts = useSelector(getInternalAccounts); - const { isFirstTimeInteraction } = currentConfirmation ?? {}; + const { txParams, isFirstTimeInteraction } = currentConfirmation ?? {}; + const { to } = txParams ?? {}; + + const isInternalAccount = internalAccounts.some( + (account) => account.address?.toLowerCase() === to?.toLowerCase(), + ); + + const showAlert = !isInternalAccount && isFirstTimeInteraction; return useMemo(() => { // If isFirstTimeInteraction is undefined that means it's either disabled or error in accounts API // If it's false that means account relationship found - if (!isFirstTimeInteraction) { + if (!showAlert) { return []; } @@ -31,5 +41,5 @@ export function useFirstTimeInteractionAlert(): Alert[] { severity: Severity.Warning, }, ]; - }, [isFirstTimeInteraction, t]); + }, [showAlert, t]); } From e0a0a7a69e75b0998c94f385ebc73ba75dd16338 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Sat, 7 Dec 2024 05:05:24 +0530 Subject: [PATCH 026/111] cherry-pick: Update signature controller (#28992) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Update signature controller to fix signature decoding issues. PR: 1. https://github.com/MetaMask/core/pull/5028 2. https://github.com/MetaMask/core/pull/5033 Original Extension PR: https://github.com/MetaMask/metamask-extension/pull/28988 ## **Related issues** * Related to: https://github.com/MetaMask/MetaMask-planning/issues/3756 * Related to: https://github.com/MetaMask/MetaMask-planning/issues/3757 ## **Manual testing steps** NA ## **Screenshots/Recordings** NA ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- package.json | 2 +- yarn.lock | 32 +++++++++++++++++--------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index c86ea2d35cb4..5d8865c3851d 100644 --- a/package.json +++ b/package.json @@ -339,7 +339,7 @@ "@metamask/safe-event-emitter": "^3.1.1", "@metamask/scure-bip39": "^2.0.3", "@metamask/selected-network-controller": "^18.0.2", - "@metamask/signature-controller": "^23.0.0", + "@metamask/signature-controller": "^23.1.0", "@metamask/smart-transactions-controller": "^15.0.0", "@metamask/snaps-controllers": "^9.14.0", "@metamask/snaps-execution-environments": "^6.10.0", diff --git a/yarn.lock b/yarn.lock index 91cc4445c553..e50d9878e356 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5056,9 +5056,9 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^11.0.0, @metamask/controller-utils@npm:^11.1.0, @metamask/controller-utils@npm:^11.2.0, @metamask/controller-utils@npm:^11.3.0, @metamask/controller-utils@npm:^11.4.0, @metamask/controller-utils@npm:^11.4.1, @metamask/controller-utils@npm:^11.4.2, @metamask/controller-utils@npm:^11.4.3": - version: 11.4.3 - resolution: "@metamask/controller-utils@npm:11.4.3" +"@metamask/controller-utils@npm:^11.0.0, @metamask/controller-utils@npm:^11.1.0, @metamask/controller-utils@npm:^11.2.0, @metamask/controller-utils@npm:^11.3.0, @metamask/controller-utils@npm:^11.4.0, @metamask/controller-utils@npm:^11.4.1, @metamask/controller-utils@npm:^11.4.2, @metamask/controller-utils@npm:^11.4.3, @metamask/controller-utils@npm:^11.4.4": + version: 11.4.4 + resolution: "@metamask/controller-utils@npm:11.4.4" dependencies: "@ethereumjs/util": "npm:^8.1.0" "@metamask/eth-query": "npm:^4.0.0" @@ -5070,7 +5070,9 @@ __metadata: bn.js: "npm:^5.2.1" eth-ens-namehash: "npm:^2.0.8" fast-deep-equal: "npm:^3.1.3" - checksum: 10/5703b0721daf679cf44affc690f2b313e40893b64b0aafaf203e69ee51438197cc3634ef7094145f580a8a8aaadcb79026b2fbd4065c1bb4a8c26627a2c4c69a + peerDependencies: + "@babel/runtime": ^7.0.0 + checksum: 10/0833800d4733f52fbf232efedc97ce66603430fd20ec10e71e6dc4c23295b3b59cc3c8109b86b8039b9ae0c0d2428815428924c367b88f9ea6013152a86d862b languageName: node linkType: hard @@ -6191,15 +6193,15 @@ __metadata: languageName: node linkType: hard -"@metamask/signature-controller@npm:^23.0.0": - version: 23.0.0 - resolution: "@metamask/signature-controller@npm:23.0.0" +"@metamask/signature-controller@npm:^23.1.0": + version: 23.1.0 + resolution: "@metamask/signature-controller@npm:23.1.0" dependencies: "@metamask/base-controller": "npm:^7.0.2" - "@metamask/controller-utils": "npm:^11.4.3" + "@metamask/controller-utils": "npm:^11.4.4" "@metamask/eth-sig-util": "npm:^8.0.0" "@metamask/utils": "npm:^10.0.0" - jsonschema: "npm:^1.2.4" + jsonschema: "npm:^1.4.1" lodash: "npm:^4.17.21" uuid: "npm:^8.3.2" peerDependencies: @@ -6207,7 +6209,7 @@ __metadata: "@metamask/keyring-controller": ^19.0.0 "@metamask/logging-controller": ^6.0.0 "@metamask/network-controller": ^22.0.0 - checksum: 10/5e2fda2d89dd3433f00028da0fa7743a6934b72f33fc0e4803dafa98702b9bdd9d093a326060d5480e6eb065c6b4cc1dc3e39382c00702f28b5a6061e8f105bf + checksum: 10/2f97e6412bc3a3a13aa2106dfd679500680881918a6e3e2621d4e225e6380df7a01218f7ce26747575b09c85d8ac8be2f5029240339b28fc6d849fad480c5b72 languageName: node linkType: hard @@ -24742,10 +24744,10 @@ __metadata: languageName: node linkType: hard -"jsonschema@npm:^1.2.4": - version: 1.2.4 - resolution: "jsonschema@npm:1.2.4" - checksum: 10/7b959737416a5716f2df3142e30c8685bc5449974d56d1cd5acbbd61c0f71041af38fa315327c8577fcdbe30907fd9b633c4d3484baf2cc8563609afac5b4e14 +"jsonschema@npm:^1.2.4, jsonschema@npm:^1.4.1": + version: 1.4.1 + resolution: "jsonschema@npm:1.4.1" + checksum: 10/d7a188da7a3100a2caa362b80e98666d46607b7a7153aac405b8e758132961911c6df02d444d4700691330874e21a62639f550e856b21ddd28423690751ca9c6 languageName: node linkType: hard @@ -26556,7 +26558,7 @@ __metadata: "@metamask/safe-event-emitter": "npm:^3.1.1" "@metamask/scure-bip39": "npm:^2.0.3" "@metamask/selected-network-controller": "npm:^18.0.2" - "@metamask/signature-controller": "npm:^23.0.0" + "@metamask/signature-controller": "npm:^23.1.0" "@metamask/smart-transactions-controller": "npm:^15.0.0" "@metamask/snaps-controllers": "npm:^9.14.0" "@metamask/snaps-execution-environments": "npm:^6.10.0" From b36fb52350e3ee5957553159561027eae1db6b45 Mon Sep 17 00:00:00 2001 From: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Date: Mon, 9 Dec 2024 20:40:22 +0000 Subject: [PATCH 027/111] fix (cherry-pick): only display Signing in with for SIWE #28984 (#29025) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Cherry-pick of #28984 for release `12.9.0`. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29025?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/_locales/en/messages.json | 3 + .../info/row/alert-row/alert-row.test.tsx | 18 + .../confirm/info/row/alert-row/alert-row.tsx | 7 + .../info/__snapshots__/info.test.tsx.snap | 375 --------------- .../__snapshots__/approve.test.tsx.snap | 75 --- .../base-transaction-info.test.tsx.snap | 75 --- .../__snapshots__/personal-sign.test.tsx.snap | 150 ------ .../set-approval-for-all-info.test.tsx.snap | 75 --- .../sign-in-with-row.test.tsx | 23 +- .../sign-in-with-row/sign-in-with-row.tsx | 5 +- .../transaction-details.test.tsx.snap | 75 --- .../__snapshots__/typed-sign-v1.test.tsx.snap | 75 --- .../__snapshots__/typed-sign.test.tsx.snap | 375 --------------- .../__snapshots__/confirm.test.tsx.snap | 450 ------------------ 14 files changed, 54 insertions(+), 1727 deletions(-) diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 3b8b2bfa9682..f160fd22782b 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -5054,6 +5054,9 @@ "signingInWith": { "message": "Signing in with" }, + "signingWith": { + "message": "Signing with" + }, "simulationApproveHeading": { "message": "Withdraw" }, diff --git a/ui/components/app/confirm/info/row/alert-row/alert-row.test.tsx b/ui/components/app/confirm/info/row/alert-row/alert-row.test.tsx index df7f8827b67f..070bd97d0a6b 100644 --- a/ui/components/app/confirm/info/row/alert-row/alert-row.test.tsx +++ b/ui/components/app/confirm/info/row/alert-row/alert-row.test.tsx @@ -91,6 +91,24 @@ describe('AlertRow', () => { expect(queryByTestId('inline-alert')).toBeNull(); }); + describe('display row only when there is an alert', () => { + it('does not render when isShownWithAlertsOnly is true and there is no alert', () => { + const { queryByTestId } = renderAlertRow({ + isShownWithAlertsOnly: true, + }); + expect(queryByTestId('inline-alert')).toBeNull(); + }); + + it('renders when isShownWithAlertsOnly is false and there is an alert', () => { + const { getByTestId } = renderAlertRow({ + alertKey: KEY_ALERT_KEY_MOCK, + ownerId: OWNER_ID_MOCK, + isShownWithAlertsOnly: false, + }); + expect(getByTestId('inline-alert')).toBeDefined(); + }); + }); + describe('Modal visibility', () => { it('show when clicked in the inline alert', () => { const { getByTestId } = renderAlertRow({ diff --git a/ui/components/app/confirm/info/row/alert-row/alert-row.tsx b/ui/components/app/confirm/info/row/alert-row/alert-row.tsx index 3956cc3095eb..094a5b72acc7 100644 --- a/ui/components/app/confirm/info/row/alert-row/alert-row.tsx +++ b/ui/components/app/confirm/info/row/alert-row/alert-row.tsx @@ -17,6 +17,8 @@ import { useAlertMetrics } from '../../../../alert-system/contexts/alertMetricsC export type ConfirmInfoAlertRowProps = ConfirmInfoRowProps & { alertKey: string; ownerId: string; + /** Determines whether to display the row only when an alert is present. */ + isShownWithAlertsOnly?: boolean; }; function getAlertTextColors( @@ -41,6 +43,7 @@ export const ConfirmInfoAlertRow = ({ alertKey, ownerId, variant, + isShownWithAlertsOnly = false, ...rowProperties }: ConfirmInfoAlertRowProps) => { const { trackInlineAlertClicked } = useAlertMetrics(); @@ -68,6 +71,10 @@ export const ConfirmInfoAlertRow = ({ variant, }; + if (isShownWithAlertsOnly && !hasFieldAlert) { + return null; + } + const inlineAlert = hasFieldAlert ? (
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x2e0D7...5d09B -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x2e0D7...5d09B -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x2e0D7...5d09B -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
renders component for approve request 1`] = `

-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x2e0D7...5d09B -

-
-
-
renders component for contract interaction requ
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x2e0D7...5d09B -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
renders component for approve request 1`] = `

-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x2e0D7...5d09B -

-
-
-
{ + const originalUtils = jest.requireActual('../../../../../utils'); + return { + ...originalUtils, + isSIWESignatureRequest: jest.fn().mockReturnValue(false), + }; +}); + describe('', () => { const middleware = [thunk]; - it('renders component for transaction details', () => { + it('does not display the row for non SIWE requests', () => { + const state = getMockContractInteractionConfirmState(); + const mockStore = configureMockStore(middleware)(state); + const { container } = renderWithConfirmContextProvider( + , + mockStore, + ); + expect(container).toBeEmptyDOMElement(); + }); + + it('renders component for SIWE transaction details', () => { + (utils.isSIWESignatureRequest as jest.Mock).mockReturnValue(true); + const state = getMockContractInteractionConfirmState(); const mockStore = configureMockStore(middleware)(state); const { getByText } = renderWithConfirmContextProvider( diff --git a/ui/pages/confirmations/components/confirm/info/shared/sign-in-with-row/sign-in-with-row.tsx b/ui/pages/confirmations/components/confirm/info/shared/sign-in-with-row/sign-in-with-row.tsx index 7b20cbc08062..5ef84e0bb9a1 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/sign-in-with-row/sign-in-with-row.tsx +++ b/ui/pages/confirmations/components/confirm/info/shared/sign-in-with-row/sign-in-with-row.tsx @@ -7,11 +7,13 @@ import { RowAlertKey } from '../../../../../../../components/app/confirm/info/ro import { useI18nContext } from '../../../../../../../hooks/useI18nContext'; import { useConfirmContext } from '../../../../../context/confirm'; import { SignatureRequestType } from '../../../../../types/confirm'; +import { isSIWESignatureRequest } from '../../../../../utils'; export const SigningInWithRow = () => { const t = useI18nContext(); const { currentConfirmation } = useConfirmContext(); + const isSIWE = isSIWESignatureRequest(currentConfirmation); const chainId = currentConfirmation?.chainId as string; const from = @@ -25,8 +27,9 @@ export const SigningInWithRow = () => { return ( diff --git a/ui/pages/confirmations/components/confirm/info/shared/transaction-details/__snapshots__/transaction-details.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/shared/transaction-details/__snapshots__/transaction-details.test.tsx.snap index 9e9b9b23eca5..f5183e21206c 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/transaction-details/__snapshots__/transaction-details.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/shared/transaction-details/__snapshots__/transaction-details.test.tsx.snap @@ -151,81 +151,6 @@ exports[` renders component for transaction details 1`] =
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x2e0D7...5d09B -

-
-
-
`; diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign-v1/__snapshots__/typed-sign-v1.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/typed-sign-v1/__snapshots__/typed-sign-v1.test.tsx.snap index f00b51538750..441b05c888f0 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign-v1/__snapshots__/typed-sign-v1.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/typed-sign-v1/__snapshots__/typed-sign-v1.test.tsx.snap @@ -47,81 +47,6 @@ exports[`TypedSignInfo correctly renders typed sign data request 1`] = `

-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- Test Account -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
-
-
-
-

- Signing in with -

-
-
-
-
- -

- 0x935E7...05477 -

-
-
-
Date: Mon, 9 Dec 2024 23:17:37 +0200 Subject: [PATCH 028/111] chore: V12.9.0 changelog (#28987) ## **Description** RC 12.9.0 Changelog [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28987?quickstart=1) --- CHANGELOG.md | 284 +++++++++------------------------------------------ 1 file changed, 47 insertions(+), 237 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2c8ccd2bbbe..3d4b24b8a1d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,243 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [12.9.0] -### Fixed -- fix: SIWE e2e test timing out and breaking ci ([#28801](https://github.com/MetaMask/metamask-extension/pull/28801)) -- fix: has_marketing_consent flag on metametrics ([#28795](https://github.com/MetaMask/metamask-extension/pull/28795)) -- chore: Bump `@metamask/eth-token-tracker` from v8 to v9 ([#28754](https://github.com/MetaMask/metamask-extension/pull/28754)) -- test: Fix `getEventPayloads` e2e test helper ([#28796](https://github.com/MetaMask/metamask-extension/pull/28796)) -- chore: bump `@metamask/preferences-controller` to `^14.0.0` ([#28778](https://github.com/MetaMask/metamask-extension/pull/28778)) -- chore: Master sync after 12.7.2 ([#28794](https://github.com/MetaMask/metamask-extension/pull/28794)) -- Merge branch 'master-sync' of https://github.com/MetaMask/metamask-extension into master-sync -- Merge origin/develop into master-sync -- feat: adding e2e for signature decoding api and enable it in extension ([#28423](https://github.com/MetaMask/metamask-extension/pull/28423)) -- feat: Support returning a txHash asap for smart transactions ([#28770](https://github.com/MetaMask/metamask-extension/pull/28770)) -- feat: multichain send action adds solana ([#28738](https://github.com/MetaMask/metamask-extension/pull/28738)) -- chore: Cleanup PortfolioView ([#28785](https://github.com/MetaMask/metamask-extension/pull/28785)) -- test: migrate signature redesign tests to page object model ([#28538](https://github.com/MetaMask/metamask-extension/pull/28538)) -- chore: Bump `@metamask/message-manager` to v11 ([#28758](https://github.com/MetaMask/metamask-extension/pull/28758)) -- feat: migrate `AppMedataController` to inherit from BaseController V2 ([#28783](https://github.com/MetaMask/metamask-extension/pull/28783)) -- chore: Add error handling for `setCorrectChain` ([#28740](https://github.com/MetaMask/metamask-extension/pull/28740)) -- fix: Add optional chaining to currencyRates check for stability ([#28753](https://github.com/MetaMask/metamask-extension/pull/28753)) -- chore: Bump `@metamask/providers` to v18 ([#28757](https://github.com/MetaMask/metamask-extension/pull/28757)) -- chore: Bump `@metamask/eth-json-rpc-middleware` to v15.0.0 ([#28756](https://github.com/MetaMask/metamask-extension/pull/28756)) -- fix: Phishing page metrics ([#28364](https://github.com/MetaMask/metamask-extension/pull/28364)) -- feat: Turn on `PortfolioView` ([#28661](https://github.com/MetaMask/metamask-extension/pull/28661)) -- fix: remove network modal ([#28765](https://github.com/MetaMask/metamask-extension/pull/28765)) -- chore: Update `@metamask/polling-controller` to v11 ([#28759](https://github.com/MetaMask/metamask-extension/pull/28759)) -- perf: Prevent Sentry from auto-generating spans for requests to Sentry ([#28613](https://github.com/MetaMask/metamask-extension/pull/28613)) -- feat: Integrate Snap notification services ([#27975](https://github.com/MetaMask/metamask-extension/pull/27975)) -- feat: PortfolioView: Add feature flag check for polling intervals ([#28501](https://github.com/MetaMask/metamask-extension/pull/28501)) -- fix: add dispatch detect Nfts on network switch ([#28769](https://github.com/MetaMask/metamask-extension/pull/28769)) -- feat: on UI side filtering put typed sign V4 requests for which decoding data is displayed ([#28762](https://github.com/MetaMask/metamask-extension/pull/28762)) -- chore: Bump `@metamask/eth-json-rpc-middleware` to v14.0.2 ([#28755](https://github.com/MetaMask/metamask-extension/pull/28755)) -- fix(wallet-overview): prevent send button clicked event to be sent twice ([#28772](https://github.com/MetaMask/metamask-extension/pull/28772)) -- refactor: move `getCurrentChainId` from `selectors/selectors.js` to `shared/modules/selectors/networks.ts` ([#27647](https://github.com/MetaMask/metamask-extension/pull/27647)) -- feat: adding metrics for signature decoding ([#28719](https://github.com/MetaMask/metamask-extension/pull/28719)) -- fix: fix transaction list message on token detail page ([#28764](https://github.com/MetaMask/metamask-extension/pull/28764)) -- chore: Bump `@metamask/permission-log-controller` to v3.0.1 ([#28747](https://github.com/MetaMask/metamask-extension/pull/28747)) -- chore: Bump `@metamask/ens-controller` from v13 to v14 ([#28746](https://github.com/MetaMask/metamask-extension/pull/28746)) -- test: add e2e for transaction decoding ([#28204](https://github.com/MetaMask/metamask-extension/pull/28204)) -- test: add integration tests for different types of Permit ([#27446](https://github.com/MetaMask/metamask-extension/pull/27446)) -- test: [POM] Migrate add token e2e tests to TS and Page Object Model ([#28658](https://github.com/MetaMask/metamask-extension/pull/28658)) -- chore: node.js 20.18 ([#28058](https://github.com/MetaMask/metamask-extension/pull/28058)) -- chore: Update `@metamask/gas-fee-controller` and peer deps ([#28745](https://github.com/MetaMask/metamask-extension/pull/28745)) -- fix: content dialog styling is being applied to all dialogs ([#28739](https://github.com/MetaMask/metamask-extension/pull/28739)) -- feat: Bump `@metamask/permission-controller` to `^11.0.0` ([#28743](https://github.com/MetaMask/metamask-extension/pull/28743)) -- feat: add e2e tests for multichain ([#28708](https://github.com/MetaMask/metamask-extension/pull/28708)) -- fix: Add metric trait for token network filter preference ([#28336](https://github.com/MetaMask/metamask-extension/pull/28336)) -- fix: Provide selector that enables cross-chain polling, regardless of network filter state ([#28662](https://github.com/MetaMask/metamask-extension/pull/28662)) -- chore: Remove unnecessary event prop ([#28546](https://github.com/MetaMask/metamask-extension/pull/28546)) -- fix: Revert "feat: Changing title for permit requests (#28537)" ([#28537](https://github.com/MetaMask/metamask-extension/pull/28537)) -- fix: Fix avatar size for current network ([#28731](https://github.com/MetaMask/metamask-extension/pull/28731)) -- fix:updated account name and length for dapp connections ([#28725](https://github.com/MetaMask/metamask-extension/pull/28725)) -- fix: Pass along decimal balance from asset-page to swaps UI ([#28707](https://github.com/MetaMask/metamask-extension/pull/28707)) -- chore: adds Solana support for the account overview ([#28411](https://github.com/MetaMask/metamask-extension/pull/28411)) -- feat: Enable redesigned transaction confirmations for all users ([#28321](https://github.com/MetaMask/metamask-extension/pull/28321)) -- feat: cross chain swaps - tx status - BridgeStatusController ([#28636](https://github.com/MetaMask/metamask-extension/pull/28636)) -- fix: use BN from bn.js instead of ethereumjs-util ([#28146](https://github.com/MetaMask/metamask-extension/pull/28146)) -- feat: Add first time interaction warning ([#28435](https://github.com/MetaMask/metamask-extension/pull/28435)) -- feat: enable account syncing in production ([#28596](https://github.com/MetaMask/metamask-extension/pull/28596)) -- test: add accounts sync test with balance detection ([#28715](https://github.com/MetaMask/metamask-extension/pull/28715)) -- chore: Bump Snaps packages ([#28678](https://github.com/MetaMask/metamask-extension/pull/28678)) -- fix: transaction flow section layout on re-designed confirmation pages ([#28720](https://github.com/MetaMask/metamask-extension/pull/28720)) -- feat: Changing title for permit requests ([#28537](https://github.com/MetaMask/metamask-extension/pull/28537)) -- fix: add e2e for portfolio view polling ([#28682](https://github.com/MetaMask/metamask-extension/pull/28682)) -- fix: PortfolioView swap native token bug ([#28639](https://github.com/MetaMask/metamask-extension/pull/28639)) -- fix: prevent non-current network tokens from being hidden incorrectly ([#28674](https://github.com/MetaMask/metamask-extension/pull/28674)) -- fix: fix `ConnectPage` when a non-EVM account is selected ([#28436](https://github.com/MetaMask/metamask-extension/pull/28436)) -- test: [POM] Migrate create btc account e2e tests to TS and Page Object Model ([#28437](https://github.com/MetaMask/metamask-extension/pull/28437)) -- fix: SonarCloud workflow_run ([#28693](https://github.com/MetaMask/metamask-extension/pull/28693)) -- fix: swaps approval checking for approvals between 0 and unlimited ([#28680](https://github.com/MetaMask/metamask-extension/pull/28680)) -- chore: Restrict MMI test runs ([#28655](https://github.com/MetaMask/metamask-extension/pull/28655)) -- feat: change description of enabling simulation message in settings ([#28536](https://github.com/MetaMask/metamask-extension/pull/28536)) -- test: blockaid e2e test for contract interaction ([#28156](https://github.com/MetaMask/metamask-extension/pull/28156)) -- perf: add React.lazy to the Routes ([#28172](https://github.com/MetaMask/metamask-extension/pull/28172)) -- fix: add missing filter for scheduled job rerun-from-failed ([#28644](https://github.com/MetaMask/metamask-extension/pull/28644)) -- fix: Add default value to custom nonce modal ([#28659](https://github.com/MetaMask/metamask-extension/pull/28659)) -- fix: Reduce max pet name length ([#28660](https://github.com/MetaMask/metamask-extension/pull/28660)) -- test: rename balance functions to cover both Ganache and Anvil in preparation for ganache migration ([#28676](https://github.com/MetaMask/metamask-extension/pull/28676)) -- fix: display new network popup only for accounts that are compatible. ([#28535](https://github.com/MetaMask/metamask-extension/pull/28535)) -- feat: adding tooltip to signature decoding state changes ([#28430](https://github.com/MetaMask/metamask-extension/pull/28430)) -- fix: add alert when selected account is different from signing account in confirmation ([#28562](https://github.com/MetaMask/metamask-extension/pull/28562)) -- test: Adding unit test for setupPhishingCommunication and setUpCookieHandlerCommunication ([#27736](https://github.com/MetaMask/metamask-extension/pull/27736)) -- chore: PortfolioView™: Design Review Cleanup: Networks, sort, & Menu ([#28663](https://github.com/MetaMask/metamask-extension/pull/28663)) -- chore: sort and display all bridge quotes ([#27731](https://github.com/MetaMask/metamask-extension/pull/27731)) -- fix: market data for native tokens with non zero addresses ([#28584](https://github.com/MetaMask/metamask-extension/pull/28584)) -- fix: Reset streams on BFCache events ([#24950](https://github.com/MetaMask/metamask-extension/pull/24950)) -- fix: add unit test for assets polling loops ([#28646](https://github.com/MetaMask/metamask-extension/pull/28646)) -- chore: Run MMI tests on long-running branches ([#28651](https://github.com/MetaMask/metamask-extension/pull/28651)) -- fix: Provide maximal asset list filter space ([#28590](https://github.com/MetaMask/metamask-extension/pull/28590)) -- chore: bump `keyring-api` to `^10.1.0` + `eth-snap-keyring` to `^5.0.1` ([#28545](https://github.com/MetaMask/metamask-extension/pull/28545)) -- chore: updating filter icon to align with figma ([#28547](https://github.com/MetaMask/metamask-extension/pull/28547)) -- test: rename the `GanacheContractAddressRegistry` class in preparation for ganache migration ([#28595](https://github.com/MetaMask/metamask-extension/pull/28595)) -- chore: Update and use selectors for which chains to poll ([#28586](https://github.com/MetaMask/metamask-extension/pull/28586)) -- feat: Display '< 0.01' instead of '0.00' for the fiat value of networ… ([#28543](https://github.com/MetaMask/metamask-extension/pull/28543)) -- Merge origin/develop into master-sync -- chore: rerun workflow from failed ([#28143](https://github.com/MetaMask/metamask-extension/pull/28143)) -- chore: change e2e quality gate reruns for new/changed tests from 5 to 4 ([#28611](https://github.com/MetaMask/metamask-extension/pull/28611)) -- feat: display native values returned from decoding api ([#28374](https://github.com/MetaMask/metamask-extension/pull/28374)) -- chore: Branch off of "New Crowdin translations by Github Action" ([#28390](https://github.com/MetaMask/metamask-extension/pull/28390)) -- refactor: move `getProviderConfig` out of `ducks/metamask.js` to `shared/selectors/networks.ts` ([#27646](https://github.com/MetaMask/metamask-extension/pull/27646)) -- test: Fixed artifacts issue due to switching window title ([#28469](https://github.com/MetaMask/metamask-extension/pull/28469)) -- fix: Network filter must respect `PORTFOLIO_VIEW` feature flag ([#28626](https://github.com/MetaMask/metamask-extension/pull/28626)) -- test: Fix flakiness caused by display of newly switched to network modal ([#28625](https://github.com/MetaMask/metamask-extension/pull/28625)) -- feat: multichain token detection ([#28380](https://github.com/MetaMask/metamask-extension/pull/28380)) -- fix: fix test networks display for portfolio view ([#28601](https://github.com/MetaMask/metamask-extension/pull/28601)) -- feat(SwapsController): Remove reliance on global network ([#28275](https://github.com/MetaMask/metamask-extension/pull/28275)) -- feat: `PortfolioView` ([#28593](https://github.com/MetaMask/metamask-extension/pull/28593)) -- fix: replace unreliable setTimeout usage with waitFor ([#28620](https://github.com/MetaMask/metamask-extension/pull/28620)) -- feat: Hook in Portfolio Entry Points ([#27607](https://github.com/MetaMask/metamask-extension/pull/27607)) -- feat: cross chain swaps - tx submit ([#27262](https://github.com/MetaMask/metamask-extension/pull/27262)) -- chore: centralize redesigned confirmation decision logic ([#28445](https://github.com/MetaMask/metamask-extension/pull/28445)) -- chore: upgrade transaction controller to increase polling rate ([#28452](https://github.com/MetaMask/metamask-extension/pull/28452)) -- fix: fix account list item for portfolio view ([#28598](https://github.com/MetaMask/metamask-extension/pull/28598)) -- feat: Better handle very long names in the name component ([#28560](https://github.com/MetaMask/metamask-extension/pull/28560)) -- fix: PortfolioView: Remove pausedChainIds from selector ([#28552](https://github.com/MetaMask/metamask-extension/pull/28552)) -- refactor: Cherry pick asset-list-control-bar updates ([#28575](https://github.com/MetaMask/metamask-extension/pull/28575)) -- fix: Gracefully handle bad responses from `net_version` calls to RPC endpoint when getting Provider Network State ([#27509](https://github.com/MetaMask/metamask-extension/pull/27509)) -- fix: use PORTFOLIO_VIEW flag to determine token list polling ([#28579](https://github.com/MetaMask/metamask-extension/pull/28579)) -- ci: limit playwright install to chromium browser only ([#28580](https://github.com/MetaMask/metamask-extension/pull/28580)) -- fix: use PORTFOLIO_VIEW flag to determine chain polling ([#28504](https://github.com/MetaMask/metamask-extension/pull/28504)) -- fix(sentry sampling): divide by 2 our sentry trace sample rate to avoid exceeding our quota ([#28573](https://github.com/MetaMask/metamask-extension/pull/28573)) -- fix: contact names should not allow duplication ([#28249](https://github.com/MetaMask/metamask-extension/pull/28249)) -- feat: account syncing various updates ([#28541](https://github.com/MetaMask/metamask-extension/pull/28541)) -- chore: Bump Snaps packages ([#28557](https://github.com/MetaMask/metamask-extension/pull/28557)) -- feat: cross chain aggregated balance ([#28456](https://github.com/MetaMask/metamask-extension/pull/28456)) -- fix: Address design review for NFT token send ([#28433](https://github.com/MetaMask/metamask-extension/pull/28433)) -- test: add token price privacy spec ([#28556](https://github.com/MetaMask/metamask-extension/pull/28556)) -- feat: display ERC20 and ERC721 token details returns by decoding api ([#28366](https://github.com/MetaMask/metamask-extension/pull/28366)) -- chore: Reduce E2E test jobs run on PRs ([#28525](https://github.com/MetaMask/metamask-extension/pull/28525)) -- fix: account tracker controller with useMultiPolling ([#28277](https://github.com/MetaMask/metamask-extension/pull/28277)) -- perf: optimize fonts by using woff2 instead of ttf ([#26554](https://github.com/MetaMask/metamask-extension/pull/26554)) -- test: [POM] Migrate onboarding metrics e2e tests to TS and Page Object Model to reduce flakiness ([#28424](https://github.com/MetaMask/metamask-extension/pull/28424)) -- test: improve logs for e2e errors ([#28479](https://github.com/MetaMask/metamask-extension/pull/28479)) -- fix: PortfolioView: Selector to determine networks to poll ([#28502](https://github.com/MetaMask/metamask-extension/pull/28502)) -- chore: Update `cross-spawn` ([#28522](https://github.com/MetaMask/metamask-extension/pull/28522)) -- feat: upgrade assets controllers to version 44 ([#28472](https://github.com/MetaMask/metamask-extension/pull/28472)) -- chore: Master sync ([#28459](https://github.com/MetaMask/metamask-extension/pull/28459)) -- Merge origin/develop into master-sync -- feat: Upgrade assets controllers to 43 with multichain polling for token lists + detection ([#28447](https://github.com/MetaMask/metamask-extension/pull/28447)) -- fix: display btc account creation while in settings ([#28379](https://github.com/MetaMask/metamask-extension/pull/28379)) -- chore: fix test path on CI ([#28482](https://github.com/MetaMask/metamask-extension/pull/28482)) -- chore: Fix flaky ERC20 transfer blockaid e2e ([#28453](https://github.com/MetaMask/metamask-extension/pull/28453)) -- test: [POM] Migrate vault decryption e2e tests to TS and Page Object Model ([#28419](https://github.com/MetaMask/metamask-extension/pull/28419)) -- feat: UI changes to show decoding data for permits ([#28342](https://github.com/MetaMask/metamask-extension/pull/28342)) -- fix: dont poll token prices during onboarding or when locked ([#28465](https://github.com/MetaMask/metamask-extension/pull/28465)) -- fix: Allow outerclick to close import modal ([#28448](https://github.com/MetaMask/metamask-extension/pull/28448)) -- feat: add simulation metrics when simulation UI is not visible ([#28427](https://github.com/MetaMask/metamask-extension/pull/28427)) -- fix: Fix attribution generation ([#28415](https://github.com/MetaMask/metamask-extension/pull/28415)) -- test: Improve test for signatures ([#27532](https://github.com/MetaMask/metamask-extension/pull/27532)) -- fix: ui customizations for redesigned transactions ([#28443](https://github.com/MetaMask/metamask-extension/pull/28443)) -- fix: Remove multiple overlapping spinners ([#28301](https://github.com/MetaMask/metamask-extension/pull/28301)) -- fix: Hide "interacting with" when simulated balance changes are shown ([#28409](https://github.com/MetaMask/metamask-extension/pull/28409)) -- chore: Begin introducing patterns for Multichain AssetList ([#28429](https://github.com/MetaMask/metamask-extension/pull/28429)) -- feat: update signature controller and integrate decoding api ([#28397](https://github.com/MetaMask/metamask-extension/pull/28397)) -- fix: Update PortfolioView flag ([#28446](https://github.com/MetaMask/metamask-extension/pull/28446)) -- perf: Create custom spans for account overview tabs ([#28086](https://github.com/MetaMask/metamask-extension/pull/28086)) -- fix: Default to dApp suggested fees only when user selects the option ([#28403](https://github.com/MetaMask/metamask-extension/pull/28403)) -- feat: btc send flow e2e ([#28340](https://github.com/MetaMask/metamask-extension/pull/28340)) -- test: fix state fixtures race condition ([#28421](https://github.com/MetaMask/metamask-extension/pull/28421)) -- test: [POM] Migrate autodetect and import nft e2e tests to use Page Object Model ([#28383](https://github.com/MetaMask/metamask-extension/pull/28383)) -- chore(deps): bump `@metamask/eth-ledger-bridge-keyring` to `^5.0.1` ([#27688](https://github.com/MetaMask/metamask-extension/pull/27688)) -- chore: limit bridge quote request frequency and cancel requests ([#27237](https://github.com/MetaMask/metamask-extension/pull/27237)) -- test: Reintegrate refactored Swap e2e tests to the pipeline ([#26493](https://github.com/MetaMask/metamask-extension/pull/26493)) -- fix: fix network client ID used on the useGasFeeInputs hook ([#28391](https://github.com/MetaMask/metamask-extension/pull/28391)) -- ci: Fix `attributions:check` silent failure ([#28413](https://github.com/MetaMask/metamask-extension/pull/28413)) -- fix: `Test Snap Cronjob can trigger a cronjob to open a di...` flaky tests ([#28363](https://github.com/MetaMask/metamask-extension/pull/28363)) -- feat: add `account_type`/`snap_id` for buy/send metrics ([#28011](https://github.com/MetaMask/metamask-extension/pull/28011)) -- fix: get `supportedChains` to avoid blocking the confirmation process ([#28313](https://github.com/MetaMask/metamask-extension/pull/28313)) -- test: [POM] Migrate reveal account srp e2e tests to use Page Object Model ([#28354](https://github.com/MetaMask/metamask-extension/pull/28354)) -- fix: Add metric trait for privacy mode ([#28335](https://github.com/MetaMask/metamask-extension/pull/28335)) -- fix: Properly ellipsize long token names ([#28392](https://github.com/MetaMask/metamask-extension/pull/28392)) -- chore: Bump snaps-utils ([#28399](https://github.com/MetaMask/metamask-extension/pull/28399)) -- feat: migrate MetaMetricsController to BaseControllerV2 ([#28113](https://github.com/MetaMask/metamask-extension/pull/28113)) -- feat: change expand icon per new design ([#28267](https://github.com/MetaMask/metamask-extension/pull/28267)) -- chore: add unit test for `useMultiPolling` ([#28387](https://github.com/MetaMask/metamask-extension/pull/28387)) -- feat(Solana): add "Add a new Solana account" link to the account creation dialog ([#28270](https://github.com/MetaMask/metamask-extension/pull/28270)) -- fix: Return to send page with different asset types ([#28382](https://github.com/MetaMask/metamask-extension/pull/28382)) -- test: [POM] Refactor import account e2e tests to use Page Object Model ([#28325](https://github.com/MetaMask/metamask-extension/pull/28325)) -- feat(1852): Implement sentry user report on error screen ([#27857](https://github.com/MetaMask/metamask-extension/pull/27857)) -- fix: disable buy for btc testnet accounts ([#28341](https://github.com/MetaMask/metamask-extension/pull/28341)) -- fix: Address design review for ERC20 token send ([#28212](https://github.com/MetaMask/metamask-extension/pull/28212)) -- refactor: remove global network usage from transaction confirmations ([#28236](https://github.com/MetaMask/metamask-extension/pull/28236)) -- build: update yarn to v4.5.1 ([#28365](https://github.com/MetaMask/metamask-extension/pull/28365)) -- fix: Bug 28347 - Privacy mode tweaks ([#28367](https://github.com/MetaMask/metamask-extension/pull/28367)) -- fix: mv2 firefox csp header ([#27770](https://github.com/MetaMask/metamask-extension/pull/27770)) -- perf: ensure `setupLocale` doesn't fetch `_locales/en/messages.json` twice ([#26553](https://github.com/MetaMask/metamask-extension/pull/26553)) -- fix: bump `@metamask/queued-request-controller` with patch fix ([#28355](https://github.com/MetaMask/metamask-extension/pull/28355)) -- fix: Revert "fix: Negate privacy mode in Send screen" ([#28360](https://github.com/MetaMask/metamask-extension/pull/28360)) -- fix: disable account syncing ([#28359](https://github.com/MetaMask/metamask-extension/pull/28359)) -- feat: Convert mmi controller to a non-controller ([#27983](https://github.com/MetaMask/metamask-extension/pull/27983)) -- fix: Updates to the simulations component ([#28107](https://github.com/MetaMask/metamask-extension/pull/28107)) -- refactor: rename SECURITY_PROVIDER_SUPPORTED_CHAIN_IDS_FALLBACK_LIST ([#28337](https://github.com/MetaMask/metamask-extension/pull/28337)) -- chore: adds Solana snap to preinstall list ([#28141](https://github.com/MetaMask/metamask-extension/pull/28141)) -- feat: Show network badge in detected tokens modal ([#28231](https://github.com/MetaMask/metamask-extension/pull/28231)) -- fix: Negate privacy mode in Send screen ([#28248](https://github.com/MetaMask/metamask-extension/pull/28248)) -- feat: adds solana feature, code fence ([#28320](https://github.com/MetaMask/metamask-extension/pull/28320)) -- build(webpack): fix cache issues in webpack build by updating `html-bundler-webpack-plugin` to v4.4.1 ([#28225](https://github.com/MetaMask/metamask-extension/pull/28225)) -- feat: team-label-token ([#28134](https://github.com/MetaMask/metamask-extension/pull/28134)) -- chore: add Solana shared utilities and constants ([#28269](https://github.com/MetaMask/metamask-extension/pull/28269)) -- chore: Remove STX opt in modal ([#28291](https://github.com/MetaMask/metamask-extension/pull/28291)) -- chore: revert commit `3da34f4` (feat: btc e2e tests (#27986)) ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) -- chore: e2e quality gate enhancement ([#28206](https://github.com/MetaMask/metamask-extension/pull/28206)) -- chore: adding e2e tests for NFT permit ([#28004](https://github.com/MetaMask/metamask-extension/pull/28004)) -- feat: Enable simulation metrics for redesign transactions ([#28280](https://github.com/MetaMask/metamask-extension/pull/28280)) -- fix: GasDetailItem invalid paddingStart prop ([#28281](https://github.com/MetaMask/metamask-extension/pull/28281)) -- fix: use transaction address to get lock for custom nonce ([#28272](https://github.com/MetaMask/metamask-extension/pull/28272)) -- fix: flaky test `Phishing Detection Via Iframe should redirect users to the the MetaMask Phishing Detection page when an iframe domain is on the phishing blocklist` ([#28293](https://github.com/MetaMask/metamask-extension/pull/28293)) -- chore: add the gas_included prop into Quotes Requested event ([#28295](https://github.com/MetaMask/metamask-extension/pull/28295)) -- test: [POM] Refactor e2e tests to use onboarding flows defined in Page Object Models ([#28202](https://github.com/MetaMask/metamask-extension/pull/28202)) -- feat: btc e2e tests ([#27986](https://github.com/MetaMask/metamask-extension/pull/27986)) -- fix: remove scroll-to-bottom requirement in redesigned transaction confirmations ([#27910](https://github.com/MetaMask/metamask-extension/pull/27910)) -- chore: Add gravity logo and image mappings ([#28306](https://github.com/MetaMask/metamask-extension/pull/28306)) -- chore: Bump Snaps packages ([#28215](https://github.com/MetaMask/metamask-extension/pull/28215)) -- feat: Add simulation metrics to "Transaction Submitted" and "Transaction Finalized" events ([#28240](https://github.com/MetaMask/metamask-extension/pull/28240)) -- fix: smart transactions in redesigned confirmations ([#28273](https://github.com/MetaMask/metamask-extension/pull/28273)) -- fix: unit flaky test `AddContact component › should disable submit button when input is not a valid address` ([#27941](https://github.com/MetaMask/metamask-extension/pull/27941)) -- fix: Hide fiat values on test networks ([#28219](https://github.com/MetaMask/metamask-extension/pull/28219)) -- chore: display bridge quotes ([#28031](https://github.com/MetaMask/metamask-extension/pull/28031)) -- fix: Permit message, dataTree value incorrectly using default ERC20 decimals for non-ERC20 token values ([#28142](https://github.com/MetaMask/metamask-extension/pull/28142)) -- fix: ignore error when getTokenStandardAndDetails fails ([#28030](https://github.com/MetaMask/metamask-extension/pull/28030)) -- fix: notification settings type ([#28271](https://github.com/MetaMask/metamask-extension/pull/28271)) -- chore: use accounts api for token detection ([#28254](https://github.com/MetaMask/metamask-extension/pull/28254)) -- fix: Fix alignment of long RPC labels in Networks menu ([#28244](https://github.com/MetaMask/metamask-extension/pull/28244)) -- feat: adds the experimental toggle for Solana ([#28190](https://github.com/MetaMask/metamask-extension/pull/28190)) -- feat: multi chain polling for token prices ([#28158](https://github.com/MetaMask/metamask-extension/pull/28158)) -- refactor: move `getInternalAccounts` from `selectors.js` to `accounts.ts` ([#27645](https://github.com/MetaMask/metamask-extension/pull/27645)) -- fix: Add different copy for tooltip when a snap is requesting a signature ([#27492](https://github.com/MetaMask/metamask-extension/pull/27492)) -- fix: Prevent coercing symbols to zero in the edit spending cap modal ([#28192](https://github.com/MetaMask/metamask-extension/pull/28192)) -- test: [POM] Migrate edit network rpc e2e tests and create related page class functions ([#28161](https://github.com/MetaMask/metamask-extension/pull/28161)) -- refactor: remove global network usage from signatures ([#28167](https://github.com/MetaMask/metamask-extension/pull/28167)) -- fix: margin on asset chart min/max indicators ([#27916](https://github.com/MetaMask/metamask-extension/pull/27916)) -- feat: add token verification source count and link to block explorer ([#27759](https://github.com/MetaMask/metamask-extension/pull/27759)) -- chore: Remove obsolete preview build support ([#27968](https://github.com/MetaMask/metamask-extension/pull/27968)) -- fix: Removing `warning` prop from settings ([#27990](https://github.com/MetaMask/metamask-extension/pull/27990)) -- chore: Adding installType to Sentry Tags for easy filtering ([#28084](https://github.com/MetaMask/metamask-extension/pull/28084)) -- chore: remove broken link in docs ([#28232](https://github.com/MetaMask/metamask-extension/pull/28232)) -- fix: Error handling for the state log download failure ([#26999](https://github.com/MetaMask/metamask-extension/pull/26999)) -- feat: Upgrade alert controller to base controller v2 ([#28054](https://github.com/MetaMask/metamask-extension/pull/28054)) -- chore: improve token lookup performance in `useAccountTotalFiatBalance` ([#28233](https://github.com/MetaMask/metamask-extension/pull/28233)) + +### Added +- Added error handling to ensure users are not redirected to an incorrect network when sending or swapping tokens ([#28740](https://github.com/MetaMask/metamask-extension/pull/28740)) +- Added optional chaining to currency rates check for improved stability ([#28753](https://github.com/MetaMask/metamask-extension/pull/28753)) +- Enabled Portfolio View ([#28661](https://github.com/MetaMask/metamask-extension/pull/28661)) +- Added a selector to enable cross-chain polling for aggregated balances ([#28662](https://github.com/MetaMask/metamask-extension/pull/28662)) +- Ensured the network filter respects the PortfolioView feature flag, displaying tokens accordingly ([#28626](https://github.com/MetaMask/metamask-extension/pull/28626)) +- Implemented multichain token detection, enabling periodic polling and storing detected tokens across all supported networks ([#28380](https://github.com/MetaMask/metamask-extension/pull/28380)) +- Added PortfolioView to display tokens across all networks in one list ([#28593](https://github.com/MetaMask/metamask-extension/pull/28593)) +- Added cross-chain aggregated balance calculation ([#28456](https://github.com/MetaMask/metamask-extension/pull/28456)) +- Enabled redesigned transaction confirmations for all users, with automatic toggling ([#28321](https://github.com/MetaMask/metamask-extension/pull/28321)) +- Added a first-time interaction warning to alert users when interacting with an address for the first time ([#28435](https://github.com/MetaMask/metamask-extension/pull/28435)) +- Added a default value to the custom nonce modal ([#28659](https://github.com/MetaMask/metamask-extension/pull/28659)) +- Added an alert when the selected account differs from the signing account in the confirmation screen ([#28562](https://github.com/MetaMask/metamask-extension/pull/28562)) +- Display "< 0.01" instead of "0.00" for the fiat value of network fees ([#28543](https://github.com/MetaMask/metamask-extension/pull/28543)) +- Improved handling of very long names by truncating names longer than 15 characters with an ellipsis ([#28560](https://github.com/MetaMask/metamask-extension/pull/28560)) +- Enabled account syncing in production ([#28596](https://github.com/MetaMask/metamask-extension/pull/28596)) +- Added various updates to account syncing in preparation for re-enablement ([#28541](https://github.com/MetaMask/metamask-extension/pull/28541)) +- Added entry points to the Portfolio for viewing and managing spending caps from the extension ([#27607](https://github.com/MetaMask/metamask-extension/pull/27607)) + +### Changed +- Updated the new network popup to only display for compatible accounts ([#28535](https://github.com/MetaMask/metamask-extension/pull/28535)) +- Removed the "You're now using..." network modal after adding a network ([#28765](https://github.com/MetaMask/metamask-extension/pull/28765)) +- Updated the transaction list message on the token detail page to reflect the current network ([#28764](https://github.com/MetaMask/metamask-extension/pull/28764)) +- Updated the description of the setting to enable simulation to include signatures ([#28536](https://github.com/MetaMask/metamask-extension/pull/28536)) +- Reduced maximum pet name length to 12 characters ([#28660](https://github.com/MetaMask/metamask-extension/pull/28660)) +- Updated NFT token send design ([#28433](https://github.com/MetaMask/metamask-extension/pull/28433)) +- Improved design aspects of PortfolioView, including networks, sorting, and menu ([#28663](https://github.com/MetaMask/metamask-extension/pull/28663)) +- Provided maximal space for asset list filter to display "All networks" text fully and ellipsize long account names properly ([#28590](https://github.com/MetaMask/metamask-extension/pull/28590)) + +### Fixed +- [FLASK] Fixed issue where non-EVM accounts were incorrectly included in the account connection flow ([#28436](https://github.com/MetaMask/metamask-extension/pull/28436)) +- Fixed issue with detecting NFTs when switching networks on the NFT tab ([#28769](https://github.com/MetaMask/metamask-extension/pull/28769)) +- Passed decimal balance from asset page to swaps UI to ensure proper prepopulation ([#28707](https://github.com/MetaMask/metamask-extension/pull/28707)) +- Fixed issue where the incorrect native token was prepopulated in the swap UI when swapping from a different chain in PortfolioView ([#28639](https://github.com/MetaMask/metamask-extension/pull/28639)) +- Fixed issue where tokens from non-current networks were being hidden incorrectly ([#28674](https://github.com/MetaMask/metamask-extension/pull/28674)) +- Fixed market data retrieval for native tokens with non-zero addresses, such as Polygon's native token ([#28584](https://github.com/MetaMask/metamask-extension/pull/28584)) +- Fixed display issues for test networks in Portfolio View when the price checker setting is off ([#28601](https://github.com/MetaMask/metamask-extension/pull/28601)) +- Fixed account list item display for PortfolioView with and without the feature flag ([#28598](https://github.com/MetaMask/metamask-extension/pull/28598)) +- Fixed display bug on coin overview and account list item when the "Show balance and token price checker" setting is off ([#28569](https://github.com/MetaMask/metamask-extension/pull/28569)) +- Fixed styling issue affecting all dialogs by limiting it to the quotes modal ([#28739](https://github.com/MetaMask/metamask-extension/pull/28739)) +- Fixed swaps approval checking for amounts greater than 0 but less than the swap amount ([#28680](https://github.com/MetaMask/metamask-extension/pull/28680)) +- Fixed transaction flow section layout on redesigned confirmation pages ([#28720](https://github.com/MetaMask/metamask-extension/pull/28720)) +- Prevented duplicate contact names and added warnings for duplicates in the contact list ([#28249](https://github.com/MetaMask/metamask-extension/pull/28249)) +- Made QR scanner more strict about the contents it allows, fixing unexpected behavior with certain QR codes ([#28521](https://github.com/MetaMask/metamask-extension/pull/28521)) +- Fixed avatar size for the current network ([#28731](https://github.com/MetaMask/metamask-extension/pull/28731)) +- Fixed account names and length display for dApp connections ([#28725](https://github.com/MetaMask/metamask-extension/pull/28725)) ## [12.8.1] ### Fixed From 528d31c9c7566e69c75d83afb8ea8799dc8b92a6 Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Mon, 9 Dec 2024 21:20:36 +0000 Subject: [PATCH 029/111] Update Attributions --- attribution.txt | 1818 +++++++++++++---------------------------------- 1 file changed, 499 insertions(+), 1319 deletions(-) diff --git a/attribution.txt b/attribution.txt index bd4b636a2170..826ec1b5c246 100644 --- a/attribution.txt +++ b/attribution.txt @@ -1773,6 +1773,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +base-x +5.0.0 +The MIT License (MIT) + +Copyright (c) 2018 base-x contributors +Copyright (c) 2014-2018 The Bitcoin Core developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** bchaddrjs @@ -2250,10 +2278,10 @@ SOFTWARE. ****************************** bitwise -2.1.0 +2.2.1 # The MIT License (MIT) -Copyright (c) `2019` Florian Wendelborn +Copyright (c) `2023` Florian Wendelborn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -2415,7 +2443,7 @@ SOFTWARE. ****************************** borc -2.1.2 +3.0.0 The MIT License (MIT) Copyright (c) 2016 Friedel Ziegelmayer @@ -2887,6 +2915,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +bs58 +6.0.0 +MIT License + +Copyright (c) 2018 cryptocoinjs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** bs58check @@ -2941,6 +2996,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +bs58check +4.0.0 +The MIT License (MIT) + +Copyright (c) 2017 Daniel Cousens + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** buffer @@ -3589,34 +3671,6 @@ public licenses. Creative Commons may be contacted at creativecommons.org. -****************************** - -case -1.6.3 -Copyright (c) 2013 Nathan Bubna - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - ****************************** cashaddrjs @@ -3685,322 +3739,75 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -@chainsafe/as-sha256 -0.3.1 - Copyright 2019 ChainSafe Systems +chalk +2.4.2 +MIT License - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Copyright (c) Sindre Sorhus (sindresorhus.com) - http://www.apache.org/licenses/LICENSE-2.0 +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@chainsafe/persistent-merkle-tree -0.4.2 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +chalk +4.1.2 +MIT License - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Copyright (c) Sindre Sorhus (sindresorhus.com) - 1. Definitions. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +****************************** - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +chalk +5.3.0 +MIT License - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +Copyright (c) Sindre Sorhus (https://sindresorhus.com) - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +****************************** - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +character-entities +1.2.1 +(The MIT License) - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +Copyright (c) 2015 Titus Wormer - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -****************************** - -@chainsafe/ssz -0.9.4 <> -Copyright 2019- ChainSafe Systems - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -****************************** - -chalk -2.4.2 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -chalk -4.1.2 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -chalk -5.3.0 -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -character-entities -1.2.1 -(The MIT License) - -Copyright (c) 2015 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -4710,51 +4517,238 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** crc-32 -1.2.0 -Copyright (C) 2014-present SheetJS +1.2.2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - http://www.apache.org/licenses/LICENSE-2.0 + 1. Definitions. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -****************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -create-hash -1.2.0 -The MIT License (MIT) + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -Copyright (c) 2017 crypto-browserify contributors + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -****************************** + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2014-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +****************************** + +create-hash +1.2.0 +The MIT License (MIT) + +Copyright (c) 2017 crypto-browserify contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** create-hmac 1.1.7 @@ -5245,34 +5239,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -delimit-stream -0.1.0 -Copyright (c) 2013, Jason Kuhrt -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ****************************** detect-browser @@ -5634,14 +5600,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ****************************** elliptic -6.5.4 -license: MIT -authors: Fedor Indutny - -****************************** - -elliptic -6.6.1 +6.5.7 license: MIT authors: Fedor Indutny @@ -6538,7 +6497,7 @@ eslint-visitor-keys ****************************** eth-chainlist -0.0.498 +0.0.519 The MIT License (MIT) Copyright (c) 2022 Zane J. Chua @@ -6563,13 +6522,6 @@ THE SOFTWARE. ****************************** -eth-eip712-util-browser -0.0.3 -license: ISC -authors: Dan Finlay - -****************************** - eth-ens-namehash 2.0.8 license: ISC @@ -6607,32 +6559,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -ethereum-cryptography -1.1.2 -The MIT License (MIT) - -Copyright (c) 2021 Patricio Palladino, Paul Miller, ethereum-cryptography contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - ****************************** ethereum-cryptography @@ -6662,7 +6588,7 @@ THE SOFTWARE. ****************************** @ethereumjs/common -3.1.1 +3.2.0 The MIT License (MIT) Copyright (c) 2015 @@ -6690,7 +6616,7 @@ SOFTWARE. ****************************** @ethereumjs/common -3.2.0 +4.3.0 The MIT License (MIT) Copyright (c) 2015 @@ -7504,7 +7430,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -4.1.1 +4.2.0 Mozilla Public License Version 2.0 ================================== @@ -7883,7 +7809,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -4.2.0 +5.3.0 Mozilla Public License Version 2.0 ================================== @@ -10868,25 +10794,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -exit-on-epipe -1.0.1 -Copyright (C) 2015-present SheetJS - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - ****************************** extend @@ -12196,7 +12103,7 @@ SOFTWARE. ****************************** gridplus-sdk -2.5.1 +2.7.1 MIT License Copyright (c) 2019 GridPlus, Inc @@ -14063,7 +13970,7 @@ SOFTWARE. ****************************** iso-url -0.4.7 +1.2.1 MIT License Copyright (c) Hugo Dias (hugodias.me) @@ -15107,27 +15014,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -json-rpc-middleware-stream -5.0.1 -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** json-rpc-random-id @@ -15165,7 +15051,7 @@ SOFTWARE. ****************************** jsonschema -1.2.4 +1.4.1 jsonschema is licensed under MIT license. Copyright (C) 2012-2015 Tom de Grunt @@ -15234,7 +15120,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** json-text-sequence -0.1.1 +0.3.0 The MIT License (MIT) Copyright (c) 2014 Joe Hildebrand @@ -17522,33 +17408,7 @@ authors: Maarten Zuidhoorn ****************************** @metamask/accounts-controller -17.2.0 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/accounts-controller -18.2.2 +20.0.0 MIT License Copyright (c) 2018 MetaMask @@ -17859,33 +17719,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/assets-controllers -43.1.1 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/base-controller -5.0.2 +45.1.0 MIT License Copyright (c) 2018 MetaMask @@ -18012,7 +17846,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/controller-utils -11.4.3 +11.4.4 MIT License Copyright (c) 2018 MetaMask @@ -18045,7 +17879,7 @@ authors: undefined ****************************** @metamask/ens-controller -13.0.1 +14.0.1 MIT License Copyright (c) 2018 MetaMask @@ -18304,33 +18138,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/eth-block-tracker -11.0.1 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/eth-block-tracker -9.0.3 +11.0.2 MIT License Copyright (c) 2018 MetaMask @@ -18569,7 +18377,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-json-rpc-middleware -14.0.1 +15.0.0 ISC License Copyright (c) 2020 MetaMask @@ -18611,28 +18419,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-json-rpc-provider -3.0.2 -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/eth-json-rpc-provider -4.1.3 +4.1.6 ISC License Copyright (c) 2022 MetaMask @@ -18879,14 +18666,31 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-snap-keyring -4.4.0 -license: Custom: https://metamask.github.io/eth-snap-keyring/latest/ -authors: undefined +5.0.1 +Copyright ConsenSys Software Inc. 2022. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. + ****************************** @metamask/eth-token-tracker -8.0.0 +9.0.0 ISC License Copyright (c) 2020 MetaMask @@ -18928,7 +18732,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/gas-fee-controller -18.0.0 +21.0.0 MIT License Copyright (c) 2018 MetaMask @@ -19338,27 +19142,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -@metamask/json-rpc-engine -8.0.2 -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** @metamask/json-rpc-engine @@ -19401,6 +19184,30 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/keyring-api +10.1.0 +Copyright ConsenSys Software Inc. 2022. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. + + ****************************** @metamask/keyring-api @@ -19418,7 +19225,7 @@ authors: undefined ****************************** @metamask/keyring-controller -17.2.2 +19.0.0 MIT License Copyright (c) 2018 MetaMask @@ -19499,7 +19306,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/message-manager -10.1.0 +11.0.1 MIT License Copyright (c) 2018 MetaMask @@ -19601,33 +19408,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -****************************** - -@metamask/nonce-tracker -5.0.0 -MIT License - -Copyright (c) 2019 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** @metamask/nonce-tracker @@ -19655,36 +19435,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@metamask/notification-controller -6.0.0 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - ****************************** @metamask/notification-services-controller -0.11.0 +0.14.0 MIT License Copyright (c) 2024 MetaMask @@ -19776,32 +19530,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -@metamask/permission-controller -10.0.0 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - ****************************** @metamask/permission-controller @@ -19831,7 +19559,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/permission-log-controller -2.0.1 +3.0.1 Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -19881,7 +19609,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/polling-controller -10.0.1 +11.0.0 MIT License Copyright (c) 2018 MetaMask @@ -19932,41 +19660,15 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/polling-controller -8.0.0 -MIT License - -Copyright (c) 2018 MetaMask +@metamask/post-message-stream +8.1.1 +ISC License -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Copyright (c) 2020 MetaMask -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/post-message-stream -8.1.1 -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF @@ -20194,7 +19896,7 @@ authors: undefined ****************************** @metamask/profile-sync-controller -0.9.7 +2.0.0 MIT License Copyright (c) 2024 MetaMask @@ -20220,34 +19922,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/providers -14.0.2 -MIT License - -Copyright (c) 2020 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@metamask/providers -18.1.1 +18.2.0 MIT License Copyright (c) 2020 MetaMask @@ -20454,7 +20129,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/signature-controller -21.1.0 +23.1.0 MIT License Copyright (c) 2023 MetaMask @@ -20480,21 +20155,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/slip44 -3.1.0 -license: ISC -authors: Dan Finlay - -****************************** - -@metamask/slip44 -4.0.0 +4.1.0 license: ISC authors: Dan Finlay ****************************** @metamask/smart-transactions-controller -13.0.0 +15.0.0 Copyright ConsenSys Software Inc. 2020. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -20518,7 +20186,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-controllers -9.12.0 +9.14.0 Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -20542,7 +20210,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-execution-environments -6.9.2 +6.10.0 Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -20775,7 +20443,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-rpc-methods -11.5.1 +11.6.0 Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -20799,7 +20467,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-sdk -6.10.0 +6.12.0 ISC License Copyright (c) 2023 MetaMask @@ -20820,28 +20488,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/snaps-utils -7.8.1 -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/snaps-utils -8.5.2 +8.6.0 ISC License Copyright (c) 2022 MetaMask @@ -20891,33 +20538,7 @@ authors: undefined ****************************** @metamask/transaction-controller -34.0.0 -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/transaction-controller -38.3.0 +40.1.0 MIT License Copyright (c) 2018 MetaMask @@ -20943,7 +20564,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/user-operation-controller -13.0.0 +16.0.0 MIT License Copyright (c) 2023 MetaMask @@ -21692,58 +21313,6 @@ THE SOFTWARE. ****************************** -@noble/hashes -1.1.2 -The MIT License (MIT) - -Copyright (c) 2022 Paul Miller (https://paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -****************************** - -@noble/hashes -1.1.3 -The MIT License (MIT) - -Copyright (c) 2022 Paul Miller (https://paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -****************************** - @noble/hashes 1.3.2 The MIT License (MIT) @@ -21822,11 +21391,11 @@ THE SOFTWARE. ****************************** -@noble/secp256k1 -1.6.3 +@noble/hashes +1.5.0 The MIT License (MIT) -Copyright (c) 2019 Paul Miller (https://paulmillr.com) +Copyright (c) 2022 Paul Miller (https://paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal @@ -22486,26 +22055,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -printj -1.1.2 -Copyright (C) 2016-present SheetJS - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - ****************************** process @@ -26015,7 +25564,7 @@ THE SOFTWARE. ****************************** @scure/base -1.1.7 +1.1.9 The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -26039,33 +25588,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@scure/bip32 -1.1.0 -The MIT License (MIT) - -Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** @scure/bip32 @@ -26096,7 +25618,7 @@ THE SOFTWARE. ****************************** @scure/bip39 -1.1.0 +1.3.0 The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -26122,14 +25644,17 @@ THE SOFTWARE. ****************************** -@scure/bip39 -1.3.0 +secp256k1 +4.0.4 The MIT License (MIT) -Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) +Copyright (c) 2014-2016 secp256k1-node contributors + +Parts of this software are based on bn.js, elliptic, hash.js +Copyright (c) 2014-2016 Fedor Indutny Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal +of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is @@ -26138,7 +25663,7 @@ furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -26150,7 +25675,7 @@ THE SOFTWARE. ****************************** secp256k1 -4.0.4 +5.0.1 The MIT License (MIT) Copyright (c) 2014-2016 secp256k1-node contributors @@ -27182,6 +26707,13 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@sovpro/delimited-stream +1.1.0 +license: MIT +authors: sovpro + ****************************** space-separated-tokens @@ -27686,21 +27218,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -superstruct -1.0.3 -The MIT License - -Copyright © 2017, [Ian Storm Taylor](https://ianstormtaylor.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** superstruct @@ -29694,6 +29211,33 @@ authors: Mohamed Hegazy SOFTWARE +****************************** + +@types/uuid +10.0.0 + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + ****************************** @types/uuid @@ -30488,7 +30032,7 @@ SOFTWARE. ****************************** uuid -8.3.2 +10.0.0 The MIT License (MIT) Copyright (c) 2010-2020 Robert Kieffer and other contributors @@ -30503,7 +30047,22 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** uuid -9.0.1 +8.3.2 +The MIT License (MIT) + +Copyright (c) 2010-2020 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +uuid +9.0.1 The MIT License (MIT) Copyright (c) 2010-2020 Robert Kieffer and other contributors @@ -30757,385 +30316,6 @@ web-encoding license: MIT authors: Irakli Gozalishvili -****************************** - -webextension-polyfill -0.10.0 -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. - - ****************************** webextension-polyfill From 61ee2a6f944b0b9155ca9c3f26df4b7d3ef91a83 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Mon, 9 Dec 2024 18:56:11 -0330 Subject: [PATCH 030/111] Lint fix for the v12.9.0 changelog (#29038) --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d4b24b8a1d3..2d7b03f6751d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [12.9.0] - ### Added - Added error handling to ensure users are not redirected to an incorrect network when sending or swapping tokens ([#28740](https://github.com/MetaMask/metamask-extension/pull/28740)) - Added optional chaining to currency rates check for improved stability ([#28753](https://github.com/MetaMask/metamask-extension/pull/28753)) From 8d86aeafd725f0c04a934385c93b484ed16b01c4 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Mon, 9 Dec 2024 20:13:54 -0330 Subject: [PATCH 031/111] =?UTF-8?q?chore:=20Skip=20flaky=20smart-transacti?= =?UTF-8?q?ons.spec.ts=20until=20we=20determine=20the=20r=E2=80=A6=20(#290?= =?UTF-8?q?39)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cherry-picks 64a69f709834947c4f459206ade1e2f856ea787464a69f709834947c4f459206ade1e2f856ea7874 (https://github.com/MetaMask/metamask-extension/pull/28943) to v12.9.0, to get the flaky test passing --- test/e2e/tests/smart-transactions/smart-transactions.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/tests/smart-transactions/smart-transactions.spec.ts b/test/e2e/tests/smart-transactions/smart-transactions.spec.ts index 36324b9ea797..b2bb04a68b44 100644 --- a/test/e2e/tests/smart-transactions/smart-transactions.spec.ts +++ b/test/e2e/tests/smart-transactions/smart-transactions.spec.ts @@ -64,7 +64,7 @@ export const waitForTransactionToComplete = async ( }; describe('smart transactions @no-mmi', function () { - it('Completes a Swap', async function () { + it.skip('Completes a Swap', async function () { await withFixturesForSmartTransactions( { title: this.test?.fullTitle(), From 5a04816fb01ba34acb034972a045728faf41c4bd Mon Sep 17 00:00:00 2001 From: OGPoyraz Date: Tue, 10 Dec 2024 11:05:42 +0100 Subject: [PATCH 032/111] fix: Copy change on NFT approve confirmation title (#29017) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR update NFT approve to `Withdrawal request` for consistency between NFT's approve and setApprovalForAll requests. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29017?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to test dapp 2. Mint a NFT 3. Approve the NFT 4. See redesigned confirmation for the NFT approve ## **Screenshots/Recordings** ### **Before** Screenshot 2024-12-09 at 11 51 01 ### **After** Screenshot 2024-12-09 at 11 51 35 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/_locales/de/messages.json | 3 --- app/_locales/el/messages.json | 3 --- app/_locales/en/messages.json | 4 ++-- app/_locales/es/messages.json | 3 --- app/_locales/fr/messages.json | 3 --- app/_locales/hi/messages.json | 3 --- app/_locales/id/messages.json | 3 --- app/_locales/ja/messages.json | 3 --- app/_locales/ko/messages.json | 3 --- app/_locales/pt/messages.json | 3 --- app/_locales/ru/messages.json | 3 --- app/_locales/tl/messages.json | 3 --- app/_locales/tr/messages.json | 3 --- app/_locales/vi/messages.json | 3 --- app/_locales/zh_CN/messages.json | 3 --- .../transactions/erc721-approve-redesign.spec.ts | 2 +- .../confirmations/transactions/erc721-approve.test.tsx | 4 +++- .../confirmations/components/confirm/title/title.test.tsx | 2 +- ui/pages/confirmations/components/confirm/title/title.tsx | 2 +- 19 files changed, 8 insertions(+), 48 deletions(-) diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 19f6494e3b33..416fc2454fee 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Geheime Wiederherstellungsphrase bestätigen" }, - "confirmTitleApproveTransaction": { - "message": "Bewilligungsanfrage" - }, "confirmTitleDeployContract": { "message": "Einen Kontrakt nutzen" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index cb3b257c3177..90209c25f6e9 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Επιβεβαιώστε τη Μυστική Φράση Ανάκτησης" }, - "confirmTitleApproveTransaction": { - "message": "Αίτημα χορήγησης άδειας" - }, "confirmTitleDeployContract": { "message": "Ανάπτυξη συμβολαίου" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index d1f05af0b283..f6f03b616087 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1137,8 +1137,8 @@ "confirmRecoveryPhrase": { "message": "Confirm Secret Recovery Phrase" }, - "confirmTitleApproveTransaction": { - "message": "Allowance request" + "confirmTitleApproveTransactionNFT": { + "message": "Withdrawal request" }, "confirmTitleDeployContract": { "message": "Deploy a contract" diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 92cbd316b9fb..066e4e40b841 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Confirmar frase secreta de recuperación" }, - "confirmTitleApproveTransaction": { - "message": "Solicitud de asignación" - }, "confirmTitleDeployContract": { "message": "Implementar un contrato" }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 6391c83412a2..a3c20374639f 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Confirmer la phrase secrète de récupération" }, - "confirmTitleApproveTransaction": { - "message": "Demande de provision" - }, "confirmTitleDeployContract": { "message": "Déployer un contrat" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index 63438fb22a4f..0e108a94e585 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "सीक्रेट रिकवरी फ्रेज कन्फर्म करें" }, - "confirmTitleApproveTransaction": { - "message": "भत्ता का अनुरोध" - }, "confirmTitleDeployContract": { "message": "एक कॉन्ट्रैक्ट करें" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index e1fbf1398d39..261d57c9ed10 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Konfirmasikan Frasa Pemulihan Rahasia" }, - "confirmTitleApproveTransaction": { - "message": "Permintaan izin" - }, "confirmTitleDeployContract": { "message": "Terapkan kontrak" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 7d247adcc07a..11b804eac0f9 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "シークレットリカバリーフレーズの確認" }, - "confirmTitleApproveTransaction": { - "message": "許容額のリクエスト" - }, "confirmTitleDeployContract": { "message": "コントラクトを展開" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 1d6c0b9199d8..7a8fad19debb 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "비밀복구구문 컨펌" }, - "confirmTitleApproveTransaction": { - "message": "수당 청구" - }, "confirmTitleDeployContract": { "message": "계약 배포" }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index c7afcceb33e8..c6d61aa82191 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Confirmar Frase de Recuperação Secreta" }, - "confirmTitleApproveTransaction": { - "message": "Solicitação de limite de gasto" - }, "confirmTitleDeployContract": { "message": "Implementar um contrato" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index c9236e4396bd..86d2ee689f56 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Подтвердите секретную фразу для восстановления" }, - "confirmTitleApproveTransaction": { - "message": "Запрос квоты" - }, "confirmTitleDeployContract": { "message": "Развернуть контракт" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 30ee4b2096eb..8db1d4af4f7f 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Kumpirmahin ang Lihim na Parirala sa Pagbawi" }, - "confirmTitleApproveTransaction": { - "message": "Hiling sa allowance" - }, "confirmTitleDeployContract": { "message": "Mag-deploy ng kontrata" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 16f7c1eb8a85..20319a113bec 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Gizli Kurtarma İfadesini Onayla" }, - "confirmTitleApproveTransaction": { - "message": "Ödenek talebi" - }, "confirmTitleDeployContract": { "message": "Bir sözleşme kurulumu gerçekleştirin" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 39c62a701e4f..9221bcbb0ad8 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "Xác nhận Cụm từ khôi phục bí mật" }, - "confirmTitleApproveTransaction": { - "message": "Yêu cầu cho phép" - }, "confirmTitleDeployContract": { "message": "Triển khai hợp đồng" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 9c5da6003052..ba4e23972f38 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -1033,9 +1033,6 @@ "confirmRecoveryPhrase": { "message": "确认私钥助记词" }, - "confirmTitleApproveTransaction": { - "message": "许可请求" - }, "confirmTitleDeployContract": { "message": "部署合约" }, diff --git a/test/e2e/tests/confirmations/transactions/erc721-approve-redesign.spec.ts b/test/e2e/tests/confirmations/transactions/erc721-approve-redesign.spec.ts index c7ceb6c42c94..e949e77e0e36 100644 --- a/test/e2e/tests/confirmations/transactions/erc721-approve-redesign.spec.ts +++ b/test/e2e/tests/confirmations/transactions/erc721-approve-redesign.spec.ts @@ -145,7 +145,7 @@ async function assertApproveDetails(driver: Driver) { await driver.waitForSelector({ css: 'h2', - text: 'Allowance request', + text: 'Withdrawal request', }); await driver.waitForSelector({ diff --git a/test/integration/confirmations/transactions/erc721-approve.test.tsx b/test/integration/confirmations/transactions/erc721-approve.test.tsx index c158717cc9c9..4f211576e6cd 100644 --- a/test/integration/confirmations/transactions/erc721-approve.test.tsx +++ b/test/integration/confirmations/transactions/erc721-approve.test.tsx @@ -163,7 +163,9 @@ describe('ERC721 Approve Confirmation', () => { }); expect( - await screen.findByText(tEn('confirmTitleApproveTransaction') as string), + await screen.findByText( + tEn('confirmTitleApproveTransactionNFT') as string, + ), ).toBeInTheDocument(); expect( await screen.findByText( diff --git a/ui/pages/confirmations/components/confirm/title/title.test.tsx b/ui/pages/confirmations/components/confirm/title/title.test.tsx index 3d4d6672940d..b100f831581d 100644 --- a/ui/pages/confirmations/components/confirm/title/title.test.tsx +++ b/ui/pages/confirmations/components/confirm/title/title.test.tsx @@ -124,7 +124,7 @@ describe('ConfirmTitle', () => { ); expect( - getByText(tEn('confirmTitleApproveTransaction') as string), + getByText(tEn('confirmTitleApproveTransactionNFT') as string), ).toBeInTheDocument(); expect( getByText(tEn('confirmTitleDescApproveTransaction') as string), diff --git a/ui/pages/confirmations/components/confirm/title/title.tsx b/ui/pages/confirmations/components/confirm/title/title.tsx index a926c0f6b482..83efc26406bf 100644 --- a/ui/pages/confirmations/components/confirm/title/title.tsx +++ b/ui/pages/confirmations/components/confirm/title/title.tsx @@ -88,7 +88,7 @@ const getTitle = ( return t('confirmTitleSignature'); case TransactionType.tokenMethodApprove: if (isNFT) { - return t('confirmTitleApproveTransaction'); + return t('confirmTitleApproveTransactionNFT'); } if (customSpendingCap === '0') { return t('confirmTitleRevokeApproveTransaction'); From 8c8851a21594f00730378d7031daf2a18c600840 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Tue, 10 Dec 2024 10:11:14 +0000 Subject: [PATCH 033/111] feat: upgrade transaction controller to get incoming transactions using accounts API (#28597) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Update `@metamask/transaction-controller` to retrieve incoming transactions using the accounts API rather than Etherscan. Add incoming transaction E2E tests. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28597?quickstart=1) ## **Related issues** ## **Manual testing steps** ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/scripts/metamask-controller.js | 21 +- package.json | 2 +- test/e2e/fixture-builder.js | 18 ++ .../page-objects/pages/home/activity-list.ts | 27 +++ ...rs-after-init-opt-in-background-state.json | 1 + .../transaction/incoming-transactions.spec.ts | 199 ++++++++++++++++++ ui/pages/bridge/hooks/useHandleBridgeTx.ts | 1 - yarn.lock | 15 +- 8 files changed, 268 insertions(+), 16 deletions(-) create mode 100644 test/e2e/tests/transaction/incoming-transactions.spec.ts diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 0e46a598faf8..cc1bfe8b6809 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -2758,8 +2758,10 @@ export default class MetamaskController extends EventEmitter { } triggerNetworkrequests() { + this.txController.stopIncomingTransactionPolling(); + this.txController.startIncomingTransactionPolling([ - this.#getGlobalNetworkClientId(), + this.#getGlobalChainId(), ]); this.tokenDetectionController.enable(); @@ -3012,9 +3014,12 @@ export default class MetamaskController extends EventEmitter { const chainId = this.#getGlobalChainId(); await updateCurrentLocale(currentLocale); + if (currState.incomingTransactionsPreferences?.[chainId]) { + this.txController.stopIncomingTransactionPolling(); + this.txController.startIncomingTransactionPolling([ - this.#getGlobalNetworkClientId(), + this.#getGlobalChainId(), ]); } else { this.txController.stopIncomingTransactionPolling(); @@ -3085,14 +3090,14 @@ export default class MetamaskController extends EventEmitter { this.controllerMessenger.subscribe( 'NetworkController:networkDidChange', async () => { + await this.txController.stopIncomingTransactionPolling(); + await this.txController.updateIncomingTransactions([ - this.#getGlobalNetworkClientId(), + this.#getGlobalChainId(), ]); - await this.txController.stopIncomingTransactionPolling(); - await this.txController.startIncomingTransactionPolling([ - this.#getGlobalNetworkClientId(), + this.#getGlobalChainId(), ]); }, ); @@ -7086,7 +7091,9 @@ export default class MetamaskController extends EventEmitter { } } - await this.txController.updateIncomingTransactions(); + await this.txController.updateIncomingTransactions([ + this.#getGlobalChainId(), + ]); } async _notifyAccountsChange(origin, newAccounts) { diff --git a/package.json b/package.json index 697a4477d20d..71e6cebc2c19 100644 --- a/package.json +++ b/package.json @@ -348,7 +348,7 @@ "@metamask/snaps-sdk": "^6.13.0", "@metamask/snaps-utils": "^8.6.1", "@metamask/solana-wallet-snap": "^0.1.9", - "@metamask/transaction-controller": "^41.0.0", + "@metamask/transaction-controller": "^42.0.0", "@metamask/user-operation-controller": "^19.0.0", "@metamask/utils": "^10.0.1", "@ngraveio/bc-ur": "^1.1.12", diff --git a/test/e2e/fixture-builder.js b/test/e2e/fixture-builder.js index d2dc32297737..89471203c77e 100644 --- a/test/e2e/fixture-builder.js +++ b/test/e2e/fixture-builder.js @@ -1481,6 +1481,24 @@ class FixtureBuilder { }); } + withIncomingTransactionsPreferences(incomingTransactionsPreferences) { + return this.withPreferencesController({ + featureFlags: { + showIncomingTransactions: incomingTransactionsPreferences, + }, + }); + } + + withIncomingTransactionsCache(cache) { + return this.withTransactionController({ lastFetchedBlockNumbers: cache }); + } + + withTransactions(transactions) { + return this.withTransactionController({ + transactions, + }); + } + build() { this.fixture.meta = { version: FIXTURE_STATE_METADATA_VERSION, diff --git a/test/e2e/page-objects/pages/home/activity-list.ts b/test/e2e/page-objects/pages/home/activity-list.ts index 76ea76c5932f..efec4bf2aa0a 100644 --- a/test/e2e/page-objects/pages/home/activity-list.ts +++ b/test/e2e/page-objects/pages/home/activity-list.ts @@ -19,6 +19,9 @@ class ActivityListPage { private readonly transactionAmountsInActivity = '[data-testid="transaction-list-item-primary-currency"]'; + private readonly activityListAction = + '[data-testid="activity-list-item-action"]'; + constructor(driver: Driver) { this.driver = driver; } @@ -124,6 +127,30 @@ class ActivityListPage { `Amount for transaction ${expectedNumber} is displayed as ${expectedAmount}`, ); } + + async check_txAction(expectedAction: string, expectedNumber: number = 1) { + const transactionActions = await this.driver.findElements( + this.activityListAction, + ); + + const transactionActionText = await transactionActions[ + expectedNumber - 1 + ].getText(); + + assert.equal( + transactionActionText, + expectedAction, + `${transactionActionText} is displayed as transaction action instead of ${expectedAction} for transaction ${expectedNumber}`, + ); + + console.log( + `Action for transaction ${expectedNumber} is displayed as ${expectedAction}`, + ); + } + + async check_noTxInActivity(): Promise { + await this.driver.assertElementNotPresent(this.completedTransactions); + } } export default ActivityListPage; diff --git a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json index ecd0b1d0db7a..c915bba637b7 100644 --- a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json +++ b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json @@ -344,6 +344,7 @@ "allDetectedTokens": {} }, "TxController": { + "lastFetchedBlockNumbers": "object", "methodData": "object", "transactions": "object", "lastFetchedBlockNumbers": "object", diff --git a/test/e2e/tests/transaction/incoming-transactions.spec.ts b/test/e2e/tests/transaction/incoming-transactions.spec.ts new file mode 100644 index 000000000000..e31d35c12841 --- /dev/null +++ b/test/e2e/tests/transaction/incoming-transactions.spec.ts @@ -0,0 +1,199 @@ +import { Mockttp } from 'mockttp'; +import { loginWithoutBalanceValidation } from '../../page-objects/flows/login.flow'; +import { Driver } from '../../webdriver/driver'; +import { DEFAULT_FIXTURE_ACCOUNT } from '../../constants'; +import { withFixtures } from '../../helpers'; +import FixtureBuilder from '../../fixture-builder'; +import { switchToNetworkFlow } from '../../page-objects/flows/network.flow'; +import HomePage from '../../page-objects/pages/home/homepage'; +import ActivityListPage from '../../page-objects/pages/home/activity-list'; + +const TIMESTAMP_MOCK = 1234; + +const RESPONSE_STANDARD_MOCK = { + hash: '0x1', + timestamp: new Date(TIMESTAMP_MOCK).toISOString(), + chainId: 1, + blockNumber: 1, + blockHash: '0x2', + gas: 1, + gasUsed: 1, + gasPrice: '1', + effectiveGasPrice: '1', + nonce: 1, + cumulativeGasUsed: 1, + methodId: null, + value: '1230000000000000000', + to: DEFAULT_FIXTURE_ACCOUNT.toLowerCase(), + from: '0x2', + isError: false, + valueTransfers: [], +}; + +const RESPONSE_STANDARD_2_MOCK = { + ...RESPONSE_STANDARD_MOCK, + hash: '0x2', + value: '2340000000000000000', + timestamp: new Date(TIMESTAMP_MOCK - 1).toISOString(), +}; + +const RESPONSE_TOKEN_TRANSFER_MOCK = { + ...RESPONSE_STANDARD_MOCK, + to: '0x2', + valueTransfers: [ + { + contractAddress: '0x123', + decimal: 18, + symbol: 'ABC', + from: '0x2', + to: DEFAULT_FIXTURE_ACCOUNT.toLowerCase(), + amount: '4560000000000000000', + }, + ], +}; + +const RESPONSE_OUTGOING_MOCK = { + ...RESPONSE_STANDARD_MOCK, + from: DEFAULT_FIXTURE_ACCOUNT.toLowerCase(), + to: '0x2', +}; + +async function mockAccountsApi( + mockServer: Mockttp, + { + cursor, + transactions, + }: { cursor?: string; transactions?: Record[] } = {}, +) { + return [ + await mockServer + .forGet( + `https://accounts.api.cx.metamask.io/v1/accounts/${DEFAULT_FIXTURE_ACCOUNT.toLowerCase()}/transactions`, + ) + .withQuery(cursor ? { cursor } : {}) + .thenCallback(() => ({ + statusCode: 200, + json: { + data: transactions ?? [ + RESPONSE_STANDARD_MOCK, + RESPONSE_STANDARD_2_MOCK, + ], + pageInfo: { hasNextPage: false }, + }, + })), + ]; +} + +describe('Incoming Transactions', function () { + it('adds standard incoming transactions', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder() + .withIncomingTransactionsPreferences(true) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: mockAccountsApi, + }, + async ({ driver }: { driver: Driver }) => { + const activityList = await changeNetworkAndGoToActivity(driver); + await activityList.check_confirmedTxNumberDisplayedInActivity(2); + + await activityList.check_txAction('Receive', 1); + await activityList.check_txAmountInActivity('1.23 ETH', 1); + + await activityList.check_txAction('Receive', 2); + await activityList.check_txAmountInActivity('2.34 ETH', 2); + }, + ); + }); + + it('ignores token transfer transactions', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder() + .withIncomingTransactionsPreferences(true) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: (server: Mockttp) => + mockAccountsApi(server, { + transactions: [ + RESPONSE_STANDARD_MOCK, + RESPONSE_TOKEN_TRANSFER_MOCK, + ], + }), + }, + async ({ driver }: { driver: Driver }) => { + const activityList = await changeNetworkAndGoToActivity(driver); + await activityList.check_confirmedTxNumberDisplayedInActivity(1); + }, + ); + }); + + it('ignores outgoing transactions', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder() + .withIncomingTransactionsPreferences(true) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: (server: Mockttp) => + mockAccountsApi(server, { + transactions: [RESPONSE_STANDARD_MOCK, RESPONSE_OUTGOING_MOCK], + }), + }, + async ({ driver }: { driver: Driver }) => { + const activityList = await changeNetworkAndGoToActivity(driver); + await activityList.check_confirmedTxNumberDisplayedInActivity(1); + }, + ); + }); + + it('does nothing if preference disabled', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder() + .withIncomingTransactionsPreferences(false) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: mockAccountsApi, + }, + async ({ driver }: { driver: Driver }) => { + const activityList = await changeNetworkAndGoToActivity(driver); + await driver.delay(2000); + await activityList.check_noTxInActivity(); + }, + ); + }); + + it('ignores duplicate transactions already in state', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder() + .withIncomingTransactionsPreferences(true) + .withTransactions([ + { + hash: RESPONSE_STANDARD_MOCK.hash, + txParams: { from: RESPONSE_STANDARD_MOCK.from }, + }, + ]) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: mockAccountsApi, + }, + async ({ driver }: { driver: Driver }) => { + const activityList = await changeNetworkAndGoToActivity(driver); + await activityList.check_confirmedTxNumberDisplayedInActivity(1); + }, + ); + }); +}); + +async function changeNetworkAndGoToActivity(driver: Driver) { + await loginWithoutBalanceValidation(driver); + await switchToNetworkFlow(driver, 'Ethereum Mainnet'); + + const homepage = new HomePage(driver); + await homepage.goToActivityList(); + + return new ActivityListPage(driver); +} diff --git a/ui/pages/bridge/hooks/useHandleBridgeTx.ts b/ui/pages/bridge/hooks/useHandleBridgeTx.ts index 6d35cc931b77..feb7400acc71 100644 --- a/ui/pages/bridge/hooks/useHandleBridgeTx.ts +++ b/ui/pages/bridge/hooks/useHandleBridgeTx.ts @@ -25,7 +25,6 @@ export default function useHandleBridgeTx() { txType: TransactionType.bridge, txParams: quoteResponse.trade, fieldsToAddToTxMeta: { - // @ts-expect-error TODO get this added to TxMeta type destinationChainId: new Numeric(quoteResponse.quote.destChainId, 10) .toPrefixedHexString() .toLowerCase() as `0x${string}`, diff --git a/yarn.lock b/yarn.lock index e56e610cd0ce..95b7c07916c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6320,9 +6320,9 @@ __metadata: languageName: node linkType: hard -"@metamask/transaction-controller@npm:^41.0.0": - version: 41.0.0 - resolution: "@metamask/transaction-controller@npm:41.0.0" +"@metamask/transaction-controller@npm:^42.0.0": + version: 42.0.0 + resolution: "@metamask/transaction-controller@npm:42.0.0" dependencies: "@ethereumjs/common": "npm:^3.2.0" "@ethereumjs/tx": "npm:^4.2.0" @@ -6331,7 +6331,7 @@ __metadata: "@ethersproject/contracts": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" "@metamask/base-controller": "npm:^7.0.2" - "@metamask/controller-utils": "npm:^11.4.3" + "@metamask/controller-utils": "npm:^11.4.4" "@metamask/eth-query": "npm:^4.0.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" "@metamask/nonce-tracker": "npm:^6.0.0" @@ -6344,12 +6344,13 @@ __metadata: lodash: "npm:^4.17.21" uuid: "npm:^8.3.2" peerDependencies: - "@babel/runtime": ^7.23.9 + "@babel/runtime": ^7.0.0 "@metamask/accounts-controller": ^20.0.0 "@metamask/approval-controller": ^7.0.0 + "@metamask/eth-block-tracker": ">=9" "@metamask/gas-fee-controller": ^22.0.0 "@metamask/network-controller": ^22.0.0 - checksum: 10/67a00b2eade35fc4e635a6bcbbcd847b3986b3bdcc9730ff2c8f81234df18ed11149203c13d6bad616e859f7e25879efab36b6dc4be05a4e747b4280ae2f300d + checksum: 10/73c510803a720b4c1da0b82f1279a404a9b11c4ab76f8e5e4378c65d5d08bbb32c52062abfe319476cc3f5e2623a8987775c4524e55aa94002af73d73721b869 languageName: node linkType: hard @@ -26456,7 +26457,7 @@ __metadata: "@metamask/solana-wallet-snap": "npm:^0.1.9" "@metamask/test-bundler": "npm:^1.0.0" "@metamask/test-dapp": "npm:8.13.0" - "@metamask/transaction-controller": "npm:^41.0.0" + "@metamask/transaction-controller": "npm:^42.0.0" "@metamask/user-operation-controller": "npm:^19.0.0" "@metamask/utils": "npm:^10.0.1" "@ngraveio/bc-ur": "npm:^1.1.12" From f9e78789663c49464956d9776d61f475794b6afe Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Tue, 10 Dec 2024 13:34:24 +0000 Subject: [PATCH 034/111] feat: Add new gas_fee_selected property on Transaction * events (#29027) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** As per the task title. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29027?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3622 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** Screenshot 2024-12-09 at 17 35 30 Screenshot 2024-12-10 at 09 58 47 Screenshot 2024-12-10 at 09 58 37 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/scripts/lib/transaction/metrics.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/scripts/lib/transaction/metrics.ts b/app/scripts/lib/transaction/metrics.ts index 3cb33af60d3f..21a385307742 100644 --- a/app/scripts/lib/transaction/metrics.ts +++ b/app/scripts/lib/transaction/metrics.ts @@ -793,10 +793,14 @@ async function buildEventFragmentProperties({ securityProviderResponse, simulationFails, id, + userFeeLevel, } = transactionMeta; const query = new EthQuery(transactionMetricsRequest.provider); const source = referrer === ORIGIN_METAMASK ? 'user' : 'dapp'; + const gasFeeSelected = + userFeeLevel === 'dappSuggested' ? 'dapp_proposed' : userFeeLevel; + const { assetType, tokenStandard } = await determineTransactionAssetType( transactionMeta, query, @@ -1045,6 +1049,7 @@ async function buildEventFragmentProperties({ transaction_type: transactionType, transaction_speed_up: type === TransactionType.retry, transaction_internal_id: id, + gas_fee_selected: gasFeeSelected, ...blockaidProperties, // ui_customizations must come after ...blockaidProperties ui_customizations: uiCustomizations.length > 0 ? uiCustomizations : null, From 223cf44aa86cc36f241f841e94ff0fa799f2ee32 Mon Sep 17 00:00:00 2001 From: Priya Date: Tue, 10 Dec 2024 15:17:07 +0100 Subject: [PATCH 035/111] test: fix flaky send eth transaction test (#29050) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Fixes flaky e2e test to send eth transaction from within the wallet. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29050?quickstart=1) ## **Related issues** Fixes: [#28876](https://github.com/MetaMask/metamask-extension/issues/28876) ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- test/e2e/tests/transaction/send-eth.spec.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/test/e2e/tests/transaction/send-eth.spec.js b/test/e2e/tests/transaction/send-eth.spec.js index 7bffb3f1cde1..badeb2d88540 100644 --- a/test/e2e/tests/transaction/send-eth.spec.js +++ b/test/e2e/tests/transaction/send-eth.spec.js @@ -469,25 +469,19 @@ describe('Send ETH', function () { smartContract, title: this.test.fullTitle(), }, - async ({ driver, contractRegistry, ganacheServer }) => { - const contractAddress = await contractRegistry.getContractAddress( - smartContract, - ); + async ({ driver, ganacheServer }) => { await logInWithBalanceValidation(driver, ganacheServer); // Wait for balance to load await driver.delay(500); await driver.clickElement('[data-testid="eth-overview-send"]'); - await driver.fill( - 'input[placeholder="Enter public address (0x) or domain name"]', - contractAddress, - ); + await driver.clickElement({ text: 'Account 1', tag: 'button' }); const inputAmount = await driver.findElement( 'input[placeholder="0"]', ); - await inputAmount.press('1'); + await inputAmount.sendKeys('1'); // Continue to next screen await driver.clickElement({ text: 'Continue', tag: 'button' }); From 1c2755c274e209c6e943a1b4e92fd4262b19c996 Mon Sep 17 00:00:00 2001 From: jvbriones <1674192+jvbriones@users.noreply.github.com> Date: Tue, 10 Dec 2024 16:54:40 +0100 Subject: [PATCH 036/111] chore: update bug template to include feature branches (#28878) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Github bug template updated to include feature branches as a development stage [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28878?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .github/ISSUE_TEMPLATE/bug-report.yml | 3 ++- .github/guidelines/LABELING_GUIDELINES.md | 1 + .../scripts/check-template-and-add-labels.ts | 20 ++++++++++++++----- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 2b72c66524bd..a914f61ef82b 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -57,7 +57,8 @@ body: - In production (default) - In beta - During release testing - - On the development branch + - On main branch + - On a feature branch validations: required: true - type: input diff --git a/.github/guidelines/LABELING_GUIDELINES.md b/.github/guidelines/LABELING_GUIDELINES.md index ea37c2e5f03d..86affe59b646 100644 --- a/.github/guidelines/LABELING_GUIDELINES.md +++ b/.github/guidelines/LABELING_GUIDELINES.md @@ -15,6 +15,7 @@ It's essential to ensure that PRs have the appropriate labels before they are co ### Optional labels: - **regression-main**: This label can manually be added to a bug report issue at the time of its creation if the bug is present on the development branch, i.e., `main`, but is not yet released in production. +- **feature-branch-bug**: This label can manually be added to a bug report issue at the time of its creation if the bug is present on a feature branch, i.e., before merging to `main`. - **needs-qa**: If the PR includes a new features, complex testing steps, or large refactors, this label must be added to indicated PR requires a full manual QA prior being merged and added to a release. ### Labels prohibited when PR needs to be merged: diff --git a/.github/scripts/check-template-and-add-labels.ts b/.github/scripts/check-template-and-add-labels.ts index 418174df2a90..25cce0998fa7 100644 --- a/.github/scripts/check-template-and-add-labels.ts +++ b/.github/scripts/check-template-and-add-labels.ts @@ -22,7 +22,8 @@ import { TemplateType, templates } from './shared/template'; import { retrievePullRequest } from './shared/pull-request'; enum RegressionStage { - Development, + DevelopmentFeature, + DevelopmentMain, Testing, Beta, Production @@ -217,8 +218,10 @@ function extractRegressionStageFromBugReportIssueBody( const extractedAnswer = match ? match[1].trim() : undefined; switch (extractedAnswer) { - case 'On the development branch': - return RegressionStage.Development; + case 'On a feature branch': + return RegressionStage.DevelopmentFeature; + case 'On main branch': + return RegressionStage.DevelopmentMain; case 'During release testing': return RegressionStage.Testing; case 'In beta': @@ -332,11 +335,18 @@ async function userBelongsToMetaMaskOrg( // This function crafts appropriate label, corresponding to regression stage and release version. function craftRegressionLabel(regressionStage: RegressionStage | undefined, releaseVersion: string | undefined): Label { switch (regressionStage) { - case RegressionStage.Development: + case RegressionStage.DevelopmentFeature: + return { + name: `feature-branch-bug`, + color: '5319E7', // violet + description: `bug that was found on a feature branch, but not yet merged in main branch`, + }; + + case RegressionStage.DevelopmentMain: return { name: `regression-main`, color: '5319E7', // violet - description: `Regression bug that was found on development branch, but not yet present in production`, + description: `Regression bug that was found on main branch, but not yet present in production`, }; case RegressionStage.Testing: From ac4bdeae45cd7904b0f3dcce5b64067aa57c06ca Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Tue, 10 Dec 2024 17:30:26 +0000 Subject: [PATCH 037/111] feat: unified confirmation navigation (#28761) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Support a single navigation queue between all types of pending confirmation, including: - Transactions - Signatures - Template Confirmations (e.g. Snap Dialogs, Smart Transaction Status Page) - Get Encryption Public Key - Decrypt - Add Token - Add NFT - Connect Specifically: - Add `useConfirmationNavigation` hook to centralise all confirmation routing. - Use routing hook in: - `ConfirmPageContainerNavigation` - `Home` - `Nav` - `syncConfirmPath` - Replace custom navigation in `ConfirmationPage` with `Nav` component. - Add `confirmationId` property to `Nav` component and remove coupling to `useCurrentConfirmation` hook. - Add `Nav` component to: - `ConfirmAddSuggestedNFT` - `ConfirmAddSuggestedToken` - `ConfirmDecryptMessage` - `ConfirmEncryptionPublicKey` - `PermissionConnectHeader` - Add associated E2E test. - Remove manual header sizing from `ConfirmationPage` component. - Fix template confirmation storybooks. - Add snap dialog storybooks. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28761?quickstart=1) ## **Related issues** ## **Manual testing steps** 1. Add unapproved transaction. 2. Add unapproved signature request 3. Install test dialog snap. 4. Create confirmation via test dialog snap. 5. Verify confirmation count is 3 and navigation functions between them. ## **Screenshots/Recordings** ### **Before** ### **After** https://github.com/user-attachments/assets/5d59032c-0626-4603-aeac-3661b365a825 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .storybook/index.css | 18 ++ .storybook/preview.js | 1 + app/_locales/de/messages.json | 4 - app/_locales/el/messages.json | 4 - app/_locales/en/messages.json | 4 - app/_locales/en_GB/messages.json | 4 - app/_locales/es/messages.json | 4 - app/_locales/es_419/messages.json | 4 - app/_locales/fr/messages.json | 4 - app/_locales/hi/messages.json | 4 - app/_locales/id/messages.json | 4 - app/_locales/ja/messages.json | 4 - app/_locales/ko/messages.json | 4 - app/_locales/ph/messages.json | 4 - app/_locales/pt/messages.json | 4 - app/_locales/pt_BR/messages.json | 4 - app/_locales/ru/messages.json | 4 - app/_locales/tl/messages.json | 4 - app/_locales/tr/messages.json | 4 - app/_locales/vi/messages.json | 4 - app/_locales/zh_CN/messages.json | 4 - app/_locales/zh_TW/messages.json | 4 - app/scripts/background.js | 36 +-- app/scripts/lib/approval/utils.test.ts | 103 ++++++ app/scripts/lib/approval/utils.ts | 56 ++++ app/scripts/metamask-controller.js | 25 +- test/e2e/page-objects/pages/test-snaps.ts | 50 +++ .../tests/confirmations/navigation.spec.ts | 50 ++- .../permission-connect-header.js | 99 +++--- .../permission-connect-header.test.js | 5 + .../confirm-add-suggested-nft.js | 3 + .../confirm-add-suggested-token.js | 3 + .../confirm-decrypt-message.component.js | 32 +- .../confirm-decrypt-message.component.test.js | 10 +- .../confirm-decrypt-message.scss | 1 + ...confirm-encryption-public-key.component.js | 26 +- ...confirm-encryption-public-key.container.js | 10 +- ...irm-page-container-navigation.component.js | 77 ++--- .../nav/__snapshots__/nav.test.tsx.snap | 4 +- .../components/confirm/nav/index.tsx | 2 +- .../components/confirm/nav/nav.stories.tsx | 116 +++---- .../components/confirm/nav/nav.test.tsx | 11 +- .../components/confirm/nav/nav.tsx | 93 ++---- .../signature-request-original.test.js.snap | 4 +- .../signature-request-siwe.test.js.snap | 4 +- .../signature-request-siwe.test.js | 4 + .../signature-request.test.js.snap | 8 +- .../confirm-send-ether.test.js.snap | 8 +- .../__snapshots__/index.test.js.snap | 4 +- .../confirm-transaction-base.test.js.snap | 4 +- ui/pages/confirmations/confirm/confirm.tsx | 4 +- .../confirmation/confirmation.js | 292 ++++++++---------- .../stories/snap-dialog.stories.tsx | 118 +++++++ .../confirmation/stories/util.js | 10 +- .../add-ethereum-chain.test.js.snap | 2 +- .../create-named-snap-account.test.js.snap | 57 +++- .../create-snap-account.test.js.snap | 2 +- .../__snapshots__/error.test.js.snap | 2 +- .../remove-snap-account.test.js.snap | 2 +- .../snap-account-redirect.test.js.snap | 2 +- .../__snapshots__/success.test.js.snap | 2 +- .../switch-ethereum-chain.test.js.snap | 4 +- .../hooks/syncConfirmPath.test.ts | 18 +- .../confirmations/hooks/syncConfirmPath.ts | 19 +- .../hooks/useConfirmationNavigation.test.ts | 228 ++++++++++++++ .../hooks/useConfirmationNavigation.ts | 146 +++++++++ .../token-allowance.test.js.snap | 4 +- ui/pages/home/home.component.js | 50 +-- ui/pages/home/home.container.js | 34 +- .../permissions-connect.component.js | 1 + ui/selectors/approvals.ts | 2 +- ui/selectors/selectors.js | 2 +- ui/store/actions.ts | 12 + 73 files changed, 1301 insertions(+), 659 deletions(-) create mode 100644 .storybook/index.css create mode 100644 app/scripts/lib/approval/utils.test.ts create mode 100644 app/scripts/lib/approval/utils.ts create mode 100644 test/e2e/page-objects/pages/test-snaps.ts create mode 100644 ui/pages/confirmations/confirmation/stories/snap-dialog.stories.tsx create mode 100644 ui/pages/confirmations/hooks/useConfirmationNavigation.test.ts create mode 100644 ui/pages/confirmations/hooks/useConfirmationNavigation.ts diff --git a/.storybook/index.css b/.storybook/index.css new file mode 100644 index 000000000000..48ebae78fe46 --- /dev/null +++ b/.storybook/index.css @@ -0,0 +1,18 @@ +/* Fixes for any styles that are not compatible with Storybook */ + +.create-snap-account-page, .remove-snap-account-page, .snap-ui-renderer { + width: 100% !important; +} + +.snap-ui-renderer__footer-centered { + position: initial !important; + margin-top: auto !important; +} + +.snap-ui-renderer__container { + padding-bottom: 0 !important; +} + +.snap-ui-renderer__panel { + overflow-y: auto !important; +} diff --git a/.storybook/preview.js b/.storybook/preview.js index 525c364f2072..273afa2468b0 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -21,6 +21,7 @@ import { metamaskStorybookTheme } from './metamask-storybook-theme'; import { DocsContainer } from '@storybook/addon-docs'; import { themes } from '@storybook/theming'; import { AlertMetricsProvider } from '../ui/components/app/alert-system/contexts/alertMetricsContext'; +import './index.css'; // eslint-disable-next-line /* @ts-expect-error: Avoids error from window property not existing */ diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 416fc2454fee..6d0878b57d5c 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Laut unseren Aufzeichnungen stimmt dieser Netzwerkname nicht mit dieser Chain-ID überein." }, - "xOfYPending": { - "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" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 90209c25f6e9..58045c5b0578 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Σύμφωνα με τα αρχεία μας, το όνομα του δικτύου ενδέχεται να μην αντιστοιχεί με αυτό το αναγνωριστικό αλυσίδας." }, - "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": "Ναι" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index f6f03b616087..a23df7a26395 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -6782,10 +6782,6 @@ "wrongNetworkName": { "message": "According to our records, the network name may not correctly match this chain ID." }, - "xOfYPending": { - "message": "$1 of $2 pending", - "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": "Yes" }, diff --git a/app/_locales/en_GB/messages.json b/app/_locales/en_GB/messages.json index 92ad7c646a36..2addf34f3c26 100644 --- a/app/_locales/en_GB/messages.json +++ b/app/_locales/en_GB/messages.json @@ -6310,10 +6310,6 @@ "wrongNetworkName": { "message": "According to our records, the network name may not correctly match this chain ID." }, - "xOfYPending": { - "message": "$1 of $2 pending", - "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": "Yes" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 066e4e40b841..f5bec514637e 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Según nuestros registros, es posible que el nombre de la red no coincida correctamente con este ID de cadena." }, - "xOfYPending": { - "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í" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index 511ee6cbef71..8006ca4405be 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -2375,10 +2375,6 @@ "whatsThis": { "message": "¿Qué es esto?" }, - "xOfYPending": { - "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" - }, "youNeedToAllowCameraAccess": { "message": "Necesita permitir el acceso a la cámara para usar esta función." }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index a3c20374639f..4d5e59b25c52 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Selon nos informations, il se peut que le nom du réseau ne corresponde pas exactement à l’ID de chaîne." }, - "xOfYPending": { - "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" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index 0e108a94e585..2d4bcc52b891 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "हमारे रिकॉर्ड के अनुसार, नेटवर्क का नाम इस चेन ID से ठीक से मेल नहीं खा सकता है।" }, - "xOfYPending": { - "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": "हां" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 261d57c9ed10..9135a2e56bcf 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Menurut catatan kami, nama jaringan mungkin tidak cocok dengan ID chain ini." }, - "xOfYPending": { - "message": "$1 dari $2 berstatus menunggu", - "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" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 11b804eac0f9..8404c4eb3af4 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "弊社の記録によると、ネットワーク名がこのチェーンIDと正しく一致していない可能性があります。" }, - "xOfYPending": { - "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": "はい" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 7a8fad19debb..cbd48592c7d0 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "기록에 따르면 네트워크 이름이 이 체인 ID와 일치하지 않습니다." }, - "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": "예" }, diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index 3c08d76cb186..3d40dbfefd77 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -1591,10 +1591,6 @@ "whatsThis": { "message": "Ano ito?" }, - "xOfYPending": { - "message": "$1 sa $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" - }, "youNeedToAllowCameraAccess": { "message": "Kailangan mong payagan ang pag-access sa camera para magamit ang feature na ito." }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index c6d61aa82191..3a01b378c686 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "De acordo com os nossos registros, o nome da rede pode não corresponder a esta ID de cadeia." }, - "xOfYPending": { - "message": "$1 de $2 pendente(s)", - "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" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index ebf2af88c186..0bc1005ad674 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -2375,10 +2375,6 @@ "whatsThis": { "message": "O que é isso?" }, - "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" - }, "youNeedToAllowCameraAccess": { "message": "Você precisa permitir o acesso à câmera para usar esse recurso." }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 86d2ee689f56..385670721c1f 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Согласно нашим записям, имя сети может не соответствовать этому ID блокчейна." }, - "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": "Да" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 8db1d4af4f7f..a13c9c6d3006 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Ayon sa aming mga talaan, ang pangalan ng network ay maaaring hindi tumugma nang tama sa ID ng chain na ito." }, - "xOfYPending": { - "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" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 20319a113bec..8f761e554caa 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Kayıtlarımıza göre ağ adı bu zincir kimliği ile doğru şekilde eşleşmiyor olabilir." }, - "xOfYPending": { - "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" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 9221bcbb0ad8..883f08f49a7e 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "Theo hồ sơ của chúng tôi, tên mạng có thể không khớp chính xác với ID chuỗi này." }, - "xOfYPending": { - "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ó" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index ba4e23972f38..fb7ed008d6f6 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -6598,10 +6598,6 @@ "wrongNetworkName": { "message": "根据我们的记录,该网络名称可能与此链 ID 不匹配。" }, - "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": "是" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index 29953f67c941..ed1793427a90 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -1375,10 +1375,6 @@ "whatsThis": { "message": "這是什麼?" }, - "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" - }, "youNeedToAllowCameraAccess": { "message": "需要准許存取攝影鏡頭才能啟用此功能" }, diff --git a/app/scripts/background.js b/app/scripts/background.js index 1b037f09328b..e9aaf2cab20b 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -15,11 +15,7 @@ import log from 'loglevel'; import browser from 'webextension-polyfill'; import { storeAsStream } from '@metamask/obs-store'; import { isObject } from '@metamask/utils'; -import { ApprovalType } from '@metamask/controller-utils'; import PortStream from 'extension-port-stream'; - -import { providerErrors } from '@metamask/rpc-errors'; -import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods'; import { NotificationServicesController } from '@metamask/notification-services-controller'; import { @@ -29,9 +25,6 @@ import { EXTENSION_MESSAGES, PLATFORM_FIREFOX, MESSAGE_TYPE, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES, - ///: END:ONLY_INCLUDE_IF } from '../../shared/constants/app'; import { REJECT_NOTIFICATION_CLOSE, @@ -1201,34 +1194,7 @@ export function setupController( REJECT_NOTIFICATION_CLOSE, ); - // Finally, resolve snap dialog approvals on Flask and reject all the others managed by the ApprovalController. - Object.values(controller.approvalController.state.pendingApprovals).forEach( - ({ id, type }) => { - switch (type) { - case ApprovalType.SnapDialogAlert: - case ApprovalType.SnapDialogPrompt: - case DIALOG_APPROVAL_TYPES.default: - controller.approvalController.accept(id, null); - break; - case ApprovalType.SnapDialogConfirmation: - controller.approvalController.accept(id, false); - break; - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - case SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.confirmAccountCreation: - case SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.confirmAccountRemoval: - case SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showSnapAccountRedirect: - controller.approvalController.accept(id, false); - break; - ///: END:ONLY_INCLUDE_IF - default: - controller.approvalController.reject( - id, - providerErrors.userRejectedRequest(), - ); - break; - } - }, - ); + controller.rejectAllPendingApprovals(); } // Updates the snaps registry and check for newly blocked snaps to block if the user has at least one snap installed that isn't preinstalled. diff --git a/app/scripts/lib/approval/utils.test.ts b/app/scripts/lib/approval/utils.test.ts new file mode 100644 index 000000000000..14c472df89ba --- /dev/null +++ b/app/scripts/lib/approval/utils.test.ts @@ -0,0 +1,103 @@ +import { + ApprovalController, + ApprovalRequest, +} from '@metamask/approval-controller'; +import { Json } from '@metamask/utils'; +import { ApprovalType } from '@metamask/controller-utils'; +import { providerErrors } from '@metamask/rpc-errors'; +import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods'; +import { SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES } from '../../../../shared/constants/app'; +import { rejectAllApprovals } from './utils'; + +const ID_MOCK = '123'; +const ID_MOCK_2 = '456'; +const INTERFACE_ID_MOCK = '789'; + +function createApprovalControllerMock( + pendingApprovals: Partial>>[], +) { + return { + state: { + pendingApprovals, + }, + accept: jest.fn(), + reject: jest.fn(), + } as unknown as jest.Mocked; +} + +describe('Approval Utils', () => { + describe('rejectAllApprovals', () => { + it('rejects approval requests with rejected error', () => { + const approvalController = createApprovalControllerMock([ + { id: ID_MOCK, type: ApprovalType.Transaction }, + { id: ID_MOCK_2, type: ApprovalType.EthSignTypedData }, + ]); + + rejectAllApprovals({ + approvalController, + }); + + expect(approvalController.reject).toHaveBeenCalledTimes(2); + expect(approvalController.reject).toHaveBeenCalledWith( + ID_MOCK, + providerErrors.userRejectedRequest(), + ); + expect(approvalController.reject).toHaveBeenCalledWith( + ID_MOCK_2, + providerErrors.userRejectedRequest(), + ); + }); + + // @ts-expect-error This function is missing from the Mocha type definitions + it.each([ + ApprovalType.SnapDialogAlert, + ApprovalType.SnapDialogPrompt, + DIALOG_APPROVAL_TYPES.default, + ])('accepts pending approval if type is %s', (type: string) => { + const approvalController = createApprovalControllerMock([ + { id: ID_MOCK, type }, + ]); + + rejectAllApprovals({ approvalController }); + + expect(approvalController.accept).toHaveBeenCalledTimes(1); + expect(approvalController.accept).toHaveBeenCalledWith(ID_MOCK, null); + }); + + // @ts-expect-error This function is missing from the Mocha type definitions + it.each([ + ApprovalType.SnapDialogConfirmation, + SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.confirmAccountCreation, + SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.confirmAccountRemoval, + SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showSnapAccountRedirect, + ])('accepts pending approval if type is %s', (type: string) => { + const approvalController = createApprovalControllerMock([ + { id: ID_MOCK, type }, + ]); + + rejectAllApprovals({ approvalController }); + + expect(approvalController.accept).toHaveBeenCalledTimes(1); + expect(approvalController.accept).toHaveBeenCalledWith(ID_MOCK, false); + }); + + // @ts-expect-error This function is missing from the Mocha type definitions + it.each([ + ApprovalType.SnapDialogAlert, + ApprovalType.SnapDialogPrompt, + DIALOG_APPROVAL_TYPES.default, + ApprovalType.SnapDialogConfirmation, + ])('deletes interface if type is %s', (type: string) => { + const approvalController = createApprovalControllerMock([ + { id: ID_MOCK, type, requestData: { id: INTERFACE_ID_MOCK } }, + ]); + + const deleteInterface = jest.fn(); + + rejectAllApprovals({ approvalController, deleteInterface }); + + expect(deleteInterface).toHaveBeenCalledTimes(1); + expect(deleteInterface).toHaveBeenCalledWith(INTERFACE_ID_MOCK); + }); + }); +}); diff --git a/app/scripts/lib/approval/utils.ts b/app/scripts/lib/approval/utils.ts new file mode 100644 index 000000000000..5bd44b5db079 --- /dev/null +++ b/app/scripts/lib/approval/utils.ts @@ -0,0 +1,56 @@ +import { ApprovalController } from '@metamask/approval-controller'; +import { ApprovalType } from '@metamask/controller-utils'; +import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods'; +import { providerErrors } from '@metamask/rpc-errors'; +import { createProjectLogger } from '@metamask/utils'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES } from '../../../../shared/constants/app'; +///: END:ONLY_INCLUDE_IF + +const log = createProjectLogger('approval-utils'); + +export function rejectAllApprovals({ + approvalController, + deleteInterface, +}: { + approvalController: ApprovalController; + deleteInterface?: (id: string) => void; +}) { + const approvalRequestsById = approvalController.state.pendingApprovals; + const approvalRequests = Object.values(approvalRequestsById); + + for (const approvalRequest of approvalRequests) { + const { id, type } = approvalRequest; + const interfaceId = approvalRequest.requestData?.id as string; + + switch (type) { + case ApprovalType.SnapDialogAlert: + case ApprovalType.SnapDialogPrompt: + case DIALOG_APPROVAL_TYPES.default: + log('Rejecting snap dialog', { id, interfaceId }); + approvalController.accept(id, null); + deleteInterface?.(interfaceId); + break; + + case ApprovalType.SnapDialogConfirmation: + log('Rejecting snap confirmation', { id, interfaceId }); + approvalController.accept(id, false); + deleteInterface?.(interfaceId); + break; + + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + case SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.confirmAccountCreation: + case SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.confirmAccountRemoval: + case SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showSnapAccountRedirect: + log('Rejecting snap account confirmation', { id }); + approvalController.accept(id, false); + break; + ///: END:ONLY_INCLUDE_IF + + default: + log('Rejecting pending approval', { id }); + approvalController.reject(id, providerErrors.userRejectedRequest()); + break; + } + } +} diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index cc1bfe8b6809..c0fbd99a13e6 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -380,6 +380,7 @@ import { PatchStore } from './lib/PatchStore'; import { sanitizeUIState } from './lib/state-utils'; import BridgeStatusController from './controllers/bridge-status/bridge-status-controller'; import { BRIDGE_STATUS_CONTROLLER_NAME } from './controllers/bridge-status/constants'; +import { rejectAllApprovals } from './lib/approval/utils'; const { TRIGGER_TYPES } = NotificationServicesController.Constants; export const METAMASK_CONTROLLER_EVENTS = { @@ -3558,10 +3559,6 @@ export default class MetamaskController extends EventEmitter { markNotificationPopupAsAutomaticallyClosed: () => this.notificationManager.markAsAutomaticallyClosed(), - // approval - requestUserApproval: - approvalController.addAndShowApprovalRequest.bind(approvalController), - // primary keyring management addNewAccount: this.addNewAccount.bind(this), getSeedPhrase: this.getSeedPhrase.bind(this), @@ -4185,9 +4182,12 @@ export default class MetamaskController extends EventEmitter { ), trackInsightSnapView: this.trackInsightSnapView.bind(this), - // approval controller - resolvePendingApproval: this.resolvePendingApproval, + // ApprovalController + rejectAllPendingApprovals: this.rejectAllPendingApprovals.bind(this), rejectPendingApproval: this.rejectPendingApproval, + requestUserApproval: + approvalController.addAndShowApprovalRequest.bind(approvalController), + resolvePendingApproval: this.resolvePendingApproval, // Notifications resetViewedNotifications: announcementController.resetViewed.bind( @@ -7080,6 +7080,19 @@ export default class MetamaskController extends EventEmitter { } }; + rejectAllPendingApprovals() { + const deleteInterface = (id) => + this.controllerMessenger.call( + 'SnapInterfaceController:deleteInterface', + id, + ); + + rejectAllApprovals({ + approvalController: this.approvalController, + deleteInterface, + }); + } + async _onAccountChange(newAddress) { const permittedAccountsMap = getPermittedAccountsByOrigin( this.permissionController.state, diff --git a/test/e2e/page-objects/pages/test-snaps.ts b/test/e2e/page-objects/pages/test-snaps.ts new file mode 100644 index 000000000000..327947d121bc --- /dev/null +++ b/test/e2e/page-objects/pages/test-snaps.ts @@ -0,0 +1,50 @@ +import { Driver } from '../../webdriver/driver'; +import { TEST_SNAPS_WEBSITE_URL } from '../../snaps/enums'; +import { WINDOW_TITLES } from '../../helpers'; + +export class TestSnaps { + driver: Driver; + + private readonly connectDialogsSnapButton = + '[data-testid="dialogs"] [data-testid="connect-button"]'; + + private readonly dialogsSnapConfirmationButton = '#sendConfirmationButton'; + + constructor(driver: Driver) { + this.driver = driver; + } + + async openPage() { + await this.driver.openNewPage(TEST_SNAPS_WEBSITE_URL); + await this.driver.delay(1000); + } + + async clickConnectDialogsSnapButton() { + await this.driver.clickElement(this.connectDialogsSnapButton); + } + + async clickDialogsSnapConfirmationButton() { + await this.driver.clickElement(this.dialogsSnapConfirmationButton); + } + + async completeSnapInstallConfirmation() { + await this.driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog); + + await this.driver.clickElement({ + text: 'Connect', + tag: 'button', + }); + + await this.driver.clickElement({ + text: 'Confirm', + tag: 'button', + }); + + await this.driver.clickElement({ + text: 'OK', + tag: 'button', + }); + + await this.driver.switchToWindowWithTitle(WINDOW_TITLES.TestSnaps); + } +} diff --git a/test/e2e/tests/confirmations/navigation.spec.ts b/test/e2e/tests/confirmations/navigation.spec.ts index 97985381b08b..9f26fa697068 100644 --- a/test/e2e/tests/confirmations/navigation.spec.ts +++ b/test/e2e/tests/confirmations/navigation.spec.ts @@ -8,9 +8,14 @@ import { WINDOW_TITLES, } from '../../helpers'; import { Driver } from '../../webdriver/driver'; +import { loginWithoutBalanceValidation } from '../../page-objects/flows/login.flow'; +import TestDapp from '../../page-objects/pages/test-dapp'; +import { createDappTransaction } from '../../page-objects/flows/transaction'; +import { TestSnaps } from '../../page-objects/pages/test-snaps'; +import Confirmation from '../../page-objects/pages/confirmations/redesign/confirmation'; import { withTransactionEnvelopeTypeFixtures } from './helpers'; -describe('Navigation Signature - Different signature types', function (this: Suite) { +describe('Confirmation Navigation', function (this: Suite) { it('initiates and queues multiple signatures and confirms', async function () { await withTransactionEnvelopeTypeFixtures( this.test?.fullTitle(), @@ -120,6 +125,49 @@ describe('Navigation Signature - Different signature types', function (this: Sui }, ); }); + + it('navigates between transactions, signatures, and snap dialogs', async function () { + await withTransactionEnvelopeTypeFixtures( + this.test?.fullTitle(), + TransactionEnvelopeType.feeMarket, + async ({ driver }: { driver: Driver }) => { + await loginWithoutBalanceValidation(driver); + + const testSnaps = new TestSnaps(driver); + await testSnaps.openPage(); + await testSnaps.clickConnectDialogsSnapButton(); + await testSnaps.completeSnapInstallConfirmation(); + await testSnaps.clickDialogsSnapConfirmationButton(); + + const testDapp = new TestDapp(driver); + await testDapp.openTestDappPage(); + await testDapp.clickSignTypedDatav4(); + + await createDappTransaction(driver); + await driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog); + + const confirmation = new Confirmation(driver); + await confirmation.check_pageNumbers(1, 3); + await driver.waitForSelector({ text: 'Confirmation Dialog' }); + + await confirmation.clickNextPage(); + await confirmation.check_pageNumbers(2, 3); + await driver.waitForSelector({ text: 'Signature request' }); + + await confirmation.clickNextPage(); + await confirmation.check_pageNumbers(3, 3); + await driver.waitForSelector({ text: 'Transfer request' }); + + await confirmation.clickPreviousPage(); + await confirmation.check_pageNumbers(2, 3); + await driver.waitForSelector({ text: 'Signature request' }); + + await confirmation.clickPreviousPage(); + await confirmation.check_pageNumbers(1, 3); + await driver.waitForSelector({ text: 'Confirmation Dialog' }); + }, + ); + }); }); async function verifySignTypedData(driver: Driver) { diff --git a/ui/components/app/permission-connect-header/permission-connect-header.js b/ui/components/app/permission-connect-header/permission-connect-header.js index c3f1c248b034..74ab6b06c824 100644 --- a/ui/components/app/permission-connect-header/permission-connect-header.js +++ b/ui/components/app/permission-connect-header/permission-connect-header.js @@ -19,8 +19,9 @@ import { AvatarBase, } from '../../component-library'; import { getAvatarFallbackLetter } from '../../../helpers/utils/util'; +import { Nav } from '../../../pages/confirmations/components/confirm/nav'; -const PermissionConnectHeader = ({ origin, iconUrl }) => { +const PermissionConnectHeader = ({ requestId, origin, iconUrl }) => { const transformOriginToTitle = (rawOrigin) => { try { const url = new URL(rawOrigin); @@ -33,61 +34,65 @@ const PermissionConnectHeader = ({ origin, iconUrl }) => { const title = transformOriginToTitle(origin); return ( - - - {iconUrl ? ( - - ) : ( - - {getAvatarFallbackLetter(title)} - - )} - + <> +
+

+

+ +

+

+

+ +

+
+ +
+ + +`; + +exports[`TokenListItem should display warning scam modal 1`] = ` +
+
+
+
+
+ S +
+
+ ? +
+
+
+
+
+

+ +

+ +
+
+

+

+ 11.9751 ETH + + SCAM_TOKEN +

+
+
+
+
+
+`; + +exports[`TokenListItem should display warning scam modal fallback when safechains fails to resolve correctly 1`] = ` +
+
+
+
+
+ S +
+
+
+ ? +
+
+
+
+
+

+ +

+ +
+

-

- -

+

+ 11.9751 ETH + + SCAM_TOKEN +

+
+
+
+
+`; + +exports[`TokenListItem should render correctly 1`] = ` + `; + +exports[`TokenListItem should render crypto balance 1`] = ` +
+
+
+
+
+ ? +
+
+
+ ? +
+
+
+
+
+

+

+

+
+

+

+ 11.9751 ETH + +

+
+
+
+
+
+`; + +exports[`TokenListItem should render crypto balance with warning scam 1`] = ` +
+
+
+
+
+ ? +
+
+
+ ? +
+
+
+
+
+

+

+

+
+

+

+ 11.9751 ETH + +

+
+
+
+
+
+`; diff --git a/ui/components/multichain/token-list-item/token-list-item.stories.js b/ui/components/multichain/token-list-item/token-list-item.stories.js index bd5d7849bbec..d78535fd23e2 100644 --- a/ui/components/multichain/token-list-item/token-list-item.stories.js +++ b/ui/components/multichain/token-list-item/token-list-item.stories.js @@ -93,3 +93,33 @@ export const NoImagesStory = Template.bind({}); NoImagesStory.args = { tokenImage: '', }; + +export const CrossChainTokenStory = (args) => ( +
+ +
+); +CrossChainTokenStory.decorators = [ + (Story) => ( + + + + ), +]; + +CrossChainTokenStory.args = { + title: 'USDC', + secondary: '$94556756776.80 USD', + primary: '34449765768526.00', + isTitleNetworkName: true, + chainId: CHAIN_IDS.LINEA_SEPOLIA, +}; diff --git a/ui/components/multichain/token-list-item/token-list-item.test.tsx b/ui/components/multichain/token-list-item/token-list-item.test.tsx index 6f08f276a302..e32397dfa1a8 100644 --- a/ui/components/multichain/token-list-item/token-list-item.test.tsx +++ b/ui/components/multichain/token-list-item/token-list-item.test.tsx @@ -124,11 +124,12 @@ describe('TokenListItem', () => { title: '', chainId: '0x1', }; - const { getByText } = renderWithProvider( + const { getByText, container } = renderWithProvider( , store, ); expect(getByText('11.9751 ETH')).toBeInTheDocument(); + expect(container).toMatchSnapshot(); }); it('should display warning scam modal', () => { @@ -152,10 +153,11 @@ describe('TokenListItem', () => { tokenSymbol: 'SCAM_TOKEN', chainId: '0x1', }; - const { getByTestId, getByText } = renderWithProvider( + const { getByTestId, getByText, container } = renderWithProvider( , store, ); + expect(container).toMatchSnapshot(); const warningScamModal = getByTestId('scam-warning'); fireEvent.click(warningScamModal); @@ -180,11 +182,12 @@ describe('TokenListItem', () => { tokenSymbol: 'SCAM_TOKEN', chainId: '0x1', }; - const { getByTestId, getByText } = renderWithProvider( + const { getByTestId, getByText, container } = renderWithProvider( , store, ); + expect(container).toMatchSnapshot(); const warningScamModal = getByTestId('scam-warning'); fireEvent.click(warningScamModal); @@ -209,11 +212,12 @@ describe('TokenListItem', () => { chainId: '0x1', }; - const { getByText } = renderWithProvider( + const { getByText, container } = renderWithProvider( , store, ); expect(getByText('11.9751 ETH')).toBeInTheDocument(); + expect(container).toMatchSnapshot(); }); it('handles click action and fires onClick', () => { @@ -232,7 +236,7 @@ describe('TokenListItem', () => { it('handles clicking staking opens tab', async () => { const store = configureMockStore()(state); - const { queryByTestId } = renderWithProvider( + const { queryByTestId, container } = renderWithProvider( , store, ); @@ -243,6 +247,7 @@ describe('TokenListItem', () => { expect(stakeButton).toBeInTheDocument(); expect(stakeButton).not.toBeDisabled(); + expect(container).toMatchSnapshot(); stakeButton && fireEvent.click(stakeButton); expect(openTabSpy).toHaveBeenCalledTimes(1); diff --git a/ui/components/multichain/token-list-item/token-list-item.tsx b/ui/components/multichain/token-list-item/token-list-item.tsx index 5ee4c19c8c52..76152770dbc9 100644 --- a/ui/components/multichain/token-list-item/token-list-item.tsx +++ b/ui/components/multichain/token-list-item/token-list-item.tsx @@ -5,7 +5,6 @@ import classnames from 'classnames'; import { getNativeTokenAddress } from '@metamask/assets-controllers'; import { Hex } from '@metamask/utils'; import { - AlignItems, BackgroundColor, BlockSize, Display, @@ -69,6 +68,7 @@ import { SafeChain, useSafeChains, } from '../../../pages/settings/networks-tab/networks-form/use-safe-chains'; +import { NETWORK_TO_SHORT_NETWORK_NAME_MAP } from '../../../../shared/constants/bridge'; import { PercentageChange } from './price/percentage-change/percentage-change'; type TokenListItemProps = { @@ -82,6 +82,8 @@ type TokenListItemProps = { tooltipText?: string; isNativeCurrency?: boolean; isStakeable?: boolean; + isTitleNetworkName?: boolean; + isTitleHidden?: boolean; tokenChainImage?: string; chainId: string; address?: string | null; @@ -104,6 +106,8 @@ export const TokenListItem = ({ isPrimaryTokenSymbolHidden = false, isNativeCurrency = false, isStakeable = false, + isTitleNetworkName = false, + isTitleHidden = false, address = null, showPercentage = false, privacyMode = false, @@ -141,6 +145,14 @@ export const TokenListItem = ({ const history = useHistory(); const getTokenTitle = () => { + if (isTitleNetworkName) { + return NETWORK_TO_SHORT_NETWORK_NAME_MAP[ + chainId as keyof typeof NETWORK_TO_SHORT_NETWORK_NAME_MAP + ]; + } + if (isTitleHidden) { + return undefined; + } switch (title) { case CURRENCY_SYMBOLS.ETH: return t('networkNameEthereum'); @@ -160,9 +172,8 @@ export const TokenListItem = ({ : null; const tokenTitle = getTokenTitle(); - const tokenMainTitleToDisplay = shouldShowPercentage - ? tokenTitle - : tokenSymbol; + const tokenMainTitleToDisplay = + shouldShowPercentage && !isTitleNetworkName ? tokenTitle : tokenSymbol; const stakeableTitle = ( - - {title?.length > 12 ? ( - - - {isStakeable ? ( - <> - {tokenMainTitleToDisplay} {stakeableTitle} - - ) : ( - tokenMainTitleToDisplay - )} - - - ) : ( + {title?.length > 12 ? ( + - {isStakeable ? ( - - {tokenMainTitleToDisplay} - {stakeableTitle} - - ) : ( - tokenMainTitleToDisplay - )} + {tokenMainTitleToDisplay} + {isStakeable && stakeableTitle} - )} - - {shouldShowPercentage ? ( - - ) : ( - - {tokenTitle} - - )} - - - {showScamWarning ? ( - + ) : ( + - , - ) => { - e.preventDefault(); - e.stopPropagation(); - setShowScamWarningModal(true); - }} - color={IconColor.errorDefault} - size={ButtonIconSize.Md} - backgroundColor={BackgroundColor.transparent} - data-testid="scam-warning" - ariaLabel={''} - /> + {tokenMainTitleToDisplay} + {isStakeable && stakeableTitle} + + )} - - {primary} {isPrimaryTokenSymbolHidden ? '' : tokenSymbol} - - + {showScamWarning ? ( + , + ) => { + e.preventDefault(); + e.stopPropagation(); + setShowScamWarningModal(true); + }} + color={IconColor.errorDefault} + size={ButtonIconSize.Md} + backgroundColor={BackgroundColor.transparent} + data-testid="scam-warning" + ariaLabel={''} + /> ) : ( - - - {secondary} - - - {primary} {isPrimaryTokenSymbolHidden ? '' : tokenSymbol} - - + {secondary} + )} + + > + {shouldShowPercentage ? ( + + ) : ( + + {tokenTitle} + + )} + + {showScamWarning ? ( + + {primary} {isPrimaryTokenSymbolHidden ? '' : tokenSymbol} + + ) : ( + + {primary} {isPrimaryTokenSymbolHidden ? '' : tokenSymbol} + + )} + {isEvm && showScamWarningModal ? ( diff --git a/ui/ducks/bridge/utils.ts b/ui/ducks/bridge/utils.ts index 1ddd7871d4df..638ba92e9ae8 100644 --- a/ui/ducks/bridge/utils.ts +++ b/ui/ducks/bridge/utils.ts @@ -2,6 +2,10 @@ import { Hex } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; import { getAddress } from 'ethers/lib/utils'; import { ContractMarketData } from '@metamask/assets-controllers'; +import { + AddNetworkFields, + NetworkConfiguration, +} from '@metamask/network-controller'; import { decGWEIToHexWEI } from '../../../shared/modules/conversion.utils'; import { Numeric } from '../../../shared/modules/Numeric'; import { TxData } from '../../pages/bridge/types'; @@ -133,3 +137,8 @@ export const exchangeRatesFromNativeAndCurrencyRates = ( : null, }; }; + +export const isNetworkAdded = ( + v: NetworkConfiguration | AddNetworkFields | undefined, +): v is NetworkConfiguration => + !v || 'networkClientId' in v.rpcEndpoints[v.defaultRpcEndpointIndex]; diff --git a/ui/hooks/useMultichainBalances.test.ts b/ui/hooks/useMultichainBalances.test.ts new file mode 100644 index 000000000000..7bcdc74e8418 --- /dev/null +++ b/ui/hooks/useMultichainBalances.test.ts @@ -0,0 +1,121 @@ +import { createBridgeMockStore } from '../../test/jest/mock-store'; +import { renderHookWithProvider } from '../../test/lib/render-helpers'; +import { useMultichainBalances } from './useMultichainBalances'; + +describe('useMultichainBalances', () => { + it('should return the native token of each imported network when no token balances are cached', () => { + const mockStore = createBridgeMockStore({ + metamaskStateOverrides: { + allTokens: {}, + }, + }); + const { result } = renderHookWithProvider( + () => useMultichainBalances(), + mockStore, + ); + + expect(result.current.assetsWithBalance).toHaveLength(2); + expect(result.current.assetsWithBalance).toStrictEqual( + expect.objectContaining([ + { + balance: '0.000000000000000014', + chainId: '0xe708', + decimals: 18, + image: './images/eth_logo.svg', + string: '0.000000000000000014', + symbol: 'ETH', + tokenFiatAmount: 3.53395e-14, + type: 'NATIVE', + }, + { + balance: '0.00000000000000001', + chainId: '0x1', + decimals: 18, + image: './images/eth_logo.svg', + string: '0.00000000000000001', + symbol: 'ETH', + tokenFiatAmount: 2.5242500000000003e-14, + type: 'NATIVE', + }, + ]), + ); + }); + + it('should return a list of assets with balances', () => { + const mockStore = createBridgeMockStore(); + const { result } = renderHookWithProvider( + () => useMultichainBalances(), + mockStore, + ); + + expect(result.current.assetsWithBalance).toHaveLength(5); + expect(result.current.assetsWithBalance).toStrictEqual( + expect.objectContaining([ + { + address: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', + balance: '0.00184', + chainId: '0x1', + decimals: 6, + image: undefined, + isNative: false, + string: '0.00184', + tokenFiatAmount: 0.004232, + type: 'TOKEN', + }, + { + balance: '0.000000000000000014', + chainId: '0xe708', + decimals: 18, + image: './images/eth_logo.svg', + string: '0.000000000000000014', + symbol: 'ETH', + tokenFiatAmount: 3.53395e-14, + type: 'NATIVE', + }, + { + balance: '0.00000000000000001', + chainId: '0x1', + decimals: 18, + image: './images/eth_logo.svg', + string: '0.00000000000000001', + symbol: 'ETH', + tokenFiatAmount: 2.5242500000000003e-14, + type: 'NATIVE', + }, + { + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + balance: '1', + chainId: '0x1', + image: undefined, + isNative: false, + string: '1', + tokenFiatAmount: null, + type: 'TOKEN', + }, + { + address: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', + balance: '0', + chainId: '0xe708', + image: undefined, + isNative: false, + string: '0', + tokenFiatAmount: null, + type: 'TOKEN', + }, + ]), + ); + }); + + it('should return a mapping of chainId to balance', () => { + const mockStore = createBridgeMockStore(); + const { result } = renderHookWithProvider( + () => useMultichainBalances(), + mockStore, + ); + + expect(result.current.balanceByChainId).toStrictEqual({ + '0x1': 0.0042320000000252425, + '0xe708': 3.53395e-14, + }); + }); +}); diff --git a/ui/hooks/useMultichainBalances.ts b/ui/hooks/useMultichainBalances.ts new file mode 100644 index 000000000000..b953043f7851 --- /dev/null +++ b/ui/hooks/useMultichainBalances.ts @@ -0,0 +1,154 @@ +import { useMemo } from 'react'; +import { useSelector } from 'react-redux'; +import { Hex } from '@metamask/utils'; +import { + getCurrencyRates, + getMarketData, + getSelectedAccount, + getSelectedAccountNativeTokenCachedBalanceByChainId, + getSelectedAccountTokensAcrossChains, + selectERC20TokensByChain, +} from '../selectors'; +import { + ChainAddressMarketData, + Token, +} from '../components/app/assets/token-list/token-list'; +import { calculateTokenFiatAmount } from '../components/app/assets/util/calculateTokenFiatAmount'; +import { calculateTokenBalance } from '../components/app/assets/util/calculateTokenBalance'; +import { + CHAIN_ID_TO_CURRENCY_SYMBOL_MAP, + CHAIN_ID_TOKEN_IMAGE_MAP, + TEST_CHAINS, +} from '../../shared/constants/network'; +import { + AssetWithDisplayData, + ERC20Asset, + NativeAsset, +} from '../components/multichain/asset-picker-amount/asset-picker-modal/types'; +import { AssetType } from '../../shared/constants/transaction'; +import { useTokenBalances } from './useTokenBalances'; + +const useFilteredAccountTokens = () => { + const selectedAccountTokensChains: Record = useSelector( + getSelectedAccountTokensAcrossChains, + ) as Record; + + const filteredAccountTokensChains = useMemo(() => { + return Object.fromEntries( + Object.entries(selectedAccountTokensChains).filter( + ([chainId]) => !(TEST_CHAINS as string[]).includes(chainId), + ), + ); + }, [selectedAccountTokensChains, TEST_CHAINS]); + + return filteredAccountTokensChains; +}; + +// This hook is used to get the balances of all tokens across all chains +// native balances are included, with fields isNative=true and address='' +export const useMultichainBalances = () => { + const selectedAccountTokensChains = useFilteredAccountTokens(); + const selectedAccount = useSelector(getSelectedAccount); + + const { tokenBalances } = useTokenBalances(); + const selectedAccountTokenBalancesAcrossChains = + tokenBalances[selectedAccount.address]; + + const marketData: ChainAddressMarketData = useSelector( + getMarketData, + ) as ChainAddressMarketData; + + const currencyRates = useSelector(getCurrencyRates); + const nativeBalances: Record = useSelector( + getSelectedAccountNativeTokenCachedBalanceByChainId, + ) as Record; + + const erc20TokensByChain = useSelector(selectERC20TokensByChain); + + const assetsWithBalance = useMemo(() => { + const tokensWithBalance: AssetWithDisplayData[] = + []; + + Object.entries(selectedAccountTokensChains).forEach( + ([stringChainKey, tokens]) => { + const chainId = stringChainKey as Hex; + tokens.forEach((token: Token) => { + const { isNative, address, decimals } = token; + const balance = + calculateTokenBalance({ + isNative, + chainId, + address, + decimals, + nativeBalances, + selectedAccountTokenBalancesAcrossChains, + }) || ''; + + const tokenFiatAmount = calculateTokenFiatAmount({ + token, + chainId, + balance, + marketData, + currencyRates, + }); + + // Append processed token with balance and fiat amount + const sharedFields = { + balance, + tokenFiatAmount, + chainId, + string: String(balance), + }; + if (token.isNative) { + tokensWithBalance.push({ + ...sharedFields, + type: AssetType.native, + image: + CHAIN_ID_TOKEN_IMAGE_MAP[ + chainId as keyof typeof CHAIN_ID_TOKEN_IMAGE_MAP + ], + symbol: + CHAIN_ID_TO_CURRENCY_SYMBOL_MAP[ + chainId as keyof typeof CHAIN_ID_TO_CURRENCY_SYMBOL_MAP + ], + decimals: token.decimals, + }); + } else { + tokensWithBalance.push({ + ...token, + ...sharedFields, + image: + token.image || + erc20TokensByChain?.[chainId]?.data?.[ + token.address.toLowerCase() + ]?.iconUrl, + address: token.address, + type: AssetType.token, + }); + } + }); + }, + ); + + return tokensWithBalance.sort( + (a, b) => (b.tokenFiatAmount ?? 0) - (a.tokenFiatAmount ?? 0), + ); + }, [JSON.stringify(selectedAccountTokensChains)]); + + const balanceByChainId = useMemo(() => { + return assetsWithBalance.reduce( + (acc: Record<`0x${string}`, number>, { chainId, tokenFiatAmount }) => { + if (!acc[chainId]) { + acc[chainId] = 0; + } + if (tokenFiatAmount) { + acc[chainId] += tokenFiatAmount; + } + return acc; + }, + {}, + ); + }, [assetsWithBalance]); + + return { assetsWithBalance, balanceByChainId }; +}; diff --git a/ui/hooks/useTokensWithFiltering.test.ts b/ui/hooks/useTokensWithFiltering.test.ts index f5ea05e02b8d..0a523b69bd74 100644 --- a/ui/hooks/useTokensWithFiltering.test.ts +++ b/ui/hooks/useTokensWithFiltering.test.ts @@ -61,6 +61,7 @@ describe('useTokensWithFiltering should return token list generator', () => { name: 'Ether', primaryLabel: 'ETH', rawFiat: '', + chainId: '0x1', rightPrimaryLabel: undefined, rightSecondaryLabel: '', secondaryLabel: 'Ether', @@ -74,6 +75,7 @@ describe('useTokensWithFiltering should return token list generator', () => { decimals: 18, erc20: true, erc721: false, + chainId: '0x1', iconUrl: 'https://static.cx.metamask.io/api/v1/tokenIcons/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.png', identiconAddress: null, @@ -121,6 +123,7 @@ describe('useTokensWithFiltering should return token list generator', () => { identiconAddress: null, image: './images/eth_logo.svg', name: 'Ether', + chainId: '0x1', primaryLabel: 'ETH', rawFiat: '0', rightPrimaryLabel: '0 ETH', @@ -141,6 +144,7 @@ describe('useTokensWithFiltering should return token list generator', () => { identiconAddress: null, image: 'images/contract/usdt.svg', name: 'Tether USD', + chainId: '0x1', primaryLabel: 'USDT', rawFiat: '', rightPrimaryLabel: undefined, diff --git a/ui/hooks/useTokensWithFiltering.ts b/ui/hooks/useTokensWithFiltering.ts index d729ce3c1fdc..ef155eb9ca1c 100644 --- a/ui/hooks/useTokensWithFiltering.ts +++ b/ui/hooks/useTokensWithFiltering.ts @@ -75,14 +75,20 @@ export const useTokensWithFiltering = ( ); const filteredTokenListGenerator = useCallback( - (shouldAddToken: (symbol: string, address?: string) => boolean) => { + ( + shouldAddToken: ( + symbol: string, + address?: string, + tokenChainId?: string, + ) => boolean, + ) => { const buildTokenData = ( token: SwapsTokenObject, ): | AssetWithDisplayData | AssetWithDisplayData | undefined => { - if (chainId && shouldAddToken(token.symbol, token.address)) { + if (chainId && shouldAddToken(token.symbol, token.address, chainId)) { return getRenderableTokenData( { ...token, @@ -90,6 +96,7 @@ export const useTokensWithFiltering = ( ? AssetType.native : AssetType.token, image: token.iconUrl, + chainId, }, tokenConversionRates, conversionRate, @@ -114,6 +121,7 @@ export const useTokensWithFiltering = ( numberOfDecimals: 4, toDenomination: EtherDenomination.ETH, }), + chainId, } : {}; const nativeToken = buildTokenData({ diff --git a/ui/pages/asset/components/__snapshots__/asset-page.test.tsx.snap b/ui/pages/asset/components/__snapshots__/asset-page.test.tsx.snap index d6e4c675f8e1..dc3cf4c408de 100644 --- a/ui/pages/asset/components/__snapshots__/asset-page.test.tsx.snap +++ b/ui/pages/asset/components/__snapshots__/asset-page.test.tsx.snap @@ -177,13 +177,14 @@ exports[`AssetPage should render a native asset 1`] = ` Your balance
@@ -502,13 +496,14 @@ exports[`AssetPage should render an ERC20 asset without prices 1`] = ` Your balance
@@ -1013,13 +1001,14 @@ exports[`AssetPage should render an ERC20 token with prices 1`] = ` Your balance
diff --git a/ui/pages/bridge/prepare/__snapshots__/prepare-bridge-page.test.tsx.snap b/ui/pages/bridge/prepare/__snapshots__/prepare-bridge-page.test.tsx.snap index 8c73ba3c82b2..b4873c7e1c89 100644 --- a/ui/pages/bridge/prepare/__snapshots__/prepare-bridge-page.test.tsx.snap +++ b/ui/pages/bridge/prepare/__snapshots__/prepare-bridge-page.test.tsx.snap @@ -142,11 +142,43 @@ exports[`PrepareBridgePage should render the component, with initial state 1`] = -

- Select token -

+
+
+
+ ? +
+
+
+ Ethereum Mainnet logo +
+
+
+
+
+

+

+
- $0.00 + $5,805.77
diff --git a/ui/pages/bridge/prepare/bridge-input-group.tsx b/ui/pages/bridge/prepare/bridge-input-group.tsx index 2627b9e04102..2f8ea8fda1c9 100644 --- a/ui/pages/bridge/prepare/bridge-input-group.tsx +++ b/ui/pages/bridge/prepare/bridge-input-group.tsx @@ -44,6 +44,7 @@ const generateAssetFromToken = ( image: tokenDetails.iconUrl, symbol: tokenDetails.symbol, address: tokenDetails.address, + chainId, }; } @@ -57,6 +58,7 @@ const generateAssetFromToken = ( CHAIN_ID_TO_CURRENCY_SYMBOL_MAP[ chainId as keyof typeof CHAIN_ID_TO_CURRENCY_SYMBOL_MAP ], + chainId, }; }; @@ -68,6 +70,7 @@ export const BridgeInputGroup = ({ onAmountChange, networkProps, customTokenListGenerator, + isMultiselectEnabled, amountFieldProps = {}, }: { className: string; @@ -79,7 +82,11 @@ export const BridgeInputGroup = ({ >; } & Pick< React.ComponentProps, - 'networkProps' | 'header' | 'customTokenListGenerator' | 'onAssetChange' + | 'networkProps' + | 'header' + | 'customTokenListGenerator' + | 'onAssetChange' + | 'isMultiselectEnabled' >) => { const t = useI18nContext(); @@ -123,6 +130,7 @@ export const BridgeInputGroup = ({ onAssetChange={onAssetChange} networkProps={networkProps} customTokenListGenerator={customTokenListGenerator} + isMultiselectEnabled={isMultiselectEnabled} /> { expect(container).toMatchSnapshot(); expect(getByRole('button', { name: /ETH/u })).toBeInTheDocument(); - expect(getByRole('button', { name: /Select token/u })).toBeInTheDocument(); expect(getByTestId('from-amount')).toBeInTheDocument(); expect(getByTestId('from-amount').closest('input')).not.toBeDisabled(); @@ -167,6 +166,7 @@ describe('PrepareBridgePage', () => { iconUrl: 'http://url', symbol: 'UNI', address: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', + decimals: 6, }, toChainId: CHAIN_IDS.LINEA_MAINNET, }, diff --git a/ui/pages/bridge/prepare/prepare-bridge-page.tsx b/ui/pages/bridge/prepare/prepare-bridge-page.tsx index 2cf97891189f..1533fc1a9c20 100644 --- a/ui/pages/bridge/prepare/prepare-bridge-page.tsx +++ b/ui/pages/bridge/prepare/prepare-bridge-page.tsx @@ -50,6 +50,7 @@ import { } from '../../../hooks/bridge/useCrossChainSwapsEventTracker'; import { useRequestProperties } from '../../../hooks/bridge/events/useRequestProperties'; import { MetaMetricsEventName } from '../../../../shared/constants/metametrics'; +import { isNetworkAdded } from '../../../ducks/bridge/utils'; import { BridgeInputGroup } from './bridge-input-group'; const PrepareBridgePage = () => { @@ -194,7 +195,7 @@ const PrepareBridgePage = () => { { dispatch(setFromTokenInputValue(e)); @@ -219,17 +220,20 @@ const PrepareBridgePage = () => { if (networkConfig.chainId === toChain?.chainId) { dispatch(setToChainId(null)); } - dispatch( - setActiveNetwork( - networkConfig.rpcEndpoints[ - networkConfig.defaultRpcEndpointIndex - ].networkClientId, - ), - ); + if (isNetworkAdded(networkConfig)) { + dispatch( + setActiveNetwork( + networkConfig.rpcEndpoints[ + networkConfig.defaultRpcEndpointIndex + ].networkClientId, + ), + ); + } dispatch(setFromChain(networkConfig.chainId)); dispatch(setFromToken(null)); dispatch(setFromTokenInputValue(null)); }, + header: t('bridgeFrom'), }} customTokenListGenerator={ fromTokens && fromTopAssets ? fromTokenListGenerator : undefined @@ -239,6 +243,7 @@ const PrepareBridgePage = () => { autoFocus: true, value: fromAmount || undefined, }} + isMultiselectEnabled={true} /> @@ -279,7 +284,7 @@ const PrepareBridgePage = () => { { token?.address && @@ -300,6 +305,7 @@ const PrepareBridgePage = () => { dispatch(setToChainId(networkConfig.chainId)); dispatch(setToChain(networkConfig.chainId)); }, + header: t('bridgeTo'), }} customTokenListGenerator={ toChain && toTokens && toTopAssets diff --git a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/__snapshots__/confirm-page-container-header.component.test.js.snap b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/__snapshots__/confirm-page-container-header.component.test.js.snap index 98fe98ec4138..78aa89d2bba3 100644 --- a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/__snapshots__/confirm-page-container-header.component.test.js.snap +++ b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/__snapshots__/confirm-page-container-header.component.test.js.snap @@ -32,12 +32,12 @@ exports[`Confirm Detail Row Component should match snapshot 1`] = ` > G
- Goerli - +

G - Goerli - +

G - Goerli - +

G - Goerli - +

Date: Wed, 11 Dec 2024 15:57:41 -0500 Subject: [PATCH 064/111] fix: [cherry-pick] add websocket support for c2 detection (#28782) (#29114) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cherry-picks #28782 ## **Description** This pull request adds WebSocket support to the MetaMask extension's phishing detection functionality. Scammers have started using WebSocket connections for command-and-control (C2) operations to bypass traditional HTTP-based phishing detection. This PR allows the extension to intercept and block WebSocket handshake requests (`ws://` and `wss://`) in addition to HTTP/HTTPS requests. The key changes include: 1. Adding WebSocket schemes (`ws://*/*` and `wss://*/*`) to the `urls` filter in `background.js`. 2. Updating the `manifest.json` to include WebSocket permissions in the `host_permissions` field. This ensures that malicious WebSocket connections can be detected and blocked. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28782?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3788 ## **Manual testing steps** 1. Navigate to `example.com` 2. Initiate a WebSocket connection to a known safe domain (e.g., `wss://example.com`) and verify it works as expected by going to the `console` via right clicking and hitting inspect. Then type into the console `new WebSocket("https://example.com/")` 3. Attempt a WebSocket connection to a domain flagged as phishing, and verify the connection is blocked and appropriate warnings are displayed by going to the `console` via right clicking and hitting inspect. Then type into the console `new WebSocket("https://walietconnectapi.com/")` ## **Screenshots/Recordings** ### **Before** No support for detecting WebSocket phishing connections. --- ### **After** WebSocket phishing connections are detected and blocked during the handshake phase. ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/manifest/v2/_base.json | 2 + app/manifest/v3/_base.json | 4 +- app/scripts/background.js | 2 +- privacy-snapshot.json | 3 +- test/e2e/helpers.js | 44 +++++++++++ test/e2e/tests/phishing-controller/mocks.js | 19 +++-- .../phishing-detection.spec.js | 76 ++++++++++++++++++- 7 files changed, 136 insertions(+), 14 deletions(-) diff --git a/app/manifest/v2/_base.json b/app/manifest/v2/_base.json index f29b7458a9e5..2f41a7e987fa 100644 --- a/app/manifest/v2/_base.json +++ b/app/manifest/v2/_base.json @@ -66,6 +66,8 @@ "clipboardWrite", "http://*/*", "https://*/*", + "ws://*/*", + "wss://*/*", "activeTab", "webRequest", "webRequestBlocking", diff --git a/app/manifest/v3/_base.json b/app/manifest/v3/_base.json index 4d6ee38437d3..89758033f33a 100644 --- a/app/manifest/v3/_base.json +++ b/app/manifest/v3/_base.json @@ -50,7 +50,9 @@ "http://localhost:8545/", "file://*/*", "http://*/*", - "https://*/*" + "https://*/*", + "ws://*/*", + "wss://*/*" ], "icons": { "16": "images/icon-16.png", diff --git a/app/scripts/background.js b/app/scripts/background.js index 2b2f5c4693df..6587b61cf13c 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -330,7 +330,7 @@ function maybeDetectPhishing(theController) { return {}; }, { - urls: ['http://*/*', 'https://*/*'], + urls: ['http://*/*', 'https://*/*', 'ws://*/*', 'wss://*/*'], }, isManifestV2 ? ['blocking'] : [], ); diff --git a/privacy-snapshot.json b/privacy-snapshot.json index 6ee430ca943c..8ae10de304df 100644 --- a/privacy-snapshot.json +++ b/privacy-snapshot.json @@ -71,5 +71,6 @@ "unresponsive-rpc.test", "unresponsive-rpc.url", "user-storage.api.cx.metamask.io", - "www.4byte.directory" + "www.4byte.directory", + "verify.walletconnect.com" ] diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index b06c29b17acf..4ade3f2e48ba 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -4,6 +4,7 @@ const BigNumber = require('bignumber.js'); const mockttp = require('mockttp'); const detectPort = require('detect-port'); const { difference } = require('lodash'); +const WebSocket = require('ws'); const createStaticServer = require('../../development/create-static-server'); const { setupMocking } = require('./mock-e2e'); const { Ganache } = require('./seeder/ganache'); @@ -640,6 +641,48 @@ async function unlockWallet( } } +/** + * Simulates a WebSocket connection by executing a script in the browser context. + * + * @param {WebDriver} driver - The WebDriver instance. + * @param {string} hostname - The hostname to connect to. + */ +async function createWebSocketConnection(driver, hostname) { + try { + await driver.executeScript(async (wsHostname) => { + const url = `ws://${wsHostname}:8000`; + + const socket = new WebSocket(url); + + socket.onopen = () => { + console.log('WebSocket connection opened'); + socket.send('Hello, server!'); + }; + + socket.onerror = (error) => { + console.error( + 'WebSocket error:', + error.message || 'Connection blocked', + ); + }; + + socket.onmessage = (event) => { + console.log('Message received from server:', event.data); + }; + + socket.onclose = () => { + console.log('WebSocket connection closed'); + }; + }, hostname); + } catch (error) { + console.error( + `Failed to execute WebSocket connection script for ws://${hostname}:8081`, + error, + ); + throw error; + } +} + const logInWithBalanceValidation = async (driver, ganacheServer) => { await unlockWallet(driver); // Wait for balance to load @@ -975,4 +1018,5 @@ module.exports = { tempToggleSettingRedesignedTransactionConfirmations, openMenuSafe, sentryRegEx, + createWebSocketConnection, }; diff --git a/test/e2e/tests/phishing-controller/mocks.js b/test/e2e/tests/phishing-controller/mocks.js index fe11118c6fd2..3165847740bf 100644 --- a/test/e2e/tests/phishing-controller/mocks.js +++ b/test/e2e/tests/phishing-controller/mocks.js @@ -10,7 +10,9 @@ const { const lastUpdated = 1; const defaultHotlist = { data: [] }; const defaultC2DomainBlocklist = { - recentlyAdded: [], + recentlyAdded: [ + '33c8e026e76cea2df82322428554c932961cd80080fa379454350d7f13371f36', // hash for malicious.localhost + ], recentlyRemoved: [], lastFetchedAt: '2024-08-27T15:30:45Z', }; @@ -95,15 +97,12 @@ async function setupPhishingDetectionMocks( }; }); - await mockServer - .forGet(C2_DOMAIN_BLOCKLIST_URL) - .withQuery({ timestamp: '2024-08-27T15:30:45Z' }) - .thenCallback(() => { - return { - statusCode: 200, - json: defaultC2DomainBlocklist, - }; - }); + await mockServer.forGet(C2_DOMAIN_BLOCKLIST_URL).thenCallback(() => { + return { + statusCode: 200, + json: defaultC2DomainBlocklist, + }; + }); await mockServer .forGet('https://github.com/MetaMask/eth-phishing-detect/issues/new') diff --git a/test/e2e/tests/phishing-controller/phishing-detection.spec.js b/test/e2e/tests/phishing-controller/phishing-detection.spec.js index ad199cea1e70..98184b85224e 100644 --- a/test/e2e/tests/phishing-controller/phishing-detection.spec.js +++ b/test/e2e/tests/phishing-controller/phishing-detection.spec.js @@ -2,13 +2,13 @@ const { strict: assert } = require('assert'); const { createServer } = require('node:http'); const { createDeferredPromise } = require('@metamask/utils'); const { until } = require('selenium-webdriver'); - const { defaultGanacheOptions, withFixtures, openDapp, unlockWallet, WINDOW_TITLES, + createWebSocketConnection, } = require('../../helpers'); const FixtureBuilder = require('../../fixture-builder'); const { @@ -315,6 +315,80 @@ describe('Phishing Detection', function () { ); }); + it('should block a website that makes a websocket connection to a malicious command and control server', async function () { + const testPageURL = 'http://localhost:8080'; + await withFixtures( + { + fixtures: new FixtureBuilder().build(), + ganacheOptions: defaultGanacheOptions, + title: this.test.fullTitle(), + testSpecificMock: async (mockServer) => { + await mockServer.forAnyWebSocket().thenEcho(); + await setupPhishingDetectionMocks(mockServer, { + blockProvider: BlockProvider.MetaMask, + }); + }, + dapp: true, + }, + async ({ driver }) => { + await unlockWallet(driver); + + await driver.openNewPage(testPageURL); + + await createWebSocketConnection(driver, 'malicious.localhost'); + + await driver.switchToWindowWithTitle( + 'MetaMask Phishing Detection', + 10000, + ); + + await driver.waitForSelector({ + testId: 'unsafe-continue-loaded', + }); + + await driver.clickElement({ + text: 'Back to safety', + }); + + const currentUrl = await driver.getCurrentUrl(); + const expectedPortfolioUrl = `https://portfolio.metamask.io/?metamaskEntry=phishing_page_portfolio_button`; + + assert.equal(currentUrl, expectedPortfolioUrl); + }, + ); + }); + + it('should not block a website that makes a safe WebSocket connection', async function () { + const testPageURL = 'http://localhost:8080/'; + await withFixtures( + { + fixtures: new FixtureBuilder().build(), + ganacheOptions: defaultGanacheOptions, + title: this.test.fullTitle(), + testSpecificMock: async (mockServer) => { + await mockServer.forAnyWebSocket().thenEcho(); + await setupPhishingDetectionMocks(mockServer, { + blockProvider: BlockProvider.MetaMask, + }); + }, + dapp: true, + }, + async ({ driver }) => { + await unlockWallet(driver); + + await driver.openNewPage(testPageURL); + + await createWebSocketConnection(driver, 'safe.localhost'); + + await driver.wait(until.titleIs(WINDOW_TITLES.TestDApp), 10000); + + const currentUrl = await driver.getCurrentUrl(); + + assert.equal(currentUrl, testPageURL); + }, + ); + }); + describe('Phishing redirect protections', function () { /** * Status codes 305 (via Location header) and 306 (Set-Proxy) header do not From 2aa02051d9d73f31df121d8105f78ca975322ab4 Mon Sep 17 00:00:00 2001 From: Brian Bergeron Date: Wed, 11 Dec 2024 13:36:05 -0800 Subject: [PATCH 065/111] chore(cherry-pick): token detection across multiple networks (#29115) cherry picks https://github.com/MetaMask/metamask-extension/pull/29108 to 12.9.1 --- .../app/assets/asset-list/asset-list.tsx | 18 ++---- .../network-filter/network-filter.tsx | 10 ++-- .../detected-token-selection-popover.js | 32 +++++----- .../app/detected-token/detected-token.js | 39 +++++++----- .../detected-token-banner.js | 15 +++-- ui/selectors/selectors.test.js | 59 +++++++++++++++++++ 6 files changed, 115 insertions(+), 58 deletions(-) diff --git a/ui/components/app/assets/asset-list/asset-list.tsx b/ui/components/app/assets/asset-list/asset-list.tsx index 6a82295cb2f3..3cd06ec4686b 100644 --- a/ui/components/app/assets/asset-list/asset-list.tsx +++ b/ui/components/app/assets/asset-list/asset-list.tsx @@ -7,10 +7,9 @@ import { getAllDetectedTokensForSelectedAddress, getDetectedTokensInCurrentNetwork, getIstokenDetectionInactiveOnNonMainnetSupportedNetwork, + getIsTokenNetworkFilterEqualCurrentNetwork, getSelectedAccount, - getTokenNetworkFilter, } from '../../../../selectors'; -import { getNetworkConfigurationsByChainId } from '../../../../../shared/modules/selectors/networks'; import { getMultichainIsEvm, getMultichainSelectedAccountCachedBalance, @@ -79,16 +78,9 @@ const AssetList = ({ onClickAsset, showTokensLinks }: AssetListProps) => { getIstokenDetectionInactiveOnNonMainnetSupportedNetwork, ); - const allNetworks = useSelector(getNetworkConfigurationsByChainId); - const tokenNetworkFilter = useSelector(getTokenNetworkFilter); - const allOpts: Record = {}; - Object.keys(allNetworks || {}).forEach((chainId) => { - allOpts[chainId] = true; - }); - - const allNetworksFilterShown = - Object.keys(tokenNetworkFilter).length !== - Object.keys(allOpts || {}).length; + const isTokenNetworkFilterEqualCurrentNetwork = useSelector( + getIsTokenNetworkFilterEqualCurrentNetwork, + ); const [showFundingMethodModal, setShowFundingMethodModal] = useState(false); const [showReceiveModal, setShowReceiveModal] = useState(false); @@ -118,7 +110,7 @@ const AssetList = ({ onClickAsset, showTokensLinks }: AssetListProps) => { const totalTokens = process.env.PORTFOLIO_VIEW && - !allNetworksFilterShown && + !isTokenNetworkFilterEqualCurrentNetwork && detectedTokensMultichain ? (Object.values(detectedTokensMultichain).reduce( // @ts-expect-error TS18046: 'tokenArray' is of type 'unknown' diff --git a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx index 4f75dcc7381a..2c50824702b1 100644 --- a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx +++ b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx @@ -7,6 +7,7 @@ import { getSelectedAccount, getAllChainsToPoll, getTokenNetworkFilter, + getIsTokenNetworkFilterEqualCurrentNetwork, } from '../../../../../selectors'; import { getCurrentChainId, @@ -49,6 +50,10 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => { const allNetworks = useSelector(getNetworkConfigurationsByChainId); const [chainsToShow, setChainsToShow] = useState([]); const tokenNetworkFilter = useSelector(getTokenNetworkFilter); + const isTokenNetworkFilterEqualCurrentNetwork = useSelector( + getIsTokenNetworkFilterEqualCurrentNetwork, + ); + const shouldHideZeroBalanceTokens = useSelector( getShouldHideZeroBalanceTokens, ); @@ -101,10 +106,7 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => { return ( <> handleFilter(allOpts)} testId="network-filter-all" > 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 index ae5e1048037f..570e52fb055b 100644 --- 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 @@ -9,15 +9,12 @@ import { MetaMetricsEventName, MetaMetricsTokenEventSource, } from '../../../../../shared/constants/metametrics'; -import { - getCurrentChainId, - getNetworkConfigurationsByChainId, -} from '../../../../../shared/modules/selectors/networks'; +import { getCurrentChainId } from '../../../../../shared/modules/selectors/networks'; import { getAllDetectedTokensForSelectedAddress, getCurrentNetwork, getDetectedTokensInCurrentNetwork, - getTokenNetworkFilter, + getIsTokenNetworkFilterEqualCurrentNetwork, } from '../../../../selectors'; import Popover from '../../../ui/popover'; @@ -40,16 +37,9 @@ const DetectedTokenSelectionPopover = ({ const chainId = useSelector(getCurrentChainId); const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork); - const allNetworks = useSelector(getNetworkConfigurationsByChainId); - const tokenNetworkFilter = useSelector(getTokenNetworkFilter); - const allOpts = {}; - Object.keys(allNetworks || {}).forEach((networkId) => { - allOpts[networkId] = true; - }); - - const allNetworksFilterShown = - Object.keys(tokenNetworkFilter).length !== - Object.keys(allOpts || {}).length; + const isTokenNetworkFilterEqualCurrentNetwork = useSelector( + getIsTokenNetworkFilterEqualCurrentNetwork, + ); const currentNetwork = useSelector(getCurrentNetwork); @@ -58,13 +48,18 @@ const DetectedTokenSelectionPopover = ({ ); const totalTokens = useMemo(() => { - return process.env.PORTFOLIO_VIEW && !allNetworksFilterShown + return process.env.PORTFOLIO_VIEW && + !isTokenNetworkFilterEqualCurrentNetwork ? Object.values(detectedTokensMultichain).reduce( (count, tokenArray) => count + tokenArray.length, 0, ) : detectedTokens.length; - }, [detectedTokensMultichain, detectedTokens, allNetworksFilterShown]); + }, [ + detectedTokensMultichain, + detectedTokens, + isTokenNetworkFilterEqualCurrentNetwork, + ]); const { selected: selectedTokens = [] } = sortingBasedOnTokenSelection(tokensListDetected); @@ -124,7 +119,8 @@ const DetectedTokenSelectionPopover = ({ onClose={onClose} footer={footer} > - {process.env.PORTFOLIO_VIEW && !allNetworksFilterShown ? ( + {process.env.PORTFOLIO_VIEW && + !isTokenNetworkFilterEqualCurrentNetwork ? ( {Object.entries(detectedTokensMultichain).map( ([networkId, tokens]) => { diff --git a/ui/components/app/detected-token/detected-token.js b/ui/components/app/detected-token/detected-token.js index b28eb8f51ff8..3e4d586ce77c 100644 --- a/ui/components/app/detected-token/detected-token.js +++ b/ui/components/app/detected-token/detected-token.js @@ -16,7 +16,7 @@ import { import { getAllDetectedTokensForSelectedAddress, getDetectedTokensInCurrentNetwork, - getTokenNetworkFilter, + getIsTokenNetworkFilterEqualCurrentNetwork, } from '../../../selectors'; import { MetaMetricsContext } from '../../../contexts/metametrics'; @@ -63,27 +63,30 @@ const DetectedToken = ({ setShowDetectedTokens }) => { ); const currentChainId = useSelector(getCurrentChainId); const allNetworks = useSelector(getNetworkConfigurationsByChainId); - const tokenNetworkFilter = useSelector(getTokenNetworkFilter); - const allOpts = {}; - Object.keys(allNetworks || {}).forEach((chainId) => { - allOpts[chainId] = true; - }); - const allNetworksFilterShown = - Object.keys(tokenNetworkFilter).length !== - Object.keys(allOpts || {}).length; + const isTokenNetworkFilterEqualCurrentNetwork = useSelector( + getIsTokenNetworkFilterEqualCurrentNetwork, + ); const totalDetectedTokens = useMemo(() => { - return process.env.PORTFOLIO_VIEW && !allNetworksFilterShown + return process.env.PORTFOLIO_VIEW && + !isTokenNetworkFilterEqualCurrentNetwork ? Object.values(detectedTokensMultichain).flat().length : detectedTokens.length; - }, [detectedTokens, detectedTokensMultichain, allNetworksFilterShown]); + }, [ + detectedTokens, + detectedTokensMultichain, + isTokenNetworkFilterEqualCurrentNetwork, + ]); const [tokensListDetected, setTokensListDetected] = useState({}); useEffect(() => { const newTokensList = () => { - if (process.env.PORTFOLIO_VIEW && !allNetworksFilterShown) { + if ( + process.env.PORTFOLIO_VIEW && + !isTokenNetworkFilterEqualCurrentNetwork + ) { return Object.entries(detectedTokensMultichain).reduce( (acc, [chainId, tokens]) => { if (Array.isArray(tokens)) { @@ -112,7 +115,7 @@ const DetectedToken = ({ setShowDetectedTokens }) => { setTokensListDetected(newTokensList()); }, [ - allNetworksFilterShown, + isTokenNetworkFilterEqualCurrentNetwork, detectedTokensMultichain, detectedTokens, currentChainId, @@ -141,7 +144,10 @@ const DetectedToken = ({ setShowDetectedTokens }) => { }); }); - if (process.env.PORTFOLIO_VIEW && !allNetworksFilterShown) { + if ( + process.env.PORTFOLIO_VIEW && + !isTokenNetworkFilterEqualCurrentNetwork + ) { const tokensByChainId = selectedTokens.reduce((acc, token) => { const { chainId } = token; @@ -197,7 +203,10 @@ const DetectedToken = ({ setShowDetectedTokens }) => { }, }); - if (process.env.PORTFOLIO_VIEW && !allNetworksFilterShown) { + if ( + process.env.PORTFOLIO_VIEW && + !isTokenNetworkFilterEqualCurrentNetwork + ) { // group deselected tokens by chainId const groupedByChainId = deSelectedTokens.reduce((acc, token) => { const { chainId } = token; diff --git a/ui/components/multichain/detected-token-banner/detected-token-banner.js b/ui/components/multichain/detected-token-banner/detected-token-banner.js index 2b6f7238024f..fa2ab6d62f84 100644 --- a/ui/components/multichain/detected-token-banner/detected-token-banner.js +++ b/ui/components/multichain/detected-token-banner/detected-token-banner.js @@ -11,7 +11,7 @@ import { import { getDetectedTokensInCurrentNetwork, getAllDetectedTokensForSelectedAddress, - getTokenNetworkFilter, + getIsTokenNetworkFilterEqualCurrentNetwork, } from '../../../selectors'; import { MetaMetricsContext } from '../../../contexts/metametrics'; import { @@ -28,7 +28,10 @@ export const DetectedTokensBanner = ({ }) => { const t = useI18nContext(); const trackEvent = useContext(MetaMetricsContext); - const tokenNetworkFilter = useSelector(getTokenNetworkFilter); + const isTokenNetworkFilterEqualCurrentNetwork = useSelector( + getIsTokenNetworkFilterEqualCurrentNetwork, + ); + const allNetworks = useSelector(getNetworkConfigurationsByChainId); const allOpts = {}; @@ -36,10 +39,6 @@ export const DetectedTokensBanner = ({ allOpts[chainId] = true; }); - const allNetworksFilterShown = - Object.keys(tokenNetworkFilter).length !== - Object.keys(allOpts || {}).length; - const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork); const detectedTokensMultichain = useSelector( @@ -48,14 +47,14 @@ export const DetectedTokensBanner = ({ const chainId = useSelector(getCurrentChainId); const detectedTokensDetails = - process.env.PORTFOLIO_VIEW && !allNetworksFilterShown + process.env.PORTFOLIO_VIEW && !isTokenNetworkFilterEqualCurrentNetwork ? Object.values(detectedTokensMultichain) .flat() .map(({ address, symbol }) => `${symbol} - ${address}`) : detectedTokens.map(({ address, symbol }) => `${symbol} - ${address}`); const totalTokens = - process.env.PORTFOLIO_VIEW && !allNetworksFilterShown + process.env.PORTFOLIO_VIEW && !isTokenNetworkFilterEqualCurrentNetwork ? Object.values(detectedTokensMultichain).reduce( (count, tokenArray) => count + tokenArray.length, 0, diff --git a/ui/selectors/selectors.test.js b/ui/selectors/selectors.test.js index ba0544af729e..20611b42a336 100644 --- a/ui/selectors/selectors.test.js +++ b/ui/selectors/selectors.test.js @@ -2163,4 +2163,63 @@ describe('#getConnectedSitesList', () => { expect(getCurrentChainIdSpy).not.toHaveBeenCalled(); // Ensure overrideChainId is used }); }); + + describe('getIsTokenNetworkFilterEqualCurrentNetwork', () => { + beforeEach(() => { + process.env.PORTFOLIO_VIEW = 'true'; + }); + + afterEach(() => { + process.env.PORTFOLIO_VIEW = undefined; + }); + + it('returns true when the token network filter is equal to the current network', () => { + const state = { + metamask: { + preferences: { + tokenNetworkFilter: { + '0x1': true, + }, + }, + selectedNetworkClientId: 'mainnetNetworkConfigurationId', + networkConfigurationsByChainId: { + '0x1': { + chainId: '0x1', + rpcEndpoints: [ + { networkClientId: 'mainnetNetworkConfigurationId' }, + ], + }, + }, + }, + }; + expect(selectors.getIsTokenNetworkFilterEqualCurrentNetwork(state)).toBe( + true, + ); + }); + + it('returns false when the token network filter is on multiple networks', () => { + const state = { + metamask: { + preferences: { + tokenNetworkFilter: { + '0x1': true, + '0x89': true, + }, + }, + selectedNetworkClientId: 'mainnetNetworkConfigurationId', + networkConfigurationsByChainId: { + '0x1': { + chainId: '0x1', + rpcEndpoints: [ + { networkClientId: 'mainnetNetworkConfigurationId' }, + ], + }, + }, + }, + }; + expect(selectors.getIsTokenNetworkFilterEqualCurrentNetwork(state)).toBe( + false, + ); + }); + }); }); From 25d1b62fa30d5da4c5bb43cb29c79c734db36b21 Mon Sep 17 00:00:00 2001 From: Jony Bursztyn Date: Wed, 11 Dec 2024 22:21:17 +0000 Subject: [PATCH 066/111] feat: carousel component (#28956) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR introduces a carousel component for the homepage that displays banners about new changes. It leverages the existing `react-responsive-carousel` library to handle carousel functionality and the `BannerBase` component for rendering banner content and images. The carousel component has been integrated into the `account-overview-layout.tsx` file. Key features: - Skeleton is displayed during app startup or if there is no connection. - Implements banner-specific behaviors based on user interaction (e.g., navigation dots, horizontal drag, close button). - Supports up to 5 banners with no auto-forwarding or loop functionality. - Non-dismissible 'Fund your wallet' banner remains in the first position when applicable. ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3758 ## **Manual testing steps** 1. Start the app and navigate to the homepage. 2. Verify that the carousel skeleton appears during app initialization or when there’s no connection. 3. Test navigation between banners using dots, horizontal drag, and clicking edges. 4. Verify that banners behave as expected when interacting with the close button: - For last banners, ensure the container is removed. - For 'Fund your wallet' banner, ensure it remains in place when others are closed. 5. Confirm URLs open correctly when clicking Bridge, Funds, Sell, and Card banners. 6. Test with more than 5 banners to ensure only the first 5 are displayed. 7. Verify no auto-forwarding or loop behavior. ## **Screenshots/Recordings** ### **Before** ### **After** Screenshot 2024-12-09 at 22 38 04 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability. - [ ] I’ve included tests for the carousel component and its behaviors. - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format where applicable. - [ ] I’ve applied the appropriate labels as per the [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md). ## **Pre-merge reviewer checklist** - [ ] I’ve manually tested the PR by pulling the branch, running the app, and verifying functionality. - [ ] I confirm that this PR meets all acceptance criteria from the ticket. - [ ] I’ve reviewed and approved the testing evidence provided (screenshots/recordings). --------- Co-authored-by: MetaMask Bot Co-authored-by: Nidhi Kumari Co-authored-by: NidhiKJha Co-authored-by: georgewrmarshall --- .storybook/test-data.js | 1 + app/_locales/en/messages.json | 24 ++ app/images/slide-bridge-icon.svg | 17 ++ app/images/slide-card-icon.svg | 16 ++ app/images/slide-fund-icon.svg | 20 ++ app/images/slide-sell-icon.svg | 11 + app/scripts/constants/sentry-state.ts | 1 + .../controllers/app-state-controller.ts | 60 ++++- app/scripts/metamask-controller.js | 2 + lavamoat/browserify/mmi/policy.json | 26 ++- package.json | 2 +- shared/constants/app-state.ts | 10 + test/e2e/flask/create-watch-account.spec.ts | 6 +- .../page-objects/pages/account-list-page.ts | 3 +- .../account/incremental-security.spec.js | 2 +- test/e2e/tests/carousel/carousel.spec.ts | 115 +++++++++ ...rs-after-init-opt-in-background-state.json | 14 +- .../errors-after-init-opt-in-ui-state.json | 11 +- test/e2e/tests/tokens/token-details.spec.ts | 6 + .../data/integration-init-state.json | 1 + .../data/onboarding-completion-route.json | 1 + .../incoming-transaction-toggle.test.js.snap | 4 +- .../banner-base/banner-base.types.ts | 2 +- .../account-overview-eth.test.tsx | 2 + .../account-overview-layout.tsx | 99 +++++++- .../account-overview-non-evm.test.tsx | 2 + .../multichain/account-overview/constants.ts | 34 +++ .../multichain/carousel/carousel.stories.tsx | 66 ++++++ .../multichain/carousel/carousel.test.tsx | 219 ++++++++++++++++++ .../multichain/carousel/carousel.tsx | 201 ++++++++++++++++ .../multichain/carousel/carousel.types.ts | 8 + .../multichain/carousel/constants.ts | 18 ++ ui/components/multichain/carousel/helpers.ts | 30 +++ ui/components/multichain/carousel/index.scss | 71 ++++++ ui/components/multichain/carousel/index.ts | 1 + ui/components/multichain/index.js | 1 + .../multichain/multichain-components.scss | 1 + .../network-list-menu.test.js.snap | 2 +- .../advanced-tab.component.test.js.snap | 10 +- .../developer-options-tab.test.tsx.snap | 2 +- .../__snapshots__/security-tab.test.js.snap | 20 +- ui/selectors/selectors.js | 4 + ui/store/actionConstants.ts | 1 + ui/store/actions.ts | 33 +++ yarn.lock | 10 +- 45 files changed, 1144 insertions(+), 46 deletions(-) create mode 100644 app/images/slide-bridge-icon.svg create mode 100644 app/images/slide-card-icon.svg create mode 100644 app/images/slide-fund-icon.svg create mode 100644 app/images/slide-sell-icon.svg create mode 100644 test/e2e/tests/carousel/carousel.spec.ts create mode 100644 ui/components/multichain/account-overview/constants.ts create mode 100644 ui/components/multichain/carousel/carousel.stories.tsx create mode 100644 ui/components/multichain/carousel/carousel.test.tsx create mode 100644 ui/components/multichain/carousel/carousel.tsx create mode 100644 ui/components/multichain/carousel/carousel.types.ts create mode 100644 ui/components/multichain/carousel/constants.ts create mode 100644 ui/components/multichain/carousel/helpers.ts create mode 100644 ui/components/multichain/carousel/index.scss create mode 100644 ui/components/multichain/carousel/index.ts diff --git a/.storybook/test-data.js b/.storybook/test-data.js index bce6d082e086..6e4eb2265b98 100644 --- a/.storybook/test-data.js +++ b/.storybook/test-data.js @@ -703,6 +703,7 @@ const state = { useBlockie: false, featureFlags: {}, welcomeScreenSeen: false, + slides: [], currentLocale: 'en', preferences: { showNativeTokenAsMainBalance: true, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index c6fce85a2190..f42a539277d1 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -5230,6 +5230,30 @@ "skipAccountSecurityDetails": { "message": "I understand that until I back up my Secret Recovery Phrase, I may lose my accounts and all of their assets." }, + "slideBridgeDescription": { + "message": "Move across 9 chains, all within your wallet" + }, + "slideBridgeTitle": { + "message": "Ready to bridge?" + }, + "slideCashOutDescription": { + "message": "Sell your crypto for cash" + }, + "slideCashOutTitle": { + "message": "Cash out with MetaMask" + }, + "slideDebitCardDescription": { + "message": "Available in selected regions" + }, + "slideDebitCardTitle": { + "message": "MetaMask debit card" + }, + "slideFundWalletDescription": { + "message": "Get started by adding funds" + }, + "slideFundWalletTitle": { + "message": "Fund your wallet" + }, "smartContracts": { "message": "Smart contracts" }, diff --git a/app/images/slide-bridge-icon.svg b/app/images/slide-bridge-icon.svg new file mode 100644 index 000000000000..de2be9745504 --- /dev/null +++ b/app/images/slide-bridge-icon.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/app/images/slide-card-icon.svg b/app/images/slide-card-icon.svg new file mode 100644 index 000000000000..32dd386ea6ce --- /dev/null +++ b/app/images/slide-card-icon.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/app/images/slide-fund-icon.svg b/app/images/slide-fund-icon.svg new file mode 100644 index 000000000000..80f8e3b42e79 --- /dev/null +++ b/app/images/slide-fund-icon.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/app/images/slide-sell-icon.svg b/app/images/slide-sell-icon.svg new file mode 100644 index 000000000000..daed4190a05a --- /dev/null +++ b/app/images/slide-sell-icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/app/scripts/constants/sentry-state.ts b/app/scripts/constants/sentry-state.ts index 52fae4d7909a..c0b075c2b28b 100644 --- a/app/scripts/constants/sentry-state.ts +++ b/app/scripts/constants/sentry-state.ts @@ -431,6 +431,7 @@ export const SENTRY_UI_STATE = { nextNonce: true, pendingTokens: false, welcomeScreenSeen: true, + slides: false, confirmationExchangeRates: true, useSafeChainsListValidation: true, watchEthereumAccountEnabled: false, diff --git a/app/scripts/controllers/app-state-controller.ts b/app/scripts/controllers/app-state-controller.ts index 612f328eb82d..828b2249c6c2 100644 --- a/app/scripts/controllers/app-state-controller.ts +++ b/app/scripts/controllers/app-state-controller.ts @@ -28,7 +28,10 @@ import { import { DEFAULT_AUTO_LOCK_TIME_LIMIT } from '../../../shared/constants/preferences'; import { LastInteractedConfirmationInfo } from '../../../shared/types/confirm'; import { SecurityAlertResponse } from '../lib/ppom/types'; -import { AccountOverviewTabKey } from '../../../shared/constants/app-state'; +import { + AccountOverviewTabKey, + CarouselSlide, +} from '../../../shared/constants/app-state'; import type { Preferences, PreferencesControllerGetStateAction, @@ -76,6 +79,7 @@ export type AppStateControllerState = { interactiveReplacementToken?: { url: string; oldRefreshToken: string }; noteToTraderMessage?: string; custodianDeepLink?: { fromAddress: string; custodyId: string }; + slides: CarouselSlide[]; }; const controllerName = 'AppStateController'; @@ -186,6 +190,7 @@ const getDefaultAppStateControllerState = (): AppStateControllerState => ({ hadAdvancedGasFeesSetPriorToMigration92_3: false, surveyLinkLastClickedOrClosed: null, switchedNetworkNeverShowMessage: false, + slides: [], ...getInitialStateOverrides(), }); @@ -344,6 +349,10 @@ const controllerMetadata = { persist: true, anonymous: true, }, + slides: { + persist: true, + anonymous: true, + }, }; export class AppStateController extends BaseController< @@ -531,6 +540,55 @@ export class AppStateController extends BaseController< }); } + /** + * Updates slides by adding new slides that don't already exist in state + * + * @param slides - Array of new slides to add + */ + updateSlides(slides: CarouselSlide[]): void { + this.update((state) => { + const currentSlides = state.slides || []; + + // Updates the undismissable property for slides that already exist in state + const updatedCurrentSlides = currentSlides.map((currentSlide) => { + const matchingNewSlide = slides.find((s) => s.id === currentSlide.id); + if (matchingNewSlide) { + return { + ...currentSlide, + undismissable: matchingNewSlide.undismissable, + }; + } + return currentSlide; + }); + + // Adds new slides that don't already exist in state + const newSlides = slides.filter((newSlide) => { + return !currentSlides.some( + (currentSlide) => currentSlide.id === newSlide.id, + ); + }); + + state.slides = [...updatedCurrentSlides, ...newSlides]; + }); + } + + /** + * Marks a slide as dismissed by ID + * + * @param id - ID of the slide to dismiss + */ + removeSlide(id: string): void { + this.update((state) => { + const slides = state.slides || []; + state.slides = slides.map((slide) => { + if (slide.id === id) { + return { ...slide, dismissed: true }; + } + return slide; + }); + }); + } + /** * Record the timestamp of the last time the user has seen the recovery phrase reminder * diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index f7ac1ce266d6..5b29b843f859 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -3802,6 +3802,8 @@ export default class MetamaskController extends EventEmitter { appStateController.setLastInteractedConfirmationInfo.bind( appStateController, ), + updateSlides: appStateController.updateSlides.bind(appStateController), + removeSlide: appStateController.removeSlide.bind(appStateController), // EnsController tryReverseResolveAddress: diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 99635e6aa997..08a75ac8612b 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -4962,8 +4962,32 @@ }, "react-responsive-carousel": { "globals": { + "HTMLElement": true, "addEventListener": true, - "removeEventListener": true + "clearTimeout": true, + "console.warn": true, + "document": true, + "getComputedStyle": true, + "removeEventListener": true, + "setTimeout": true + }, + "packages": { + "classnames": true, + "react": true, + "react-dom": true, + "react-responsive-carousel>react-easy-swipe": true + } + }, + "react-responsive-carousel>react-easy-swipe": { + "globals": { + "addEventListener": true, + "define": true, + "document.addEventListener": true, + "document.removeEventListener": true + }, + "packages": { + "prop-types": true, + "react": true } }, "react-router-dom": { diff --git a/package.json b/package.json index ee392c924ad0..223372f5dcc5 100644 --- a/package.json +++ b/package.json @@ -293,7 +293,7 @@ "@metamask/browser-passworder": "^4.3.0", "@metamask/contract-metadata": "^2.5.0", "@metamask/controller-utils": "^11.4.0", - "@metamask/design-tokens": "^4.0.0", + "@metamask/design-tokens": "^4.2.0", "@metamask/ens-controller": "^15.0.0", "@metamask/ens-resolver-snap": "^0.1.2", "@metamask/eth-json-rpc-filters": "^9.0.0", diff --git a/shared/constants/app-state.ts b/shared/constants/app-state.ts index 82424edfe57f..b66dd153cb54 100644 --- a/shared/constants/app-state.ts +++ b/shared/constants/app-state.ts @@ -18,3 +18,13 @@ export const ACCOUNT_OVERVIEW_TAB_KEY_TO_TRACE_NAME_MAP = { [AccountOverviewTabKey.Nfts]: TraceName.AccountOverviewNftsTab, [AccountOverviewTabKey.Activity]: TraceName.AccountOverviewActivityTab, } as const; + +export type CarouselSlide = { + id: string; + title: string; + description: string; + image: string; + dismissed?: boolean; + href?: string; + undismissable?: boolean; +}; diff --git a/test/e2e/flask/create-watch-account.spec.ts b/test/e2e/flask/create-watch-account.spec.ts index 71d47327536c..f25f38f0b2ce 100644 --- a/test/e2e/flask/create-watch-account.spec.ts +++ b/test/e2e/flask/create-watch-account.spec.ts @@ -374,7 +374,9 @@ describe('Account-watcher snap', function (this: Suite) { const toggleWatchAccountOptionAndCloseSettings = async (driver: Driver) => { await driver.clickElement('[data-testid="watch-account-toggle-div"]'); - await driver.clickElement('button[aria-label="Close"]'); + await driver.clickElement( + '.settings-page__header__title-container__close-button', + ); }; const verifyWatchAccountOptionAndCloseMenu = async ( @@ -396,7 +398,7 @@ describe('Account-watcher snap', function (this: Suite) { tag: 'button', }); } - await driver.clickElement('button[aria-label="Close"]'); + await driver.clickElement('header button[aria-label="Close"]'); }; it("will show the 'Watch an Ethereum account (Beta)' option when setting is enabled", async function () { diff --git a/test/e2e/page-objects/pages/account-list-page.ts b/test/e2e/page-objects/pages/account-list-page.ts index 5660dc616279..955dd5111fe1 100644 --- a/test/e2e/page-objects/pages/account-list-page.ts +++ b/test/e2e/page-objects/pages/account-list-page.ts @@ -48,7 +48,8 @@ class AccountListPage { tag: 'button', }; - private readonly closeAccountModalButton = 'button[aria-label="Close"]'; + private readonly closeAccountModalButton = + 'header button[aria-label="Close"]'; private readonly createAccountButton = '[data-testid="multichain-account-menu-popover-action-button"]'; diff --git a/test/e2e/tests/account/incremental-security.spec.js b/test/e2e/tests/account/incremental-security.spec.js index f16fb5350b91..e8295de765ec 100644 --- a/test/e2e/tests/account/incremental-security.spec.js +++ b/test/e2e/tests/account/incremental-security.spec.js @@ -82,7 +82,7 @@ describe('Incremental Security', function () { await driver.findVisibleElement( '[data-testid="account-details-modal"]', ); - await driver.clickElement('button[aria-label="Close"]'); + await driver.clickElement('header button[aria-label="Close"]'); // wait for account modal to be removed from DOM await driver.assertElementNotPresent( diff --git a/test/e2e/tests/carousel/carousel.spec.ts b/test/e2e/tests/carousel/carousel.spec.ts new file mode 100644 index 000000000000..833fbd5ed00c --- /dev/null +++ b/test/e2e/tests/carousel/carousel.spec.ts @@ -0,0 +1,115 @@ +import { strict as assert } from 'assert'; +import { withFixtures } from '../../helpers'; +import FixtureBuilder from '../../fixture-builder'; +import { loginWithBalanceValidation } from '../../page-objects/flows/login.flow'; + +describe('Carousel component e2e tests', () => { + it('should display correct slides with expected content', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder().build(), + title: this.test?.fullTitle(), + }, + async ({ driver }) => { + await loginWithBalanceValidation(driver); + + await driver.waitForSelector( + '[data-testid="eth-overview__primary-currency"]', + ); + + await driver.waitForSelector('.mm-carousel'); + await driver.waitForSelector('.mm-carousel-slide'); + + const slides = await driver.findElements('.mm-carousel-slide'); + assert.ok(slides.length > 0, 'Carousel should have slides'); + + const slideIds = ['bridge', 'card', 'fund', 'cash']; + + const firstSlideSelector = `[data-testid="slide-${slideIds[0]}"]`; + await driver.waitForSelector(firstSlideSelector); + + for (let i = 0; i < slideIds.length; i++) { + if (i > 0) { + const dots = await driver.findElements('.dot'); + await dots[i].click(); + await driver.waitForSelector( + `[data-testid="slide-${slideIds[i]}"]`, + ); + } + + const slideSelector = `[data-testid="slide-${slideIds[i]}"]`; + const currentSlide = await driver.waitForSelector(slideSelector); + assert.ok( + currentSlide, + `Slide with data-testid="slide-${slideIds[i]}" should exist`, + ); + + const hasTitle = await driver.isElementPresent( + `${slideSelector} .mm-text--body-sm-medium`, + ); + const hasDescription = await driver.isElementPresent( + `${slideSelector} .mm-text--body-xs`, + ); + + assert.ok(hasTitle, `Slide ${slideIds[i]} should have a title`); + assert.ok( + hasDescription, + `Slide ${slideIds[i]} should have a description`, + ); + } + }, + ); + }); + + it('should handle slide dismissal', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder().build(), + title: this.test?.fullTitle(), + }, + async ({ driver }) => { + await loginWithBalanceValidation(driver); + await driver.waitForSelector('.mm-carousel'); + await driver.waitForSelector('.mm-carousel-slide'); + + const initialSlides = await driver.findElements('.mm-carousel-slide'); + assert.equal(initialSlides.length, 4); + + for (let i = 0; i < 4; i++) { + const currentSlides = await driver.findElements('.mm-carousel-slide'); + assert.equal( + currentSlides.length, + 4 - i, + `Expected ${4 - i} slides remaining`, + ); + + const dismissButton = await driver.findElement( + '.mm-carousel-slide:first-child .mm-carousel-slide__close-button', + ); + await dismissButton.click(); + + if (i < 3) { + await driver.wait(async () => { + const remainingSlides = await driver.findElements( + '.mm-carousel-slide', + ); + return remainingSlides.length === 3 - i; + }, 5e3); + } + } + + await driver.wait(async () => { + const carouselExists = await driver.isElementPresent('.mm-carousel'); + return !carouselExists; + }, 5e3); + + const carouselExists = await driver.isElementPresent('.mm-carousel'); + assert.equal( + carouselExists, + false, + 'Carousel should no longer be visible', + ); + }, + ); + }); +}); diff --git a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json index c28cd91f5815..cae1a6ae8951 100644 --- a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json +++ b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json @@ -42,15 +42,16 @@ "newPrivacyPolicyToastClickedOrClosed": "boolean", "newPrivacyPolicyToastShownDate": "number", "hadAdvancedGasFeesSetPriorToMigration92_3": false, - "nftsDropdownState": {}, - "termsOfUseLastAgreed": "number", - "qrHardware": {}, - "snapsInstallPrivacyWarningShown": true, "surveyLinkLastClickedOrClosed": "object", + "switchedNetworkNeverShowMessage": "boolean", + "slides": "object", + "qrHardware": {}, + "nftsDropdownState": {}, "signatureSecurityAlertResponses": "object", "switchedNetworkDetails": null, - "switchedNetworkNeverShowMessage": "boolean", - "currentExtensionPopupId": "number" + "currentExtensionPopupId": "number", + "termsOfUseLastAgreed": "number", + "snapsInstallPrivacyWarningShown": true }, "ApprovalController": { "pendingApprovals": "object", @@ -344,7 +345,6 @@ "allDetectedTokens": {} }, "TxController": { - "lastFetchedBlockNumbers": "object", "methodData": "object", "transactions": "object", "lastFetchedBlockNumbers": "object", diff --git a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json index 079934c65eec..a306c63c70b6 100644 --- a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json +++ b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json @@ -88,15 +88,16 @@ "newPrivacyPolicyToastClickedOrClosed": "boolean", "newPrivacyPolicyToastShownDate": "number", "hadAdvancedGasFeesSetPriorToMigration92_3": false, - "nftsDropdownState": {}, - "termsOfUseLastAgreed": "number", - "qrHardware": {}, - "snapsInstallPrivacyWarningShown": true, "surveyLinkLastClickedOrClosed": "object", + "switchedNetworkNeverShowMessage": "boolean", + "slides": "object", + "qrHardware": {}, + "nftsDropdownState": {}, "signatureSecurityAlertResponses": "object", "switchedNetworkDetails": null, - "switchedNetworkNeverShowMessage": "boolean", "currentExtensionPopupId": "number", + "termsOfUseLastAgreed": "number", + "snapsInstallPrivacyWarningShown": true, "currentAppVersion": "string", "previousAppVersion": "", "previousMigrationVersion": 0, diff --git a/test/e2e/tests/tokens/token-details.spec.ts b/test/e2e/tests/tokens/token-details.spec.ts index c882c7c8b4b4..5424f1d02367 100644 --- a/test/e2e/tests/tokens/token-details.spec.ts +++ b/test/e2e/tests/tokens/token-details.spec.ts @@ -102,6 +102,9 @@ describe('Token Details', function () { async ({ driver }: { driver: Driver }) => { await unlockWallet(driver); await importToken(driver); + await driver.clickElement( + '.actionable-message__message button[aria-label="Close"]', + ); await openTokenDetails(driver); await verifyToken(driver); }, @@ -157,6 +160,9 @@ describe('Token Details', function () { async ({ driver }: { driver: Driver }) => { await unlockWallet(driver); await importToken(driver); + await driver.clickElement( + '.actionable-message__message button[aria-label="Close"]', + ); await openTokenDetails(driver); await verifyToken(driver); diff --git a/test/integration/data/integration-init-state.json b/test/integration/data/integration-init-state.json index ac58306adca8..3d3580dc12ca 100644 --- a/test/integration/data/integration-init-state.json +++ b/test/integration/data/integration-init-state.json @@ -801,6 +801,7 @@ "showProductTour": false, "showTestnetMessageInDropdown": true, "signatureSecurityAlertResponses": {}, + "slides": [], "smartTransactionsState": { "fees": {}, "liveness": true, diff --git a/test/integration/data/onboarding-completion-route.json b/test/integration/data/onboarding-completion-route.json index 3e470b1494e6..9d3df88dbeae 100644 --- a/test/integration/data/onboarding-completion-route.json +++ b/test/integration/data/onboarding-completion-route.json @@ -287,6 +287,7 @@ "showPermissionsTour": true, "showTestnetMessageInDropdown": true, "signatureSecurityAlertResponses": {}, + "slides": [], "smartTransactionsState": { "smartTransactions": { "0x1": [] }, "fees": {}, diff --git a/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap b/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap index 20b0b6bf5d7f..e3a848a72d6d 100644 --- a/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap +++ b/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap @@ -150,7 +150,7 @@ exports[`IncomingTransactionToggle should render existing incoming transaction p style="display: flex; width: 52px; align-items: center; justify-content: flex-start; position: relative; cursor: pointer; background-color: transparent; border: 0px; padding: 0px; user-select: none;" >
void; + onClose?: (e: React.MouseEvent) => void; /** * The props to pass to the close button */ diff --git a/ui/components/multichain/account-overview/account-overview-eth.test.tsx b/ui/components/multichain/account-overview/account-overview-eth.test.tsx index a886608ec169..cfca7b93dddf 100644 --- a/ui/components/multichain/account-overview/account-overview-eth.test.tsx +++ b/ui/components/multichain/account-overview/account-overview-eth.test.tsx @@ -13,6 +13,8 @@ jest.mock('../../../store/actions', () => ({ tokenBalancesStartPolling: jest.fn().mockResolvedValue('pollingToken'), tokenBalancesStopPollingByPollingToken: jest.fn(), setTokenNetworkFilter: jest.fn(), + updateSlides: jest.fn(), + removeSlide: jest.fn(), })); // Mock the dispatch function diff --git a/ui/components/multichain/account-overview/account-overview-layout.tsx b/ui/components/multichain/account-overview/account-overview-layout.tsx index fdebd69c60b4..6006cabf810f 100644 --- a/ui/components/multichain/account-overview/account-overview-layout.tsx +++ b/ui/components/multichain/account-overview/account-overview-layout.tsx @@ -1,8 +1,34 @@ -import React from 'react'; +import React, { useEffect } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { removeSlide, updateSlides } from '../../../store/actions'; +import { Carousel } from '..'; +import { + ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) + getSwapsDefaultToken, + getMetaMetricsId, + getParticipateInMetaMetrics, + getDataCollectionForMarketing, + ///: END:ONLY_INCLUDE_IF + getSelectedAccountCachedBalance, + getAppIsLoading, + getSlides, +} from '../../../selectors'; +///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) +import { getPortfolioUrl } from '../../../helpers/utils/portfolio'; +///: END:ONLY_INCLUDE_IF import { AccountOverviewTabsProps, AccountOverviewTabs, } from './account-overview-tabs'; +import { + FUND_SLIDE, + ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) + BRIDGE_SLIDE, + ///: END:ONLY_INCLUDE_IF + CARD_SLIDE, + CASH_SLIDE, + ZERO_BALANCE, +} from './constants'; export type AccountOverviewLayoutProps = AccountOverviewTabsProps & { children: React.ReactElement; @@ -12,10 +38,79 @@ export const AccountOverviewLayout = ({ children, ...tabsProps }: AccountOverviewLayoutProps) => { + const dispatch = useDispatch(); + const slides = useSelector(getSlides); + const totalBalance = useSelector(getSelectedAccountCachedBalance); + const isLoading = useSelector(getAppIsLoading); + + const hasZeroBalance = totalBalance === ZERO_BALANCE; + + ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) + const defaultSwapsToken = useSelector(getSwapsDefaultToken); + const metaMetricsId = useSelector(getMetaMetricsId); + const isMetaMetricsEnabled = useSelector(getParticipateInMetaMetrics); + const isMarketingEnabled = useSelector(getDataCollectionForMarketing); + ///: END:ONLY_INCLUDE_IF + + useEffect(() => { + const fundSlide = { + ...FUND_SLIDE, + undismissable: hasZeroBalance, + }; + + const defaultSlides = [ + ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) + BRIDGE_SLIDE, + ///: END:ONLY_INCLUDE_IF + CARD_SLIDE, + CASH_SLIDE, + ]; + + if (hasZeroBalance) { + defaultSlides.unshift(fundSlide); + } else { + defaultSlides.splice(2, 0, fundSlide); + } + + dispatch(updateSlides(defaultSlides)); + }, [hasZeroBalance]); + + ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) + const handleCarouselClick = (id: string) => { + if (id === 'bridge') { + const portfolioUrl = getPortfolioUrl( + 'bridge', + 'ext_bridge_prepare_swap_link', + metaMetricsId, + isMetaMetricsEnabled, + isMarketingEnabled, + ); + + global.platform.openTab({ + url: `${portfolioUrl}&token=${defaultSwapsToken}`, + }); + } + }; + ///: END:ONLY_INCLUDE_IF + + const handleRemoveSlide = (id: string) => { + if (id === 'fund' && hasZeroBalance) { + return; + } + dispatch(removeSlide(id)); + }; + return ( <>
{children}
- + ); diff --git a/ui/components/multichain/account-overview/account-overview-non-evm.test.tsx b/ui/components/multichain/account-overview/account-overview-non-evm.test.tsx index 17989cbf31a6..df7c2ef56d69 100644 --- a/ui/components/multichain/account-overview/account-overview-non-evm.test.tsx +++ b/ui/components/multichain/account-overview/account-overview-non-evm.test.tsx @@ -13,6 +13,8 @@ jest.mock('../../../store/actions', () => ({ tokenBalancesStartPolling: jest.fn().mockResolvedValue('pollingToken'), tokenBalancesStopPollingByPollingToken: jest.fn(), setTokenNetworkFilter: jest.fn(), + updateSlides: jest.fn(), + removeSlide: jest.fn(), })); // Mock the dispatch function diff --git a/ui/components/multichain/account-overview/constants.ts b/ui/components/multichain/account-overview/constants.ts new file mode 100644 index 000000000000..bd007677457a --- /dev/null +++ b/ui/components/multichain/account-overview/constants.ts @@ -0,0 +1,34 @@ +export const FUND_SLIDE = { + id: 'fund', + title: 'slideFundWalletTitle', + description: 'slideFundWalletDescription', + image: './images/slide-fund-icon.svg', + href: 'https://portfolio.metamask.io/buy/build-quote', +}; + +///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) +export const BRIDGE_SLIDE = { + id: 'bridge', + title: 'slideBridgeTitle', + description: 'slideBridgeDescription', + image: './images/slide-bridge-icon.svg', +}; +///: END:ONLY_INCLUDE_IF + +export const CARD_SLIDE = { + id: 'card', + title: 'slideDebitCardTitle', + description: 'slideDebitCardDescription', + image: './images/slide-card-icon.svg', + href: 'https://portfolio.metamask.io/card', +}; + +export const CASH_SLIDE = { + id: 'cash', + title: 'slideCashOutTitle', + description: 'slideCashOutDescription', + image: './images/slide-sell-icon.svg', + href: 'https://portfolio.metamask.io/sell', +}; + +export const ZERO_BALANCE = '0x00'; diff --git a/ui/components/multichain/carousel/carousel.stories.tsx b/ui/components/multichain/carousel/carousel.stories.tsx new file mode 100644 index 000000000000..e2318a641381 --- /dev/null +++ b/ui/components/multichain/carousel/carousel.stories.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { Carousel } from './carousel'; + +export default { + title: 'Components/ComponentLibrary/Carousel', + component: Carousel, + argTypes: { + slides: { + control: 'object', + }, + onClose: { + control: 'function', + }, + }, +} as Meta; + +const mockSlides = [ + { + id: '1', + title: 'First Slide', + description: 'This is the first slide description', + image: './images/sample-image-1.png', + }, + { + id: '2', + title: 'Second Slide', + description: 'This is the second slide description', + image: './images/sample-image-2.png', + }, + { + id: '3', + title: 'Third Slide', + description: 'This is the third slide description', + image: './images/sample-image-3.png', + }, +]; + +type Story = StoryObj; + +const Template: Story = { + render: (args) => , +}; + +export const DefaultStory: Story = { + ...Template, + args: { + slides: mockSlides, + }, +}; + +export const WithCloseButton: Story = { + ...Template, + args: { + ...DefaultStory.args, + onClose: (id: string) => console.log(`Closing slide with id: ${id}`), + }, +}; + +export const SingleSlide: Story = { + ...Template, + args: { + ...DefaultStory.args, + slides: [mockSlides[0]], + }, +}; diff --git a/ui/components/multichain/carousel/carousel.test.tsx b/ui/components/multichain/carousel/carousel.test.tsx new file mode 100644 index 000000000000..71b9e4f4faa8 --- /dev/null +++ b/ui/components/multichain/carousel/carousel.test.tsx @@ -0,0 +1,219 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import { Carousel } from './carousel'; +import { MARGIN_VALUES, WIDTH_VALUES } from './constants'; + +jest.mock('../../../hooks/useI18nContext', () => ({ + useI18nContext: () => (key: string) => key, +})); + +describe('Carousel', () => { + const mockSlides = [ + { + id: '1', + title: 'Slide 1', + description: 'Description 1', + image: 'image1.jpg', + }, + { + id: '2', + title: 'Slide 2', + description: 'Description 2', + image: 'image2.jpg', + }, + ]; + + it('should render correctly with slides', () => { + const { container } = render(); + + const slides = container.querySelectorAll('.mm-carousel-slide'); + expect(slides).toHaveLength(2); + + const images = container.querySelectorAll('.mm-carousel-slide__accessory'); + expect(images[0]).toHaveAttribute('src', 'image1.jpg'); + expect(images[1]).toHaveAttribute('src', 'image2.jpg'); + }); + + it('should handle slide removal', async () => { + const mockOnClose = jest.fn(); + const { container, rerender } = render( + , + ); + + const closeButtons = container.querySelectorAll( + '.mm-carousel-slide__close-button', + ); + expect(closeButtons).toHaveLength(2); + + fireEvent.click(closeButtons[0]); + expect(mockOnClose).toHaveBeenCalledWith('1'); + + const remainingSlides = mockSlides.filter((slide) => slide.id !== '1'); + rerender(); + + const updatedSlides = container.querySelectorAll('.mm-carousel-slide'); + expect(updatedSlides).toHaveLength(1); + }); + + it('should handle slide navigation', () => { + const { container } = render(); + + const dots = container.querySelectorAll('.dot'); + if (!dots || dots.length === 0) { + throw new Error('Carousel dots not found'); + } + fireEvent.click(dots[1]); + + const slides = container.querySelectorAll('.mm-carousel-slide'); + expect(slides[1].parentElement).toHaveClass('selected'); + }); + + it('should return null when no slides are present', () => { + const { container } = render(); + expect(container.firstChild).toBeNull(); + }); + + it('should apply correct margin and width for single slide', () => { + const singleSlide = [mockSlides[0]]; + const { container } = render(); + + const slide = container.querySelector('.mm-carousel-slide'); + expect(slide).toHaveStyle({ + margin: `${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.CONTAINER_SIDE}`, + width: 'calc(100% - 32px)', + }); + }); + + it('should apply correct margin and width for multiple slides', () => { + const { container } = render(); + + const slides = container.querySelectorAll('.mm-carousel-slide'); + expect(slides[0]).toHaveStyle({ + width: 'calc(98% - 16px)', + }); + + expect(slides[1]).toHaveStyle({ + width: WIDTH_VALUES.STANDARD_SLIDE, + }); + + // Check margins for first slide + expect(slides[0]).toHaveStyle({ + margin: `${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.SLIDE_BOTTOM} 16px`, + }); + + // Check margins for subsequent slides + expect(slides[1]).toHaveStyle({ + margin: `${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.SLIDE_BOTTOM} ${MARGIN_VALUES.ZERO}`, + }); + }); + + it('should render loading state correctly', () => { + const { container } = render(); + + const loadingCarousel = container.querySelector('.mm-carousel__loading'); + expect(loadingCarousel).toBeDefined(); + + const skeletonSlides = container.querySelectorAll('.mm-carousel-slide'); + expect(skeletonSlides).toHaveLength(3); + }); + + it('should handle slide click with href', () => { + const mockOpenTab = jest.fn(); + global.platform = { + openTab: mockOpenTab, + closeCurrentWindow: jest.fn(), + }; + + const slidesWithHref = [ + { + ...mockSlides[0], + href: 'https://example.com', + }, + ]; + + const { container } = render(); + + const slide = container.querySelector('.mm-carousel-slide'); + if (!slide) { + throw new Error('Slide not found'); + } + fireEvent.click(slide); + + expect(mockOpenTab).toHaveBeenCalledWith({ url: 'https://example.com' }); + }); + + it('should handle slide click with onClick', () => { + const mockOnClick = jest.fn(); + const slidesWithClick = [ + { + ...mockSlides[0], + }, + ]; + + const { container } = render( + , + ); + + const slide = container.querySelector('.mm-carousel-slide'); + if (!slide) { + throw new Error('Slide not found'); + } + fireEvent.click(slide); + + expect(mockOnClick).toHaveBeenCalledWith('1'); + }); + + it('should not show close button for undismissable slides', () => { + const undismissableSlides = [ + { + ...mockSlides[0], + undismissable: true, + }, + mockSlides[1], + ]; + + const { container } = render( + undefined} />, + ); + + const closeButtons = container.querySelectorAll( + '.mm-carousel-slide__close-button', + ); + expect(closeButtons).toHaveLength(1); + }); + + it('should limit the number of slides to MAX_SLIDES', () => { + const manySlides = [ + ...mockSlides, + { + id: '3', + title: 'Slide 3', + description: 'Description 3', + image: 'image3.jpg', + }, + { + id: '4', + title: 'Slide 4', + description: 'Description 4', + image: 'image4.jpg', + }, + { + id: '5', + title: 'Slide 5', + description: 'Description 5', + image: 'image5.jpg', + }, + { + id: '6', + title: 'Slide 6', + description: 'Description 6', + image: 'image6.jpg', + }, + ]; + + const { container } = render(); + + const visibleSlides = container.querySelectorAll('.mm-carousel-slide'); + expect(visibleSlides).toHaveLength(5); + }); +}); diff --git a/ui/components/multichain/carousel/carousel.tsx b/ui/components/multichain/carousel/carousel.tsx new file mode 100644 index 000000000000..3fbbe955a8eb --- /dev/null +++ b/ui/components/multichain/carousel/carousel.tsx @@ -0,0 +1,201 @@ +import React, { useState } from 'react'; +import { Carousel as ResponsiveCarousel } from 'react-responsive-carousel'; +import { useI18nContext } from '../../../hooks/useI18nContext'; +import { Box, BoxProps, BannerBase } from '../../component-library'; +import { + TextAlign, + AlignItems, + TextVariant, + FontWeight, + BorderColor, +} from '../../../helpers/constants/design-system'; +import type { CarouselProps } from './carousel.types'; +import { BANNER_STYLES, MAX_SLIDES } from './constants'; +import { + getCenterSlidePercentage, + getSlideMargin, + getSlideWidth, +} from './helpers'; + +export const Carousel = React.forwardRef( + ( + { + slides = [], + isLoading = false, + onClose, + onClick, + ...props + }: CarouselProps, + ref: React.Ref, + ) => { + const [selectedIndex, setSelectedIndex] = useState(0); + const t = useI18nContext(); + + const visibleSlides = slides + .filter((slide) => !slide.dismissed || slide.undismissable) + .sort((a, b) => { + if (a.undismissable && !b.undismissable) { + return -1; + } + if (!a.undismissable && b.undismissable) { + return 1; + } + return 0; + }) + .slice(0, MAX_SLIDES); + + const handleClose = (e: React.MouseEvent, slideId: string) => { + e.preventDefault(); + e.stopPropagation(); + + const currentSlideIndex = visibleSlides.findIndex( + (slide) => slide.id === slideId, + ); + + let newSelectedIndex = selectedIndex; + if ( + currentSlideIndex === visibleSlides.length - 1 && + visibleSlides.length > 1 + ) { + newSelectedIndex = currentSlideIndex - 1; + } else if (currentSlideIndex < selectedIndex) { + newSelectedIndex = selectedIndex - 1; + } + + setSelectedIndex(newSelectedIndex); + + if (onClose) { + onClose(slideId); + } + }; + + const handleChange = (index: number) => { + setSelectedIndex(index); + }; + + if (isLoading) { + return ( + )}> + + {[...Array(3)].map((_, index) => ( + + ))} + + + ); + } + + if (visibleSlides.length === 0) { + return null; + } + + return ( + )} + > + handleChange(index)} + onChange={(index) => handleChange(index)} + className="mm-carousel__carousel" + showStatus={false} + autoPlay={false} + showThumbs={false} + swipeScrollTolerance={5} + swipeable={visibleSlides.length > 1} + centerSlidePercentage={getCenterSlidePercentage(visibleSlides.length)} + axis="horizontal" + preventMovementUntilSwipeScrollTolerance + emulateTouch + centerMode + > + {visibleSlides.map((slide, index) => ( + { + if (index !== selectedIndex) { + return; + } + if (slide.href) { + global.platform.openTab({ url: slide.href }); + } + onClick?.(slide.id); + }} + key={slide.id} + className="mm-carousel-slide" + startAccessory={ + + } + textAlign={TextAlign.Left} + alignItems={AlignItems.center} + title={t(slide.title)} + description={t(slide.description)} + titleProps={{ + variant: TextVariant.bodySmMedium, + fontWeight: FontWeight.Medium, + marginLeft: 2, + }} + borderColor={BorderColor.borderMuted} + descriptionProps={{ + variant: TextVariant.bodyXs, + fontWeight: FontWeight.Normal, + marginLeft: 2, + }} + onClose={ + Boolean(handleClose) && !slide.undismissable + ? (e: React.MouseEvent) => + handleClose(e, slide.id) + : undefined + } + closeButtonProps={{ + className: 'mm-carousel-slide__close-button', + }} + style={{ + height: BANNER_STYLES.HEIGHT, + margin: getSlideMargin(index, visibleSlides.length), + width: getSlideWidth(index, visibleSlides.length), + position: 'relative', + }} + padding={0} + paddingLeft={3} + paddingRight={3} + /> + ))} + + + ); + }, +); diff --git a/ui/components/multichain/carousel/carousel.types.ts b/ui/components/multichain/carousel/carousel.types.ts new file mode 100644 index 000000000000..a8aef8df4839 --- /dev/null +++ b/ui/components/multichain/carousel/carousel.types.ts @@ -0,0 +1,8 @@ +import { CarouselSlide } from '../../../../shared/constants/app-state'; + +export type CarouselProps = { + slides: CarouselSlide[]; + isLoading?: boolean; + onClose?: (id: string) => void; + onClick?: (id: string) => void; +}; diff --git a/ui/components/multichain/carousel/constants.ts b/ui/components/multichain/carousel/constants.ts new file mode 100644 index 000000000000..9a33c53a34e7 --- /dev/null +++ b/ui/components/multichain/carousel/constants.ts @@ -0,0 +1,18 @@ +export const MARGIN_VALUES = { + SLIDE_BOTTOM: '40px', + CONTAINER_SIDE: '16px', + SLIDE_GAP: '2%', + ZERO: '0', +}; + +export const WIDTH_VALUES = { + FULL_WIDTH: '100%', + STANDARD_SLIDE: '98%', + FIRST_SLIDE: '94%', +}; + +export const BANNER_STYLES = { + HEIGHT: '59px', +}; + +export const MAX_SLIDES = 5; diff --git a/ui/components/multichain/carousel/helpers.ts b/ui/components/multichain/carousel/helpers.ts new file mode 100644 index 000000000000..4bb5ab13fe6f --- /dev/null +++ b/ui/components/multichain/carousel/helpers.ts @@ -0,0 +1,30 @@ +import { MARGIN_VALUES, WIDTH_VALUES } from './constants'; + +export function getSlideMargin(index: number, totalSlides: number) { + // Single slide case + if (totalSlides === 1) { + return `${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.CONTAINER_SIDE}`; + } + + // Three or more slides case + if (index === 0) { + return `${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.SLIDE_BOTTOM} ${MARGIN_VALUES.CONTAINER_SIDE}`; + } + return `${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.ZERO} ${MARGIN_VALUES.SLIDE_BOTTOM} ${MARGIN_VALUES.ZERO}`; +} + +export function getSlideWidth(index: number, totalSlides: number) { + if (totalSlides === 1) { + return `calc(${WIDTH_VALUES.FULL_WIDTH} - 32px)`; + } + + if (index === 0) { + return `calc(${WIDTH_VALUES.STANDARD_SLIDE} - ${MARGIN_VALUES.CONTAINER_SIDE})`; + } + + return WIDTH_VALUES.STANDARD_SLIDE; +} + +export function getCenterSlidePercentage(totalSlides: number) { + return totalSlides === 1 ? 100 : 90; +} diff --git a/ui/components/multichain/carousel/index.scss b/ui/components/multichain/carousel/index.scss new file mode 100644 index 000000000000..6d940e5e1748 --- /dev/null +++ b/ui/components/multichain/carousel/index.scss @@ -0,0 +1,71 @@ +.mm-carousel { + height: 100px; +} + +.mm-carousel--single-slide { + height: 70px; + + .control-dots { + display: none !important; + } +} + +.mm-carousel-slide { + position: relative; + cursor: pointer; + + /* !important needed to override react-responsive-carousel default padding */ + padding: 0 !important; + background-color: var(--color-background-muted); + + &:hover { + background-color: var(--color-background-muted-hover); + } + + &:active, + &.active { + background-color: var(--color-background-muted-pressed); + } +} + +.mm-carousel__loading { + cursor: default; +} + +.mm-carousel-slide__accessory { + background-size: cover; + background-position: center; + height: 100%; + + /* !important needed to override react-responsive-carousel default width */ + width: 60px !important; +} + +.mm-carousel-slide__close-button { + position: absolute; + top: 8px; + right: 6px; +} + +.control-dots { + display: flex; + flex-direction: row; + justify-content: center; + height: 40px; + align-items: center; + gap: 8px; + + /* !important needed to override react-responsive-carousel default margin */ + margin: 0 !important; +} + +.dot { + /* !important rules needed to override react-responsive-carousel default styles */ + margin: 0 !important; + background: var(--color-icon-muted) !important; + box-shadow: none !important; + + &.selected { + background: var(--color-icon-default) !important; + } +} diff --git a/ui/components/multichain/carousel/index.ts b/ui/components/multichain/carousel/index.ts new file mode 100644 index 000000000000..46b782e954fc --- /dev/null +++ b/ui/components/multichain/carousel/index.ts @@ -0,0 +1 @@ +export { Carousel } from './carousel'; diff --git a/ui/components/multichain/index.js b/ui/components/multichain/index.js index 10b0a61b3eef..04b917160799 100644 --- a/ui/components/multichain/index.js +++ b/ui/components/multichain/index.js @@ -50,3 +50,4 @@ export { PermissionDetailsModal } from './permission-details-modal'; export { ReceiveModal } from './receive-modal'; export { EditNetworksModal } from './edit-networks-modal'; export { EditAccountsModal } from './edit-accounts-modal'; +export { Carousel } from './carousel'; diff --git a/ui/components/multichain/multichain-components.scss b/ui/components/multichain/multichain-components.scss index bf3191c7e994..514ad89eb9f1 100644 --- a/ui/components/multichain/multichain-components.scss +++ b/ui/components/multichain/multichain-components.scss @@ -25,6 +25,7 @@ @import 'network-list-item'; @import 'network-list-item-menu'; @import 'network-list-menu'; +@import 'carousel'; @import 'network-list-menu/add-rpc-url-modal'; @import 'network-list-menu/add-block-explorer-modal'; @import 'network-list-menu/select-rpc-url-modal'; diff --git a/ui/components/multichain/network-list-menu/__snapshots__/network-list-menu.test.js.snap b/ui/components/multichain/network-list-menu/__snapshots__/network-list-menu.test.js.snap index 095c2c16509d..fc4aa996b915 100644 --- a/ui/components/multichain/network-list-menu/__snapshots__/network-list-menu.test.js.snap +++ b/ui/components/multichain/network-list-menu/__snapshots__/network-list-menu.test.js.snap @@ -619,7 +619,7 @@ exports[`NetworkListMenu renders properly 1`] = ` style="display: flex; width: 52px; align-items: center; justify-content: flex-start; position: relative; cursor: pointer; background-color: transparent; border: 0px; padding: 0px; user-select: none;" >
{ return true; } +export function updateSlides( + slides, +): ThunkAction { + return async () => { + try { + await submitRequestToBackground('updateSlides', [slides]); + } catch (error) { + logErrorWithMessage(error); + throw error; + } + }; +} + +export function removeSlide( + id: string, +): ThunkAction, MetaMaskReduxState, unknown, AnyAction> { + return async () => { + try { + await submitRequestToBackground('removeSlide', [id]); + } catch (error) { + logErrorWithMessage(error); + throw error; + } + }; +} + // TODO: Not a thunk, but rather a wrapper around a background call export function updateTransactionGasFees( txId: string, @@ -2856,6 +2882,13 @@ export function hideLoadingIndication(): Action { }; } +export function setSlides(slides): Action { + return { + type: actionConstants.SET_SLIDES, + slides, + }; +} + export function hideNftStillFetchingIndication(): Action { return { type: actionConstants.HIDE_NFT_STILL_FETCHING_INDICATION, diff --git a/yarn.lock b/yarn.lock index 8ae140c6d516..f925a60fee76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5068,10 +5068,10 @@ __metadata: languageName: node linkType: hard -"@metamask/design-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "@metamask/design-tokens@npm:4.0.0" - checksum: 10/337968d86bf963ccdf7ab416cc8f87ec1d35d9fb56f686dea954964edd6f5cb0067a920cb2c1f9008150d3decac51cb1b392b3e67dc1d46ca308b503ffe7eabd +"@metamask/design-tokens@npm:^4.0.0, @metamask/design-tokens@npm:^4.2.0": + version: 4.2.0 + resolution: "@metamask/design-tokens@npm:4.2.0" + checksum: 10/aa92b20f8860a59b2b272e7a8a704d7e426a94030081c69c42b87ea81985c5d6585122def5906ce5a5751cb99f070efed77fabecc751ae0a7d84738f0e0ae522 languageName: node linkType: hard @@ -26421,7 +26421,7 @@ __metadata: "@metamask/build-utils": "npm:^3.0.0" "@metamask/contract-metadata": "npm:^2.5.0" "@metamask/controller-utils": "npm:^11.4.0" - "@metamask/design-tokens": "npm:^4.0.0" + "@metamask/design-tokens": "npm:^4.2.0" "@metamask/ens-controller": "npm:^15.0.0" "@metamask/ens-resolver-snap": "npm:^0.1.2" "@metamask/eslint-config": "npm:^9.0.0" From 4f970df0acec3e3bc80da08373aa3b16f23aae41 Mon Sep 17 00:00:00 2001 From: Nick Gambino <35090461+gambinish@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:33:21 -0800 Subject: [PATCH 067/111] fix: Specify popular network icons in token network filter (#29112) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Popular Networks are now only showing data from 9 popular networks, only show icons for those networks. Also show tooltip to specify which networks these are. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29112?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** https://github.com/user-attachments/assets/9787102b-f07a-4a64-b59b-194d01b105c7 ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../network-filter/network-filter.tsx | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx index 2c50824702b1..d08d01f933ee 100644 --- a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx +++ b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { setTokenNetworkFilter } from '../../../../../store/actions'; import { @@ -32,10 +32,11 @@ import { import UserPreferencedCurrencyDisplay from '../../../user-preferenced-currency-display'; import { CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP, - TEST_CHAINS, + FEATURED_NETWORK_CHAIN_IDS, } from '../../../../../../shared/constants/network'; import { useGetFormattedTokensPerChain } from '../../../../../hooks/useGetFormattedTokensPerChain'; import { useAccountTotalCrossChainFiatBalance } from '../../../../../hooks/useAccountTotalCrossChainFiatBalance'; +import InfoTooltip from '../../../../ui/info-tooltip'; type SortControlProps = { handleClose: () => void; @@ -48,7 +49,6 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => { const currentNetwork = useSelector(getCurrentNetwork); const selectedAccount = useSelector(getSelectedAccount); const allNetworks = useSelector(getNetworkConfigurationsByChainId); - const [chainsToShow, setChainsToShow] = useState([]); const tokenNetworkFilter = useSelector(getTokenNetworkFilter); const isTokenNetworkFilterEqualCurrentNetwork = useSelector( getIsTokenNetworkFilterEqualCurrentNetwork, @@ -90,19 +90,17 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => { handleClose(); }; - useEffect(() => { - const testnetChains: string[] = TEST_CHAINS; - const mainnetChainIds = Object.keys(allNetworks || {}).filter( - (chain) => !testnetChains.includes(chain), - ); - setChainsToShow(mainnetChainIds); - }, []); - const allOpts: Record = {}; Object.keys(allNetworks || {}).forEach((chain) => { allOpts[chain] = true; }); + const allAddedPopularNetworks = FEATURED_NETWORK_CHAIN_IDS.filter( + (chain) => allOpts[chain], + ).map((chain) => { + return allNetworks[chain].name; + }); + return ( <> { - {chainsToShow - .slice(0, 5) // only show a max of 5 icons overlapping - .map((chain, index) => { + + {FEATURED_NETWORK_CHAIN_IDS.filter((chain) => allOpts[chain]).map( + (chain, index) => { const networkImageUrl = CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP[ chain as keyof typeof CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP ]; return ( { }} /> ); - })} + }, + )} From 7ac49996258d26b508e96137067e3780bb77766d Mon Sep 17 00:00:00 2001 From: micaelae <100321200+micaelae@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:34:22 -0800 Subject: [PATCH 068/111] chore: add autofocus prop to AssetPicker (#29118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Adds an autofocus prop to the AssetPicker, which sets the focus of the Search bar when the asset-picker is open [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29118?quickstart=1) ## **Related issues** Fixes: N/A ## **Manual testing steps** There should be no changes to the Send page, the only experience that uses this component ## **Screenshots/Recordings** ### **Before** N/A ### **After** N/A ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../asset-picker-modal/asset-picker-modal.test.tsx | 1 + .../asset-picker-modal/asset-picker-modal.tsx | 4 +++- .../asset-picker-amount/asset-picker/asset-picker.tsx | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.test.tsx b/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.test.tsx index 724cba8a1ec6..8fb933ed2fbb 100644 --- a/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.test.tsx +++ b/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.test.tsx @@ -92,6 +92,7 @@ describe('AssetPickerModal', () => { image: 'image.png', symbol: 'SYMB', }, + autoFocus: true, }; beforeEach(() => { diff --git a/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.tsx b/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.tsx index d0b9b32988df..b8bf0a70d7f5 100644 --- a/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.tsx +++ b/ui/components/multichain/asset-picker-amount/asset-picker-modal/asset-picker-modal.tsx @@ -102,6 +102,7 @@ type AssetPickerModalProps = { AssetWithDisplayData | AssetWithDisplayData >; isTokenListLoading?: boolean; + autoFocus: boolean; } & Pick< React.ComponentProps, 'visibleTabs' | 'defaultActiveTabKey' @@ -129,6 +130,7 @@ export function AssetPickerModal({ isTokenListLoading = false, isMultiselectEnabled, selectedChainIds, + autoFocus, ...tabProps }: AssetPickerModalProps) { const t = useI18nContext(); @@ -477,7 +479,7 @@ export function AssetPickerModal({ setSearchQuery(value)} - autoFocus={!isMultiselectEnabled} + autoFocus={autoFocus} /> , | 'network' @@ -105,6 +106,7 @@ export function AssetPicker({ customTokenListGenerator, isTokenListLoading = false, isMultiselectEnabled = false, + autoFocus = true, }: AssetPickerProps) { ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) const t = useI18nContext(); @@ -248,6 +250,7 @@ export function AssetPicker({ } customTokenListGenerator={customTokenListGenerator} isTokenListLoading={isTokenListLoading} + autoFocus={autoFocus} /> {/** If a child prop is passed in, use it as the trigger button instead of the default */} From 0a790f54a0531fc36c38dbd75607b00b395b9f52 Mon Sep 17 00:00:00 2001 From: hunty Date: Wed, 11 Dec 2024 20:58:08 -0600 Subject: [PATCH 069/111] fix: (MMS-1789) bridge api called when external services disabled (#29077) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Bridge API gets called even when all privacy toggles are disabled: https://bridge.api.cx.metamask.io/getAllFeatureFlags [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29077?quickstart=1) ## **Related issues** Fixes: checks if external services are enabled (Basic Functionality toggle) before calling this API in the useBridging hook. ## **Manual testing steps** 1. Start onboarding through the MetaMask wallet. 2. During onboarding, toggle the security feature 'Basic Functionality' OFF. 3. Observe network calls to ensure this endpoint is not hit. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- ui/hooks/bridge/useBridging.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui/hooks/bridge/useBridging.ts b/ui/hooks/bridge/useBridging.ts index a8307658e285..2b7ffb0083c9 100644 --- a/ui/hooks/bridge/useBridging.ts +++ b/ui/hooks/bridge/useBridging.ts @@ -10,6 +10,7 @@ import { getIsBridgeEnabled, getMetaMetricsId, getParticipateInMetaMetrics, + getUseExternalServices, SwapsEthToken, ///: END:ONLY_INCLUDE_IF } from '../../selectors'; @@ -45,6 +46,7 @@ const useBridging = () => { const isMarketingEnabled = useSelector(getDataCollectionForMarketing); const providerConfig = useSelector(getProviderConfig); const keyring = useSelector(getCurrentKeyring); + const isExternalServicesEnabled = useSelector(getUseExternalServices); // @ts-expect-error keyring type is wrong maybe? const usingHardwareWallet = isHardwareKeyring(keyring.type); @@ -52,7 +54,9 @@ const useBridging = () => { const isBridgeChain = useSelector(getIsBridgeChain); useEffect(() => { - dispatch(setBridgeFeatureFlags()); + if (isExternalServicesEnabled) { + dispatch(setBridgeFeatureFlags()); + } }, [dispatch, setBridgeFeatureFlags]); const openBridgeExperience = useCallback( From 17d1f9036803876c6d89f8ba0f7dc84bddfcd16f Mon Sep 17 00:00:00 2001 From: Nick Gambino <35090461+gambinish@users.noreply.github.com> Date: Wed, 11 Dec 2024 20:10:46 -0800 Subject: [PATCH 070/111] fix (cherry-pick): Specify popular network icons in token network filter (#29112) (#29119) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Popular Networks are now only showing data from 9 popular networks, only show icons for those networks. Also show tooltip to specify which networks these are. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29112?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** https://github.com/user-attachments/assets/9787102b-f07a-4a64-b59b-194d01b105c7 ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29119?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../network-filter/network-filter.tsx | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx index 2c50824702b1..d08d01f933ee 100644 --- a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx +++ b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { setTokenNetworkFilter } from '../../../../../store/actions'; import { @@ -32,10 +32,11 @@ import { import UserPreferencedCurrencyDisplay from '../../../user-preferenced-currency-display'; import { CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP, - TEST_CHAINS, + FEATURED_NETWORK_CHAIN_IDS, } from '../../../../../../shared/constants/network'; import { useGetFormattedTokensPerChain } from '../../../../../hooks/useGetFormattedTokensPerChain'; import { useAccountTotalCrossChainFiatBalance } from '../../../../../hooks/useAccountTotalCrossChainFiatBalance'; +import InfoTooltip from '../../../../ui/info-tooltip'; type SortControlProps = { handleClose: () => void; @@ -48,7 +49,6 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => { const currentNetwork = useSelector(getCurrentNetwork); const selectedAccount = useSelector(getSelectedAccount); const allNetworks = useSelector(getNetworkConfigurationsByChainId); - const [chainsToShow, setChainsToShow] = useState([]); const tokenNetworkFilter = useSelector(getTokenNetworkFilter); const isTokenNetworkFilterEqualCurrentNetwork = useSelector( getIsTokenNetworkFilterEqualCurrentNetwork, @@ -90,19 +90,17 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => { handleClose(); }; - useEffect(() => { - const testnetChains: string[] = TEST_CHAINS; - const mainnetChainIds = Object.keys(allNetworks || {}).filter( - (chain) => !testnetChains.includes(chain), - ); - setChainsToShow(mainnetChainIds); - }, []); - const allOpts: Record = {}; Object.keys(allNetworks || {}).forEach((chain) => { allOpts[chain] = true; }); + const allAddedPopularNetworks = FEATURED_NETWORK_CHAIN_IDS.filter( + (chain) => allOpts[chain], + ).map((chain) => { + return allNetworks[chain].name; + }); + return ( <> { - {chainsToShow - .slice(0, 5) // only show a max of 5 icons overlapping - .map((chain, index) => { + + {FEATURED_NETWORK_CHAIN_IDS.filter((chain) => allOpts[chain]).map( + (chain, index) => { const networkImageUrl = CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP[ chain as keyof typeof CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP ]; return ( { }} /> ); - })} + }, + )} From 1e3af312f6e7866468acd02208569a5e323bbe5a Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 12 Dec 2024 06:55:04 -0330 Subject: [PATCH 071/111] chore: Revert "feat: add websocket support for c2 detection (#28782)" (#29122) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit e0f6575a6dc80913532f33202b1d3e91b31137b4, which is causing failing e2e tests on main ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29122?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/manifest/v2/_base.json | 2 - app/manifest/v3/_base.json | 4 +- app/scripts/background.js | 2 +- privacy-snapshot.json | 3 +- test/e2e/helpers.js | 44 ----------- test/e2e/tests/phishing-controller/mocks.js | 19 ++--- .../phishing-detection.spec.js | 76 +------------------ 7 files changed, 14 insertions(+), 136 deletions(-) diff --git a/app/manifest/v2/_base.json b/app/manifest/v2/_base.json index 2f41a7e987fa..f29b7458a9e5 100644 --- a/app/manifest/v2/_base.json +++ b/app/manifest/v2/_base.json @@ -66,8 +66,6 @@ "clipboardWrite", "http://*/*", "https://*/*", - "ws://*/*", - "wss://*/*", "activeTab", "webRequest", "webRequestBlocking", diff --git a/app/manifest/v3/_base.json b/app/manifest/v3/_base.json index 89758033f33a..4d6ee38437d3 100644 --- a/app/manifest/v3/_base.json +++ b/app/manifest/v3/_base.json @@ -50,9 +50,7 @@ "http://localhost:8545/", "file://*/*", "http://*/*", - "https://*/*", - "ws://*/*", - "wss://*/*" + "https://*/*" ], "icons": { "16": "images/icon-16.png", diff --git a/app/scripts/background.js b/app/scripts/background.js index 3571be9022fa..e9aaf2cab20b 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -323,7 +323,7 @@ function maybeDetectPhishing(theController) { return {}; }, { - urls: ['http://*/*', 'https://*/*', 'ws://*/*', 'wss://*/*'], + urls: ['http://*/*', 'https://*/*'], }, isManifestV2 ? ['blocking'] : [], ); diff --git a/privacy-snapshot.json b/privacy-snapshot.json index 230634421d52..49eedf275364 100644 --- a/privacy-snapshot.json +++ b/privacy-snapshot.json @@ -72,6 +72,5 @@ "unresponsive-rpc.test", "unresponsive-rpc.url", "user-storage.api.cx.metamask.io", - "www.4byte.directory", - "verify.walletconnect.com" + "www.4byte.directory" ] diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index 4ade3f2e48ba..b06c29b17acf 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -4,7 +4,6 @@ const BigNumber = require('bignumber.js'); const mockttp = require('mockttp'); const detectPort = require('detect-port'); const { difference } = require('lodash'); -const WebSocket = require('ws'); const createStaticServer = require('../../development/create-static-server'); const { setupMocking } = require('./mock-e2e'); const { Ganache } = require('./seeder/ganache'); @@ -641,48 +640,6 @@ async function unlockWallet( } } -/** - * Simulates a WebSocket connection by executing a script in the browser context. - * - * @param {WebDriver} driver - The WebDriver instance. - * @param {string} hostname - The hostname to connect to. - */ -async function createWebSocketConnection(driver, hostname) { - try { - await driver.executeScript(async (wsHostname) => { - const url = `ws://${wsHostname}:8000`; - - const socket = new WebSocket(url); - - socket.onopen = () => { - console.log('WebSocket connection opened'); - socket.send('Hello, server!'); - }; - - socket.onerror = (error) => { - console.error( - 'WebSocket error:', - error.message || 'Connection blocked', - ); - }; - - socket.onmessage = (event) => { - console.log('Message received from server:', event.data); - }; - - socket.onclose = () => { - console.log('WebSocket connection closed'); - }; - }, hostname); - } catch (error) { - console.error( - `Failed to execute WebSocket connection script for ws://${hostname}:8081`, - error, - ); - throw error; - } -} - const logInWithBalanceValidation = async (driver, ganacheServer) => { await unlockWallet(driver); // Wait for balance to load @@ -1018,5 +975,4 @@ module.exports = { tempToggleSettingRedesignedTransactionConfirmations, openMenuSafe, sentryRegEx, - createWebSocketConnection, }; diff --git a/test/e2e/tests/phishing-controller/mocks.js b/test/e2e/tests/phishing-controller/mocks.js index 3165847740bf..fe11118c6fd2 100644 --- a/test/e2e/tests/phishing-controller/mocks.js +++ b/test/e2e/tests/phishing-controller/mocks.js @@ -10,9 +10,7 @@ const { const lastUpdated = 1; const defaultHotlist = { data: [] }; const defaultC2DomainBlocklist = { - recentlyAdded: [ - '33c8e026e76cea2df82322428554c932961cd80080fa379454350d7f13371f36', // hash for malicious.localhost - ], + recentlyAdded: [], recentlyRemoved: [], lastFetchedAt: '2024-08-27T15:30:45Z', }; @@ -97,12 +95,15 @@ async function setupPhishingDetectionMocks( }; }); - await mockServer.forGet(C2_DOMAIN_BLOCKLIST_URL).thenCallback(() => { - return { - statusCode: 200, - json: defaultC2DomainBlocklist, - }; - }); + await mockServer + .forGet(C2_DOMAIN_BLOCKLIST_URL) + .withQuery({ timestamp: '2024-08-27T15:30:45Z' }) + .thenCallback(() => { + return { + statusCode: 200, + json: defaultC2DomainBlocklist, + }; + }); await mockServer .forGet('https://github.com/MetaMask/eth-phishing-detect/issues/new') diff --git a/test/e2e/tests/phishing-controller/phishing-detection.spec.js b/test/e2e/tests/phishing-controller/phishing-detection.spec.js index 98184b85224e..ad199cea1e70 100644 --- a/test/e2e/tests/phishing-controller/phishing-detection.spec.js +++ b/test/e2e/tests/phishing-controller/phishing-detection.spec.js @@ -2,13 +2,13 @@ const { strict: assert } = require('assert'); const { createServer } = require('node:http'); const { createDeferredPromise } = require('@metamask/utils'); const { until } = require('selenium-webdriver'); + const { defaultGanacheOptions, withFixtures, openDapp, unlockWallet, WINDOW_TITLES, - createWebSocketConnection, } = require('../../helpers'); const FixtureBuilder = require('../../fixture-builder'); const { @@ -315,80 +315,6 @@ describe('Phishing Detection', function () { ); }); - it('should block a website that makes a websocket connection to a malicious command and control server', async function () { - const testPageURL = 'http://localhost:8080'; - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - testSpecificMock: async (mockServer) => { - await mockServer.forAnyWebSocket().thenEcho(); - await setupPhishingDetectionMocks(mockServer, { - blockProvider: BlockProvider.MetaMask, - }); - }, - dapp: true, - }, - async ({ driver }) => { - await unlockWallet(driver); - - await driver.openNewPage(testPageURL); - - await createWebSocketConnection(driver, 'malicious.localhost'); - - await driver.switchToWindowWithTitle( - 'MetaMask Phishing Detection', - 10000, - ); - - await driver.waitForSelector({ - testId: 'unsafe-continue-loaded', - }); - - await driver.clickElement({ - text: 'Back to safety', - }); - - const currentUrl = await driver.getCurrentUrl(); - const expectedPortfolioUrl = `https://portfolio.metamask.io/?metamaskEntry=phishing_page_portfolio_button`; - - assert.equal(currentUrl, expectedPortfolioUrl); - }, - ); - }); - - it('should not block a website that makes a safe WebSocket connection', async function () { - const testPageURL = 'http://localhost:8080/'; - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - testSpecificMock: async (mockServer) => { - await mockServer.forAnyWebSocket().thenEcho(); - await setupPhishingDetectionMocks(mockServer, { - blockProvider: BlockProvider.MetaMask, - }); - }, - dapp: true, - }, - async ({ driver }) => { - await unlockWallet(driver); - - await driver.openNewPage(testPageURL); - - await createWebSocketConnection(driver, 'safe.localhost'); - - await driver.wait(until.titleIs(WINDOW_TITLES.TestDApp), 10000); - - const currentUrl = await driver.getCurrentUrl(); - - assert.equal(currentUrl, testPageURL); - }, - ); - }); - describe('Phishing redirect protections', function () { /** * Status codes 305 (via Location header) and 306 (Set-Proxy) header do not From b8f6ba7395c95a9333ab93025d07951c637ecaf3 Mon Sep 17 00:00:00 2001 From: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Date: Thu, 12 Dec 2024 04:52:26 -0500 Subject: [PATCH 072/111] fix: send up requestId for squid (#29042) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29042?quickstart=1) This PR fixes issues with calling the Bridge API for `getTxStatus` for bridges that expect a `requestId`. ## **Related issues** Fixes: ## **Manual testing steps** 1. Get a bridge quote 2. Select Axelar/Squid 3. Execute the bridge 4. See your status update correctly ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../controllers/bridge-status/utils.ts | 25 +++++++++++++++---- shared/types/bridge-status.ts | 10 ++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/scripts/controllers/bridge-status/utils.ts b/app/scripts/controllers/bridge-status/utils.ts index 33af3c09cb03..d8dbac9e1590 100644 --- a/app/scripts/controllers/bridge-status/utils.ts +++ b/app/scripts/controllers/bridge-status/utils.ts @@ -6,6 +6,7 @@ import fetchWithCache from '../../../../shared/lib/fetch-with-cache'; import { StatusResponse, StatusRequestWithSrcTxHash, + StatusRequestDto, } from '../../../../shared/types/bridge-status'; // TODO fix this // eslint-disable-next-line import/no-restricted-paths @@ -16,18 +17,32 @@ const CLIENT_ID_HEADER = { 'X-Client-Id': BRIDGE_CLIENT_ID }; export const BRIDGE_STATUS_BASE_URL = `${BRIDGE_API_BASE_URL}/getTxStatus`; -export const fetchBridgeTxStatus = async ( +export const getStatusRequestDto = ( statusRequest: StatusRequestWithSrcTxHash, -) => { - // Assemble params +): StatusRequestDto => { const { quote, ...statusRequestNoQuote } = statusRequest; + const statusRequestNoQuoteFormatted = Object.fromEntries( Object.entries(statusRequestNoQuote).map(([key, value]) => [ key, value.toString(), ]), - ); - const params = new URLSearchParams(statusRequestNoQuoteFormatted); + ) as unknown as Omit; + + const requestId: { requestId: string } | Record = + quote?.requestId ? { requestId: quote.requestId } : {}; + + return { + ...statusRequestNoQuoteFormatted, + ...requestId, + }; +}; + +export const fetchBridgeTxStatus = async ( + statusRequest: StatusRequestWithSrcTxHash, +) => { + const statusRequestDto = getStatusRequestDto(statusRequest); + const params = new URLSearchParams(statusRequestDto); // Fetch const url = `${BRIDGE_STATUS_BASE_URL}?${params.toString()}`; diff --git a/shared/types/bridge-status.ts b/shared/types/bridge-status.ts index 4c3f79bcd672..fc9357ef968a 100644 --- a/shared/types/bridge-status.ts +++ b/shared/types/bridge-status.ts @@ -28,6 +28,16 @@ export type StatusRequest = { refuel?: boolean; // lifi }; +export type StatusRequestDto = Omit< + StatusRequest, + 'quote' | 'srcChainId' | 'destChainId' | 'refuel' +> & { + srcChainId: string; // lifi, socket, squid + destChainId: string; // lifi, socket, squid + requestId?: string; + refuel?: string; // lifi +}; + export type StatusRequestWithSrcTxHash = StatusRequest & { srcTxHash: string; }; From 09b4c80d46cf040ef77dc01c7d279f9bd7db7d30 Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Thu, 12 Dec 2024 10:06:40 +0000 Subject: [PATCH 073/111] feat: Add link to pending transaction alert (#28721) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR substitutes a purely text based alert for pending transactions with one that includes a hyperlink to the docs. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28721?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/metamask-extension/issues/28308 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ![Screenshot 2024-12-02 at 11 13 58](https://github.com/user-attachments/assets/146b353d-a515-40db-95cd-5e091700cf18) ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/_locales/de/messages.json | 3 - app/_locales/el/messages.json | 3 - app/_locales/en/messages.json | 14 +++-- app/_locales/en_GB/messages.json | 3 - app/_locales/es/messages.json | 3 - app/_locales/fr/messages.json | 3 - app/_locales/hi/messages.json | 3 - app/_locales/id/messages.json | 3 - app/_locales/ja/messages.json | 3 - app/_locales/ko/messages.json | 3 - app/_locales/pt/messages.json | 3 - app/_locales/ru/messages.json | 3 - app/_locales/tl/messages.json | 3 - app/_locales/tr/messages.json | 3 - app/_locales/vi/messages.json | 3 - app/_locales/zh_CN/messages.json | 3 - jest.integration.config.js | 3 +- .../transactions/alerts.test.tsx | 2 +- .../alert-system/alert-modal/alert-modal.tsx | 15 +++-- .../general-alert/general-alert.tsx | 4 +- ui/ducks/confirm-alerts/confirm-alerts.ts | 32 ++++++++-- .../components/confirm/title/title.tsx | 1 + .../PendingTransactionAlertMessage.tsx | 32 ++++++++++ .../usePendingTransactionAlerts.test.ts | 58 +++++++++++++++++-- .../usePendingTransactionAlerts.ts | 12 ++-- 25 files changed, 141 insertions(+), 77 deletions(-) create mode 100644 ui/pages/confirmations/hooks/alerts/transactions/PendingTransactionAlertMessage.tsx diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 6d0878b57d5c..06d2f690716d 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Wir können mit dieser Transaktion nicht fortfahren, bis Sie die Gebühr manuell aktualisieren." }, - "alertMessagePendingTransactions": { - "message": "Diese Transaktion wird erst dann durchgeführt, wenn eine vorherige Transaktion abgeschlossen ist. Erfahren Sie, wie Sie eine Transaktion abbrechen oder beschleunigen können." - }, "alertMessageSignInDomainMismatch": { "message": "Die Website, die die Anfrage stellt, ist nicht die Website, bei der Sie sich anmelden. Dies könnte ein Versuch sein, Ihre Anmeldedaten zu stehlen." }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 58045c5b0578..8d09e2c6658f 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Δεν μπορούμε να συνεχίσουμε με αυτή τη συναλλαγή μέχρι να ενημερώσετε τα τέλη μη αυτόματα." }, - "alertMessagePendingTransactions": { - "message": "Αυτή η συναλλαγή δεν θα πραγματοποιηθεί μέχρι να ολοκληρωθεί μια προηγούμενη συναλλαγή. Μάθετε πώς να ακυρώσετε ή να επισπεύσετε μια συναλλαγή." - }, "alertMessageSignInDomainMismatch": { "message": "Ο ιστότοπος που υποβάλλει το αίτημα δεν είναι ο ιστότοπος στον οποίο έχετε συνδεθεί. Αυτό θα μπορούσε να είναι μια απόπειρα κλοπής των στοιχείων σύνδεσής σας." }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index f42a539277d1..9d63e212d88c 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -440,9 +440,6 @@ "alertMessageNoGasPrice": { "message": "We can’t move forward with this transaction until you manually update the fee." }, - "alertMessagePendingTransactions": { - "message": "This transaction won’t go through until a previous transaction is complete. Learn how to cancel or speed up a transaction." - }, "alertMessageSignInDomainMismatch": { "message": "The site making the request is not the site you’re signing into. This could be an attempt to steal your login credentials." }, @@ -750,8 +747,7 @@ "message": "Beta" }, "betaHeaderText": { - "message": "This is a beta version. Please report bugs $1", - "description": "$1 represents the word 'here' in a hyperlink" + "message": "This is a beta version. Please report bugs $1" }, "betaMetamaskInstitutionalVersion": { "message": "MetaMask Institutional Beta Version" @@ -3994,6 +3990,14 @@ "pending": { "message": "Pending" }, + "pendingTransactionAlertMessage": { + "message": "This transaction won't go through until a previous transaction is complete. $1", + "description": "$1 represents the words 'how to cancel or speed up a transaction' in a hyperlink" + }, + "pendingTransactionAlertMessageHyperlink": { + "message": "Learn how to cancel or speed up a transaction.", + "description": "The text for the hyperlink in the pending transaction alert message" + }, "pendingTransactionInfo": { "message": "This transaction will not process until that one is complete." }, diff --git a/app/_locales/en_GB/messages.json b/app/_locales/en_GB/messages.json index 2addf34f3c26..c72cccd973d9 100644 --- a/app/_locales/en_GB/messages.json +++ b/app/_locales/en_GB/messages.json @@ -421,9 +421,6 @@ "alertMessageNoGasPrice": { "message": "We can’t move forward with this transaction until you manually update the fee." }, - "alertMessagePendingTransactions": { - "message": "This transaction won’t go through until a previous transaction is complete. Learn how to cancel or speed up a transaction." - }, "alertMessageSignInDomainMismatch": { "message": "The site making the request is not the site you’re signing into. This could be an attempt to steal your login credentials." }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index f5bec514637e..2861d508743d 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "No podemos seguir adelante con esta transacción hasta que actualice manualmente la tarifa." }, - "alertMessagePendingTransactions": { - "message": "Esta transacción no se realizará hasta que se complete una transacción anterior. Aprenda cómo cancelar o acelerar una transacción." - }, "alertMessageSignInDomainMismatch": { "message": "El sitio que realiza la solicitud no es el sitio en el que está iniciando sesión. Esto podría ser un intento de robar sus credenciales de inicio de sesión." }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 4d5e59b25c52..5ae9377d8a69 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Nous ne pouvons pas valider cette transaction tant que vous n’avez pas mis à jour manuellement les frais." }, - "alertMessagePendingTransactions": { - "message": "La transaction précédente doit être finalisée avant que celle-ci ne soit traitée. Découvrez comment vous pouvez annuler ou accélérer une transaction." - }, "alertMessageSignInDomainMismatch": { "message": "Le site auquel vous êtes en train de vous connecter n’est pas le site à l’origine de la demande. Il pourrait s’agir d’une tentative de vol de vos identifiants de connexion." }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index 2d4bcc52b891..a036aef959ce 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "जब तक आप शुल्क को मैन्युअल रूप से अपडेट नहीं करते, हम इस ट्रांसेक्शन को आगे नहीं बढ़ा सकते।" }, - "alertMessagePendingTransactions": { - "message": "यह ट्रांसेक्शन तब तक नहीं होगा जब तक पिछला ट्रांसेक्शन पूरा न हो जाए। किसी ट्रांसेक्शन को रद्द करने या तेज़ करने का तरीका जानें।" - }, "alertMessageSignInDomainMismatch": { "message": "अनुरोध करने वाली साइट वह साइट नहीं है जिस पर आप साइन इन कर रहे हैं। यह आपके लॉगिन क्रेडेंशियल चुराने का प्रयास हो सकता है।" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 9135a2e56bcf..5777f05c2322 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Kami tidak dapat melanjutkan transaksi ini hingga Anda memperbarui biayanya secara manual." }, - "alertMessagePendingTransactions": { - "message": "Transaksi ini tidak akan dilanjutkan hingga transaksi sebelumnya selesai. Pelajari cara membatalkan atau mempercepat transaksi." - }, "alertMessageSignInDomainMismatch": { "message": "Situs yang membuat permintaan bukanlah situs yang Anda masuki. Ini dapat merupakan upaya untuk mencuri kredensial login Anda." }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 8404c4eb3af4..561411606feb 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "手数料を手動で更新するまでこのトランザクションを進めることができません。" }, - "alertMessagePendingTransactions": { - "message": "前のトランザクションが完了するまでこのトランザクションを実行できません。トランザクションをキャンセルするか加速させる方法をご覧ください。" - }, "alertMessageSignInDomainMismatch": { "message": "要求元のサイトはサインインしようとしているサイトではありません。ログイン情報を盗もうとしている可能性があります。" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index cbd48592c7d0..941010db2abe 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "수수료를 직접 업데이트할 때까지는 이 트랜잭션을 진행할 수 없습니다." }, - "alertMessagePendingTransactions": { - "message": "이 트랜잭션은 이전 트랜잭션이 완료될 때까지 진행되지 않습니다. 트랜잭션을 취소하거나 속도를 올리는 법을 알아보세요." - }, "alertMessageSignInDomainMismatch": { "message": "요청을 보낸 사이트에 로그인되어 있지 않습니다. 이는 로그인 정보를 도용하려는 시도일 수 있습니다." }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index 3a01b378c686..553b0ad31508 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Não podemos prosseguir com essa transação até você atualizar manualmente a taxa." }, - "alertMessagePendingTransactions": { - "message": "Essa transação não será processada até que a transação anterior seja concluída. Saiba como cancelar ou acelerar uma transação." - }, "alertMessageSignInDomainMismatch": { "message": "O site solicitante não é o mesmo em que você está entrando. Isso pode se tratar de uma tentativa de roubar suas credenciais de login." }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 385670721c1f..1403b6084d27 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Мы не сможем продолжить эту транзакцию, пока вы не обновите комиссию вручную." }, - "alertMessagePendingTransactions": { - "message": "Эта транзакция не будет выполнена, пока не завершится предыдущая транзакция. Узнайте, как отменить или ускорить транзакцию." - }, "alertMessageSignInDomainMismatch": { "message": "Сайт, отправляющий запрос, не является сайтом, на который вы входите. Это может быть попыткой украсть ваши учетные данные." }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index a13c9c6d3006..60855b61765d 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Hindi tayo makakapagpatuloy sa transaksyong ito hanggang sa manwal mong i-update ang bayad." }, - "alertMessagePendingTransactions": { - "message": "Hindi magpapatuloy ang transaksyong ito hanggang makumpleto ang naunang transaksyon. Alamin kung paano kanselahin o pabilisin ang transaksyon." - }, "alertMessageSignInDomainMismatch": { "message": "Ang site na humihiling ay hindi ang site kung saan ka nagsa-signin. Ito ay maaring isang pagtatangka para nakawin ang iyong mga kredensiyal sa pag-login." }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 8f761e554caa..6bcd1b8a61fc 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Siz ücreti manuel olarak güncelleyene dek bu işleme devam edemiyoruz." }, - "alertMessagePendingTransactions": { - "message": "Önceki bir işlem tamamlanana dek bu işlem gerçekleşmeyecektir. Bir işlemi nasıl iptal edeceğinizi veya hızlandıracağınızı öğrenin." - }, "alertMessageSignInDomainMismatch": { "message": "Talepte bulunan site giriş yaptığınız site değil. Bu durum oturum açma bilgilerinizi çalma teşebbüsü olabilir." }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 883f08f49a7e..3901eed1fc07 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "Chúng tôi không thể tiếp tục giao dịch này cho đến khi bạn cập nhật phí thủ công." }, - "alertMessagePendingTransactions": { - "message": "Giao dịch này sẽ không được thực hiện cho đến khi giao dịch trước đó hoàn tất. Tìm hiểu cách hủy hoặc đẩy nhanh giao dịch." - }, "alertMessageSignInDomainMismatch": { "message": "Trang web đưa ra yêu cầu không phải là trang web bạn đang đăng nhập. Đây có thể là một nỗ lực đánh cắp thông tin đăng nhập của bạn." }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index fb7ed008d6f6..4d548221769f 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -437,9 +437,6 @@ "alertMessageNoGasPrice": { "message": "您手动更新费用后,我们才能继续进行此交易。" }, - "alertMessagePendingTransactions": { - "message": "上一笔交易完成后,此交易才能继续进行。了解如何取消或加快交易。" - }, "alertMessageSignInDomainMismatch": { "message": "提出请求的网站不是您正在登录的网站。这可能试图窃取您的登录凭据。" }, diff --git a/jest.integration.config.js b/jest.integration.config.js index 685080330fb3..5a110d7a5632 100644 --- a/jest.integration.config.js +++ b/jest.integration.config.js @@ -25,8 +25,7 @@ module.exports = { setupFilesAfterEnv: ['/test/integration/config/setupAfter.js'], testMatch: ['/test/integration/**/*.test.(js|ts|tsx)'], testPathIgnorePatterns: ['/test/integration/config/*'], - // This was increased from 5500 to 10000 to when lazy loading was introduced - testTimeout: 10000, + testTimeout: 15000, // We have to specify the environment we are running in, which is jsdom. The // default is 'node'. This can be modified *per file* using a comment at the // head of the file. So it may be worthwhile to switch to 'node' in any diff --git a/test/integration/confirmations/transactions/alerts.test.tsx b/test/integration/confirmations/transactions/alerts.test.tsx index ffbad48b352b..72acf02efc60 100644 --- a/test/integration/confirmations/transactions/alerts.test.tsx +++ b/test/integration/confirmations/transactions/alerts.test.tsx @@ -362,7 +362,7 @@ describe('Contract Interaction Confirmation Alerts', () => { expect( await screen.findByTestId('alert-modal__selected-alert'), ).toHaveTextContent( - 'This transaction won’t go through until a previous transaction is complete. Learn how to cancel or speed up a transaction.', + "This transaction won't go through until a previous transaction is complete. Learn how to cancel or speed up a transaction.", ); }); diff --git a/ui/components/app/alert-system/alert-modal/alert-modal.tsx b/ui/components/app/alert-system/alert-modal/alert-modal.tsx index 10f5d90c3e77..2eb78fba44c1 100644 --- a/ui/components/app/alert-system/alert-modal/alert-modal.tsx +++ b/ui/components/app/alert-system/alert-modal/alert-modal.tsx @@ -164,12 +164,15 @@ function AlertDetails({ > {customDetails ?? ( - - {selectedAlert.message} - + {Boolean(selectedAlert.content) && selectedAlert.content} + {Boolean(selectedAlert.message) && ( + + {selectedAlert.message} + + )} {selectedAlert.alertDetails?.length ? ( {t('alertModalDetails')} diff --git a/ui/components/app/alert-system/general-alert/general-alert.tsx b/ui/components/app/alert-system/general-alert/general-alert.tsx index 5ac2b2a335fb..5c222902b3ab 100644 --- a/ui/components/app/alert-system/general-alert/general-alert.tsx +++ b/ui/components/app/alert-system/general-alert/general-alert.tsx @@ -21,13 +21,14 @@ import { AlertProvider } from '../alert-provider'; import { AlertSeverity } from '../../../../ducks/confirm-alerts/confirm-alerts'; export type GeneralAlertProps = { - description: string; + description?: string; details?: React.ReactNode | string[]; onClickSupportLink?: () => void; provider?: SecurityProvider; reportUrl?: string; severity: AlertSeverity; title?: string; + children?: React.ReactNode; }; function ReportLink({ @@ -119,6 +120,7 @@ function GeneralAlert({ description={description} {...props} > + {props.children} ))} diff --git a/ui/pages/confirmations/hooks/alerts/transactions/PendingTransactionAlertMessage.tsx b/ui/pages/confirmations/hooks/alerts/transactions/PendingTransactionAlertMessage.tsx new file mode 100644 index 000000000000..472567ddb093 --- /dev/null +++ b/ui/pages/confirmations/hooks/alerts/transactions/PendingTransactionAlertMessage.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { ButtonLink, Text } from '../../../../../components/component-library'; +import { + TextColor, + TextVariant, +} from '../../../../../helpers/constants/design-system'; +import ZENDESK_URLS from '../../../../../helpers/constants/zendesk-url'; +import { useI18nContext } from '../../../../../hooks/useI18nContext'; + +export const PendingTransactionAlertMessage = () => { + const t = useI18nContext(); + + return ( + + {t('pendingTransactionAlertMessage', [ + + {t('pendingTransactionAlertMessageHyperlink')} + , + ])} + + ); +}; diff --git a/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.test.ts b/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.test.ts index b9b3d12dc7d0..f7be0f93e2c1 100644 --- a/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.test.ts +++ b/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.test.ts @@ -4,14 +4,34 @@ import { TransactionStatus, TransactionType, } from '@metamask/transaction-controller'; - -import { getMockConfirmState } from '../../../../../../test/data/confirmations/helper'; +import { useSelector } from 'react-redux'; +import { useParams } from 'react-router-dom'; import { genUnapprovedContractInteractionConfirmation } from '../../../../../../test/data/confirmations/contract-interaction'; +import { getMockConfirmState } from '../../../../../../test/data/confirmations/helper'; import { renderHookWithConfirmContextProvider } from '../../../../../../test/lib/confirmations/render-helpers'; -import { Severity } from '../../../../../helpers/constants/design-system'; import { RowAlertKey } from '../../../../../components/app/confirm/info/row/constants'; +import { Severity } from '../../../../../helpers/constants/design-system'; +import { + getRedesignedTransactionsEnabled, + submittedPendingTransactionsSelector, +} from '../../../../../selectors'; +import { PendingTransactionAlertMessage } from './PendingTransactionAlertMessage'; import { usePendingTransactionAlerts } from './usePendingTransactionAlerts'; +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest.fn(), +})); + +jest.mock('./PendingTransactionAlertMessage', () => ({ + PendingTransactionAlertMessage: () => 'PendingTransactionAlertMessage', +})); + +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useParams: jest.fn().mockReturnValue({ id: 'mock-transaction-id' }), +})); + const ACCOUNT_ADDRESS = '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc'; const TRANSACTION_ID_MOCK = '123-456'; @@ -63,8 +83,19 @@ function runHook({ } describe('usePendingTransactionAlerts', () => { + const useSelectorMock = useSelector as jest.Mock; + beforeEach(() => { jest.resetAllMocks(); + + (useParams as jest.Mock).mockReturnValue({ id: 'mock-transaction-id' }); + + useSelectorMock.mockImplementation((selector) => { + if (selector.toString().includes('pendingApprovalsSortedSelector')) { + return []; + } + return undefined; + }); }); it('returns no alerts if no confirmation', () => { @@ -121,6 +152,24 @@ describe('usePendingTransactionAlerts', () => { }); it('returns alert if submitted transaction', () => { + useSelectorMock.mockImplementation((selector) => { + if (selector === submittedPendingTransactionsSelector) { + return [ + { name: 'first transaction', id: '1' }, + { name: 'second transaction', id: '2' }, + ]; + } else if (selector === getRedesignedTransactionsEnabled) { + return true; + } else if (selector.toString().includes('getUnapprovedTransaction')) { + return { type: TransactionType.contractInteraction }; + } else if ( + selector.toString().includes('pendingApprovalsSortedSelector') + ) { + return []; + } + return undefined; + }); + const alerts = runHook({ currentConfirmation: CONFIRMATION_MOCK, transactions: [TRANSACTION_META_MOCK], @@ -130,8 +179,7 @@ describe('usePendingTransactionAlerts', () => { { field: RowAlertKey.Speed, key: 'pendingTransactions', - message: - 'This transaction won’t go through until a previous transaction is complete. Learn how to cancel or speed up a transaction.', + content: PendingTransactionAlertMessage(), reason: 'Pending transaction', severity: Severity.Warning, }, diff --git a/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.ts b/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.ts index 5753b5329ea8..6ef15b5ff41f 100644 --- a/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.ts +++ b/ui/pages/confirmations/hooks/alerts/transactions/usePendingTransactionAlerts.ts @@ -1,14 +1,14 @@ import { TransactionMeta } from '@metamask/transaction-controller'; import { useMemo } from 'react'; import { useSelector } from 'react-redux'; - -import { submittedPendingTransactionsSelector } from '../../../../../selectors'; -import { useI18nContext } from '../../../../../hooks/useI18nContext'; +import { isCorrectDeveloperTransactionType } from '../../../../../../shared/lib/confirmation.utils'; +import { RowAlertKey } from '../../../../../components/app/confirm/info/row/constants'; import { Alert } from '../../../../../ducks/confirm-alerts/confirm-alerts'; import { Severity } from '../../../../../helpers/constants/design-system'; -import { RowAlertKey } from '../../../../../components/app/confirm/info/row/constants'; +import { useI18nContext } from '../../../../../hooks/useI18nContext'; +import { submittedPendingTransactionsSelector } from '../../../../../selectors'; import { useConfirmContext } from '../../../context/confirm'; -import { isCorrectDeveloperTransactionType } from '../../../../../../shared/lib/confirmation.utils'; +import { PendingTransactionAlertMessage } from './PendingTransactionAlertMessage'; export function usePendingTransactionAlerts(): Alert[] { const t = useI18nContext(); @@ -30,7 +30,7 @@ export function usePendingTransactionAlerts(): Alert[] { { field: RowAlertKey.Speed, key: 'pendingTransactions', - message: t('alertMessagePendingTransactions'), + content: PendingTransactionAlertMessage(), reason: t('alertReasonPendingTransactions'), severity: Severity.Warning, }, From 714fa10bd5f1a78e20d46965802eae087ad6fa33 Mon Sep 17 00:00:00 2001 From: Alejandro Garcia Anglada Date: Thu, 12 Dec 2024 11:51:28 +0100 Subject: [PATCH 074/111] fix: solana balance on accounts selector (#29054) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Screenshot 2024-12-10 at 15 45 14 ## **Description** Solana native balance weren't showing before [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29054?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** As of right now, manually testing is a bit complex, it needs to run the snap manually and the extension, since we 1st need to publish a new release to npm with more up to date work. The snap version we have in npm is outdated and won't support this flow. That said, if you want to go ahead and run locally the steps are the following: 1. Clone the [ Solana Snap monorepo](https://github.com/MetaMask/snap-solana-wallet) and run it locally with `yarn` and then `yarn start` 2. In the extension, at this branch, apply the following changes and run the extension as flask: ``` At builds.yml add the solana feature to the flask build: features: - build-flask - keyring-snaps + - solana At shared/lib/accounts/solana-wallet-snap.ts point the snap ID to the snap localhost: -export const SOLANA_WALLET_SNAP_ID: SnapId = SolanaWalletSnap.snapId as SnapId; +//export const SOLANA_WALLET_SNAP_ID: SnapId = SolanaWalletSnap.snapId as SnapId; +export const SOLANA_WALLET_SNAP_ID: SnapId = "local:http://localhost:8080/"; ``` 3. Manually install the snap via the snap dapp at http://localhost:3000 4. Enable the Solana account via Settings > Experimental > Enable Solana account 5. Create a Solana account from the account-list menu and see the account balance on it ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- package.json | 2 +- .../account-list-item.test.js.snap | 37 ++++++++++++------- .../account-list-item/account-list-item.js | 5 +-- .../account-list-item.test.js | 6 +-- yarn.lock | 31 +++------------- 5 files changed, 35 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index 223372f5dcc5..601400f80f7a 100644 --- a/package.json +++ b/package.json @@ -347,7 +347,7 @@ "@metamask/snaps-rpc-methods": "^11.7.0", "@metamask/snaps-sdk": "^6.13.0", "@metamask/snaps-utils": "^8.6.1", - "@metamask/solana-wallet-snap": "^0.1.9", + "@metamask/solana-wallet-snap": "^1.0.3", "@metamask/transaction-controller": "^42.0.0", "@metamask/user-operation-controller": "^19.0.0", "@metamask/utils": "^10.0.1", diff --git a/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap b/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap index ab9bc540fe7a..fb3bed6fd34b 100644 --- a/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap +++ b/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap @@ -269,25 +269,36 @@ exports[`AccountListItem renders AccountListItem component and shows account nam

+ BTC logo +
+
-
- undefined logo -
+ 1 + + + BTC +
diff --git a/ui/components/multichain/account-list-item/account-list-item.js b/ui/components/multichain/account-list-item/account-list-item.js index 365d09de8ecf..3ab048597f40 100644 --- a/ui/components/multichain/account-list-item/account-list-item.js +++ b/ui/components/multichain/account-list-item/account-list-item.js @@ -367,8 +367,7 @@ const AccountListItem = ({ {shortenAddress(normalizeSafeAddress(account.address))} - {/* For non-EVM networks we always want to show tokens */} - {mappedOrderedTokenList.length > 1 || !isEvmNetwork ? ( + {mappedOrderedTokenList.length > 1 ? ( ) : ( { expect(avatarGroup).not.toBeInTheDocument(); }); - it('renders fiat for non-EVM account', () => { + it('renders fiat and native balance for non-EVM account', () => { const { container } = render( { account: mockNonEvmAccount, @@ -308,8 +308,8 @@ describe('AccountListItem', () => { expectedBalance, ); expect(firstCurrencyDisplay.lastChild.textContent).toContain('USD'); - expect(secondCurrencyDisplay).not.toBeInTheDocument(); - expect(avatarGroup).toBeInTheDocument(); + expect(secondCurrencyDisplay.textContent).toContain('1BTC'); + expect(avatarGroup).not.toBeInTheDocument(); }); }); }); diff --git a/yarn.lock b/yarn.lock index f925a60fee76..e61b6efeef05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5605,23 +5605,6 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-api@npm:^9.0.0": - version: 9.0.0 - resolution: "@metamask/keyring-api@npm:9.0.0" - dependencies: - "@metamask/snaps-sdk": "npm:^6.7.0" - "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^9.2.1" - "@types/uuid": "npm:^9.0.8" - bech32: "npm:^2.0.0" - uuid: "npm:^9.0.1" - webextension-polyfill: "npm:^0.12.0" - peerDependencies: - "@metamask/providers": ^17.2.0 - checksum: 10/ff552c04a4d06c7b1a43d52809a9c141d38772586388f0ab96123bce445f148aa7f7e8165d03fa92ac391351de252c4b299fc2c16e690193f669b5329941fe75 - languageName: node - linkType: hard - "@metamask/keyring-controller@npm:^19.0.0, @metamask/keyring-controller@npm:^19.0.1": version: 19.0.1 resolution: "@metamask/keyring-controller@npm:19.0.1" @@ -6296,14 +6279,10 @@ __metadata: languageName: node linkType: hard -"@metamask/solana-wallet-snap@npm:^0.1.9": - version: 0.1.9 - resolution: "@metamask/solana-wallet-snap@npm:0.1.9" - dependencies: - "@metamask/keyring-api": "npm:^9.0.0" - "@metamask/snaps-sdk": "npm:^6.9.0" - buffer: "npm:^6.0.3" - checksum: 10/ec540948e1b5c693b0a31a32521d84c5d3796a5d62d1dfa0986cae47483040a0381c30419af4a86b2402efa5e95283b45a5d17bb705c11a181d0c6fa70b5be60 +"@metamask/solana-wallet-snap@npm:^1.0.3": + version: 1.0.3 + resolution: "@metamask/solana-wallet-snap@npm:1.0.3" + checksum: 10/4c7c0f05676e7bb84140226c1a3bd716493a6f3582142de83575df682e8351c7583fc5db6209fbde1b43f376fd4eda4d2063f0e651d8209e92001514fc8caf81 languageName: node linkType: hard @@ -26485,7 +26464,7 @@ __metadata: "@metamask/snaps-rpc-methods": "npm:^11.7.0" "@metamask/snaps-sdk": "npm:^6.13.0" "@metamask/snaps-utils": "npm:^8.6.1" - "@metamask/solana-wallet-snap": "npm:^0.1.9" + "@metamask/solana-wallet-snap": "npm:^1.0.3" "@metamask/test-bundler": "npm:^1.0.0" "@metamask/test-dapp": "npm:8.13.0" "@metamask/transaction-controller": "npm:^42.0.0" From 2e8ef02370f72febe0fa40370db62b7d61b641f0 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 12 Dec 2024 07:46:55 -0330 Subject: [PATCH 075/111] fix: Revert gridplus sdk version bumps (#29125) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR reverts #27973 and #28008, and then forces an secp256k1 resolution to deal with a yarn audit failure. This is necessary to fix typed message signing with the lattice gridplus hardware wallet. All of this had been done on release branches and master in the past, when it should have been done directly on develop. We do want to restore the #27973 and #28008 changes soon, but that requires getting to root of why those changes result in typed message signing failure with lattice griduplus [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29125?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** Test "Sign Typed Message" v4 in the test dapp with a gridplus hardware wallet. It should succeed without error ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Charly Chevalier Co-authored-by: MetaMask Bot --- lavamoat/browserify/beta/policy.json | 238 +++++++++------- lavamoat/browserify/flask/policy.json | 238 +++++++++------- lavamoat/browserify/main/policy.json | 238 +++++++++------- lavamoat/browserify/mmi/policy.json | 238 +++++++++------- package.json | 24 +- yarn.lock | 380 ++++++++++++++++---------- 6 files changed, 820 insertions(+), 536 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 79058c8c6954..4212ef454eea 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -188,8 +183,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -197,32 +192,14 @@ "TextEncoder": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -389,9 +366,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -401,15 +378,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1608,12 +1586,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -2364,9 +2348,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2376,7 +2371,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2615,6 +2610,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2627,7 +2623,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2639,14 +2634,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3101,23 +3088,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3749,16 +3719,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3776,54 +3789,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -3837,6 +3863,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -3858,24 +3889,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4199,9 +4234,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 79058c8c6954..4212ef454eea 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -188,8 +183,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -197,32 +192,14 @@ "TextEncoder": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -389,9 +366,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -401,15 +378,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1608,12 +1586,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -2364,9 +2348,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2376,7 +2371,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2615,6 +2610,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2627,7 +2623,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2639,14 +2634,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3101,23 +3088,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3749,16 +3719,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3776,54 +3789,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -3837,6 +3863,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -3858,24 +3889,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4199,9 +4234,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 79058c8c6954..4212ef454eea 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -188,8 +183,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -197,32 +192,14 @@ "TextEncoder": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -389,9 +366,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -401,15 +378,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1608,12 +1586,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -2364,9 +2348,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2376,7 +2371,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2615,6 +2610,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2627,7 +2623,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2639,14 +2634,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3101,23 +3088,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3749,16 +3719,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3776,54 +3789,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -3837,6 +3863,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -3858,24 +3889,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4199,9 +4234,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 08a75ac8612b..5234fe8d6fbb 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -188,8 +183,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -197,32 +192,14 @@ "TextEncoder": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -389,9 +366,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -401,15 +378,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1700,12 +1678,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -2456,9 +2440,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2468,7 +2463,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2707,6 +2702,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2719,7 +2715,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2731,14 +2726,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3193,23 +3180,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3841,16 +3811,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3868,54 +3881,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -3929,6 +3955,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -3950,24 +3981,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4291,9 +4326,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/package.json b/package.json index 601400f80f7a..8533cd4b4e16 100644 --- a/package.json +++ b/package.json @@ -134,11 +134,6 @@ }, "resolutions": { "chokidar": "^3.6.0", - "gridplus-sdk/elliptic": "^6.5.7", - "gridplus-sdk/secp256k1": "^5.0.1", - "eth-lattice-keyring/@ethereumjs/tx": "^4.2.0", - "@ethersproject/signing-key/elliptic": "^6.5.7", - "ganache/secp256k1": "^4.0.4", "simple-update-notifier@^1.0.0": "^2.0.0", "@types/react": "^16.9.53", "analytics-node/axios": "^0.21.2", @@ -251,7 +246,11 @@ "@ledgerhq/hw-app-eth@npm:^6.39.0": "patch:@ledgerhq/hw-app-eth@npm%3A6.39.0#~/.yarn/patches/@ledgerhq-hw-app-eth-npm-6.39.0-866309bbbe.patch", "@ledgerhq/evm-tools@npm:^1.2.3": "patch:@ledgerhq/evm-tools@npm%3A1.2.3#~/.yarn/patches/@ledgerhq-evm-tools-npm-1.2.3-414f44baa9.patch", "cross-spawn@npm:^5.0.1": "^7.0.6", - "@solana/web3.js@npm:^1.95.0": "^1.95.8" + "@solana/web3.js@npm:^1.95.0": "^1.95.8", + "secp256k1@npm:^4.0.0": "4.0.4", + "secp256k1@npm:^4.0.1": "4.0.4", + "secp256k1@npm:4.0.2": "4.0.4", + "secp256k1@npm:4.0.3": "4.0.4" }, "dependencies": { "@babel/runtime": "patch:@babel/runtime@npm%3A7.25.9#~/.yarn/patches/@babel-runtime-npm-7.25.9-fe8c62510a.patch", @@ -692,10 +691,17 @@ "@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>hdkey>secp256k1": false, "@storybook/api>core-js": false, "@storybook/core>@storybook/core-client>@storybook/ui>core-js-pure": false, "@storybook/test-runner>@storybook/core-common>esbuild": false, - "eth-lattice-keyring>gridplus-sdk": true, + "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-lattice-keyring>gridplus-sdk": false, "ethereumjs-util>ethereum-cryptography>keccak": false, "ganache>@trufflesuite/bigint-buffer": false, "ganache>@trufflesuite/uws-js-unofficial>bufferutil": false, @@ -705,10 +711,13 @@ "ganache>leveldown": false, "ganache>secp256k1": false, "ganache>utf-8-validate": false, + "ethereumjs-util>ethereum-cryptography>secp256k1": false, "gulp-watch>chokidar>fsevents": false, "gulp>glob-watcher>chokidar>fsevents": false, "webpack>watchpack>watchpack-chokidar2>chokidar>fsevents": false, + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": false, "eth-lattice-keyring>gridplus-sdk>secp256k1": false, + "eth-lattice-keyring>secp256k1": false, "@storybook/react>@pmmmwh/react-refresh-webpack-plugin>core-js-pure": false, "@testing-library/jest-dom>aria-query>@babel/runtime-corejs3>core-js-pure": false, "web3": false, @@ -717,6 +726,7 @@ "web3>web3-core>web3-core-requestmanager>web3-providers-ws>websocket>es5-ext": false, "web3>web3-core>web3-core-requestmanager>web3-providers-ws>websocket>utf-8-validate": false, "web3>web3-shh": false, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>hdkey>secp256k1": false, "@metamask/base-controller>simple-git-hooks": false, "@storybook/core>@storybook/core-server>webpack>watchpack>watchpack-chokidar2>chokidar>fsevents": false, "resolve-url-loader>es6-iterator>es5-ext": false, diff --git a/yarn.lock b/yarn.lock index e61b6efeef05..a4163ea118e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1684,6 +1684,33 @@ __metadata: languageName: node linkType: hard +"@chainsafe/as-sha256@npm:^0.3.1": + version: 0.3.1 + resolution: "@chainsafe/as-sha256@npm:0.3.1" + checksum: 10/3bae7b4bc6e307baa3cf1f9d2c75827874cd0fb458bc592656d741d374b48e71c042fe21616a506cb821487a5abfc6b92181e4b7fbf49b7370cee4df0b67d95a + languageName: node + linkType: hard + +"@chainsafe/persistent-merkle-tree@npm:^0.4.2": + version: 0.4.2 + resolution: "@chainsafe/persistent-merkle-tree@npm:0.4.2" + dependencies: + "@chainsafe/as-sha256": "npm:^0.3.1" + checksum: 10/a7e59f80be3ce0a86fe452a3c003bd159a1719ed22cae22e9841668f0eda8c35412fa16b3b150d96f583a24f430a5cc2a1bfcabafc1b9cf6e1fdb227e98c4dc7 + languageName: node + linkType: hard + +"@chainsafe/ssz@npm:0.9.4": + version: 0.9.4 + resolution: "@chainsafe/ssz@npm:0.9.4" + dependencies: + "@chainsafe/as-sha256": "npm:^0.3.1" + "@chainsafe/persistent-merkle-tree": "npm:^0.4.2" + case: "npm:^1.6.3" + checksum: 10/2fe83d0b3ef131e14b51b88bb3343b14e7a02185fa9fd3da84b4726dbd857daaa4f7f6f4840fe3772fc1380352b1675a13b5f6153c4211c0f00ffa542b62bf2f + languageName: node + linkType: hard + "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -2295,16 +2322,17 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/common@npm:4.3.0": - version: 4.3.0 - resolution: "@ethereumjs/common@npm:4.3.0" +"@ethereumjs/common@npm:3.1.1": + version: 3.1.1 + resolution: "@ethereumjs/common@npm:3.1.1" dependencies: - "@ethereumjs/util": "npm:^9.0.3" - checksum: 10/90f7fe1ba6827b65cd25e9bb4adf07a117ea554a950bb364d5fd9873cb770d383addb0ad34839a91fbec22ebc25516c6fb7e70ae0198c78f933920bf39797a94 + "@ethereumjs/util": "npm:^8.0.5" + crc-32: "npm:^1.2.0" + checksum: 10/dcc3dd9ec23e8817ec0bf5bb2217619a8db08ea937603258831a906702e79c6f6e93b47d6edde551c7f46ce4a0268febacc23cefcb4ca2865be3b5c0bf5ec670 languageName: node linkType: hard -"@ethereumjs/common@npm:^3.2.0": +"@ethereumjs/common@npm:^3.1.1, @ethereumjs/common@npm:^3.2.0": version: 3.2.0 resolution: "@ethereumjs/common@npm:3.2.0" dependencies: @@ -2341,15 +2369,22 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/tx@npm:5.3.0": - version: 5.3.0 - resolution: "@ethereumjs/tx@npm:5.3.0" +"@ethereumjs/tx@npm:4.1.1": + version: 4.1.1 + resolution: "@ethereumjs/tx@npm:4.1.1" dependencies: - "@ethereumjs/common": "npm:^4.3.0" - "@ethereumjs/rlp": "npm:^5.0.2" - "@ethereumjs/util": "npm:^9.0.3" - ethereum-cryptography: "npm:^2.1.3" - checksum: 10/4eb48e763d81ea0978648367d61c568c8d10f769c1ea7d32307ebe02299d4fa9fe5d7bf794ec1ee22e92edef6bfe1f459d5816e1c62d3f93602d931807ca488b + "@chainsafe/ssz": "npm:0.9.4" + "@ethereumjs/common": "npm:^3.1.1" + "@ethereumjs/rlp": "npm:^4.0.1" + "@ethereumjs/util": "npm:^8.0.5" + "@ethersproject/providers": "npm:^5.7.2" + ethereum-cryptography: "npm:^1.1.2" + peerDependencies: + c-kzg: ^1.0.8 + peerDependenciesMeta: + c-kzg: + optional: true + checksum: 10/3074e198e0a550dd47dc359d16aa3bb9336fc52b14681fb0b1bcc8d4bdac62cc384962a13347819488da18bedf9578d4d5f2491e3609cb7fa7b2f6cafeb18b23 languageName: node linkType: hard @@ -2388,7 +2423,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/util@npm:^9.0.2, @ethereumjs/util@npm:^9.0.3, @ethereumjs/util@npm:^9.1.0": +"@ethereumjs/util@npm:^9.0.2, @ethereumjs/util@npm:^9.1.0": version: 9.1.0 resolution: "@ethereumjs/util@npm:9.1.0" dependencies: @@ -6514,6 +6549,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:1.1.2": + version: 1.1.2 + resolution: "@noble/hashes@npm:1.1.2" + checksum: 10/2826c94ea30b8d2447fda549f4ffa97a637a480eeef5c96702a2f932c305038465f7436caf5b2bad41eb43c08c270b921e101488b18165feebe3854091b56d91 + languageName: node + linkType: hard + "@noble/hashes@npm:1.3.2": version: 1.3.2 resolution: "@noble/hashes@npm:1.3.2" @@ -6521,17 +6563,17 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:^1.1.2, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:~1.4.0": version: 1.4.0 resolution: "@noble/hashes@npm:1.4.0" checksum: 10/e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6 languageName: node linkType: hard -"@noble/hashes@npm:^1.1.2, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.4.0": - version: 1.5.0 - resolution: "@noble/hashes@npm:1.5.0" - checksum: 10/da7fc7af52af7afcf59810a7eea6155075464ff462ffda2572dc6d57d53e2669b1ea2ec774e814f6273f1697e567f28d36823776c9bf7068cba2a2855140f26e +"@noble/hashes@npm:~1.1.1": + version: 1.1.3 + resolution: "@noble/hashes@npm:1.1.3" + checksum: 10/42e9883649abd85e6a65cfa528e72b2a81ebb601b44db1d71b6ba927cede0627d7d8c649df159a7f84a949dfe17fe268d4b664c5a36c7e0b2a3d4198bc19f5e4 languageName: node linkType: hard @@ -6542,6 +6584,13 @@ __metadata: languageName: node linkType: hard +"@noble/secp256k1@npm:1.6.3, @noble/secp256k1@npm:~1.6.0": + version: 1.6.3 + resolution: "@noble/secp256k1@npm:1.6.3" + checksum: 10/e4f4b0cfa1c5d23fb1b9938fa3cce1a1160a76a89eb91f6dde98075bbdf328709d51771c85b6b4b118f8ce5a6c6554da6c9af7de7716aba56cef30f61a715bd7 + languageName: node + linkType: hard + "@noble/secp256k1@npm:^1.7.0": version: 1.7.1 resolution: "@noble/secp256k1@npm:1.7.1" @@ -7666,10 +7715,21 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:^1.0.0, @scure/base@npm:^1.1.1, @scure/base@npm:^1.1.3, @scure/base@npm:~1.1.3, @scure/base@npm:~1.1.6": - version: 1.1.9 - resolution: "@scure/base@npm:1.1.9" - checksum: 10/f0ab7f687bbcdee2a01377fe3cd808bf63977999672751295b6a92625d5322f4754a96d40f6bd579bc367aad48ecf8a4e6d0390e70296e6ded1076f52adb16bb +"@scure/base@npm:^1.0.0, @scure/base@npm:^1.1.1, @scure/base@npm:^1.1.3, @scure/base@npm:~1.1.0, @scure/base@npm:~1.1.3, @scure/base@npm:~1.1.6": + version: 1.1.7 + resolution: "@scure/base@npm:1.1.7" + checksum: 10/fc50ffaab36cb46ff9fa4dc5052a06089ab6a6707f63d596bb34aaaec76173c9a564ac312a0b981b5e7a5349d60097b8878673c75d6cbfc4da7012b63a82099b + languageName: node + linkType: hard + +"@scure/bip32@npm:1.1.0": + version: 1.1.0 + resolution: "@scure/bip32@npm:1.1.0" + dependencies: + "@noble/hashes": "npm:~1.1.1" + "@noble/secp256k1": "npm:~1.6.0" + "@scure/base": "npm:~1.1.0" + checksum: 10/e58660fc96dc5c87d0047bf41150fa3b424617e6289ba522cc81bdeecaf1a26e34f01dcd9d76f3e5c2c570ced608a527733cc375abfce4dc9b8e2365719ea5d3 languageName: node linkType: hard @@ -7684,6 +7744,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.1.0": + version: 1.1.0 + resolution: "@scure/bip39@npm:1.1.0" + dependencies: + "@noble/hashes": "npm:~1.1.1" + "@scure/base": "npm:~1.1.0" + checksum: 10/d843be225dda4b6b2c0f90e52e00eef708df3cecbc944902298d487c669a6d219bd41877b20adaf72ba84aec2f0cb1e4567dafc6ce7295d9f132bdb0dcb375b3 + languageName: node + linkType: hard + "@scure/bip39@npm:1.3.0": version: 1.3.0 resolution: "@scure/bip39@npm:1.3.0" @@ -8037,13 +8107,6 @@ __metadata: languageName: node linkType: hard -"@sovpro/delimited-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "@sovpro/delimited-stream@npm:1.1.0" - checksum: 10/e78fc97a8509c07b55483df2253137de07b10f14db15d230526a6dd95c86e99d8f54c7af8697806bd16522eec2c50e44e5b4e0294bed80da833a2185f17f3ab6 - languageName: node - linkType: hard - "@spruceid/siwe-parser@npm:2.1.0": version: 2.1.0 resolution: "@spruceid/siwe-parser@npm:2.1.0" @@ -11118,13 +11181,6 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "@types/uuid@npm:10.0.0" - checksum: 10/e3958f8b0fe551c86c14431f5940c3470127293280830684154b91dc7eb3514aeb79fe3216968833cf79d4d1c67f580f054b5be2cd562bebf4f728913e73e944 - languageName: node - linkType: hard - "@types/uuid@npm:^8.3.0": version: 8.3.0 resolution: "@types/uuid@npm:8.3.0" @@ -11132,7 +11188,7 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:^9.0.1, @types/uuid@npm:^9.0.8": +"@types/uuid@npm:^9.0.0, @types/uuid@npm:^9.0.1, @types/uuid@npm:^9.0.8": version: 9.0.8 resolution: "@types/uuid@npm:9.0.8" checksum: 10/b8c60b7ba8250356b5088302583d1704a4e1a13558d143c549c408bf8920535602ffc12394ede77f8a8083511b023704bc66d1345792714002bfa261b17c5275 @@ -12175,7 +12231,7 @@ __metadata: languageName: node linkType: hard -"aes-js@npm:^3.1.2": +"aes-js@npm:^3.1.1, aes-js@npm:^3.1.2": version: 3.1.2 resolution: "aes-js@npm:3.1.2" checksum: 10/b65916767034a51375a3ac5aad62af452d89a386c1ae7b607bb9145d0bb8b8823bf2f3eba85bdfa52d61c65d5aed90ba90f677b8c826bfa1a8b7ae2fa3b54d91 @@ -13370,13 +13426,6 @@ __metadata: languageName: node linkType: hard -"base-x@npm:^5.0.0": - version: 5.0.0 - resolution: "base-x@npm:5.0.0" - checksum: 10/fa82bc9a963f7a765a3287ba632661669fe553d06ee0d4d4e282640335bff30ec685e3c3b1714e265f697b234facd02a310f1e2465db88f4f1a448e6267fbc65 - languageName: node - linkType: hard - "base32-encode@npm:^1.2.0": version: 1.2.0 resolution: "base32-encode@npm:1.2.0" @@ -13595,10 +13644,10 @@ __metadata: languageName: node linkType: hard -"bitwise@npm:^2.2.1": - version: 2.2.1 - resolution: "bitwise@npm:2.2.1" - checksum: 10/517aea40f326847935a8ae4367d6beca596982ad55db1d0288a4055c9eba78c6b3ccd10d9ad423df356d946d9a898b36c0d5c06673fba4fb98fb1b58df74788e +"bitwise@npm:^2.0.4": + version: 2.1.0 + resolution: "bitwise@npm:2.1.0" + checksum: 10/d075220e8b8d1e41d0e60c7081811eef108024a094c4e7f5c2ad67235f3bcac9f6ffd218884900591d602fbd61aff9a6c1d650cd5a0e0e34f12e11623aab5da1 languageName: node linkType: hard @@ -13726,23 +13775,33 @@ __metadata: languageName: node linkType: hard -"borc@npm:^3.0.0": - version: 3.0.0 - resolution: "borc@npm:3.0.0" +"borc@npm:2.1.2": + version: 2.1.2 + resolution: "borc@npm:2.1.2" dependencies: bignumber.js: "npm:^9.0.0" - buffer: "npm:^6.0.3" + buffer: "npm:^5.5.0" commander: "npm:^2.15.0" ieee754: "npm:^1.1.13" - iso-url: "npm:^1.1.5" - json-text-sequence: "npm:~0.3.0" + iso-url: "npm:~0.4.7" + json-text-sequence: "npm:~0.1.0" readable-stream: "npm:^3.6.0" - bin: - cbor2comment: bin/cbor2comment.js - cbor2diag: bin/cbor2diag.js - cbor2json: bin/cbor2json.js - json2cbor: bin/json2cbor.js - checksum: 10/fc9eaae0a544a300d0eaa4173d523649c9b85ed13f46156d802b5514c75aa4ec80c7ff183afd2bb4067a3166a7561f1a362edeb1673a7760d401b801b688477e + checksum: 10/a506aec97c3de0a015bf43729a82fe7e7c1ca1f3af72151dacda5d901a673719bfa6e4241d9e09d4b0abdfaf090f5f0645c3397d28e4d4d637f6e3e36e1ed268 + languageName: node + linkType: hard + +"borc@patch:borc@npm%3A2.1.2#./.yarn/patches/borc-npm-2.1.2-8ffcc2dd81.patch::locator=metamask-crx%40workspace%3A.": + version: 2.1.2 + resolution: "borc@patch:borc@npm%3A2.1.2#./.yarn/patches/borc-npm-2.1.2-8ffcc2dd81.patch::version=2.1.2&hash=3e0a96&locator=metamask-crx%40workspace%3A." + dependencies: + bignumber.js: "npm:^9.0.0" + buffer: "npm:^5.5.0" + commander: "npm:^2.15.0" + ieee754: "npm:^1.1.13" + iso-url: "npm:~0.4.7" + json-text-sequence: "npm:~0.1.0" + readable-stream: "npm:^3.6.0" + checksum: 10/f72b4bb1cef3422a817acbf45201904b36fc00d03613506a3b36d63e6b14713b35970cf1bb8f25721c38d8ac12bbf9ca6098430a1c6b39666d60722641ea8bd3 languageName: node linkType: hard @@ -14102,15 +14161,6 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^6.0.0": - version: 6.0.0 - resolution: "bs58@npm:6.0.0" - dependencies: - base-x: "npm:^5.0.0" - checksum: 10/7c9bb2b2d93d997a8c652de3510d89772007ac64ee913dc4e16ba7ff47624caad3128dcc7f360763eb6308760c300b3e9fd91b8bcbd489acd1a13278e7949c4e - languageName: node - linkType: hard - "bs58check@npm:2.1.2, bs58check@npm:^2.1.2": version: 2.1.2 resolution: "bs58check@npm:2.1.2" @@ -14132,16 +14182,6 @@ __metadata: languageName: node linkType: hard -"bs58check@npm:^4.0.0": - version: 4.0.0 - resolution: "bs58check@npm:4.0.0" - dependencies: - "@noble/hashes": "npm:^1.2.0" - bs58: "npm:^6.0.0" - checksum: 10/cf5691bdfdf317574f722582360a834f01a36e8f6c850bd5791f04e040b334a0800b7c322ad24c77979c3ed6ef6cf31a6373366b4018223e3005278d491d8799 - languageName: node - linkType: hard - "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -14541,6 +14581,13 @@ __metadata: languageName: node linkType: hard +"case@npm:^1.6.3": + version: 1.6.3 + resolution: "case@npm:1.6.3" + checksum: 10/2fc1df75bbb4118339e06141b9a54aba95cc62460ac92730290144fbec6b6a04f5bf7abf6a6486a1338f5821bd184402f216cec8cea0472451759c27e20fc332 + languageName: node + linkType: hard + "cashaddrjs@npm:0.4.4": version: 0.4.4 resolution: "cashaddrjs@npm:0.4.4" @@ -15718,12 +15765,15 @@ __metadata: languageName: node linkType: hard -"crc-32@npm:^1.2.0, crc-32@npm:^1.2.2": - version: 1.2.2 - resolution: "crc-32@npm:1.2.2" +"crc-32@npm:^1.2.0": + version: 1.2.0 + resolution: "crc-32@npm:1.2.0" + dependencies: + exit-on-epipe: "npm:~1.0.1" + printj: "npm:~1.1.0" bin: - crc32: bin/crc32.njs - checksum: 10/824f696a5baaf617809aa9cd033313c8f94f12d15ebffa69f10202480396be44aef9831d900ab291638a8022ed91c360696dd5b1ba691eb3f34e60be8835b7c3 + crc32: ./bin/crc32.njs + checksum: 10/10c648c986b005ed0ea8393bb0d1ccb99e7a102505b136d313dee6abe204aa682d9bb9bc6fd180f9cd98ef92aa029964f1cc96a2a85eb50507dedd9ead1a262f languageName: node linkType: hard @@ -16625,6 +16675,13 @@ __metadata: languageName: node linkType: hard +"delimit-stream@npm:0.1.0": + version: 0.1.0 + resolution: "delimit-stream@npm:0.1.0" + checksum: 10/9d179cfb91dfbb0702909dfab33bd837fec67c49f0c81495215af578fb08f262d509d76de7431eb11e64e6e71794b9bfe642e372fd33fabbfaf7e060cf5c044f + languageName: node + linkType: hard + "depcheck@npm:^1.4.3": version: 1.4.3 resolution: "depcheck@npm:1.4.3" @@ -17395,9 +17452,24 @@ __metadata: languageName: node linkType: hard +"elliptic@npm:6.5.4": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10/2cd7ff4b69720dbb2ca1ca650b2cf889d1df60c96d4a99d331931e4fe21e45a7f3b8074e86618ca7e56366c4b6258007f234f9d61d9b0c87bbbc8ea990b99e94 + languageName: node + linkType: hard + "elliptic@npm:^6.0.0, elliptic@npm:^6.4.0, elliptic@npm:^6.5.4, elliptic@npm:^6.5.7": - version: 6.5.7 - resolution: "elliptic@npm:6.5.7" + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" dependencies: bn.js: "npm:^4.11.9" brorand: "npm:^1.1.0" @@ -17406,7 +17478,7 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10/fbad1fad0a5cc07df83f80cc1f7a784247ef59075194d3e340eaeb2f4dd594825ee24c7e9b0cf279c9f1982efe610503bb3139737926428c4821d4fca1bcf348 + checksum: 10/dc678c9febd89a219c4008ba3a9abb82237be853d9fd171cd602c8fb5ec39927e65c6b5e7a1b2a4ea82ee8e0ded72275e7932bb2da04a5790c2638b818e4e1c5 languageName: node linkType: hard @@ -18589,9 +18661,20 @@ __metadata: linkType: hard "eth-chainlist@npm:~0.0.498": - version: 0.0.519 - resolution: "eth-chainlist@npm:0.0.519" - checksum: 10/c9767c64e58d140d04e6fcca9589c50edab48a5c57a62f2c749279574a9ab3e13784b05ab4c05c7b020fe8421769bc4119bd7a904df040fbb076827aaac3de23 + version: 0.0.498 + resolution: "eth-chainlist@npm:0.0.498" + checksum: 10/a414c0e1f0a877f9ab8bf1cf775556308ddbb66618e368666d4dea9a0b949febedf8ca5440cf57419413404e7661f1e3d040802faf532d0e1618c40ecd334cbf + languageName: node + linkType: hard + +"eth-eip712-util-browser@npm:^0.0.3": + version: 0.0.3 + resolution: "eth-eip712-util-browser@npm:0.0.3" + dependencies: + bn.js: "npm:>4.0.0" + buffer: "npm:^6.0.3" + js-sha3: "npm:^0.8.0" + checksum: 10/f953e553da8326cc7eacffd7edc4c5ca4ba66ddf27546412cbed961900d50bbd8196b44665bd9e8f7d63c3b64df0793a6a8a60cc2f15b340763a78e84c4e7bd4 languageName: node linkType: hard @@ -18663,7 +18746,19 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.1.3, ethereum-cryptography@npm:^2.2.1": +"ethereum-cryptography@npm:^1.1.2": + version: 1.1.2 + resolution: "ethereum-cryptography@npm:1.1.2" + dependencies: + "@noble/hashes": "npm:1.1.2" + "@noble/secp256k1": "npm:1.6.3" + "@scure/bip32": "npm:1.1.0" + "@scure/bip39": "npm:1.1.0" + checksum: 10/abf9288086002a697e0ee0077d77d001c8e1306fa53ea8d7901f9744786f47d073caa6c266bd5b25a283a5c0fbc8beed9fa9cd90d842dc51339e6748aa1ab46a + languageName: node + linkType: hard + +"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.2.1": version: 2.2.1 resolution: "ethereum-cryptography@npm:2.2.1" dependencies: @@ -18955,6 +19050,13 @@ __metadata: languageName: node linkType: hard +"exit-on-epipe@npm:~1.0.1": + version: 1.0.1 + resolution: "exit-on-epipe@npm:1.0.1" + checksum: 10/b180aa277aec5bef2609b34e5876061f421a1f81bf343beb213c4d60b382ddcb6b83012833f0ba329d6bc38042685c8d89b1c52ea495b9b6327948ea80627398 + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -20981,29 +21083,29 @@ __metadata: linkType: hard "gridplus-sdk@npm:^2.5.1": - version: 2.7.1 - resolution: "gridplus-sdk@npm:2.7.1" + version: 2.5.1 + resolution: "gridplus-sdk@npm:2.5.1" dependencies: - "@ethereumjs/common": "npm:4.3.0" - "@ethereumjs/rlp": "npm:^5.0.2" - "@ethereumjs/tx": "npm:5.3.0" - "@ethersproject/abi": "npm:^5.7.0" - "@metamask/eth-sig-util": "npm:^7.0.3" - "@types/uuid": "npm:^10.0.0" - aes-js: "npm:^3.1.2" + "@ethereumjs/common": "npm:3.1.1" + "@ethereumjs/tx": "npm:4.1.1" + "@ethersproject/abi": "npm:^5.5.0" + "@types/uuid": "npm:^9.0.0" + aes-js: "npm:^3.1.1" bech32: "npm:^2.0.0" - bignumber.js: "npm:^9.1.2" - bitwise: "npm:^2.2.1" - borc: "npm:^3.0.0" - bs58check: "npm:^4.0.0" - buffer: "npm:^6.0.3" - crc-32: "npm:^1.2.2" - elliptic: "npm:6.5.6" + bignumber.js: "npm:^9.0.1" + bitwise: "npm:^2.0.4" + borc: "npm:^2.1.2" + bs58check: "npm:^2.1.2" + buffer: "npm:^5.6.0" + crc-32: "npm:^1.2.0" + elliptic: "npm:6.5.4" + eth-eip712-util-browser: "npm:^0.0.3" hash.js: "npm:^1.1.7" - js-sha3: "npm:^0.9.3" - secp256k1: "npm:5.0.0" - uuid: "npm:^10.0.0" - checksum: 10/0d81908f69d2972350f4fc6fb721b12f62de643b48dce1d25f4ee2e085899e0cc64605d6cc63590ba870cea72d53f970c05d0fd74979d2c07ad102f3e15b7f82 + js-sha3: "npm:^0.8.0" + rlp: "npm:^3.0.0" + secp256k1: "npm:4.0.2" + uuid: "npm:^9.0.0" + checksum: 10/57deeae78fc5f904309e689054baabaed8b078b896ecfd5d724889c6ea424a113db64c3fd79d4dca7cc5f558167d7af754506df5c0692ee76087822ae60c3873 languageName: node linkType: hard @@ -23303,10 +23405,10 @@ __metadata: languageName: node linkType: hard -"iso-url@npm:^1.1.5": - version: 1.2.1 - resolution: "iso-url@npm:1.2.1" - checksum: 10/87455fd79166c7b269df7711ea0bee896338330fb46164dd3e6d73ba09c294326ae356b60032dc3217c1455b66f57216a44b95ded8fb2c1c2f9e490396060ef9 +"iso-url@npm:~0.4.7": + version: 0.4.7 + resolution: "iso-url@npm:0.4.7" + checksum: 10/355574598d46947f48a63518517bfacf443aae5914991484cdc51c1ebe3f4487d4936ecd0b73a297784d20bf1a4eda3f47975b0fff8022ae20af76b6655e014a languageName: node linkType: hard @@ -24553,12 +24655,12 @@ __metadata: languageName: node linkType: hard -"json-text-sequence@npm:~0.3.0": - version: 0.3.0 - resolution: "json-text-sequence@npm:0.3.0" +"json-text-sequence@npm:~0.1.0": + version: 0.1.1 + resolution: "json-text-sequence@npm:0.1.1" dependencies: - "@sovpro/delimited-stream": "npm:^1.1.0" - checksum: 10/e5dc050aadd626938514363399cf14c409f878628914922c5d470530c3f3473d6b0e16a10338dd7d863aab0291bb0e5e15d71526d14733c22e30cba771b03297 + delimit-stream: "npm:0.1.0" + checksum: 10/540973055e03e3caf55e5e06adf88a5d1a4fbefdee44e4c67bbeb614f0d1edd6ea9207f8f9027b6aa86eb6ed4fca3f0dd1f40c4be13f7396efbc0d2f5c5f1e73 languageName: node linkType: hard @@ -30143,6 +30245,15 @@ __metadata: languageName: node linkType: hard +"printj@npm:~1.1.0": + version: 1.1.2 + resolution: "printj@npm:1.1.2" + bin: + printj: ./bin/printj.njs + checksum: 10/45376a5ee7ef2e0d7ff0b4fecc893d73995a332e63d7e0622a544fe662c8213d22f0c9750e627c6d732a7d7a543266be960e6cd51cf19485cce87cf80468bb41 + languageName: node + linkType: hard + "prismjs@npm:^1.27.0": version: 1.29.0 resolution: "prismjs@npm:1.29.0" @@ -33054,7 +33165,7 @@ __metadata: languageName: node linkType: hard -"secp256k1@npm:^4.0.0, secp256k1@npm:^4.0.1, secp256k1@npm:^4.0.4": +"secp256k1@npm:4.0.4": version: 4.0.4 resolution: "secp256k1@npm:4.0.4" dependencies: @@ -33066,18 +33177,6 @@ __metadata: languageName: node linkType: hard -"secp256k1@npm:^5.0.1": - version: 5.0.1 - resolution: "secp256k1@npm:5.0.1" - dependencies: - elliptic: "npm:^6.5.7" - node-addon-api: "npm:^5.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - checksum: 10/63fbd35624be4fd9cf3d39e5f79c5471b4a8aea6944453b2bea7b100bb1c77a25c55e6e08e2210cdabdf478c4c62d34c408b34214f2afd9367e19a52a3a4236c - languageName: node - linkType: hard - "select-hose@npm:^2.0.0": version: 2.0.0 resolution: "select-hose@npm:2.0.0" @@ -36648,15 +36747,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" - bin: - uuid: dist/bin/uuid - checksum: 10/35aa60614811a201ff90f8ca5e9ecb7076a75c3821e17f0f5ff72d44e36c2d35fcbc2ceee9c4ac7317f4cc41895da30e74f3885e30313bee48fda6338f250538 - languageName: node - linkType: hard - "uuid@npm:^3.3.3": version: 3.4.0 resolution: "uuid@npm:3.4.0" From 31ff3a2c077bae7c9a75508167b869deb5de1b7c Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 12 Dec 2024 07:47:50 -0330 Subject: [PATCH 076/111] Cherry pick #28782 to v12.9.1 (#29130) Cherry-picks 1e3af312f6 (#28782) to v12.9.1 --- app/manifest/v2/_base.json | 2 - app/manifest/v3/_base.json | 4 +- app/scripts/background.js | 2 +- privacy-snapshot.json | 3 +- test/e2e/helpers.js | 44 ----------- test/e2e/tests/phishing-controller/mocks.js | 19 ++--- .../phishing-detection.spec.js | 76 +------------------ 7 files changed, 14 insertions(+), 136 deletions(-) diff --git a/app/manifest/v2/_base.json b/app/manifest/v2/_base.json index 2f41a7e987fa..f29b7458a9e5 100644 --- a/app/manifest/v2/_base.json +++ b/app/manifest/v2/_base.json @@ -66,8 +66,6 @@ "clipboardWrite", "http://*/*", "https://*/*", - "ws://*/*", - "wss://*/*", "activeTab", "webRequest", "webRequestBlocking", diff --git a/app/manifest/v3/_base.json b/app/manifest/v3/_base.json index 89758033f33a..4d6ee38437d3 100644 --- a/app/manifest/v3/_base.json +++ b/app/manifest/v3/_base.json @@ -50,9 +50,7 @@ "http://localhost:8545/", "file://*/*", "http://*/*", - "https://*/*", - "ws://*/*", - "wss://*/*" + "https://*/*" ], "icons": { "16": "images/icon-16.png", diff --git a/app/scripts/background.js b/app/scripts/background.js index 6587b61cf13c..2b2f5c4693df 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -330,7 +330,7 @@ function maybeDetectPhishing(theController) { return {}; }, { - urls: ['http://*/*', 'https://*/*', 'ws://*/*', 'wss://*/*'], + urls: ['http://*/*', 'https://*/*'], }, isManifestV2 ? ['blocking'] : [], ); diff --git a/privacy-snapshot.json b/privacy-snapshot.json index 8ae10de304df..6ee430ca943c 100644 --- a/privacy-snapshot.json +++ b/privacy-snapshot.json @@ -71,6 +71,5 @@ "unresponsive-rpc.test", "unresponsive-rpc.url", "user-storage.api.cx.metamask.io", - "www.4byte.directory", - "verify.walletconnect.com" + "www.4byte.directory" ] diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index 4ade3f2e48ba..b06c29b17acf 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -4,7 +4,6 @@ const BigNumber = require('bignumber.js'); const mockttp = require('mockttp'); const detectPort = require('detect-port'); const { difference } = require('lodash'); -const WebSocket = require('ws'); const createStaticServer = require('../../development/create-static-server'); const { setupMocking } = require('./mock-e2e'); const { Ganache } = require('./seeder/ganache'); @@ -641,48 +640,6 @@ async function unlockWallet( } } -/** - * Simulates a WebSocket connection by executing a script in the browser context. - * - * @param {WebDriver} driver - The WebDriver instance. - * @param {string} hostname - The hostname to connect to. - */ -async function createWebSocketConnection(driver, hostname) { - try { - await driver.executeScript(async (wsHostname) => { - const url = `ws://${wsHostname}:8000`; - - const socket = new WebSocket(url); - - socket.onopen = () => { - console.log('WebSocket connection opened'); - socket.send('Hello, server!'); - }; - - socket.onerror = (error) => { - console.error( - 'WebSocket error:', - error.message || 'Connection blocked', - ); - }; - - socket.onmessage = (event) => { - console.log('Message received from server:', event.data); - }; - - socket.onclose = () => { - console.log('WebSocket connection closed'); - }; - }, hostname); - } catch (error) { - console.error( - `Failed to execute WebSocket connection script for ws://${hostname}:8081`, - error, - ); - throw error; - } -} - const logInWithBalanceValidation = async (driver, ganacheServer) => { await unlockWallet(driver); // Wait for balance to load @@ -1018,5 +975,4 @@ module.exports = { tempToggleSettingRedesignedTransactionConfirmations, openMenuSafe, sentryRegEx, - createWebSocketConnection, }; diff --git a/test/e2e/tests/phishing-controller/mocks.js b/test/e2e/tests/phishing-controller/mocks.js index 3165847740bf..fe11118c6fd2 100644 --- a/test/e2e/tests/phishing-controller/mocks.js +++ b/test/e2e/tests/phishing-controller/mocks.js @@ -10,9 +10,7 @@ const { const lastUpdated = 1; const defaultHotlist = { data: [] }; const defaultC2DomainBlocklist = { - recentlyAdded: [ - '33c8e026e76cea2df82322428554c932961cd80080fa379454350d7f13371f36', // hash for malicious.localhost - ], + recentlyAdded: [], recentlyRemoved: [], lastFetchedAt: '2024-08-27T15:30:45Z', }; @@ -97,12 +95,15 @@ async function setupPhishingDetectionMocks( }; }); - await mockServer.forGet(C2_DOMAIN_BLOCKLIST_URL).thenCallback(() => { - return { - statusCode: 200, - json: defaultC2DomainBlocklist, - }; - }); + await mockServer + .forGet(C2_DOMAIN_BLOCKLIST_URL) + .withQuery({ timestamp: '2024-08-27T15:30:45Z' }) + .thenCallback(() => { + return { + statusCode: 200, + json: defaultC2DomainBlocklist, + }; + }); await mockServer .forGet('https://github.com/MetaMask/eth-phishing-detect/issues/new') diff --git a/test/e2e/tests/phishing-controller/phishing-detection.spec.js b/test/e2e/tests/phishing-controller/phishing-detection.spec.js index 98184b85224e..ad199cea1e70 100644 --- a/test/e2e/tests/phishing-controller/phishing-detection.spec.js +++ b/test/e2e/tests/phishing-controller/phishing-detection.spec.js @@ -2,13 +2,13 @@ const { strict: assert } = require('assert'); const { createServer } = require('node:http'); const { createDeferredPromise } = require('@metamask/utils'); const { until } = require('selenium-webdriver'); + const { defaultGanacheOptions, withFixtures, openDapp, unlockWallet, WINDOW_TITLES, - createWebSocketConnection, } = require('../../helpers'); const FixtureBuilder = require('../../fixture-builder'); const { @@ -315,80 +315,6 @@ describe('Phishing Detection', function () { ); }); - it('should block a website that makes a websocket connection to a malicious command and control server', async function () { - const testPageURL = 'http://localhost:8080'; - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - testSpecificMock: async (mockServer) => { - await mockServer.forAnyWebSocket().thenEcho(); - await setupPhishingDetectionMocks(mockServer, { - blockProvider: BlockProvider.MetaMask, - }); - }, - dapp: true, - }, - async ({ driver }) => { - await unlockWallet(driver); - - await driver.openNewPage(testPageURL); - - await createWebSocketConnection(driver, 'malicious.localhost'); - - await driver.switchToWindowWithTitle( - 'MetaMask Phishing Detection', - 10000, - ); - - await driver.waitForSelector({ - testId: 'unsafe-continue-loaded', - }); - - await driver.clickElement({ - text: 'Back to safety', - }); - - const currentUrl = await driver.getCurrentUrl(); - const expectedPortfolioUrl = `https://portfolio.metamask.io/?metamaskEntry=phishing_page_portfolio_button`; - - assert.equal(currentUrl, expectedPortfolioUrl); - }, - ); - }); - - it('should not block a website that makes a safe WebSocket connection', async function () { - const testPageURL = 'http://localhost:8080/'; - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - testSpecificMock: async (mockServer) => { - await mockServer.forAnyWebSocket().thenEcho(); - await setupPhishingDetectionMocks(mockServer, { - blockProvider: BlockProvider.MetaMask, - }); - }, - dapp: true, - }, - async ({ driver }) => { - await unlockWallet(driver); - - await driver.openNewPage(testPageURL); - - await createWebSocketConnection(driver, 'safe.localhost'); - - await driver.wait(until.titleIs(WINDOW_TITLES.TestDApp), 10000); - - const currentUrl = await driver.getCurrentUrl(); - - assert.equal(currentUrl, testPageURL); - }, - ); - }); - describe('Phishing redirect protections', function () { /** * Status codes 305 (via Location header) and 306 (Set-Proxy) header do not From 66e9893a620128064cbf26a1a6e934b31b44fa9a Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 12 Dec 2024 08:09:24 -0330 Subject: [PATCH 077/111] Update changelog for v12.9.1 (#29133) Update changelog for v12.9.1 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c379a2ebe5d3..9408b61ce731 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [12.9.1] +### Changed +- The 'All Networks' view of assets on the home screen will now only get data across the 9 'popular networks' ([#29071](https://github.com/MetaMask/metamask-extension/pull/29071)) + +### Fixed +- Ensure tokens with zero balance are hidden if the hide zero balance setting is on ([#29058](https://github.com/MetaMask/metamask-extension/pull/29058)) +- Ensure token detection prompt is no longer shown after it is clicked and the subsquent prompt is closed ([#29059](https://github.com/MetaMask/metamask-extension/pull/29059)) ## [12.9.0] ### Added From acdf7c6579e2d1ac06e2ab4f2a0917d616df0403 Mon Sep 17 00:00:00 2001 From: OGPoyraz Date: Thu, 12 Dec 2024 13:57:45 +0100 Subject: [PATCH 078/111] fix: Change visibility of `AmountRow` in contract interaction (#29131) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR makes two visibility change on `AmountRow` in transaction details. - Regardless of the amount or simulated value, if transaction details is toggled, it must show `AmountRow` - Whenever the Amount being sent doesn't match with a 5% buffer what we're displaying in the "You send" row of simulations UI for contract interactions, `AmountRow` must be visible. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29131?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3783 ## **Manual testing steps** ### Scenario I 1. Trigger a contract interaction 2. Enable advanced view 3. With this change, you should now see the Amount row on the advanced view displaying the native asset value that is being sent along with the transaction. ### Scenario II 1. Trigger a contract interaction with the below payload (this payload should make the amount being sent don't match "You send" value within simulations) 2. With this change, you should now see the Amount row on the default view displaying the native asset value that is being sent along with the transaction. `{ to: "0x4805a248c9611c22a43ce956489c9aadb6108433", value: "0xDE0B6B3A7640000", data: "0x3158952e", }` ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../transaction-details.test.tsx | 116 +++++++++++++++--- .../transaction-details.tsx | 15 ++- .../components/confirm/info/utils.test.ts | 107 +++++++++++++++- .../components/confirm/info/utils.ts | 83 +++++++++++++ 4 files changed, 300 insertions(+), 21 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.test.tsx b/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.test.tsx index 1263acf08397..f283ee6c4530 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.test.tsx +++ b/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.test.tsx @@ -1,7 +1,8 @@ import React from 'react'; import configureMockStore from 'redux-mock-store'; import thunk from 'redux-thunk'; -import { SimulationErrorCode } from '@metamask/transaction-controller'; +import { Hex } from '@metamask/utils'; +import { toHex } from '@metamask/controller-utils'; import { getMockConfirmState, getMockConfirmStateForTransaction, @@ -44,21 +45,104 @@ describe('', () => { expect(container).toMatchSnapshot(); }); - it('renders component for transaction details with amount', () => { - const simulationDataMock = { - error: { code: SimulationErrorCode.Disabled }, - tokenBalanceChanges: [], - }; - const contractInteraction = genUnapprovedContractInteractionConfirmation({ - simulationData: simulationDataMock, - chainId: CHAIN_IDS.GOERLI, + describe('AmountRow', () => { + describe('should be in the document', () => { + it('when showAdvancedDetails is true', () => { + const contractInteraction = + genUnapprovedContractInteractionConfirmation({ + chainId: CHAIN_IDS.GOERLI, + }); + const state = getMockConfirmStateForTransaction(contractInteraction, { + metamask: { + preferences: { + showConfirmationAdvancedDetails: true, + }, + }, + }); + const mockStore = configureMockStore(middleware)(state); + const { getByTestId } = renderWithConfirmContextProvider( + , + mockStore, + ); + expect( + getByTestId('transaction-details-amount-row'), + ).toBeInTheDocument(); + }); + + it('when value and simulated native balance mismatch', () => { + // Transaction value is set to 0x3782dace9d900000 below mock + const simulationDataMock = { + tokenBalanceChanges: [], + nativeBalanceChange: { + difference: '0x1' as Hex, + isDecrease: false, + previousBalance: '0x2' as Hex, + newBalance: '0x1' as Hex, + }, + }; + const contractInteraction = + genUnapprovedContractInteractionConfirmation({ + simulationData: simulationDataMock, + chainId: CHAIN_IDS.GOERLI, + }); + const state = getMockConfirmStateForTransaction(contractInteraction, { + metamask: { + preferences: { + // Intentionally setting to false to test the condition + showConfirmationAdvancedDetails: false, + }, + }, + }); + const mockStore = configureMockStore(middleware)(state); + const { getByTestId } = renderWithConfirmContextProvider( + , + mockStore, + ); + expect( + getByTestId('transaction-details-amount-row'), + ).toBeInTheDocument(); + }); + }); + + it('should not be in the document when value and simulated native balance mismatch is within threshold', () => { + // Transaction value is set to 0x3782dace9d900000 below mock + const transactionValueInDecimal = 4000000000000000000; + const transactionValueInHex = toHex(transactionValueInDecimal); + const newBalanceInDecimal = 1; + const newBalanceInHex = toHex(newBalanceInDecimal); + const previousBalanceInDecimal = + transactionValueInDecimal + newBalanceInDecimal; + const previousBalanceInHex = toHex(previousBalanceInDecimal); + + const simulationDataMock = { + tokenBalanceChanges: [], + nativeBalanceChange: { + difference: transactionValueInHex, + isDecrease: true, + previousBalance: previousBalanceInHex, + newBalance: newBalanceInHex, + }, + }; + const contractInteraction = genUnapprovedContractInteractionConfirmation({ + simulationData: simulationDataMock, + chainId: CHAIN_IDS.GOERLI, + }); + const state = getMockConfirmStateForTransaction(contractInteraction, { + metamask: { + preferences: { + // Intentionally setting to false to test the condition + showConfirmationAdvancedDetails: false, + }, + }, + }); + const mockStore = configureMockStore(middleware)(state); + const { queryByTestId } = renderWithConfirmContextProvider( + , + mockStore, + ); + expect( + queryByTestId('transaction-details-amount-row'), + ).not.toBeInTheDocument(); }); - const state = getMockConfirmStateForTransaction(contractInteraction); - const mockStore = configureMockStore(middleware)(state); - const { getByTestId } = renderWithConfirmContextProvider( - , - mockStore, - ); - expect(getByTestId('transaction-details-amount-row')).toBeInTheDocument(); }); }); diff --git a/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.tsx b/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.tsx index 79cea5963c45..2cf6426f1975 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.tsx +++ b/ui/pages/confirmations/components/confirm/info/shared/transaction-details/transaction-details.tsx @@ -1,6 +1,6 @@ import { TransactionMeta } from '@metamask/transaction-controller'; import { isValidAddress } from 'ethereumjs-util'; -import React from 'react'; +import React, { useMemo } from 'react'; import { useSelector } from 'react-redux'; import { ConfirmInfoRow, @@ -20,6 +20,7 @@ import { ConfirmInfoRowCurrency } from '../../../../../../../components/app/conf import { PRIMARY } from '../../../../../../../helpers/constants/common'; import { useUserPreferencedCurrency } from '../../../../../../../hooks/useUserPreferencedCurrency'; import { HEX_ZERO } from '../constants'; +import { hasValueAndNativeBalanceMismatch as checkValueAndNativeBalanceMismatch } from '../../utils'; import { SigningInWithRow } from '../sign-in-with-row/sign-in-with-row'; export const OriginRow = () => { @@ -99,9 +100,8 @@ const AmountRow = () => { const { currency } = useUserPreferencedCurrency(PRIMARY); const value = currentConfirmation?.txParams?.value; - const simulationData = currentConfirmation?.simulationData; - if (!value || value === HEX_ZERO || !simulationData?.error) { + if (!value || value === HEX_ZERO) { return null; } @@ -150,6 +150,11 @@ export const TransactionDetails = () => { const showAdvancedDetails = useSelector( selectConfirmationAdvancedDetailsOpen, ); + const { currentConfirmation } = useConfirmContext(); + const hasValueAndNativeBalanceMismatch = useMemo( + () => checkValueAndNativeBalanceMismatch(currentConfirmation), + [currentConfirmation], + ); return ( <> @@ -159,7 +164,9 @@ export const TransactionDetails = () => { {showAdvancedDetails && } - + {(showAdvancedDetails || hasValueAndNativeBalanceMismatch) && ( + + )} ); diff --git a/ui/pages/confirmations/components/confirm/info/utils.test.ts b/ui/pages/confirmations/components/confirm/info/utils.test.ts index e78d06d87622..9c12b9127811 100644 --- a/ui/pages/confirmations/components/confirm/info/utils.test.ts +++ b/ui/pages/confirmations/components/confirm/info/utils.test.ts @@ -1,5 +1,10 @@ +import { TransactionMeta } from '@metamask/transaction-controller'; +import { toHex } from '@metamask/controller-utils'; import { DecodedTransactionDataSource } from '../../../../../../shared/types/transaction-decode'; -import { getIsRevokeSetApprovalForAll } from './utils'; +import { + getIsRevokeSetApprovalForAll, + hasValueAndNativeBalanceMismatch, +} from './utils'; describe('getIsRevokeSetApprovalForAll', () => { it('returns false if no data is passed as an argument', () => { @@ -36,3 +41,103 @@ describe('getIsRevokeSetApprovalForAll', () => { expect(actual).toEqual(true); }); }); + +describe('hasValueAndNativeBalanceMismatch', () => { + it('returns false when transaction value matches simulated balance change', () => { + const transactionValueInDecimal = 10000000000000000; + const transactionValueInHex = toHex(transactionValueInDecimal); + + const transaction = { + txParams: { + value: transactionValueInHex, + }, + simulationData: { + nativeBalanceChange: { + difference: transactionValueInHex, + isDecrease: true, + }, + }, + } as unknown as TransactionMeta; + + expect(hasValueAndNativeBalanceMismatch(transaction)).toBe(false); + }); + + it('returns false when values differ within threshold', () => { + const transactionValueInDecimal = 10000000000000000; + const transactionValueInHex = toHex(transactionValueInDecimal); + + const differenceInDecimal = 10400000000000000; + const differenceInHex = toHex(differenceInDecimal); + + const transaction = { + txParams: { + value: transactionValueInHex, + }, + simulationData: { + nativeBalanceChange: { + difference: differenceInHex, + isDecrease: true, + }, + }, + } as unknown as TransactionMeta; + + expect(hasValueAndNativeBalanceMismatch(transaction)).toBe(false); + }); + + it('returns true when values differ beyond threshold', () => { + const transactionValueInDecimal = 10000000000000000; + const transactionValueInHex = toHex(transactionValueInDecimal); + + const differenceInDecimal = 1000000000; + const muchSmallerDifferenceInHex = toHex(differenceInDecimal); + + const transaction = { + txParams: { + value: transactionValueInHex, + }, + simulationData: { + nativeBalanceChange: { + difference: muchSmallerDifferenceInHex, + isDecrease: true, + }, + }, + } as unknown as TransactionMeta; + + expect(hasValueAndNativeBalanceMismatch(transaction)).toBe(true); + }); + + it('returns true when no simulation data is present', () => { + const transactionValueInDecimal = 10000000000000000; + const transactionValueInHex = toHex(transactionValueInDecimal); + + const transaction = { + txParams: { + value: transactionValueInHex, + }, + } as unknown as TransactionMeta; + + expect(hasValueAndNativeBalanceMismatch(transaction)).toBe(true); + }); + + it('handles case when value is increased in simulation', () => { + const transactionValueInDecimal = 10000000000000000; + const transactionValueInHex = toHex(transactionValueInDecimal); + + const differenceInDecimal = 10000000000000000; + const differenceInHex = toHex(differenceInDecimal); + + const transaction = { + txParams: { + value: transactionValueInHex, + }, + simulationData: { + nativeBalanceChange: { + difference: differenceInHex, + isDecrease: false, + }, + }, + } as unknown as TransactionMeta; + + expect(hasValueAndNativeBalanceMismatch(transaction)).toBe(true); + }); +}); diff --git a/ui/pages/confirmations/components/confirm/info/utils.ts b/ui/pages/confirmations/components/confirm/info/utils.ts index 0ad8479ac7b9..1af918aea74e 100644 --- a/ui/pages/confirmations/components/confirm/info/utils.ts +++ b/ui/pages/confirmations/components/confirm/info/utils.ts @@ -1,9 +1,15 @@ +import { TransactionMeta } from '@metamask/transaction-controller'; +import type { Hex } from '@metamask/utils'; +import { remove0x } from '@metamask/utils'; +import { BN } from 'bn.js'; import { DecodedTransactionDataResponse } from '../../../../../../shared/types/transaction-decode'; import { BackgroundColor, TextColor, } from '../../../../../helpers/constants/design-system'; +const VALUE_COMPARISON_PERCENT_THRESHOLD = 5; + export function getIsRevokeSetApprovalForAll( value: DecodedTransactionDataResponse | undefined, ): boolean { @@ -27,3 +33,80 @@ export const getAmountColors = (credit?: boolean, debit?: boolean) => { } return { color, backgroundColor }; }; + +/** + * Calculate the absolute percentage change between two values. + * + * @param originalValue - The first value. + * @param newValue - The second value. + * @returns The percentage change from the first value to the second value. + * If the original value is zero and the new value is not, returns 100. + */ +export function getPercentageChange( + originalValue: InstanceType, + newValue: InstanceType, +): number { + const precisionFactor = new BN(10).pow(new BN(18)); + const originalValuePrecision = originalValue.mul(precisionFactor); + const newValuePrecision = newValue.mul(precisionFactor); + + const difference = newValuePrecision.sub(originalValuePrecision); + + if (difference.isZero()) { + return 0; + } + + if (originalValuePrecision.isZero() && !newValuePrecision.isZero()) { + return 100; + } + + return difference.muln(100).div(originalValuePrecision).abs().toNumber(); +} + +/** + * Determine if the percentage change between two values is within a threshold. + * + * @param originalValue - The original value. + * @param newValue - The new value. + * @param newNegative - Whether the new value is negative. + * @returns Whether the percentage change between the two values is within a threshold. + */ +function percentageChangeWithinThreshold( + originalValue: Hex, + newValue: Hex, + newNegative?: boolean, +): boolean { + const originalValueBN = new BN(remove0x(originalValue), 'hex'); + let newValueBN = new BN(remove0x(newValue), 'hex'); + + if (newNegative) { + newValueBN = newValueBN.neg(); + } + + return ( + getPercentageChange(originalValueBN, newValueBN) <= + VALUE_COMPARISON_PERCENT_THRESHOLD + ); +} + +/** + * Determine if a transaction has a value and simulation native balance mismatch. + * + * @param transactionMeta - The transaction metadata. + * @returns Whether the transaction has a value and simulation native balance mismatch. + */ +export function hasValueAndNativeBalanceMismatch( + transactionMeta: TransactionMeta, +): boolean { + const value = transactionMeta?.txParams?.value ?? '0x0'; + const nativeBalanceChange = + transactionMeta?.simulationData?.nativeBalanceChange; + const simulatedNativeBalanceDifference = + nativeBalanceChange?.difference ?? '0x0'; + + return !percentageChangeWithinThreshold( + value as Hex, + simulatedNativeBalanceDifference, + nativeBalanceChange?.isDecrease === false, + ); +} From 717cd8780db00fe953958988d6ccfa6e2a9fb15a Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Thu, 12 Dec 2024 18:32:28 +0530 Subject: [PATCH 079/111] fix: Fix in label displayed for state change in signature decoding section (#29020) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** We currently displaying multiple "You list" and "Spending cap" for multiple assets. We should be displaying the copy only once similar to how we do it for simulations. ## **Related issues** Fixes: https://github.com/MetaMask/metamask-extension/issues/28944 ## **Manual testing steps** 1. Submit a typed sign v4 request with multiple NFT listed 2. Check simulation section on page displayed ## **Screenshots/Recordings** Screenshot 2024-12-09 at 6 05 46 PM ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../decoded-simulation.test.tsx | 25 ++++++++++- .../decoded-simulation/decoded-simulation.tsx | 42 ++++++++++++------- 2 files changed, 51 insertions(+), 16 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx index 26b4c46f26cd..c06cf906e870 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.test.tsx @@ -1,7 +1,6 @@ import React from 'react'; import configureMockStore from 'redux-mock-store'; import { - DecodingData, DecodingDataChangeType, DecodingDataStateChanges, } from '@metamask/signature-controller'; @@ -11,7 +10,7 @@ import { renderWithConfirmContextProvider } from '../../../../../../../../../tes import { permitSignatureMsg } from '../../../../../../../../../test/data/confirmations/typed_sign'; import PermitSimulation, { getStateChangeToolip } from './decoded-simulation'; -const decodingData: DecodingData = { +const decodingData = { stateChanges: [ { assetType: 'ERC20', @@ -165,4 +164,26 @@ describe('DecodedSimulation', () => { ); expect(tooltip).toBe('signature_decoding_bid_nft_tooltip'); }); + + it('renders label only once if there are multiple state changes of same changeType', async () => { + const state = getMockTypedSignConfirmStateForRequest({ + ...permitSignatureMsg, + decodingLoading: false, + decodingData: { + stateChanges: [ + decodingData.stateChanges[0], + decodingData.stateChanges[0], + decodingData.stateChanges[0], + ], + }, + }); + const mockStore = configureMockStore([])(state); + + const { findAllByText } = renderWithConfirmContextProvider( + , + mockStore, + ); + + expect(await findAllByText('Spending cap')).toHaveLength(1); + }); }); diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx index ec07ae253405..fe2be9d76261 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/typed-sign-v4-simulation/decoded-simulation/decoded-simulation.tsx @@ -60,10 +60,12 @@ const StateChangeRow = ({ stateChangeList, stateChange, chainId, + shouldDisplayLabel, }: { stateChangeList: DecodingDataStateChanges | null; stateChange: DecodingDataStateChange; chainId: Hex; + shouldDisplayLabel: boolean; }) => { const t = useI18nContext(); const { assetType, changeType, amount, contractAddress, tokenID } = @@ -71,7 +73,7 @@ const StateChangeRow = ({ const tooltip = getStateChangeToolip(stateChangeList, stateChange, t); return ( {(assetType === TokenStandard.ERC20 || @@ -104,19 +106,31 @@ const DecodedSimulation: React.FC = () => { const chainId = currentConfirmation.chainId as Hex; const { decodingLoading, decodingData } = currentConfirmation; - const stateChangeFragment = useMemo( - () => - (decodingData?.stateChanges ?? []).map( - (change: DecodingDataStateChange) => ( - - ), - ), - [decodingData?.stateChanges], - ); + const stateChangeFragment = useMemo(() => { + const stateChangesGrouped: Record = ( + decodingData?.stateChanges ?? [] + ).reduce>( + (result, stateChange) => { + result[stateChange.changeType] = [ + ...(result[stateChange.changeType] ?? []), + stateChange, + ]; + return result; + }, + {}, + ); + + return Object.entries(stateChangesGrouped).flatMap(([_, changeList]) => + changeList.map((change: DecodingDataStateChange, index: number) => ( + + )), + ); + }, [decodingData?.stateChanges]); return ( Date: Thu, 12 Dec 2024 13:46:34 +0000 Subject: [PATCH 080/111] feat: Permission page tour removal (#28966) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR is to remove product tour from Permissions Page ## **Related issues** Fixes: [https://github.com/MetaMask/MetaMask-planning/issues/3755](https://github.com/MetaMask/MetaMask-planning/issues/3755) ## **Manual testing steps** 1. Run extension with `yarn start` 2. Install a fresh version 3. Go to Permissions Page, check there is no Product Tour ## **Screenshots/Recordings** ### **Before** ![Screenshot 2024-12-05 at 3 53 47 PM](https://github.com/user-attachments/assets/a020cd59-492c-43df-af41-0f7a5ec7f142) ### **After** ![Screenshot 2024-12-05 at 3 54 50 PM](https://github.com/user-attachments/assets/e77251f3-c3c9-433b-bef8-218dceba2bf5) ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/_locales/de/messages.json | 6 ----- app/_locales/el/messages.json | 6 ----- app/_locales/en/messages.json | 6 ----- app/_locales/es/messages.json | 6 ----- app/_locales/fr/messages.json | 6 ----- app/_locales/hi/messages.json | 6 ----- app/_locales/id/messages.json | 6 ----- app/_locales/ja/messages.json | 6 ----- app/_locales/ko/messages.json | 6 ----- app/_locales/pt/messages.json | 6 ----- app/_locales/ru/messages.json | 6 ----- app/_locales/tl/messages.json | 6 ----- app/_locales/tr/messages.json | 6 ----- app/_locales/vi/messages.json | 6 ----- app/_locales/zh_CN/messages.json | 6 ----- .../connections/connect-with-metamask.spec.js | 4 --- .../connections/edit-account-flow.spec.js | 4 --- .../connections/edit-networks-flow.spec.js | 4 --- .../review-permissions-page.spec.js | 8 ------ .../dapp-interactions.spec.js | 5 ---- .../dapp-interactions/permissions.spec.js | 4 --- test/e2e/tests/metrics/dapp-viewed.spec.js | 4 --- .../multichain/all-permissions-page.spec.js | 8 ------ .../tests/multichain/permission-page.spec.js | 8 ------ .../permissions-page/permissions-page.js | 25 +------------------ 25 files changed, 1 insertion(+), 163 deletions(-) diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 06d2f690716d..ec9779e4d1af 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Hier können Sie die Genehmigungen sehen, die Sie installierten Snaps oder verbundenen Websites gegeben haben." }, - "permissionsPageTourDescription": { - "message": "Dies ist Ihr Kontrollfeld zum Verwalten der Genehmigungen für verbundene Websites und installierte Snaps." - }, - "permissionsPageTourTitle": { - "message": "Verbundene Websites sind nun Genehmigungen" - }, "permitSimulationDetailInfo": { "message": "Sie erteilen dem Spender die Genehmigung, diese Menge an Tokens von Ihrem Konto auszugeben." }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 8d09e2c6658f..42d08fa2f602 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Εδώ μπορείτε να δείτε τις άδειες χρήσης που έχετε δώσει στα εγκατεστημένα Snaps ή στους συνδεδεμένους ιστότοπους." }, - "permissionsPageTourDescription": { - "message": "Αυτός είναι ο πίνακας ελέγχου για τη διαχείριση των αδειών χρήσης που έχετε δώσει στους συνδεδεμένους ιστότοπους και στα εγκατεστημένα Snaps." - }, - "permissionsPageTourTitle": { - "message": "Οι συνδεδεμένοι ιστότοποι είναι τώρα με άδειες χρήσης" - }, "permitSimulationDetailInfo": { "message": "Δίνετε στον διαθέτη την άδεια να δαπανήσει τα tokens από τον λογαριασμό σας." }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 9d63e212d88c..34afdaab62ed 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -4255,12 +4255,6 @@ "permissionsPageEmptySubContent": { "message": "This is where you can see the permissions you've given to installed Snaps or connected sites." }, - "permissionsPageTourDescription": { - "message": "This is your control panel for managing permissions given to connected sites and installed Snaps." - }, - "permissionsPageTourTitle": { - "message": "Connected sites are now permissions" - }, "permitSimulationChange_approve": { "message": "Spending cap" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 2861d508743d..9d3b9028c734 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Aquí es donde puedes ver los permisos que has otorgado a los Snaps instalados o a los sitios conectados." }, - "permissionsPageTourDescription": { - "message": "Este es su panel de control para administrar los permisos otorgados a los sitios conectados y los Snaps instalados." - }, - "permissionsPageTourTitle": { - "message": "Los sitios conectados ahora tienen permisos" - }, "permitSimulationDetailInfo": { "message": "Le está dando permiso al gastador para gastar esta cantidad de tokens de su cuenta." }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 5ae9377d8a69..6b9f60d35678 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Ici, vous pouvez voir les autorisations que vous avez accordées aux Snaps installés ou aux sites connectés." }, - "permissionsPageTourDescription": { - "message": "C’’est votre panneau de configuration pour gérer les autorisations accordées aux sites connectés et aux Snaps installés." - }, - "permissionsPageTourTitle": { - "message": "Les sites connectés sont maintenant des autorisations" - }, "permitSimulationDetailInfo": { "message": "Vous autorisez la dépenseur à dépenser ce nombre de jetons de votre compte." }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index a036aef959ce..7e4df895fbd8 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "यहां पर आप इंस्टॉल किए गए Snaps या कनेक्टेड साइटों को दी गई अनुमतियां देख सकते हैं।" }, - "permissionsPageTourDescription": { - "message": "कनेक्टेड साइटों और इंस्टॉल किए गए Snaps को दी गई अनुमतियों को मैनेज करने के लिए यह आपका कंट्रोल पैनल है।" - }, - "permissionsPageTourTitle": { - "message": "कनेक्टेड साइटें अब अनुमतियां हैं" - }, "permitSimulationDetailInfo": { "message": "आप खर्च करने वाले को अपने अकाउंट से इतने सारे टोकन खर्च करने की अनुमति दे रहे हैं।" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 5777f05c2322..9cc407f17b1c 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Di sinilah Anda dapat melihat izin yang Anda berikan untuk Snap yang terinstal atau situs yang terhubung." }, - "permissionsPageTourDescription": { - "message": "Ini merupakan panel kontrol Anda untuk mengelola izin yang diberikan ke situs yang terhubung dan Snap yang terinstal." - }, - "permissionsPageTourTitle": { - "message": "Situs yang terhubung kini memiliki izin" - }, "permitSimulationDetailInfo": { "message": "Anda memberikan izin kepada pengguna untuk menggunakan token sebanyak ini dari akun." }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 561411606feb..08b8022108d1 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "ここには、インストールされたSnapや接続されたサイトに付与したアクセス許可が表示されます。" }, - "permissionsPageTourDescription": { - "message": "これは、接続されたサイトやインストールされたSnapに付与したアクセス許可を管理するための、コントロールパネルです。" - }, - "permissionsPageTourTitle": { - "message": "「接続済みのサイト」が「アクセス許可」に変更されました" - }, "permitSimulationDetailInfo": { "message": "この数量のトークンをアカウントから転送する権限を使用者に付与しようとしています。" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 941010db2abe..11c9e64de010 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "여기에서 설치된 Snap 또는 연결된 사이트의 권한을 확인할 수 있습니다." }, - "permissionsPageTourDescription": { - "message": "연결된 사이트 또는 설치된 Snap의 권한을 관리하기 위한 제어판입니다." - }, - "permissionsPageTourTitle": { - "message": "이제 연결된 사이트에 권한이 부여됩니다" - }, "permitSimulationDetailInfo": { "message": "내 계정에서 이만큼의 토큰을 사용할 수 있도록 승인합니다." }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index 553b0ad31508..af31962e7066 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Aqui você pode ver as permissões que deu aos snaps instalados ou sites conectados." }, - "permissionsPageTourDescription": { - "message": "Este é o seu painel de controle para gerenciar as permissões dadas aos sites conectados e snaps instalados." - }, - "permissionsPageTourTitle": { - "message": "Sites conectados agora são permissões" - }, "permitSimulationDetailInfo": { "message": "Você está autorizando o consumidor a gastar esta quantidade de tokens de sua conta." }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 1403b6084d27..c8c54df2d25d 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Здесь вы можете увидеть разрешения, которые вы предоставили установленным Snaps или подключенным сайтам." }, - "permissionsPageTourDescription": { - "message": "Это ваша панель управления для управления разрешениями, предоставленными подключенным сайтам и установленным Snaps." - }, - "permissionsPageTourTitle": { - "message": "Подключенные сайты теперь имеют разрешения" - }, "permitSimulationDetailInfo": { "message": "Вы даёте расходующему лицу разрешение потратить именно столько токенов из вашего аккаунта" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 60855b61765d..34f248e7ec8c 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Dito mo makikita ang mga pahintulot na iyong binigay sa mga naka-install na Snap o konektadong site." }, - "permissionsPageTourDescription": { - "message": "Ito ang iyong control panel para pamahalaan ang mga permiso na ibinigay sa mga konektadong Snap." - }, - "permissionsPageTourTitle": { - "message": "Ang mga konektadong site ay pahintulot na ngayon" - }, "permitSimulationDetailInfo": { "message": "Binibigyan mo ang gumagastos ng permiso upang gumastos ng ganito karaming token mula sa iyong account." }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 6bcd1b8a61fc..3bfcbe9812c1 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Burada, yüklü Snap'lere veya bağlı sitelere verdiğiniz izinleri görebilirsiniz." }, - "permissionsPageTourDescription": { - "message": "Burası, bağlı sitelere ve yüklü Snap'lere verilen izinleri yönetebileceğiniz kontrol panelinizdir." - }, - "permissionsPageTourTitle": { - "message": "Bağlı siteler şimdi izinler oldu" - }, "permitSimulationDetailInfo": { "message": "Harcama yapan tarafa hesabınızdan bu kadar çok token'i harcama izni veriyorsunuz." }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 3901eed1fc07..47ca7fad8568 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "Đây là nơi bạn có thể xem các quyền mà bạn đã cấp cho các Snap đã cài đặt hoặc các trang web đã kết nối." }, - "permissionsPageTourDescription": { - "message": "Đây là bảng điều khiển để bạn quản lý các quyền được cấp cho các trang web đã kết nối và các Snap đã cài đặt." - }, - "permissionsPageTourTitle": { - "message": "Các trang web đã kết nối hiện đã được cấp quyền" - }, "permitSimulationDetailInfo": { "message": "Bạn đang cấp cho người chi tiêu quyền chi tiêu số lượng token này từ tài khoản của bạn." }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 4d548221769f..2e8a8ee3a052 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -4105,12 +4105,6 @@ "permissionsPageEmptySubContent": { "message": "您可以在此处查看您授予已安装 Snap 或已连接站点的许可。" }, - "permissionsPageTourDescription": { - "message": "这是您的控制面板,用于管理授予已连接站点和已安装 Snap 的许可。" - }, - "permissionsPageTourTitle": { - "message": "已连接的站点现已获得许可" - }, "permitSimulationDetailInfo": { "message": "您将授予该消费者许可从您的账户中支出这些代币。" }, diff --git a/test/e2e/tests/connections/connect-with-metamask.spec.js b/test/e2e/tests/connections/connect-with-metamask.spec.js index 5611b40346db..b46fc8730d84 100644 --- a/test/e2e/tests/connections/connect-with-metamask.spec.js +++ b/test/e2e/tests/connections/connect-with-metamask.spec.js @@ -55,10 +55,6 @@ describe('Connections page', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.clickElement({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/connections/edit-account-flow.spec.js b/test/e2e/tests/connections/edit-account-flow.spec.js index 7b05f439714c..1c4899ed8328 100644 --- a/test/e2e/tests/connections/edit-account-flow.spec.js +++ b/test/e2e/tests/connections/edit-account-flow.spec.js @@ -58,10 +58,6 @@ describe('Edit Accounts Flow', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.clickElement({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/connections/edit-networks-flow.spec.js b/test/e2e/tests/connections/edit-networks-flow.spec.js index 1db224f0ac0a..95a091f7e504 100644 --- a/test/e2e/tests/connections/edit-networks-flow.spec.js +++ b/test/e2e/tests/connections/edit-networks-flow.spec.js @@ -43,10 +43,6 @@ describe('Edit Networks Flow', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.clickElement({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/connections/review-permissions-page.spec.js b/test/e2e/tests/connections/review-permissions-page.spec.js index d411a343b2c9..60b7df8de4e0 100644 --- a/test/e2e/tests/connections/review-permissions-page.spec.js +++ b/test/e2e/tests/connections/review-permissions-page.spec.js @@ -36,10 +36,6 @@ describe('Review Permissions page', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.clickElement({ text: '127.0.0.1:8080', tag: 'p', @@ -90,10 +86,6 @@ describe('Review Permissions page', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.clickElement({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/dapp-interactions/dapp-interactions.spec.js b/test/e2e/tests/dapp-interactions/dapp-interactions.spec.js index 584408134f1a..05d9528ce6b4 100644 --- a/test/e2e/tests/dapp-interactions/dapp-interactions.spec.js +++ b/test/e2e/tests/dapp-interactions/dapp-interactions.spec.js @@ -83,11 +83,6 @@ describe('Dapp interactions', function () { ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); - const connectedDapp1 = await driver.isElementPresent({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/dapp-interactions/permissions.spec.js b/test/e2e/tests/dapp-interactions/permissions.spec.js index 4b6c210f0a98..b8da733d3160 100644 --- a/test/e2e/tests/dapp-interactions/permissions.spec.js +++ b/test/e2e/tests/dapp-interactions/permissions.spec.js @@ -46,10 +46,6 @@ describe('Permissions', function () { text: 'All Permissions', tag: 'div', }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.waitForSelector({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/metrics/dapp-viewed.spec.js b/test/e2e/tests/metrics/dapp-viewed.spec.js index 668f93e65dc5..a747ea658937 100644 --- a/test/e2e/tests/metrics/dapp-viewed.spec.js +++ b/test/e2e/tests/metrics/dapp-viewed.spec.js @@ -297,10 +297,6 @@ describe('Dapp viewed Event @no-mmi', function () { text: 'All Permissions', tag: 'div', }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.clickElement({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/multichain/all-permissions-page.spec.js b/test/e2e/tests/multichain/all-permissions-page.spec.js index 5bb718bd8d20..47601c58bb2f 100644 --- a/test/e2e/tests/multichain/all-permissions-page.spec.js +++ b/test/e2e/tests/multichain/all-permissions-page.spec.js @@ -32,10 +32,6 @@ describe('Permissions Page', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); const connectedDapp = await driver.isElementPresent({ text: '127.0.0.1:8080', tag: 'p', @@ -83,10 +79,6 @@ describe('Permissions Page', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); const connectedDapp = await driver.isElementPresent({ text: '127.0.0.1:8080', tag: 'p', diff --git a/test/e2e/tests/multichain/permission-page.spec.js b/test/e2e/tests/multichain/permission-page.spec.js index 5ae3f71b6046..e2b7208045e0 100644 --- a/test/e2e/tests/multichain/permission-page.spec.js +++ b/test/e2e/tests/multichain/permission-page.spec.js @@ -32,10 +32,6 @@ describe('Permissions Page', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); const connectedDapp = await driver.isElementPresent({ text: '127.0.0.1:8080', tag: 'p', @@ -68,10 +64,6 @@ describe('Permissions Page', function () { '[data-testid ="account-options-menu-button"]', ); await driver.clickElement({ text: 'All Permissions', tag: 'div' }); - await driver.clickElementAndWaitToDisappear({ - text: 'Got it', - tag: 'button', - }); await driver.clickElement({ text: '127.0.0.1:8080', tag: 'p', diff --git a/ui/components/multichain/pages/permissions-page/permissions-page.js b/ui/components/multichain/pages/permissions-page/permissions-page.js index 8cdeae0ed57d..3f4680bf0350 100644 --- a/ui/components/multichain/pages/permissions-page/permissions-page.js +++ b/ui/components/multichain/pages/permissions-page/permissions-page.js @@ -1,4 +1,3 @@ -import classnames from 'classnames'; import React, { useEffect, useRef, useState } from 'react'; import { useHistory } from 'react-router-dom'; import { useSelector } from 'react-redux'; @@ -26,13 +25,7 @@ import { DEFAULT_ROUTE, REVIEW_PERMISSIONS, } from '../../../../helpers/constants/routes'; -import { - getOnboardedInThisUISession, - getShowPermissionsTour, - getConnectedSitesListWithNetworkInfo, -} from '../../../../selectors'; -import { ProductTour } from '../../product-tour-popover'; -import { hidePermissionsTour } from '../../../../store/actions'; +import { getConnectedSitesListWithNetworkInfo } from '../../../../selectors'; import { isSnapId } from '../../../../helpers/utils/snaps'; import { ConnectionListItem } from './connection-list-item'; @@ -44,8 +37,6 @@ export const PermissionsPage = () => { const sitesConnectionsList = useSelector( getConnectedSitesListWithNetworkInfo, ); - const showPermissionsTour = useSelector(getShowPermissionsTour); - const onboardedInThisUISession = useSelector(getOnboardedInThisUISession); useEffect(() => { setTotalConnections(Object.keys(sitesConnectionsList).length); @@ -94,20 +85,6 @@ export const PermissionsPage = () => { {t('permissions')} - {showPermissionsTour && !onboardedInThisUISession ? ( - - ) : null} {totalConnections > 0 ? ( From 88ffa10a612201020172be30569e4b2904f0f613 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 12 Dec 2024 10:21:32 -0330 Subject: [PATCH 081/111] Cherry pick 2e8ef0237 (#29125) to v12.9.1 (#29136) Cherry pick 2e8ef0237 (#29125) to v12.9.1 --------- Co-authored-by: Charly Chevalier Co-authored-by: MetaMask Bot --- lavamoat/browserify/beta/policy.json | 238 +++++++++------- lavamoat/browserify/flask/policy.json | 238 +++++++++------- lavamoat/browserify/main/policy.json | 238 +++++++++------- lavamoat/browserify/mmi/policy.json | 238 +++++++++------- package.json | 18 +- yarn.lock | 380 ++++++++++++++++---------- 6 files changed, 815 insertions(+), 535 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 47227aeef932..b3b118eb6bb8 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -187,28 +182,16 @@ "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@metamask/message-signing-snap>@noble/curves": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/message-signing-snap>@noble/curves": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, "@metamask/message-signing-snap>@noble/curves": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -375,9 +358,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -387,15 +370,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1621,12 +1605,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -1676,13 +1666,7 @@ "TextEncoder": true }, "packages": { - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": true - } - }, - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@metamask/name-controller": { @@ -2452,9 +2436,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2464,7 +2459,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2727,6 +2722,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2739,7 +2735,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2751,14 +2746,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3228,23 +3215,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3876,16 +3846,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3903,54 +3916,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -3964,6 +3990,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -3985,24 +4016,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4326,9 +4361,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 47227aeef932..b3b118eb6bb8 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -187,28 +182,16 @@ "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@metamask/message-signing-snap>@noble/curves": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/message-signing-snap>@noble/curves": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, "@metamask/message-signing-snap>@noble/curves": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -375,9 +358,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -387,15 +370,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1621,12 +1605,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -1676,13 +1666,7 @@ "TextEncoder": true }, "packages": { - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": true - } - }, - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@metamask/name-controller": { @@ -2452,9 +2436,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2464,7 +2459,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2727,6 +2722,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2739,7 +2735,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2751,14 +2746,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3228,23 +3215,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3876,16 +3846,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3903,54 +3916,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -3964,6 +3990,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -3985,24 +4016,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4326,9 +4361,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 47227aeef932..b3b118eb6bb8 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -187,28 +182,16 @@ "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@metamask/message-signing-snap>@noble/curves": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/message-signing-snap>@noble/curves": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, "@metamask/message-signing-snap>@noble/curves": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -375,9 +358,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -387,15 +370,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1621,12 +1605,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -1676,13 +1666,7 @@ "TextEncoder": true }, "packages": { - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": true - } - }, - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@metamask/name-controller": { @@ -2452,9 +2436,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2464,7 +2459,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2727,6 +2722,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2739,7 +2735,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2751,14 +2746,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3228,23 +3215,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3876,16 +3846,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3903,54 +3916,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -3964,6 +3990,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -3985,24 +4016,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4326,9 +4361,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 89eedc822794..b4f5e137de6b 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "@ethereumjs/tx>ethereum-cryptography": true, "browserify>buffer": true, @@ -158,11 +158,6 @@ "webpack>events": true } }, - "@ethereumjs/tx>@ethereumjs/util>@ethereumjs/rlp": { - "globals": { - "TextEncoder": true - } - }, "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { "globals": { "Headers": true, @@ -187,28 +182,16 @@ "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@metamask/message-signing-snap>@noble/curves": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/message-signing-snap>@noble/curves": true, + "@noble/hashes": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, "@metamask/message-signing-snap>@noble/curves": true, - "@metamask/utils>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@metamask/utils>@scure/base": true, + "@noble/hashes": true } }, "@ethersproject/abi": { @@ -375,9 +358,9 @@ "@ethereumjs/tx": true, "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, + "@keystonehq/metamask-airgapped-keyring>rlp": true, "@metamask/obs-store": true, "browserify>buffer": true, - "ethereumjs-util>rlp": true, "uuid": true, "webpack>events": true } @@ -387,15 +370,16 @@ "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "@keystonehq/bc-ur-registry-eth": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "@metamask/eth-trezor-keyring>hdkey": true, "browserify>buffer": true, + "eth-lattice-keyring>rlp": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { - "globals": { - "TextEncoder": true + "@keystonehq/metamask-airgapped-keyring>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@lavamoat/lavadome-react": { @@ -1713,12 +1697,18 @@ "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util": { "packages": { "@metamask/keyring-controller>ethereumjs-wallet>ethereum-cryptography": true, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true, - "ethereumjs-util>create-hash": true, - "ethereumjs-util>rlp": true + "ethereumjs-util>create-hash": true + } + }, + "@metamask/keyring-controller>ethereumjs-wallet>ethereumjs-util>rlp": { + "packages": { + "bn.js": true, + "browserify>buffer": true } }, "@metamask/logging-controller": { @@ -1768,13 +1758,7 @@ "TextEncoder": true }, "packages": { - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": true - } - }, - "@metamask/message-signing-snap>@noble/curves>@noble/hashes": { - "globals": { - "TextEncoder": true, - "crypto": true + "@noble/hashes": true } }, "@metamask/name-controller": { @@ -2544,9 +2528,20 @@ "@metamask/smart-transactions-controller>@ethereumjs/tx": { "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/util": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/common": { + "packages": { "@metamask/smart-transactions-controller>@ethereumjs/util": true, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": true + "webpack>events": true + } + }, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": { + "globals": { + "TextEncoder": true } }, "@metamask/smart-transactions-controller>@ethereumjs/util": { @@ -2556,7 +2551,7 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@metamask/smart-transactions-controller>@ethereumjs/tx>@ethereumjs/rlp": true, "webpack>events": true } }, @@ -2819,6 +2814,7 @@ }, "packages": { "@ethereumjs/tx": true, + "@ethereumjs/tx>@ethereumjs/common": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethersproject/abi": true, "@ethersproject/contracts": true, @@ -2831,7 +2827,6 @@ "@metamask/name-controller>async-mutex": true, "@metamask/network-controller": true, "@metamask/rpc-errors": true, - "@metamask/transaction-controller>@ethereumjs/common": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, "@metamask/utils": true, "bn.js": true, @@ -2843,14 +2838,6 @@ "webpack>events": true } }, - "@metamask/transaction-controller>@ethereumjs/common": { - "packages": { - "@ethereumjs/tx>@ethereumjs/common>crc-32": true, - "@ethereumjs/tx>@ethereumjs/util": true, - "browserify>buffer": true, - "webpack>events": true - } - }, "@metamask/transaction-controller>@metamask/nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -3320,23 +3307,6 @@ "define": true } }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common": { - "packages": { - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": true, - "webpack>events": true - } - }, - "@trezor/connect-web>@trezor/connect>@ethereumjs/common>@ethereumjs/util": { - "globals": { - "console.warn": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true - } - }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf": { "packages": { "@swc/helpers>tslib": true, @@ -3968,16 +3938,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "bn.js": true, "browserify>buffer": true, "crypto-browserify": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true, "webpack>events": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk": { "globals": { "AbortController": true, @@ -3995,54 +4008,67 @@ "packages": { "@ethereumjs/tx>@ethereumjs/common>crc-32": true, "@ethersproject/abi": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "@metamask/eth-sig-util": true, "@metamask/ethjs>js-sha3": true, "@metamask/keyring-api>bech32": true, - "@metamask/ppom-validator>elliptic": true, "bn.js": true, "browserify>buffer": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>aes-js": 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>bs58check": true, - "eth-lattice-keyring>gridplus-sdk>secp256k1": true, + "eth-lattice-keyring>gridplus-sdk>elliptic": true, + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": true, "eth-lattice-keyring>gridplus-sdk>uuid": true, + "eth-lattice-keyring>rlp": true, + "ethereumjs-util>ethereum-cryptography>bs58check": true, "ethers>@ethersproject/sha2>hash.js": true, + "ganache>secp256k1": true, "lodash": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true } }, "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { "packages": { - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": true, + "@ethereumjs/tx>@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, "webpack>events": true } }, - "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/util": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { "globals": { - "console.warn": true, - "fetch": true + "TextDecoder": true, + "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": true, - "webpack>events": true + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "eth-lattice-keyring>gridplus-sdk>aes-js": { @@ -4056,6 +4082,11 @@ "define": true } }, + "eth-lattice-keyring>gridplus-sdk>bitwise": { + "packages": { + "browserify>buffer": true + } + }, "eth-lattice-keyring>gridplus-sdk>borc": { "globals": { "console": true @@ -4077,24 +4108,28 @@ "globals": { "URL": true, "URLSearchParams": true, - "location": true, - "navigator": true - } - }, - "eth-lattice-keyring>gridplus-sdk>bs58check": { - "packages": { - "@noble/hashes": true, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": true + "location": true } }, - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58": { + "eth-lattice-keyring>gridplus-sdk>elliptic": { "packages": { - "eth-lattice-keyring>gridplus-sdk>bs58check>bs58>base-x": true + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, - "eth-lattice-keyring>gridplus-sdk>secp256k1": { + "eth-lattice-keyring>gridplus-sdk>eth-eip712-util-browser": { + "globals": { + "intToBuffer": true + }, "packages": { - "@metamask/ppom-validator>elliptic": true + "@metamask/ethjs>js-sha3": true, + "bn.js": true, + "buffer": true } }, "eth-lattice-keyring>gridplus-sdk>uuid": { @@ -4418,9 +4453,20 @@ "ethers>@ethersproject/signing-key": { "packages": { "@ethersproject/bytes": true, - "@metamask/ppom-validator>elliptic": true, "ethers>@ethersproject/logger": true, - "ethers>@ethersproject/properties": true + "ethers>@ethersproject/properties": true, + "ethers>@ethersproject/signing-key>elliptic": true + } + }, + "ethers>@ethersproject/signing-key>elliptic": { + "packages": { + "@metamask/ppom-validator>elliptic>brorand": true, + "@metamask/ppom-validator>elliptic>hmac-drbg": true, + "@metamask/ppom-validator>elliptic>minimalistic-assert": true, + "@metamask/ppom-validator>elliptic>minimalistic-crypto-utils": true, + "bn.js": true, + "ethers>@ethersproject/sha2>hash.js": true, + "pumpify>inherits": true } }, "ethers>@ethersproject/solidity": { diff --git a/package.json b/package.json index 67c048a611cc..2717bfb589b3 100644 --- a/package.json +++ b/package.json @@ -133,11 +133,6 @@ }, "resolutions": { "chokidar": "^3.6.0", - "gridplus-sdk/elliptic": "^6.5.7", - "gridplus-sdk/secp256k1": "^5.0.1", - "eth-lattice-keyring/@ethereumjs/tx": "^4.2.0", - "@ethersproject/signing-key/elliptic": "^6.5.7", - "ganache/secp256k1": "^4.0.4", "simple-update-notifier@^1.0.0": "^2.0.0", "@types/react": "^16.9.53", "analytics-node/axios": "^0.21.2", @@ -696,10 +691,17 @@ "@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>hdkey>secp256k1": false, "@storybook/api>core-js": false, "@storybook/core>@storybook/core-client>@storybook/ui>core-js-pure": false, "@storybook/test-runner>@storybook/core-common>esbuild": false, - "eth-lattice-keyring>gridplus-sdk": true, + "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-lattice-keyring>gridplus-sdk": false, "ethereumjs-util>ethereum-cryptography>keccak": false, "ganache>@trufflesuite/bigint-buffer": false, "ganache>@trufflesuite/uws-js-unofficial>bufferutil": false, @@ -709,10 +711,13 @@ "ganache>leveldown": false, "ganache>secp256k1": false, "ganache>utf-8-validate": false, + "ethereumjs-util>ethereum-cryptography>secp256k1": false, "gulp-watch>chokidar>fsevents": false, "gulp>glob-watcher>chokidar>fsevents": false, "webpack>watchpack>watchpack-chokidar2>chokidar>fsevents": false, + "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": false, "eth-lattice-keyring>gridplus-sdk>secp256k1": false, + "eth-lattice-keyring>secp256k1": false, "@storybook/react>@pmmmwh/react-refresh-webpack-plugin>core-js-pure": false, "@testing-library/jest-dom>aria-query>@babel/runtime-corejs3>core-js-pure": false, "web3": false, @@ -721,6 +726,7 @@ "web3>web3-core>web3-core-requestmanager>web3-providers-ws>websocket>es5-ext": false, "web3>web3-core>web3-core-requestmanager>web3-providers-ws>websocket>utf-8-validate": false, "web3>web3-shh": false, + "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>hdkey>secp256k1": false, "@metamask/base-controller>simple-git-hooks": false, "@storybook/core>@storybook/core-server>webpack>watchpack>watchpack-chokidar2>chokidar>fsevents": false, "resolve-url-loader>es6-iterator>es5-ext": false, diff --git a/yarn.lock b/yarn.lock index ad8e7e66104d..70482a79a761 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1684,6 +1684,33 @@ __metadata: languageName: node linkType: hard +"@chainsafe/as-sha256@npm:^0.3.1": + version: 0.3.1 + resolution: "@chainsafe/as-sha256@npm:0.3.1" + checksum: 10/3bae7b4bc6e307baa3cf1f9d2c75827874cd0fb458bc592656d741d374b48e71c042fe21616a506cb821487a5abfc6b92181e4b7fbf49b7370cee4df0b67d95a + languageName: node + linkType: hard + +"@chainsafe/persistent-merkle-tree@npm:^0.4.2": + version: 0.4.2 + resolution: "@chainsafe/persistent-merkle-tree@npm:0.4.2" + dependencies: + "@chainsafe/as-sha256": "npm:^0.3.1" + checksum: 10/a7e59f80be3ce0a86fe452a3c003bd159a1719ed22cae22e9841668f0eda8c35412fa16b3b150d96f583a24f430a5cc2a1bfcabafc1b9cf6e1fdb227e98c4dc7 + languageName: node + linkType: hard + +"@chainsafe/ssz@npm:0.9.4": + version: 0.9.4 + resolution: "@chainsafe/ssz@npm:0.9.4" + dependencies: + "@chainsafe/as-sha256": "npm:^0.3.1" + "@chainsafe/persistent-merkle-tree": "npm:^0.4.2" + case: "npm:^1.6.3" + checksum: 10/2fe83d0b3ef131e14b51b88bb3343b14e7a02185fa9fd3da84b4726dbd857daaa4f7f6f4840fe3772fc1380352b1675a13b5f6153c4211c0f00ffa542b62bf2f + languageName: node + linkType: hard + "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -2295,16 +2322,17 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/common@npm:4.3.0": - version: 4.3.0 - resolution: "@ethereumjs/common@npm:4.3.0" +"@ethereumjs/common@npm:3.1.1": + version: 3.1.1 + resolution: "@ethereumjs/common@npm:3.1.1" dependencies: - "@ethereumjs/util": "npm:^9.0.3" - checksum: 10/90f7fe1ba6827b65cd25e9bb4adf07a117ea554a950bb364d5fd9873cb770d383addb0ad34839a91fbec22ebc25516c6fb7e70ae0198c78f933920bf39797a94 + "@ethereumjs/util": "npm:^8.0.5" + crc-32: "npm:^1.2.0" + checksum: 10/dcc3dd9ec23e8817ec0bf5bb2217619a8db08ea937603258831a906702e79c6f6e93b47d6edde551c7f46ce4a0268febacc23cefcb4ca2865be3b5c0bf5ec670 languageName: node linkType: hard -"@ethereumjs/common@npm:^3.2.0": +"@ethereumjs/common@npm:^3.1.1, @ethereumjs/common@npm:^3.2.0": version: 3.2.0 resolution: "@ethereumjs/common@npm:3.2.0" dependencies: @@ -2341,15 +2369,22 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/tx@npm:5.3.0": - version: 5.3.0 - resolution: "@ethereumjs/tx@npm:5.3.0" +"@ethereumjs/tx@npm:4.1.1": + version: 4.1.1 + resolution: "@ethereumjs/tx@npm:4.1.1" dependencies: - "@ethereumjs/common": "npm:^4.3.0" - "@ethereumjs/rlp": "npm:^5.0.2" - "@ethereumjs/util": "npm:^9.0.3" - ethereum-cryptography: "npm:^2.1.3" - checksum: 10/4eb48e763d81ea0978648367d61c568c8d10f769c1ea7d32307ebe02299d4fa9fe5d7bf794ec1ee22e92edef6bfe1f459d5816e1c62d3f93602d931807ca488b + "@chainsafe/ssz": "npm:0.9.4" + "@ethereumjs/common": "npm:^3.1.1" + "@ethereumjs/rlp": "npm:^4.0.1" + "@ethereumjs/util": "npm:^8.0.5" + "@ethersproject/providers": "npm:^5.7.2" + ethereum-cryptography: "npm:^1.1.2" + peerDependencies: + c-kzg: ^1.0.8 + peerDependenciesMeta: + c-kzg: + optional: true + checksum: 10/3074e198e0a550dd47dc359d16aa3bb9336fc52b14681fb0b1bcc8d4bdac62cc384962a13347819488da18bedf9578d4d5f2491e3609cb7fa7b2f6cafeb18b23 languageName: node linkType: hard @@ -2388,7 +2423,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/util@npm:^9.0.1, @ethereumjs/util@npm:^9.0.2, @ethereumjs/util@npm:^9.0.3, @ethereumjs/util@npm:^9.1.0": +"@ethereumjs/util@npm:^9.0.1, @ethereumjs/util@npm:^9.0.2, @ethereumjs/util@npm:^9.1.0": version: 9.1.0 resolution: "@ethereumjs/util@npm:9.1.0" dependencies: @@ -6616,6 +6651,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:1.1.2": + version: 1.1.2 + resolution: "@noble/hashes@npm:1.1.2" + checksum: 10/2826c94ea30b8d2447fda549f4ffa97a637a480eeef5c96702a2f932c305038465f7436caf5b2bad41eb43c08c270b921e101488b18165feebe3854091b56d91 + languageName: node + linkType: hard + "@noble/hashes@npm:1.3.2": version: 1.3.2 resolution: "@noble/hashes@npm:1.3.2" @@ -6623,17 +6665,17 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:^1.1.2, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:~1.4.0": version: 1.4.0 resolution: "@noble/hashes@npm:1.4.0" checksum: 10/e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6 languageName: node linkType: hard -"@noble/hashes@npm:^1.1.2, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.4.0": - version: 1.5.0 - resolution: "@noble/hashes@npm:1.5.0" - checksum: 10/da7fc7af52af7afcf59810a7eea6155075464ff462ffda2572dc6d57d53e2669b1ea2ec774e814f6273f1697e567f28d36823776c9bf7068cba2a2855140f26e +"@noble/hashes@npm:~1.1.1": + version: 1.1.3 + resolution: "@noble/hashes@npm:1.1.3" + checksum: 10/42e9883649abd85e6a65cfa528e72b2a81ebb601b44db1d71b6ba927cede0627d7d8c649df159a7f84a949dfe17fe268d4b664c5a36c7e0b2a3d4198bc19f5e4 languageName: node linkType: hard @@ -6644,6 +6686,13 @@ __metadata: languageName: node linkType: hard +"@noble/secp256k1@npm:1.6.3, @noble/secp256k1@npm:~1.6.0": + version: 1.6.3 + resolution: "@noble/secp256k1@npm:1.6.3" + checksum: 10/e4f4b0cfa1c5d23fb1b9938fa3cce1a1160a76a89eb91f6dde98075bbdf328709d51771c85b6b4b118f8ce5a6c6554da6c9af7de7716aba56cef30f61a715bd7 + languageName: node + linkType: hard + "@noble/secp256k1@npm:^1.7.0": version: 1.7.1 resolution: "@noble/secp256k1@npm:1.7.1" @@ -7768,10 +7817,21 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:^1.0.0, @scure/base@npm:^1.1.1, @scure/base@npm:^1.1.3, @scure/base@npm:~1.1.3, @scure/base@npm:~1.1.6": - version: 1.1.9 - resolution: "@scure/base@npm:1.1.9" - checksum: 10/f0ab7f687bbcdee2a01377fe3cd808bf63977999672751295b6a92625d5322f4754a96d40f6bd579bc367aad48ecf8a4e6d0390e70296e6ded1076f52adb16bb +"@scure/base@npm:^1.0.0, @scure/base@npm:^1.1.1, @scure/base@npm:^1.1.3, @scure/base@npm:~1.1.0, @scure/base@npm:~1.1.3, @scure/base@npm:~1.1.6": + version: 1.1.7 + resolution: "@scure/base@npm:1.1.7" + checksum: 10/fc50ffaab36cb46ff9fa4dc5052a06089ab6a6707f63d596bb34aaaec76173c9a564ac312a0b981b5e7a5349d60097b8878673c75d6cbfc4da7012b63a82099b + languageName: node + linkType: hard + +"@scure/bip32@npm:1.1.0": + version: 1.1.0 + resolution: "@scure/bip32@npm:1.1.0" + dependencies: + "@noble/hashes": "npm:~1.1.1" + "@noble/secp256k1": "npm:~1.6.0" + "@scure/base": "npm:~1.1.0" + checksum: 10/e58660fc96dc5c87d0047bf41150fa3b424617e6289ba522cc81bdeecaf1a26e34f01dcd9d76f3e5c2c570ced608a527733cc375abfce4dc9b8e2365719ea5d3 languageName: node linkType: hard @@ -7786,6 +7846,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.1.0": + version: 1.1.0 + resolution: "@scure/bip39@npm:1.1.0" + dependencies: + "@noble/hashes": "npm:~1.1.1" + "@scure/base": "npm:~1.1.0" + checksum: 10/d843be225dda4b6b2c0f90e52e00eef708df3cecbc944902298d487c669a6d219bd41877b20adaf72ba84aec2f0cb1e4567dafc6ce7295d9f132bdb0dcb375b3 + languageName: node + linkType: hard + "@scure/bip39@npm:1.3.0": version: 1.3.0 resolution: "@scure/bip39@npm:1.3.0" @@ -8139,13 +8209,6 @@ __metadata: languageName: node linkType: hard -"@sovpro/delimited-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "@sovpro/delimited-stream@npm:1.1.0" - checksum: 10/e78fc97a8509c07b55483df2253137de07b10f14db15d230526a6dd95c86e99d8f54c7af8697806bd16522eec2c50e44e5b4e0294bed80da833a2185f17f3ab6 - languageName: node - linkType: hard - "@spruceid/siwe-parser@npm:2.1.0": version: 2.1.0 resolution: "@spruceid/siwe-parser@npm:2.1.0" @@ -11220,13 +11283,6 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "@types/uuid@npm:10.0.0" - checksum: 10/e3958f8b0fe551c86c14431f5940c3470127293280830684154b91dc7eb3514aeb79fe3216968833cf79d4d1c67f580f054b5be2cd562bebf4f728913e73e944 - languageName: node - linkType: hard - "@types/uuid@npm:^8.3.0": version: 8.3.0 resolution: "@types/uuid@npm:8.3.0" @@ -11234,7 +11290,7 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:^9.0.1, @types/uuid@npm:^9.0.8": +"@types/uuid@npm:^9.0.0, @types/uuid@npm:^9.0.1, @types/uuid@npm:^9.0.8": version: 9.0.8 resolution: "@types/uuid@npm:9.0.8" checksum: 10/b8c60b7ba8250356b5088302583d1704a4e1a13558d143c549c408bf8920535602ffc12394ede77f8a8083511b023704bc66d1345792714002bfa261b17c5275 @@ -12277,7 +12333,7 @@ __metadata: languageName: node linkType: hard -"aes-js@npm:^3.1.2": +"aes-js@npm:^3.1.1, aes-js@npm:^3.1.2": version: 3.1.2 resolution: "aes-js@npm:3.1.2" checksum: 10/b65916767034a51375a3ac5aad62af452d89a386c1ae7b607bb9145d0bb8b8823bf2f3eba85bdfa52d61c65d5aed90ba90f677b8c826bfa1a8b7ae2fa3b54d91 @@ -13472,13 +13528,6 @@ __metadata: languageName: node linkType: hard -"base-x@npm:^5.0.0": - version: 5.0.0 - resolution: "base-x@npm:5.0.0" - checksum: 10/fa82bc9a963f7a765a3287ba632661669fe553d06ee0d4d4e282640335bff30ec685e3c3b1714e265f697b234facd02a310f1e2465db88f4f1a448e6267fbc65 - languageName: node - linkType: hard - "base32-encode@npm:^1.2.0": version: 1.2.0 resolution: "base32-encode@npm:1.2.0" @@ -13697,10 +13746,10 @@ __metadata: languageName: node linkType: hard -"bitwise@npm:^2.2.1": - version: 2.2.1 - resolution: "bitwise@npm:2.2.1" - checksum: 10/517aea40f326847935a8ae4367d6beca596982ad55db1d0288a4055c9eba78c6b3ccd10d9ad423df356d946d9a898b36c0d5c06673fba4fb98fb1b58df74788e +"bitwise@npm:^2.0.4": + version: 2.1.0 + resolution: "bitwise@npm:2.1.0" + checksum: 10/d075220e8b8d1e41d0e60c7081811eef108024a094c4e7f5c2ad67235f3bcac9f6ffd218884900591d602fbd61aff9a6c1d650cd5a0e0e34f12e11623aab5da1 languageName: node linkType: hard @@ -13828,23 +13877,33 @@ __metadata: languageName: node linkType: hard -"borc@npm:^3.0.0": - version: 3.0.0 - resolution: "borc@npm:3.0.0" +"borc@npm:2.1.2": + version: 2.1.2 + resolution: "borc@npm:2.1.2" dependencies: bignumber.js: "npm:^9.0.0" - buffer: "npm:^6.0.3" + buffer: "npm:^5.5.0" commander: "npm:^2.15.0" ieee754: "npm:^1.1.13" - iso-url: "npm:^1.1.5" - json-text-sequence: "npm:~0.3.0" + iso-url: "npm:~0.4.7" + json-text-sequence: "npm:~0.1.0" readable-stream: "npm:^3.6.0" - bin: - cbor2comment: bin/cbor2comment.js - cbor2diag: bin/cbor2diag.js - cbor2json: bin/cbor2json.js - json2cbor: bin/json2cbor.js - checksum: 10/fc9eaae0a544a300d0eaa4173d523649c9b85ed13f46156d802b5514c75aa4ec80c7ff183afd2bb4067a3166a7561f1a362edeb1673a7760d401b801b688477e + checksum: 10/a506aec97c3de0a015bf43729a82fe7e7c1ca1f3af72151dacda5d901a673719bfa6e4241d9e09d4b0abdfaf090f5f0645c3397d28e4d4d637f6e3e36e1ed268 + languageName: node + linkType: hard + +"borc@patch:borc@npm%3A2.1.2#./.yarn/patches/borc-npm-2.1.2-8ffcc2dd81.patch::locator=metamask-crx%40workspace%3A.": + version: 2.1.2 + resolution: "borc@patch:borc@npm%3A2.1.2#./.yarn/patches/borc-npm-2.1.2-8ffcc2dd81.patch::version=2.1.2&hash=3e0a96&locator=metamask-crx%40workspace%3A." + dependencies: + bignumber.js: "npm:^9.0.0" + buffer: "npm:^5.5.0" + commander: "npm:^2.15.0" + ieee754: "npm:^1.1.13" + iso-url: "npm:~0.4.7" + json-text-sequence: "npm:~0.1.0" + readable-stream: "npm:^3.6.0" + checksum: 10/f72b4bb1cef3422a817acbf45201904b36fc00d03613506a3b36d63e6b14713b35970cf1bb8f25721c38d8ac12bbf9ca6098430a1c6b39666d60722641ea8bd3 languageName: node linkType: hard @@ -14204,15 +14263,6 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^6.0.0": - version: 6.0.0 - resolution: "bs58@npm:6.0.0" - dependencies: - base-x: "npm:^5.0.0" - checksum: 10/7c9bb2b2d93d997a8c652de3510d89772007ac64ee913dc4e16ba7ff47624caad3128dcc7f360763eb6308760c300b3e9fd91b8bcbd489acd1a13278e7949c4e - languageName: node - linkType: hard - "bs58check@npm:2.1.2, bs58check@npm:^2.1.2": version: 2.1.2 resolution: "bs58check@npm:2.1.2" @@ -14234,16 +14284,6 @@ __metadata: languageName: node linkType: hard -"bs58check@npm:^4.0.0": - version: 4.0.0 - resolution: "bs58check@npm:4.0.0" - dependencies: - "@noble/hashes": "npm:^1.2.0" - bs58: "npm:^6.0.0" - checksum: 10/cf5691bdfdf317574f722582360a834f01a36e8f6c850bd5791f04e040b334a0800b7c322ad24c77979c3ed6ef6cf31a6373366b4018223e3005278d491d8799 - languageName: node - linkType: hard - "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -14643,6 +14683,13 @@ __metadata: languageName: node linkType: hard +"case@npm:^1.6.3": + version: 1.6.3 + resolution: "case@npm:1.6.3" + checksum: 10/2fc1df75bbb4118339e06141b9a54aba95cc62460ac92730290144fbec6b6a04f5bf7abf6a6486a1338f5821bd184402f216cec8cea0472451759c27e20fc332 + languageName: node + linkType: hard + "cashaddrjs@npm:0.4.4": version: 0.4.4 resolution: "cashaddrjs@npm:0.4.4" @@ -15820,12 +15867,15 @@ __metadata: languageName: node linkType: hard -"crc-32@npm:^1.2.0, crc-32@npm:^1.2.2": - version: 1.2.2 - resolution: "crc-32@npm:1.2.2" +"crc-32@npm:^1.2.0": + version: 1.2.0 + resolution: "crc-32@npm:1.2.0" + dependencies: + exit-on-epipe: "npm:~1.0.1" + printj: "npm:~1.1.0" bin: - crc32: bin/crc32.njs - checksum: 10/824f696a5baaf617809aa9cd033313c8f94f12d15ebffa69f10202480396be44aef9831d900ab291638a8022ed91c360696dd5b1ba691eb3f34e60be8835b7c3 + crc32: ./bin/crc32.njs + checksum: 10/10c648c986b005ed0ea8393bb0d1ccb99e7a102505b136d313dee6abe204aa682d9bb9bc6fd180f9cd98ef92aa029964f1cc96a2a85eb50507dedd9ead1a262f languageName: node linkType: hard @@ -16727,6 +16777,13 @@ __metadata: languageName: node linkType: hard +"delimit-stream@npm:0.1.0": + version: 0.1.0 + resolution: "delimit-stream@npm:0.1.0" + checksum: 10/9d179cfb91dfbb0702909dfab33bd837fec67c49f0c81495215af578fb08f262d509d76de7431eb11e64e6e71794b9bfe642e372fd33fabbfaf7e060cf5c044f + languageName: node + linkType: hard + "depcheck@npm:^1.4.3": version: 1.4.3 resolution: "depcheck@npm:1.4.3" @@ -17497,9 +17554,24 @@ __metadata: languageName: node linkType: hard +"elliptic@npm:6.5.4": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10/2cd7ff4b69720dbb2ca1ca650b2cf889d1df60c96d4a99d331931e4fe21e45a7f3b8074e86618ca7e56366c4b6258007f234f9d61d9b0c87bbbc8ea990b99e94 + languageName: node + linkType: hard + "elliptic@npm:^6.0.0, elliptic@npm:^6.4.0, elliptic@npm:^6.5.4, elliptic@npm:^6.5.7": - version: 6.5.7 - resolution: "elliptic@npm:6.5.7" + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" dependencies: bn.js: "npm:^4.11.9" brorand: "npm:^1.1.0" @@ -17508,7 +17580,7 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10/fbad1fad0a5cc07df83f80cc1f7a784247ef59075194d3e340eaeb2f4dd594825ee24c7e9b0cf279c9f1982efe610503bb3139737926428c4821d4fca1bcf348 + checksum: 10/dc678c9febd89a219c4008ba3a9abb82237be853d9fd171cd602c8fb5ec39927e65c6b5e7a1b2a4ea82ee8e0ded72275e7932bb2da04a5790c2638b818e4e1c5 languageName: node linkType: hard @@ -18691,9 +18763,20 @@ __metadata: linkType: hard "eth-chainlist@npm:~0.0.498": - version: 0.0.519 - resolution: "eth-chainlist@npm:0.0.519" - checksum: 10/c9767c64e58d140d04e6fcca9589c50edab48a5c57a62f2c749279574a9ab3e13784b05ab4c05c7b020fe8421769bc4119bd7a904df040fbb076827aaac3de23 + version: 0.0.498 + resolution: "eth-chainlist@npm:0.0.498" + checksum: 10/a414c0e1f0a877f9ab8bf1cf775556308ddbb66618e368666d4dea9a0b949febedf8ca5440cf57419413404e7661f1e3d040802faf532d0e1618c40ecd334cbf + languageName: node + linkType: hard + +"eth-eip712-util-browser@npm:^0.0.3": + version: 0.0.3 + resolution: "eth-eip712-util-browser@npm:0.0.3" + dependencies: + bn.js: "npm:>4.0.0" + buffer: "npm:^6.0.3" + js-sha3: "npm:^0.8.0" + checksum: 10/f953e553da8326cc7eacffd7edc4c5ca4ba66ddf27546412cbed961900d50bbd8196b44665bd9e8f7d63c3b64df0793a6a8a60cc2f15b340763a78e84c4e7bd4 languageName: node linkType: hard @@ -18765,7 +18848,19 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.1.3, ethereum-cryptography@npm:^2.2.1": +"ethereum-cryptography@npm:^1.1.2": + version: 1.1.2 + resolution: "ethereum-cryptography@npm:1.1.2" + dependencies: + "@noble/hashes": "npm:1.1.2" + "@noble/secp256k1": "npm:1.6.3" + "@scure/bip32": "npm:1.1.0" + "@scure/bip39": "npm:1.1.0" + checksum: 10/abf9288086002a697e0ee0077d77d001c8e1306fa53ea8d7901f9744786f47d073caa6c266bd5b25a283a5c0fbc8beed9fa9cd90d842dc51339e6748aa1ab46a + languageName: node + linkType: hard + +"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.2.1": version: 2.2.1 resolution: "ethereum-cryptography@npm:2.2.1" dependencies: @@ -19057,6 +19152,13 @@ __metadata: languageName: node linkType: hard +"exit-on-epipe@npm:~1.0.1": + version: 1.0.1 + resolution: "exit-on-epipe@npm:1.0.1" + checksum: 10/b180aa277aec5bef2609b34e5876061f421a1f81bf343beb213c4d60b382ddcb6b83012833f0ba329d6bc38042685c8d89b1c52ea495b9b6327948ea80627398 + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -21083,29 +21185,29 @@ __metadata: linkType: hard "gridplus-sdk@npm:^2.5.1": - version: 2.7.1 - resolution: "gridplus-sdk@npm:2.7.1" + version: 2.5.1 + resolution: "gridplus-sdk@npm:2.5.1" dependencies: - "@ethereumjs/common": "npm:4.3.0" - "@ethereumjs/rlp": "npm:^5.0.2" - "@ethereumjs/tx": "npm:5.3.0" - "@ethersproject/abi": "npm:^5.7.0" - "@metamask/eth-sig-util": "npm:^7.0.3" - "@types/uuid": "npm:^10.0.0" - aes-js: "npm:^3.1.2" + "@ethereumjs/common": "npm:3.1.1" + "@ethereumjs/tx": "npm:4.1.1" + "@ethersproject/abi": "npm:^5.5.0" + "@types/uuid": "npm:^9.0.0" + aes-js: "npm:^3.1.1" bech32: "npm:^2.0.0" - bignumber.js: "npm:^9.1.2" - bitwise: "npm:^2.2.1" - borc: "npm:^3.0.0" - bs58check: "npm:^4.0.0" - buffer: "npm:^6.0.3" - crc-32: "npm:^1.2.2" - elliptic: "npm:6.5.6" + bignumber.js: "npm:^9.0.1" + bitwise: "npm:^2.0.4" + borc: "npm:^2.1.2" + bs58check: "npm:^2.1.2" + buffer: "npm:^5.6.0" + crc-32: "npm:^1.2.0" + elliptic: "npm:6.5.4" + eth-eip712-util-browser: "npm:^0.0.3" hash.js: "npm:^1.1.7" - js-sha3: "npm:^0.9.3" - secp256k1: "npm:5.0.0" - uuid: "npm:^10.0.0" - checksum: 10/0d81908f69d2972350f4fc6fb721b12f62de643b48dce1d25f4ee2e085899e0cc64605d6cc63590ba870cea72d53f970c05d0fd74979d2c07ad102f3e15b7f82 + js-sha3: "npm:^0.8.0" + rlp: "npm:^3.0.0" + secp256k1: "npm:4.0.2" + uuid: "npm:^9.0.0" + checksum: 10/57deeae78fc5f904309e689054baabaed8b078b896ecfd5d724889c6ea424a113db64c3fd79d4dca7cc5f558167d7af754506df5c0692ee76087822ae60c3873 languageName: node linkType: hard @@ -23405,10 +23507,10 @@ __metadata: languageName: node linkType: hard -"iso-url@npm:^1.1.5": - version: 1.2.1 - resolution: "iso-url@npm:1.2.1" - checksum: 10/87455fd79166c7b269df7711ea0bee896338330fb46164dd3e6d73ba09c294326ae356b60032dc3217c1455b66f57216a44b95ded8fb2c1c2f9e490396060ef9 +"iso-url@npm:~0.4.7": + version: 0.4.7 + resolution: "iso-url@npm:0.4.7" + checksum: 10/355574598d46947f48a63518517bfacf443aae5914991484cdc51c1ebe3f4487d4936ecd0b73a297784d20bf1a4eda3f47975b0fff8022ae20af76b6655e014a languageName: node linkType: hard @@ -24655,12 +24757,12 @@ __metadata: languageName: node linkType: hard -"json-text-sequence@npm:~0.3.0": - version: 0.3.0 - resolution: "json-text-sequence@npm:0.3.0" +"json-text-sequence@npm:~0.1.0": + version: 0.1.1 + resolution: "json-text-sequence@npm:0.1.1" dependencies: - "@sovpro/delimited-stream": "npm:^1.1.0" - checksum: 10/e5dc050aadd626938514363399cf14c409f878628914922c5d470530c3f3473d6b0e16a10338dd7d863aab0291bb0e5e15d71526d14733c22e30cba771b03297 + delimit-stream: "npm:0.1.0" + checksum: 10/540973055e03e3caf55e5e06adf88a5d1a4fbefdee44e4c67bbeb614f0d1edd6ea9207f8f9027b6aa86eb6ed4fca3f0dd1f40c4be13f7396efbc0d2f5c5f1e73 languageName: node linkType: hard @@ -30245,6 +30347,15 @@ __metadata: languageName: node linkType: hard +"printj@npm:~1.1.0": + version: 1.1.2 + resolution: "printj@npm:1.1.2" + bin: + printj: ./bin/printj.njs + checksum: 10/45376a5ee7ef2e0d7ff0b4fecc893d73995a332e63d7e0622a544fe662c8213d22f0c9750e627c6d732a7d7a543266be960e6cd51cf19485cce87cf80468bb41 + languageName: node + linkType: hard + "prismjs@npm:^1.27.0": version: 1.29.0 resolution: "prismjs@npm:1.29.0" @@ -33156,7 +33267,7 @@ __metadata: languageName: node linkType: hard -"secp256k1@npm:4.0.4, secp256k1@npm:^4.0.4": +"secp256k1@npm:4.0.4": version: 4.0.4 resolution: "secp256k1@npm:4.0.4" dependencies: @@ -33168,18 +33279,6 @@ __metadata: languageName: node linkType: hard -"secp256k1@npm:^5.0.1": - version: 5.0.1 - resolution: "secp256k1@npm:5.0.1" - dependencies: - elliptic: "npm:^6.5.7" - node-addon-api: "npm:^5.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - checksum: 10/63fbd35624be4fd9cf3d39e5f79c5471b4a8aea6944453b2bea7b100bb1c77a25c55e6e08e2210cdabdf478c4c62d34c408b34214f2afd9367e19a52a3a4236c - languageName: node - linkType: hard - "select-hose@npm:^2.0.0": version: 2.0.0 resolution: "select-hose@npm:2.0.0" @@ -36750,15 +36849,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" - bin: - uuid: dist/bin/uuid - checksum: 10/35aa60614811a201ff90f8ca5e9ecb7076a75c3821e17f0f5ff72d44e36c2d35fcbc2ceee9c4ac7317f4cc41895da30e74f3885e30313bee48fda6338f250538 - languageName: node - linkType: hard - "uuid@npm:^3.3.3": version: 3.4.0 resolution: "uuid@npm:3.4.0" From 49a7c825a2c723a1bf9250066d24567cf43fde54 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Thu, 12 Dec 2024 19:27:24 +0530 Subject: [PATCH 082/111] fix: design related fixes in confirmation pages (#29137) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Small design related fixes in re-designed confirmation pages ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3478 ## **Manual testing steps** 1. Go to test dapp 2. Submit transaction pages and check design fixes ## **Screenshots/Recordings** Screenshot 2024-12-12 at 6 52 03 PM ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- ui/components/app/confirm/info/row/text.tsx | 26 +++---- .../info/__snapshots__/info.test.tsx.snap | 72 +++++++++---------- .../__snapshots__/approve.test.tsx.snap | 38 +++++----- .../__snapshots__/spending-cap.test.tsx.snap | 14 ++-- .../base-transaction-info.test.tsx.snap | 24 +++---- .../native-transfer.test.tsx.snap | 24 +++---- .../nft-token-transfer.test.tsx.snap | 24 +++---- .../set-approval-for-all-info.test.tsx.snap | 24 +++---- .../edit-gas-fees-row.test.tsx.snap | 26 +++---- .../edit-gas-fees-row/edit-gas-fees-row.tsx | 8 +-- .../gas-fees-details.test.tsx.snap | 24 +++---- .../gas-fees-section.test.tsx.snap | 24 +++---- .../token-transfer.test.tsx.snap | 24 +++---- 13 files changed, 176 insertions(+), 176 deletions(-) diff --git a/ui/components/app/confirm/info/row/text.tsx b/ui/components/app/confirm/info/row/text.tsx index 1f026f53c7d4..0e26b5a75bdc 100644 --- a/ui/components/app/confirm/info/row/text.tsx +++ b/ui/components/app/confirm/info/row/text.tsx @@ -53,18 +53,6 @@ export const ConfirmInfoRowText: React.FC = ({ gap={2} minWidth={BlockSize.Zero} > - {tooltip ? ( - - - - ) : ( - - )} {isEditable ? ( = ({ onClick={onEditClick} size={ButtonIconSize.Sm} // to reset the button padding - style={{ marginLeft: '-4px' }} + style={{ marginRight: '-4px' }} data-testid={editIconDataTestId} /> ) : null} + {tooltip ? ( + + + + ) : ( + + )} ); }; diff --git a/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap index a3f98126b093..2ff281c5186e 100644 --- a/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap @@ -92,18 +92,6 @@ exports[`Info renders info section for approve request 1`] = `
-

- 0.0001 ETH -

-

- $0.08 -

+

+ 0.0001 ETH +

+

+ $0.08 +

-

- 0.0001 ETH -

-

- $0.04 -

+

+ 0.0001 ETH +

+

+ $0.04 +

-

- 0.0001 ETH -

-

- $0.08 -

+

+ 0.0001 ETH +

+

+ $0.08 +

renders component for approve request 1`] = `
-

- 1000 -

+

+ 1000 +

@@ -475,18 +475,6 @@ exports[` renders component for approve request 1`] = `
-

- 0.0001 ETH -

-

- $0.08 -

+

+ 0.0001 ETH +

+

+ $0.08 +

renders component 1`] = `
-

- 1000 -

+

+ 1000 +

diff --git a/ui/pages/confirmations/components/confirm/info/base-transaction-info/__snapshots__/base-transaction-info.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/base-transaction-info/__snapshots__/base-transaction-info.test.tsx.snap index ee15d22e6363..f82c33d3d0f2 100644 --- a/ui/pages/confirmations/components/confirm/info/base-transaction-info/__snapshots__/base-transaction-info.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/base-transaction-info/__snapshots__/base-transaction-info.test.tsx.snap @@ -276,18 +276,6 @@ exports[` renders component for contract interaction requ
-

- 0.0001 ETH -

-

- $0.04 -

+

+ 0.0001 ETH +

+

+ $0.04 +

-

- 0.0001 ETH -

-

- $0.08 -

+

+ 0.0001 ETH +

+

+ $0.08 +

-

- 0.0001 ETH -

-

- $0.08 -

+

+ 0.0001 ETH +

+

+ $0.08 +

renders component for approve request 1`] = `
-

- 0.0001 ETH -

-

- $0.08 -

+

+ 0.0001 ETH +

+

+ $0.08 +

renders component 1`] = `
+

renders component 1`] = `

- diff --git a/ui/pages/confirmations/components/confirm/info/shared/edit-gas-fees-row/edit-gas-fees-row.tsx b/ui/pages/confirmations/components/confirm/info/shared/edit-gas-fees-row/edit-gas-fees-row.tsx index e351516941b8..2d3697c6f949 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/edit-gas-fees-row/edit-gas-fees-row.tsx +++ b/ui/pages/confirmations/components/confirm/info/shared/edit-gas-fees-row/edit-gas-fees-row.tsx @@ -58,6 +58,10 @@ export const EditGasFeesRow = ({ alignItems={AlignItems.center} textAlign={TextAlign.Center} > + )} - ); diff --git a/ui/pages/confirmations/components/confirm/info/shared/gas-fees-details/__snapshots__/gas-fees-details.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/shared/gas-fees-details/__snapshots__/gas-fees-details.test.tsx.snap index 8cc9a9c3bfb5..081f1038b24b 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/gas-fees-details/__snapshots__/gas-fees-details.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/shared/gas-fees-details/__snapshots__/gas-fees-details.test.tsx.snap @@ -39,18 +39,6 @@ exports[` renders component for gas fees section 1`] = `
-

- 0.0001 ETH -

-

- $0.04 -

+

+ 0.0001 ETH +

+

+ $0.04 +

renders component for gas fees section 1`] = `
-

- 0.0001 ETH -

-

- $0.04 -

+

+ 0.0001 ETH +

+

+ $0.04 +

-

- 0.0001 ETH -

-

- $0.08 -

+

+ 0.0001 ETH +

+

+ $0.08 +

Date: Thu, 12 Dec 2024 14:02:39 +0000 Subject: [PATCH 083/111] Update Attributions --- attribution.txt | 972 +++++++++++++++++++++++++++--------------------- 1 file changed, 556 insertions(+), 416 deletions(-) diff --git a/attribution.txt b/attribution.txt index 826ec1b5c246..aaeef31a2fbe 100644 --- a/attribution.txt +++ b/attribution.txt @@ -1773,34 +1773,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -base-x -5.0.0 -The MIT License (MIT) - -Copyright (c) 2018 base-x contributors -Copyright (c) 2014-2018 The Bitcoin Core developers - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** bchaddrjs @@ -2278,10 +2250,10 @@ SOFTWARE. ****************************** bitwise -2.2.1 +2.1.0 # The MIT License (MIT) -Copyright (c) `2023` Florian Wendelborn +Copyright (c) `2019` Florian Wendelborn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -2443,7 +2415,7 @@ SOFTWARE. ****************************** borc -3.0.0 +2.1.2 The MIT License (MIT) Copyright (c) 2016 Friedel Ziegelmayer @@ -2915,33 +2887,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -bs58 -6.0.0 -MIT License - -Copyright (c) 2018 cryptocoinjs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** bs58check @@ -2996,33 +2941,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -bs58check -4.0.0 -The MIT License (MIT) - -Copyright (c) 2017 Daniel Cousens - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** buffer @@ -3671,6 +3589,34 @@ public licenses. Creative Commons may be contacted at creativecommons.org. +****************************** + +case +1.6.3 +Copyright (c) 2013 Nathan Bubna + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + ****************************** cashaddrjs @@ -3739,90 +3685,337 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** -chalk -2.4.2 -MIT License +@chainsafe/as-sha256 +0.3.1 + Copyright 2019 ChainSafe Systems -Copyright (c) Sindre Sorhus (sindresorhus.com) + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + http://www.apache.org/licenses/LICENSE-2.0 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -chalk -4.1.2 -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +@chainsafe/persistent-merkle-tree +0.4.2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -****************************** + 1. Definitions. -chalk -5.3.0 -MIT License + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Copyright (c) Sindre Sorhus (https://sindresorhus.com) + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -****************************** + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -character-entities -1.2.1 -(The MIT License) + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -Copyright (c) 2015 Titus Wormer + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -****************************** + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -character-entities-legacy -1.1.1 -(The MIT License) + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -Copyright (c) 2015 Titus Wormer + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +****************************** + +@chainsafe/ssz +0.9.4 <> +Copyright 2019- ChainSafe Systems + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +****************************** + +chalk +2.4.2 +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +chalk +4.1.2 +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +chalk +5.3.0 +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +character-entities +1.2.1 +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +character-entities-legacy +1.1.1 +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -4502,211 +4695,23 @@ distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -crc-32 -1.2.2 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. - APPENDIX: How to apply the Apache License to your work. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - Copyright (C) 2014-present SheetJS LLC +****************************** + +crc-32 +1.2.0 +Copyright (C) 2014-present SheetJS Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -4721,6 +4726,7 @@ crc-32 limitations under the License. + ****************************** create-hash @@ -5239,6 +5245,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +delimit-stream +0.1.0 +Copyright (c) 2013, Jason Kuhrt +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ****************************** detect-browser @@ -5600,7 +5634,14 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ****************************** elliptic -6.5.7 +6.5.4 +license: MIT +authors: Fedor Indutny + +****************************** + +elliptic +6.6.1 license: MIT authors: Fedor Indutny @@ -6497,7 +6538,7 @@ eslint-visitor-keys ****************************** eth-chainlist -0.0.519 +0.0.498 The MIT License (MIT) Copyright (c) 2022 Zane J. Chua @@ -6522,6 +6563,13 @@ THE SOFTWARE. ****************************** +eth-eip712-util-browser +0.0.3 +license: ISC +authors: Dan Finlay + +****************************** + eth-ens-namehash 2.0.8 license: ISC @@ -6559,6 +6607,32 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +ethereum-cryptography +1.1.2 +The MIT License (MIT) + +Copyright (c) 2021 Patricio Palladino, Paul Miller, ethereum-cryptography contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + ****************************** ethereum-cryptography @@ -6588,7 +6662,7 @@ THE SOFTWARE. ****************************** @ethereumjs/common -3.2.0 +3.1.1 The MIT License (MIT) Copyright (c) 2015 @@ -6616,7 +6690,7 @@ SOFTWARE. ****************************** @ethereumjs/common -4.3.0 +3.2.0 The MIT License (MIT) Copyright (c) 2015 @@ -7430,7 +7504,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -4.2.0 +4.1.1 Mozilla Public License Version 2.0 ================================== @@ -7809,7 +7883,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -5.3.0 +4.2.0 Mozilla Public License Version 2.0 ================================== @@ -10794,6 +10868,25 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +exit-on-epipe +1.0.1 +Copyright (C) 2015-present SheetJS + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ****************************** extend @@ -12103,7 +12196,7 @@ SOFTWARE. ****************************** gridplus-sdk -2.7.1 +2.5.1 MIT License Copyright (c) 2019 GridPlus, Inc @@ -13970,7 +14063,7 @@ SOFTWARE. ****************************** iso-url -1.2.1 +0.4.7 MIT License Copyright (c) Hugo Dias (hugodias.me) @@ -15120,7 +15213,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** json-text-sequence -0.3.0 +0.1.1 The MIT License (MIT) Copyright (c) 2014 Joe Hildebrand @@ -21313,6 +21406,58 @@ THE SOFTWARE. ****************************** +@noble/hashes +1.1.2 +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + +@noble/hashes +1.1.3 +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + @noble/hashes 1.3.2 The MIT License (MIT) @@ -21391,11 +21536,11 @@ THE SOFTWARE. ****************************** -@noble/hashes -1.5.0 +@noble/secp256k1 +1.6.3 The MIT License (MIT) -Copyright (c) 2022 Paul Miller (https://paulmillr.com) +Copyright (c) 2019 Paul Miller (https://paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal @@ -22055,6 +22200,26 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +printj +1.1.2 +Copyright (C) 2016-present SheetJS + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + ****************************** process @@ -25564,7 +25729,7 @@ THE SOFTWARE. ****************************** @scure/base -1.1.9 +1.1.7 The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -25588,6 +25753,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@scure/bip32 +1.1.0 +The MIT License (MIT) + +Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ****************************** @scure/bip32 @@ -25618,7 +25810,7 @@ THE SOFTWARE. ****************************** @scure/bip39 -1.3.0 +1.1.0 The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -25644,17 +25836,14 @@ THE SOFTWARE. ****************************** -secp256k1 -4.0.4 +@scure/bip39 +1.3.0 The MIT License (MIT) -Copyright (c) 2014-2016 secp256k1-node contributors - -Parts of this software are based on bn.js, elliptic, hash.js -Copyright (c) 2014-2016 Fedor Indutny +Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal +of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is @@ -25663,7 +25852,7 @@ furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -25675,7 +25864,7 @@ THE SOFTWARE. ****************************** secp256k1 -5.0.1 +4.0.4 The MIT License (MIT) Copyright (c) 2014-2016 secp256k1-node contributors @@ -26707,13 +26896,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@sovpro/delimited-stream -1.1.0 -license: MIT -authors: sovpro - ****************************** space-separated-tokens @@ -29211,33 +29393,6 @@ authors: Mohamed Hegazy SOFTWARE -****************************** - -@types/uuid -10.0.0 - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - ****************************** @types/uuid @@ -30029,21 +30184,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -uuid -10.0.0 -The MIT License (MIT) - -Copyright (c) 2010-2020 Robert Kieffer and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** uuid From c065d93f24625c9b9a50520d12d5fdd7912cc1c2 Mon Sep 17 00:00:00 2001 From: chloeYue <105063779+chloeYue@users.noreply.github.com> Date: Thu, 12 Dec 2024 15:39:51 +0100 Subject: [PATCH 084/111] test: [POM] Migrate hardware wallet e2e tests to follow Page Object Model (#28768) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** - Create base pages for hardware wallet related pages - Migrate hardware wallet e2e tests to Page Object Model - Remove dead code (We should not keep unused functions in the codebase because they can lead to several issues, such as increased maintenance overhead, added complexity, potential bugs, and misleading information.) [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27155?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/metamask-extension/issues/28808 ## **Manual testing steps** Check code readability, make sure tests pass. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Harika <153644847+hjetpoluru@users.noreply.github.com> Co-authored-by: Derek Brans --- .../page-objects/pages/account-list-page.ts | 31 +++- .../connect-hardware-wallet-page.ts | 54 ++++++ .../select-trezor-account-page.ts | 94 +++++++++++ .../e2e/page-objects/pages/home/asset-list.ts | 44 ----- .../pages/snap-simple-keyring-page.ts | 5 +- test/e2e/page-objects/pages/test-dapp.ts | 47 ++++-- .../hardware-wallets/lattice-connect.spec.ts | 38 ++--- .../hardware-wallets/trezor-account.spec.js | 156 ------------------ .../hardware-wallets/trezor-account.spec.ts | 117 +++++++++++++ .../hardware-wallets/trezor-send.spec.ts | 27 ++- .../hardware-wallets/trezor-sign.spec.ts | 40 ++--- 11 files changed, 372 insertions(+), 281 deletions(-) create mode 100644 test/e2e/page-objects/pages/hardware-wallet/connect-hardware-wallet-page.ts create mode 100644 test/e2e/page-objects/pages/hardware-wallet/select-trezor-account-page.ts delete mode 100644 test/e2e/tests/hardware-wallets/trezor-account.spec.js create mode 100644 test/e2e/tests/hardware-wallets/trezor-account.spec.ts diff --git a/test/e2e/page-objects/pages/account-list-page.ts b/test/e2e/page-objects/pages/account-list-page.ts index 955dd5111fe1..bbf25013f607 100644 --- a/test/e2e/page-objects/pages/account-list-page.ts +++ b/test/e2e/page-objects/pages/account-list-page.ts @@ -1,6 +1,6 @@ import { strict as assert } from 'assert'; import { Driver } from '../../webdriver/driver'; -import { largeDelayMs } from '../../helpers'; +import { largeDelayMs, regularDelayMs } from '../../helpers'; import messages from '../../../../app/_locales/en/messages.json'; class AccountListPage { @@ -8,6 +8,9 @@ class AccountListPage { private readonly accountAddressText = '.qr-code__address-segments'; + private readonly accountListAddressItem = + '[data-testid="account-list-address"]'; + private readonly accountListBalance = '[data-testid="second-currency-display"]'; @@ -40,6 +43,11 @@ class AccountListPage { private readonly addEthereumAccountButton = '[data-testid="multichain-account-menu-popover-add-account"]'; + private readonly addHardwareWalletButton = { + text: 'Add hardware wallet', + tag: 'button', + }; + private readonly addImportedAccountButton = '[data-testid="multichain-account-menu-popover-add-imported-account"]'; @@ -378,6 +386,15 @@ class AccountListPage { await this.driver.waitForSelector(this.addEthereumAccountButton); } + async openConnectHardwareWalletModal(): Promise { + console.log(`Open connect hardware wallet modal`); + await this.driver.clickElement(this.createAccountButton); + await this.driver.clickElement(this.addHardwareWalletButton); + // This delay is needed to mitigate an existing bug in FF + // See https://github.com/metamask/metamask-extension/issues/25851 + await this.driver.delay(regularDelayMs); + } + async openHiddenAccountOptions(): Promise { console.log(`Open hidden accounts options menu`); await this.driver.clickElement(this.hiddenAccountOptionsMenuButton); @@ -436,6 +453,18 @@ class AccountListPage { await this.driver.clickElement(this.pinUnpinAccountButton); } + async check_accountAddressDisplayedInAccountList( + expectedAddress: string, + ): Promise { + console.log( + `Check that account address ${expectedAddress} is displayed in account list`, + ); + await this.driver.waitForSelector({ + css: this.accountListAddressItem, + text: expectedAddress, + }); + } + /** * Checks that the account balance is displayed in the account list. * diff --git a/test/e2e/page-objects/pages/hardware-wallet/connect-hardware-wallet-page.ts b/test/e2e/page-objects/pages/hardware-wallet/connect-hardware-wallet-page.ts new file mode 100644 index 000000000000..e3b4de3fb522 --- /dev/null +++ b/test/e2e/page-objects/pages/hardware-wallet/connect-hardware-wallet-page.ts @@ -0,0 +1,54 @@ +import { Driver } from '../../../webdriver/driver'; + +/** + * Represents the page for connecting hardware wallets. + * This page allows users to initiate connections with various hardware wallet types. + */ +class ConnectHardwareWalletPage { + private driver: Driver; + + private readonly connectHardwareWalletPageTitle = { + text: 'Connect a hardware wallet', + tag: 'h3', + }; + + private readonly connectLatticeButton = '[data-testid="connect-lattice-btn"]'; + + private readonly connectTrezorButton = '[data-testid="connect-trezor-btn"]'; + + private readonly continueButton = { text: 'Continue', tag: 'button' }; + + constructor(driver: Driver) { + this.driver = driver; + } + + async check_pageIsLoaded(): Promise { + try { + await this.driver.waitForMultipleSelectors([ + this.connectHardwareWalletPageTitle, + this.connectLatticeButton, + ]); + } catch (e) { + console.log( + 'Timeout while waiting for connect hardware wallet page to be loaded', + e, + ); + throw e; + } + console.log('Connect hardware wallet page is loaded'); + } + + async openConnectLatticePage(): Promise { + console.log(`Open connect lattice page`); + await this.driver.clickElement(this.connectLatticeButton); + await this.driver.clickElement(this.continueButton); + } + + async openConnectTrezorPage(): Promise { + console.log(`Open connect trezor page`); + await this.driver.clickElement(this.connectTrezorButton); + await this.driver.clickElement(this.continueButton); + } +} + +export default ConnectHardwareWalletPage; diff --git a/test/e2e/page-objects/pages/hardware-wallet/select-trezor-account-page.ts b/test/e2e/page-objects/pages/hardware-wallet/select-trezor-account-page.ts new file mode 100644 index 000000000000..65a00808c0bb --- /dev/null +++ b/test/e2e/page-objects/pages/hardware-wallet/select-trezor-account-page.ts @@ -0,0 +1,94 @@ +import { Driver } from '../../../webdriver/driver'; + +/** + * Represents the select trezor hardware wallet account page. + * This page allows users to select Trezor accounts to connect. + */ +class SelectTrezorAccountPage { + private driver: Driver; + + private readonly cancelButton = { text: 'Cancel', tag: 'button' }; + + private readonly selectTrezorAccountPageTitle = { + text: 'Select an account', + tag: 'h3', + }; + + private readonly trezorAccountCheckbox = '.hw-account-list__item__checkbox'; + + private readonly unlockButton = { text: 'Unlock', tag: 'button' }; + + constructor(driver: Driver) { + this.driver = driver; + } + + async check_pageIsLoaded(): Promise { + try { + await this.driver.waitForMultipleSelectors([ + this.selectTrezorAccountPageTitle, + this.cancelButton, + ]); + } catch (e) { + console.log( + 'Timeout while waiting for select trezor account page to be loaded', + e, + ); + throw e; + } + console.log('Select trezor account page is loaded'); + } + + async clickUnlockButton(): Promise { + console.log(`Click unlock button on select trezor account page`); + await this.driver.clickElement(this.unlockButton); + } + + async selectTrezorAccount(accountIndex: number): Promise { + console.log(`Select trezor account ${accountIndex}`); + const accountCheckboxes = await this.driver.findElements( + this.trezorAccountCheckbox, + ); + await accountCheckboxes[accountIndex - 1].click(); + } + + async unlockAccount(accountIndex: number): Promise { + console.log(`Unlock trezor account ${accountIndex}`); + await this.selectTrezorAccount(accountIndex); + await this.clickUnlockButton(); + } + + /** + * Check that the specified address is displayed in the list of accounts. + * + * @param address - The address to check for. + */ + async check_addressIsDisplayed(address: string): Promise { + console.log( + `Check that account address ${address} is displayed on select trezor account page`, + ); + await this.driver.waitForSelector({ text: address }); + } + + /** + * This function checks if the specified number of trezor account items is displayed in the trezor account list. + * + * @param expectedNumber - The number of trezor account items expected to be displayed. Defaults to 5. + * @returns A promise that resolves if the expected number of trezor account items is displayed. + */ + async check_trezorAccountNumber(expectedNumber: number = 5): Promise { + console.log( + `Waiting for ${expectedNumber} trezor account items to be displayed`, + ); + await this.driver.wait(async () => { + const trezorAccountItems = await this.driver.findElements( + this.trezorAccountCheckbox, + ); + return trezorAccountItems.length === expectedNumber; + }, 10000); + console.log( + `Expected number of trezor account items ${expectedNumber} is displayed.`, + ); + } +} + +export default SelectTrezorAccountPage; diff --git a/test/e2e/page-objects/pages/home/asset-list.ts b/test/e2e/page-objects/pages/home/asset-list.ts index abc5870ec04a..db9367991bf7 100644 --- a/test/e2e/page-objects/pages/home/asset-list.ts +++ b/test/e2e/page-objects/pages/home/asset-list.ts @@ -81,15 +81,6 @@ class AssetListPage { throw new Error(`${assetName} button not found`); } - async getAllNetworksOptionTotal(): Promise { - console.log(`Retrieving the "All networks" option fiat value`); - const allNetworksValueElement = await this.driver.findElement( - this.allNetworksTotal, - ); - const value = await allNetworksValueElement.getText(); - return value; - } - async getCurrentNetworksOptionTotal(): Promise { console.log(`Retrieving the "Current network" option fiat value`); const allNetworksValueElement = await this.driver.findElement( @@ -156,30 +147,6 @@ class AssetListPage { ); } - async selectNetworkFilterAllNetworks(): Promise { - console.log(`Selecting "All networks" from the network filter`); - await this.driver.clickElement(this.allNetworksOption); - await this.driver.waitUntil( - async () => { - const label = await this.getNetworksFilterLabel(); - return label === 'All networks'; - }, - { timeout: 5000, interval: 100 }, - ); - } - - async selectNetworkFilterCurrentNetwork(): Promise { - console.log(`Selecting "Current network" from the network filter`); - await this.driver.clickElement(this.currentNetworkOption); - await this.driver.waitUntil( - async () => { - const label = await this.getNetworksFilterLabel(); - return label !== 'All networks'; - }, - { timeout: 5000, interval: 100 }, - ); - } - async waitUntilFilterLabelIs(label: string): Promise { console.log(`Waiting until the filter label is ${label}`); await this.driver.waitUntil( @@ -191,17 +158,6 @@ class AssetListPage { ); } - async check_ifAssetIsVisible(assetName: string): Promise { - const assets = await this.driver.findElements(this.tokenListItem); - for (const asset of assets) { - const text = await asset.getText(); - if (text.includes(assetName)) { - return true; - } - } - return false; - } - async check_networkFilterText(expectedText: string): Promise { console.log( `Verify the displayed account label in header is: ${expectedText}`, diff --git a/test/e2e/page-objects/pages/snap-simple-keyring-page.ts b/test/e2e/page-objects/pages/snap-simple-keyring-page.ts index c75adb06da3a..21722cf7b36a 100644 --- a/test/e2e/page-objects/pages/snap-simple-keyring-page.ts +++ b/test/e2e/page-objects/pages/snap-simple-keyring-page.ts @@ -306,7 +306,10 @@ class SnapSimpleKeyringPage { await this.driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog); await this.driver.clickElement(this.confirmConnectionButton); - await this.driver.waitForSelector(this.addtoMetamaskMessage); + // set a bigger timeout to wait for element as a temporary fix to reduce flakiness + await this.driver.waitForSelector(this.addtoMetamaskMessage, { + timeout: 15000, + }); await this.driver.clickElementSafe(this.snapInstallScrollButton, 200); await this.driver.waitForSelector(this.confirmAddtoMetamask); await this.driver.clickElement(this.confirmAddtoMetamask); diff --git a/test/e2e/page-objects/pages/test-dapp.ts b/test/e2e/page-objects/pages/test-dapp.ts index c31ee497152e..5155707663b6 100644 --- a/test/e2e/page-objects/pages/test-dapp.ts +++ b/test/e2e/page-objects/pages/test-dapp.ts @@ -16,9 +16,15 @@ class TestDapp { private readonly confirmDialogScrollButton = '[data-testid="signature-request-scroll-button"]'; + private readonly confirmScrollToBottomButtonRedesign = + '.confirm-scroll-to-bottom__button'; + private readonly confirmSignatureButton = '[data-testid="page-container-footer-next"]'; + private readonly confirmSignatureButtonRedesign = + '[data-testid="confirm-footer-button"]'; + private readonly connectAccountButton = '#connectButton'; private readonly connectMetaMaskMessage = { @@ -116,6 +122,11 @@ class TestDapp { tag: 'div', }; + private readonly signTypedDataV3V4SignatureRequestMessageRedesign = { + text: 'Hello, Bob!', + tag: 'p', + }; + private readonly signTypedDataV3VerifyButton = '#signTypedDataV3Verify'; private readonly signTypedDataV3VerifyResult = '#signTypedDataV3VerifyResult'; @@ -159,11 +170,6 @@ class TestDapp { tag: 'h2', }; - private readonly updateNetworkButton = { - text: 'Update', - tag: 'button', - }; - private readonly userRejectedRequestMessage = { tag: 'span', text: 'Error: User rejected the request.', @@ -657,18 +663,33 @@ class TestDapp { /** * Sign a message with the signTypedDataV4 method. + * + * @param confirmationRedesign - Indicates whether the redesigned signature confirmation flow is used. Defaults to false. */ - async signTypedDataV4() { + async signTypedDataV4(confirmationRedesign: boolean = false) { console.log('Sign message with signTypedDataV4'); await this.clickSignTypedDatav4(); await this.driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog); - await this.driver.waitForSelector( - this.signTypedDataV3V4SignatureRequestMessage, - ); - await this.driver.clickElementSafe(this.confirmDialogScrollButton, 200); - await this.driver.clickElementAndWaitForWindowToClose( - this.confirmSignatureButton, - ); + if (confirmationRedesign) { + await this.driver.waitForSelector( + this.signTypedDataV3V4SignatureRequestMessageRedesign, + ); + await this.driver.clickElementSafe( + this.confirmScrollToBottomButtonRedesign, + 200, + ); + await this.driver.clickElementAndWaitForWindowToClose( + this.confirmSignatureButtonRedesign, + ); + } else { + await this.driver.waitForSelector( + this.signTypedDataV3V4SignatureRequestMessage, + ); + await this.driver.clickElementSafe(this.confirmDialogScrollButton, 200); + await this.driver.clickElementAndWaitForWindowToClose( + this.confirmSignatureButton, + ); + } } async pasteIntoEip747ContractAddressInput() { diff --git a/test/e2e/tests/hardware-wallets/lattice-connect.spec.ts b/test/e2e/tests/hardware-wallets/lattice-connect.spec.ts index b8497a9df692..e20e0bd6fb45 100644 --- a/test/e2e/tests/hardware-wallets/lattice-connect.spec.ts +++ b/test/e2e/tests/hardware-wallets/lattice-connect.spec.ts @@ -2,39 +2,33 @@ import { strict as assert } from 'assert'; import { Suite } from 'mocha'; import { Driver } from '../../webdriver/driver'; import FixtureBuilder from '../../fixture-builder'; -import { withFixtures, unlockWallet } from '../../helpers'; +import { withFixtures } from '../../helpers'; import { isManifestV3 } from '../../../../shared/modules/mv3.utils'; +import AccountListPage from '../../page-objects/pages/account-list-page'; +import ConnectHardwareWalletPage from '../../page-objects/pages/hardware-wallet/connect-hardware-wallet-page'; +import HeaderNavbar from '../../page-objects/pages/header-navbar'; +import { loginWithBalanceValidation } from '../../page-objects/flows/login.flow'; describe('Lattice hardware wallet @no-mmi', function (this: Suite) { - it('connects to lattice hardware wallet', async function () { + it('lattice page rendering validation', async function () { await withFixtures( { fixtures: new FixtureBuilder().build(), title: this.test?.fullTitle(), }, async ({ driver }: { driver: Driver }) => { - await unlockWallet(driver); + await loginWithBalanceValidation(driver); + const headerNavbar = new HeaderNavbar(driver); + await headerNavbar.openAccountMenu(); - // choose Connect hardware wallet from the account menu - await driver.clickElement('[data-testid="account-menu-icon"]'); + // Choose connect hardware wallet from the account menu + const accountListPage = new AccountListPage(driver); + await accountListPage.check_pageIsLoaded(); + await accountListPage.openConnectHardwareWalletModal(); - // Wait until account list is loaded to mitigate race condition - await driver.waitForSelector({ - text: 'Account 1', - tag: 'span', - }); - await driver.clickElement( - '[data-testid="multichain-account-menu-popover-action-button"]', - ); - await driver.clickElement({ - text: 'Add hardware wallet', - tag: 'button', - }); - await driver.findClickableElement( - '[data-testid="hardware-connect-close-btn"]', - ); - await driver.clickElement('[data-testid="connect-lattice-btn"]'); - await driver.clickElement({ text: 'Continue', tag: 'button' }); + const connectHardwareWalletPage = new ConnectHardwareWalletPage(driver); + await connectHardwareWalletPage.check_pageIsLoaded(); + await connectHardwareWalletPage.openConnectLatticePage(); const allWindows = await driver.waitUntilXWindowHandles(2); assert.equal(allWindows.length, isManifestV3 ? 3 : 2); diff --git a/test/e2e/tests/hardware-wallets/trezor-account.spec.js b/test/e2e/tests/hardware-wallets/trezor-account.spec.js deleted file mode 100644 index 9abf6e67974d..000000000000 --- a/test/e2e/tests/hardware-wallets/trezor-account.spec.js +++ /dev/null @@ -1,156 +0,0 @@ -const { strict: assert } = require('assert'); -const FixtureBuilder = require('../../fixture-builder'); -const { - defaultGanacheOptions, - unlockWallet, - withFixtures, - regularDelayMs, -} = require('../../helpers'); -const { shortenAddress } = require('../../../../ui/helpers/utils/util'); -const { KNOWN_PUBLIC_KEY_ADDRESSES } = require('../../../stub/keyring-bridge'); - -/** - * Connect Trezor hardware wallet without selecting an account - * - * @param {*} driver - Selenium driver - */ -async function connectTrezor(driver) { - // Open add hardware wallet modal - await driver.clickElement('[data-testid="account-menu-icon"]'); - await driver.clickElement( - '[data-testid="multichain-account-menu-popover-action-button"]', - ); - await driver.clickElement({ text: 'Add hardware wallet' }); - // This delay is needed to mitigate an existing bug in FF - // See https://github.com/metamask/metamask-extension/issues/25851 - await driver.delay(regularDelayMs); - // Select Trezor - await driver.clickElement('[data-testid="connect-trezor-btn"]'); - await driver.clickElement({ text: 'Continue' }); -} - -describe('Trezor Hardware', function () { - it('derives the correct accounts', async function () { - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - }, - async ({ driver }) => { - await unlockWallet(driver); - await connectTrezor(driver); - - // Check that the first page of accounts is correct - for (const { address, index } of KNOWN_PUBLIC_KEY_ADDRESSES.slice( - 0, - 4, - )) { - const shortenedAddress = `${address.slice(0, 4)}...${address.slice( - -4, - )}`; - assert( - await driver.isElementPresent({ - text: shortenedAddress, - }), - `Known account ${index} not found`, - ); - } - }, - ); - }); - - it('unlocks the first account', async function () { - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - }, - async ({ driver }) => { - await unlockWallet(driver); - await connectTrezor(driver); - - // Select first account of first page and unlock - await driver.clickElement('.hw-account-list__item__checkbox'); - await driver.clickElement({ text: 'Unlock' }); - - // Check that the correct account has been added - await driver.clickElement('[data-testid="account-menu-icon"]'); - assert( - await driver.isElementPresent({ - text: 'Trezor 1', - }), - 'Trezor account not found', - ); - assert( - await driver.isElementPresent({ - text: shortenAddress(KNOWN_PUBLIC_KEY_ADDRESSES[0].address), - }), - 'Unlocked account is wrong', - ); - }, - ); - }); - - it('unlocks multiple accounts at once and removes one', async function () { - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - }, - async ({ driver }) => { - await unlockWallet(driver); - await connectTrezor(driver); - - // Unlock 5 Trezor accounts - const accountCheckboxes = await driver.findElements( - '.hw-account-list__item__checkbox', - ); - await accountCheckboxes[0].click(); - await accountCheckboxes[1].click(); - await accountCheckboxes[2].click(); - await accountCheckboxes[3].click(); - await accountCheckboxes[4].click(); - - await driver.clickElement({ text: 'Unlock' }); - - // Check that all 5 Trezor accounts are present - await driver.clickElement('[data-testid="account-menu-icon"]'); - for (let i = 0; i < 5; i++) { - assert( - await driver.isElementPresent({ - text: `Trezor ${i + 1}`, - }), - `Trezor account ${i + 1} not found`, - ); - assert( - await driver.isElementPresent({ - text: shortenAddress(KNOWN_PUBLIC_KEY_ADDRESSES[i].address), - }), - `Unlocked account ${i + 1} is wrong`, - ); - } - - // Remove Trezor account - const accountDetailsButton = await driver.findElements( - '[data-testid="account-list-item-menu-button"', - ); - await accountDetailsButton[1].click(); - await driver.clickElement('[data-testid="account-list-menu-remove"'); - await driver.clickElement({ - text: 'Remove', - tag: 'button', - }); - - // Assert Trezor account is removed - await driver.clickElement('[data-testid="account-menu-icon"]'); - - await driver.assertElementNotPresent({ - text: 'Trezor 1', - }); - }, - ); - }); -}); diff --git a/test/e2e/tests/hardware-wallets/trezor-account.spec.ts b/test/e2e/tests/hardware-wallets/trezor-account.spec.ts new file mode 100644 index 000000000000..44a382023881 --- /dev/null +++ b/test/e2e/tests/hardware-wallets/trezor-account.spec.ts @@ -0,0 +1,117 @@ +import FixtureBuilder from '../../fixture-builder'; +import { withFixtures } from '../../helpers'; +import { shortenAddress } from '../../../../ui/helpers/utils/util'; +import { KNOWN_PUBLIC_KEY_ADDRESSES } from '../../../stub/keyring-bridge'; +import AccountListPage from '../../page-objects/pages/account-list-page'; +import ConnectHardwareWalletPage from '../../page-objects/pages/hardware-wallet/connect-hardware-wallet-page'; +import HeaderNavbar from '../../page-objects/pages/header-navbar'; +import HomePage from '../../page-objects/pages/home/homepage'; +import SelectTrezorAccountPage from '../../page-objects/pages/hardware-wallet/select-trezor-account-page'; +import { loginWithBalanceValidation } from '../../page-objects/flows/login.flow'; + +describe('Trezor Hardware', function () { + it('derives the correct accounts and unlocks the first account', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder().build(), + title: this.test?.fullTitle(), + }, + async ({ driver }) => { + await loginWithBalanceValidation(driver); + + const headerNavbar = new HeaderNavbar(driver); + await headerNavbar.openAccountMenu(); + + // Choose connect hardware wallet from the account menu + const accountListPage = new AccountListPage(driver); + await accountListPage.check_pageIsLoaded(); + await accountListPage.openConnectHardwareWalletModal(); + + const connectHardwareWalletPage = new ConnectHardwareWalletPage(driver); + await connectHardwareWalletPage.check_pageIsLoaded(); + await connectHardwareWalletPage.openConnectTrezorPage(); + + const selectTrezorAccountPage = new SelectTrezorAccountPage(driver); + await selectTrezorAccountPage.check_pageIsLoaded(); + + // Check that the first page of accounts is correct + await selectTrezorAccountPage.check_trezorAccountNumber(); + for (const { address } of KNOWN_PUBLIC_KEY_ADDRESSES.slice(0, 4)) { + const shortenedAddress = `${address.slice(0, 4)}...${address.slice( + -4, + )}`; + await selectTrezorAccountPage.check_addressIsDisplayed( + shortenedAddress, + ); + } + + // Unlock first account of first page and check that the correct account has been added + await selectTrezorAccountPage.unlockAccount(1); + await headerNavbar.check_pageIsLoaded(); + await new HomePage(driver).check_expectedBalanceIsDisplayed(); + await headerNavbar.openAccountMenu(); + await accountListPage.check_pageIsLoaded(); + await accountListPage.check_accountDisplayedInAccountList('Trezor 1'); + await accountListPage.check_accountAddressDisplayedInAccountList( + shortenAddress(KNOWN_PUBLIC_KEY_ADDRESSES[0].address), + ); + }, + ); + }); + + it('unlocks multiple accounts at once and removes one', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder().build(), + title: this.test?.fullTitle(), + }, + async ({ driver }) => { + await loginWithBalanceValidation(driver); + const headerNavbar = new HeaderNavbar(driver); + await headerNavbar.openAccountMenu(); + + // Choose connect hardware wallet from the account menu + const accountListPage = new AccountListPage(driver); + await accountListPage.check_pageIsLoaded(); + await accountListPage.openConnectHardwareWalletModal(); + + const connectHardwareWalletPage = new ConnectHardwareWalletPage(driver); + await connectHardwareWalletPage.check_pageIsLoaded(); + await connectHardwareWalletPage.openConnectTrezorPage(); + + // Unlock 5 Trezor accounts + const selectTrezorAccountPage = new SelectTrezorAccountPage(driver); + await selectTrezorAccountPage.check_pageIsLoaded(); + await selectTrezorAccountPage.check_trezorAccountNumber(); + for (let i = 1; i <= 5; i++) { + await selectTrezorAccountPage.selectTrezorAccount(i); + } + await selectTrezorAccountPage.clickUnlockButton(); + + // Check that all 5 Trezor accounts are displayed in account list + const homePage = new HomePage(driver); + await homePage.check_pageIsLoaded(); + await homePage.check_expectedBalanceIsDisplayed(); + await headerNavbar.openAccountMenu(); + await accountListPage.check_pageIsLoaded(); + for (let i = 0; i < 5; i++) { + await accountListPage.check_accountDisplayedInAccountList( + `Trezor ${i + 1}`, + ); + await accountListPage.check_accountAddressDisplayedInAccountList( + shortenAddress(KNOWN_PUBLIC_KEY_ADDRESSES[i].address), + ); + } + + // Remove Trezor 1 account and check Trezor 1 account is removed + await accountListPage.removeAccount('Trezor 1'); + await homePage.check_pageIsLoaded(); + await homePage.check_expectedBalanceIsDisplayed(); + await headerNavbar.openAccountMenu(); + await accountListPage.check_accountIsNotDisplayedInAccountList( + 'Trezor 1', + ); + }, + ); + }); +}); diff --git a/test/e2e/tests/hardware-wallets/trezor-send.spec.ts b/test/e2e/tests/hardware-wallets/trezor-send.spec.ts index b10269c69ef0..5bb6fcb45220 100644 --- a/test/e2e/tests/hardware-wallets/trezor-send.spec.ts +++ b/test/e2e/tests/hardware-wallets/trezor-send.spec.ts @@ -2,13 +2,11 @@ import { Suite } from 'mocha'; import { Driver } from '../../webdriver/driver'; import { Ganache } from '../../seeder/ganache'; import FixtureBuilder from '../../fixture-builder'; -import { - defaultGanacheOptions, - logInWithBalanceValidation, - sendTransaction, - withFixtures, -} from '../../helpers'; +import { logInWithBalanceValidation, withFixtures } from '../../helpers'; import { KNOWN_PUBLIC_KEY_ADDRESSES } from '../../../stub/keyring-bridge'; +import ActivityListPage from '../../page-objects/pages/home/activity-list'; +import HomePage from '../../page-objects/pages/home/homepage'; +import { sendRedesignedTransactionToAddress } from '../../page-objects/flows/send-transaction.flow'; const RECIPIENT = '0x0Cc5261AB8cE458dc977078A3623E2BaDD27afD3'; @@ -17,7 +15,6 @@ describe('Trezor Hardware', function (this: Suite) { await withFixtures( { fixtures: new FixtureBuilder().withTrezorAccount().build(), - ganacheOptions: defaultGanacheOptions, title: this.test?.fullTitle(), }, async ({ @@ -33,14 +30,16 @@ describe('Trezor Hardware', function (this: Suite) { '0x100000000000000000000', ); await logInWithBalanceValidation(driver); - - await sendTransaction(driver, RECIPIENT, '1'); - - // Wait for transaction to be confirmed - await driver.waitForSelector({ - css: '.transaction-status-label', - text: 'Confirmed', + await sendRedesignedTransactionToAddress({ + driver, + recipientAddress: RECIPIENT, + amount: '1', }); + const homePage = new HomePage(driver); + await homePage.check_pageIsLoaded(); + const activityList = new ActivityListPage(driver); + await activityList.check_confirmedTxNumberDisplayedInActivity(); + await activityList.check_txAmountInActivity(); }, ); }); diff --git a/test/e2e/tests/hardware-wallets/trezor-sign.spec.ts b/test/e2e/tests/hardware-wallets/trezor-sign.spec.ts index f4cbf87b9dd4..418758a4d426 100644 --- a/test/e2e/tests/hardware-wallets/trezor-sign.spec.ts +++ b/test/e2e/tests/hardware-wallets/trezor-sign.spec.ts @@ -1,15 +1,10 @@ -import { strict as assert } from 'assert'; import { Suite } from 'mocha'; import { Driver } from '../../webdriver/driver'; import FixtureBuilder from '../../fixture-builder'; -import { - defaultGanacheOptions, - openDapp, - unlockWallet, - WINDOW_TITLES, - withFixtures, -} from '../../helpers'; +import { defaultGanacheOptions, withFixtures } from '../../helpers'; import { KNOWN_PUBLIC_KEY_ADDRESSES } from '../../../stub/keyring-bridge'; +import TestDappPage from '../../page-objects/pages/test-dapp'; +import { loginWithBalanceValidation } from '../../page-objects/flows/login.flow'; describe('Trezor Hardware Signatures', function (this: Suite) { it('sign typed v4', async function () { @@ -26,28 +21,13 @@ describe('Trezor Hardware Signatures', function (this: Suite) { dapp: true, }, async ({ driver }: { driver: Driver }) => { - await unlockWallet(driver); - - await openDapp(driver); - await driver.clickElement('#signTypedDataV4'); - await driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog); - await driver.delay(1000); - - await driver.clickElementSafe('.confirm-scroll-to-bottom__button'); - await driver.clickElement({ text: 'Confirm', tag: 'button' }); - await driver.delay(1000); - - await driver.waitUntilXWindowHandles(2); - await driver.switchToWindowWithTitle(WINDOW_TITLES.TestDApp); - await driver.clickElement('#signTypedDataV4Verify'); - - const verifyRecoverAddress = await driver.findElement( - '#signTypedDataV4VerifyResult', - ); - - assert.equal( - await verifyRecoverAddress.getText(), - KNOWN_PUBLIC_KEY_ADDRESSES[0].address.toLocaleLowerCase(), + await loginWithBalanceValidation(driver); + const testDappPage = new TestDappPage(driver); + await testDappPage.openTestDappPage(); + await testDappPage.check_pageIsLoaded(); + await testDappPage.signTypedDataV4(true); + await testDappPage.check_successSignTypedDataV4( + KNOWN_PUBLIC_KEY_ADDRESSES[0].address, ); }, ); From 2e941a841a82f50bbc757e349e8e95f2f8ae86e5 Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Thu, 12 Dec 2024 14:57:57 +0000 Subject: [PATCH 085/111] feat: Add new metric sending_value to Transaction * events (#29134) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Adds a `useSendingValueMetric` hook that uses `updateTransactionEventFragment` to add the `sending_value` property on erc20 and native token transfers. The value is sent as an unformatted decimal javascript number. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29134?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3784 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** Native token send: Screenshot 2024-12-12 at 11 40 43 ERC20 token send: Screenshot 2024-12-12 at 11 41 47 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../info/hooks/use-token-values.test.ts | 2 + .../confirm/info/hooks/use-token-values.ts | 1 + .../info/hooks/useSendingValueMetric.test.ts | 104 ++++++++++++++++++ .../info/hooks/useSendingValueMetric.ts | 26 +++++ .../native-send-heading.tsx | 3 + .../info/shared/send-heading/send-heading.tsx | 4 + 6 files changed, 140 insertions(+) create mode 100644 ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.test.ts create mode 100644 ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.ts diff --git a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts index 4489690654d5..f7f9dd25d4b8 100644 --- a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts +++ b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts @@ -76,6 +76,7 @@ describe('useTokenValues', () => { decodedTransferValue: '7', displayTransferValue: '7', fiatDisplayValue: '$6.37', + fiatValue: 6.37, pending: false, }); }); @@ -122,6 +123,7 @@ describe('useTokenValues', () => { decodedTransferValue: '7', displayTransferValue: '7', fiatDisplayValue: null, + fiatValue: null, pending: false, }); }); diff --git a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts index 53987ffd06e6..b53e2842e5e7 100644 --- a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts +++ b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts @@ -89,6 +89,7 @@ export const useTokenValues = (transactionMeta: TransactionMeta) => { decodedTransferValue, displayTransferValue, fiatDisplayValue, + fiatValue, pending: pending || isDecodedTransferValuePending, }; }; diff --git a/ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.test.ts b/ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.test.ts new file mode 100644 index 000000000000..c143dc2879cd --- /dev/null +++ b/ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.test.ts @@ -0,0 +1,104 @@ +import { TransactionMeta } from '@metamask/transaction-controller'; +import { renderHook } from '@testing-library/react-hooks'; +import { useEffect, useState } from 'react'; +import { genUnapprovedTokenTransferConfirmation } from '../../../../../../../test/data/confirmations/token-transfer'; +import { useTransactionEventFragment } from '../../../../hooks/useTransactionEventFragment'; +import { useSendingValueMetric } from './useSendingValueMetric'; + +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest.fn(), +})); + +jest.mock('react', () => ({ + ...jest.requireActual('react'), + useEffect: jest.fn(), + useState: jest.fn(), +})); + +jest.mock('../../../../hooks/useTransactionEventFragment'); + +describe('useSimulationMetrics', () => { + const useTransactionEventFragmentMock = jest.mocked( + useTransactionEventFragment, + ); + + const useStateMock = jest.mocked(useState); + const useEffectMock = jest.mocked(useEffect); + + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let updateTransactionEventFragmentMock: jest.MockedFunction; + + beforeEach(() => { + jest.resetAllMocks(); + + updateTransactionEventFragmentMock = jest.fn(); + + useTransactionEventFragmentMock.mockReturnValue({ + updateTransactionEventFragment: updateTransactionEventFragmentMock, + }); + + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + useStateMock.mockImplementation(((initialValue: any) => [ + initialValue, + jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ]) as any); + + useEffectMock.mockImplementation((fn) => fn()); + }); + + describe('useSendingValueMetric', () => { + it('Updates the event property', async () => { + const MOCK_FIAT_VALUE = 10; + const transactionMeta = genUnapprovedTokenTransferConfirmation( + {}, + ) as TransactionMeta; + const props = { transactionMeta, fiatValue: MOCK_FIAT_VALUE }; + + renderHook(() => useSendingValueMetric(props)); + + expect(updateTransactionEventFragmentMock).toHaveBeenCalledWith( + expect.objectContaining({ + properties: expect.objectContaining({ + sending_value: MOCK_FIAT_VALUE, + }), + }), + '1d7c08c0-fe54-11ee-9243-91b1e533746a', + ); + + jest.restoreAllMocks(); + }); + + it('Does not updates the event property if fiat value is undefined', async () => { + const MOCK_FIAT_VALUE = undefined; + const transactionMeta = genUnapprovedTokenTransferConfirmation( + {}, + ) as TransactionMeta; + const props = { transactionMeta, fiatValue: MOCK_FIAT_VALUE }; + + renderHook(() => useSendingValueMetric(props)); + + expect(updateTransactionEventFragmentMock).not.toHaveBeenCalled(); + + jest.restoreAllMocks(); + }); + + it('Does not updates the event property if fiat value is empty string', async () => { + const MOCK_FIAT_VALUE = '' as const; + const transactionMeta = genUnapprovedTokenTransferConfirmation( + {}, + ) as TransactionMeta; + const props = { transactionMeta, fiatValue: MOCK_FIAT_VALUE }; + + renderHook(() => useSendingValueMetric(props)); + + expect(updateTransactionEventFragmentMock).not.toHaveBeenCalled(); + + jest.restoreAllMocks(); + }); + }); +}); diff --git a/ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.ts b/ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.ts new file mode 100644 index 000000000000..06d7bff39c03 --- /dev/null +++ b/ui/pages/confirmations/components/confirm/info/hooks/useSendingValueMetric.ts @@ -0,0 +1,26 @@ +import { TransactionMeta } from '@metamask/transaction-controller'; +import { useEffect } from 'react'; +import { useTransactionEventFragment } from '../../../../hooks/useTransactionEventFragment'; + +export type UseSendingValueMetricProps = { + transactionMeta: TransactionMeta; + fiatValue: number | undefined | ''; +}; + +export const useSendingValueMetric = ({ + transactionMeta, + fiatValue, +}: UseSendingValueMetricProps) => { + const { updateTransactionEventFragment } = useTransactionEventFragment(); + + const transactionId = transactionMeta.id; + const properties = { sending_value: fiatValue }; + const sensitiveProperties = {}; + const params = { properties, sensitiveProperties }; + + useEffect(() => { + if (fiatValue !== undefined && fiatValue !== '') { + updateTransactionEventFragment(params, transactionId); + } + }, [updateTransactionEventFragment, transactionId, JSON.stringify(params)]); +}; diff --git a/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx b/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx index f3f1f292fa2e..146eb6f169c7 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx +++ b/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx @@ -32,6 +32,7 @@ import { import { getMultichainNetwork } from '../../../../../../../selectors/multichain'; import { useConfirmContext } from '../../../../../context/confirm'; import { formatAmount } from '../../../../simulation-details/formatAmount'; +import { useSendingValueMetric } from '../../hooks/useSendingValueMetric'; const NativeSendHeading = () => { const { currentConfirmation: transactionMeta } = @@ -114,6 +115,8 @@ const NativeSendHeading = () => { ); + useSendingValueMetric({ transactionMeta, fiatValue }); + return ( { decodedTransferValue, displayTransferValue, fiatDisplayValue, + fiatValue, pending, } = useTokenValues(transactionMeta); @@ -85,6 +87,8 @@ const SendHeading = () => { ); + useSendingValueMetric({ transactionMeta, fiatValue }); + if (pending) { return ; } From b3c4759639468d889f2248504cb58ae4b449f1dc Mon Sep 17 00:00:00 2001 From: Derek Brans Date: Thu, 12 Dec 2024 10:16:09 -0500 Subject: [PATCH 086/111] chore: Add App Opened Metric Event (#28927) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR adds tracking for when the MetaMask app is opened in order to track MAU/MTU. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28927?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3401 ## **Manual testing steps** 1. Ensure MM is not "fullscreen" in any tabs 2. Open chrome dev tools for service worker 3. Clear the network tab 4. Open metamask (via Dapp or by clicking on extension) 5. There should be one or more new network request for POST https://api.segment.io/v1/batch – One of those should should have event: "App Opened" ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Niranjana Binoy <43930900+NiranjanaBinoy@users.noreply.github.com> --- app/scripts/background.js | 44 +++++++++ shared/constants/metametrics.ts | 1 + test/e2e/tests/metrics/app-opened.spec.ts | 104 ++++++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 test/e2e/tests/metrics/app-opened.spec.ts diff --git a/app/scripts/background.js b/app/scripts/background.js index e9aaf2cab20b..320efbd5c302 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -741,6 +741,49 @@ function trackDappView(remotePort) { } } +/** + * Emit App Opened event + */ +function emitAppOpenedMetricEvent() { + const { metaMetricsId, participateInMetaMetrics } = + controller.metaMetricsController.state; + + // Skip if user hasn't opted into metrics + if (metaMetricsId === null && !participateInMetaMetrics) { + return; + } + + controller.metaMetricsController.trackEvent({ + event: MetaMetricsEventName.AppOpened, + category: MetaMetricsEventCategory.App, + }); +} + +/** + * This function checks if the app is being opened + * and emits an event only if no other UI instances are currently open. + * + * @param {string} environment - The environment type where the app is opening + */ +function trackAppOpened(environment) { + // List of valid environment types to track + const environmentTypeList = [ + ENVIRONMENT_TYPE_POPUP, + ENVIRONMENT_TYPE_NOTIFICATION, + ENVIRONMENT_TYPE_FULLSCREEN, + ]; + + // Check if any UI instances are currently open + const isFullscreenOpen = Object.values(openMetamaskTabsIDs).some(Boolean); + const isAlreadyOpen = + isFullscreenOpen || notificationIsOpen || openPopupCount > 0; + + // Only emit event if no UI is open and environment is valid + if (!isAlreadyOpen && environmentTypeList.includes(environment)) { + emitAppOpenedMetricEvent(); + } +} + /** * Initializes the MetaMask Controller with any initial state and default language. * Configures platform-specific error reporting strategy. @@ -883,6 +926,7 @@ export function setupController( // communication with popup controller.isClientOpen = true; controller.setupTrustedCommunication(portStream, remotePort.sender); + trackAppOpened(processName); initializeRemoteFeatureFlags(); diff --git a/shared/constants/metametrics.ts b/shared/constants/metametrics.ts index d46bad603a83..700bead89320 100644 --- a/shared/constants/metametrics.ts +++ b/shared/constants/metametrics.ts @@ -640,6 +640,7 @@ export enum MetaMetricsEventName { ActivityDetailsClosed = 'Activity Details Closed', AnalyticsPreferenceSelected = 'Analytics Preference Selected', AppInstalled = 'App Installed', + AppOpened = 'App Opened', AppUnlocked = 'App Unlocked', AppUnlockedFailed = 'App Unlocked Failed', AppLocked = 'App Locked', diff --git a/test/e2e/tests/metrics/app-opened.spec.ts b/test/e2e/tests/metrics/app-opened.spec.ts new file mode 100644 index 000000000000..80169e36c369 --- /dev/null +++ b/test/e2e/tests/metrics/app-opened.spec.ts @@ -0,0 +1,104 @@ +import { strict as assert } from 'assert'; +import { Mockttp } from 'mockttp'; +import { + withFixtures, + getEventPayloads, + unlockWallet, + connectToDapp, +} from '../../helpers'; +import FixtureBuilder from '../../fixture-builder'; +import { loginWithoutBalanceValidation } from '../../page-objects/flows/login.flow'; + +/** + * Mocks the segment API for the App Opened event that we expect to see when + * these tests are run. + * + * @param mockServer - The mock server instance. + * @returns The mocked endpoints + */ +async function mockSegment(mockServer: Mockttp) { + return [ + await mockServer + .forPost('https://api.segment.io/v1/batch') + .withJsonBodyIncluding({ + batch: [{ type: 'track', event: 'App Opened' }], + }) + .thenCallback(() => { + return { + statusCode: 200, + }; + }), + ]; +} + +describe('App Opened metric @no-mmi', function () { + it('should send AppOpened metric when app is opened and metrics are enabled', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder() + .withMetaMetricsController({ + metaMetricsId: 'fake-metrics-fd20', + participateInMetaMetrics: true, + }) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: mockSegment, + }, + async ({ driver, mockedEndpoint: mockedEndpoints }) => { + await loginWithoutBalanceValidation(driver); + + const events = await getEventPayloads(driver, mockedEndpoints); + assert.equal(events.length, 1); + assert.equal(events[0].properties.category, 'App'); + }, + ); + }); + + it('should not send AppOpened metric when metrics are disabled', async function () { + await withFixtures( + { + fixtures: new FixtureBuilder() + .withMetaMetricsController({ + metaMetricsId: 'fake-metrics-fd20', + participateInMetaMetrics: false, + }) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: mockSegment, + }, + async ({ driver, mockedEndpoint: mockedEndpoints }) => { + await unlockWallet(driver); + + const events = await getEventPayloads(driver, mockedEndpoints); + assert.equal(events.length, 0); + }, + ); + }); + + it('should send AppOpened metric when dapp opens MetaMask', async function () { + await withFixtures( + { + dapp: true, + fixtures: new FixtureBuilder() + .withMetaMetricsController({ + metaMetricsId: 'fake-metrics-fd20', + participateInMetaMetrics: true, + }) + .build(), + title: this.test?.fullTitle(), + testSpecificMock: mockSegment, + }, + async ({ driver, mockedEndpoint: mockedEndpoints }) => { + await unlockWallet(driver); + + // Connect to dapp which will trigger MetaMask to open + await connectToDapp(driver); + + // Wait for events to be tracked + const events = await getEventPayloads(driver, mockedEndpoints); + assert.equal(events.length, 1); + assert.equal(events[0].properties.category, 'App'); + }, + ); + }); +}); From b7aab59d69fe46208be153f2a605f5fdde74349a Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Thu, 12 Dec 2024 15:44:41 +0000 Subject: [PATCH 087/111] feat: Remove scroll to the bottom requirement for all personal sign requests (#29053) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Users can now Confirm personal sign requests without scrolling to the bottom of the confirmation. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29053?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3760 ## **Manual testing steps** 1. Go to OpenSea 2. Login 3. See their personal sign request and how the Confirm button is disabled ## **Screenshots/Recordings** ### **Before** ### **After** Screenshot 2024-12-10 at 14 16 32 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../components/confirm/footer/footer.test.tsx | 25 ++++++++----------- .../components/confirm/footer/footer.tsx | 12 +++++++-- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/footer/footer.test.tsx b/ui/pages/confirmations/components/confirm/footer/footer.test.tsx index 09d1fdf5753b..bd026848bd95 100644 --- a/ui/pages/confirmations/components/confirm/footer/footer.test.tsx +++ b/ui/pages/confirmations/components/confirm/footer/footer.test.tsx @@ -1,15 +1,10 @@ import React from 'react'; - import { LedgerTransportTypes, WebHIDConnectedStatuses, } from '../../../../../../shared/constants/hardware-wallets'; import { BlockaidResultType } from '../../../../../../shared/constants/security-provider'; -import { - signatureRequestSIWE, - unapprovedPersonalSignMsg, -} from '../../../../../../test/data/confirmations/personal_sign'; -import { permitSignatureMsg } from '../../../../../../test/data/confirmations/typed_sign'; +import { genUnapprovedContractInteractionConfirmation } from '../../../../../../test/data/confirmations/contract-interaction'; import { getMockContractInteractionConfirmState, getMockPersonalSignConfirmState, @@ -17,17 +12,21 @@ import { getMockTypedSignConfirmState, getMockTypedSignConfirmStateForRequest, } from '../../../../../../test/data/confirmations/helper'; +import { + signatureRequestSIWE, + unapprovedPersonalSignMsg, +} from '../../../../../../test/data/confirmations/personal_sign'; +import { permitSignatureMsg } from '../../../../../../test/data/confirmations/typed_sign'; import mockState from '../../../../../../test/data/mock-state.json'; import { fireEvent } from '../../../../../../test/jest'; import { renderWithConfirmContextProvider } from '../../../../../../test/lib/confirmations/render-helpers'; +import { Alert } from '../../../../../ducks/confirm-alerts/confirm-alerts'; +import { Severity } from '../../../../../helpers/constants/design-system'; import * as MMIConfirmations from '../../../../../hooks/useMMIConfirmations'; import * as Actions from '../../../../../store/actions'; import configureStore from '../../../../../store/store'; -import { Severity } from '../../../../../helpers/constants/design-system'; -import { SignatureRequestType } from '../../../types/confirm'; import * as confirmContext from '../../../context/confirm'; - -import { Alert } from '../../../../../ducks/confirm-alerts/confirm-alerts'; +import { SignatureRequestType } from '../../../types/confirm'; import Footer from './footer'; jest.mock('react-redux', () => ({ @@ -107,13 +106,11 @@ describe('ConfirmFooter', () => { describe('renders disabled "Confirm" Button', () => { it('when isScrollToBottomCompleted is false', () => { jest.spyOn(confirmContext, 'useConfirmContext').mockReturnValue({ - currentConfirmation: unapprovedPersonalSignMsg, + currentConfirmation: genUnapprovedContractInteractionConfirmation(), isScrollToBottomCompleted: false, setIsScrollToBottomCompleted: () => undefined, }); - const mockStateTypedSign = getMockPersonalSignConfirmStateForRequest( - unapprovedPersonalSignMsg, - ); + const mockStateTypedSign = getMockContractInteractionConfirmState(); const { getByText } = render(mockStateTypedSign); const confirmButton = getByText('Confirm'); diff --git a/ui/pages/confirmations/components/confirm/footer/footer.tsx b/ui/pages/confirmations/components/confirm/footer/footer.tsx index a9aea54c03f7..82b10a9511a8 100644 --- a/ui/pages/confirmations/components/confirm/footer/footer.tsx +++ b/ui/pages/confirmations/components/confirm/footer/footer.tsx @@ -1,4 +1,7 @@ -import { TransactionMeta } from '@metamask/transaction-controller'; +import { + TransactionMeta, + TransactionType, +} from '@metamask/transaction-controller'; import { providerErrors, serializeError } from '@metamask/rpc-errors'; import React, { useCallback, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; @@ -187,9 +190,14 @@ const Footer = () => { const isSIWE = isSIWESignatureRequest(currentConfirmation); const isPermit = isPermitSignatureRequest(currentConfirmation); const isPermitSimulationShown = isPermit && useTransactionSimulations; + const isPersonalSign = + currentConfirmation?.type === TransactionType.personalSign; const isConfirmDisabled = - (!isScrollToBottomCompleted && !isSIWE && !isPermitSimulationShown) || + (!isScrollToBottomCompleted && + !isSIWE && + !isPermitSimulationShown && + !isPersonalSign) || ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) mmiSubmitDisabled || ///: END:ONLY_INCLUDE_IF From fffb8c67d344acbb100dd6a6c36d88881cf53a66 Mon Sep 17 00:00:00 2001 From: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Date: Thu, 12 Dec 2024 11:02:50 -0500 Subject: [PATCH 088/111] feat: update bridge tx details (#29075) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29075?quickstart=1) This PR update the Bridge tx details screen with: 1. Source/destination chain always visible 2. You sent/received 3. Activity log ## **Related issues** Fixes: ## **Manual testing steps** 1. Do a bridge tx 4. Click on the bridge tx in the activity list 5. Observe changes ## **Screenshots/Recordings** ### **Before** ### **After** ![Screenshot 2024-12-11 at 1 32 49 PM](https://github.com/user-attachments/assets/36879afa-e2ec-4d21-97a9-015d82dd8229) ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/_locales/en/messages.json | 40 +-- .../transaction-list-item.component.js | 1 + ui/hooks/bridge/useBridgeTxHistoryData.ts | 7 +- .../transaction-details.tsx | 268 ++++++++++-------- ui/pages/bridge/types.ts | 7 +- 5 files changed, 174 insertions(+), 149 deletions(-) diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 34afdaab62ed..466615b0343a 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -861,9 +861,6 @@ "bridgeCalculatingAmount": { "message": "Calculating..." }, - "bridgeDestination": { - "message": "Destination" - }, "bridgeDontSend": { "message": "Bridge, don't send" }, @@ -888,9 +885,6 @@ "bridgeSelectTokenAndAmount": { "message": "Select token and amount" }, - "bridgeSource": { - "message": "Source" - }, "bridgeStepActionBridgeComplete": { "message": "$1 received on $2", "description": "$1 is the amount of the destination asset, $2 is the name of the destination network" @@ -923,14 +917,8 @@ "bridgeTotalFeesTooltipText": { "message": "This includes gas fees (paid to crypto miners) and relayer fees (paid to power complex services like bridging).\nFees are based on network traffic and transaction complexity. MetaMask does not profit from either fee." }, - "bridgeTxDetailsBaseFee": { - "message": "Base fee (GWEI)" - }, - "bridgeTxDetailsBridgeAmount": { - "message": "Bridge amount" - }, - "bridgeTxDetailsBridgeType": { - "message": "Bridge type" + "bridgeTxDetailsBridging": { + "message": "Bridging" }, "bridgeTxDetailsDelayedDescription": { "message": "Reach out to" @@ -941,21 +929,9 @@ "bridgeTxDetailsDelayedTitle": { "message": "Has it been longer than 3 hours?" }, - "bridgeTxDetailsGasLimit": { - "message": "Gas limit (units)" - }, - "bridgeTxDetailsGasUsed": { - "message": "Gas used (units)" - }, - "bridgeTxDetailsMaxFeePerGas": { - "message": "Max fee per gas" - }, "bridgeTxDetailsNonce": { "message": "Nonce" }, - "bridgeTxDetailsPriorityFee": { - "message": "Priority fee (GWEI)" - }, "bridgeTxDetailsStatus": { "message": "Status" }, @@ -966,14 +942,18 @@ "message": "$1 at $2", "description": "$1 is the date, $2 is the time" }, - "bridgeTxDetailsTotal": { - "message": "Total" + "bridgeTxDetailsTokenAmountOnChain": { + "message": "$1 $2 on", + "description": "$1 is the amount of the token, $2 is the ticker symbol of the token" }, "bridgeTxDetailsTotalGasFee": { "message": "Total gas fee" }, - "bridgeTypeDirectionTo": { - "message": "To" + "bridgeTxDetailsYouReceived": { + "message": "You received" + }, + "bridgeTxDetailsYouSent": { + "message": "You sent" }, "browserNotSupported": { "message": "Your browser is not supported..." 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 fed0f925a3ac..09e8983b9196 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 @@ -99,6 +99,7 @@ function TransactionListItemInner({ const { bridgeTxHistoryItem, isBridgeComplete, showBridgeTxDetails } = useBridgeTxHistoryData({ transactionGroup, + isEarliestNonce, }); const { diff --git a/ui/hooks/bridge/useBridgeTxHistoryData.ts b/ui/hooks/bridge/useBridgeTxHistoryData.ts index dc6db53896ae..0334f822cc16 100644 --- a/ui/hooks/bridge/useBridgeTxHistoryData.ts +++ b/ui/hooks/bridge/useBridgeTxHistoryData.ts @@ -25,10 +25,12 @@ export type TransactionGroup = { export type UseBridgeTxHistoryDataProps = { transactionGroup: TransactionGroup; + isEarliestNonce: boolean; }; export function useBridgeTxHistoryData({ transactionGroup, + isEarliestNonce, }: UseBridgeTxHistoryDataProps) { const history = useHistory(); const bridgeHistory = useSelector(selectBridgeHistoryForAccount); @@ -49,7 +51,10 @@ export function useBridgeTxHistoryData({ ) ? undefined : () => { - history.push(`${CROSS_CHAIN_SWAP_TX_DETAILS_ROUTE}/${srcTxMetaId}`); + history.push({ + pathname: `${CROSS_CHAIN_SWAP_TX_DETAILS_ROUTE}/${srcTxMetaId}`, + state: { transactionGroup, isEarliestNonce }, + }); }; return { diff --git a/ui/pages/bridge/transaction-details/transaction-details.tsx b/ui/pages/bridge/transaction-details/transaction-details.tsx index fe81e8e3b3dd..762e2c1218d9 100644 --- a/ui/pages/bridge/transaction-details/transaction-details.tsx +++ b/ui/pages/bridge/transaction-details/transaction-details.tsx @@ -1,8 +1,9 @@ import React, { useContext } from 'react'; import { useSelector } from 'react-redux'; -import { useHistory, useParams } from 'react-router-dom'; +import { useHistory, useParams, useLocation } from 'react-router-dom'; import { NetworkConfiguration } from '@metamask/network-controller'; import { TransactionMeta } from '@metamask/transaction-controller'; +import { BigNumber } from 'bignumber.js'; import { AvatarNetwork, AvatarNetworkSize, @@ -12,7 +13,9 @@ import { ButtonIcon, ButtonIconSize, ButtonLink, + Icon, IconName, + IconSize, Text, } from '../../../components/component-library'; import { Content, Header } from '../../../components/multichain/pages/page'; @@ -28,7 +31,6 @@ import { PRIMARY, SUPPORT_REQUEST_LINK, } from '../../../helpers/constants/common'; -import CurrencyDisplay from '../../../components/ui/currency-display/currency-display.component'; import { BridgeHistoryItem, StatusTypes, @@ -51,6 +53,10 @@ import { MetaMetricsEventName, } from '../../../../shared/constants/metametrics'; import { MetaMetricsContext } from '../../../contexts/metametrics'; +import { formatAmount } from '../../confirmations/components/simulation-details/formatAmount'; +import { getIntlLocale } from '../../../ducks/locale/locale'; +import { TransactionGroup } from '../../../hooks/bridge/useBridgeTxHistoryData'; +import TransactionActivityLog from '../../../components/app/transaction-activity-log'; import TransactionDetailRow from './transaction-detail-row'; import BridgeExplorerLinks from './bridge-explorer-links'; import BridgeStepList from './bridge-step-list'; @@ -77,18 +83,47 @@ const getBlockExplorerUrl = ( /** * @param options0 * @param options0.bridgeHistoryItem + * @param options0.locale * @returns A string representing the bridge amount in decimal form */ -const getBridgeAmount = ({ +const getBridgeAmountSentFormatted = ({ + locale, bridgeHistoryItem, }: { + locale: string; bridgeHistoryItem?: BridgeHistoryItem; }) => { - if (bridgeHistoryItem) { - return bridgeHistoryItem.pricingData?.amountSent; + if (!bridgeHistoryItem?.pricingData?.amountSent) { + return undefined; + } + + return formatAmount( + locale, + new BigNumber(bridgeHistoryItem.pricingData.amountSent), + ); +}; + +const getBridgeAmountReceivedFormatted = ({ + locale, + bridgeHistoryItem, +}: { + locale: string; + bridgeHistoryItem?: BridgeHistoryItem; +}) => { + if (!bridgeHistoryItem) { + return undefined; } - return undefined; + const destAmount = bridgeHistoryItem.status.destChain?.amount; + if (!destAmount) { + return undefined; + } + + const destAssetDecimals = bridgeHistoryItem.quote.destAsset.decimals; + return formatAmount( + locale, + new BigNumber(destAmount).dividedBy(10 ** destAssetDecimals), + ); }; /** @@ -118,9 +153,11 @@ const StatusToColorMap: Record = { const CrossChainSwapTxDetails = () => { const t = useI18nContext(); + const locale = useSelector(getIntlLocale); const trackEvent = useContext(MetaMetricsContext); const rootState = useSelector((state) => state); const history = useHistory(); + const location = useLocation(); const { srcTxMetaId } = useParams<{ srcTxMetaId: string }>(); const bridgeHistory = useSelector(selectBridgeHistoryForAccount); const selectedAddressTxList = useSelector( @@ -131,6 +168,10 @@ const CrossChainSwapTxDetails = () => { getNetworkConfigurationsByChainId, ); + const { transactionGroup, isEarliestNonce } = location.state as { + transactionGroup: TransactionGroup; + isEarliestNonce: boolean; + }; const srcChainTxMeta = selectedAddressTxList.find( (tx) => tx.id === srcTxMetaId, ); @@ -154,12 +195,18 @@ const CrossChainSwapTxDetails = () => { ? bridgeHistoryItem?.status.status : StatusTypes.PENDING; + const srcChainIconUrl = srcNetwork + ? CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP[ + srcNetwork.chainId as keyof typeof CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP + ] + : undefined; + const destChainIconUrl = destNetwork ? CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP[ destNetwork.chainId as keyof typeof CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP ] : undefined; - const bridgeTypeDirection = t('bridgeTypeDirectionTo'); + const srcNetworkName = srcNetwork?.name; const destNetworkName = destNetwork?.name; @@ -171,9 +218,41 @@ const CrossChainSwapTxDetails = () => { }) : undefined; - const bridgeAmount = getBridgeAmount({ bridgeHistoryItem }); + const bridgeAmountSent = getBridgeAmountSentFormatted({ + locale, + bridgeHistoryItem, + }); + const bridgeAmountReceived = getBridgeAmountReceivedFormatted({ + locale, + bridgeHistoryItem, + }); const isDelayed = getIsDelayed(status, bridgeHistoryItem); + const srcNetworkIconName = ( + + {srcNetwork && ( + + )} + {srcNetworkName} + + ); + const destNetworkIconName = ( + + {destNetwork && ( + + )} + {destNetworkName} + + ); + return (
@@ -196,6 +275,7 @@ const CrossChainSwapTxDetails = () => { flexDirection={FlexDirection.Column} gap={4} > + {/* Delayed banner */} {isDelayed && ( { )} + {/* Bridge step list */} {status !== StatusTypes.COMPLETE && (bridgeHistoryItem || srcChainTxMeta) && ( { srcBlockExplorerUrl={srcBlockExplorerUrl} destBlockExplorerUrl={destBlockExplorerUrl} /> + - {/* General tx details */} + {/* Bridge tx details */} { } /> - - {status !== StatusTypes.COMPLETE && ( - - {bridgeTypeDirection}{' '} - {destNetwork && ( - - )} - {destNetworkName} - - } - /> - )} - {status === StatusTypes.COMPLETE && ( - <> - - - - )} + + {srcNetworkIconName} + + {destNetworkIconName} + + } + /> { formatDate(srcChainTxMeta?.time, 'hh:mm a'), ])} /> - + {/* Bridge tx details 2 */} - + {t('bridgeTxDetailsTokenAmountOnChain', [ + bridgeAmountSent, + bridgeHistoryItem?.quote.srcAsset.symbol, + ])} + {srcNetworkIconName} + + } /> + {t('bridgeTxDetailsTokenAmountOnChain', [ + bridgeAmountReceived, + bridgeHistoryItem?.quote.destAsset.symbol, + ])} + {destNetworkIconName} + + } /> - {data?.isEIP1559Transaction && - typeof data?.baseFee !== 'undefined' && ( - - } - /> - )} - {data?.isEIP1559Transaction && - typeof data?.priorityFee !== 'undefined' && ( - - } - /> - )} - { /> } /> - - } - /> - - } - /> + {/* Generic tx details */} + + - + +
diff --git a/ui/pages/bridge/types.ts b/ui/pages/bridge/types.ts index db6d7e8e1394..e753207f1631 100644 --- a/ui/pages/bridge/types.ts +++ b/ui/pages/bridge/types.ts @@ -94,12 +94,11 @@ export type Quote = { requestId: string; srcChainId: ChainId; srcAsset: BridgeAsset; - // This is amount sent - metabridge fee, however, some tokens have a fee of 0 - // So sometimes it's equal to amount sent - srcTokenAmount: string; + // Some tokens have a fee of 0, so sometimes it's equal to amount sent + srcTokenAmount: string; // Atomic amount, the amount sent - fees destChainId: ChainId; destAsset: BridgeAsset; - destTokenAmount: string; + destTokenAmount: string; // Atomic amount, the amount received feeData: Record & Partial>; bridgeId: string; From 4b48ee62e4bd62fcb2981c230f2c2ed383d2ec62 Mon Sep 17 00:00:00 2001 From: Nick Gambino <35090461+gambinish@users.noreply.github.com> Date: Thu, 12 Dec 2024 08:07:35 -0800 Subject: [PATCH 089/111] fix: Use correct selector to pull name from non-popular networks (#29121) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** On token-list-item, we were using the wrong selector to select the network configuration, which included the network name needed for the fallback icon of non-popular networks. `getNetworkConfigurationsByChainId` returns chainId => networkConfiguration mapping, while `getNetworkConfigurationIdByChainId` returns a chainId => string mapping, which could be a networkId (random UUID string) This broke the fallback behavior, as we would render the first letter of the uuid, rather than the first letter of the network name. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29121?quickstart=1) ## **Related issues** Fixes: Incorrect network logo fallback letter ## **Manual testing steps** 1. Add Base Sepolia as custom network: https://chainlist.org/chain/84532 2. Verify that the fallback image on main token-list and token-detail page is `B` and matches the network picker. ## **Screenshots/Recordings** Before Screenshot 2024-12-11 at 5 29 02 PM After Screenshot 2024-12-11 at 5 28 21 PM ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../assets/asset-list/network-filter/network-filter.tsx | 2 +- .../multichain/token-list-item/token-list-item.tsx | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx index d08d01f933ee..a63aef334d11 100644 --- a/ui/components/app/assets/asset-list/network-filter/network-filter.tsx +++ b/ui/components/app/assets/asset-list/network-filter/network-filter.tsx @@ -203,7 +203,7 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => { diff --git a/ui/components/multichain/token-list-item/token-list-item.tsx b/ui/components/multichain/token-list-item/token-list-item.tsx index 76152770dbc9..40b91a001f17 100644 --- a/ui/components/multichain/token-list-item/token-list-item.tsx +++ b/ui/components/multichain/token-list-item/token-list-item.tsx @@ -44,7 +44,6 @@ import { getParticipateInMetaMetrics, getDataCollectionForMarketing, getMarketData, - getNetworkConfigurationIdByChainId, getCurrencyRates, } from '../../../selectors'; import { getMultichainIsEvm } from '../../../selectors/multichain'; @@ -69,6 +68,7 @@ import { useSafeChains, } from '../../../pages/settings/networks-tab/networks-form/use-safe-chains'; import { NETWORK_TO_SHORT_NETWORK_NAME_MAP } from '../../../../shared/constants/bridge'; +import { getNetworkConfigurationsByChainId } from '../../../../shared/modules/selectors/networks'; import { PercentageChange } from './price/percentage-change/percentage-change'; type TokenListItemProps = { @@ -227,9 +227,7 @@ export const TokenListItem = ({ ); // Used for badge icon - const allNetworks: Record = useSelector( - getNetworkConfigurationIdByChainId, - ); + const allNetworks = useSelector(getNetworkConfigurationsByChainId); const testNetworkBackgroundColor = useSelector(getTestNetworkBackgroundColor); return ( @@ -285,7 +283,7 @@ export const TokenListItem = ({ badge={ Date: Thu, 12 Dec 2024 11:34:19 -0500 Subject: [PATCH 090/111] chore: delay linea bridge tx to make it less flaky (#29109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29109?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Set network to Linea 2. Bridge an ERC20 to another network 3. Observe loading spinner on quotes page 4. Get redirected to activity list 5. See successful ERC20 approval and bridge tx ## **Screenshots/Recordings** ### **Before** ### **After** https://github.com/user-attachments/assets/e6079f43-632e-4bd3-a9e0-54f7c427b541 ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../hooks/useSubmitBridgeTransaction.ts | 25 ++++++++++++++ ui/pages/bridge/prepare/bridge-cta-button.tsx | 34 ++++++++++++------- 2 files changed, 47 insertions(+), 12 deletions(-) diff --git a/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts b/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts index 39e905631e82..847df1204ab3 100644 --- a/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts +++ b/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts @@ -2,18 +2,25 @@ import { useDispatch, useSelector } from 'react-redux'; import { zeroAddress } from 'ethereumjs-util'; import { useHistory } from 'react-router-dom'; import { TransactionMeta } from '@metamask/transaction-controller'; +import { createProjectLogger, Hex } from '@metamask/utils'; import { QuoteMetadata, QuoteResponse } from '../types'; import { DEFAULT_ROUTE } from '../../../helpers/constants/routes'; import { setDefaultHomeActiveTabName } from '../../../store/actions'; import { startPollingForBridgeTxStatus } from '../../../ducks/bridge-status/actions'; import { getQuoteRequest } from '../../../ducks/bridge/selectors'; +import { CHAIN_IDS } from '../../../../shared/constants/network'; +import { getCurrentChainId } from '../../../../shared/modules/selectors/networks'; import useAddToken from './useAddToken'; import useHandleApprovalTx from './useHandleApprovalTx'; import useHandleBridgeTx from './useHandleBridgeTx'; +const debugLog = createProjectLogger('bridge'); +const LINEA_DELAY_MS = 5000; + export default function useSubmitBridgeTransaction() { const history = useHistory(); const dispatch = useDispatch(); + const srcChainId = useSelector(getCurrentChainId); const { addSourceToken, addDestToken } = useAddToken(); const { handleApprovalTx } = useHandleApprovalTx(); const { handleBridgeTx } = useHandleBridgeTx(); @@ -33,6 +40,24 @@ export default function useSubmitBridgeTransaction() { }); } + if ( + ( + [ + CHAIN_IDS.LINEA_MAINNET, + CHAIN_IDS.LINEA_GOERLI, + CHAIN_IDS.LINEA_SEPOLIA, + ] as Hex[] + ).includes(srcChainId) + ) { + debugLog( + 'Delaying submitting bridge tx to make Linea confirmation more likely', + ); + const waitPromise = new Promise((resolve) => + setTimeout(resolve, LINEA_DELAY_MS), + ); + await waitPromise; + } + const bridgeTxMeta = await handleBridgeTx({ quoteResponse, approvalTxId: approvalTxMeta?.id, diff --git a/ui/pages/bridge/prepare/bridge-cta-button.tsx b/ui/pages/bridge/prepare/bridge-cta-button.tsx index c8738a6551de..931b6cb4e8ea 100644 --- a/ui/pages/bridge/prepare/bridge-cta-button.tsx +++ b/ui/pages/bridge/prepare/bridge-cta-button.tsx @@ -35,6 +35,7 @@ export const BridgeCTAButton = () => { const { maxRefreshCount, refreshRate } = useSelector(getBridgeQuotesConfig); const { submitBridgeTransaction } = useSubmitBridgeTransaction(); + const [isSubmitting, setIsSubmitting] = useState(false); const { isNoQuotesAvailable, isInsufficientBalance } = useSelector(getValidationErrors); @@ -108,20 +109,29 @@ export const BridgeCTAButton = () => { data-testid="bridge-cta-button" onClick={() => { if (activeQuote && isTxSubmittable) { - quoteRequestProperties && - requestMetadataProperties && - tradeProperties && - trackCrossChainSwapsEvent({ - event: MetaMetricsEventName.ActionSubmitted, - properties: { - ...quoteRequestProperties, - ...requestMetadataProperties, - ...tradeProperties, - }, - }); - submitBridgeTransaction(activeQuote); + try { + // We don't need to worry about setting to true if the tx submission succeeds + // because we route immediately to Activity list page + setIsSubmitting(true); + + quoteRequestProperties && + requestMetadataProperties && + tradeProperties && + trackCrossChainSwapsEvent({ + event: MetaMetricsEventName.ActionSubmitted, + properties: { + ...quoteRequestProperties, + ...requestMetadataProperties, + ...tradeProperties, + }, + }); + submitBridgeTransaction(activeQuote); + } catch (error) { + setIsSubmitting(false); + } } }} + loading={isSubmitting} disabled={!isTxSubmittable || isQuoteExpired} > {label} From edab215510e3936567818c767108151a48633a13 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Thu, 12 Dec 2024 13:54:16 -0330 Subject: [PATCH 091/111] refactor: Refactor how manifest flags are set (#28686) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** The pieces of `set-manifest-flags.ts` related to _getting_ flags have been moved to the new `get-manifest-flags.ts` module. This module will be used in a later PR by a script run during a CI workflow. The migrated steps were also made asynchronous so that the asynchronous steps could be run in parallel rather than blocking the process. Documentation has been added to the `ManifestFlags` type as well, in preparation for adding a new property in the next PR. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28686?quickstart=1) ## **Related issues** Related to https://github.com/MetaMask/metamask-extension/issues/28685 ## **Manual testing steps** N/A, no functional changes. ## **Screenshots/Recordings** N/A ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Howard Braham --- app/scripts/lib/manifestFlags.ts | 44 +++++++++++- development/lib/get-manifest-flag.ts | 102 +++++++++++++++++++++++++++ test/e2e/helpers.js | 2 +- test/e2e/set-manifest-flags.ts | 86 ++-------------------- 4 files changed, 150 insertions(+), 84 deletions(-) create mode 100644 development/lib/get-manifest-flag.ts diff --git a/app/scripts/lib/manifestFlags.ts b/app/scripts/lib/manifestFlags.ts index 5804c7391973..8f92bea93621 100644 --- a/app/scripts/lib/manifestFlags.ts +++ b/app/scripts/lib/manifestFlags.ts @@ -1,17 +1,59 @@ import browser from 'webextension-polyfill'; +/** + * Flags that we use to control runtime behavior of the extension. Typically + * used for E2E tests. + * + * These flags are added to `manifest.json` for runtime querying. + */ export type ManifestFlags = { + /** + * CircleCI metadata for the current run + */ circleci?: { + /** + * Whether CircleCI manifest flags are enabled. + */ enabled: boolean; + /** + * The name of the branch that triggered the current run on CircleCI + */ branch?: string; + /** + * The current CircleCI build number + */ buildNum?: number; + /** + * The name of the CircleCI job currently running + */ job?: string; + /** + * For jobs with CircleCI parallelism enabled, this is the index of the current machine. + */ nodeIndex?: number; + /** + * The number of the pull request that triggered the current run + */ prNumber?: number; }; + /** + * Sentry flags + */ sentry?: { + /** + * Override the performance trace sample rate + */ tracesSampleRate?: number; - lazyLoadSubSampleRate?: number; // multiply by tracesSampleRate to get the actual probability + /** + * Sub-sample rate for lazy-loaded components. + * + * Multiply this rate by tracesSampleRate to get the actual probability of sampling the load + * time of a lazy-loaded component. + */ + lazyLoadSubSampleRate?: number; + /** + * Force enable Sentry (this is typically set by individual E2E tests in spec files) + */ forceEnable?: boolean; }; }; diff --git a/development/lib/get-manifest-flag.ts b/development/lib/get-manifest-flag.ts new file mode 100644 index 000000000000..6253c3f3d98f --- /dev/null +++ b/development/lib/get-manifest-flag.ts @@ -0,0 +1,102 @@ +import path from 'node:path'; +import fs from 'node:fs/promises'; +import { promisify } from 'node:util'; +import { exec as callbackExec } from 'node:child_process'; + +import { hasProperty } from '@metamask/utils'; +import { merge } from 'lodash'; + +import type { ManifestFlags } from '../../app/scripts/lib/manifestFlags'; + +const exec = promisify(callbackExec); +const PR_BODY_FILEPATH = path.resolve( + __dirname, + '..', + '..', + 'changed-files', + 'pr-body.txt', +); + +/** + * Search a string for `flags = {...}` and return ManifestFlags if it exists + * + * @param str - The string to search + * @param errorType - The type of error to log if parsing fails + * @returns The ManifestFlags object if valid, otherwise undefined + */ +function regexSearchForFlags(str: string, errorType: string): ManifestFlags { + // Search str for `flags = {...}` + const flagsMatch = str.match(/flags\s*=\s*(\{.*\})/u); + + if (flagsMatch) { + try { + // Get 1st capturing group from regex + return JSON.parse(flagsMatch[1]); + } catch (error) { + console.error( + `Error parsing flags from ${errorType}, ignoring flags\n`, + error, + ); + } + } + + return {}; +} + +/** + * Get flags from the GitHub PR body if they are set + * + * To use this feature, add a line to your PR body like: + * `flags = {"sentry": {"tracesSampleRate": 0.1}}` + * (must be valid JSON) + * + * @returns Any manifest flags found in the PR body + */ +async function getFlagsFromPrBody(): Promise { + let body: string; + try { + body = await fs.readFile(PR_BODY_FILEPATH, 'utf8'); + } catch (error) { + if ( + error instanceof Error && + hasProperty(error, 'code') && + error.code === 'ENOENT' + ) { + console.debug('No pr-body.txt, ignoring flags'); + return {}; + } + throw error; + } + + return regexSearchForFlags(body, 'PR body'); +} + +/** + * Get flags from the Git message if they are set + * + * To use this feature, add a line to your commit message like: + * `flags = {"sentry": {"tracesSampleRate": 0.1}}` + * (must be valid JSON) + * + * @returns Any manifest flags found in the commit message + */ +async function getFlagsFromGitMessage(): Promise { + const gitMessage = (await exec(`git show --format='%B' --no-patch "HEAD"`)) + .stdout; + + return regexSearchForFlags(gitMessage, 'git message'); +} + +/** + * Get any manifest flags found in the PR body and git message. + * + * @returns Any manifest flags found + */ +export async function fetchManifestFlagsFromPRAndGit(): Promise { + const [prBodyFlags, gitMessageFlags] = await Promise.all([ + getFlagsFromPrBody(), + getFlagsFromGitMessage(), + ]); + + return merge(prBodyFlags, gitMessageFlags); +} diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index b06c29b17acf..3ad0d1d149c5 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -184,7 +184,7 @@ async function withFixtures(options, testSuite) { } await mockServer.start(8000); - setManifestFlags(manifestFlags); + await setManifestFlags(manifestFlags); driver = (await buildWebDriver(driverOptions)).driver; webDriver = driver.driver; diff --git a/test/e2e/set-manifest-flags.ts b/test/e2e/set-manifest-flags.ts index 75339250506f..8a7e45050f14 100644 --- a/test/e2e/set-manifest-flags.ts +++ b/test/e2e/set-manifest-flags.ts @@ -1,7 +1,7 @@ -import { execSync } from 'child_process'; import fs from 'fs'; import { merge } from 'lodash'; import { ManifestFlags } from '../../app/scripts/lib/manifestFlags'; +import { fetchManifestFlagsFromPRAndGit } from '../../development/lib/get-manifest-flag'; export const folder = `dist/${process.env.SELENIUM_BROWSER}`; @@ -12,86 +12,8 @@ function parseIntOrUndefined(value: string | undefined): number | undefined { return value ? parseInt(value, 10) : undefined; } -/** - * Search a string for `flags = {...}` and return ManifestFlags if it exists - * - * @param str - The string to search - * @param errorType - The type of error to log if parsing fails - * @returns The ManifestFlags object if valid, otherwise undefined - */ -function regexSearchForFlags( - str: string, - errorType: string, -): ManifestFlags | undefined { - // Search str for `flags = {...}` - const flagsMatch = str.match(/flags\s*=\s*(\{.*\})/u); - - if (flagsMatch) { - try { - // Get 1st capturing group from regex - return JSON.parse(flagsMatch[1]); - } catch (error) { - console.error( - `Error parsing flags from ${errorType}, ignoring flags\n`, - error, - ); - } - } - - return undefined; -} - -/** - * Add flags from the GitHub PR body if they are set - * - * To use this feature, add a line to your PR body like: - * `flags = {"sentry": {"tracesSampleRate": 0.1}}` - * (must be valid JSON) - * - * @param flags - The flags object to add to - */ -function addFlagsFromPrBody(flags: ManifestFlags) { - let body; - - try { - body = fs.readFileSync('changed-files/pr-body.txt', 'utf8'); - } catch (error) { - console.debug('No pr-body.txt, ignoring flags'); - return; - } - - const newFlags = regexSearchForFlags(body, 'PR body'); - - if (newFlags) { - // Use lodash merge to do a deep merge (spread operator is shallow) - merge(flags, newFlags); - } -} - -/** - * Add flags from the Git message if they are set - * - * To use this feature, add a line to your commit message like: - * `flags = {"sentry": {"tracesSampleRate": 0.1}}` - * (must be valid JSON) - * - * @param flags - The flags object to add to - */ -function addFlagsFromGitMessage(flags: ManifestFlags) { - const gitMessage = execSync( - `git show --format='%B' --no-patch "HEAD"`, - ).toString(); - - const newFlags = regexSearchForFlags(gitMessage, 'git message'); - - if (newFlags) { - // Use lodash merge to do a deep merge (spread operator is shallow) - merge(flags, newFlags); - } -} - // Alter the manifest with CircleCI environment variables and custom flags -export function setManifestFlags(flags: ManifestFlags = {}) { +export async function setManifestFlags(flags: ManifestFlags = {}) { if (process.env.CIRCLECI) { flags.circleci = { enabled: true, @@ -104,8 +26,8 @@ export function setManifestFlags(flags: ManifestFlags = {}) { ), }; - addFlagsFromPrBody(flags); - addFlagsFromGitMessage(flags); + const additionalManifestFlags = await fetchManifestFlagsFromPRAndGit(); + merge(flags, additionalManifestFlags); // Set `flags.sentry.forceEnable` to true by default if (flags.sentry === undefined) { From f74a897e3312dfad8b61d4bd52e4eaf71d68fbf8 Mon Sep 17 00:00:00 2001 From: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Date: Thu, 12 Dec 2024 12:44:50 -0500 Subject: [PATCH 092/111] chore: calc the max total gas fee as well (#29116) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29116?quickstart=1) This PR calculates the max total gas in order to block the submit button. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- ui/ducks/bridge/selectors.test.ts | 18 +++++++++ ui/ducks/bridge/selectors.ts | 35 +++++++++++----- ui/pages/bridge/types.ts | 3 +- ui/pages/bridge/utils/quote.test.ts | 18 +++++++-- ui/pages/bridge/utils/quote.ts | 63 +++++++++++++++++++++++------ 5 files changed, 110 insertions(+), 27 deletions(-) diff --git a/ui/ducks/bridge/selectors.test.ts b/ui/ducks/bridge/selectors.test.ts index 344fab115311..d90251e360f3 100644 --- a/ui/ducks/bridge/selectors.test.ts +++ b/ui/ducks/bridge/selectors.test.ts @@ -604,7 +604,13 @@ describe('Bridge selectors', () => { }, gasFee: { amount: new BigNumber('7.141025952e-8'), + amountMax: new BigNumber('3.49092e-8'), valueInCurrency: new BigNumber('7.141025952e-8'), + valueInCurrencyMax: new BigNumber('3.49092e-8'), + }, + totalMaxNetworkFee: { + amount: new BigNumber('0.0010000349092'), + valueInCurrency: new BigNumber('0.0010000349092'), }, totalNetworkFee: { valueInCurrency: new BigNumber('0.00100007141025952'), @@ -698,12 +704,18 @@ describe('Bridge selectors', () => { }, gasFee: { amount: new BigNumber('7.141025952e-8'), + amountMax: new BigNumber('3.49092e-8'), valueInCurrency: new BigNumber('7.141025952e-8'), + valueInCurrencyMax: new BigNumber('3.49092e-8'), }, totalNetworkFee: { valueInCurrency: new BigNumber('0.00100007141025952'), amount: new BigNumber('0.00100007141025952'), }, + totalMaxNetworkFee: { + valueInCurrency: new BigNumber('0.0010000349092'), + amount: new BigNumber('0.0010000349092'), + }, }; expect(result.sortedQuotes).toHaveLength(2); const EXPECTED_SORTED_COSTS = [ @@ -797,12 +809,18 @@ describe('Bridge selectors', () => { }, gasFee: { amount: new BigNumber('7.141025952e-8'), + amountMax: new BigNumber('3.49092e-8'), valueInCurrency: new BigNumber('7.141025952e-8'), + valueInCurrencyMax: new BigNumber('3.49092e-8'), }, totalNetworkFee: { valueInCurrency: new BigNumber('0.00100007141025952'), amount: new BigNumber('0.00100007141025952'), }, + totalMaxNetworkFee: { + valueInCurrency: new BigNumber('0.0010000349092'), + amount: new BigNumber('0.0010000349092'), + }, }; expect(result.sortedQuotes).toHaveLength(2); const EXPECTED_SORTED_COSTS = [ diff --git a/ui/ducks/bridge/selectors.ts b/ui/ducks/bridge/selectors.ts index 2fd3d9586deb..7b0852965f8c 100644 --- a/ui/ducks/bridge/selectors.ts +++ b/ui/ducks/bridge/selectors.ts @@ -50,7 +50,7 @@ import { calcSentAmount, calcSwapRate, calcToAmount, - calcTotalGasFee, + calcEstimatedAndMaxTotalGasFee, isNativeAddress, } from '../../pages/bridge/utils/quote'; import { decGWEIToHexWEI } from '../../../shared/modules/conversion.utils'; @@ -191,6 +191,8 @@ const _getBridgeFeesPerGas = createSelector( maxPriorityFeePerGasInDecGwei: (gasFeeEstimates as GasFeeEstimates)?.[ BRIDGE_PREFERRED_GAS_ESTIMATE ]?.suggestedMaxPriorityFeePerGas, + maxFeePerGasInDecGwei: (gasFeeEstimates as GasFeeEstimates)?.high + ?.suggestedMaxFeePerGas, maxFeePerGas: decGWEIToHexWEI( (gasFeeEstimates as GasFeeEstimates)?.high?.suggestedMaxFeePerGas, ), @@ -280,40 +282,53 @@ const _getQuotesWithMetadata = createDeepEqualSelector( toTokenExchangeRate, fromTokenExchangeRate, nativeExchangeRate, - { estimatedBaseFeeInDecGwei, maxPriorityFeePerGasInDecGwei }, + { + estimatedBaseFeeInDecGwei, + maxPriorityFeePerGasInDecGwei, + maxFeePerGasInDecGwei, + }, ): (QuoteResponse & QuoteMetadata)[] => { const newQuotes = quotes.map((quote: QuoteResponse) => { const toTokenAmount = calcToAmount( quote.quote, toTokenExchangeRate.valueInCurrency, ); - const gasFee = calcTotalGasFee( - quote, + const gasFee = calcEstimatedAndMaxTotalGasFee({ + bridgeQuote: quote, estimatedBaseFeeInDecGwei, + maxFeePerGasInDecGwei, maxPriorityFeePerGasInDecGwei, nativeExchangeRate, - ); + }); const relayerFee = calcRelayerFee(quote, nativeExchangeRate); - const totalNetworkFee = { + const totalEstimatedNetworkFee = { amount: gasFee.amount.plus(relayerFee.amount), valueInCurrency: gasFee.valueInCurrency?.plus(relayerFee.valueInCurrency || '0') ?? null, }; + const totalMaxNetworkFee = { + amount: gasFee.amountMax.plus(relayerFee.amount), + valueInCurrency: + gasFee.valueInCurrencyMax?.plus(relayerFee.valueInCurrency || '0') ?? + null, + }; + const sentAmount = calcSentAmount( quote.quote, fromTokenExchangeRate.valueInCurrency, ); const adjustedReturn = calcAdjustedReturn( toTokenAmount.valueInCurrency, - totalNetworkFee.valueInCurrency, + totalEstimatedNetworkFee.valueInCurrency, ); return { ...quote, toTokenAmount, sentAmount, - totalNetworkFee, + totalNetworkFee: totalEstimatedNetworkFee, + totalMaxNetworkFee, adjustedReturn, gasFee, swapRate: calcSwapRate(sentAmount.amount, toTokenAmount.amount), @@ -518,10 +533,10 @@ export const getValidationErrors = createDeepEqualSelector( if (balance && activeQuote && fromToken) { return isNativeAddress(fromToken.address) ? balance - .sub(activeQuote.totalNetworkFee.amount) + .sub(activeQuote.totalMaxNetworkFee.amount) .sub(activeQuote.sentAmount.amount) .lte(0) - : balance.lte(activeQuote.totalNetworkFee.amount); + : balance.lte(activeQuote.totalMaxNetworkFee.amount); } return false; }, diff --git a/ui/pages/bridge/types.ts b/ui/pages/bridge/types.ts index e753207f1631..1216e447a6a3 100644 --- a/ui/pages/bridge/types.ts +++ b/ui/pages/bridge/types.ts @@ -9,7 +9,8 @@ export type L1GasFees = { // valueInCurrency values are calculated based on the user's selected currency export type QuoteMetadata = { gasFee: { amount: BigNumber; valueInCurrency: BigNumber | null }; - totalNetworkFee: { amount: BigNumber; valueInCurrency: BigNumber | null }; // gasFees + relayerFees + totalNetworkFee: { amount: BigNumber; valueInCurrency: BigNumber | null }; // estimatedGasFees + relayerFees + totalMaxNetworkFee: { amount: BigNumber; valueInCurrency: BigNumber | null }; // maxGasFees + relayerFees toTokenAmount: { amount: BigNumber; valueInCurrency: BigNumber | null }; adjustedReturn: { valueInCurrency: BigNumber | null }; // destTokenAmount - totalNetworkFee sentAmount: { amount: BigNumber; valueInCurrency: BigNumber | null }; // srcTokenAmount + metabridgeFee diff --git a/ui/pages/bridge/utils/quote.test.ts b/ui/pages/bridge/utils/quote.test.ts index f27cc5f63608..b932e9bf2c33 100644 --- a/ui/pages/bridge/utils/quote.test.ts +++ b/ui/pages/bridge/utils/quote.test.ts @@ -5,7 +5,7 @@ import { calcSentAmount, calcSwapRate, calcToAmount, - calcTotalGasFee, + calcEstimatedAndMaxTotalGasFee, calcRelayerFee, formatEtaInMinutes, } from './quote'; @@ -177,7 +177,13 @@ describe('Bridge quote utils', () => { approval: approvalGasLimit ? { gasLimit: approvalGasLimit } : undefined, quote: { srcAsset, srcTokenAmount, feeData }, } as never; - const gasFee = calcTotalGasFee(quote, '0.00010456', '0.0001', 2517.42); + const gasFee = calcEstimatedAndMaxTotalGasFee({ + bridgeQuote: quote, + maxFeePerGasInDecGwei: '0.0002', + estimatedBaseFeeInDecGwei: '0.00010456', + maxPriorityFeePerGasInDecGwei: '0.0001', + nativeExchangeRate: 2517.42, + }); const relayerFee = calcRelayerFee(quote, 2517.42); const result = { amount: gasFee.amount.plus(relayerFee.amount), @@ -264,7 +270,13 @@ describe('Bridge quote utils', () => { quote: { srcAsset, srcTokenAmount, feeData }, l1GasFeesInHexWei: '0x25F63418AA4', } as never; - const gasFee = calcTotalGasFee(quote, '0.00010456', '0.0001', 2517.42); + const gasFee = calcEstimatedAndMaxTotalGasFee({ + bridgeQuote: quote, + estimatedBaseFeeInDecGwei: '0.00010456', + maxFeePerGasInDecGwei: '0.0002', + maxPriorityFeePerGasInDecGwei: '0.0001', + nativeExchangeRate: 2517.42, + }); const relayerFee = calcRelayerFee(quote, 2517.42); const result = { amount: gasFee.amount.plus(relayerFee.amount), diff --git a/ui/pages/bridge/utils/quote.ts b/ui/pages/bridge/utils/quote.ts index 05acc09db520..60faacacba20 100644 --- a/ui/pages/bridge/utils/quote.ts +++ b/ui/pages/bridge/utils/quote.ts @@ -104,32 +104,35 @@ export const calcRelayerFee = ( }; }; -export const calcTotalGasFee = ( - bridgeQuote: QuoteResponse & L1GasFees, - estimatedBaseFeeInDecGwei: string, - maxPriorityFeePerGasInDecGwei: string, - nativeExchangeRate?: number, -) => { +const calcTotalGasFee = ({ + bridgeQuote, + feePerGasInDecGwei, + priorityFeePerGasInDecGwei, + nativeExchangeRate, +}: { + bridgeQuote: QuoteResponse & L1GasFees; + feePerGasInDecGwei: string; + priorityFeePerGasInDecGwei: string; + nativeExchangeRate?: number; +}) => { const { approval, trade, l1GasFeesInHexWei } = bridgeQuote; + const totalGasLimitInDec = sumDecimals( trade.gasLimit?.toString() ?? '0', approval?.gasLimit?.toString() ?? '0', ); - const feePerGasInDecGwei = sumDecimals( - estimatedBaseFeeInDecGwei, - maxPriorityFeePerGasInDecGwei, + const totalFeePerGasInDecGwei = sumDecimals( + feePerGasInDecGwei, + priorityFeePerGasInDecGwei, ); - const l1GasFeesInDecGWei = Numeric.from( l1GasFeesInHexWei ?? '0', 16, EtherDenomination.WEI, ).toDenomination(EtherDenomination.GWEI); - const gasFeesInDecGwei = totalGasLimitInDec - .times(feePerGasInDecGwei) + .times(totalFeePerGasInDecGwei) .add(l1GasFeesInDecGWei); - const gasFeesInDecEth = new BigNumber( gasFeesInDecGwei.shiftedBy(9).toString(), ); @@ -143,6 +146,40 @@ export const calcTotalGasFee = ( }; }; +export const calcEstimatedAndMaxTotalGasFee = ({ + bridgeQuote, + estimatedBaseFeeInDecGwei, + maxFeePerGasInDecGwei, + maxPriorityFeePerGasInDecGwei, + nativeExchangeRate, +}: { + bridgeQuote: QuoteResponse & L1GasFees; + estimatedBaseFeeInDecGwei: string; + maxFeePerGasInDecGwei: string; + maxPriorityFeePerGasInDecGwei: string; + nativeExchangeRate?: number; +}) => { + const { amount, valueInCurrency } = calcTotalGasFee({ + bridgeQuote, + feePerGasInDecGwei: estimatedBaseFeeInDecGwei, + priorityFeePerGasInDecGwei: maxPriorityFeePerGasInDecGwei, + nativeExchangeRate, + }); + const { amount: amountMax, valueInCurrency: valueInCurrencyMax } = + calcTotalGasFee({ + bridgeQuote, + feePerGasInDecGwei: maxFeePerGasInDecGwei, + priorityFeePerGasInDecGwei: maxPriorityFeePerGasInDecGwei, + nativeExchangeRate, + }); + return { + amount, + amountMax, + valueInCurrency, + valueInCurrencyMax, + }; +}; + export const calcAdjustedReturn = ( destTokenAmountInCurrency: BigNumber | null, totalNetworkFeeInCurrency: BigNumber | null, From 1a239750147d79a0476bfe2aac4fa96af8388400 Mon Sep 17 00:00:00 2001 From: Bryan Fullam Date: Fri, 13 Dec 2024 00:45:23 +0700 Subject: [PATCH 093/111] feat: hardware wallet confirmation screen (#29113) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Bridge currently redirects to swap when trying to use a hardware wallet. This PR allows hardware wallet accounts to access swaps and adds an info screen to inform the user about the transactions they will need to approve on their device. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29113?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Connect with hardware wallet account 2. Go to bridge 3. Enter token, amount, and network 4. Confirm quote 5. See info screen ## **Screenshots/Recordings** ### **Before** ### **After** ![Screenshot 2024-12-11 at 20 52 29](https://github.com/user-attachments/assets/cfb97ae1-17e2-4904-9c55-d6b9b08fdb49) ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: IF <139582705+infiniteflower@users.noreply.github.com> --- app/_locales/en/messages.json | 14 ++ test/jest/mock-store.js | 3 + ui/hooks/bridge/useBridging.ts | 14 +- .../bridge/__snapshots__/index.test.tsx.snap | 236 +++++++++++++++++- .../awaiting-signatures-cancel-button.tsx | 25 ++ .../awaiting-signatures.tsx | 154 ++++++++++++ .../bridge/awaiting-signatures/index.scss | 31 +++ ui/pages/bridge/awaiting-signatures/index.ts | 1 + .../hooks/useSubmitBridgeTransaction.ts | 47 +++- ui/pages/bridge/index.scss | 1 + ui/pages/bridge/index.test.tsx | 15 +- ui/pages/bridge/index.tsx | 85 ++++--- 12 files changed, 564 insertions(+), 62 deletions(-) create mode 100644 ui/pages/bridge/awaiting-signatures/awaiting-signatures-cancel-button.tsx create mode 100644 ui/pages/bridge/awaiting-signatures/awaiting-signatures.tsx create mode 100644 ui/pages/bridge/awaiting-signatures/index.scss create mode 100644 ui/pages/bridge/awaiting-signatures/index.ts diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 466615b0343a..a4dc558e0b83 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -854,6 +854,10 @@ "bridge": { "message": "Bridge" }, + "bridgeAllowSwappingOf": { + "message": "Allow exact access to $1 $2 on $3 for bridging", + "description": "Shows a user that they need to allow a token for swapping on their hardware wallet" + }, "bridgeApproval": { "message": "Approve $1 for bridge", "description": "Used in the transaction display list to describe a transaction that is an approve call on a token that is to be bridged. $1 is the symbol of a token that has been approved." @@ -861,6 +865,9 @@ "bridgeCalculatingAmount": { "message": "Calculating..." }, + "bridgeConfirmTwoTransactions": { + "message": "You'll need to confirm 2 transactions on your hardware wallet:" + }, "bridgeDontSend": { "message": "Bridge, don't send" }, @@ -873,6 +880,13 @@ "bridgeFrom": { "message": "Bridge from" }, + "bridgeFromTo": { + "message": "Bridge $1 $2 to $3", + "description": "Tells a user that they need to confirm on their hardware wallet a bridge. $1 is amount of source token, $2 is the source network, and $3 is the destination network" + }, + "bridgeGasFeesSplit": { + "message": "Any network fee quoted on the previous screen includes both transactions and will be split." + }, "bridgeNetCost": { "message": "Net cost" }, diff --git a/test/jest/mock-store.js b/test/jest/mock-store.js index 84d18e1a3803..2f48e9794e98 100644 --- a/test/jest/mock-store.js +++ b/test/jest/mock-store.js @@ -868,5 +868,8 @@ export const createBridgeMockStore = ( ...bridgeStatusStateOverrides, }, }, + send: { + swapsBlockedTokens: [], + }, }; }; diff --git a/ui/hooks/bridge/useBridging.ts b/ui/hooks/bridge/useBridging.ts index 2b7ffb0083c9..bfc47491caa0 100644 --- a/ui/hooks/bridge/useBridging.ts +++ b/ui/hooks/bridge/useBridging.ts @@ -93,17 +93,9 @@ const useBridging = () => { chain_id: providerConfig.chainId, }, }); - if (usingHardwareWallet && global.platform.openExtensionInBrowser) { - global.platform.openExtensionInBrowser( - PREPARE_SWAP_ROUTE, - null, - false, - ); - } else { - history.push( - `${CROSS_CHAIN_SWAP_ROUTE}${PREPARE_SWAP_ROUTE}?token=${token.address.toLowerCase()}`, - ); - } + history.push( + `${CROSS_CHAIN_SWAP_ROUTE}${PREPARE_SWAP_ROUTE}?token=${token.address.toLowerCase()}`, + ); } else { const portfolioUrl = getPortfolioUrl( 'bridge', diff --git a/ui/pages/bridge/__snapshots__/index.test.tsx.snap b/ui/pages/bridge/__snapshots__/index.test.tsx.snap index b9a6a4c83797..d3960cf975a8 100644 --- a/ui/pages/bridge/__snapshots__/index.test.tsx.snap +++ b/ui/pages/bridge/__snapshots__/index.test.tsx.snap @@ -50,8 +50,240 @@ exports[`Bridge renders the component with initial props 1`] = `
+ class="mm-box multichain-page-content mm-box--padding-4 mm-box--display-flex mm-box--flex-direction-column mm-box--width-full mm-box--height-full" + > +
+
+
+
+ +
+
+ +
+
+
+
+

+ +

+
+ + $0.00 + +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+

+ +

+
+ + $0.00 + +
+
+
+
+
+
{showCrossChainSwapsLink && ( { - const portfolioUrl = getPortfolioUrl( - 'bridge', - 'ext_bridge_prepare_swap_link', - metaMetricsId, - isMetaMetricsEnabled, - isMarketingEnabled, - ); - - global.platform.openTab({ - url: `${portfolioUrl}&token=${fromTokenAddress}`, - }); - - trackEvent({ - category: MetaMetricsEventCategory.Swaps, - event: MetaMetricsEventName.BridgeLinkClicked, - properties: { - location: 'Swaps', - text: 'Swap across networks with MetaMask Portfolio', - chain_id: chainId, - token_symbol: fromTokenSymbol, - }, - }); + openBridgeExperience('Swaps', fromToken); }} target="_blank" data-testid="prepare-swap-page-cross-chain-swaps-link" > - {t('crossChainSwapsLink')} + {isBridgeSupported + ? t('crossChainSwapsLinkNative') + : t('crossChainSwapsLink')} )} {!showReviewQuote && toTokenIsNotDefault && occurrences < 2 && (