diff --git a/docusaurus.config.js b/docusaurus.config.js index 9ea8926b6bb..4ffa7980c94 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -131,6 +131,7 @@ const config = { DISCOURSE_API_KEY: process.env.DISCOURSE_API_KEY, DISCOURSE_API_USERNAME: process.env.DISCOURSE_API_USERNAME, DISCOURSE_CATEGORY_ID: process.env.DISCOURSE_CATEGORY_ID, + INFURA_API_KEY: process.env.INFURA_API_KEY || '', }, trailingSlash: true, diff --git a/metamask-connect/evm/quickstart/connectkit.md b/metamask-connect/evm/quickstart/connectkit.md index 8dc3ff8156a..a7654f4e2ad 100644 --- a/metamask-connect/evm/quickstart/connectkit.md +++ b/metamask-connect/evm/quickstart/connectkit.md @@ -9,7 +9,7 @@ keywords: [connect, MetaMask, JavaScript, ConnectKit, SDK, dapp, Wallet SDK, con :::info Heads up Looks like you've landed on a guide that still uses the MetaMask legacy SDK (`@metamask/sdk`). The MetaMask Connect integration for this library is on its way — once ready, it will be linked -from the sidebar navigation. In the meantime, this guide is still perfectly valid if you're using +from the sidebar navigation. In the meantime, this guide is still valid if you're using MetaMask SDK. ::: diff --git a/metamask-connect/evm/quickstart/dynamic.md b/metamask-connect/evm/quickstart/dynamic.md index 52868e519b3..b5d6162224f 100644 --- a/metamask-connect/evm/quickstart/dynamic.md +++ b/metamask-connect/evm/quickstart/dynamic.md @@ -9,7 +9,7 @@ keywords: [connect, MetaMask, Dynamic, SDK, dapp, Wallet SDK, dynamic xyz, embed :::info Heads up Looks like you've landed on a guide that still uses the MetaMask legacy SDK (`@metamask/sdk`). The MetaMask Connect integration for this library is on its way — once ready, it will be linked -from the sidebar navigation. In the meantime, this guide is still perfectly valid if you're using +from the sidebar navigation. In the meantime, this guide is still valid if you're using MetaMask SDK. ::: @@ -51,7 +51,7 @@ Use MetaMask SDK features directly within Dynamic SDK.
`degit` is a tool that enables cloning only the directory structure from a GitHub repository, without retrieving the entire repository. - + Alternatively, use `git clone` to download the entire repository. Clone the MetaMask SDK examples repository and navigate into the `partners/dynamic` directory: diff --git a/metamask-connect/evm/quickstart/rainbowkit.md b/metamask-connect/evm/quickstart/rainbowkit.md index 80ae044d236..fae12fd4e0b 100644 --- a/metamask-connect/evm/quickstart/rainbowkit.md +++ b/metamask-connect/evm/quickstart/rainbowkit.md @@ -9,7 +9,7 @@ keywords: [connect, MetaMask, JavaScript, RainbowKit, SDK, dapp, Wallet SDK, rai :::info Heads up Looks like you've landed on a guide that still uses the MetaMask legacy SDK (`@metamask/sdk`). The MetaMask Connect integration for this library is on its way — once ready, it will be linked -from the sidebar navigation. In the meantime, this guide is still perfectly valid if you're using +from the sidebar navigation. In the meantime, this guide is still valid if you're using MetaMask SDK. ::: diff --git a/metamask-connect/evm/quickstart/web3auth.md b/metamask-connect/evm/quickstart/web3auth.md index 5c0750032d7..8ebcf8b2538 100644 --- a/metamask-connect/evm/quickstart/web3auth.md +++ b/metamask-connect/evm/quickstart/web3auth.md @@ -9,7 +9,7 @@ keywords: [connect, MetaMask, Embedded Wallets, SDK, dapp, Wallet SDK, web3auth, :::info Heads up Looks like you've landed on a guide that still uses the MetaMask legacy SDK (`@metamask/sdk`). The MetaMask Connect integration for this library is on its way — once ready, it will be linked -from the sidebar navigation. In the meantime, this guide is still perfectly valid if you're using +from the sidebar navigation. In the meantime, this guide is still valid if you're using MetaMask SDK. ::: @@ -52,7 +52,7 @@ Use MetaMask SDK features directly within Embedded Wallets SDK.
`degit` is a tool that enables cloning only the directory structure from a GitHub repository, without retrieving the entire repository. - + Alternatively, use `git clone` to download the entire repository. Clone the MetaMask SDK examples repository and navigate into the `partners/web3auth` directory: diff --git a/metamask-connect/solana/quickstart/dynamic.md b/metamask-connect/solana/quickstart/dynamic.md index c42866d0f08..70c22ac334d 100644 --- a/metamask-connect/solana/quickstart/dynamic.md +++ b/metamask-connect/solana/quickstart/dynamic.md @@ -9,7 +9,7 @@ keywords: [connect, MetaMask, Dynamic, SDK, dapp, Wallet SDK, dynamic xyz, solan :::info Heads up Looks like you've landed on a guide that still uses the MetaMask legacy SDK (`@metamask/sdk`). The MetaMask Connect integration for this library is on its way — once ready, it will be linked -from the sidebar navigation. In the meantime, this guide is still perfectly valid if you're using +from the sidebar navigation. In the meantime, this guide is still valid if you're using MetaMask SDK. ::: diff --git a/package-lock.json b/package-lock.json index d37bf961149..df4ed2e82e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,10 +24,10 @@ "@lottiefiles/react-lottie-player": "^3.6.0", "@mdx-js/react": "^3.1.0", "@mermaid-js/layout-elk": "^0.1.9", + "@metamask/connect-evm": "^0.9.0", "@metamask/design-tokens": "^7.1.0", "@metamask/eth-sig-util": "^7.0.3", "@metamask/profile-sync-controller": "^16.0.0", - "@metamask/sdk": "^0.33.1", "@rjsf/core": "^5.24.12", "@rjsf/utils": "^5.24.13", "@rjsf/validator-ajv8": "^5.24.12", @@ -441,10 +441,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -497,13 +499,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -617,23 +619,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -756,7 +741,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -795,12 +782,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.4" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -2279,29 +2266,31 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -2329,13 +2318,13 @@ } }, "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -7210,6 +7199,27 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@metamask/analytics": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@metamask/analytics/-/analytics-0.4.0.tgz", + "integrity": "sha512-QKjVu8RsbjeSfXXhRLvOVdWJ0jUrVdXFwa4I1VyoI7LapWS6T0apTSjM8nLJKN1NADbpSYm7ctyuTyaHlG/0yA==", + "license": "MIT", + "dependencies": { + "openapi-fetch": "^0.13.5" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@metamask/api-specs": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@metamask/api-specs/-/api-specs-0.14.0.tgz", + "integrity": "sha512-pL3FADJcw/CA5Nsq6k4ePYxrNyscqVJh0XYXStvGPkw9yPdgIRAc+DuMuMMpaahYpKsmWWHpTAuvwVo9DuFXyg==", + "license": "Apache-2.0", + "engines": { + "node": "^18.20 || ^20.17 || >=22" + } + }, "node_modules/@metamask/approval-controller": { "version": "7.1.3", "license": "MIT", @@ -7224,18 +7234,6 @@ "node": "^18.18 || >=20" } }, - "node_modules/@metamask/approval-controller/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/approval-controller/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -7349,21 +7347,283 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@metamask/chain-agnostic-permission": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@metamask/chain-agnostic-permission/-/chain-agnostic-permission-1.4.0.tgz", + "integrity": "sha512-807Y6JxqeY3tckSRDse96RmHV6atDsSPLD/x9KIync8ccFjOwSZlv0n4NA5Bsi0znjOogU0jEe5hPNIDTFzFRg==", + "license": "MIT", + "dependencies": { + "@metamask/api-specs": "^0.14.0", + "@metamask/controller-utils": "^11.17.0", + "@metamask/permission-controller": "^12.2.0", + "@metamask/rpc-errors": "^7.0.2", + "@metamask/utils": "^11.9.0", + "lodash": "^4.17.21" + }, + "engines": { + "node": "^18.18 || >=20" + } + }, + "node_modules/@metamask/chain-agnostic-permission/node_modules/@metamask/approval-controller": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@metamask/approval-controller/-/approval-controller-9.0.0.tgz", + "integrity": "sha512-krm31+CpfTQolTcN2bwSrzLBWf334B0E0GS/VRndHbJMXidgXhc9zcdOzNeTg5onBOma6nqarJyV3ziRvQi1pg==", + "license": "MIT", + "dependencies": { + "@metamask/base-controller": "^9.0.0", + "@metamask/messenger": "^0.3.0", + "@metamask/rpc-errors": "^7.0.2", + "@metamask/utils": "^11.9.0", + "nanoid": "^3.3.8" + }, + "engines": { + "node": "^18.18 || >=20" + } + }, + "node_modules/@metamask/chain-agnostic-permission/node_modules/@metamask/base-controller": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@metamask/base-controller/-/base-controller-9.0.0.tgz", + "integrity": "sha512-uwGBb3bIFvfWPEBrRk+avV05eRLZKG0ouskKCiwfdRlFse4njpGGLLD0pO42iOLF7N3yUQ28+lO8reIrXwFP8A==", + "license": "MIT", + "dependencies": { + "@metamask/messenger": "^0.3.0", + "@metamask/utils": "^11.8.1", + "immer": "^9.0.6" + }, + "engines": { + "node": "^18.18 || >=20" + } + }, + "node_modules/@metamask/chain-agnostic-permission/node_modules/@metamask/permission-controller": { + "version": "12.2.1", + "resolved": "https://registry.npmjs.org/@metamask/permission-controller/-/permission-controller-12.2.1.tgz", + "integrity": "sha512-i2nPMGDm5DNs6dwl9YReVn1Z0igNmgQcHIrM7cVyKwGCOZducfT4yGZsc1UxY/CjxSIeZASU4/SqfgTs8pBCvw==", + "license": "MIT", + "dependencies": { + "@metamask/approval-controller": "^9.0.0", + "@metamask/base-controller": "^9.0.0", + "@metamask/controller-utils": "^11.19.0", + "@metamask/json-rpc-engine": "^10.2.3", + "@metamask/messenger": "^0.3.0", + "@metamask/rpc-errors": "^7.0.2", + "@metamask/utils": "^11.9.0", + "@types/deep-freeze-strict": "^1.1.0", + "deep-freeze-strict": "^1.1.1", + "immer": "^9.0.6", + "nanoid": "^3.3.8" + }, + "engines": { + "node": "^18.18 || >=20" + } + }, + "node_modules/@metamask/chain-agnostic-permission/node_modules/@metamask/utils": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.10.0.tgz", + "integrity": "sha512-+bWmTOANx1MbBW6RFM8Se4ZoigFYGXiuIrkhjj4XnG5Aez8uWaTSZ76yn9srKKClv+PoEVoAuVtcUOogFEMUNA==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "@types/lodash": "^4.17.20", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": "^18.18 || ^20.14 || >=22" + } + }, + "node_modules/@metamask/chain-agnostic-permission/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@metamask/connect-evm": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@metamask/connect-evm/-/connect-evm-0.9.0.tgz", + "integrity": "sha512-Ts2WZcCRYTjS8T2HMQiSOwtuqJABApV5DEB6PadwRi94msK95tQtaMOdvq8wo8uW/MrqGyYJWp4li54Mqn/i5g==", + "license": "MIT", + "dependencies": { + "@metamask/analytics": "^0.4.0", + "@metamask/chain-agnostic-permission": "^1.2.2", + "@metamask/connect-multichain": "^0.11.0", + "@metamask/utils": "^11.8.1" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@metamask/connect-evm/node_modules/@metamask/connect-multichain": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@metamask/connect-multichain/-/connect-multichain-0.11.0.tgz", + "integrity": "sha512-08l/B/Mc27pcYN7jq8+yraliVZdqftkLdv/UomB9lvvQx9Z6+l8igVWVMWziHcyBWa+v7+ExJaWtF+kTk3Y5yA==", + "license": "MIT", + "dependencies": { + "@metamask/analytics": "^0.4.0", + "@metamask/mobile-wallet-protocol-core": "^0.4.0", + "@metamask/mobile-wallet-protocol-dapp-client": "^0.3.0", + "@metamask/multichain-api-client": "^0.10.1", + "@metamask/multichain-ui": "^0.4.0", + "@metamask/onboarding": "^1.0.1", + "@metamask/rpc-errors": "^7.0.3", + "@metamask/utils": "^11.8.1", + "@paulmillr/qr": "^0.2.1", + "bowser": "^2.11.0", + "buffer": "^6.0.3", + "cross-fetch": "^4.1.0", + "eciesjs": "0.4.17", + "eventemitter3": "^5.0.1", + "pako": "^2.1.0", + "uuid": "^11.1.0", + "ws": "^8.18.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "^1.23" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@metamask/connect-evm/node_modules/@metamask/utils": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.11.0.tgz", + "integrity": "sha512-0nF2CWjWQr/m0Y2t2lJnBTU1/CZPPTvKvcESLplyWe/tyeb8zFOi/FeneDmaFnML6LYRIGZU6f+xR0jKAIUZfw==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "@types/lodash": "^4.17.20", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": "^18.18 || ^20.14 || >=22" + } + }, + "node_modules/@metamask/connect-evm/node_modules/@metamask/utils/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@metamask/connect-evm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@metamask/connect-evm/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/@metamask/connect-evm/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/@metamask/connect-evm/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/@metamask/connect-evm/node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@metamask/controller-utils": { - "version": "11.9.0", + "version": "11.19.0", + "resolved": "https://registry.npmjs.org/@metamask/controller-utils/-/controller-utils-11.19.0.tgz", + "integrity": "sha512-obPzdJhxCHcHf3oOq5vDh6w9GochsjIa0FLoTNY3BhGNxJOSmwL8OkQGCp+Hf1nZIX/VBeiiPk3JL1PUDzqCsg==", "license": "MIT", "dependencies": { - "@ethereumjs/util": "^9.1.0", "@metamask/eth-query": "^4.0.0", "@metamask/ethjs-unit": "^0.3.0", - "@metamask/utils": "^11.2.0", + "@metamask/utils": "^11.9.0", "@spruceid/siwe-parser": "2.1.0", "@types/bn.js": "^5.1.5", "bignumber.js": "^9.1.2", "bn.js": "^5.2.1", "cockatiel": "^3.1.2", "eth-ens-namehash": "^2.0.8", - "fast-deep-equal": "^3.1.3" + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21" }, "engines": { "node": "^18.18 || >=20" @@ -7372,29 +7632,10 @@ "@babel/runtime": "^7.0.0" } }, - "node_modules/@metamask/controller-utils/node_modules/@ethereumjs/rlp": { - "version": "5.0.2", - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp.cjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@metamask/controller-utils/node_modules/@ethereumjs/util": { - "version": "9.1.0", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^5.0.2", - "ethereum-cryptography": "^2.2.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@metamask/controller-utils/node_modules/@metamask/utils": { - "version": "11.4.0", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.10.0.tgz", + "integrity": "sha512-+bWmTOANx1MbBW6RFM8Se4ZoigFYGXiuIrkhjj4XnG5Aez8uWaTSZ76yn9srKKClv+PoEVoAuVtcUOogFEMUNA==", "license": "ISC", "dependencies": { "@ethereumjs/tx": "^4.2.0", @@ -7402,7 +7643,9 @@ "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", + "@types/lodash": "^4.17.20", "debug": "^4.3.4", + "lodash": "^4.17.21", "pony-cause": "^2.1.10", "semver": "^7.5.4", "uuid": "^9.0.1" @@ -7413,6 +7656,8 @@ }, "node_modules/@metamask/controller-utils/node_modules/uuid": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -7612,18 +7857,6 @@ "node": "^18.18 || ^20.14 || >=22" } }, - "node_modules/@metamask/eth-json-rpc-infura/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/eth-json-rpc-infura/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -7706,18 +7939,6 @@ "node": "^18.18 || ^20.14 || >=22" } }, - "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -7764,18 +7985,6 @@ "node": "^18.18 || >=20" } }, - "node_modules/@metamask/eth-json-rpc-provider/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/eth-json-rpc-provider/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -8145,30 +8354,26 @@ } }, "node_modules/@metamask/json-rpc-engine": { - "version": "10.0.3", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-10.2.3.tgz", + "integrity": "sha512-NkqDoU4MJ8lHaEAf8rYfzesCNcldHPQeMJRFFVr09zMEgsZyL+oWrM4gGO2QAfsoLVp8U0jANxyHp6nYxJ6L8w==", "license": "ISC", "dependencies": { "@metamask/rpc-errors": "^7.0.2", "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^11.1.0" + "@metamask/utils": "^11.9.0", + "@types/deep-freeze-strict": "^1.1.0", + "deep-freeze-strict": "^1.1.1", + "klona": "^2.0.6" }, "engines": { "node": "^18.18 || >=20" } }, - "node_modules/@metamask/json-rpc-engine/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/json-rpc-engine/node_modules/@metamask/utils": { - "version": "11.4.0", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.10.0.tgz", + "integrity": "sha512-+bWmTOANx1MbBW6RFM8Se4ZoigFYGXiuIrkhjj4XnG5Aez8uWaTSZ76yn9srKKClv+PoEVoAuVtcUOogFEMUNA==", "license": "ISC", "dependencies": { "@ethereumjs/tx": "^4.2.0", @@ -8176,7 +8381,9 @@ "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", + "@types/lodash": "^4.17.20", "debug": "^4.3.4", + "lodash": "^4.17.21", "pony-cause": "^2.1.10", "semver": "^7.5.4", "uuid": "^9.0.1" @@ -8523,18 +8730,6 @@ "webextension-polyfill": "^0.10.0 || ^0.11.0 || ^0.12.0" } }, - "node_modules/@metamask/keyring-internal-snap-client/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/keyring-internal-snap-client/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -8691,6 +8886,98 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@metamask/messenger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@metamask/messenger/-/messenger-0.3.0.tgz", + "integrity": "sha512-Wa9ctLwtD2B3ut9bJW0OLhoM4X2J7y7kuiWZbl+s8cuUBPmTS5IoUUUpvCDWOkucUsJ+6ZiqWMl2d5oSqLN28g==", + "license": "MIT", + "engines": { + "node": "^18.18 || >=20" + } + }, + "node_modules/@metamask/mobile-wallet-protocol-core": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@metamask/mobile-wallet-protocol-core/-/mobile-wallet-protocol-core-0.4.0.tgz", + "integrity": "sha512-rB1wMogvSUsFaxyH/eVUCczIkTxVaPPETlD/wgm+gw7EbWP0LlZPY7Bh+DICSfUCJ0zqnoFuwr77WNJvZ6ZiWw==", + "license": "MIT", + "dependencies": { + "async-mutex": "^0.5.0", + "centrifuge": "^5.3.5", + "eventemitter3": "^5.0.1", + "uuid": "^11.1.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@metamask/mobile-wallet-protocol-core/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/@metamask/mobile-wallet-protocol-core/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/@metamask/mobile-wallet-protocol-dapp-client": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@metamask/mobile-wallet-protocol-dapp-client/-/mobile-wallet-protocol-dapp-client-0.3.0.tgz", + "integrity": "sha512-rXStrvIa57a8OaeM+3HeR6Z9ETHOvmQi/9s6CLplDwH2hn2MWjI6WW3EUrxq2KGmGuhbO5Oo21ANnD23QKfduw==", + "license": "MIT", + "dependencies": { + "@metamask/mobile-wallet-protocol-core": "^0.4.0", + "@metamask/utils": "^9.1.0", + "uuid": "^11.1.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@metamask/mobile-wallet-protocol-dapp-client/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/@metamask/multichain-api-client": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@metamask/multichain-api-client/-/multichain-api-client-0.10.1.tgz", + "integrity": "sha512-LsqO2SiDcTgOuXyVYEB0zgBaVNhryhP2tYI3L7tLa7PoeDqMkNIreFhDeu8jM5tPWkCimQvMwCkG3DF4P5dD3A==", + "license": "ISC", + "engines": { + "node": "^18.20 || ^20.17 || >=22" + } + }, + "node_modules/@metamask/multichain-ui": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@metamask/multichain-ui/-/multichain-ui-0.4.0.tgz", + "integrity": "sha512-CaUyPssiJ5bXP5YXBLadAbRwJ+c//cpzYCFS8P8Nq53Qa4lUVhViAzqvM4667SS3YClGNjNY0tWGyGbXkCmWHg==", + "license": "MIT", + "dependencies": { + "@paulmillr/qr": "^0.2.1", + "qr-code-styling": "^1.9.2" + }, + "engines": { + "node": ">=20.19.0" + } + }, "node_modules/@metamask/network-controller": { "version": "23.5.1", "license": "MIT", @@ -8720,18 +9007,6 @@ "node": "^18.18 || >=20" } }, - "node_modules/@metamask/network-controller/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/network-controller/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -8801,6 +9076,8 @@ }, "node_modules/@metamask/onboarding": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@metamask/onboarding/-/onboarding-1.0.1.tgz", + "integrity": "sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==", "license": "MIT", "dependencies": { "bowser": "^2.9.0" @@ -8827,17 +9104,6 @@ "@metamask/approval-controller": "^7.0.0" } }, - "node_modules/@metamask/permission-controller/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/permission-controller/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -8976,17 +9242,6 @@ "webextension-polyfill": "^0.10.0 || ^0.11.0 || ^0.12.0" } }, - "node_modules/@metamask/providers/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/providers/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -9017,197 +9272,44 @@ } }, "node_modules/@metamask/rpc-errors": { - "version": "6.3.1", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-7.0.3.tgz", + "integrity": "sha512-nrEaeBawm8yFU7hetJKok/CUs0tQsWtTqp3OLbFhPUMXYqU7uI5LAV5vi9o7rTjFkUyof7Nzbw5bea5+1ou+dg==", "license": "MIT", "dependencies": { - "@metamask/utils": "^9.0.0", + "@metamask/utils": "^11.4.2", "fast-safe-stringify": "^2.0.6" }, "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@metamask/safe-event-emitter": { - "version": "3.1.1", - "license": "ISC", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@metamask/scure-bip39": { - "version": "2.1.1", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.3" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@metamask/scure-bip39/node_modules/@noble/hashes": { - "version": "1.3.3", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@metamask/sdk": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/@metamask/sdk/-/sdk-0.33.1.tgz", - "integrity": "sha512-1mcOQVGr9rSrVcbKPNVzbZ8eCl1K0FATsYH3WJ/MH4WcZDWGECWrXJPNMZoEAkLxWiMe8jOQBumg2pmcDa9zpQ==", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@metamask/onboarding": "^1.0.1", - "@metamask/providers": "16.1.0", - "@metamask/sdk-analytics": "0.0.5", - "@metamask/sdk-communication-layer": "0.33.1", - "@metamask/sdk-install-modal-web": "0.32.1", - "@paulmillr/qr": "^0.2.1", - "bowser": "^2.9.0", - "cross-fetch": "^4.0.0", - "debug": "4.3.4", - "eciesjs": "^0.4.11", - "eth-rpc-errors": "^4.0.3", - "eventemitter2": "^6.4.9", - "obj-multiplex": "^1.0.0", - "pump": "^3.0.0", - "readable-stream": "^3.6.2", - "socket.io-client": "^4.5.1", - "tslib": "^2.6.0", - "util": "^0.12.4", - "uuid": "^8.3.2" - } - }, - "node_modules/@metamask/sdk-analytics": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@metamask/sdk-analytics/-/sdk-analytics-0.0.5.tgz", - "integrity": "sha512-fDah+keS1RjSUlC8GmYXvx6Y26s3Ax1U9hGpWb6GSY5SAdmTSIqp2CvYy6yW0WgLhnYhW+6xERuD0eVqV63QIQ==", - "license": "MIT", - "dependencies": { - "openapi-fetch": "^0.13.5" - } - }, - "node_modules/@metamask/sdk-communication-layer": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.33.1.tgz", - "integrity": "sha512-0bI9hkysxcfbZ/lk0T2+aKVo1j0ynQVTuB3sJ5ssPWlz+Z3VwveCkP1O7EVu1tsVVCb0YV5WxK9zmURu2FIiaA==", - "dependencies": { - "@metamask/sdk-analytics": "0.0.5", - "bufferutil": "^4.0.8", - "date-fns": "^2.29.3", - "debug": "4.3.4", - "utf-8-validate": "^5.0.2", - "uuid": "^8.3.2" - }, - "peerDependencies": { - "cross-fetch": "^4.0.0", - "eciesjs": "*", - "eventemitter2": "^6.4.9", - "readable-stream": "^3.6.2", - "socket.io-client": "^4.5.1" - } - }, - "node_modules/@metamask/sdk-communication-layer/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@metamask/sdk-communication-layer/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@metamask/sdk-install-modal-web": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.32.1.tgz", - "integrity": "sha512-MGmAo6qSjf1tuYXhCu2EZLftq+DSt5Z7fsIKr2P+lDgdTPWgLfZB1tJKzNcwKKOdf6q9Qmmxn7lJuI/gq5LrKw==", - "dependencies": { - "@paulmillr/qr": "^0.2.1" - } - }, - "node_modules/@metamask/sdk/node_modules/@metamask/json-rpc-engine": { - "version": "8.0.2", - "license": "ISC", - "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@metamask/sdk/node_modules/@metamask/json-rpc-middleware-stream": { - "version": "7.0.2", - "license": "ISC", - "dependencies": { - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0", - "readable-stream": "^3.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@metamask/sdk/node_modules/@metamask/providers": { - "version": "16.1.0", - "license": "MIT", - "dependencies": { - "@metamask/json-rpc-engine": "^8.0.1", - "@metamask/json-rpc-middleware-stream": "^7.0.1", - "@metamask/object-multiplex": "^2.0.0", - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.1.1", - "@metamask/utils": "^8.3.0", - "detect-browser": "^5.2.0", - "extension-port-stream": "^3.0.0", - "fast-deep-equal": "^3.1.3", - "is-stream": "^2.0.0", - "readable-stream": "^3.6.2", - "webextension-polyfill": "^0.10.0" - }, - "engines": { - "node": "^18.18 || >=20" + "node": "^18.20 || ^20.17 || >=22" } }, - "node_modules/@metamask/sdk/node_modules/@metamask/utils": { - "version": "8.5.0", + "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.10.0.tgz", + "integrity": "sha512-+bWmTOANx1MbBW6RFM8Se4ZoigFYGXiuIrkhjj4XnG5Aez8uWaTSZ76yn9srKKClv+PoEVoAuVtcUOogFEMUNA==", "license": "ISC", "dependencies": { "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.0.0", + "@metamask/superstruct": "^3.1.0", "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", + "@types/lodash": "^4.17.20", "debug": "^4.3.4", + "lodash": "^4.17.21", "pony-cause": "^2.1.10", "semver": "^7.5.4", "uuid": "^9.0.1" }, "engines": { - "node": ">=16.0.0" + "node": "^18.18 || ^20.14 || >=22" } }, - "node_modules/@metamask/sdk/node_modules/@metamask/utils/node_modules/uuid": { + "node_modules/@metamask/rpc-errors/node_modules/uuid": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -9217,43 +9319,33 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/@metamask/sdk/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, + "node_modules/@metamask/safe-event-emitter": { + "version": "3.1.1", + "license": "ISC", "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12.0.0" } }, - "node_modules/@metamask/sdk/node_modules/extension-port-stream": { - "version": "3.0.0", - "license": "ISC", + "node_modules/@metamask/scure-bip39": { + "version": "2.1.1", + "license": "MIT", "dependencies": { - "readable-stream": "^3.6.2 || ^4.4.2", - "webextension-polyfill": ">=0.10.0 <1.0" + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.3" }, "engines": { - "node": ">=12.0.0" + "node": "^16.20 || ^18.16 || >=20" } }, - "node_modules/@metamask/sdk/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@metamask/sdk/node_modules/webextension-polyfill": { - "version": "0.10.0", - "license": "MPL-2.0" + "node_modules/@metamask/scure-bip39/node_modules/@noble/hashes": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@metamask/slip44": { "version": "4.2.0", @@ -9308,18 +9400,6 @@ } } }, - "node_modules/@metamask/snaps-controllers/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/snaps-controllers/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -9412,18 +9492,6 @@ "node": "^18.16 || >=20" } }, - "node_modules/@metamask/snaps-rpc-methods/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/snaps-rpc-methods/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -9469,17 +9537,6 @@ "node": "^18.16 || >=20" } }, - "node_modules/@metamask/snaps-sdk/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/snaps-sdk/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -9542,17 +9599,6 @@ "node": "^18.16 || >=20" } }, - "node_modules/@metamask/snaps-utils/node_modules/@metamask/rpc-errors": { - "version": "7.0.2", - "license": "MIT", - "dependencies": { - "@metamask/utils": "^11.0.1", - "fast-safe-stringify": "^2.0.6" - }, - "engines": { - "node": "^18.20 || ^20.17 || >=22" - } - }, "node_modules/@metamask/snaps-utils/node_modules/@metamask/utils": { "version": "11.4.0", "license": "ISC", @@ -10104,6 +10150,70 @@ "version": "1.0.0-next.28", "license": "MIT" }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, "node_modules/@react-native/assets-registry": { "version": "0.81.4", "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.4.tgz", @@ -10167,24 +10277,6 @@ } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@react-native/debugger-frontend": { "version": "0.81.4", "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.4.tgz", @@ -10218,24 +10310,6 @@ "node": ">= 20.19.4" } }, - "node_modules/@react-native/dev-middleware/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@react-native/dev-middleware/node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -10676,12 +10750,6 @@ "micromark-util-symbol": "^1.0.1" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "license": "MIT" - }, "node_modules/@spruceid/siwe-parser": { "version": "2.1.0", "license": "Apache-2.0", @@ -11408,6 +11476,12 @@ "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.24", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", + "license": "MIT" + }, "node_modules/@types/mdast": { "version": "4.0.4", "license": "MIT", @@ -12537,7 +12611,6 @@ "node_modules/async-mutex": { "version": "0.5.0", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.4.0" } @@ -13096,7 +13169,9 @@ "license": "ISC" }, "node_modules/bowser": { - "version": "2.11.0", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "license": "MIT" }, "node_modules/boxen": { @@ -13368,6 +13443,8 @@ "version": "4.0.8", "hasInstallScript": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -13652,6 +13729,16 @@ "react": ">=17.0.0" } }, + "node_modules/centrifuge": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/centrifuge/-/centrifuge-5.5.3.tgz", + "integrity": "sha512-LPkWnsAxu7JaE5S738XiREzJIko3Pf/qnWb3kd0q/OR0OJONUbSdnZ5pKsEI2yFi/odQ89SYsHPhLuEeZFhp/g==", + "license": "MIT", + "dependencies": { + "events": "^3.3.0", + "protobufjs": "^7.2.5" + } + }, "node_modules/chalk": { "version": "4.1.2", "license": "MIT", @@ -16210,22 +16297,6 @@ "inherits": "~2.0.3" } }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, "node_modules/dayjs": { "version": "1.11.20", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", @@ -16237,7 +16308,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.7", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -16769,14 +16842,14 @@ } }, "node_modules/eciesjs": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.15.tgz", - "integrity": "sha512-r6kEJXDKecVOCj2nLMuXK/FCPeurW33+3JRpfXVbjLja3XUYFfD9I/JBreH6sUyzcm3G/YQboBjMla6poKeSdA==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.17.tgz", + "integrity": "sha512-TOOURki4G7sD1wDCjj7NfLaXZZ49dFOeEb5y39IXpb8p0hRzVvfvzZHOi5JcT+PpyAbi/Y+lxPb8eTag2WYH8w==", "license": "MIT", "dependencies": { - "@ecies/ciphers": "^0.2.3", + "@ecies/ciphers": "^0.2.5", "@noble/ciphers": "^1.3.0", - "@noble/curves": "^1.9.1", + "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0" }, "engines": { @@ -16786,13 +16859,13 @@ } }, "node_modules/eciesjs/node_modules/@ecies/ciphers": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.4.tgz", - "integrity": "sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.6.tgz", + "integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==", "license": "MIT", "engines": { "bun": ">=1", - "deno": ">=2", + "deno": ">=2.7.10", "node": ">=16" }, "peerDependencies": { @@ -16913,28 +16986,6 @@ "once": "^1.4.0" } }, - "node_modules/engine.io-client": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", - "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", - "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" - } - }, - "node_modules/engine.io-parser": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", - "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/enhanced-resolve": { "version": "5.17.1", "license": "MIT", @@ -17681,13 +17732,6 @@ "js-sha3": "^0.5.7" } }, - "node_modules/eth-rpc-errors": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "fast-safe-stringify": "^2.0.6" - } - }, "node_modules/ethereum-cryptography": { "version": "2.2.1", "license": "MIT", @@ -17861,12 +17905,6 @@ "node": ">=6" } }, - "node_modules/eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "license": "MIT" - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -21853,6 +21891,12 @@ "url": "https://tidelift.com/funding/github/npm/loglevel" } }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, "node_modules/longest-streak": { "version": "3.1.0", "license": "MIT", @@ -22958,24 +23002,6 @@ "node": ">=20.19.4" } }, - "node_modules/metro-file-map/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/metro-minify-terser": { "version": "0.83.2", "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.2.tgz", @@ -23130,24 +23156,6 @@ "license": "MIT", "peer": true }, - "node_modules/metro/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/metro/node_modules/hermes-estree": { "version": "0.32.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", @@ -25391,6 +25399,7 @@ "node_modules/node-gyp-build": { "version": "4.8.2", "license": "MIT", + "peer": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -25661,43 +25670,6 @@ "node": ">=20.19.4" } }, - "node_modules/obj-multiplex": { - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "end-of-stream": "^1.4.0", - "once": "^1.4.0", - "readable-stream": "^2.3.3" - } - }, - "node_modules/obj-multiplex/node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/obj-multiplex/node_modules/readable-stream": { - "version": "2.3.8", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/obj-multiplex/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/obj-multiplex/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "license": "MIT", @@ -28757,6 +28729,30 @@ "version": "1.2.4", "license": "ISC" }, + "node_modules/protobufjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/protoduck": { "version": "4.0.0", "license": "CC0-1.0", @@ -28811,14 +28807,6 @@ "version": "4.12.0", "license": "MIT" }, - "node_modules/pump": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/pumpify": { "version": "1.5.1", "license": "MIT", @@ -28856,6 +28844,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/qr-code-styling": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/qr-code-styling/-/qr-code-styling-1.9.2.tgz", + "integrity": "sha512-RgJaZJ1/RrXJ6N0j7a+pdw3zMBmzZU4VN2dtAZf8ZggCfRB5stEQ3IoDNGaNhYY3nnZKYlYSLl5YkfWN5dPutg==", + "license": "MIT", + "dependencies": { + "qrcode-generator": "^1.4.4" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/qrcode-generator": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.5.2.tgz", + "integrity": "sha512-pItrW0Z9HnDBnFmgiNrY1uxRdri32Uh9EjNYLPVC2zZ3ZRIIEqBoDgm4DkvDwNNDHTK7FNkmr8zAa77BYc9xNw==", + "license": "MIT" + }, "node_modules/qs": { "version": "6.13.0", "license": "BSD-3-Clause", @@ -31771,51 +31777,6 @@ "tslib": "^2.0.3" } }, - "node_modules/socket.io-client": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", - "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", - "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.6.1", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", - "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", - "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.4.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -34119,6 +34080,8 @@ "version": "5.0.10", "hasInstallScript": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -35126,14 +35089,6 @@ "xml-js": "bin/cli.js" } }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", - "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/xtend": { "version": "4.0.2", "license": "MIT", diff --git a/package.json b/package.json index 92a3ae28908..4b43296c3cb 100644 --- a/package.json +++ b/package.json @@ -43,10 +43,10 @@ "@lottiefiles/react-lottie-player": "^3.6.0", "@mdx-js/react": "^3.1.0", "@mermaid-js/layout-elk": "^0.1.9", + "@metamask/connect-evm": "^0.9.0", "@metamask/design-tokens": "^7.1.0", "@metamask/eth-sig-util": "^7.0.3", "@metamask/profile-sync-controller": "^16.0.0", - "@metamask/sdk": "^0.33.1", "@rjsf/core": "^5.24.12", "@rjsf/utils": "^5.24.13", "@rjsf/validator-ajv8": "^5.24.12", @@ -129,4 +129,4 @@ "engines": { "node": "20.x" } -} +} \ No newline at end of file diff --git a/src/components/AuthLogin/AuthModal.tsx b/src/components/AuthLogin/AuthModal.tsx index 3168fe9c4b9..7c27531df70 100644 --- a/src/components/AuthLogin/AuthModal.tsx +++ b/src/components/AuthLogin/AuthModal.tsx @@ -126,7 +126,7 @@ const AuthModal = ({ const { siteConfig } = useDocusaurusContext() const { DASHBOARD_URL, VERCEL_ENV } = siteConfig?.customFields || {} const { - sdk, + client, setNeedsMfa, setWalletLinked, setWalletAuthUrl, @@ -140,23 +140,18 @@ const AuthModal = ({ const { pathname } = location const login = async () => { + if (!client) return setStep(AUTH_LOGIN_STEP.CONNECTING) try { - if (!sdk.isExtensionActive()) { - setOpen(false) - } - - // Try to connect wallet first - const accounts = await sdk.connect() + const { accounts } = await client.connect({ chainIds: ['0xaa36a7', '0xe705'] }) if (accounts && accounts.length > 0) { setMetaMaskAccount(accounts[0]) fetchLineaEns(accounts[0]) - const provider = sdk.getProvider() - setMetaMaskProvider(provider) + setMetaMaskProvider(client.getProvider()) } - const customProvider = sdk.getProvider() + const customProvider = client.getProvider() // Call Profile SDK API to retrieve Hydra Access Token & Wallet userProfile // Hydra Access Token will be used to fetch Infura API const { accessToken, userProfile } = await authenticateAndAuthorize( @@ -251,7 +246,9 @@ const AuthModal = ({ ...REQUEST_PARAMS('GET', { Authorization: `Bearer ${token}` }), }) if (!projectsResponse.ok) { - throw new Error(`Failed to fetch projects: ${projectsResponse.status} ${projectsResponse.statusText}`) + throw new Error( + `Failed to fetch projects: ${projectsResponse.status} ${projectsResponse.statusText}` + ) } const { result: { projects }, @@ -263,7 +260,9 @@ const AuthModal = ({ ...REQUEST_PARAMS('GET', { Authorization: `Bearer ${token}` }), }) if (!uksUserRawResp.ok) { - throw new Error(`Failed to fetch user info: ${uksUserRawResp.status} ${uksUserRawResp.statusText}`) + throw new Error( + `Failed to fetch user info: ${uksUserRawResp.status} ${uksUserRawResp.statusText}` + ) } const { result: { diff --git a/src/components/Faucet/Hero.tsx b/src/components/Faucet/Hero.tsx index c2223038513..3784b4285b8 100644 --- a/src/components/Faucet/Hero.tsx +++ b/src/components/Faucet/Hero.tsx @@ -32,16 +32,12 @@ export default function Hero({ }: IHero) { const { metaMaskAccount, - sdk, metaMaskWalletIdConnectHandler, walletLinked, projects, walletAuthUrl, needsMfa, } = useContext(MetamaskProviderContext) - const isMobile = sdk.platformManager?.isMobile ?? false - const isExtensionActive = sdk.isExtensionActive() - const showInstallButton = !isExtensionActive && !isMobile const [isWalletLinking, setIsWalletLinking] = useState(false) const { colorMode } = useColorMode() @@ -82,22 +78,20 @@ export default function Hero({ - {showInstallButton - ? 'Install MetaMask for your browser to get started and request ETH.' - : !Object.keys(projects).length - ? needsMfa - ? 'Your Infura Account requires 2-Factor Authentication' - : walletLinked === undefined - ? 'Connect your MetaMask wallet to get started and request ETH.' - : walletLinked === WALLET_LINK_TYPE.NO - ? 'Link your Developer Dashboard account to get started and request ETH.' - : 'Select your Developer Dashboard account to get started and request ETH.' - : !isMaintenance - ? 'Enter your MetaMask wallet address and request ETH.' - : 'The faucet is at full capacity due to high demand. Try checking back later.'} + {!Object.keys(projects).length + ? needsMfa + ? 'Your Infura Account requires 2-Factor Authentication' + : walletLinked === undefined + ? 'Connect your MetaMask wallet to get started and request ETH.' + : walletLinked === WALLET_LINK_TYPE.NO + ? 'Link your Developer Dashboard account to get started and request ETH.' + : 'Select your Developer Dashboard account to get started and request ETH.' + : !isMaintenance + ? 'Enter your MetaMask wallet address and request ETH.' + : 'The faucet is at full capacity due to high demand. Try checking back later.'}
- {!!Object.keys(projects).length && !showInstallButton && !isMaintenance && ( + {!!Object.keys(projects).length && !isMaintenance && (
)}
- {showInstallButton ? ( -
)} - + {errors.length > 0 && ( <> diff --git a/src/globals.d.ts b/src/globals.d.ts index 7cec3a6199e..1a4769a9745 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -3,3 +3,15 @@ declare module '*.svg' { const content: FC> export default content } + +// The @metamask/connect-evm package exports `createEVMClient` at runtime +// but its type declarations name it `createMetamaskConnectEVM`. +declare module '@metamask/connect-evm' { + export { MetamaskConnectEVM, EIP1193Provider } from '@metamask/connect-evm' + export function createEVMClient(options: { + dapp: { name: string; url: string; iconUrl?: string } + api?: { supportedNetworks?: Record } + eventHandlers?: Record void> + debug?: boolean + }): Promise +} diff --git a/src/lib/siwsrp/auth.ts b/src/lib/siwsrp/auth.ts index 8715f77e530..23eb4be8e2a 100644 --- a/src/lib/siwsrp/auth.ts +++ b/src/lib/siwsrp/auth.ts @@ -1,5 +1,4 @@ import { SDK } from '@metamask/profile-sync-controller' -import { SDKProvider } from '@metamask/sdk' import jwt from 'jsonwebtoken' type HydraEnv = { @@ -66,7 +65,10 @@ const auth = (env: string) => } ) -export const authenticateAndAuthorize = async (env: string, customProvider: SDKProvider) => { +export const authenticateAndAuthorize = async ( + env: string, + customProvider: { request: (args: { method: string; params?: unknown[] }) => Promise } +) => { let accessToken: string, userProfile: SDK.UserProfile try { const authInstance = auth(env) diff --git a/src/theme/Root.tsx b/src/theme/Root.tsx index 8280a32d379..338c0385ed9 100644 --- a/src/theme/Root.tsx +++ b/src/theme/Root.tsx @@ -1,8 +1,8 @@ -import React, { ReactElement, createContext, useEffect, useState, useCallback } from 'react' +import React, { ReactElement, createContext, useEffect, useState, useCallback, useRef } from 'react' import { Provider as AlertProvider } from 'react-alert' import useDocusaurusContext from '@docusaurus/useDocusaurusContext' import { AlertTemplate, options } from '@site/src/components/Alert' -import { MetaMaskSDK, SDKProvider } from '@metamask/sdk' +import { createEVMClient, MetamaskConnectEVM, EIP1193Provider } from '@metamask/connect-evm' import { REF_ALLOW_LOGIN_PATH, REQUEST_PARAMS } from '@site/src/lib/constants' import { clearStorage, @@ -18,6 +18,7 @@ import AuthModal, { AUTH_LOGIN_STEP, WALLET_LINK_TYPE, } from '@site/src/components/AuthLogin/AuthModal' +import { getInfuraRpcUrls } from '@metamask/connect-evm' interface Project { id: string @@ -43,10 +44,11 @@ interface IMetamaskProviderContext { metaMaskAccount: string metaMaskAccountEns: string setMetaMaskAccount: (arg: string[] | string) => void - metaMaskProvider: SDKProvider - setMetaMaskProvider: (arg: SDKProvider) => void + metaMaskProvider: EIP1193Provider + setMetaMaskProvider: (arg: EIP1193Provider) => void uksTier: string - sdk: MetaMaskSDK + client: MetamaskConnectEVM | null + clientError: string | null setNeedsMfa: (arg: boolean) => void needsMfa: boolean setWalletLinked: (arg: WALLET_LINK_TYPE) => void @@ -73,7 +75,8 @@ export const MetamaskProviderContext = createContext({ uksTier: undefined, metaMaskProvider: undefined, setMetaMaskProvider: () => {}, - sdk: undefined, + client: null, + clientError: null, setNeedsMfa: () => {}, needsMfa: false, setWalletLinked: () => {}, @@ -87,29 +90,20 @@ export const MetamaskProviderContext = createContext({ setUserEncPublicKey: () => {}, }) -const sdk = new MetaMaskSDK({ - dappMetadata: { - name: 'Reference pages', - url: 'https://docs.metamask.io/', - }, - preferDesktop: true, - extensionOnly: true, - checkInstallationImmediately: false, - logging: { - sdk: false, - }, -}) - export const LoginProvider = ({ children }) => { const [projects, setProjects] = useState({}) const [userId, setUserId] = useState('') const [token, setToken] = useState(undefined) const [openAuthModal, setOpenAuthModal] = useState(false) - const [metaMaskProvider, setMetaMaskProvider] = useState(undefined) + const [metaMaskProvider, setMetaMaskProvider] = useState(undefined) const [metaMaskAccount, setMetaMaskAccount] = useState(undefined) const [metaMaskAccountEns, setMetaMaskAccountEns] = useState(undefined) const [uksTier, setUksTier] = useState(undefined) - const [isInitialized, setIsInitialized] = useState(false) + const [client, setClient] = useState(null) + const [clientError, setClientError] = useState(null) + const clientInitialized = useRef(false) + const MAX_INIT_RETRIES = 3 + const [initRetry, setInitRetry] = useState(0) const [step, setStep] = useState(AUTH_LOGIN_STEP.CONNECTING) const [walletLinked, setWalletLinked] = useState(undefined) const [needsMfa, setNeedsMfa] = useState(false) @@ -117,11 +111,53 @@ export const LoginProvider = ({ children }) => { const [userAPIKey, setUserAPIKey] = useState('') const [userEncPublicKey, setUserEncPublicKey] = useState(undefined) const { siteConfig } = useDocusaurusContext() - const { DASHBOARD_URL, LINEA_ENS_URL } = siteConfig?.customFields || {} + const { DASHBOARD_URL, LINEA_ENS_URL, INFURA_API_KEY } = siteConfig?.customFields || {} - if (sdk.isInitialized() && !isInitialized) { - setIsInitialized(true) - } + useEffect(() => { + if (client || initRetry >= MAX_INIT_RETRIES) return + if (clientInitialized.current) return + clientInitialized.current = true + + let cancelled = false + let retryTimeoutId: ReturnType + + createEVMClient({ + dapp: { + name: 'MetaMask Developer Documentation', + url: 'https://docs.metamask.io/', + }, + api: { + supportedNetworks: { + '0xaa36a7': 'https://rpc.sepolia.org', + '0xe705': 'https://rpc.sepolia.linea.build', + ...(INFURA_API_KEY + ? getInfuraRpcUrls({ infuraApiKey: INFURA_API_KEY as string }) + : {}), + }, + }, + }) + .then(instance => { + if (cancelled) return + setClient(instance) + setMetaMaskProvider(instance.getProvider()) + }) + .catch(error => { + if (cancelled) return + console.error('MetaMask Connect EVM initialization failed:', error) + setClientError(error?.message || 'Failed to initialize wallet connection') + clientInitialized.current = false + retryTimeoutId = setTimeout( + () => setInitRetry(prev => prev + 1), + 1000 * Math.pow(2, initRetry), + ) + }) + + return () => { + cancelled = true + clientInitialized.current = false + clearTimeout(retryTimeoutId) + } + }, [initRetry]) const fetchLineaEns = async (rawAddress: string) => { if (getWalletEns()) { @@ -147,18 +183,18 @@ export const LoginProvider = ({ children }) => { } const getStaleDate = async () => { + if (!client) return try { setProjects(JSON.parse(sessionStorage.getItem(AUTH_WALLET_PROJECTS) || '{}')) setUserId(getUserIdFromJwtToken()) setToken(getTokenString()) setUksTier(getUksTier()) setMetaMaskAccountEns(getWalletEns()) - const accounts = await sdk.connect() - setMetaMaskAccount(accounts) + // Sepolia and Linea Sepolia + const { accounts } = await client.connect({ chainIds: ['0xaa36a7', '0xe705'] }) if (accounts && accounts.length > 0) { setMetaMaskAccount(accounts[0]) - const provider = sdk.getProvider() - setMetaMaskProvider(provider) + setMetaMaskProvider(client.getProvider()) } } catch (e) {} } @@ -173,7 +209,7 @@ export const LoginProvider = ({ children }) => { const metaMaskDisconnect = useCallback(async () => { try { - await sdk?.terminate() + await client?.disconnect() setOpenAuthModal(false) setUserId(undefined) setToken(undefined) @@ -188,22 +224,10 @@ export const LoginProvider = ({ children }) => { } catch (err) { console.warn('failed to disconnect..', err) } - }, [sdk, setOpenAuthModal, setUserId, setToken, setMetaMaskAccount, setUksTier, setProjects]) - - useEffect(() => { - const provider = sdk?.getProvider() - setMetaMaskProvider(provider) - }, []) - - useEffect(() => { - if (isInitialized && sdk.isExtensionActive()) { - const provider = sdk.getProvider() - sdk.resume() - setMetaMaskProvider(provider) - } - }, [isInitialized]) + }, [client, setOpenAuthModal, setUserId, setToken, setMetaMaskAccount, setUksTier, setProjects]) useEffect(() => { + if (!client) return const url = new URL(window.location.href) getStaleDate() if (REF_ALLOW_LOGIN_PATH.some(item => url.pathname.includes(item))) { @@ -238,7 +262,7 @@ export const LoginProvider = ({ children }) => { })() } } - }, []) + }, [client]) return ( { metaMaskProvider, uksTier, setMetaMaskProvider, - sdk, + client, + clientError, walletLinked, setWalletLinked, needsMfa,