diff --git a/package-lock.json b/package-lock.json
index 62efc2221..8e941319b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -96,7 +96,6 @@
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.5",
@@ -1769,7 +1768,6 @@
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
"integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6.9.0"
}
@@ -2001,7 +1999,6 @@
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
@@ -4523,7 +4520,6 @@
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -4687,7 +4683,6 @@
"resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
"integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
"license": "MIT",
- "peer": true,
"engines": {
"node": "^14.21.3 || >=16"
},
@@ -5759,7 +5754,6 @@
"integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
@@ -6391,7 +6385,6 @@
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.0.0"
},
@@ -6807,7 +6800,6 @@
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.0.0"
},
@@ -7162,7 +7154,6 @@
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.0.0"
},
@@ -8656,7 +8647,6 @@
"integrity": "sha512-CEEhCDmkvztd1zbgADsEQhmj9GyWOOGeW1hZD+gtwbBSF5YN1uofS/pex5MIh/VIqKRj+A2UnYWI1V+9+q/lyQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@solana/accounts": "3.0.3",
"@solana/addresses": "3.0.3",
@@ -10024,7 +10014,6 @@
"integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/core": "^7.21.3",
"@svgr/babel-preset": "8.1.0",
@@ -10190,6 +10179,7 @@
"integrity": "sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"remove-accents": "0.5.0"
},
@@ -10207,6 +10197,7 @@
"integrity": "sha512-6PN65csiuTNfBMXqQUxQhCNdtm1rV+9kC9YwWAIKcaxAauq3Wu7p18j3gQY3YIBJU70jT/wzCCZ2uqto/vQgiQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
@@ -10218,6 +10209,7 @@
"integrity": "sha512-wAHc/cgKzW7LZNFloThyHnV/AX9gTg3w5yAv0gvQHPZoCnepwqCMtzbuPbb2UvfvO32XZ46e8bPOYbfZhzVnnQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@tanstack/query-core": "5.90.7"
},
@@ -11091,7 +11083,6 @@
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -11201,7 +11192,6 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz",
"integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==",
"license": "MIT",
- "peer": true,
"dependencies": {
"undici-types": "~7.16.0"
}
@@ -11333,7 +11323,6 @@
"integrity": "sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.46.3",
"@typescript-eslint/types": "8.46.3",
@@ -11938,7 +11927,8 @@
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@vue/eslint-config-typescript": {
"version": "14.6.0",
@@ -12228,7 +12218,6 @@
"integrity": "sha512-cG/xwQWsBEcKgRTkQVhH29cbpbs/TdcUJVFXCyri3ZknxhMyGv0YEjTcrNpRgt2SaswL1KrvslSNYKKo+5YEAg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"eventemitter3": "5.0.1",
"mipd": "0.0.7",
@@ -12788,7 +12777,6 @@
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.0.0"
},
@@ -13586,7 +13574,6 @@
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.0.0"
},
@@ -14349,7 +14336,6 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -14448,7 +14434,6 @@
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -15193,7 +15178,6 @@
"integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
@@ -15759,6 +15743,16 @@
"integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
"license": "MIT"
},
+ "node_modules/brotli-wasm": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/brotli-wasm/-/brotli-wasm-3.0.1.tgz",
+ "integrity": "sha512-U3K72/JAi3jITpdhZBqzSUq+DUY697tLxOuFXB+FpAE/Ug+5C3VZrv4uA674EUZHxNAuQ9wETXNqQkxZD6oL4A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=v18.0.0"
+ }
+ },
"node_modules/browser-stdout": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
@@ -15872,7 +15866,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.19",
"caniuse-lite": "^1.0.30001751",
@@ -16658,7 +16651,6 @@
"resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz",
"integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"color-convert": "^3.1.3",
"color-string": "^2.1.3"
@@ -17337,7 +17329,6 @@
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz",
"integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"node-fetch": "^2.7.0"
}
@@ -18398,7 +18389,6 @@
"resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.16.tgz",
"integrity": "sha512-dS5cbA9rA2VR4Ybuvhg6jvdmp46ubLn3E+px8cG/35aEDNclrqoCjg6mt0HYZ/M+OoESS3jSkCrqk1kWAEhWAw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@ecies/ciphers": "^0.2.4",
"@noble/ciphers": "^1.3.0",
@@ -18945,7 +18935,6 @@
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -19035,7 +19024,6 @@
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
},
@@ -19431,7 +19419,6 @@
"integrity": "sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"natural-compare": "^1.4.0",
@@ -19977,8 +19964,7 @@
"version": "6.4.9",
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz",
"integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/eventemitter3": {
"version": "5.0.1",
@@ -23864,6 +23850,7 @@
"integrity": "sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"acorn": "^8.5.0",
"eslint-visitor-keys": "^3.0.0",
@@ -23883,6 +23870,7 @@
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -23896,6 +23884,7 @@
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
@@ -23914,6 +23903,7 @@
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
"license": "ISC",
+ "peer": true,
"bin": {
"semver": "bin/semver.js"
},
@@ -26945,6 +26935,7 @@
"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -27169,7 +27160,6 @@
"dev": true,
"hasInstallScript": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@napi-rs/wasm-runtime": "0.2.4",
"@yarnpkg/lockfile": "^1.1.0",
@@ -28052,44 +28042,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/ox": {
- "version": "0.8.9",
- "resolved": "https://registry.npmjs.org/ox/-/ox-0.8.9.tgz",
- "integrity": "sha512-8pDZzrfZ3EE/ubomc57Nf+ZEQzvtdDjJaW8/ygI8O026V8oVWV4+WwBRCaSP0IYc3Pi0fQCgpg9WDQjl9qN3yQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/wevm"
- }
- ],
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@adraffy/ens-normalize": "^1.11.0",
- "@noble/ciphers": "^1.3.0",
- "@noble/curves": "^1.9.1",
- "@noble/hashes": "^1.8.0",
- "@scure/bip32": "^1.7.0",
- "@scure/bip39": "^1.6.0",
- "abitype": "^1.0.8",
- "eventemitter3": "5.0.1"
- },
- "peerDependencies": {
- "typescript": ">=5.4.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/ox/node_modules/@adraffy/ens-normalize": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz",
- "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==",
- "license": "MIT",
- "optional": true
- },
"node_modules/p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -29219,7 +29171,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -30193,7 +30144,6 @@
"integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -30870,6 +30820,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz",
"integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -31475,7 +31426,6 @@
"integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@octokit/auth-token": "^6.0.0",
"@octokit/graphql": "^9.0.3",
@@ -31895,7 +31845,8 @@
"resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz",
"integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/remove-trailing-separator": {
"version": "1.1.0",
@@ -32278,7 +32229,6 @@
"integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
@@ -32677,7 +32627,8 @@
"version": "0.26.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
"integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/schema-utils": {
"version": "4.3.3",
@@ -32705,7 +32656,6 @@
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -33360,7 +33310,6 @@
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz",
"integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.2",
@@ -34351,7 +34300,6 @@
"integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
@@ -34461,7 +34409,6 @@
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"jiti": "bin/jiti.js"
}
@@ -35122,7 +35069,6 @@
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -35516,7 +35462,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -35810,7 +35755,6 @@
"dev": true,
"hasInstallScript": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"napi-postinstall": "^0.3.0"
},
@@ -36210,7 +36154,6 @@
"integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
"dev": true,
"license": "MIT",
- "peer": true,
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
@@ -36305,7 +36248,6 @@
"integrity": "sha512-Qik0o+DSy741TmkqmRfjq+0xpZBXi/Y6+fXZLn0xNF1z/waFMbE3rkivv5Zcf9RrMUp6zswf2J7sbh2KBlba5A==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"derive-valtio": "0.1.0",
"proxy-compare": "2.6.0",
@@ -36348,7 +36290,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"@noble/curves": "1.9.1",
"@noble/hashes": "1.8.0",
@@ -36455,7 +36396,6 @@
"integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.25",
"@vue/compiler-sfc": "3.5.25",
@@ -36505,7 +36445,6 @@
"integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"debug": "^4.4.0",
"eslint-scope": "^8.2.0",
@@ -36912,7 +36851,6 @@
"integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==",
"dev": true,
"license": "MIT",
- "peer": true,
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
@@ -37039,7 +36977,6 @@
"integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
@@ -37934,7 +37871,6 @@
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=8.3.0"
},
@@ -38165,6 +38101,7 @@
"integrity": "sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"eslint-visitor-keys": "^3.0.0",
"yaml": "^2.0.0"
@@ -38182,6 +38119,7 @@
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -38429,7 +38367,6 @@
"integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
"devOptional": true,
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
@@ -38730,7 +38667,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -38854,7 +38790,6 @@
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-sfc": "3.5.26",
@@ -38915,6 +38850,7 @@
"xrpl": "^2.14.0"
},
"devDependencies": {
+ "@base-org/account": "^2.5.1",
"@coinbase/wallet-sdk": "^4.3.7",
"@types/elliptic": "6.4.18",
"@types/json-rpc-random-id": "^1.0.3",
@@ -38932,12 +38868,16 @@
},
"peerDependencies": {
"@babel/runtime": "^7.x",
+ "@base-org/account": "^2.5.1",
"@coinbase/wallet-sdk": "^4.3.x",
"react": ">=18",
"viem": ">=2.29",
"vue": "^3.x"
},
"peerDependenciesMeta": {
+ "@base-org/account": {
+ "optional": true
+ },
"@coinbase/wallet-sdk": {
"optional": true
},
@@ -38952,6 +38892,24 @@
}
}
},
+ "packages/no-modal/node_modules/@base-org/account": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@base-org/account/-/account-2.5.1.tgz",
+ "integrity": "sha512-3VhLcpuUByIXO1elzMSl6Hhn8ac4AKZaEjtHCLppN28Wq5nqWNiWxi1L6koSO8Obtebc6gq7lVVbJkv4X63p/g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@coinbase/cdp-sdk": "^1.0.0",
+ "brotli-wasm": "^3.0.0",
+ "clsx": "1.2.1",
+ "eventemitter3": "5.0.1",
+ "idb-keyval": "6.2.1",
+ "ox": "0.6.9",
+ "preact": "10.24.2",
+ "viem": "^2.31.7",
+ "zustand": "5.0.3"
+ }
+ },
"packages/no-modal/node_modules/@metamask/sdk": {
"version": "0.34.0",
"resolved": "https://registry.npmjs.org/@metamask/sdk/-/sdk-0.34.0.tgz",
@@ -39009,6 +38967,16 @@
"csstype": "^3.2.2"
}
},
+ "packages/no-modal/node_modules/clsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
+ "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"packages/no-modal/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -39032,12 +39000,52 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"license": "MIT"
},
+ "packages/no-modal/node_modules/ox": {
+ "version": "0.6.9",
+ "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz",
+ "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@adraffy/ens-normalize": "^1.10.1",
+ "@noble/curves": "^1.6.0",
+ "@noble/hashes": "^1.5.0",
+ "@scure/bip32": "^1.5.0",
+ "@scure/bip39": "^1.4.0",
+ "abitype": "^1.0.6",
+ "eventemitter3": "5.0.1"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "packages/no-modal/node_modules/preact": {
+ "version": "10.24.2",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.2.tgz",
+ "integrity": "sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
"packages/no-modal/node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -39064,6 +39072,36 @@
"bin": {
"uuid": "dist/bin/uuid"
}
+ },
+ "packages/no-modal/node_modules/zustand": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz",
+ "integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">=18.0.0",
+ "immer": ">=9.0.6",
+ "react": ">=18.0.0",
+ "use-sync-external-store": ">=1.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "use-sync-external-store": {
+ "optional": true
+ }
+ }
}
}
}
diff --git a/packages/modal/src/assets/base-logo.svg b/packages/modal/src/assets/base-logo.svg
new file mode 100644
index 000000000..3f5e94cd2
--- /dev/null
+++ b/packages/modal/src/assets/base-logo.svg
@@ -0,0 +1,4 @@
+
diff --git a/packages/modal/src/connectors/base-account-connector/index.ts b/packages/modal/src/connectors/base-account-connector/index.ts
new file mode 100644
index 000000000..ce015014c
--- /dev/null
+++ b/packages/modal/src/connectors/base-account-connector/index.ts
@@ -0,0 +1 @@
+export * from "@web3auth/no-modal/connectors/base-account-connector";
diff --git a/packages/modal/src/ui/constants.ts b/packages/modal/src/ui/constants.ts
index 56215d626..cb79aa26d 100644
--- a/packages/modal/src/ui/constants.ts
+++ b/packages/modal/src/ui/constants.ts
@@ -17,6 +17,8 @@ export const DEFAULT_LOGO_DARK = "https://images.web3auth.io/web3auth-logo-w-lig
export const WALLET_CONNECT_LOGO = "https://images.web3auth.io/login-wallet-connect.svg";
+export const BASE_ACCOUNT_LOGO = "https://images.web3auth.io/login-base-account.svg";
+
export const DEFAULT_PRIMARY_COLOR = "#0364FF";
export const DEFAULT_ON_PRIMARY_COLOR = "#FFFFFF";
diff --git a/packages/no-modal/package.json b/packages/no-modal/package.json
index 7525cd346..c4978372a 100644
--- a/packages/no-modal/package.json
+++ b/packages/no-modal/package.json
@@ -33,12 +33,16 @@
],
"peerDependencies": {
"@babel/runtime": "^7.x",
+ "@base-org/account": "^2.5.1",
"@coinbase/wallet-sdk": "^4.3.x",
"react": ">=18",
"viem": ">=2.29",
"vue": "^3.x"
},
"peerDependenciesMeta": {
+ "@base-org/account": {
+ "optional": true
+ },
"@coinbase/wallet-sdk": {
"optional": true
},
@@ -92,6 +96,7 @@
"xrpl": "^2.14.0"
},
"devDependencies": {
+ "@base-org/account": "^2.5.1",
"@coinbase/wallet-sdk": "^4.3.7",
"@types/elliptic": "6.4.18",
"@types/json-rpc-random-id": "^1.0.3",
@@ -139,6 +144,11 @@
"require": "./dist/lib.cjs/vue/wagmi/index.js",
"types": "./dist/lib.cjs/types/vue/wagmi/index.d.ts"
},
+ "./connectors/base-account-connector": {
+ "import": "./dist/lib.esm/connectors/base-account-connector/index.js",
+ "require": "./dist/lib.cjs/connectors/base-account-connector/index.js",
+ "types": "./dist/lib.cjs/types/connectors/base-account-connector/index.d.ts"
+ },
"./connectors/coinbase-connector": {
"import": "./dist/lib.esm/connectors/coinbase-connector/index.js",
"require": "./dist/lib.cjs/connectors/coinbase-connector/index.js",
@@ -172,6 +182,9 @@
"vue/solana": [
"./dist/lib.cjs/types/vue/solana/index.d.ts"
],
+ "connectors/base-account-connector": [
+ "./dist/lib.cjs/types/connectors/base-account-connector/index.d.ts"
+ ],
"connectors/coinbase-connector": [
"./dist/lib.cjs/types/connectors/coinbase-connector/index.d.ts"
],
diff --git a/packages/no-modal/src/base/wallet/index.ts b/packages/no-modal/src/base/wallet/index.ts
index e2c762d09..84aace0d6 100644
--- a/packages/no-modal/src/base/wallet/index.ts
+++ b/packages/no-modal/src/base/wallet/index.ts
@@ -10,6 +10,7 @@ export const SOLANA_CONNECTORS = {
export const EVM_CONNECTORS = {
COINBASE: "coinbase",
+ BASE_ACCOUNT: "base-account",
...MULTI_CHAIN_CONNECTORS,
} as const;
@@ -27,5 +28,6 @@ export const CONNECTOR_NAMES = {
[MULTI_CHAIN_CONNECTORS.AUTH]: "Auth",
[MULTI_CHAIN_CONNECTORS.WALLET_CONNECT_V2]: "Wallet Connect v2",
[EVM_CONNECTORS.COINBASE]: "Coinbase Smart Wallet",
+ [EVM_CONNECTORS.BASE_ACCOUNT]: "Base Account",
[EVM_CONNECTORS.METAMASK]: "MetaMask",
};
diff --git a/packages/no-modal/src/connectors/base-account-connector/baseAccountConnector.ts b/packages/no-modal/src/connectors/base-account-connector/baseAccountConnector.ts
new file mode 100644
index 000000000..4428b1ca6
--- /dev/null
+++ b/packages/no-modal/src/connectors/base-account-connector/baseAccountConnector.ts
@@ -0,0 +1,236 @@
+import type { AppMetadata, Preference } from "@base-org/account";
+
+import {
+ BaseConnectorLoginParams,
+ BaseConnectorSettings,
+ CHAIN_NAMESPACES,
+ ChainNamespaceType,
+ CONNECTED_EVENT_DATA,
+ CONNECTOR_CATEGORY,
+ CONNECTOR_CATEGORY_TYPE,
+ CONNECTOR_EVENTS,
+ CONNECTOR_NAMESPACES,
+ CONNECTOR_STATUS,
+ CONNECTOR_STATUS_TYPE,
+ ConnectorFn,
+ ConnectorInitOptions,
+ ConnectorNamespaceType,
+ ConnectorParams,
+ IdentityTokenInfo,
+ IProvider,
+ UserInfo,
+ WALLET_CONNECTOR_TYPE,
+ WALLET_CONNECTORS,
+ WalletLoginError,
+ Web3AuthError,
+} from "../../base";
+import { BaseEvmConnector } from "../base-evm-connector";
+import { getSiteIcon, getSiteName } from "../utils";
+
+export type BaseAccountSDKOptions = Partial }>;
+
+export interface BaseAccountConnectorOptions extends BaseConnectorSettings {
+ connectorSettings?: BaseAccountSDKOptions;
+}
+
+interface BaseAccountProvider {
+ request(args: { method: string; params?: unknown[] }): Promise;
+ on(event: string, listener: (...args: unknown[]) => void): void;
+ once(event: string, listener: (...args: unknown[]) => void): void;
+ removeAllListeners(): void;
+}
+
+interface ProviderRpcError extends Error {
+ code: number;
+}
+
+class BaseAccountConnector extends BaseEvmConnector {
+ readonly connectorNamespace: ConnectorNamespaceType = CONNECTOR_NAMESPACES.EIP155;
+
+ readonly currentChainNamespace: ChainNamespaceType = CHAIN_NAMESPACES.EIP155;
+
+ readonly type: CONNECTOR_CATEGORY_TYPE = CONNECTOR_CATEGORY.EXTERNAL;
+
+ readonly name: WALLET_CONNECTOR_TYPE = WALLET_CONNECTORS.BASE_ACCOUNT;
+
+ public status: CONNECTOR_STATUS_TYPE = CONNECTOR_STATUS.NOT_READY;
+
+ private baseAccountProvider: BaseAccountProvider | null = null;
+
+ private baseAccountOptions: BaseAccountSDKOptions = { appName: "Web3Auth" };
+
+ constructor(connectorOptions: BaseAccountConnectorOptions) {
+ super(connectorOptions);
+ this.baseAccountOptions = { ...this.baseAccountOptions, ...connectorOptions.connectorSettings };
+ }
+
+ get provider(): IProvider | null {
+ if (this.status !== CONNECTOR_STATUS.NOT_READY && this.baseAccountProvider) {
+ return this.baseAccountProvider as unknown as IProvider;
+ }
+ return null;
+ }
+
+ set provider(_: IProvider | null) {
+ throw new Error("Not implemented");
+ }
+
+ async init(options: ConnectorInitOptions): Promise {
+ await super.init(options);
+ const chainConfig = this.coreOptions.chains.find((x) => x.chainId === options.chainId);
+ super.checkInitializationRequirements({ chainConfig });
+
+ const { createBaseAccountSDK } = await import("@base-org/account");
+
+ // Derive defaults from site metadata if available
+ let appName = this.baseAccountOptions.appName || "Web3Auth";
+ let appLogoUrl = this.baseAccountOptions.appLogoUrl || "";
+
+ if (typeof window !== "undefined") {
+ if (!this.baseAccountOptions.appName) {
+ appName = getSiteName(window) || "Web3Auth";
+ }
+ if (!this.baseAccountOptions.appLogoUrl) {
+ appLogoUrl = (await getSiteIcon(window)) || "";
+ }
+ }
+
+ // Derive appChainIds from all EIP155 chains
+ const appChainIds = this.coreOptions.chains
+ .filter((x) => x.chainNamespace === CHAIN_NAMESPACES.EIP155)
+ .map((x) => Number.parseInt(x.chainId, 16));
+
+ const sdk = createBaseAccountSDK({
+ ...this.baseAccountOptions,
+ appName,
+ appLogoUrl: appLogoUrl || null,
+ appChainIds: this.baseAccountOptions.appChainIds || appChainIds,
+ });
+
+ this.baseAccountProvider = sdk.getProvider() as unknown as BaseAccountProvider;
+ this.status = CONNECTOR_STATUS.READY;
+ this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.BASE_ACCOUNT);
+
+ try {
+ if (options.autoConnect) {
+ this.rehydrated = true;
+ const provider = await this.connect({ chainId: options.chainId, getIdentityToken: options.getIdentityToken });
+ if (!provider) {
+ this.rehydrated = false;
+ throw WalletLoginError.connectionError("Failed to rehydrate.");
+ }
+ }
+ } catch (error) {
+ this.emit(CONNECTOR_EVENTS.REHYDRATION_ERROR, error as Web3AuthError);
+ }
+ }
+
+ async connect({ chainId, getIdentityToken }: BaseConnectorLoginParams): Promise {
+ super.checkConnectionRequirements();
+ if (!this.baseAccountProvider) throw WalletLoginError.notConnectedError("Connector is not initialized");
+
+ this.status = CONNECTOR_STATUS.CONNECTING;
+ this.emit(CONNECTOR_EVENTS.CONNECTING, { connector: WALLET_CONNECTORS.BASE_ACCOUNT });
+
+ try {
+ const chainConfig = this.coreOptions.chains.find((x) => x.chainId === chainId);
+ if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
+
+ await this.baseAccountProvider.request({ method: "eth_requestAccounts" });
+ const currentChainId = await this.baseAccountProvider.request({ method: "eth_chainId" });
+
+ if (currentChainId !== chainConfig.chainId) {
+ await this.switchChain(chainConfig, true);
+ }
+
+ this.status = CONNECTOR_STATUS.CONNECTED;
+ if (!this.provider) throw WalletLoginError.notConnectedError("Failed to connect with provider");
+
+ this.provider.once("disconnect", () => {
+ this.disconnect();
+ });
+
+ let identityTokenInfo: IdentityTokenInfo | undefined;
+
+ this.emit(CONNECTOR_EVENTS.CONNECTED, {
+ connector: WALLET_CONNECTORS.BASE_ACCOUNT,
+ reconnected: this.rehydrated,
+ provider: this.provider,
+ identityTokenInfo,
+ } as CONNECTED_EVENT_DATA);
+
+ if (getIdentityToken) {
+ identityTokenInfo = await this.getIdentityToken();
+ }
+
+ return this.provider;
+ } catch (error) {
+ this.status = CONNECTOR_STATUS.READY;
+ if (!this.rehydrated) this.emit(CONNECTOR_EVENTS.ERRORED, error as Web3AuthError);
+ this.rehydrated = false;
+ if (error instanceof Web3AuthError) throw error;
+ throw WalletLoginError.connectionError("Failed to login with Base Account", error);
+ }
+ }
+
+ async disconnect(options: { cleanup: boolean } = { cleanup: false }): Promise {
+ await super.disconnectSession();
+ this.provider?.removeAllListeners();
+ if (options.cleanup) {
+ this.status = CONNECTOR_STATUS.NOT_READY;
+ this.baseAccountProvider = null;
+ } else {
+ this.status = CONNECTOR_STATUS.READY;
+ }
+ await super.disconnect();
+ }
+
+ async getUserInfo(): Promise> {
+ if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
+ return {};
+ }
+
+ public async switchChain(params: { chainId: string }, init = false): Promise {
+ super.checkSwitchChainRequirements(params, init);
+ try {
+ await this.baseAccountProvider?.request({ method: "wallet_switchEthereumChain", params: [{ chainId: params.chainId }] });
+ } catch (switchError: unknown) {
+ if ((switchError as ProviderRpcError).code === 4902) {
+ const chainConfig = this.coreOptions.chains.find((x) => x.chainId === params.chainId);
+ if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
+ await this.baseAccountProvider?.request({
+ method: "wallet_addEthereumChain",
+ params: [
+ {
+ chainId: chainConfig.chainId,
+ rpcUrls: [chainConfig.rpcTarget],
+ chainName: chainConfig.displayName,
+ nativeCurrency: { name: chainConfig.tickerName, symbol: chainConfig.ticker, decimals: chainConfig.decimals || 18 },
+ blockExplorerUrls: [chainConfig.blockExplorerUrl],
+ iconUrls: [chainConfig.logo],
+ },
+ ],
+ });
+ return;
+ }
+ throw switchError;
+ }
+ }
+
+ public async enableMFA(): Promise {
+ throw new Error("Method Not implemented");
+ }
+
+ public async manageMFA(): Promise {
+ throw new Error("Method Not implemented");
+ }
+}
+
+export const baseAccountConnector = (params?: BaseAccountSDKOptions): ConnectorFn => {
+ return ({ coreOptions }: ConnectorParams) => {
+ return new BaseAccountConnector({
+ connectorSettings: params,
+ coreOptions,
+ });
+ };
+};
diff --git a/packages/no-modal/src/connectors/base-account-connector/index.ts b/packages/no-modal/src/connectors/base-account-connector/index.ts
new file mode 100644
index 000000000..3495a651e
--- /dev/null
+++ b/packages/no-modal/src/connectors/base-account-connector/index.ts
@@ -0,0 +1 @@
+export * from "./baseAccountConnector";
diff --git a/packages/no-modal/src/connectors/index.ts b/packages/no-modal/src/connectors/index.ts
index eb7b052dc..87b640ed8 100644
--- a/packages/no-modal/src/connectors/index.ts
+++ b/packages/no-modal/src/connectors/index.ts
@@ -1,4 +1,5 @@
export * from "./auth-connector";
+export * from "./base-account-connector";
export * from "./base-evm-connector";
export * from "./base-solana-connector";
export * from "./injected-evm-connector";
diff --git a/packages/no-modal/src/noModal.ts b/packages/no-modal/src/noModal.ts
index 698608c00..0cae4d173 100644
--- a/packages/no-modal/src/noModal.ts
+++ b/packages/no-modal/src/noModal.ts
@@ -865,7 +865,11 @@ export class Web3AuthNoModal extends SafeEventEmitter imp
const isAaSupportedForCurrentChain =
this.currentChain?.chainNamespace === CHAIN_NAMESPACES.EIP155 &&
accountAbstractionConfig?.chains?.some((chain) => chain.chainId === this.currentChain?.chainId);
- if (isAaSupportedForCurrentChain && (data.connector === WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet)) {
+ // Skip AA wrapping for Base Account connector as it's already a smart account provider
+ const shouldApplyAA =
+ data.connector === WALLET_CONNECTORS.AUTH ||
+ (this.coreOptions.useAAWithExternalWallet && data.connector !== WALLET_CONNECTORS.BASE_ACCOUNT);
+ if (isAaSupportedForCurrentChain && shouldApplyAA) {
const { accountAbstractionProvider, toEoaProvider } = await import("./providers/account-abstraction-provider");
// for embedded wallets, we use ws-embed provider which is AA provider, need to derive EOA provider
const eoaProvider: IProvider = data.connector === WALLET_CONNECTORS.AUTH ? await toEoaProvider(provider) : provider;