@web3auth/no-modal 11.2.0 → 11.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,7 +19,6 @@ require('jwt-decode');
19
19
  require('../base/plugin/errors.js');
20
20
  require('../base/plugin/IPlugin.js');
21
21
  var useWeb3AuthInner = require('../react/hooks/useWeb3AuthInner.js');
22
- require('./errors.js');
23
22
  var rest = require('./rest.js');
24
23
 
25
24
  const useLinkAccount = () => {
@@ -19,7 +19,6 @@ require('jwt-decode');
19
19
  require('../base/plugin/errors.js');
20
20
  require('../base/plugin/IPlugin.js');
21
21
  var useWeb3AuthInner = require('../vue/composables/useWeb3AuthInner.js');
22
- require('./errors.js');
23
22
  var rest = require('./rest.js');
24
23
 
25
24
  const useLinkAccount = () => {
@@ -145,7 +145,7 @@ const getWalletServicesAnalyticsProperties = walletServicesConfig => {
145
145
  ws_default_portfolio: walletServicesConfig === null || walletServicesConfig === void 0 || (_walletServicesConfig10 = walletServicesConfig.whiteLabel) === null || _walletServicesConfig10 === void 0 ? void 0 : _walletServicesConfig10.defaultPortfolio
146
146
  };
147
147
  };
148
- const sdkVersion = "11.2.0";
148
+ const sdkVersion = "11.3.0";
149
149
  const getErrorAnalyticsProperties = error => {
150
150
  try {
151
151
  const code = error instanceof index.Web3AuthError ? error.code : error === null || error === void 0 ? void 0 : error.code;
@@ -10,13 +10,15 @@ const MULTI_CHAIN_CONNECTORS = {
10
10
  };
11
11
  const SOLANA_CONNECTORS = _objectSpread({}, MULTI_CHAIN_CONNECTORS);
12
12
  const EVM_CONNECTORS = _objectSpread({
13
- COINBASE: "coinbase"
13
+ COINBASE: "coinbase",
14
+ BASE_ACCOUNT: "base-account"
14
15
  }, MULTI_CHAIN_CONNECTORS);
15
16
  const WALLET_CONNECTORS = _objectSpread(_objectSpread({}, EVM_CONNECTORS), SOLANA_CONNECTORS);
16
17
  const CONNECTOR_NAMES = {
17
18
  [MULTI_CHAIN_CONNECTORS.AUTH]: "Auth",
18
19
  [MULTI_CHAIN_CONNECTORS.WALLET_CONNECT_V2]: "Wallet Connect v2",
19
20
  [EVM_CONNECTORS.COINBASE]: "Coinbase Smart Wallet",
21
+ [EVM_CONNECTORS.BASE_ACCOUNT]: "Base Account",
20
22
  [EVM_CONNECTORS.METAMASK]: "MetaMask"
21
23
  };
22
24
  const WEB3AUTH_ICON = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTciIHZpZXdCb3g9IjAgMCA5NiA5NyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00NC4wMzQ2IDczLjI2MjRDNDMuODU5NSA3My45MTU5IDQ0LjM1MTkgNzQuNTU3NiA0NS4wMjg1IDc0LjU1NzZINTAuOTUzOUM1MS42MzA0IDc0LjU1NzYgNTIuMTIyOSA3My45MTU5IDUxLjk0NzggNzMuMjYyNEw0OC45ODUgNjIuMjA1M0M0OC43MTI2IDYxLjE4ODUgNDcuMjY5OCA2MS4xODg1IDQ2Ljk5NzMgNjIuMjA1M0w0NC4wMzQ2IDczLjI2MjRaIiBmaWxsPSIjMDM2NEZGIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzguMTM0NSA4MC4zMzk2QzM3LjY4MDcgODIuMDMzIDM2LjE0NjEgODMuMjEwNiAzNC4zOTI5IDgzLjIxMDZIMjYuMzcyNkMyMy44MjU2IDgzLjIxMDYgMjEuOTcxOSA4MC43OTQ3IDIyLjYzMTEgNzguMzM0NUwzOS4wODQ0IDE2LjkyOTlDMzkuNTgwNyAxNS4wNzc3IDQxLjI1OTEgMTMuNzg5NyA0My4xNzY3IDEzLjc4OTdINTIuNzIxOUM1NC42Mzk0IDEzLjc4OTcgNTYuMzE3OSAxNS4wNzc3IDU2LjgxNDIgMTYuOTI5OUw3My4yNjc1IDc4LjMzNDVDNzMuOTI2NyA4MC43OTQ3IDcyLjA3MjkgODMuMjEwNiA2OS41MjYgODMuMjEwNkg2MS41MDU2QzU5Ljc1MjQgODMuMjEwNiA1OC4yMTc4IDgyLjAzMyA1Ny43NjQxIDgwLjMzOTZMNDkuNzYxNiA1MC40NzM4QzQ5LjI2NDggNDguNjE5NyA0Ni42MzM4IDQ4LjYxOTcgNDYuMTM3IDUwLjQ3MzhMMzguMTM0NSA4MC4zMzk2WiIgZmlsbD0iIzAzNjRGRiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTc4LjQ3NzQgNjguNzY4NUM3Ny45NjQ2IDcwLjY4MjQgNzUuMjQ4NyA3MC42ODI0IDc0LjczNTkgNjguNzY4NUw2OC43NjI2IDQ2LjQ3NTlDNjguNjQ3MSA0Ni4wNDQ5IDY4LjY0NzEgNDUuNTkxIDY4Ljc2MjYgNDUuMTZMNzYuMzc1MSAxNi43NUM3Ni44NDMgMTUuMDAzNiA3OC40MjU2IDEzLjc4OTMgODAuMjMzNSAxMy43ODkzSDg4LjAwMzJDOTAuNjI5OCAxMy43ODkzIDkyLjU0MTUgMTYuMjgwNyA5MS44NjE3IDE4LjgxNzhMNzguNDc3NCA2OC43Njg1Wk0yNy4yMjc0IDQ2LjQzODdDMjcuMzQyOSA0Ni4wMDc3IDI3LjM0MjkgNDUuNTUzOSAyNy4yMjc0IDQ1LjEyMjhMMTkuNjI0OSAxNi43NUMxOS4xNTcgMTUuMDAzNiAxNy41NzQ0IDEzLjc4OTMgMTUuNzY2NSAxMy43ODkzSDcuOTk2NzdDNS4zNzAyMyAxMy43ODkzIDMuNDU4NTEgMTYuMjgwNyA0LjEzODMxIDE4LjgxNzhMMTcuNTEyNiA2OC43MzEzQzE4LjAyNTQgNzAuNjQ1MiAyMC43NDEzIDcwLjY0NTIgMjEuMjU0MSA2OC43MzEzTDI3LjIyNzQgNDYuNDM4N1oiIGZpbGw9IiMwMzY0RkYiLz4KPC9zdmc+Cg==`;
@@ -9,8 +9,6 @@ var securePubSub = require('@toruslabs/secure-pub-sub');
9
9
  var auth = require('@web3auth/auth');
10
10
  var wsEmbed = require('@web3auth/ws-embed');
11
11
  var deepmerge = require('deepmerge');
12
- var errors = require('../../account-linking/errors.js');
13
- var rest = require('../../account-linking/rest.js');
14
12
  var analytics = require('../../base/analytics.js');
15
13
  var IChainInterface = require('../../base/chain/IChainInterface.js');
16
14
  var baseConnector = require('../../base/connector/baseConnector.js');
@@ -26,6 +24,8 @@ var utils = require('../../base/utils.js');
26
24
  var index$1 = require('../../base/wallet/index.js');
27
25
  var utils$1 = require('../utils.js');
28
26
  var authSolanaWallet = require('./authSolanaWallet.js');
27
+ var errors = require('../../account-linking/errors.js');
28
+ var rest = require('../../account-linking/rest.js');
29
29
 
30
30
  // Auth connections that have been deprecated and are no longer supported by the SDK.
31
31
  // Passing any of these as `authConnection` results in a hard error so consumers
@@ -0,0 +1,211 @@
1
+ 'use strict';
2
+
3
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
5
+ require('@segment/analytics-next');
6
+ require('../../base/loglevel.js');
7
+ var IChainInterface = require('../../base/chain/IChainInterface.js');
8
+ var baseControllers = require('@toruslabs/base-controllers');
9
+ require('@toruslabs/session-manager');
10
+ require('@web3auth/auth');
11
+ var index$1 = require('../../base/errors/index.js');
12
+ require('@toruslabs/constants');
13
+ require('@toruslabs/http-helpers');
14
+ require('../../base/constants.js');
15
+ var index = require('../../base/wallet/index.js');
16
+ require('../../base/connector/connectorStatus.js');
17
+ var constants = require('../../base/connector/constants.js');
18
+ require('jwt-decode');
19
+ require('../../base/plugin/errors.js');
20
+ require('../../base/plugin/IPlugin.js');
21
+ var baseEvmConnector = require('../base-evm-connector/baseEvmConnector.js');
22
+ var utils = require('../utils.js');
23
+
24
+ class BaseAccountConnector extends baseEvmConnector.BaseEvmConnector {
25
+ constructor(connectorOptions) {
26
+ super(connectorOptions);
27
+ _defineProperty(this, "connectorNamespace", IChainInterface.CONNECTOR_NAMESPACES.EIP155);
28
+ _defineProperty(this, "currentChainNamespace", baseControllers.CHAIN_NAMESPACES.EIP155);
29
+ _defineProperty(this, "type", constants.CONNECTOR_CATEGORY.EXTERNAL);
30
+ _defineProperty(this, "name", index.WALLET_CONNECTORS.BASE_ACCOUNT);
31
+ _defineProperty(this, "status", constants.CONNECTOR_STATUS.NOT_READY);
32
+ _defineProperty(this, "baseAccountProvider", null);
33
+ _defineProperty(this, "baseAccountOptions", {
34
+ appName: "Web3Auth"
35
+ });
36
+ this.baseAccountOptions = _objectSpread(_objectSpread({}, this.baseAccountOptions), connectorOptions.connectorSettings);
37
+ }
38
+ get provider() {
39
+ if (this.status !== constants.CONNECTOR_STATUS.NOT_READY && this.baseAccountProvider) {
40
+ return this.baseAccountProvider;
41
+ }
42
+ return null;
43
+ }
44
+ set provider(_) {
45
+ throw new Error("Not implemented");
46
+ }
47
+ async init(options) {
48
+ await super.init(options);
49
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === options.chainId);
50
+ super.checkInitializationRequirements({
51
+ chainConfig
52
+ });
53
+ const {
54
+ createBaseAccountSDK
55
+ } = await import('@base-org/account');
56
+ let appName = this.baseAccountOptions.appName || "Web3Auth";
57
+ let appLogoUrl = this.baseAccountOptions.appLogoUrl || "";
58
+ if (typeof window !== "undefined") {
59
+ if (!this.baseAccountOptions.appName) {
60
+ appName = utils.getSiteName(window) || "Web3Auth";
61
+ }
62
+ if (!this.baseAccountOptions.appLogoUrl) {
63
+ appLogoUrl = (await utils.getSiteIcon(window)) || "";
64
+ }
65
+ }
66
+ const appChainIds = this.coreOptions.chains.filter(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155).map(x => Number.parseInt(x.chainId, 16));
67
+ const sdk = createBaseAccountSDK(_objectSpread(_objectSpread({}, this.baseAccountOptions), {}, {
68
+ appName,
69
+ appLogoUrl: appLogoUrl || null,
70
+ appChainIds: this.baseAccountOptions.appChainIds || appChainIds
71
+ }));
72
+ this.baseAccountProvider = sdk.getProvider();
73
+ this.status = constants.CONNECTOR_STATUS.READY;
74
+ this.emit(constants.CONNECTOR_EVENTS.READY, index.WALLET_CONNECTORS.BASE_ACCOUNT);
75
+ try {
76
+ if (options.autoConnect) {
77
+ this.rehydrated = true;
78
+ const connection = await this.connect({
79
+ chainId: options.chainId,
80
+ getAuthTokenInfo: options.getAuthTokenInfo
81
+ });
82
+ if (!connection) {
83
+ this.rehydrated = false;
84
+ throw index$1.WalletLoginError.connectionError("Failed to rehydrate.");
85
+ }
86
+ }
87
+ } catch (error) {
88
+ this.emit(constants.CONNECTOR_EVENTS.REHYDRATION_ERROR, error);
89
+ }
90
+ }
91
+ async connect({
92
+ chainId,
93
+ getAuthTokenInfo
94
+ }) {
95
+ super.checkConnectionRequirements();
96
+ if (!this.baseAccountProvider) throw index$1.WalletLoginError.notConnectedError("Connector is not initialized");
97
+ this.status = constants.CONNECTOR_STATUS.CONNECTING;
98
+ this.emit(constants.CONNECTOR_EVENTS.CONNECTING, {
99
+ connector: index.WALLET_CONNECTORS.BASE_ACCOUNT
100
+ });
101
+ try {
102
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
103
+ if (!chainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
104
+ await this.baseAccountProvider.request({
105
+ method: "eth_requestAccounts"
106
+ });
107
+ const currentChainId = await this.baseAccountProvider.request({
108
+ method: "eth_chainId"
109
+ });
110
+ if (currentChainId !== chainConfig.chainId) {
111
+ await this.switchChain(chainConfig, true);
112
+ }
113
+ this.status = constants.CONNECTOR_STATUS.CONNECTED;
114
+ if (!this.provider) throw index$1.WalletLoginError.notConnectedError("Failed to connect with provider");
115
+ this.provider.once("disconnect", () => {
116
+ this.disconnect();
117
+ });
118
+ this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
119
+ connectorName: index.WALLET_CONNECTORS.BASE_ACCOUNT,
120
+ reconnected: this.rehydrated,
121
+ ethereumProvider: this.provider,
122
+ solanaWallet: null,
123
+ connectorNamespace: this.connectorNamespace
124
+ });
125
+ await this.authorizeOrDisconnect(getAuthTokenInfo);
126
+ return {
127
+ ethereumProvider: this.provider,
128
+ solanaWallet: null,
129
+ connectorName: this.name,
130
+ connectorNamespace: this.connectorNamespace
131
+ };
132
+ } catch (error) {
133
+ this.status = constants.CONNECTOR_STATUS.READY;
134
+ if (!this.rehydrated) this.emit(constants.CONNECTOR_EVENTS.ERRORED, error);
135
+ this.rehydrated = false;
136
+ if (error instanceof index$1.Web3AuthError) throw error;
137
+ throw index$1.WalletLoginError.connectionError("Failed to login with Base Account", error);
138
+ }
139
+ }
140
+ async disconnect(options = {
141
+ cleanup: false
142
+ }) {
143
+ var _this$provider;
144
+ await super.disconnectSession();
145
+ (_this$provider = this.provider) === null || _this$provider === void 0 || _this$provider.removeAllListeners();
146
+ if (options.cleanup) {
147
+ this.status = constants.CONNECTOR_STATUS.NOT_READY;
148
+ this.baseAccountProvider = null;
149
+ } else {
150
+ this.status = constants.CONNECTOR_STATUS.READY;
151
+ }
152
+ await super.disconnect();
153
+ }
154
+ async getUserInfo() {
155
+ if (!this.canAuthorize) throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
156
+ return {};
157
+ }
158
+ async switchChain(params, init = false) {
159
+ super.checkSwitchChainRequirements(params, init);
160
+ try {
161
+ var _this$baseAccountProv;
162
+ await ((_this$baseAccountProv = this.baseAccountProvider) === null || _this$baseAccountProv === void 0 ? void 0 : _this$baseAccountProv.request({
163
+ method: "wallet_switchEthereumChain",
164
+ params: [{
165
+ chainId: params.chainId
166
+ }]
167
+ }));
168
+ } catch (switchError) {
169
+ if (switchError.code === 4902) {
170
+ var _this$baseAccountProv2;
171
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId);
172
+ if (!chainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
173
+ await ((_this$baseAccountProv2 = this.baseAccountProvider) === null || _this$baseAccountProv2 === void 0 ? void 0 : _this$baseAccountProv2.request({
174
+ method: "wallet_addEthereumChain",
175
+ params: [{
176
+ chainId: chainConfig.chainId,
177
+ rpcUrls: [chainConfig.rpcTarget],
178
+ chainName: chainConfig.displayName,
179
+ nativeCurrency: {
180
+ name: chainConfig.tickerName,
181
+ symbol: chainConfig.ticker,
182
+ decimals: chainConfig.decimals || 18
183
+ },
184
+ blockExplorerUrls: [chainConfig.blockExplorerUrl],
185
+ iconUrls: [chainConfig.logo]
186
+ }]
187
+ }));
188
+ return;
189
+ }
190
+ throw switchError;
191
+ }
192
+ }
193
+ async enableMFA() {
194
+ throw new Error("Method Not implemented");
195
+ }
196
+ async manageMFA() {
197
+ throw new Error("Method Not implemented");
198
+ }
199
+ }
200
+ const baseAccountConnector = params => {
201
+ return ({
202
+ coreOptions
203
+ }) => {
204
+ return new BaseAccountConnector({
205
+ connectorSettings: params,
206
+ coreOptions
207
+ });
208
+ };
209
+ };
210
+
211
+ exports.baseAccountConnector = baseAccountConnector;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var baseAccountConnector = require('./baseAccountConnector.js');
4
+
5
+
6
+
7
+ exports.baseAccountConnector = baseAccountConnector.baseAccountConnector;
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var errors = require('./account-linking/errors.js');
4
- var rest = require('./account-linking/rest.js');
5
3
  var analytics = require('./base/analytics.js');
6
4
  var IChainInterface = require('./base/chain/IChainInterface.js');
7
5
  var index$2 = require('./base/composables/index.js');
@@ -40,19 +38,16 @@ var utils = require('./providers/base-provider/utils.js');
40
38
  var ethRpcMiddlewares = require('./providers/ethereum-provider/rpc/ethRpcMiddlewares.js');
41
39
  var jrpcClient = require('./providers/ethereum-provider/rpc/jrpcClient.js');
42
40
  var walletMiddleware = require('./providers/ethereum-provider/rpc/walletMiddleware.js');
41
+ var errors = require('./account-linking/errors.js');
43
42
  var wsEmbed = require('@web3auth/ws-embed');
44
43
  var baseControllers = require('@toruslabs/base-controllers');
45
44
  var app = require('@wallet-standard/app');
46
45
  var solana = require('./base/wallet/solana.js');
46
+ var rest = require('./account-linking/rest.js');
47
47
  var walletStandardConnector = require('./connectors/injected-solana-connector/walletStandardConnector.js');
48
48
 
49
49
 
50
50
 
51
- exports.AccountLinkingError = errors.AccountLinkingError;
52
- exports.formatAccountLinkingErrorMessage = errors.formatAccountLinkingErrorMessage;
53
- exports.getAccountLinkingRequestError = errors.getAccountLinkingRequestError;
54
- exports.makeAccountLinkingRequest = rest.makeAccountLinkingRequest;
55
- exports.makeAccountUnlinkingRequest = rest.makeAccountUnlinkingRequest;
56
51
  exports.ANALYTICS_EVENTS = analytics.ANALYTICS_EVENTS;
57
52
  exports.ANALYTICS_INTEGRATION_TYPE = analytics.ANALYTICS_INTEGRATION_TYPE;
58
53
  exports.ANALYTICS_SDK_TYPE = analytics.ANALYTICS_SDK_TYPE;
@@ -221,6 +216,9 @@ exports.createEthChainSwitchMiddleware = ethRpcMiddlewares.createEthChainSwitchM
221
216
  exports.createEthMiddleware = ethRpcMiddlewares.createEthMiddleware;
222
217
  exports.createEthJsonRpcClient = jrpcClient.createEthJsonRpcClient;
223
218
  exports.createWalletMiddlewareV2 = walletMiddleware.createWalletMiddlewareV2;
219
+ exports.AccountLinkingError = errors.AccountLinkingError;
220
+ exports.formatAccountLinkingErrorMessage = errors.formatAccountLinkingErrorMessage;
221
+ exports.getAccountLinkingRequestError = errors.getAccountLinkingRequestError;
224
222
  Object.defineProperty(exports, "BUTTON_POSITION", {
225
223
  enumerable: true,
226
224
  get: function () { return wsEmbed.BUTTON_POSITION; }
@@ -245,4 +243,6 @@ exports.getSolanaChainByChainConfig = solana.getSolanaChainByChainConfig;
245
243
  exports.walletSignAndSendTransaction = solana.walletSignAndSendTransaction;
246
244
  exports.walletSignMessage = solana.walletSignMessage;
247
245
  exports.walletSignTransaction = solana.walletSignTransaction;
246
+ exports.makeAccountLinkingRequest = rest.makeAccountLinkingRequest;
247
+ exports.makeAccountUnlinkingRequest = rest.makeAccountUnlinkingRequest;
248
248
  exports.walletStandardConnector = walletStandardConnector.walletStandardConnector;
@@ -7,8 +7,6 @@ var baseControllers = require('@toruslabs/base-controllers');
7
7
  var ethereumControllers = require('@toruslabs/ethereum-controllers');
8
8
  var auth = require('@web3auth/auth');
9
9
  var deepmerge = require('deepmerge');
10
- var errors = require('./account-linking/errors.js');
11
- require('@toruslabs/http-helpers');
12
10
  var analytics = require('./base/analytics.js');
13
11
  var IChainInterface = require('./base/chain/IChainInterface.js');
14
12
  require('@toruslabs/session-manager');
@@ -29,6 +27,7 @@ var plugin = require('./plugins/wallet-services-plugin/plugin.js');
29
27
  require('./providers/base-provider/utils.js');
30
28
  var CommonJRPCProvider = require('./providers/base-provider/CommonJRPCProvider.js');
31
29
  require('./providers/base-provider/commonPrivateKeyProvider.js');
30
+ var errors = require('./account-linking/errors.js');
32
31
 
33
32
  const _excluded = ["walletScope", "eipStandard"];
34
33
  const PRIMARY_CONNECTED_WALLET_KEY = "__primary__";
@@ -1665,7 +1664,8 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
1665
1664
  return chain.chainId === ((_this$currentChain6 = this.currentChain) === null || _this$currentChain6 === void 0 ? void 0 : _this$currentChain6.chainId);
1666
1665
  }));
1667
1666
  // setup AA provider if AA is enabled (skip for EIP-7702; 7702 uses EOA + 5792/7702 RPC only)
1668
- if (!is7702 && isAaSupportedForCurrentChain && (connectorName === index$1.WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet)) {
1667
+ // Skip AA wrapping for Base Account as it's already a smart account provider
1668
+ if (!is7702 && isAaSupportedForCurrentChain && (connectorName === index$1.WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet && connectorName !== index$1.WALLET_CONNECTORS.BASE_ACCOUNT)) {
1669
1669
  var _accountAbstractionCo2;
1670
1670
  const {
1671
1671
  accountAbstractionProvider,
@@ -153,6 +153,9 @@ export type LoginParamMap = {
153
153
  [WALLET_CONNECTORS.COINBASE]: {
154
154
  chainNamespace: ChainNamespaceType;
155
155
  };
156
+ [WALLET_CONNECTORS.BASE_ACCOUNT]: {
157
+ chainNamespace: ChainNamespaceType;
158
+ };
156
159
  [WALLET_CONNECTORS.WALLET_CONNECT_V2]: {
157
160
  chainNamespace: ChainNamespaceType;
158
161
  };
@@ -15,12 +15,14 @@ export declare const EVM_CONNECTORS: {
15
15
  readonly WALLET_CONNECT_V2: "wallet-connect-v2";
16
16
  readonly METAMASK: "metamask";
17
17
  readonly COINBASE: "coinbase";
18
+ readonly BASE_ACCOUNT: "base-account";
18
19
  };
19
20
  export declare const WALLET_CONNECTORS: {
20
21
  readonly AUTH: "auth";
21
22
  readonly WALLET_CONNECT_V2: "wallet-connect-v2";
22
23
  readonly METAMASK: "metamask";
23
24
  readonly COINBASE: "coinbase";
25
+ readonly BASE_ACCOUNT: "base-account";
24
26
  };
25
27
  export type WALLET_CONNECTOR_TYPE = (typeof WALLET_CONNECTORS)[keyof typeof WALLET_CONNECTORS];
26
28
  export type SOLANA_CONNECTOR_TYPE = (typeof SOLANA_CONNECTORS)[keyof typeof SOLANA_CONNECTORS];
@@ -30,6 +32,7 @@ export declare const CONNECTOR_NAMES: {
30
32
  auth: string;
31
33
  "wallet-connect-v2": string;
32
34
  coinbase: string;
35
+ "base-account": string;
33
36
  metamask: string;
34
37
  };
35
38
  export declare const WEB3AUTH_ICON: WalletIcon;
@@ -0,0 +1,10 @@
1
+ import type { AppMetadata, Preference } from "@base-org/account";
2
+ import { BaseConnectorSettings, ConnectorFn } from "../../base";
3
+ export type BaseAccountSDKOptions = Partial<AppMetadata & {
4
+ preference?: Preference;
5
+ paymasterUrls?: Record<number, string>;
6
+ }>;
7
+ export interface BaseAccountConnectorOptions extends BaseConnectorSettings {
8
+ connectorSettings?: BaseAccountSDKOptions;
9
+ }
10
+ export declare const baseAccountConnector: (params?: BaseAccountSDKOptions) => ConnectorFn;
@@ -0,0 +1 @@
1
+ export * from "./baseAccountConnector";
@@ -149,7 +149,7 @@ const getWalletServicesAnalyticsProperties = walletServicesConfig => {
149
149
  ws_default_portfolio: walletServicesConfig === null || walletServicesConfig === void 0 || (_walletServicesConfig10 = walletServicesConfig.whiteLabel) === null || _walletServicesConfig10 === void 0 ? void 0 : _walletServicesConfig10.defaultPortfolio
150
150
  };
151
151
  };
152
- const sdkVersion = "11.2.0";
152
+ const sdkVersion = "11.3.0";
153
153
  const getErrorAnalyticsProperties = error => {
154
154
  try {
155
155
  const code = error instanceof Web3AuthError ? error.code : error === null || error === void 0 ? void 0 : error.code;
@@ -7,13 +7,15 @@ const MULTI_CHAIN_CONNECTORS = {
7
7
  };
8
8
  const SOLANA_CONNECTORS = _objectSpread({}, MULTI_CHAIN_CONNECTORS);
9
9
  const EVM_CONNECTORS = _objectSpread({
10
- COINBASE: "coinbase"
10
+ COINBASE: "coinbase",
11
+ BASE_ACCOUNT: "base-account"
11
12
  }, MULTI_CHAIN_CONNECTORS);
12
13
  const WALLET_CONNECTORS = _objectSpread(_objectSpread({}, EVM_CONNECTORS), SOLANA_CONNECTORS);
13
14
  const CONNECTOR_NAMES = {
14
15
  [MULTI_CHAIN_CONNECTORS.AUTH]: "Auth",
15
16
  [MULTI_CHAIN_CONNECTORS.WALLET_CONNECT_V2]: "Wallet Connect v2",
16
17
  [EVM_CONNECTORS.COINBASE]: "Coinbase Smart Wallet",
18
+ [EVM_CONNECTORS.BASE_ACCOUNT]: "Base Account",
17
19
  [EVM_CONNECTORS.METAMASK]: "MetaMask"
18
20
  };
19
21
  const WEB3AUTH_ICON = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTciIHZpZXdCb3g9IjAgMCA5NiA5NyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00NC4wMzQ2IDczLjI2MjRDNDMuODU5NSA3My45MTU5IDQ0LjM1MTkgNzQuNTU3NiA0NS4wMjg1IDc0LjU1NzZINTAuOTUzOUM1MS42MzA0IDc0LjU1NzYgNTIuMTIyOSA3My45MTU5IDUxLjk0NzggNzMuMjYyNEw0OC45ODUgNjIuMjA1M0M0OC43MTI2IDYxLjE4ODUgNDcuMjY5OCA2MS4xODg1IDQ2Ljk5NzMgNjIuMjA1M0w0NC4wMzQ2IDczLjI2MjRaIiBmaWxsPSIjMDM2NEZGIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzguMTM0NSA4MC4zMzk2QzM3LjY4MDcgODIuMDMzIDM2LjE0NjEgODMuMjEwNiAzNC4zOTI5IDgzLjIxMDZIMjYuMzcyNkMyMy44MjU2IDgzLjIxMDYgMjEuOTcxOSA4MC43OTQ3IDIyLjYzMTEgNzguMzM0NUwzOS4wODQ0IDE2LjkyOTlDMzkuNTgwNyAxNS4wNzc3IDQxLjI1OTEgMTMuNzg5NyA0My4xNzY3IDEzLjc4OTdINTIuNzIxOUM1NC42Mzk0IDEzLjc4OTcgNTYuMzE3OSAxNS4wNzc3IDU2LjgxNDIgMTYuOTI5OUw3My4yNjc1IDc4LjMzNDVDNzMuOTI2NyA4MC43OTQ3IDcyLjA3MjkgODMuMjEwNiA2OS41MjYgODMuMjEwNkg2MS41MDU2QzU5Ljc1MjQgODMuMjEwNiA1OC4yMTc4IDgyLjAzMyA1Ny43NjQxIDgwLjMzOTZMNDkuNzYxNiA1MC40NzM4QzQ5LjI2NDggNDguNjE5NyA0Ni42MzM4IDQ4LjYxOTcgNDYuMTM3IDUwLjQ3MzhMMzguMTM0NSA4MC4zMzk2WiIgZmlsbD0iIzAzNjRGRiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTc4LjQ3NzQgNjguNzY4NUM3Ny45NjQ2IDcwLjY4MjQgNzUuMjQ4NyA3MC42ODI0IDc0LjczNTkgNjguNzY4NUw2OC43NjI2IDQ2LjQ3NTlDNjguNjQ3MSA0Ni4wNDQ5IDY4LjY0NzEgNDUuNTkxIDY4Ljc2MjYgNDUuMTZMNzYuMzc1MSAxNi43NUM3Ni44NDMgMTUuMDAzNiA3OC40MjU2IDEzLjc4OTMgODAuMjMzNSAxMy43ODkzSDg4LjAwMzJDOTAuNjI5OCAxMy43ODkzIDkyLjU0MTUgMTYuMjgwNyA5MS44NjE3IDE4LjgxNzhMNzguNDc3NCA2OC43Njg1Wk0yNy4yMjc0IDQ2LjQzODdDMjcuMzQyOSA0Ni4wMDc3IDI3LjM0MjkgNDUuNTUzOSAyNy4yMjc0IDQ1LjEyMjhMMTkuNjI0OSAxNi43NUMxOS4xNTcgMTUuMDAzNiAxNy41NzQ0IDEzLjc4OTMgMTUuNzY2NSAxMy43ODkzSDcuOTk2NzdDNS4zNzAyMyAxMy43ODkzIDMuNDU4NTEgMTYuMjgwNyA0LjEzODMxIDE4LjgxNzhMMTcuNTEyNiA2OC43MzEzQzE4LjAyNTQgNzAuNjQ1MiAyMC43NDEzIDcwLjY0NTIgMjEuMjU0MSA2OC43MzEzTDI3LjIyNzQgNDYuNDM4N1oiIGZpbGw9IiMwMzY0RkYiLz4KPC9zdmc+Cg==`;
@@ -0,0 +1,198 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
+ import { getSiteName, getSiteIcon } from '../utils.js';
4
+ import { BaseEvmConnector } from '../base-evm-connector/baseEvmConnector.js';
5
+ import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
6
+ import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
7
+ import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
8
+ import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
9
+ import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
10
+
11
+ class BaseAccountConnector extends BaseEvmConnector {
12
+ constructor(connectorOptions) {
13
+ super(connectorOptions);
14
+ _defineProperty(this, "connectorNamespace", CONNECTOR_NAMESPACES.EIP155);
15
+ _defineProperty(this, "currentChainNamespace", CHAIN_NAMESPACES.EIP155);
16
+ _defineProperty(this, "type", CONNECTOR_CATEGORY.EXTERNAL);
17
+ _defineProperty(this, "name", WALLET_CONNECTORS.BASE_ACCOUNT);
18
+ _defineProperty(this, "status", CONNECTOR_STATUS.NOT_READY);
19
+ _defineProperty(this, "baseAccountProvider", null);
20
+ _defineProperty(this, "baseAccountOptions", {
21
+ appName: "Web3Auth"
22
+ });
23
+ this.baseAccountOptions = _objectSpread(_objectSpread({}, this.baseAccountOptions), connectorOptions.connectorSettings);
24
+ }
25
+ get provider() {
26
+ if (this.status !== CONNECTOR_STATUS.NOT_READY && this.baseAccountProvider) {
27
+ return this.baseAccountProvider;
28
+ }
29
+ return null;
30
+ }
31
+ set provider(_) {
32
+ throw new Error("Not implemented");
33
+ }
34
+ async init(options) {
35
+ await super.init(options);
36
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === options.chainId);
37
+ super.checkInitializationRequirements({
38
+ chainConfig
39
+ });
40
+ const {
41
+ createBaseAccountSDK
42
+ } = await import('@base-org/account');
43
+ let appName = this.baseAccountOptions.appName || "Web3Auth";
44
+ let appLogoUrl = this.baseAccountOptions.appLogoUrl || "";
45
+ if (typeof window !== "undefined") {
46
+ if (!this.baseAccountOptions.appName) {
47
+ appName = getSiteName(window) || "Web3Auth";
48
+ }
49
+ if (!this.baseAccountOptions.appLogoUrl) {
50
+ appLogoUrl = (await getSiteIcon(window)) || "";
51
+ }
52
+ }
53
+ const appChainIds = this.coreOptions.chains.filter(x => x.chainNamespace === CHAIN_NAMESPACES.EIP155).map(x => Number.parseInt(x.chainId, 16));
54
+ const sdk = createBaseAccountSDK(_objectSpread(_objectSpread({}, this.baseAccountOptions), {}, {
55
+ appName,
56
+ appLogoUrl: appLogoUrl || null,
57
+ appChainIds: this.baseAccountOptions.appChainIds || appChainIds
58
+ }));
59
+ this.baseAccountProvider = sdk.getProvider();
60
+ this.status = CONNECTOR_STATUS.READY;
61
+ this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.BASE_ACCOUNT);
62
+ try {
63
+ if (options.autoConnect) {
64
+ this.rehydrated = true;
65
+ const connection = await this.connect({
66
+ chainId: options.chainId,
67
+ getAuthTokenInfo: options.getAuthTokenInfo
68
+ });
69
+ if (!connection) {
70
+ this.rehydrated = false;
71
+ throw WalletLoginError.connectionError("Failed to rehydrate.");
72
+ }
73
+ }
74
+ } catch (error) {
75
+ this.emit(CONNECTOR_EVENTS.REHYDRATION_ERROR, error);
76
+ }
77
+ }
78
+ async connect({
79
+ chainId,
80
+ getAuthTokenInfo
81
+ }) {
82
+ super.checkConnectionRequirements();
83
+ if (!this.baseAccountProvider) throw WalletLoginError.notConnectedError("Connector is not initialized");
84
+ this.status = CONNECTOR_STATUS.CONNECTING;
85
+ this.emit(CONNECTOR_EVENTS.CONNECTING, {
86
+ connector: WALLET_CONNECTORS.BASE_ACCOUNT
87
+ });
88
+ try {
89
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
90
+ if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
91
+ await this.baseAccountProvider.request({
92
+ method: "eth_requestAccounts"
93
+ });
94
+ const currentChainId = await this.baseAccountProvider.request({
95
+ method: "eth_chainId"
96
+ });
97
+ if (currentChainId !== chainConfig.chainId) {
98
+ await this.switchChain(chainConfig, true);
99
+ }
100
+ this.status = CONNECTOR_STATUS.CONNECTED;
101
+ if (!this.provider) throw WalletLoginError.notConnectedError("Failed to connect with provider");
102
+ this.provider.once("disconnect", () => {
103
+ this.disconnect();
104
+ });
105
+ this.emit(CONNECTOR_EVENTS.CONNECTED, {
106
+ connectorName: WALLET_CONNECTORS.BASE_ACCOUNT,
107
+ reconnected: this.rehydrated,
108
+ ethereumProvider: this.provider,
109
+ solanaWallet: null,
110
+ connectorNamespace: this.connectorNamespace
111
+ });
112
+ await this.authorizeOrDisconnect(getAuthTokenInfo);
113
+ return {
114
+ ethereumProvider: this.provider,
115
+ solanaWallet: null,
116
+ connectorName: this.name,
117
+ connectorNamespace: this.connectorNamespace
118
+ };
119
+ } catch (error) {
120
+ this.status = CONNECTOR_STATUS.READY;
121
+ if (!this.rehydrated) this.emit(CONNECTOR_EVENTS.ERRORED, error);
122
+ this.rehydrated = false;
123
+ if (error instanceof Web3AuthError) throw error;
124
+ throw WalletLoginError.connectionError("Failed to login with Base Account", error);
125
+ }
126
+ }
127
+ async disconnect(options = {
128
+ cleanup: false
129
+ }) {
130
+ var _this$provider;
131
+ await super.disconnectSession();
132
+ (_this$provider = this.provider) === null || _this$provider === void 0 || _this$provider.removeAllListeners();
133
+ if (options.cleanup) {
134
+ this.status = CONNECTOR_STATUS.NOT_READY;
135
+ this.baseAccountProvider = null;
136
+ } else {
137
+ this.status = CONNECTOR_STATUS.READY;
138
+ }
139
+ await super.disconnect();
140
+ }
141
+ async getUserInfo() {
142
+ if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
143
+ return {};
144
+ }
145
+ async switchChain(params, init = false) {
146
+ super.checkSwitchChainRequirements(params, init);
147
+ try {
148
+ var _this$baseAccountProv;
149
+ await ((_this$baseAccountProv = this.baseAccountProvider) === null || _this$baseAccountProv === void 0 ? void 0 : _this$baseAccountProv.request({
150
+ method: "wallet_switchEthereumChain",
151
+ params: [{
152
+ chainId: params.chainId
153
+ }]
154
+ }));
155
+ } catch (switchError) {
156
+ if (switchError.code === 4902) {
157
+ var _this$baseAccountProv2;
158
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId);
159
+ if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
160
+ await ((_this$baseAccountProv2 = this.baseAccountProvider) === null || _this$baseAccountProv2 === void 0 ? void 0 : _this$baseAccountProv2.request({
161
+ method: "wallet_addEthereumChain",
162
+ params: [{
163
+ chainId: chainConfig.chainId,
164
+ rpcUrls: [chainConfig.rpcTarget],
165
+ chainName: chainConfig.displayName,
166
+ nativeCurrency: {
167
+ name: chainConfig.tickerName,
168
+ symbol: chainConfig.ticker,
169
+ decimals: chainConfig.decimals || 18
170
+ },
171
+ blockExplorerUrls: [chainConfig.blockExplorerUrl],
172
+ iconUrls: [chainConfig.logo]
173
+ }]
174
+ }));
175
+ return;
176
+ }
177
+ throw switchError;
178
+ }
179
+ }
180
+ async enableMFA() {
181
+ throw new Error("Method Not implemented");
182
+ }
183
+ async manageMFA() {
184
+ throw new Error("Method Not implemented");
185
+ }
186
+ }
187
+ const baseAccountConnector = params => {
188
+ return ({
189
+ coreOptions
190
+ }) => {
191
+ return new BaseAccountConnector({
192
+ connectorSettings: params,
193
+ coreOptions
194
+ });
195
+ };
196
+ };
197
+
198
+ export { baseAccountConnector };
@@ -0,0 +1 @@
1
+ export { baseAccountConnector } from './baseAccountConnector.js';
@@ -1693,7 +1693,8 @@ class Web3AuthNoModal extends SafeEventEmitter {
1693
1693
  }));
1694
1694
 
1695
1695
  // setup AA provider if AA is enabled (skip for EIP-7702; 7702 uses EOA + 5792/7702 RPC only)
1696
- if (!is7702 && isAaSupportedForCurrentChain && (connectorName === WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet)) {
1696
+ // Skip AA wrapping for Base Account as it's already a smart account provider
1697
+ if (!is7702 && isAaSupportedForCurrentChain && (connectorName === WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet && connectorName !== WALLET_CONNECTORS.BASE_ACCOUNT)) {
1697
1698
  var _accountAbstractionCo2;
1698
1699
  const {
1699
1700
  accountAbstractionProvider,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web3auth/no-modal",
3
- "version": "11.2.0",
3
+ "version": "11.3.0",
4
4
  "description": "Multi chain wallet aggregator for web3Auth",
5
5
  "keywords": [
6
6
  "web3Auth/no-modal",
@@ -32,6 +32,7 @@
32
32
  ],
33
33
  "peerDependencies": {
34
34
  "@babel/runtime": "^7.x",
35
+ "@base-org/account": "^2.5.1",
35
36
  "@coinbase/wallet-sdk": "^4.3.x",
36
37
  "@solana/react-hooks": "^1.4.0",
37
38
  "@x402/evm": "^2.7.0",
@@ -42,6 +43,9 @@
42
43
  "vue": "^3.x"
43
44
  },
44
45
  "peerDependenciesMeta": {
46
+ "@base-org/account": {
47
+ "optional": true
48
+ },
45
49
  "@coinbase/wallet-sdk": {
46
50
  "optional": true
47
51
  },
@@ -99,6 +103,7 @@
99
103
  "xrpl": "^2.14.0"
100
104
  },
101
105
  "devDependencies": {
106
+ "@base-org/account": "^2.5.6",
102
107
  "@coinbase/wallet-sdk": "^4.3.7",
103
108
  "@solana/react-hooks": "^1.4.1",
104
109
  "@types/react": "^19.2.16",
@@ -178,6 +183,11 @@
178
183
  "require": "./dist/lib.cjs/vue/wagmi/index.js",
179
184
  "types": "./dist/lib.cjs/types/vue/wagmi/index.d.ts"
180
185
  },
186
+ "./connectors/base-account-connector": {
187
+ "import": "./dist/lib.esm/connectors/base-account-connector/index.js",
188
+ "require": "./dist/lib.cjs/connectors/base-account-connector/index.js",
189
+ "types": "./dist/lib.cjs/types/connectors/base-account-connector/index.d.ts"
190
+ },
181
191
  "./connectors/coinbase-connector": {
182
192
  "import": "./dist/lib.esm/connectors/coinbase-connector/index.js",
183
193
  "require": "./dist/lib.cjs/connectors/coinbase-connector/index.js",
@@ -224,6 +234,9 @@
224
234
  "vue/solana": [
225
235
  "./dist/lib.cjs/types/vue/solana/index.d.ts"
226
236
  ],
237
+ "connectors/base-account-connector": [
238
+ "./dist/lib.cjs/types/connectors/base-account-connector/index.d.ts"
239
+ ],
227
240
  "connectors/coinbase-connector": [
228
241
  "./dist/lib.cjs/types/connectors/coinbase-connector/index.d.ts"
229
242
  ],
@@ -252,5 +265,5 @@
252
265
  "node": ">=22.x",
253
266
  "npm": ">=10.x"
254
267
  },
255
- "gitHead": "e2f5aedf569d05ffb73ce089bd9189c47cb163c6"
268
+ "gitHead": "770ae17551a78a42d8adc96e2b4252dbc69f3cab"
256
269
  }