@dynamic-labs-sdk/evm 0.3.0 → 0.5.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/{addEIP6963Extension-CoWl2l6Z.esm.js → addEIP6963Extension-C9obd5mt.esm.js} +7 -5
- package/dist/addEIP6963Extension-C9obd5mt.esm.js.map +1 -0
- package/dist/{addEIP6963Extension-p7q1kdoR.cjs.js → addEIP6963Extension-CgvtCBas.cjs.js} +6 -4
- package/dist/addEIP6963Extension-CgvtCBas.cjs.js.map +1 -0
- package/dist/eip6963.cjs.js +2 -2
- package/dist/eip6963.esm.js +2 -2
- package/dist/index.cjs.js +2 -2
- package/dist/index.esm.js +2 -2
- package/dist/{package-BAS7rt6q.esm.js → package-BSFIt1-g.esm.js} +2 -2
- package/dist/package-BSFIt1-g.esm.js.map +1 -0
- package/dist/{package-BIOtbQlm.cjs.js → package-DXe9DIvt.cjs.js} +2 -2
- package/dist/package-DXe9DIvt.cjs.js.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.d.ts.map +1 -1
- package/dist/viem.cjs.js +1 -1
- package/dist/viem.esm.js +1 -1
- package/dist/waas.cjs.js +1 -1
- package/dist/waas.esm.js +1 -1
- package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map +1 -1
- package/dist/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.d.ts.map +1 -1
- package/dist/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.d.ts.map +1 -1
- package/dist/walletConnect/consts.d.ts +1 -1
- package/dist/walletConnect/consts.d.ts.map +1 -1
- package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts +2 -3
- package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts.map +1 -1
- package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/index.d.ts +2 -0
- package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/index.d.ts.map +1 -0
- package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts +3 -0
- package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts.map +1 -0
- package/dist/walletConnect.cjs.js +74 -61
- package/dist/walletConnect.cjs.js.map +1 -1
- package/dist/walletConnect.esm.js +76 -63
- package/dist/walletConnect.esm.js.map +1 -1
- package/package.json +6 -5
- package/dist/addEIP6963Extension-CoWl2l6Z.esm.js.map +0 -1
- package/dist/addEIP6963Extension-p7q1kdoR.cjs.js.map +0 -1
- package/dist/package-BAS7rt6q.esm.js.map +0 -1
- package/dist/package-BIOtbQlm.cjs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchActiveNetwork.d.ts","sourceRoot":"","sources":["../../../../src/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"switchActiveNetwork.d.ts","sourceRoot":"","sources":["../../../../src/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAG1C,KAAK,mBAAmB,GAAG,gBAAgB,CACzC,iBAAiB,CAAC,qBAAqB,CAAC,EACxC;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CACF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,mBAyEjC,CAAC"}
|
package/dist/viem.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_package = require('./package-
|
|
1
|
+
const require_package = require('./package-DXe9DIvt.cjs.js');
|
|
2
2
|
const require_mapNetworkDataToViemChain = require('./mapNetworkDataToViemChain-CvTDSkkK.cjs.js');
|
|
3
3
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
4
4
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
package/dist/viem.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
1
|
+
import { n as version, t as name } from "./package-BSFIt1-g.esm.js";
|
|
2
2
|
import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-B4YB-yZt.esm.js";
|
|
3
3
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
4
4
|
import { assertDefined, getDefaultClient, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
|
package/dist/waas.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_package = require('./package-
|
|
1
|
+
const require_package = require('./package-DXe9DIvt.cjs.js');
|
|
2
2
|
require('./registerEvmNetworkProviderBuilder-DDwm5_Df.cjs.js');
|
|
3
3
|
const require_addWaasEvmExtension = require('./addWaasEvmExtension-Cbj4c7W8.cjs.js');
|
|
4
4
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
package/dist/waas.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
1
|
+
import { n as version, t as name } from "./package-BSFIt1-g.esm.js";
|
|
2
2
|
import "./registerEvmNetworkProviderBuilder-CkGuzJNe.esm.js";
|
|
3
3
|
import { t as addWaasEvmExtension } from "./addWaasEvmExtension-E0T0QK9i.esm.js";
|
|
4
4
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addWalletConnectEvmExtension.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addWalletConnectEvmExtension.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gCAAgC,qBAAqB,CAAC;AAEnE,eAAO,MAAM,4BAA4B,8EAaxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectAndVerifyWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"connectAndVerifyWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAStF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oCAAoC,iEAE9C,OAAO,CAAC,6BAA6B,CAmFvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"connectWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAStF,KAAK,iCAAiC,GAAG;IACvC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,oCACC,iCAAiC,gEAEvE,OAAO,CAAC,6BAA6B,CA8DvC,CAAC"}
|
|
@@ -4,5 +4,5 @@ export declare const evmApiChainName: string;
|
|
|
4
4
|
*
|
|
5
5
|
* Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts
|
|
6
6
|
*/
|
|
7
|
-
export declare const evmMethods:
|
|
7
|
+
export declare const evmMethods: readonly ["personal_sign", "eth_sendTransaction", "eth_accounts", "eth_requestAccounts", "eth_call", "eth_getBalance", "eth_sendRawTransaction", "eth_sign", "eth_signTransaction", "eth_signTypedData", "eth_signTypedData_v3", "eth_signTypedData_v4", "wallet_switchEthereumChain", "wallet_addEthereumChain", "wallet_getPermissions", "wallet_requestPermissions", "wallet_registerOnboarding", "wallet_watchAsset", "wallet_scanQRCode", "wallet_sendCalls", "wallet_getCapabilities", "wallet_getCallsStatus", "wallet_showCallsStatus"];
|
|
8
8
|
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/walletConnect/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/walletConnect/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,UAAU,ihBA0Bb,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { DynamicClient } from '@dynamic-labs-sdk/client';
|
|
2
|
-
import type { SessionTypes } from '@walletconnect/types';
|
|
3
2
|
import type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';
|
|
4
3
|
type CreateWalletProviderFromEIP155SessionParams = {
|
|
5
|
-
|
|
4
|
+
sessionTopic: string;
|
|
6
5
|
};
|
|
7
|
-
export declare const createWalletProviderFromEIP155Session: ({
|
|
6
|
+
export declare const createWalletProviderFromEIP155Session: ({ sessionTopic }: CreateWalletProviderFromEIP155SessionParams, client: DynamicClient) => Promise<WalletConnectEvmWalletProvider>;
|
|
8
7
|
export {};
|
|
9
8
|
//# sourceMappingURL=createWalletProviderFromEIP155Session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletProviderFromEIP155Session.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"createWalletProviderFromEIP155Session.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAqB9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAE9F,KAAK,2CAA2C,GAAG;IACjD,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAaF,eAAO,MAAM,qCAAqC,qBAC9B,2CAA2C,UACrD,aAAa,KACpB,OAAO,CAAC,8BAA8B,CAyKxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/recoverEvmWalletConnectWalletProviders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recoverEvmWalletConnectWalletProviders.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAU9D,eAAO,MAAM,sCAAsC,WACzC,aAAa,kBA4BtB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_package = require('./package-
|
|
1
|
+
const require_package = require('./package-DXe9DIvt.cjs.js');
|
|
2
2
|
const require_registerEvmNetworkProviderBuilder = require('./registerEvmNetworkProviderBuilder-DDwm5_Df.cjs.js');
|
|
3
3
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
4
4
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
@@ -6,6 +6,7 @@ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
|
6
6
|
let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
|
|
7
7
|
let viem = require("viem");
|
|
8
8
|
let _dynamic_labs_sdk_wallet_connect_core = require("@dynamic-labs-sdk/wallet-connect/core");
|
|
9
|
+
let _dynamic_labs_sdk_wallet_connect = require("@dynamic-labs-sdk/wallet-connect");
|
|
9
10
|
let _walletconnect_utils = require("@walletconnect/utils");
|
|
10
11
|
|
|
11
12
|
//#region src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts
|
|
@@ -18,28 +19,46 @@ const methodsThatRequireUserAction = [
|
|
|
18
19
|
"eth_sendTransaction",
|
|
19
20
|
"eth_signTypedData_v4"
|
|
20
21
|
];
|
|
21
|
-
const createWalletProviderFromEIP155Session = async ({
|
|
22
|
-
const
|
|
22
|
+
const createWalletProviderFromEIP155Session = async ({ sessionTopic }, client) => {
|
|
23
|
+
const signClient = await (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client);
|
|
24
|
+
const getSession = () => {
|
|
25
|
+
const session = signClient.session.get(sessionTopic);
|
|
26
|
+
if (!session) {
|
|
27
|
+
disconnect();
|
|
28
|
+
throw new _dynamic_labs_sdk_wallet_connect.SessionClosedUnexpectedlyError({
|
|
29
|
+
sessionTopic,
|
|
30
|
+
walletDisplayName: displayName
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return session;
|
|
34
|
+
};
|
|
35
|
+
const displayName = getSession().peer.metadata.name;
|
|
23
36
|
const namespaceKey = "eip155";
|
|
24
37
|
const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.WalletConnect;
|
|
25
38
|
const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
|
|
26
39
|
chain: "EVM",
|
|
27
40
|
displayName,
|
|
28
|
-
suffix:
|
|
41
|
+
suffix: sessionTopic,
|
|
29
42
|
walletProviderType
|
|
30
43
|
});
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
const getActiveNetworkId = async () => {
|
|
45
|
+
getSession();
|
|
46
|
+
return await (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
|
|
47
|
+
client,
|
|
48
|
+
walletProviderKey: key
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
const switchActiveNetwork = async ({ networkId }) => {
|
|
52
|
+
getSession();
|
|
53
|
+
await (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
|
|
54
|
+
client,
|
|
55
|
+
networkId,
|
|
56
|
+
walletProviderKey: key
|
|
57
|
+
});
|
|
58
|
+
};
|
|
41
59
|
const request = async (args) => {
|
|
42
60
|
const { networkId } = await getActiveNetworkId();
|
|
61
|
+
const session = getSession();
|
|
43
62
|
if (methodsThatRequireUserAction.includes(args.method)) (0, _dynamic_labs_sdk_client_core.emitEvent)({
|
|
44
63
|
args: {
|
|
45
64
|
walletMetadata: session.peer.metadata,
|
|
@@ -50,16 +69,19 @@ const createWalletProviderFromEIP155Session = async ({ session }, client) => {
|
|
|
50
69
|
return signClient.request({
|
|
51
70
|
chainId: `${namespaceKey}:${networkId}`,
|
|
52
71
|
request: args,
|
|
53
|
-
topic:
|
|
72
|
+
topic: sessionTopic
|
|
54
73
|
});
|
|
55
74
|
};
|
|
56
75
|
const disconnect = async () => {
|
|
57
76
|
await signClient.disconnect({
|
|
58
77
|
reason: _walletconnect_utils.SDK_ERRORS.USER_DISCONNECTED,
|
|
59
|
-
topic:
|
|
78
|
+
topic: sessionTopic
|
|
60
79
|
});
|
|
61
|
-
|
|
80
|
+
(0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client).unregister(key);
|
|
62
81
|
};
|
|
82
|
+
/**
|
|
83
|
+
* We actually clear up the entire WC session and its wallet provider
|
|
84
|
+
*/
|
|
63
85
|
const disconnectWalletAccount = async () => disconnect();
|
|
64
86
|
const signMessage = async ({ message, walletAccount }) => {
|
|
65
87
|
const params = [message];
|
|
@@ -70,37 +92,15 @@ const createWalletProviderFromEIP155Session = async ({ session }, client) => {
|
|
|
70
92
|
}) };
|
|
71
93
|
};
|
|
72
94
|
const getConnectedAddresses = async () => {
|
|
73
|
-
return { addresses: (0, _dynamic_labs_sdk_client_core.filterDuplicates)(
|
|
95
|
+
return { addresses: (0, _dynamic_labs_sdk_client_core.filterDuplicates)(getSession().namespaces[namespaceKey].accounts.map((account) => (0, _dynamic_labs_sdk_wallet_connect_core.splitCaip10Token)(account).address)).map((address) => (0, viem.getAddress)(address)) };
|
|
74
96
|
};
|
|
75
97
|
const formatWalletAddress = ({ address }) => (0, viem.getAddress)(address);
|
|
76
|
-
const { cleanupEventEmitter, getEventEmitter } = (0,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (topic !== session.topic) return;
|
|
83
|
-
if (event.name === "chainChanged") {
|
|
84
|
-
const networkParam = event.data;
|
|
85
|
-
handleNetworkChanged({ networkId: networkParam.startsWith(`${namespaceKey}:`) ? networkParam.split(":")[1] : networkParam });
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (event.name === "accountsChanged") {
|
|
89
|
-
const accountsParam = event.data;
|
|
90
|
-
handleAccountsChanged({ addresses: (0, _dynamic_labs_sdk_client_core.filterDuplicates)(accountsParam.map((account) => {
|
|
91
|
-
if (account.startsWith(`${namespaceKey}:`)) return (0, _dynamic_labs_sdk_wallet_connect_core.splitCaip10Token)(account).address;
|
|
92
|
-
return account;
|
|
93
|
-
})) });
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (event.name === "disconnected") {
|
|
97
|
-
handleDisconnected();
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
signClient.on("session_event", handleSessionEvent);
|
|
102
|
-
return handleSessionEvent;
|
|
103
|
-
}
|
|
98
|
+
const { cleanupEventEmitter, getEventEmitter } = (0, _dynamic_labs_sdk_wallet_connect_core.createWalletConnectSessionEventEmitter)({
|
|
99
|
+
formatAddress: viem.getAddress,
|
|
100
|
+
getSession,
|
|
101
|
+
namespaceKey,
|
|
102
|
+
sessionTopic,
|
|
103
|
+
signClient
|
|
104
104
|
});
|
|
105
105
|
const terminate = async () => cleanupEventEmitter();
|
|
106
106
|
return {
|
|
@@ -113,23 +113,40 @@ const createWalletProviderFromEIP155Session = async ({ session }, client) => {
|
|
|
113
113
|
formatWalletAddress,
|
|
114
114
|
getActiveNetworkId,
|
|
115
115
|
getConnectedAddresses,
|
|
116
|
+
getSession,
|
|
116
117
|
groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(displayName),
|
|
117
118
|
key,
|
|
118
119
|
metadata: {
|
|
119
120
|
displayName,
|
|
120
|
-
icon:
|
|
121
|
+
icon: getSession().peer.metadata.icons[0]
|
|
121
122
|
},
|
|
122
123
|
namespaceKey,
|
|
123
124
|
request,
|
|
124
|
-
session,
|
|
125
125
|
signMessage,
|
|
126
126
|
switchActiveNetwork,
|
|
127
127
|
terminate,
|
|
128
|
-
topic: session.topic,
|
|
129
128
|
walletProviderType
|
|
130
129
|
};
|
|
131
130
|
};
|
|
132
131
|
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts
|
|
134
|
+
const recoverEvmWalletConnectWalletProviders = async (client) => {
|
|
135
|
+
await (0, _dynamic_labs_sdk_client_core.waitForProjectSettings)(client);
|
|
136
|
+
/**
|
|
137
|
+
* Recreate the wallet providers for all existing EVM sessions
|
|
138
|
+
*/
|
|
139
|
+
const sessions = (await (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client)).session.getAll();
|
|
140
|
+
for (const session of sessions) {
|
|
141
|
+
if (!("eip155" in session.namespaces)) continue;
|
|
142
|
+
const walletProvider = await createWalletProviderFromEIP155Session({ sessionTopic: session.topic }, client);
|
|
143
|
+
(0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client).register({
|
|
144
|
+
priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WALLET_SDK,
|
|
145
|
+
walletProvider
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
133
150
|
//#endregion
|
|
134
151
|
//#region src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts
|
|
135
152
|
const WALLET_CONNECT_EVM_EXTENSION_KEY = "walletConnectEvm";
|
|
@@ -137,13 +154,7 @@ const addWalletConnectEvmExtension = async (client = (0, _dynamic_labs_sdk_clien
|
|
|
137
154
|
if ((0, _dynamic_labs_sdk_client.hasExtension)({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)) return;
|
|
138
155
|
(0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);
|
|
139
156
|
require_registerEvmNetworkProviderBuilder.registerEvmNetworkProviderBuilder(client);
|
|
140
|
-
|
|
141
|
-
createWalletProviderFromSession: createWalletProviderFromEIP155Session,
|
|
142
|
-
namespaceKey: "eip155"
|
|
143
|
-
});
|
|
144
|
-
await (0, _dynamic_labs_sdk_client_core.waitForProjectSettings)(client);
|
|
145
|
-
(0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client);
|
|
146
|
-
await (0, _dynamic_labs_sdk_wallet_connect_core.initializeWalletConnectExtension)(client);
|
|
157
|
+
await recoverEvmWalletConnectWalletProviders(client);
|
|
147
158
|
};
|
|
148
159
|
|
|
149
160
|
//#endregion
|
|
@@ -200,9 +211,9 @@ const connectAndVerifyWithWalletConnectEvm = async (client = (0, _dynamic_labs_s
|
|
|
200
211
|
const signClient = await (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client);
|
|
201
212
|
const core = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
202
213
|
const apiClient = (0, _dynamic_labs_sdk_client_core.createApiClient)({}, client);
|
|
203
|
-
const
|
|
204
|
-
(0, _dynamic_labs_sdk_client_core.assertDefined)(
|
|
205
|
-
const url = new URL(
|
|
214
|
+
const universalLink = core.metadata?.universalLink;
|
|
215
|
+
(0, _dynamic_labs_sdk_client_core.assertDefined)(universalLink, "Universal link is not set");
|
|
216
|
+
const url = new URL(universalLink);
|
|
206
217
|
(0, _dynamic_labs_sdk_client_core.assertDefined)(client.projectSettings, "Project settings unavailable");
|
|
207
218
|
/**
|
|
208
219
|
* Customer enabled networks, with mainnet first if available.
|
|
@@ -247,7 +258,8 @@ const connectAndVerifyWithWalletConnectEvm = async (client = (0, _dynamic_labs_s
|
|
|
247
258
|
*/
|
|
248
259
|
const walletAccountsPromise = response().then((authResponse) => (0, _dynamic_labs_sdk_wallet_connect_core.importWalletConnectAuthResponse)({
|
|
249
260
|
authResponse,
|
|
250
|
-
chain: "EVM"
|
|
261
|
+
chain: "EVM",
|
|
262
|
+
walletProviderBuilder: createWalletProviderFromEIP155Session
|
|
251
263
|
}, client));
|
|
252
264
|
return {
|
|
253
265
|
approval: () => walletAccountsPromise,
|
|
@@ -290,7 +302,8 @@ const connectWithWalletConnectEvm = async ({ addToDynamicWalletAccounts = true }
|
|
|
290
302
|
(0, _dynamic_labs_sdk_client_core.assertDefined)(session.namespaces.eip155, `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(session.namespaces).join(", ")}`);
|
|
291
303
|
return (0, _dynamic_labs_sdk_wallet_connect_core.importWalletConnectSession)({
|
|
292
304
|
addToDynamicWalletAccounts,
|
|
293
|
-
session
|
|
305
|
+
sessionTopic: session.topic,
|
|
306
|
+
walletProviderBuilder: createWalletProviderFromEIP155Session
|
|
294
307
|
}, client);
|
|
295
308
|
});
|
|
296
309
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletConnect.cjs.js","names":["WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: WalletConnectEvmWalletProvider['disconnect']","SDK_ERRORS","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","terminate: WalletConnectEvmWalletProvider['terminate']","CHAINS_INFO_MAP","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n createWalletProviderEventEmitter,\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n getSignClient,\n splitCaip10Token,\n syncSessionsToWalletProviders,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { SessionTypes } from '@walletconnect/types';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n session: SessionTypes.Struct;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n];\n\nexport const createWalletProviderFromEIP155Session = async (\n { session }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const displayName = session.peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: session.topic,\n walletProviderType,\n });\n\n const signClient = await getSignClient(client);\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: session.topic,\n });\n };\n\n const disconnect: WalletConnectEvmWalletProvider['disconnect'] = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: session.topic,\n });\n\n // This will remove all wallet providers for the session we just disconnected from.\n // Including this one!\n await syncSessionsToWalletProviders(\n { allowOverridingWalletProviders: false },\n client\n );\n };\n\n // We actually must clear up the entire WC session and clean up the related wallet providers\n // when a wallet account is removed, otherwise the wallet account would come right back\n // once we call syncSessionsToWalletProviders again.\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n session.namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n type SessionEventPayload = {\n params: {\n event: {\n data: unknown;\n name: string;\n };\n };\n topic: string;\n };\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletProviderEventEmitter<(event: SessionEventPayload) => void>({\n removeEventListeners: ({ setupReturnValue: handleSessionEvent }) => {\n signClient.off('session_event', handleSessionEvent);\n },\n\n setupEventListeners: ({\n handleAccountsChanged,\n handleDisconnected,\n handleNetworkChanged,\n }) => {\n const handleSessionEvent = ({\n params: { event },\n topic,\n }: SessionEventPayload) => {\n if (topic !== session.topic) {\n return;\n }\n\n if (event.name === 'chainChanged') {\n const networkParam = event.data as string;\n\n // Handle potentially CAIP-2 format\n const networkId = networkParam.startsWith(`${namespaceKey}:`)\n ? networkParam.split(':')[1]\n : networkParam;\n\n handleNetworkChanged({ networkId });\n\n return;\n }\n\n if (event.name === 'accountsChanged') {\n const accountsParam = event.data as string[];\n\n const addresses = filterDuplicates(\n accountsParam.map((account) => {\n // Handle potentially CAIP-10 format\n if (account.startsWith(`${namespaceKey}:`)) {\n return splitCaip10Token(account).address;\n }\n\n return account;\n })\n );\n\n handleAccountsChanged({ addresses });\n\n return;\n }\n\n if (event.name === 'disconnected') {\n handleDisconnected();\n\n return;\n }\n };\n\n signClient.on('session_event', handleSessionEvent);\n\n return handleSessionEvent;\n },\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: session.peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n session,\n signMessage,\n switchActiveNetwork,\n terminate,\n topic: session.topic,\n walletProviderType,\n };\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport {\n registerExtension,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n getNamespaceRegistry,\n getSignClient,\n initializeWalletConnectExtension,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const namespaceRegistry = getNamespaceRegistry(client);\n\n namespaceRegistry.registerNamespace({\n createWalletProviderFromSession: createWalletProviderFromEIP155Session,\n namespaceKey: 'eip155',\n });\n\n await waitForProjectSettings(client);\n\n // Kick off WalletConnect SignClient initialization, but don't wait for it\n void getSignClient(client);\n\n // Kick off WalletConnect extension initialization, after registering the namespace\n // so that we have the namespace key available upon syncSessionsToWalletProviders call\n await initializeWalletConnectExtension(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n];\n","import {\n assertDefined,\n createApiClient,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const appUrl = core.metadata?.url;\n\n assertDefined(appUrl, 'App URL is not set');\n\n const url = new URL(appUrl);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const { nonce } = await apiClient.getNonce({\n environmentId: core.environmentId,\n });\n\n assertDefined(nonce, 'Failed to get nonce');\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods,\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse({ authResponse, chain: 'EVM' }, client)\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods,\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n { addToDynamicWalletAccounts, session },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"walletConnect.cjs.js","names":["methodsThatRequireUserAction: string[]","SessionClosedUnexpectedlyError","WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n >","SDK_ERRORS","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","viemGetAddress","terminate: WalletConnectEvmWalletProvider['terminate']","WalletProviderPriority","CHAINS_INFO_MAP","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n void disconnect();\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n };\n\n const disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n > = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n terminate,\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n createApiClient,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const universalLink = core.metadata?.universalLink;\n\n assertDefined(universalLink, 'Universal link is not set');\n\n const url = new URL(universalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const { nonce } = await apiClient.getNonce({\n environmentId: core.environmentId,\n });\n\n assertDefined(nonce, 'Failed to get nonce');\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
|