@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.
- package/CHANGELOG.md +14 -0
- package/package.json +5 -3
- package/src/utils/isSameAddress/index.d.ts +1 -0
- package/src/utils/isSameAddress/index.js +6 -0
- package/src/utils/isSameAddress/index.js.map +1 -0
- package/src/utils/{isSameAddress.d.ts → isSameAddress/isSameAddress.d.ts} +0 -0
- package/src/utils/isSameAddress/isSameAddress.js +7 -0
- package/src/utils/isSameAddress/isSameAddress.js.map +1 -0
- package/src/utils/isSameAddress/utils/index.d.ts +1 -0
- package/src/utils/isSameAddress/utils/index.js +5 -0
- package/src/utils/isSameAddress/utils/index.js.map +1 -0
- package/src/utils/isSameAddress/utils/normalizeAddress/index.d.ts +1 -0
- package/src/utils/isSameAddress/utils/normalizeAddress/index.js +6 -0
- package/src/utils/isSameAddress/utils/normalizeAddress/index.js.map +1 -0
- package/src/utils/{normalizeAddress.d.ts → isSameAddress/utils/normalizeAddress/normalizeAddress.d.ts} +0 -0
- package/src/utils/{normalizeAddress.js → isSameAddress/utils/normalizeAddress/normalizeAddress.js} +4 -1
- package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.js.map +1 -0
- package/src/wallets/walletConnect/walletConnectV2.d.ts +2 -1
- package/src/wallets/walletConnect/walletConnectV2.js +93 -17
- package/src/wallets/walletConnect/walletConnectV2.js.map +1 -1
- package/src/utils/isSameAddress.js +0 -7
- package/src/utils/isSameAddress.js.map +0 -1
- package/src/utils/normalizeAddress.js.map +0 -1
- package/src/wallets/clients/walletConnect/walletConnectV2.d.ts +0 -10
- package/src/wallets/clients/walletConnect/walletConnectV2.js +0 -104
- 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.
|
|
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": "
|
|
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"}
|
|
File without changes
|
|
@@ -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 @@
|
|
|
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"}
|
|
File without changes
|
package/src/utils/{normalizeAddress.js → isSameAddress/utils/normalizeAddress/normalizeAddress.js}
RENAMED
|
@@ -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("
|
|
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<
|
|
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
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
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
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
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
|
|
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":";;;
|
|
1
|
+
{"version":3,"file":"walletConnectV2.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/walletConnect/walletConnectV2.ts"],"names":[],"mappings":";;;AAAA,qFAAoD;AAIpD,yEAAsE;AACtE,6DAAqE;AACrE,yDAAsD;AAOtD,0EAA0C;AAC1C,mDAAgD;AAChD,4DAAuD;AAGvD,IAAI,UAAkC,CAAC;AAEvC,MAAM,wBAAwB,GAAG,CAC/B,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;AAEF,MAAM,uCAAuC,GAAG,CAC9C,GAAW,EACX,QAAqC,EACrC,IAAmE,EACnE,EAAE;;IACF,IAAI,IAAA,mBAAQ,GAAE,EAAE;QACd,MAAM,QAAQ,GAAG,IAAA,2BAAW,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;KACjC;SAAM;QACL,IAAI,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,0CAAE,MAAM,EAAE;YAC7B,MAAM,UAAU,GAAG,IAAA,2BAAW,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC9C,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,qDAAG,UAAU,CAAC,CAAC;SAClC;QAED,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,qDAAG,GAAG,CAAC,CAAC;KAC3B;AACH,CAAC,CAAC;AAEF,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,wBAAwB,CAAC;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,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QAED,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,iBAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAS,EAAE;;YACzC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,MAAM,CAAA,MAAA,SAAS,CAAC,YAAY,yDAAI,CAAA,CAAC;QACnC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QAED,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAC/C,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAClD,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,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAA,wCAAwB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBAC7C,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE,SAAS;gBACjB,kBAAkB,EAAE;oBAClB,gEAAgE;oBAChE,MAAM,EAAE;wBACN,MAAM,EAAE,CAAC,UAAU,CAAC;wBACpB,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;wBAC3C,OAAO,EAAE;4BACP,qBAAqB;4BACrB,qBAAqB;4BACrB,UAAU;4BACV,eAAe;4BACf,mBAAmB;yBACpB;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,IAAI,GAAG,EAAE;gBACP,uCAAuC,CAAC,GAAG,EAAE,QAAQ,EAAE;oBACrD,YAAY,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY;oBAChC,YAAY,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY;iBACjC,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG,MAAM,QAAQ,EAAE,CAAC;gBAEjC,IAAI,OAAO,EAAE;oBACX,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBAChE,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5D;aACF;YAED,OAAO,SAAS,CAAC;QACnB,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,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC,OAAO,CAAC;gBACpB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE;oBACP,MAAM,EAAE,eAAe;oBACvB,MAAM,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC/D;gBACD,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;QACL,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,CAAC,UAAU,EAAE;gBACf,OAAO;aACR;YAED,IAAI;gBACF,MAAM,UAAU,CAAC,UAAU,CAAC;oBAC1B,yGAAyG;oBACzG,MAAM,EAAE;wBACN,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,mBAAmB;qBAC7B;oBACD,KAAK,EAAE,kBAAkB;iBAC1B,CAAC,CAAC;gBACH,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,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":"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"}
|