@dynamic-labs/multi-wallet 0.14.30 → 0.14.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +5 -3
  3. package/src/utils/isSameAddress/index.d.ts +1 -0
  4. package/src/utils/isSameAddress/index.js +6 -0
  5. package/src/utils/isSameAddress/index.js.map +1 -0
  6. package/src/utils/{isSameAddress.d.ts → isSameAddress/isSameAddress.d.ts} +0 -0
  7. package/src/utils/isSameAddress/isSameAddress.js +7 -0
  8. package/src/utils/isSameAddress/isSameAddress.js.map +1 -0
  9. package/src/utils/isSameAddress/utils/index.d.ts +1 -0
  10. package/src/utils/isSameAddress/utils/index.js +5 -0
  11. package/src/utils/isSameAddress/utils/index.js.map +1 -0
  12. package/src/utils/isSameAddress/utils/normalizeAddress/index.d.ts +1 -0
  13. package/src/utils/isSameAddress/utils/normalizeAddress/index.js +6 -0
  14. package/src/utils/isSameAddress/utils/normalizeAddress/index.js.map +1 -0
  15. package/src/utils/{normalizeAddress.d.ts → isSameAddress/utils/normalizeAddress/normalizeAddress.d.ts} +0 -0
  16. package/src/utils/{normalizeAddress.js → isSameAddress/utils/normalizeAddress/normalizeAddress.js} +4 -1
  17. package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.js.map +1 -0
  18. package/src/wallets/walletConnect/walletConnectV2.d.ts +2 -1
  19. package/src/wallets/walletConnect/walletConnectV2.js +93 -17
  20. package/src/wallets/walletConnect/walletConnectV2.js.map +1 -1
  21. package/src/utils/isSameAddress.js +0 -7
  22. package/src/utils/isSameAddress.js.map +0 -1
  23. package/src/utils/normalizeAddress.js.map +0 -1
  24. package/src/wallets/clients/walletConnect/walletConnectV2.d.ts +0 -10
  25. package/src/wallets/clients/walletConnect/walletConnectV2.js +0 -104
  26. package/src/wallets/clients/walletConnect/walletConnectV2.js.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+
2
+ ### [0.14.32](https://github.com/dynamic-labs/DynamicAuth/compare/v0.14.31...v0.14.32) (2023-02-01)
3
+
4
+
5
+ ### Features
6
+
7
+ * **useWalletItemActions:** add openWallet method to sign directly ([e87d104](https://github.com/dynamic-labs/DynamicAuth/commit/e87d1040d884a65a1952deadec68f8b669d41d3e))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * api test ([a18613e](https://github.com/dynamic-labs/DynamicAuth/commit/a18613ea26296836821c720cc9d050565bf06d44))
13
+ * **normalizeAddress:** remove the 0x from address beginning ([a8713ee](https://github.com/dynamic-labs/DynamicAuth/commit/a8713eede3ba033d60d28c0691a6a09174f48718))
14
+ * test apps ([b6d0455](https://github.com/dynamic-labs/DynamicAuth/commit/b6d0455d2e4c6e40f7c404afac528f75b11387cf))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/multi-wallet",
3
- "version": "0.14.30",
3
+ "version": "0.14.32",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -21,16 +21,18 @@
21
21
  "@onflow/fcl": "^1.3.2",
22
22
  "get-starknet": "^1.5.0",
23
23
  "@walletconnect/ethereum-provider": "^1.8.0",
24
- "@walletconnect/types": "^2.2.1",
25
24
  "tslib": "^2.4.1"
26
25
  },
26
+ "devDependencies": {
27
+ "@walletconnect/types": "^2.2.1"
28
+ },
27
29
  "description": "Multi-wallet is a toolkit for working with many different wallets to create and verify signatures",
28
30
  "bugs": {
29
31
  "url": "https://github.com/dynamic-labs/DynamicAuth/issues"
30
32
  },
31
33
  "homepage": "https://github.com/dynamic-labs/DynamicAuth/main/packages/multi-wallet#readme",
32
34
  "author": "Dynamic Labs, Inc.",
33
- "license": "Apache-2.0",
35
+ "license": "MIT",
34
36
  "main": "./src/index.js",
35
37
  "types": "./src/index.d.ts"
36
38
  }
@@ -0,0 +1 @@
1
+ export { isSameAddress } from './isSameAddress';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSameAddress = void 0;
4
+ var isSameAddress_1 = require("./isSameAddress");
5
+ Object.defineProperty(exports, "isSameAddress", { enumerable: true, get: function () { return isSameAddress_1.isSameAddress; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/utils/isSameAddress/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSameAddress = void 0;
4
+ const utils_1 = require("./utils");
5
+ const isSameAddress = (left, right, chain) => (0, utils_1.normalizeAddress)(left, chain) === (0, utils_1.normalizeAddress)(right, chain);
6
+ exports.isSameAddress = isSameAddress;
7
+ //# sourceMappingURL=isSameAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isSameAddress.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/utils/isSameAddress/isSameAddress.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAEpC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa,EAAE,EAAE,CAC1E,IAAA,wBAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAA,wBAAgB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AADtD,QAAA,aAAa,iBACyC"}
@@ -0,0 +1 @@
1
+ export * from './normalizeAddress';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./normalizeAddress"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/multi-wallet/src/utils/isSameAddress/utils/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC"}
@@ -0,0 +1 @@
1
+ export { normalizeAddress } from './normalizeAddress';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeAddress = void 0;
4
+ var normalizeAddress_1 = require("./normalizeAddress");
5
+ Object.defineProperty(exports, "normalizeAddress", { enumerable: true, get: function () { return normalizeAddress_1.normalizeAddress; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/multi-wallet/src/utils/isSameAddress/utils/normalizeAddress/index.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA"}
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeAddress = void 0;
4
- const shouldLowercaseAddress_1 = require("./shouldLowercaseAddress");
4
+ const shouldLowercaseAddress_1 = require("../../../shouldLowercaseAddress");
5
5
  const normalizeAddress = (rawAddress, chain) => {
6
+ if (rawAddress.startsWith('0x')) {
7
+ rawAddress = rawAddress.slice(2);
8
+ }
6
9
  const address = (0, shouldLowercaseAddress_1.shouldLowercaseAddress)(chain)
7
10
  ? rawAddress.toLowerCase()
8
11
  : rawAddress;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAddress.js","sourceRoot":"","sources":["../../../../../../../../packages/multi-wallet/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.ts"],"names":[],"mappings":";;;AAAA,4EAAyE;AAElE,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAE;IACpE,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAC/B,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClC;IAED,MAAM,OAAO,GAAG,IAAA,+CAAsB,EAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE;QAC1B,CAAC,CAAC,UAAU,CAAC;IAEf,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B"}
@@ -1,3 +1,4 @@
1
+ import SignClient from '@walletconnect/sign-client';
1
2
  import { EvmNetwork } from '../ethereum/evm-network';
2
3
  import { EthProvider } from '../ethereum/ethProvider';
3
4
  import { WalletConnector, Chain, FetchPublicAddressOpts, WalletEventListeners } from '../wallet-connector';
@@ -16,7 +17,7 @@ declare class WalletConnectV2 extends EthProvider implements WalletConnector {
16
17
  walletName: string;
17
18
  });
18
19
  get key(): string;
19
- getClient(): Promise<import("@walletconnect/sign-client").default>;
20
+ getClient(): Promise<SignClient>;
20
21
  supportsNetworkSwitching(): boolean;
21
22
  setupEventListeners(listeners: WalletEventListeners): void;
22
23
  teardownEventListeners(): void;
@@ -1,11 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const sign_client_1 = tslib_1.__importDefault(require("@walletconnect/sign-client"));
4
5
  const normalizeWalletName_1 = require("../../utils/normalizeWalletName");
5
6
  const walletConnect_1 = require("../../utils/walletConnect");
6
- const walletConnectV2_1 = require("../clients/walletConnect/walletConnectV2");
7
7
  const ethProvider_1 = require("../ethereum/ethProvider");
8
8
  const console_1 = tslib_1.__importDefault(require("../../utils/console"));
9
+ const isMobile_1 = require("../../utils/isMobile");
10
+ const walletConnect_2 = require("../clients/walletConnect");
11
+ let signClient;
12
+ const getInitializedSignClient = (signClientOpts) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
13
+ if (!signClient) {
14
+ signClient = yield sign_client_1.default.init(signClientOpts);
15
+ }
16
+ return signClient;
17
+ });
18
+ const performPlatformSpecificConnectionMethod = (uri, metadata, opts) => {
19
+ var _a, _b, _c;
20
+ if ((0, isMobile_1.isMobile)()) {
21
+ const deepLink = (0, walletConnect_2.getDeepLink)(uri, metadata);
22
+ window.location.href = deepLink;
23
+ }
24
+ else {
25
+ if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.desktop) === null || _a === void 0 ? void 0 : _a.native) {
26
+ const desktopUri = (0, walletConnect_2.getDeepLink)(uri, metadata);
27
+ (_b = opts === null || opts === void 0 ? void 0 : opts.onDesktopUri) === null || _b === void 0 ? void 0 : _b.call(opts, desktopUri);
28
+ }
29
+ (_c = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _c === void 0 ? void 0 : _c.call(opts, uri);
30
+ }
31
+ };
9
32
  const sessionTopicKey = (walletName) => `dynamic-wc2-session-topic-${walletName}`;
10
33
  class WalletConnectV2 extends ethProvider_1.EthProvider {
11
34
  constructor({ evmNetworks, projectId = '576019bf293b1e85c695806832b20fe7', walletName, }) {
@@ -24,7 +47,7 @@ class WalletConnectV2 extends ethProvider_1.EthProvider {
24
47
  }
25
48
  getClient() {
26
49
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
27
- return (0, walletConnectV2_1.getInitializedSignClient)({
50
+ return getInitializedSignClient({
28
51
  projectId: this.projectId,
29
52
  });
30
53
  });
@@ -33,14 +56,24 @@ class WalletConnectV2 extends ethProvider_1.EthProvider {
33
56
  return false;
34
57
  }
35
58
  setupEventListeners(listeners) {
36
- (0, walletConnectV2_1.setupWalletConnectEventListeners)(Object.assign(Object.assign({}, listeners), { onDisconnect: () => tslib_1.__awaiter(this, void 0, void 0, function* () {
37
- var _a;
38
- localStorage.removeItem(sessionTopicKey(this.name));
39
- yield ((_a = listeners.onDisconnect) === null || _a === void 0 ? void 0 : _a.call(listeners));
40
- }) }));
59
+ if (!signClient) {
60
+ return;
61
+ }
62
+ signClient.on('session_event', (args) => {
63
+ console_1.default.log('session_event', args);
64
+ });
65
+ signClient.on('session_delete', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
66
+ var _a;
67
+ localStorage.removeItem(sessionTopicKey(this.name));
68
+ yield ((_a = listeners.onDisconnect) === null || _a === void 0 ? void 0 : _a.call(listeners));
69
+ }));
41
70
  }
42
71
  teardownEventListeners() {
43
- (0, walletConnectV2_1.teardownWalletConnectEventListeners)();
72
+ if (!signClient) {
73
+ return;
74
+ }
75
+ signClient.removeAllListeners('session_event');
76
+ signClient.removeAllListeners('session_delete');
44
77
  }
45
78
  getWeb3Provider() {
46
79
  return undefined;
@@ -59,14 +92,38 @@ class WalletConnectV2 extends ethProvider_1.EthProvider {
59
92
  if (accounts.length) {
60
93
  return accounts[0];
61
94
  }
62
- const session = yield (0, walletConnectV2_1.fetchWalletConnectPublicAddress)((0, walletConnect_1.getWalletConnectMetadata)(this.name), yield this.getClient(), opts);
63
- if (session) {
64
- localStorage.setItem(sessionTopicKey(this.name), session.topic);
65
- return session.namespaces.eip155.accounts[0].split(':')[2];
66
- }
67
- else {
68
- return undefined;
95
+ const client = yield this.getClient();
96
+ const metadata = (0, walletConnect_1.getWalletConnectMetadata)(this.name);
97
+ const { uri, approval } = yield client.connect({
98
+ pairingTopic: undefined,
99
+ relays: undefined,
100
+ requiredNamespaces: {
101
+ // todo: generalize this input based on Dynamic project settings
102
+ eip155: {
103
+ chains: ['eip155:1'],
104
+ events: ['chainChanged', 'accountsChanged'],
105
+ methods: [
106
+ 'eth_sendTransaction',
107
+ 'eth_signTransaction',
108
+ 'eth_sign',
109
+ 'personal_sign',
110
+ 'eth_signTypedData',
111
+ ],
112
+ },
113
+ },
114
+ });
115
+ if (uri) {
116
+ performPlatformSpecificConnectionMethod(uri, metadata, {
117
+ onDesktopUri: opts === null || opts === void 0 ? void 0 : opts.onDesktopUri,
118
+ onDisplayUri: opts === null || opts === void 0 ? void 0 : opts.onDisplayUri,
119
+ });
120
+ const session = yield approval();
121
+ if (session) {
122
+ localStorage.setItem(sessionTopicKey(this.name), session.topic);
123
+ return session.namespaces.eip155.accounts[0].split(':')[2];
124
+ }
69
125
  }
126
+ return undefined;
70
127
  });
71
128
  }
72
129
  signMessage(messageToSign) {
@@ -75,7 +132,16 @@ class WalletConnectV2 extends ethProvider_1.EthProvider {
75
132
  if (!storedSessionTopic) {
76
133
  return;
77
134
  }
78
- return (0, walletConnectV2_1.signWalletConnectPersonalMessage)(messageToSign, (0, walletConnect_1.getWalletConnectMetadata)(this.name), yield this.getClient(), storedSessionTopic);
135
+ const client = yield this.getClient();
136
+ const session = client.session.get(storedSessionTopic);
137
+ return client.request({
138
+ chainId: 'eip155:1',
139
+ request: {
140
+ method: 'personal_sign',
141
+ params: [messageToSign, session.namespaces.eip155.accounts[0]],
142
+ },
143
+ topic: session.topic,
144
+ });
79
145
  });
80
146
  }
81
147
  proveOwnership(messageToSign) {
@@ -89,8 +155,18 @@ class WalletConnectV2 extends ethProvider_1.EthProvider {
89
155
  if (!storedSessionTopic) {
90
156
  return;
91
157
  }
158
+ if (!signClient) {
159
+ return;
160
+ }
92
161
  try {
93
- yield (0, walletConnectV2_1.disconnectWalletConnectSession)(storedSessionTopic);
162
+ yield signClient.disconnect({
163
+ // https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/packages/utils/src/errors.ts#L87-L90
164
+ reason: {
165
+ code: 6000,
166
+ message: 'User disconnected',
167
+ },
168
+ topic: storedSessionTopic,
169
+ });
94
170
  localStorage.removeItem(sessionTopicKey(this.name));
95
171
  }
96
172
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"walletConnectV2.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/walletConnect/walletConnectV2.ts"],"names":[],"mappings":";;;AACA,yEAAsE;AACtE,6DAAqE;AACrE,8EAOkD;AAClD,yDAAsD;AAOtD,0EAA0C;AAE1C,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,EAAE,CAC7C,6BAA6B,UAAU,EAAE,CAAC;AAE5C,MAAM,eAAgB,SAAQ,yBAAW;IAavC,YAAY,EACV,WAAW,EACX,SAAS,GAAG,kCAAkC,EAC9C,UAAU,GAKX;QACC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QArBzB,oBAAe,GAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE1C,mBAAc,GAAU,KAAK,CAAC;QAK9B,wBAAmB,GAAG,IAAI,CAAC;QAC3B,kCAA6B,GAAG,KAAK,CAAC;QACtC,oBAAe,GAAG,IAAI,CAAC;QACvB,gCAA2B,GAAG,KAAK,CAAC;QAYlC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAA,yCAAmB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEK,SAAS;;YACb,OAAO,IAAA,0CAAwB,EAAC;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;KAAA;IAEQ,wBAAwB;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB,CAAC,SAA+B;QACjD,IAAA,kDAAgC,kCAC3B,SAAS,KACZ,YAAY,EAAE,GAAS,EAAE;;gBACvB,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpD,MAAM,CAAA,MAAA,SAAS,CAAC,YAAY,yDAAI,CAAA,CAAC;YACnC,CAAC,CAAA,IACD,CAAC;IACL,CAAC;IAED,sBAAsB;QACpB,IAAA,qDAAmC,GAAE,CAAC;IACxC,CAAC;IAEQ,eAAe;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,oBAAoB;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAEK,OAAO;;YACX,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;KAAA;IAEK,kBAAkB,CACtB,IAA6B;;YAE7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnD,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;aACpB;YAED,MAAM,OAAO,GAAG,MAAM,IAAA,iDAA+B,EACnD,IAAA,wCAAwB,EAAC,IAAI,CAAC,IAAI,CAAC,EACnC,MAAM,IAAI,CAAC,SAAS,EAAE,EACtB,IAAI,CACL,CAAC;YAEF,IAAI,OAAO,EAAE;gBACX,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChE,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;iBAAM;gBACL,OAAO,SAAS,CAAC;aAClB;QACH,CAAC;KAAA;IAEK,WAAW,CAAC,aAAqB;;YACrC,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,kBAAkB,EAAE;gBACvB,OAAO;aACR;YAED,OAAO,IAAA,kDAAgC,EACrC,aAAa,EACb,IAAA,wCAAwB,EAAC,IAAI,CAAC,IAAI,CAAC,EACnC,MAAM,IAAI,CAAC,SAAS,EAAE,EACtB,kBAAkB,CACnB,CAAC;QACJ,CAAC;KAAA;IAEK,cAAc,CAAC,aAAqB;;YACxC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;KAAA;IAEK,UAAU;;YACd,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,kBAAkB,EAAE;gBACvB,OAAO;aACR;YAED,IAAI;gBACF,MAAM,IAAA,gDAA8B,EAAC,kBAAkB,CAAC,CAAC;gBACzD,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACrD;YAAC,OAAO,CAAC,EAAE;gBACV,iBAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChB;QACH,CAAC;KAAA;IAEc,qBAAqB;;YAClC,OAAO;QACT,CAAC;KAAA;IAEc,oBAAoB;;YACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEtC,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5E,IAAI,kBAAkB,EAAE;gBACtB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBACvD,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9D;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;KAAA;CACF;AAED,kBAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"walletConnectV2.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/walletConnect/walletConnectV2.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSameAddress = void 0;
4
- const normalizeAddress_1 = require("./normalizeAddress");
5
- const isSameAddress = (left, right, chain) => (0, normalizeAddress_1.normalizeAddress)(left, chain) === (0, normalizeAddress_1.normalizeAddress)(right, chain);
6
- exports.isSameAddress = isSameAddress;
7
- //# sourceMappingURL=isSameAddress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isSameAddress.js","sourceRoot":"","sources":["../../../../../packages/multi-wallet/src/utils/isSameAddress.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAE/C,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa,EAAE,EAAE,CAC1E,IAAA,mCAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAA,mCAAgB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AADtD,QAAA,aAAa,iBACyC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeAddress.js","sourceRoot":"","sources":["../../../../../packages/multi-wallet/src/utils/normalizeAddress.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAE3D,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAE;IACpE,MAAM,OAAO,GAAG,IAAA,+CAAsB,EAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE;QAC1B,CAAC,CAAC,UAAU,CAAC;IACf,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B"}
@@ -1,10 +0,0 @@
1
- import SignClient from '@walletconnect/sign-client';
2
- import { SignClientTypes } from '@walletconnect/types';
3
- import { WalletConnectWalletMetadata } from '../../../types';
4
- import { FetchPublicAddressOpts, WalletEventListeners } from '../../wallet-connector';
5
- export declare const getInitializedSignClient: (signClientOpts: SignClientTypes.Options) => Promise<SignClient>;
6
- export declare const fetchWalletConnectPublicAddress: (metadata: WalletConnectWalletMetadata, client: SignClient, opts?: FetchPublicAddressOpts) => Promise<import("@walletconnect/types").SessionTypes.Struct | undefined>;
7
- export declare const signWalletConnectPersonalMessage: (messageToSign: string, metadata: WalletConnectWalletMetadata, client: SignClient, sessionTopic: string) => Promise<string | undefined>;
8
- export declare const setupWalletConnectEventListeners: (listeners: WalletEventListeners) => void;
9
- export declare const teardownWalletConnectEventListeners: () => void;
10
- export declare const disconnectWalletConnectSession: (sessionTopic: string) => Promise<void>;
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.disconnectWalletConnectSession = exports.teardownWalletConnectEventListeners = exports.setupWalletConnectEventListeners = exports.signWalletConnectPersonalMessage = exports.fetchWalletConnectPublicAddress = exports.getInitializedSignClient = void 0;
4
- const tslib_1 = require("tslib");
5
- const sign_client_1 = tslib_1.__importDefault(require("@walletconnect/sign-client"));
6
- const console_1 = tslib_1.__importDefault(require("../../../utils/console"));
7
- const isMobile_1 = require("../../../utils/isMobile");
8
- const walletConnect_1 = require("./walletConnect");
9
- let signClient;
10
- const getInitializedSignClient = (signClientOpts) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
11
- if (!signClient) {
12
- signClient = yield sign_client_1.default.init(signClientOpts);
13
- }
14
- return signClient;
15
- });
16
- exports.getInitializedSignClient = getInitializedSignClient;
17
- const fetchWalletConnectPublicAddress = (metadata, client, opts) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
- var _a, _b, _c, _d;
19
- const { uri, approval } = yield client.connect({
20
- pairingTopic: undefined,
21
- relays: undefined,
22
- requiredNamespaces: {
23
- // todo: generalize this input based on Dynamic project settings
24
- eip155: {
25
- chains: ['eip155:1'],
26
- events: ['chainChanged', 'accountsChanged'],
27
- methods: [
28
- 'eth_sendTransaction',
29
- 'eth_signTransaction',
30
- 'eth_sign',
31
- 'personal_sign',
32
- 'eth_signTypedData',
33
- ],
34
- },
35
- },
36
- });
37
- if (uri) {
38
- if ((0, isMobile_1.isMobile)()) {
39
- const deepLink = (0, walletConnect_1.getDeepLink)(uri, metadata);
40
- window.location.href = deepLink;
41
- }
42
- else {
43
- if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.desktop) === null || _a === void 0 ? void 0 : _a.native) {
44
- const desktopUri = (0, walletConnect_1.getDeepLink)(uri, metadata);
45
- (_b = opts === null || opts === void 0 ? void 0 : opts.onDesktopUri) === null || _b === void 0 ? void 0 : _b.call(opts, desktopUri);
46
- }
47
- (_c = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _c === void 0 ? void 0 : _c.call(opts, uri);
48
- }
49
- const session = yield approval();
50
- // TODO: update callback param
51
- (_d = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _d === void 0 ? void 0 : _d.call(opts, session);
52
- // TODO: handle multiple accounts
53
- return session;
54
- }
55
- return undefined;
56
- });
57
- exports.fetchWalletConnectPublicAddress = fetchWalletConnectPublicAddress;
58
- const signWalletConnectPersonalMessage = (messageToSign, metadata, client, sessionTopic) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
59
- const session = client.session.get(sessionTopic);
60
- return client.request({
61
- chainId: 'eip155:1',
62
- request: {
63
- method: 'personal_sign',
64
- params: [messageToSign, session.namespaces.eip155.accounts[0]],
65
- },
66
- topic: session.topic,
67
- });
68
- });
69
- exports.signWalletConnectPersonalMessage = signWalletConnectPersonalMessage;
70
- const setupWalletConnectEventListeners = (listeners) => {
71
- if (!signClient) {
72
- return;
73
- }
74
- signClient.on('session_event', (args) => {
75
- console_1.default.log('session_event', args);
76
- });
77
- if (listeners.onDisconnect) {
78
- signClient.on('session_delete', listeners.onDisconnect);
79
- }
80
- };
81
- exports.setupWalletConnectEventListeners = setupWalletConnectEventListeners;
82
- const teardownWalletConnectEventListeners = () => {
83
- if (!signClient) {
84
- return;
85
- }
86
- signClient.removeAllListeners('session_event');
87
- signClient.removeAllListeners('session_delete');
88
- };
89
- exports.teardownWalletConnectEventListeners = teardownWalletConnectEventListeners;
90
- const disconnectWalletConnectSession = (sessionTopic) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
91
- if (!signClient) {
92
- return;
93
- }
94
- yield signClient.disconnect({
95
- // https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/packages/utils/src/errors.ts#L87-L90
96
- reason: {
97
- code: 6000,
98
- message: 'User disconnected',
99
- },
100
- topic: sessionTopic,
101
- });
102
- });
103
- exports.disconnectWalletConnectSession = disconnectWalletConnectSession;
104
- //# sourceMappingURL=walletConnectV2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"walletConnectV2.js","sourceRoot":"","sources":["../../../../../../../packages/multi-wallet/src/wallets/clients/walletConnect/walletConnectV2.ts"],"names":[],"mappings":";;;;AAAA,qFAAoD;AAIpD,6EAA6C;AAC7C,sDAAmD;AAMnD,mDAA8C;AAE9C,IAAI,UAAkC,CAAC;AAEhC,MAAM,wBAAwB,GAAG,CACtC,cAAuC,EACvC,EAAE;IACF,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,MAAM,qBAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACpD;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAA,CAAC;AARW,QAAA,wBAAwB,4BAQnC;AAEK,MAAM,+BAA+B,GAAG,CAC7C,QAAqC,EACrC,MAAkB,EAClB,IAA6B,EAC7B,EAAE;;IACF,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAC7C,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE,SAAS;QACjB,kBAAkB,EAAE;YAClB,gEAAgE;YAChE,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,UAAU,CAAC;gBACpB,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;gBAC3C,OAAO,EAAE;oBACP,qBAAqB;oBACrB,qBAAqB;oBACrB,UAAU;oBACV,eAAe;oBACf,mBAAmB;iBACpB;aACF;SACF;KACF,CAAC,CAAC;IAEH,IAAI,GAAG,EAAE;QACP,IAAI,IAAA,mBAAQ,GAAE,EAAE;YACd,MAAM,QAAQ,GAAG,IAAA,2BAAW,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;SACjC;aAAM;YACL,IAAI,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,0CAAE,MAAM,EAAE;gBAC7B,MAAM,UAAU,GAAG,IAAA,2BAAW,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC9C,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,qDAAG,UAAU,CAAC,CAAC;aAClC;YAED,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,qDAAG,GAAG,CAAC,CAAC;SAC3B;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,EAAE,CAAC;QAEjC,8BAA8B;QAC9B,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,qDAAG,OAAc,CAAC,CAAC;QAElC,iCAAiC;QACjC,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAA,CAAC;AA/CW,QAAA,+BAA+B,mCA+C1C;AAEK,MAAM,gCAAgC,GAAG,CAC9C,aAAqB,EACrB,QAAqC,EACrC,MAAkB,EAClB,YAAoB,EACS,EAAE;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,OAAO,CAAC;QACpB,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE;YACP,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAC/D;QACD,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAfW,QAAA,gCAAgC,oCAe3C;AAEK,MAAM,gCAAgC,GAAG,CAC9C,SAA+B,EAC/B,EAAE;IACF,IAAI,CAAC,UAAU,EAAE;QACf,OAAO;KACR;IAED,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;QACtC,iBAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,YAAY,EAAE;QAC1B,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;KACzD;AACH,CAAC,CAAC;AAdW,QAAA,gCAAgC,oCAc3C;AAEK,MAAM,mCAAmC,GAAG,GAAG,EAAE;IACtD,IAAI,CAAC,UAAU,EAAE;QACf,OAAO;KACR;IAED,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC/C,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAClD,CAAC,CAAC;AAPW,QAAA,mCAAmC,uCAO9C;AAEK,MAAM,8BAA8B,GAAG,CAAO,YAAoB,EAAE,EAAE;IAC3E,IAAI,CAAC,UAAU,EAAE;QACf,OAAO;KACR;IAED,MAAM,UAAU,CAAC,UAAU,CAAC;QAC1B,yGAAyG;QACzG,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,mBAAmB;SAC7B;QACD,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAbW,QAAA,8BAA8B,kCAazC"}