@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.
- package/dist/lib.cjs/base/connector/baseConnector.js +42 -11
- package/dist/lib.cjs/base/errors/index.js +5 -1
- package/dist/lib.cjs/base/utils.js +1 -1
- package/dist/lib.cjs/base/wallet/index.js +3 -1
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +13 -4
- package/dist/lib.cjs/connectors/base-account-connector/baseAccountConnector.js +211 -0
- package/dist/lib.cjs/connectors/base-account-connector/index.js +7 -0
- package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +5 -5
- package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +6 -5
- package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +6 -5
- package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +82 -31
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +8 -6
- package/dist/lib.cjs/index.js +1 -0
- package/dist/lib.cjs/noModal.js +44 -21
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -2
- package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +10 -0
- package/dist/lib.cjs/react/solana/provider.js +65 -32
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +2 -1
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +1 -0
- package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +3 -0
- package/dist/lib.cjs/types/base/errors/index.d.ts +1 -0
- package/dist/lib.cjs/types/base/interfaces.d.ts +2 -1
- package/dist/lib.cjs/types/base/wallet/index.d.ts +3 -0
- package/dist/lib.cjs/types/connectors/base-account-connector/baseAccountConnector.d.ts +10 -0
- package/dist/lib.cjs/types/connectors/base-account-connector/index.d.ts +1 -0
- package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +1 -0
- package/dist/lib.cjs/types/vue/solana/provider.d.ts +2 -2
- package/dist/lib.cjs/vue/solana/provider.js +55 -21
- package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +12 -2
- package/dist/lib.esm/base/connector/baseConnector.js +42 -11
- package/dist/lib.esm/base/errors/index.js +5 -1
- package/dist/lib.esm/base/utils.js +1 -1
- package/dist/lib.esm/base/wallet/index.js +3 -1
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +13 -5
- package/dist/lib.esm/connectors/base-account-connector/baseAccountConnector.js +198 -0
- package/dist/lib.esm/connectors/base-account-connector/index.js +1 -0
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +5 -5
- package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +6 -5
- package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +6 -5
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +86 -31
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +8 -7
- package/dist/lib.esm/index.js +1 -1
- package/dist/lib.esm/noModal.js +46 -22
- package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -2
- package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +10 -0
- package/dist/lib.esm/react/solana/provider.js +64 -30
- package/dist/lib.esm/vue/solana/provider.js +55 -19
- package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +10 -0
- 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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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.
|
|
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
|
-
|
|
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;
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|