@dynamic-labs/ethereum 4.18.7 → 4.18.8
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 +7 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +11 -11
- package/src/metaMask/MetaMaskConnector.cjs +30 -0
- package/src/metaMask/MetaMaskConnector.js +30 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.18.8](https://github.com/dynamic-labs/dynamic-auth/compare/v4.18.7...v4.18.8) (2025-05-22)
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* allow closing widget right after login ([#8760](https://github.com/dynamic-labs/dynamic-auth/issues/8760)) ([a9afff0](https://github.com/dynamic-labs/dynamic-auth/commit/a9afff0ab2a685853b39aed88e10bf1e700e4c8c))
|
|
7
|
+
* user wallets turning empty when linking new wallets ([#8775](https://github.com/dynamic-labs/dynamic-auth/issues/8775)) ([04215f5](https://github.com/dynamic-labs/dynamic-auth/commit/04215f5307e16ec4e1a7ff235a0d7df2340c3447))
|
|
8
|
+
|
|
2
9
|
### [4.18.7](https://github.com/dynamic-labs/dynamic-auth/compare/v4.18.6...v4.18.7) (2025-05-21)
|
|
3
10
|
|
|
4
11
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/ethereum",
|
|
3
|
-
"version": "4.18.
|
|
3
|
+
"version": "4.18.8",
|
|
4
4
|
"description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
|
|
5
5
|
"author": "Dynamic Labs, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
"@walletconnect/ethereum-provider": "2.19.1",
|
|
23
23
|
"eventemitter3": "5.0.1",
|
|
24
24
|
"buffer": "6.0.3",
|
|
25
|
-
"@metamask/sdk": "0.
|
|
26
|
-
"@dynamic-labs/assert-package-version": "4.18.
|
|
27
|
-
"@dynamic-labs/embedded-wallet-evm": "4.18.
|
|
28
|
-
"@dynamic-labs/ethereum-core": "4.18.
|
|
29
|
-
"@dynamic-labs/logger": "4.18.
|
|
30
|
-
"@dynamic-labs/rpc-providers": "4.18.
|
|
31
|
-
"@dynamic-labs/types": "4.18.
|
|
32
|
-
"@dynamic-labs/utils": "4.18.
|
|
33
|
-
"@dynamic-labs/wallet-book": "4.18.
|
|
34
|
-
"@dynamic-labs/wallet-connector-core": "4.18.
|
|
25
|
+
"@metamask/sdk": "0.33.0",
|
|
26
|
+
"@dynamic-labs/assert-package-version": "4.18.8",
|
|
27
|
+
"@dynamic-labs/embedded-wallet-evm": "4.18.8",
|
|
28
|
+
"@dynamic-labs/ethereum-core": "4.18.8",
|
|
29
|
+
"@dynamic-labs/logger": "4.18.8",
|
|
30
|
+
"@dynamic-labs/rpc-providers": "4.18.8",
|
|
31
|
+
"@dynamic-labs/types": "4.18.8",
|
|
32
|
+
"@dynamic-labs/utils": "4.18.8",
|
|
33
|
+
"@dynamic-labs/wallet-book": "4.18.8",
|
|
34
|
+
"@dynamic-labs/wallet-connector-core": "4.18.8"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"viem": "^2.28.4"
|
|
@@ -51,6 +51,9 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
51
51
|
* is installed on the browser.
|
|
52
52
|
*/
|
|
53
53
|
this.canHandleMultipleConnections = this.isInstalledOnBrowser();
|
|
54
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] constructor', {
|
|
55
|
+
hasMetaMaskSDK: Boolean(_metaMaskSDK),
|
|
56
|
+
});
|
|
54
57
|
if (!_metaMaskSDK) {
|
|
55
58
|
this.createMetaMaskSDK();
|
|
56
59
|
}
|
|
@@ -80,6 +83,9 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
80
83
|
name: this.appName,
|
|
81
84
|
url: utils.PlatformService.getOrigin(),
|
|
82
85
|
};
|
|
86
|
+
logger.logger.debug('[MetaMaskConnector] createMetaMaskSDK - creating sdk', {
|
|
87
|
+
dappMetadata,
|
|
88
|
+
});
|
|
83
89
|
_metaMaskSDK = new sdk.MetaMaskSDK({
|
|
84
90
|
checkInstallationImmediately: true,
|
|
85
91
|
dappMetadata,
|
|
@@ -92,10 +98,12 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
92
98
|
readonlyRPCMap: getReadonlyRPCMap(this.evmNetworkRpcMap()),
|
|
93
99
|
useDeeplink: true,
|
|
94
100
|
});
|
|
101
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] createMetaMaskSDK - created sdk', { _metaMaskSDK });
|
|
95
102
|
}
|
|
96
103
|
endSession() {
|
|
97
104
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
98
105
|
eventTimeline.postEvent('disconnect');
|
|
106
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] endSession - terminating sdk');
|
|
99
107
|
/**
|
|
100
108
|
* The MetaMask SDK must be terminated and reinitialized on mobile
|
|
101
109
|
* to prevent deeplinks not working
|
|
@@ -114,10 +122,13 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
114
122
|
}
|
|
115
123
|
getAddress(opts) {
|
|
116
124
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - waiting for sdk init');
|
|
117
126
|
yield this.metaMaskSDK.sdkInitPromise;
|
|
127
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - sdk init promise resolved');
|
|
118
128
|
// QR Code flow
|
|
119
129
|
const handleDisplayUri = (displayUri) => {
|
|
120
130
|
var _a;
|
|
131
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] handleDisplayUri', { displayUri });
|
|
121
132
|
if (!displayUri)
|
|
122
133
|
return;
|
|
123
134
|
setMetaMaskDisplayUri(displayUri);
|
|
@@ -134,15 +145,20 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
134
145
|
utils.PlatformService.openURL(`${this.metadata.inAppBrowserUrl}/${window.location.href}`);
|
|
135
146
|
return;
|
|
136
147
|
}
|
|
148
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - getting initial connected accounts');
|
|
137
149
|
// Connect to MetaMask
|
|
138
150
|
const initialConnectedAccounts = yield this.getConnectedAccountsSafely();
|
|
151
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - got initial connected accounts', { initialConnectedAccounts });
|
|
139
152
|
if (initialConnectedAccounts.length) {
|
|
140
153
|
return this.parseAddress(initialConnectedAccounts[0]);
|
|
141
154
|
}
|
|
142
155
|
try {
|
|
156
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - connecting to metaMask');
|
|
143
157
|
yield this.metaMaskSDK.connect();
|
|
158
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - connected to metaMask');
|
|
144
159
|
}
|
|
145
160
|
catch (error) {
|
|
161
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - error connecting to metaMask', { error });
|
|
146
162
|
/**
|
|
147
163
|
* In case of a getAddress call was already made and is pending
|
|
148
164
|
* and a new getAddress call is made after a endSession call, the
|
|
@@ -161,10 +177,13 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
161
177
|
throw utils.MetaMaskError.fromError(error);
|
|
162
178
|
}
|
|
163
179
|
else {
|
|
180
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - error connection - waiting for connection');
|
|
164
181
|
yield waitForConnection.waitForConnection(this.getProvider());
|
|
165
182
|
}
|
|
166
183
|
}
|
|
184
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - getting connected accounts');
|
|
167
185
|
const accounts = yield this.getConnectedAccounts();
|
|
186
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - got connected accounts', { accounts });
|
|
168
187
|
return accounts[0];
|
|
169
188
|
}
|
|
170
189
|
finally {
|
|
@@ -212,7 +231,9 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
212
231
|
}
|
|
213
232
|
signMessage(messageToSign) {
|
|
214
233
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - waiting for sdk init');
|
|
215
235
|
yield this.metaMaskSDK.sdkInitPromise;
|
|
236
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - sdk init promise resolved');
|
|
216
237
|
/**
|
|
217
238
|
* Should wait for the window to be focused on mobile
|
|
218
239
|
* to account for the user moving between the MetaMaskApp
|
|
@@ -222,20 +243,25 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
222
243
|
? waitForFocusWindowEvent()
|
|
223
244
|
: Promise.resolve();
|
|
224
245
|
const provider = this.getProvider();
|
|
246
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - got provider', { provider });
|
|
225
247
|
if (!provider) {
|
|
226
248
|
return undefined;
|
|
227
249
|
}
|
|
228
250
|
const [selectedAddress] = yield this.getConnectedAccounts();
|
|
251
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - got selected address', { selectedAddress });
|
|
229
252
|
if (!selectedAddress) {
|
|
230
253
|
return undefined;
|
|
231
254
|
}
|
|
232
255
|
const walletClient = this.getWalletClientForAddress(selectedAddress);
|
|
233
256
|
if (!walletClient)
|
|
234
257
|
return undefined;
|
|
258
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - will sign', { messageToSign });
|
|
235
259
|
const signature = yield walletClient.signMessage({
|
|
236
260
|
message: messageToSign,
|
|
237
261
|
});
|
|
262
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - will wait for window focus');
|
|
238
263
|
yield windowFocusPromiseForMobile;
|
|
264
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - signed', { signature });
|
|
239
265
|
return signature;
|
|
240
266
|
});
|
|
241
267
|
}
|
|
@@ -246,6 +272,7 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
246
272
|
}
|
|
247
273
|
getWalletClient(chainId) {
|
|
248
274
|
const provider = this.getProvider();
|
|
275
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getWalletClient - got provider', { provider });
|
|
249
276
|
if (!provider) {
|
|
250
277
|
return undefined;
|
|
251
278
|
}
|
|
@@ -305,8 +332,11 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
|
305
332
|
getNetwork: { get: () => super.getNetwork }
|
|
306
333
|
});
|
|
307
334
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
335
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getNetwork - waiting for sdk init');
|
|
308
336
|
yield this.metaMaskSDK.sdkInitPromise;
|
|
337
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getNetwork - sdk init promise resolved');
|
|
309
338
|
const net = yield _super.getNetwork.call(this);
|
|
339
|
+
logger.logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getNetwork - got network', { network: net });
|
|
310
340
|
return net;
|
|
311
341
|
});
|
|
312
342
|
}
|
|
@@ -47,6 +47,9 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
47
47
|
* is installed on the browser.
|
|
48
48
|
*/
|
|
49
49
|
this.canHandleMultipleConnections = this.isInstalledOnBrowser();
|
|
50
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] constructor', {
|
|
51
|
+
hasMetaMaskSDK: Boolean(_metaMaskSDK),
|
|
52
|
+
});
|
|
50
53
|
if (!_metaMaskSDK) {
|
|
51
54
|
this.createMetaMaskSDK();
|
|
52
55
|
}
|
|
@@ -76,6 +79,9 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
76
79
|
name: this.appName,
|
|
77
80
|
url: PlatformService.getOrigin(),
|
|
78
81
|
};
|
|
82
|
+
logger.debug('[MetaMaskConnector] createMetaMaskSDK - creating sdk', {
|
|
83
|
+
dappMetadata,
|
|
84
|
+
});
|
|
79
85
|
_metaMaskSDK = new MetaMaskSDK({
|
|
80
86
|
checkInstallationImmediately: true,
|
|
81
87
|
dappMetadata,
|
|
@@ -88,10 +94,12 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
88
94
|
readonlyRPCMap: getReadonlyRPCMap(this.evmNetworkRpcMap()),
|
|
89
95
|
useDeeplink: true,
|
|
90
96
|
});
|
|
97
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] createMetaMaskSDK - created sdk', { _metaMaskSDK });
|
|
91
98
|
}
|
|
92
99
|
endSession() {
|
|
93
100
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
101
|
eventTimeline.postEvent('disconnect');
|
|
102
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] endSession - terminating sdk');
|
|
95
103
|
/**
|
|
96
104
|
* The MetaMask SDK must be terminated and reinitialized on mobile
|
|
97
105
|
* to prevent deeplinks not working
|
|
@@ -110,10 +118,13 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
110
118
|
}
|
|
111
119
|
getAddress(opts) {
|
|
112
120
|
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - waiting for sdk init');
|
|
113
122
|
yield this.metaMaskSDK.sdkInitPromise;
|
|
123
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - sdk init promise resolved');
|
|
114
124
|
// QR Code flow
|
|
115
125
|
const handleDisplayUri = (displayUri) => {
|
|
116
126
|
var _a;
|
|
127
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] handleDisplayUri', { displayUri });
|
|
117
128
|
if (!displayUri)
|
|
118
129
|
return;
|
|
119
130
|
setMetaMaskDisplayUri(displayUri);
|
|
@@ -130,15 +141,20 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
130
141
|
PlatformService.openURL(`${this.metadata.inAppBrowserUrl}/${window.location.href}`);
|
|
131
142
|
return;
|
|
132
143
|
}
|
|
144
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - getting initial connected accounts');
|
|
133
145
|
// Connect to MetaMask
|
|
134
146
|
const initialConnectedAccounts = yield this.getConnectedAccountsSafely();
|
|
147
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - got initial connected accounts', { initialConnectedAccounts });
|
|
135
148
|
if (initialConnectedAccounts.length) {
|
|
136
149
|
return this.parseAddress(initialConnectedAccounts[0]);
|
|
137
150
|
}
|
|
138
151
|
try {
|
|
152
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - connecting to metaMask');
|
|
139
153
|
yield this.metaMaskSDK.connect();
|
|
154
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - connected to metaMask');
|
|
140
155
|
}
|
|
141
156
|
catch (error) {
|
|
157
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - error connecting to metaMask', { error });
|
|
142
158
|
/**
|
|
143
159
|
* In case of a getAddress call was already made and is pending
|
|
144
160
|
* and a new getAddress call is made after a endSession call, the
|
|
@@ -157,10 +173,13 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
157
173
|
throw MetaMaskError.fromError(error);
|
|
158
174
|
}
|
|
159
175
|
else {
|
|
176
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - error connection - waiting for connection');
|
|
160
177
|
yield waitForConnection(this.getProvider());
|
|
161
178
|
}
|
|
162
179
|
}
|
|
180
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - getting connected accounts');
|
|
163
181
|
const accounts = yield this.getConnectedAccounts();
|
|
182
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getAddress - got connected accounts', { accounts });
|
|
164
183
|
return accounts[0];
|
|
165
184
|
}
|
|
166
185
|
finally {
|
|
@@ -208,7 +227,9 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
208
227
|
}
|
|
209
228
|
signMessage(messageToSign) {
|
|
210
229
|
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - waiting for sdk init');
|
|
211
231
|
yield this.metaMaskSDK.sdkInitPromise;
|
|
232
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - sdk init promise resolved');
|
|
212
233
|
/**
|
|
213
234
|
* Should wait for the window to be focused on mobile
|
|
214
235
|
* to account for the user moving between the MetaMaskApp
|
|
@@ -218,20 +239,25 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
218
239
|
? waitForFocusWindowEvent()
|
|
219
240
|
: Promise.resolve();
|
|
220
241
|
const provider = this.getProvider();
|
|
242
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - got provider', { provider });
|
|
221
243
|
if (!provider) {
|
|
222
244
|
return undefined;
|
|
223
245
|
}
|
|
224
246
|
const [selectedAddress] = yield this.getConnectedAccounts();
|
|
247
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - got selected address', { selectedAddress });
|
|
225
248
|
if (!selectedAddress) {
|
|
226
249
|
return undefined;
|
|
227
250
|
}
|
|
228
251
|
const walletClient = this.getWalletClientForAddress(selectedAddress);
|
|
229
252
|
if (!walletClient)
|
|
230
253
|
return undefined;
|
|
254
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - will sign', { messageToSign });
|
|
231
255
|
const signature = yield walletClient.signMessage({
|
|
232
256
|
message: messageToSign,
|
|
233
257
|
});
|
|
258
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - will wait for window focus');
|
|
234
259
|
yield windowFocusPromiseForMobile;
|
|
260
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] signMessage - signed', { signature });
|
|
235
261
|
return signature;
|
|
236
262
|
});
|
|
237
263
|
}
|
|
@@ -242,6 +268,7 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
242
268
|
}
|
|
243
269
|
getWalletClient(chainId) {
|
|
244
270
|
const provider = this.getProvider();
|
|
271
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getWalletClient - got provider', { provider });
|
|
245
272
|
if (!provider) {
|
|
246
273
|
return undefined;
|
|
247
274
|
}
|
|
@@ -301,8 +328,11 @@ class MetaMaskConnector extends InjectedWalletBase {
|
|
|
301
328
|
getNetwork: { get: () => super.getNetwork }
|
|
302
329
|
});
|
|
303
330
|
return __awaiter(this, void 0, void 0, function* () {
|
|
331
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getNetwork - waiting for sdk init');
|
|
304
332
|
yield this.metaMaskSDK.sdkInitPromise;
|
|
333
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getNetwork - sdk init promise resolved');
|
|
305
334
|
const net = yield _super.getNetwork.call(this);
|
|
335
|
+
logger.logVerboseTroubleshootingMessage('[MetaMaskConnector] getNetwork - got network', { network: net });
|
|
306
336
|
return net;
|
|
307
337
|
});
|
|
308
338
|
}
|