@web3auth/no-modal 11.0.0-beta.0 → 11.0.0-beta.1
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/account-linking/index.js +8 -0
- package/dist/lib.cjs/account-linking/react.js +95 -0
- package/dist/lib.cjs/account-linking/rest.js +54 -0
- package/dist/lib.cjs/account-linking/vue.js +98 -0
- package/dist/lib.cjs/base/analytics.js +17 -2
- package/dist/lib.cjs/base/connector/constants.js +2 -0
- package/dist/lib.cjs/base/errors/index.js +48 -0
- package/dist/lib.cjs/base/utils.js +15 -3
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +427 -50
- package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +42 -23
- package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +41 -24
- package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +76 -45
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +41 -13
- package/dist/lib.cjs/index.js +20 -13
- package/dist/lib.cjs/noModal.js +811 -110
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +1 -1
- package/dist/lib.cjs/providers/base-provider/baseProvider.js +65 -33
- package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +34 -20
- package/dist/lib.cjs/react/hooks/useWallets.js +51 -0
- package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.cjs/react/index.js +2 -0
- package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +2 -2
- package/dist/lib.cjs/react/solana/provider.js +2 -0
- package/dist/lib.cjs/types/account-linking/index.d.ts +2 -0
- package/dist/lib.cjs/types/account-linking/interfaces.d.ts +90 -0
- package/dist/lib.cjs/types/account-linking/react.d.ts +19 -0
- package/dist/lib.cjs/types/account-linking/rest.d.ts +9 -0
- package/dist/lib.cjs/types/account-linking/vue.d.ts +20 -0
- package/dist/lib.cjs/types/base/analytics.d.ts +9 -0
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +5 -0
- package/dist/lib.cjs/types/base/connector/constants.d.ts +2 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +51 -6
- package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +39 -2
- package/dist/lib.cjs/types/base/errors/index.d.ts +13 -0
- package/dist/lib.cjs/types/base/interfaces.d.ts +3 -1
- package/dist/lib.cjs/types/base/utils.d.ts +7 -1
- package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +27 -3
- package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +77 -2
- package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +6 -0
- package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +6 -0
- package/dist/lib.cjs/types/index.d.ts +1 -0
- package/dist/lib.cjs/types/noModal.d.ts +104 -5
- package/dist/lib.cjs/types/providers/base-provider/baseProvider.d.ts +7 -0
- package/dist/lib.cjs/types/react/hooks/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/hooks/useWallets.d.ts +8 -0
- package/dist/lib.cjs/types/vue/composables/index.d.ts +1 -0
- package/dist/lib.cjs/types/vue/composables/useWallets.d.ts +9 -0
- package/dist/lib.cjs/vue/composables/useWallets.js +52 -0
- package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +2 -2
- package/dist/lib.cjs/vue/index.js +2 -0
- package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +2 -2
- package/dist/lib.cjs/vue/solana/provider.js +3 -0
- package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +13 -4
- package/dist/lib.cjs/vue/wagmi/provider.js +19 -7
- package/dist/lib.esm/account-linking/index.js +1 -0
- package/dist/lib.esm/account-linking/react.js +74 -0
- package/dist/lib.esm/account-linking/rest.js +51 -0
- package/dist/lib.esm/account-linking/vue.js +78 -0
- package/dist/lib.esm/base/analytics.js +17 -2
- package/dist/lib.esm/base/connector/constants.js +2 -0
- package/dist/lib.esm/base/errors/index.js +48 -1
- package/dist/lib.esm/base/utils.js +16 -4
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +386 -9
- package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +43 -24
- package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +43 -26
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +2 -2
- package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +2 -2
- package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +3 -3
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +80 -49
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +2 -2
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +43 -15
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +1 -1
- package/dist/lib.esm/index.js +4 -3
- package/dist/lib.esm/noModal.js +828 -119
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +3 -3
- package/dist/lib.esm/providers/base-provider/baseProvider.js +68 -38
- package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +36 -21
- package/dist/lib.esm/react/hooks/useWallets.js +33 -0
- package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/react/index.js +1 -0
- package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +2 -2
- package/dist/lib.esm/react/solana/provider.js +4 -1
- package/dist/lib.esm/react/wagmi/provider.js +1 -1
- package/dist/lib.esm/vue/composables/useCheckout.js +1 -1
- package/dist/lib.esm/vue/composables/useFunding.js +1 -1
- package/dist/lib.esm/vue/composables/useReceive.js +1 -1
- package/dist/lib.esm/vue/composables/useSwap.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletUI.js +1 -1
- package/dist/lib.esm/vue/composables/useWallets.js +35 -0
- package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/vue/index.js +1 -0
- package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +1 -1
- package/dist/lib.esm/vue/solana/composables/useSignMessage.js +1 -1
- package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +1 -1
- package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +2 -2
- package/dist/lib.esm/vue/solana/provider.js +4 -0
- package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +12 -3
- package/dist/lib.esm/vue/wagmi/provider.js +20 -8
- package/package.json +43 -19
|
@@ -35,39 +35,58 @@ class BaseEvmConnector extends baseConnector.BaseConnector {
|
|
|
35
35
|
if (accounts && accounts.length > 0) {
|
|
36
36
|
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
37
37
|
if (cached) return cached;
|
|
38
|
-
const
|
|
39
|
-
method: "eth_chainId"
|
|
40
|
-
});
|
|
41
|
-
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
42
|
-
if (!currentChainConfig) throw index.WalletInitializationError.invalidParams("chainConfig is required before authentication");
|
|
38
|
+
const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
43
39
|
const {
|
|
40
|
+
challenge,
|
|
41
|
+
signature,
|
|
44
42
|
chainNamespace
|
|
45
|
-
} =
|
|
46
|
-
const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
47
|
-
const payload = {
|
|
48
|
-
domain: window.location.origin,
|
|
49
|
-
uri: window.location.href,
|
|
50
|
-
address: accounts[0],
|
|
51
|
-
chainId: parseInt(chainId, 16),
|
|
52
|
-
version: "1",
|
|
53
|
-
nonce: siwe.generateSiweNonce(),
|
|
54
|
-
issuedAt: new Date().toISOString()
|
|
55
|
-
};
|
|
56
|
-
const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
|
|
57
|
-
const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
|
|
58
|
-
const signedMessage = await this.provider.request({
|
|
59
|
-
method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
60
|
-
params: [hexChallenge, accounts[0]]
|
|
61
|
-
});
|
|
43
|
+
} = await this.generateChallengeAndSign(authServer, accounts);
|
|
62
44
|
return this.verifyAndAuthorize({
|
|
63
45
|
chainNamespace,
|
|
64
|
-
signedMessage,
|
|
46
|
+
signedMessage: signature,
|
|
65
47
|
challenge,
|
|
66
48
|
authServer
|
|
67
49
|
});
|
|
68
50
|
}
|
|
69
51
|
throw index.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
70
52
|
}
|
|
53
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
54
|
+
const accountsToUse = accounts || (await this.provider.request({
|
|
55
|
+
method: wsEmbed.EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
56
|
+
}));
|
|
57
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
58
|
+
throw index.WalletLoginError.notConnectedError("No accounts found in the connected wallet");
|
|
59
|
+
}
|
|
60
|
+
const chainId = await this.provider.request({
|
|
61
|
+
method: "eth_chainId"
|
|
62
|
+
});
|
|
63
|
+
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
64
|
+
if (!currentChainConfig) throw index.WalletInitializationError.invalidParams("chainConfig is required before authentication");
|
|
65
|
+
const {
|
|
66
|
+
chainNamespace
|
|
67
|
+
} = currentChainConfig;
|
|
68
|
+
const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
69
|
+
const payload = {
|
|
70
|
+
domain: window.location.origin,
|
|
71
|
+
uri: window.location.href,
|
|
72
|
+
address: accountsToUse[0],
|
|
73
|
+
chainId: parseInt(chainId, 16),
|
|
74
|
+
version: "1",
|
|
75
|
+
nonce: siwe.generateSiweNonce(),
|
|
76
|
+
issuedAt: new Date().toISOString()
|
|
77
|
+
};
|
|
78
|
+
const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
|
|
79
|
+
const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
|
|
80
|
+
const signature = await this.provider.request({
|
|
81
|
+
method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
82
|
+
params: [hexChallenge, accountsToUse[0]]
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
challenge,
|
|
86
|
+
signature,
|
|
87
|
+
chainNamespace
|
|
88
|
+
};
|
|
89
|
+
}
|
|
71
90
|
async disconnectSession() {
|
|
72
91
|
super.checkDisconnectionRequirements();
|
|
73
92
|
await this.clearWalletSession();
|
|
@@ -32,40 +32,57 @@ class BaseSolanaConnector extends baseConnector.BaseConnector {
|
|
|
32
32
|
if (accounts.length > 0) {
|
|
33
33
|
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
34
34
|
if (cached) return cached;
|
|
35
|
-
const
|
|
36
|
-
const currentChainConfig = this.coreOptions.chains.find(c => {
|
|
37
|
-
if (c.chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) return false;
|
|
38
|
-
const id = solana.getSolanaChainByChainConfig(c);
|
|
39
|
-
return id != null && walletChains.has(id);
|
|
40
|
-
});
|
|
41
|
-
if (!currentChainConfig) {
|
|
42
|
-
throw index.WalletInitializationError.invalidParams("No Solana chain in common between the connected wallet and Web3Auth chain configuration");
|
|
43
|
-
}
|
|
35
|
+
const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
44
36
|
const {
|
|
45
|
-
|
|
37
|
+
challenge,
|
|
38
|
+
signature,
|
|
46
39
|
chainNamespace
|
|
47
|
-
} =
|
|
48
|
-
const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
49
|
-
const payload = {
|
|
50
|
-
domain: window.location.origin,
|
|
51
|
-
uri: window.location.href,
|
|
52
|
-
address: accounts[0],
|
|
53
|
-
chainId: parseInt(chainId, 16),
|
|
54
|
-
version: "1",
|
|
55
|
-
nonce: siwe.generateSiweNonce(),
|
|
56
|
-
issuedAt: new Date().toISOString()
|
|
57
|
-
};
|
|
58
|
-
const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
|
|
59
|
-
const signedMessage = await solana.walletSignMessage(this.solanaWallet, challenge, accounts[0]);
|
|
40
|
+
} = await this.generateChallengeAndSign(authServer);
|
|
60
41
|
return this.verifyAndAuthorize({
|
|
61
42
|
chainNamespace,
|
|
62
|
-
signedMessage,
|
|
43
|
+
signedMessage: signature,
|
|
63
44
|
challenge,
|
|
64
45
|
authServer
|
|
65
46
|
});
|
|
66
47
|
}
|
|
67
48
|
throw index.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
68
49
|
}
|
|
50
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
51
|
+
const accountsToUse = accounts || this.solanaWallet.accounts.map(a => a.address);
|
|
52
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
53
|
+
throw index.WalletLoginError.notConnectedError("No accounts found in the connected wallet");
|
|
54
|
+
}
|
|
55
|
+
const walletChains = new Set(this.solanaWallet.chains);
|
|
56
|
+
const currentChainConfig = this.coreOptions.chains.find(c => {
|
|
57
|
+
if (c.chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) return false;
|
|
58
|
+
const id = solana.getSolanaChainByChainConfig(c);
|
|
59
|
+
return id != null && walletChains.has(id);
|
|
60
|
+
});
|
|
61
|
+
if (!currentChainConfig) {
|
|
62
|
+
throw index.WalletInitializationError.invalidParams("No Solana chain in common between the connected wallet and Web3Auth chain configuration");
|
|
63
|
+
}
|
|
64
|
+
const {
|
|
65
|
+
chainId,
|
|
66
|
+
chainNamespace
|
|
67
|
+
} = currentChainConfig;
|
|
68
|
+
const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
69
|
+
const payload = {
|
|
70
|
+
domain: window.location.origin,
|
|
71
|
+
uri: window.location.href,
|
|
72
|
+
address: accountsToUse[0],
|
|
73
|
+
chainId: parseInt(chainId, 16),
|
|
74
|
+
version: "1",
|
|
75
|
+
nonce: siwe.generateSiweNonce(),
|
|
76
|
+
issuedAt: new Date().toISOString()
|
|
77
|
+
};
|
|
78
|
+
const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
|
|
79
|
+
const signedMessage = await solana.walletSignMessage(this.solanaWallet, challenge, accountsToUse[0]);
|
|
80
|
+
return {
|
|
81
|
+
challenge,
|
|
82
|
+
signature: signedMessage,
|
|
83
|
+
chainNamespace
|
|
84
|
+
};
|
|
85
|
+
}
|
|
69
86
|
async disconnectSession() {
|
|
70
87
|
super.checkDisconnectionRequirements();
|
|
71
88
|
await this.clearWalletSession();
|
|
@@ -173,14 +173,16 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
|
|
|
173
173
|
if (coreStatus === "connected") {
|
|
174
174
|
this.status = constants.CONNECTOR_STATUS.CONNECTED;
|
|
175
175
|
this.rehydrated = true;
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
176
|
+
if (options.autoConnect) {
|
|
177
|
+
this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
|
|
178
|
+
connectorName: index.WALLET_CONNECTORS.METAMASK,
|
|
179
|
+
reconnected: this.rehydrated,
|
|
180
|
+
ethereumProvider: this.evmProvider,
|
|
181
|
+
solanaWallet: this.solanaProvider
|
|
182
|
+
});
|
|
183
|
+
if (options.getAuthTokenInfo) {
|
|
184
|
+
await this.getAuthTokenInfo();
|
|
185
|
+
}
|
|
184
186
|
}
|
|
185
187
|
} else if (coreStatus === "loaded" || coreStatus === "disconnected") {
|
|
186
188
|
this.status = constants.CONNECTOR_STATUS.READY;
|
|
@@ -202,13 +204,15 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
|
|
|
202
204
|
}
|
|
203
205
|
async connect({
|
|
204
206
|
chainId,
|
|
205
|
-
getAuthTokenInfo
|
|
207
|
+
getAuthTokenInfo,
|
|
208
|
+
caipAccountIds: caipAccountIdsFromParams
|
|
206
209
|
}) {
|
|
207
210
|
super.checkConnectionRequirements();
|
|
208
211
|
await this.ensureInitialized();
|
|
209
212
|
const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
210
213
|
if (!chainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
|
|
211
214
|
const scopes = this.coreOptions.chains.map(c => utils.getCaipChainId(c));
|
|
215
|
+
const caipAccountIds = caipAccountIdsFromParams || [];
|
|
212
216
|
// Skip tracking for rehydration since only new connections are tracked
|
|
213
217
|
const shouldTrack = !this.rehydrated;
|
|
214
218
|
const startTime = Date.now();
|
|
@@ -234,7 +238,7 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
|
|
|
234
238
|
});
|
|
235
239
|
});
|
|
236
240
|
// Connect using the multichain client
|
|
237
|
-
await this.multichainClient.connect(scopes,
|
|
241
|
+
await this.multichainClient.connect(scopes, caipAccountIds, {
|
|
238
242
|
solana_accountChanged_notifications: true
|
|
239
243
|
});
|
|
240
244
|
// Solana wallet-standard: `standard:events` change is not emitted from multichain
|
|
@@ -319,7 +323,9 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
|
|
|
319
323
|
this.status = constants.CONNECTOR_STATUS.READY;
|
|
320
324
|
}
|
|
321
325
|
this.rehydrated = false;
|
|
322
|
-
this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED
|
|
326
|
+
this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED, {
|
|
327
|
+
connector: index.WALLET_CONNECTORS.METAMASK
|
|
328
|
+
});
|
|
323
329
|
}
|
|
324
330
|
async getAuthTokenInfo() {
|
|
325
331
|
var _this$evmProvider2, _this$coreOptions$cha;
|
|
@@ -329,10 +335,6 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
|
|
|
329
335
|
const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
|
|
330
336
|
const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
|
|
331
337
|
if (!activeChainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
|
|
332
|
-
this.status = constants.CONNECTOR_STATUS.AUTHORIZING;
|
|
333
|
-
this.emit(constants.CONNECTOR_EVENTS.AUTHORIZING, {
|
|
334
|
-
connector: index.WALLET_CONNECTORS.METAMASK
|
|
335
|
-
});
|
|
336
338
|
const {
|
|
337
339
|
chainNamespace
|
|
338
340
|
} = activeChainConfig;
|
|
@@ -342,37 +344,22 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
|
|
|
342
344
|
if (accounts && accounts.length > 0) {
|
|
343
345
|
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
344
346
|
if (cached) return cached;
|
|
345
|
-
const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
346
|
-
const payload = {
|
|
347
|
-
domain: window.location.origin,
|
|
348
|
-
uri: window.location.href,
|
|
349
|
-
address: accounts[0],
|
|
350
|
-
chainId: parseInt(activeChainConfig.chainId, 16),
|
|
351
|
-
version: "1",
|
|
352
|
-
nonce: siwe.generateSiweNonce(),
|
|
353
|
-
issuedAt: new Date().toISOString()
|
|
354
|
-
};
|
|
355
|
-
const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
|
|
356
|
-
let signedMessage;
|
|
357
|
-
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
|
|
358
|
-
signedMessage = await solana.walletSignMessage(this.solanaProvider, challenge, accounts[0]);
|
|
359
|
-
} else if (this.evmProvider) {
|
|
360
|
-
const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
|
|
361
|
-
signedMessage = await this.evmProvider.request({
|
|
362
|
-
method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
363
|
-
params: [hexChallenge, accounts[0]]
|
|
364
|
-
});
|
|
365
|
-
} else {
|
|
366
|
-
throw index$1.WalletLoginError.notConnectedError("No provider available for signing");
|
|
367
|
-
}
|
|
368
|
-
return this.verifyAndAuthorize({
|
|
369
|
-
chainNamespace,
|
|
370
|
-
signedMessage,
|
|
371
|
-
challenge,
|
|
372
|
-
authServer
|
|
373
|
-
});
|
|
374
347
|
}
|
|
375
|
-
|
|
348
|
+
this.status = constants.CONNECTOR_STATUS.AUTHORIZING;
|
|
349
|
+
this.emit(constants.CONNECTOR_EVENTS.AUTHORIZING, {
|
|
350
|
+
connector: index.WALLET_CONNECTORS.METAMASK
|
|
351
|
+
});
|
|
352
|
+
const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
353
|
+
const {
|
|
354
|
+
challenge,
|
|
355
|
+
signature
|
|
356
|
+
} = await this.generateChallengeAndSign(authServer, accounts);
|
|
357
|
+
return this.verifyAndAuthorize({
|
|
358
|
+
chainNamespace,
|
|
359
|
+
signedMessage: signature,
|
|
360
|
+
challenge,
|
|
361
|
+
authServer
|
|
362
|
+
});
|
|
376
363
|
}
|
|
377
364
|
async getUserInfo() {
|
|
378
365
|
if (!this.canAuthorize) throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
@@ -407,6 +394,50 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
|
|
|
407
394
|
chainConfiguration
|
|
408
395
|
});
|
|
409
396
|
}
|
|
397
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
398
|
+
var _this$evmProvider3, _this$coreOptions$cha2;
|
|
399
|
+
const evmChainId = ((_this$evmProvider3 = this.evmProvider) === null || _this$evmProvider3 === void 0 ? void 0 : _this$evmProvider3.chainId) || ((_this$coreOptions$cha2 = this.coreOptions.chains.find(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha2 === void 0 ? void 0 : _this$coreOptions$cha2.chainId);
|
|
400
|
+
const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
|
|
401
|
+
const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
|
|
402
|
+
if (!activeChainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
|
|
403
|
+
const {
|
|
404
|
+
chainNamespace
|
|
405
|
+
} = activeChainConfig;
|
|
406
|
+
const accountsToUse = accounts || (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
|
|
407
|
+
method: wsEmbed.EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
408
|
+
}) : []);
|
|
409
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
410
|
+
throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
411
|
+
}
|
|
412
|
+
const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
413
|
+
const payload = {
|
|
414
|
+
domain: window.location.origin,
|
|
415
|
+
uri: window.location.href,
|
|
416
|
+
address: accountsToUse[0],
|
|
417
|
+
chainId: parseInt(activeChainConfig.chainId, 16),
|
|
418
|
+
version: "1",
|
|
419
|
+
nonce: siwe.generateSiweNonce(),
|
|
420
|
+
issuedAt: new Date().toISOString()
|
|
421
|
+
};
|
|
422
|
+
const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
|
|
423
|
+
let signedMessage;
|
|
424
|
+
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
|
|
425
|
+
signedMessage = await solana.walletSignMessage(this.solanaProvider, challenge, accountsToUse[0]);
|
|
426
|
+
} else if (this.evmProvider) {
|
|
427
|
+
const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
|
|
428
|
+
signedMessage = await this.evmProvider.request({
|
|
429
|
+
method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
430
|
+
params: [hexChallenge, accountsToUse[0]]
|
|
431
|
+
});
|
|
432
|
+
} else {
|
|
433
|
+
throw index$1.WalletLoginError.notConnectedError("No provider available for signing");
|
|
434
|
+
}
|
|
435
|
+
return {
|
|
436
|
+
challenge,
|
|
437
|
+
signature: signedMessage,
|
|
438
|
+
chainNamespace
|
|
439
|
+
};
|
|
440
|
+
}
|
|
410
441
|
async enableMFA() {
|
|
411
442
|
throw new Error("Method Not implemented");
|
|
412
443
|
}
|
|
@@ -258,7 +258,9 @@ class WalletConnectV2Connector extends baseConnector.BaseConnector {
|
|
|
258
258
|
this.status = constants.CONNECTOR_STATUS.READY;
|
|
259
259
|
}
|
|
260
260
|
this.activeSession = null;
|
|
261
|
-
this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED
|
|
261
|
+
this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED, {
|
|
262
|
+
connector: index.WALLET_CONNECTORS.WALLET_CONNECT_V2
|
|
263
|
+
});
|
|
262
264
|
}
|
|
263
265
|
async getAuthTokenInfo() {
|
|
264
266
|
if (!this.provider || !this.canAuthorize) throw index$1.WalletLoginError.notConnectedError();
|
|
@@ -280,27 +282,53 @@ class WalletConnectV2Connector extends baseConnector.BaseConnector {
|
|
|
280
282
|
if (accounts && accounts.length > 0) {
|
|
281
283
|
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
282
284
|
if (cached) return cached;
|
|
283
|
-
const payload = {
|
|
284
|
-
domain: window.location.origin,
|
|
285
|
-
uri: window.location.href,
|
|
286
|
-
address: accounts[0],
|
|
287
|
-
chainId: parseInt(chainId, 16),
|
|
288
|
-
version: "1",
|
|
289
|
-
nonce: siwe.generateSiweNonce(),
|
|
290
|
-
issuedAt: new Date().toISOString()
|
|
291
|
-
};
|
|
292
285
|
const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
293
|
-
const
|
|
294
|
-
|
|
286
|
+
const {
|
|
287
|
+
challenge,
|
|
288
|
+
signature
|
|
289
|
+
} = await this.generateChallengeAndSign(authServer, accounts);
|
|
295
290
|
return this.verifyAndAuthorize({
|
|
296
291
|
chainNamespace,
|
|
297
|
-
signedMessage:
|
|
292
|
+
signedMessage: signature,
|
|
298
293
|
challenge,
|
|
299
294
|
authServer
|
|
300
295
|
});
|
|
301
296
|
}
|
|
302
297
|
throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
303
298
|
}
|
|
299
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
300
|
+
const {
|
|
301
|
+
chainId
|
|
302
|
+
} = this.provider;
|
|
303
|
+
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
304
|
+
if (!currentChainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
|
|
305
|
+
const {
|
|
306
|
+
chainNamespace
|
|
307
|
+
} = currentChainConfig;
|
|
308
|
+
const accountsToUse = accounts || (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this._solanaWallet ? this._solanaWallet.accounts.map(a => a.address) : await this.provider.request({
|
|
309
|
+
method: wsEmbed.EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
310
|
+
}));
|
|
311
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
312
|
+
throw index$1.WalletLoginError.notConnectedError("No accounts found in the connected wallet");
|
|
313
|
+
}
|
|
314
|
+
const payload = {
|
|
315
|
+
domain: window.location.origin,
|
|
316
|
+
uri: window.location.href,
|
|
317
|
+
address: accountsToUse[0],
|
|
318
|
+
chainId: parseInt(chainId, 16),
|
|
319
|
+
version: "1",
|
|
320
|
+
nonce: siwe.generateSiweNonce(),
|
|
321
|
+
issuedAt: new Date().toISOString()
|
|
322
|
+
};
|
|
323
|
+
const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
324
|
+
const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
|
|
325
|
+
const signature = await this._getSignedMessage(challenge, accountsToUse, chainNamespace);
|
|
326
|
+
return {
|
|
327
|
+
challenge,
|
|
328
|
+
signature,
|
|
329
|
+
chainNamespace
|
|
330
|
+
};
|
|
331
|
+
}
|
|
304
332
|
async enableMFA() {
|
|
305
333
|
throw new Error("Method Not implemented");
|
|
306
334
|
}
|
package/dist/lib.cjs/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var rest = require('./account-linking/rest.js');
|
|
3
4
|
var analytics = require('./base/analytics.js');
|
|
4
5
|
var IChainInterface = require('./base/chain/IChainInterface.js');
|
|
5
6
|
var index$2 = require('./base/composables/index.js');
|
|
@@ -10,13 +11,13 @@ var auth = require('@web3auth/auth');
|
|
|
10
11
|
var utils$1 = require('./base/connector/utils.js');
|
|
11
12
|
var constants$1 = require('./base/constants.js');
|
|
12
13
|
var cookie = require('./base/cookie.js');
|
|
13
|
-
var index
|
|
14
|
+
var index = require('./base/errors/index.js');
|
|
14
15
|
var loglevel = require('./base/loglevel.js');
|
|
15
16
|
var errors = require('./base/plugin/errors.js');
|
|
16
17
|
var IPlugin = require('./base/plugin/IPlugin.js');
|
|
17
18
|
var IProvider = require('./base/provider/IProvider.js');
|
|
18
19
|
var utils$2 = require('./base/utils.js');
|
|
19
|
-
var index = require('./base/wallet/index.js');
|
|
20
|
+
var index$1 = require('./base/wallet/index.js');
|
|
20
21
|
var authConnector = require('./connectors/auth-connector/authConnector.js');
|
|
21
22
|
var baseEvmConnector = require('./connectors/base-evm-connector/baseEvmConnector.js');
|
|
22
23
|
var baseSolanaConnector = require('./connectors/base-solana-connector/baseSolanaConnector.js');
|
|
@@ -46,6 +47,8 @@ var walletStandardConnector = require('./connectors/injected-solana-connector/wa
|
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
|
|
50
|
+
exports.makeAccountLinkingRequest = rest.makeAccountLinkingRequest;
|
|
51
|
+
exports.makeAccountUnlinkingRequest = rest.makeAccountUnlinkingRequest;
|
|
49
52
|
exports.ANALYTICS_EVENTS = analytics.ANALYTICS_EVENTS;
|
|
50
53
|
exports.ANALYTICS_INTEGRATION_TYPE = analytics.ANALYTICS_INTEGRATION_TYPE;
|
|
51
54
|
exports.ANALYTICS_SDK_TYPE = analytics.ANALYTICS_SDK_TYPE;
|
|
@@ -95,11 +98,12 @@ exports.WALLET_REGISTRY_URL = constants$1.WALLET_REGISTRY_URL;
|
|
|
95
98
|
exports.WEB3AUTH_STATE_STORAGE_KEY = constants$1.WEB3AUTH_STATE_STORAGE_KEY;
|
|
96
99
|
exports.WIDGET_TYPE = constants$1.WIDGET_TYPE;
|
|
97
100
|
exports.cookieToWeb3AuthState = cookie.cookieToWeb3AuthState;
|
|
98
|
-
exports.
|
|
99
|
-
exports.
|
|
100
|
-
exports.
|
|
101
|
-
exports.
|
|
102
|
-
exports.
|
|
101
|
+
exports.AccountLinkingError = index.AccountLinkingError;
|
|
102
|
+
exports.WalletInitializationError = index.WalletInitializationError;
|
|
103
|
+
exports.WalletLoginError = index.WalletLoginError;
|
|
104
|
+
exports.WalletOperationsError = index.WalletOperationsError;
|
|
105
|
+
exports.WalletProviderError = index.WalletProviderError;
|
|
106
|
+
exports.Web3AuthError = index.Web3AuthError;
|
|
103
107
|
exports.log = loglevel.log;
|
|
104
108
|
exports.WalletServicesPluginError = errors.WalletServicesPluginError;
|
|
105
109
|
exports.EVM_PLUGINS = IPlugin.EVM_PLUGINS;
|
|
@@ -124,15 +128,18 @@ exports.getWhitelabelAnalyticsProperties = utils$2.getWhitelabelAnalyticsPropert
|
|
|
124
128
|
exports.isBrowser = utils$2.isBrowser;
|
|
125
129
|
exports.isHexStrict = utils$2.isHexStrict;
|
|
126
130
|
exports.normalizeWalletName = utils$2.normalizeWalletName;
|
|
131
|
+
exports.parseChainNamespaceFromCitadelResponse = utils$2.parseChainNamespaceFromCitadelResponse;
|
|
127
132
|
exports.sdkVersion = utils$2.sdkVersion;
|
|
128
133
|
exports.withAbort = utils$2.withAbort;
|
|
129
|
-
exports.CONNECTOR_NAMES = index.CONNECTOR_NAMES;
|
|
130
|
-
exports.EVM_CONNECTORS = index.EVM_CONNECTORS;
|
|
131
|
-
exports.MULTI_CHAIN_CONNECTORS = index.MULTI_CHAIN_CONNECTORS;
|
|
132
|
-
exports.SOLANA_CONNECTORS = index.SOLANA_CONNECTORS;
|
|
133
|
-
exports.WALLET_CONNECTORS = index.WALLET_CONNECTORS;
|
|
134
|
-
exports.WEB3AUTH_ICON = index.WEB3AUTH_ICON;
|
|
134
|
+
exports.CONNECTOR_NAMES = index$1.CONNECTOR_NAMES;
|
|
135
|
+
exports.EVM_CONNECTORS = index$1.EVM_CONNECTORS;
|
|
136
|
+
exports.MULTI_CHAIN_CONNECTORS = index$1.MULTI_CHAIN_CONNECTORS;
|
|
137
|
+
exports.SOLANA_CONNECTORS = index$1.SOLANA_CONNECTORS;
|
|
138
|
+
exports.WALLET_CONNECTORS = index$1.WALLET_CONNECTORS;
|
|
139
|
+
exports.WEB3AUTH_ICON = index$1.WEB3AUTH_ICON;
|
|
140
|
+
exports.assertAuthConnector = authConnector.assertAuthConnector;
|
|
135
141
|
exports.authConnector = authConnector.authConnector;
|
|
142
|
+
exports.isAuthConnector = authConnector.isAuthConnector;
|
|
136
143
|
exports.BaseEvmConnector = baseEvmConnector.BaseEvmConnector;
|
|
137
144
|
exports.BaseSolanaConnector = baseSolanaConnector.BaseSolanaConnector;
|
|
138
145
|
exports.injectedEvmConnector = injectedEvmConnector.injectedEvmConnector;
|