@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
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import { StandardConnect, StandardDisconnect } from '@wallet-standard/features';
|
|
3
|
-
import { BaseSolanaConnector } from '../base-solana-connector/baseSolanaConnector.js';
|
|
4
3
|
import { normalizeWalletName } from '../../base/utils.js';
|
|
4
|
+
import { BaseSolanaConnector } from '../base-solana-connector/baseSolanaConnector.js';
|
|
5
5
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
6
|
-
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
7
|
-
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
8
6
|
import { log } from '../../base/loglevel.js';
|
|
9
7
|
import { WalletLoginError } 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
10
|
import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
|
|
11
11
|
|
|
12
12
|
class WalletStandardConnector extends BaseSolanaConnector {
|
|
@@ -9,14 +9,14 @@ import { StandardConnect } from '@wallet-standard/features';
|
|
|
9
9
|
import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
10
10
|
import { generateSiweNonce } from 'viem/siwe';
|
|
11
11
|
import { getSiteName } from '../utils.js';
|
|
12
|
-
import { ANALYTICS_EVENTS } from '../../base/analytics.js';
|
|
13
|
-
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
14
12
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
15
|
-
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
16
13
|
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
17
14
|
import { getCaipChainId, citadelServerUrl } from '../../base/utils.js';
|
|
18
|
-
import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
|
|
19
15
|
import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
16
|
+
import { ANALYTICS_EVENTS } from '../../base/analytics.js';
|
|
17
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
18
|
+
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
19
|
+
import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Configuration options for the MetaMask connector using \@metamask/connect-evm
|
|
@@ -175,14 +175,16 @@ class MetaMaskConnector extends BaseConnector {
|
|
|
175
175
|
if (coreStatus === "connected") {
|
|
176
176
|
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
177
177
|
this.rehydrated = true;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
178
|
+
if (options.autoConnect) {
|
|
179
|
+
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
180
|
+
connectorName: WALLET_CONNECTORS.METAMASK,
|
|
181
|
+
reconnected: this.rehydrated,
|
|
182
|
+
ethereumProvider: this.evmProvider,
|
|
183
|
+
solanaWallet: this.solanaProvider
|
|
184
|
+
});
|
|
185
|
+
if (options.getAuthTokenInfo) {
|
|
186
|
+
await this.getAuthTokenInfo();
|
|
187
|
+
}
|
|
186
188
|
}
|
|
187
189
|
} else if (coreStatus === "loaded" || coreStatus === "disconnected") {
|
|
188
190
|
this.status = CONNECTOR_STATUS.READY;
|
|
@@ -204,13 +206,15 @@ class MetaMaskConnector extends BaseConnector {
|
|
|
204
206
|
}
|
|
205
207
|
async connect({
|
|
206
208
|
chainId,
|
|
207
|
-
getAuthTokenInfo
|
|
209
|
+
getAuthTokenInfo,
|
|
210
|
+
caipAccountIds: caipAccountIdsFromParams
|
|
208
211
|
}) {
|
|
209
212
|
super.checkConnectionRequirements();
|
|
210
213
|
await this.ensureInitialized();
|
|
211
214
|
const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
212
215
|
if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
213
216
|
const scopes = this.coreOptions.chains.map(c => getCaipChainId(c));
|
|
217
|
+
const caipAccountIds = caipAccountIdsFromParams || [];
|
|
214
218
|
|
|
215
219
|
// Skip tracking for rehydration since only new connections are tracked
|
|
216
220
|
const shouldTrack = !this.rehydrated;
|
|
@@ -238,7 +242,7 @@ class MetaMaskConnector extends BaseConnector {
|
|
|
238
242
|
});
|
|
239
243
|
|
|
240
244
|
// Connect using the multichain client
|
|
241
|
-
await this.multichainClient.connect(scopes,
|
|
245
|
+
await this.multichainClient.connect(scopes, caipAccountIds, {
|
|
242
246
|
solana_accountChanged_notifications: true
|
|
243
247
|
});
|
|
244
248
|
|
|
@@ -330,7 +334,9 @@ class MetaMaskConnector extends BaseConnector {
|
|
|
330
334
|
this.status = CONNECTOR_STATUS.READY;
|
|
331
335
|
}
|
|
332
336
|
this.rehydrated = false;
|
|
333
|
-
this.emit(CONNECTOR_EVENTS.DISCONNECTED
|
|
337
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED, {
|
|
338
|
+
connector: WALLET_CONNECTORS.METAMASK
|
|
339
|
+
});
|
|
334
340
|
}
|
|
335
341
|
async getAuthTokenInfo() {
|
|
336
342
|
var _this$evmProvider2, _this$coreOptions$cha;
|
|
@@ -341,10 +347,6 @@ class MetaMaskConnector extends BaseConnector {
|
|
|
341
347
|
const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
|
|
342
348
|
const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
|
|
343
349
|
if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
344
|
-
this.status = CONNECTOR_STATUS.AUTHORIZING;
|
|
345
|
-
this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
|
|
346
|
-
connector: WALLET_CONNECTORS.METAMASK
|
|
347
|
-
});
|
|
348
350
|
const {
|
|
349
351
|
chainNamespace
|
|
350
352
|
} = activeChainConfig;
|
|
@@ -354,37 +356,22 @@ class MetaMaskConnector extends BaseConnector {
|
|
|
354
356
|
if (accounts && accounts.length > 0) {
|
|
355
357
|
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
356
358
|
if (cached) return cached;
|
|
357
|
-
const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
358
|
-
const payload = {
|
|
359
|
-
domain: window.location.origin,
|
|
360
|
-
uri: window.location.href,
|
|
361
|
-
address: accounts[0],
|
|
362
|
-
chainId: parseInt(activeChainConfig.chainId, 16),
|
|
363
|
-
version: "1",
|
|
364
|
-
nonce: generateSiweNonce(),
|
|
365
|
-
issuedAt: new Date().toISOString()
|
|
366
|
-
};
|
|
367
|
-
const challenge = await signChallenge(payload, chainNamespace, authServer);
|
|
368
|
-
let signedMessage;
|
|
369
|
-
if (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
|
|
370
|
-
signedMessage = await walletSignMessage(this.solanaProvider, challenge, accounts[0]);
|
|
371
|
-
} else if (this.evmProvider) {
|
|
372
|
-
const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
|
|
373
|
-
signedMessage = await this.evmProvider.request({
|
|
374
|
-
method: EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
375
|
-
params: [hexChallenge, accounts[0]]
|
|
376
|
-
});
|
|
377
|
-
} else {
|
|
378
|
-
throw WalletLoginError.notConnectedError("No provider available for signing");
|
|
379
|
-
}
|
|
380
|
-
return this.verifyAndAuthorize({
|
|
381
|
-
chainNamespace,
|
|
382
|
-
signedMessage,
|
|
383
|
-
challenge,
|
|
384
|
-
authServer
|
|
385
|
-
});
|
|
386
359
|
}
|
|
387
|
-
|
|
360
|
+
this.status = CONNECTOR_STATUS.AUTHORIZING;
|
|
361
|
+
this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
|
|
362
|
+
connector: WALLET_CONNECTORS.METAMASK
|
|
363
|
+
});
|
|
364
|
+
const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
365
|
+
const {
|
|
366
|
+
challenge,
|
|
367
|
+
signature
|
|
368
|
+
} = await this.generateChallengeAndSign(authServer, accounts);
|
|
369
|
+
return this.verifyAndAuthorize({
|
|
370
|
+
chainNamespace,
|
|
371
|
+
signedMessage: signature,
|
|
372
|
+
challenge,
|
|
373
|
+
authServer
|
|
374
|
+
});
|
|
388
375
|
}
|
|
389
376
|
async getUserInfo() {
|
|
390
377
|
if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
@@ -419,6 +406,50 @@ class MetaMaskConnector extends BaseConnector {
|
|
|
419
406
|
chainConfiguration
|
|
420
407
|
});
|
|
421
408
|
}
|
|
409
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
410
|
+
var _this$evmProvider3, _this$coreOptions$cha2;
|
|
411
|
+
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 === CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha2 === void 0 ? void 0 : _this$coreOptions$cha2.chainId);
|
|
412
|
+
const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
|
|
413
|
+
const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
|
|
414
|
+
if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
415
|
+
const {
|
|
416
|
+
chainNamespace
|
|
417
|
+
} = activeChainConfig;
|
|
418
|
+
const accountsToUse = accounts || (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
|
|
419
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
420
|
+
}) : []);
|
|
421
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
422
|
+
throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
423
|
+
}
|
|
424
|
+
const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
425
|
+
const payload = {
|
|
426
|
+
domain: window.location.origin,
|
|
427
|
+
uri: window.location.href,
|
|
428
|
+
address: accountsToUse[0],
|
|
429
|
+
chainId: parseInt(activeChainConfig.chainId, 16),
|
|
430
|
+
version: "1",
|
|
431
|
+
nonce: generateSiweNonce(),
|
|
432
|
+
issuedAt: new Date().toISOString()
|
|
433
|
+
};
|
|
434
|
+
const challenge = await signChallenge(payload, chainNamespace, authServer);
|
|
435
|
+
let signedMessage;
|
|
436
|
+
if (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
|
|
437
|
+
signedMessage = await walletSignMessage(this.solanaProvider, challenge, accountsToUse[0]);
|
|
438
|
+
} else if (this.evmProvider) {
|
|
439
|
+
const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
|
|
440
|
+
signedMessage = await this.evmProvider.request({
|
|
441
|
+
method: EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
442
|
+
params: [hexChallenge, accountsToUse[0]]
|
|
443
|
+
});
|
|
444
|
+
} else {
|
|
445
|
+
throw WalletLoginError.notConnectedError("No provider available for signing");
|
|
446
|
+
}
|
|
447
|
+
return {
|
|
448
|
+
challenge,
|
|
449
|
+
signature: signedMessage,
|
|
450
|
+
chainNamespace
|
|
451
|
+
};
|
|
452
|
+
}
|
|
422
453
|
async enableMFA() {
|
|
423
454
|
throw new Error("Method Not implemented");
|
|
424
455
|
}
|
|
@@ -5,10 +5,10 @@ import { providerErrors, JRPCEngineV2, providerFromEngineV2 } from '@web3auth/au
|
|
|
5
5
|
import { formatChainId } from './utils.js';
|
|
6
6
|
import { switchChain, addChain, getAccounts, getEthProviderHandlers } from './walletConnectV2Utils.js';
|
|
7
7
|
import { BaseProvider } from '../../providers/base-provider/baseProvider.js';
|
|
8
|
-
import { createEthMiddleware, createEthChainSwitchMiddleware } from '../../providers/ethereum-provider/rpc/ethRpcMiddlewares.js';
|
|
9
|
-
import { createEthJsonRpcClient } from '../../providers/ethereum-provider/rpc/jrpcClient.js';
|
|
10
8
|
import { WalletLoginError } from '../../base/errors/index.js';
|
|
11
9
|
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
10
|
+
import { createEthMiddleware, createEthChainSwitchMiddleware } from '../../providers/ethereum-provider/rpc/ethRpcMiddlewares.js';
|
|
11
|
+
import { createEthJsonRpcClient } from '../../providers/ethereum-provider/rpc/jrpcClient.js';
|
|
12
12
|
import { log } from '../../base/loglevel.js';
|
|
13
13
|
|
|
14
14
|
var _WalletConnectV2Provider;
|
|
@@ -9,15 +9,15 @@ import { generateSiweNonce } from 'viem/siwe';
|
|
|
9
9
|
import { getWalletConnectV2Settings } from './config.js';
|
|
10
10
|
import { WalletConnectV2Provider } from './WalletConnectV2Provider.js';
|
|
11
11
|
import { WCSolanaWallet } from './wcSolanaWallet.js';
|
|
12
|
-
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
13
12
|
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
14
13
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
15
|
-
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
16
14
|
import { WalletInitializationError, WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
17
15
|
import { log } from '../../base/loglevel.js';
|
|
18
16
|
import { getCaipChainId, citadelServerUrl } from '../../base/utils.js';
|
|
19
17
|
import { ANALYTICS_EVENTS } from '../../base/analytics.js';
|
|
20
18
|
import { SOLANA_CAIP_CHAIN_MAP } from '../../base/constants.js';
|
|
19
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
20
|
+
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
21
21
|
import { walletSignMessage } from '../../base/wallet/solana.js';
|
|
22
22
|
|
|
23
23
|
class WalletConnectV2Connector extends BaseConnector {
|
|
@@ -254,7 +254,9 @@ class WalletConnectV2Connector extends BaseConnector {
|
|
|
254
254
|
this.status = CONNECTOR_STATUS.READY;
|
|
255
255
|
}
|
|
256
256
|
this.activeSession = null;
|
|
257
|
-
this.emit(CONNECTOR_EVENTS.DISCONNECTED
|
|
257
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED, {
|
|
258
|
+
connector: WALLET_CONNECTORS.WALLET_CONNECT_V2
|
|
259
|
+
});
|
|
258
260
|
}
|
|
259
261
|
async getAuthTokenInfo() {
|
|
260
262
|
if (!this.provider || !this.canAuthorize) throw WalletLoginError.notConnectedError();
|
|
@@ -276,27 +278,53 @@ class WalletConnectV2Connector extends BaseConnector {
|
|
|
276
278
|
if (accounts && accounts.length > 0) {
|
|
277
279
|
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
278
280
|
if (cached) return cached;
|
|
279
|
-
const payload = {
|
|
280
|
-
domain: window.location.origin,
|
|
281
|
-
uri: window.location.href,
|
|
282
|
-
address: accounts[0],
|
|
283
|
-
chainId: parseInt(chainId, 16),
|
|
284
|
-
version: "1",
|
|
285
|
-
nonce: generateSiweNonce(),
|
|
286
|
-
issuedAt: new Date().toISOString()
|
|
287
|
-
};
|
|
288
281
|
const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
289
|
-
const
|
|
290
|
-
|
|
282
|
+
const {
|
|
283
|
+
challenge,
|
|
284
|
+
signature
|
|
285
|
+
} = await this.generateChallengeAndSign(authServer, accounts);
|
|
291
286
|
return this.verifyAndAuthorize({
|
|
292
287
|
chainNamespace,
|
|
293
|
-
signedMessage:
|
|
288
|
+
signedMessage: signature,
|
|
294
289
|
challenge,
|
|
295
290
|
authServer
|
|
296
291
|
});
|
|
297
292
|
}
|
|
298
293
|
throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
299
294
|
}
|
|
295
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
296
|
+
const {
|
|
297
|
+
chainId
|
|
298
|
+
} = this.provider;
|
|
299
|
+
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
300
|
+
if (!currentChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
301
|
+
const {
|
|
302
|
+
chainNamespace
|
|
303
|
+
} = currentChainConfig;
|
|
304
|
+
const accountsToUse = accounts || (chainNamespace === CHAIN_NAMESPACES.SOLANA && this._solanaWallet ? this._solanaWallet.accounts.map(a => a.address) : await this.provider.request({
|
|
305
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
306
|
+
}));
|
|
307
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
308
|
+
throw WalletLoginError.notConnectedError("No accounts found in the connected wallet");
|
|
309
|
+
}
|
|
310
|
+
const payload = {
|
|
311
|
+
domain: window.location.origin,
|
|
312
|
+
uri: window.location.href,
|
|
313
|
+
address: accountsToUse[0],
|
|
314
|
+
chainId: parseInt(chainId, 16),
|
|
315
|
+
version: "1",
|
|
316
|
+
nonce: generateSiweNonce(),
|
|
317
|
+
issuedAt: new Date().toISOString()
|
|
318
|
+
};
|
|
319
|
+
const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
320
|
+
const challenge = await signChallenge(payload, chainNamespace, authServer);
|
|
321
|
+
const signature = await this._getSignedMessage(challenge, accountsToUse, chainNamespace);
|
|
322
|
+
return {
|
|
323
|
+
challenge,
|
|
324
|
+
signature,
|
|
325
|
+
chainNamespace
|
|
326
|
+
};
|
|
327
|
+
}
|
|
300
328
|
async enableMFA() {
|
|
301
329
|
throw new Error("Method Not implemented");
|
|
302
330
|
}
|
|
@@ -6,8 +6,8 @@ import { StandardEvents, StandardDisconnect, StandardConnect } from '@wallet-sta
|
|
|
6
6
|
import { SOLANA_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
7
7
|
import { sendJrpcRequest, getSolanaAccounts } from './walletConnectV2Utils.js';
|
|
8
8
|
import { WEB3AUTH_ICON } from '../../base/wallet/index.js';
|
|
9
|
-
import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
|
|
10
9
|
import { SOLANA_CAIP_CHAIN_MAP } from '../../base/constants.js';
|
|
10
|
+
import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
|
|
11
11
|
|
|
12
12
|
const base58Encoder = getBase58Encoder();
|
|
13
13
|
const base58Decoder = getBase58Decoder();
|
package/dist/lib.esm/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Web3AuthNoModal } from './noModal.js';
|
|
2
2
|
export { ANALYTICS_EVENTS, ANALYTICS_INTEGRATION_TYPE, ANALYTICS_SDK_TYPE, Analytics } from './base/analytics.js';
|
|
3
3
|
export { AUTH_CONNECTION, MFA_FACTOR, MFA_LEVELS, UX_MODE, WEB3AUTH_NETWORK, getED25519Key } from '@web3auth/auth';
|
|
4
|
+
export { AccountLinkingError, WalletInitializationError, WalletLoginError, WalletOperationsError, WalletProviderError, Web3AuthError } from './base/errors/index.js';
|
|
4
5
|
export { BUTTON_POSITION, CONFIRMATION_STRATEGY } from '@web3auth/ws-embed';
|
|
5
6
|
export { BaseConnector } from './base/connector/baseConnector.js';
|
|
6
7
|
export { BaseEvmConnector } from './connectors/base-evm-connector/baseEvmConnector.js';
|
|
@@ -20,13 +21,12 @@ export { EIP_7702_SUPPORTED_SMART_ACCOUNTS, LOGIN_MODE, MODAL_SIGN_IN_METHODS, S
|
|
|
20
21
|
export { EVM_PLUGINS, PLUGIN_EVENTS, PLUGIN_NAMESPACES, PLUGIN_STATUS, SOLANA_PLUGINS, WALLET_PLUGINS } from './base/plugin/IPlugin.js';
|
|
21
22
|
export { PROVIDER_EVENTS } from './base/provider/IProvider.js';
|
|
22
23
|
export { WalletConnectV2Provider } from './connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js';
|
|
23
|
-
export { WalletInitializationError, WalletLoginError, WalletOperationsError, WalletProviderError, Web3AuthError } from './base/errors/index.js';
|
|
24
24
|
export { WalletServicesPluginError } from './base/plugin/errors.js';
|
|
25
25
|
export { Web3AuthContextKey } from './base/composables/index.js';
|
|
26
26
|
export { accountAbstractionProvider, toEoaProvider } from './providers/account-abstraction-provider/providers/AccountAbstractionProvider.js';
|
|
27
|
-
export { authConnector } from './connectors/auth-connector/authConnector.js';
|
|
27
|
+
export { assertAuthConnector, authConnector, isAuthConnector } from './connectors/auth-connector/authConnector.js';
|
|
28
28
|
export { checkIfTokenIsExpired, storageAvailable } from './base/connector/utils.js';
|
|
29
|
-
export { citadelServerUrl, dashboardPublicApiUrl, fetchProjectConfig, fetchWalletRegistry, fromViemChain, fromWagmiChain, getAaAnalyticsProperties, getCaipChainId, getErrorAnalyticsProperties, getHostname, getWalletServicesAnalyticsProperties, getWhitelabelAnalyticsProperties, isBrowser, isHexStrict, normalizeWalletName, sdkVersion, withAbort } from './base/utils.js';
|
|
29
|
+
export { citadelServerUrl, dashboardPublicApiUrl, fetchProjectConfig, fetchWalletRegistry, fromViemChain, fromWagmiChain, getAaAnalyticsProperties, getCaipChainId, getErrorAnalyticsProperties, getHostname, getWalletServicesAnalyticsProperties, getWhitelabelAnalyticsProperties, isBrowser, isHexStrict, normalizeWalletName, parseChainNamespaceFromCitadelResponse, sdkVersion, withAbort } from './base/utils.js';
|
|
30
30
|
export { cookieToWeb3AuthState } from './base/cookie.js';
|
|
31
31
|
export { createEthChainSwitchMiddleware, createEthMiddleware } from './providers/ethereum-provider/rpc/ethRpcMiddlewares.js';
|
|
32
32
|
export { createEthJsonRpcClient } from './providers/ethereum-provider/rpc/jrpcClient.js';
|
|
@@ -37,6 +37,7 @@ export { getSolanaChainByChainConfig, walletSignAndSendTransaction, walletSignMe
|
|
|
37
37
|
export { hasSolanaWalletStandardFeatures } from './connectors/injected-solana-connector/index.js';
|
|
38
38
|
export { injectedEvmConnector } from './connectors/injected-evm-connector/injectedEvmConnector.js';
|
|
39
39
|
export { log } from './base/loglevel.js';
|
|
40
|
+
export { makeAccountLinkingRequest, makeAccountUnlinkingRequest } from './account-linking/rest.js';
|
|
40
41
|
export { metaMaskConnector } from './connectors/metamask-connector/metamaskConnector.js';
|
|
41
42
|
export { walletConnectV2Connector } from './connectors/wallet-connect-v2-connector/walletConnectV2Connector.js';
|
|
42
43
|
export { walletServicesPlugin } from './plugins/wallet-services-plugin/plugin.js';
|