@web3auth/no-modal 11.1.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.
Files changed (49) hide show
  1. package/dist/lib.cjs/base/connector/baseConnector.js +42 -11
  2. package/dist/lib.cjs/base/errors/index.js +5 -1
  3. package/dist/lib.cjs/base/utils.js +1 -1
  4. package/dist/lib.cjs/base/wallet/index.js +3 -1
  5. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +13 -4
  6. package/dist/lib.cjs/connectors/base-account-connector/baseAccountConnector.js +211 -0
  7. package/dist/lib.cjs/connectors/base-account-connector/index.js +7 -0
  8. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +5 -5
  9. package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +6 -5
  10. package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +6 -5
  11. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +82 -31
  12. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +8 -6
  13. package/dist/lib.cjs/index.js +1 -0
  14. package/dist/lib.cjs/noModal.js +44 -21
  15. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -2
  16. package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +10 -0
  17. package/dist/lib.cjs/react/solana/provider.js +65 -32
  18. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +2 -1
  19. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +1 -0
  20. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +3 -0
  21. package/dist/lib.cjs/types/base/errors/index.d.ts +1 -0
  22. package/dist/lib.cjs/types/base/interfaces.d.ts +2 -1
  23. package/dist/lib.cjs/types/base/wallet/index.d.ts +3 -0
  24. package/dist/lib.cjs/types/connectors/base-account-connector/baseAccountConnector.d.ts +10 -0
  25. package/dist/lib.cjs/types/connectors/base-account-connector/index.d.ts +1 -0
  26. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +1 -0
  27. package/dist/lib.cjs/types/vue/solana/provider.d.ts +2 -2
  28. package/dist/lib.cjs/vue/solana/provider.js +55 -21
  29. package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +12 -2
  30. package/dist/lib.esm/base/connector/baseConnector.js +42 -11
  31. package/dist/lib.esm/base/errors/index.js +5 -1
  32. package/dist/lib.esm/base/utils.js +1 -1
  33. package/dist/lib.esm/base/wallet/index.js +3 -1
  34. package/dist/lib.esm/connectors/auth-connector/authConnector.js +13 -5
  35. package/dist/lib.esm/connectors/base-account-connector/baseAccountConnector.js +198 -0
  36. package/dist/lib.esm/connectors/base-account-connector/index.js +1 -0
  37. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +5 -5
  38. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +6 -5
  39. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +6 -5
  40. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +86 -31
  41. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +8 -7
  42. package/dist/lib.esm/index.js +1 -1
  43. package/dist/lib.esm/noModal.js +46 -22
  44. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -2
  45. package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +10 -0
  46. package/dist/lib.esm/react/solana/provider.js +64 -30
  47. package/dist/lib.esm/vue/solana/provider.js +55 -19
  48. package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +10 -0
  49. package/package.json +15 -2
@@ -128,17 +128,28 @@ class BaseConnector extends auth.SafeEventEmitter {
128
128
  return cached;
129
129
  }
130
130
  async verifyAndAuthorize(params) {
131
- const tokens = await baseControllers.verifySignedChallenge({
132
- chainNamespace: params.chainNamespace,
133
- signedMessage: params.signedMessage,
134
- challenge: params.challenge,
135
- connector: this.name,
136
- authServer: params.authServer,
137
- web3AuthClientId: this.coreOptions.clientId,
138
- web3AuthNetwork: this.coreOptions.web3AuthNetwork,
139
- sessionTimeout: this.coreOptions.sessionTime,
140
- deviceInfo: baseControllers.getDeviceInfo()
141
- });
131
+ let tokens;
132
+ try {
133
+ tokens = await baseControllers.verifySignedChallenge({
134
+ chainNamespace: params.chainNamespace,
135
+ signedMessage: params.signedMessage,
136
+ challenge: params.challenge,
137
+ connector: this.name,
138
+ authServer: params.authServer,
139
+ web3AuthClientId: this.coreOptions.clientId,
140
+ web3AuthNetwork: this.coreOptions.web3AuthNetwork,
141
+ sessionTimeout: this.coreOptions.sessionTime,
142
+ deviceInfo: baseControllers.getDeviceInfo()
143
+ });
144
+ } catch (error) {
145
+ if (error instanceof Response && error.status === 401) {
146
+ const body = await error.clone().json().catch(() => ({}));
147
+ if (body.message === "ACCESS_CONTROL_DENIED") {
148
+ throw index$1.WalletLoginError.userBlocked("User is blocked by the application", error);
149
+ }
150
+ }
151
+ throw error;
152
+ }
142
153
  await this.saveAuthTokenInfo(tokens);
143
154
  const tokenInfo = {
144
155
  idToken: tokens.idToken,
@@ -152,6 +163,26 @@ class BaseConnector extends auth.SafeEventEmitter {
152
163
  });
153
164
  return tokenInfo;
154
165
  }
166
+ async authorizeOrDisconnect(getAuthTokenInfo, chainId) {
167
+ if (!getAuthTokenInfo) return;
168
+ try {
169
+ await this.getAuthTokenInfo(chainId);
170
+ } catch (error) {
171
+ loglevel.log.error("Authorization failed after connect; disconnecting wallet to keep state consistent", error);
172
+ const wasRehydrated = this.rehydrated;
173
+ try {
174
+ // getAuthTokenInfo moved status to AUTHORIZING; restore CONNECTED so disconnect requirements pass.
175
+ if (!this.connected) this.status = constants.CONNECTOR_STATUS.CONNECTED;
176
+ await this.disconnect();
177
+ } catch (disconnectError) {
178
+ loglevel.log.error("Failed to disconnect wallet after authorization error", disconnectError);
179
+ } finally {
180
+ // disconnect() resets rehydrated=false; restore so caller catch emits the right event.
181
+ this.rehydrated = wasRehydrated;
182
+ }
183
+ throw error;
184
+ }
185
+ }
155
186
  async clearWalletSession() {
156
187
  if (!this.authSessionManager) return;
157
188
  try {
@@ -159,6 +159,9 @@ class WalletLoginError extends Web3AuthError {
159
159
  static userNotLoggedIn(extraMessage = "", cause) {
160
160
  return WalletLoginError.fromCode(5119, extraMessage, cause);
161
161
  }
162
+ static userBlocked(extraMessage = "", cause) {
163
+ return WalletLoginError.fromCode(5120, extraMessage, cause);
164
+ }
162
165
  }
163
166
  _defineProperty(WalletLoginError, "messages", {
164
167
  5000: "Custom",
@@ -170,7 +173,8 @@ _defineProperty(WalletLoginError, "messages", {
170
173
  5116: "Chain config has not been added. Please add the chain config before calling switchChain",
171
174
  5117: "Unsupported operation",
172
175
  5118: "useSFAKey flag is enabled but SFA key is not available",
173
- 5119: "User not logged in."
176
+ 5119: "User not logged in.",
177
+ 5120: "User is blocked by the application"
174
178
  });
175
179
  class WalletOperationsError extends Web3AuthError {
176
180
  constructor(code, message, cause) {
@@ -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.1.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==`;
@@ -209,7 +209,8 @@ class AuthConnector extends baseConnector.BaseConnector {
209
209
  return {
210
210
  ethereumProvider: this.provider,
211
211
  solanaWallet: this._solanaWallet,
212
- connectorName: this.name
212
+ connectorName: this.name,
213
+ connectorNamespace: this.connectorNamespace
213
214
  };
214
215
  } catch (error) {
215
216
  var _error$message;
@@ -816,6 +817,7 @@ class AuthConnector extends baseConnector.BaseConnector {
816
817
  }
817
818
  throw index.WalletLoginError.sfaKeyNotFound("This typically occurs when the authentication method used does not provide SFA keys (e.g., default auth connection).");
818
819
  }
820
+ const connectorNamespace = this.connectorNamespace;
819
821
  // setup WS embed if chainNamespace is EIP155 or SOLANA
820
822
  if (chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155 || chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) {
821
823
  // wait for ws embed instance to be ready.
@@ -841,7 +843,8 @@ class AuthConnector extends baseConnector.BaseConnector {
841
843
  connectorName: index$1.WALLET_CONNECTORS.AUTH,
842
844
  reconnected: this.rehydrated,
843
845
  ethereumProvider: this.provider,
844
- solanaWallet: this._solanaWallet
846
+ solanaWallet: this._solanaWallet,
847
+ connectorNamespace
845
848
  });
846
849
  if (params.getAuthTokenInfo) {
847
850
  await this.getAuthTokenInfo();
@@ -858,7 +861,8 @@ class AuthConnector extends baseConnector.BaseConnector {
858
861
  connectorName: index$1.WALLET_CONNECTORS.AUTH,
859
862
  ethereumProvider: this.provider,
860
863
  solanaWallet: this._solanaWallet,
861
- reconnected: this.rehydrated
864
+ reconnected: this.rehydrated,
865
+ connectorNamespace
862
866
  });
863
867
  }
864
868
  }
@@ -959,7 +963,12 @@ class AuthConnector extends baseConnector.BaseConnector {
959
963
  if (error instanceof index.Web3AuthError) {
960
964
  throw error;
961
965
  }
962
- reject(index.WalletLoginError.connectionError(error instanceof Error ? error.message : error || "Failed to login with social"));
966
+ const errorMessage = error instanceof Error ? error.message : error;
967
+ if (errorMessage === "Access control denied") {
968
+ reject(index.WalletLoginError.userBlocked(errorMessage, error));
969
+ return;
970
+ }
971
+ reject(index.WalletLoginError.connectionError(errorMessage || "Failed to login with social"));
963
972
  });
964
973
  });
965
974
  }
@@ -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;
@@ -112,15 +112,15 @@ class CoinbaseConnector extends baseEvmConnector.BaseEvmConnector {
112
112
  connectorName: index.WALLET_CONNECTORS.COINBASE,
113
113
  reconnected: this.rehydrated,
114
114
  ethereumProvider: this.provider,
115
- solanaWallet: null
115
+ solanaWallet: null,
116
+ connectorNamespace: this.connectorNamespace
116
117
  });
117
- if (getAuthTokenInfo) {
118
- await this.getAuthTokenInfo();
119
- }
118
+ await this.authorizeOrDisconnect(getAuthTokenInfo);
120
119
  return {
121
120
  ethereumProvider: this.provider,
122
121
  solanaWallet: null,
123
- connectorName: this.name
122
+ connectorName: this.name,
123
+ connectorNamespace: this.connectorNamespace
124
124
  };
125
125
  } catch (error) {
126
126
  // ready again to be connected
@@ -101,19 +101,20 @@ class InjectedEvmConnector extends baseEvmConnector.BaseEvmConnector {
101
101
  }
102
102
  };
103
103
  this.injectedProvider.on("accountsChanged", accountDisconnectHandler);
104
+ const connectorNamespace = this.connectorNamespace;
104
105
  this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
105
106
  connectorName: this.name,
106
107
  reconnected: this.rehydrated,
107
108
  ethereumProvider: this.injectedProvider,
108
- solanaWallet: null
109
+ solanaWallet: null,
110
+ connectorNamespace
109
111
  });
110
- if (getAuthTokenInfo) {
111
- await this.getAuthTokenInfo();
112
- }
112
+ await this.authorizeOrDisconnect(getAuthTokenInfo);
113
113
  return {
114
114
  ethereumProvider: this.injectedProvider,
115
115
  solanaWallet: null,
116
- connectorName: this.name
116
+ connectorName: this.name,
117
+ connectorNamespace
117
118
  };
118
119
  } catch (error) {
119
120
  // ready again to be connected
@@ -88,19 +88,20 @@ class WalletStandardConnector extends baseSolanaConnector.BaseSolanaConnector {
88
88
  }
89
89
  if (this.wallet.accounts.length === 0) throw index.WalletLoginError.connectionError();
90
90
  this.status = constants.CONNECTOR_STATUS.CONNECTED;
91
+ const connectorNamespace = this.connectorNamespace;
91
92
  this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
92
93
  connectorName: this.name,
93
94
  reconnected: this.rehydrated,
94
95
  ethereumProvider: null,
95
- solanaWallet: this.solanaWallet
96
+ solanaWallet: this.solanaWallet,
97
+ connectorNamespace
96
98
  });
97
- if (getAuthTokenInfo) {
98
- await this.getAuthTokenInfo();
99
- }
99
+ await this.authorizeOrDisconnect(getAuthTokenInfo);
100
100
  return {
101
101
  ethereumProvider: null,
102
102
  solanaWallet: this.solanaWallet,
103
- connectorName: this.name
103
+ connectorName: this.name,
104
+ connectorNamespace
104
105
  };
105
106
  } catch (error) {
106
107
  // ready again to be connected