@dynamic-labs/waas 4.91.6 → 4.92.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +11 -11
- package/src/DynamicWaasMixin.cjs +36 -8
- package/src/DynamicWaasMixin.d.ts +21 -5
- package/src/DynamicWaasMixin.js +36 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.92.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.92.0...v4.92.1) (2026-07-09)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **ethereum:** fire in-app-browser redirect on sign for injected EVM wallets that use in-app-browser experience ([#11888](https://github.com/dynamic-labs/dynamic-auth/issues/11888)) ([5116d91](https://github.com/dynamic-labs/dynamic-auth/commit/5116d91ab2c71000a490d72c5d278549d4d8ae9a))
|
|
8
|
+
* **sdk-react-core:** show clear message for Phantom redirect signing failures (v4 backport) ([#11886](https://github.com/dynamic-labs/dynamic-auth/issues/11886)) ([60ac897](https://github.com/dynamic-labs/dynamic-auth/commit/60ac897ba81f7758ccd7a05f97b619785e1f50a7))
|
|
9
|
+
* **social:** use redirect strategy for step-up OAuth on mobile [V4 backport] ([#11881](https://github.com/dynamic-labs/dynamic-auth/issues/11881)) ([42a202e](https://github.com/dynamic-labs/dynamic-auth/commit/42a202e6255de8db73df02eff37c0b10b24fef1a))
|
|
10
|
+
* **solana:** fire in-app-browser redirect on sign and wallet switch ([#11871](https://github.com/dynamic-labs/dynamic-auth/issues/11871)) ([4e2d6b7](https://github.com/dynamic-labs/dynamic-auth/commit/4e2d6b7ac8fdef5bf7c62b8a726ecaef1c6210ec))
|
|
11
|
+
* **solana:** resolve Phantom/Backpack provider collision and Backpack >=0.10.x connect hangs ([#11856](https://github.com/dynamic-labs/dynamic-auth/issues/11856)) ([#11882](https://github.com/dynamic-labs/dynamic-auth/issues/11882)) ([5784aff](https://github.com/dynamic-labs/dynamic-auth/commit/5784aff9641bbc85445fb466f3ab1d6a14331e73))
|
|
12
|
+
|
|
13
|
+
## [4.92.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.6...v4.92.0) (2026-07-08)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* **captcha:** add Cloudflare Turnstile provider support alongside hCaptcha (v4) ([#11798](https://github.com/dynamic-labs/dynamic-auth/issues/11798)) ([114c770](https://github.com/dynamic-labs/dynamic-auth/commit/114c7702e900d8dedeebe7be867de35d11a93f31))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **ethereum-aa:** resolve kernel client config per wallet (v4) ([#11870](https://github.com/dynamic-labs/dynamic-auth/issues/11870)) ([1b66d79](https://github.com/dynamic-labs/dynamic-auth/commit/1b66d79b4a32b4b6de433b7536bc46e6719224c6))
|
|
24
|
+
* **iframe-setup:** block dangerous URL schemes and verify sender in OPEN_URL ([#11819](https://github.com/dynamic-labs/dynamic-auth/issues/11819)) ([329b27e](https://github.com/dynamic-labs/dynamic-auth/commit/329b27e9fac825916ab227ec8cf93dc343898923))
|
|
25
|
+
* improve social OAuth error messages ([#11837](https://github.com/dynamic-labs/dynamic-auth/issues/11837)) ([8e57c06](https://github.com/dynamic-labs/dynamic-auth/commit/8e57c067c5a89111a32a12fb82e190cf6c46ad67))
|
|
26
|
+
* **react-native-extension:** reject path traversal in downloadFile fileName ([#11816](https://github.com/dynamic-labs/dynamic-auth/issues/11816)) ([9367a56](https://github.com/dynamic-labs/dynamic-auth/commit/9367a56b6daa853d7f7e7f5534261bc68825b239))
|
|
27
|
+
* **sdk-react-core:** display exactly the bytes signed in personal_sign preview ([#11818](https://github.com/dynamic-labs/dynamic-auth/issues/11818)) ([30b9382](https://github.com/dynamic-labs/dynamic-auth/commit/30b93829122f00060cb484aef09a03294c03f651))
|
|
28
|
+
|
|
2
29
|
### [4.91.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.5...v4.91.6) (2026-07-03)
|
|
3
30
|
|
|
4
31
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/waas",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.92.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Dynamic Labs, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
"./package.json": "./package.json"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@dynamic-labs-sdk/client": "1.
|
|
20
|
-
"@dynamic-labs/assert-package-version": "4.
|
|
21
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
19
|
+
"@dynamic-labs-sdk/client": "1.18.0",
|
|
20
|
+
"@dynamic-labs/assert-package-version": "4.92.1",
|
|
21
|
+
"@dynamic-labs/sdk-api-core": "0.0.1067",
|
|
22
22
|
"@dynamic-labs-wallet/browser-wallet-client": "1.0.48",
|
|
23
23
|
"@dynamic-labs-wallet/forward-mpc-client": "0.12.0",
|
|
24
|
-
"@dynamic-labs/ethereum-core": "4.
|
|
25
|
-
"@dynamic-labs/logger": "4.
|
|
26
|
-
"@dynamic-labs/solana-core": "4.
|
|
27
|
-
"@dynamic-labs/sui-core": "4.
|
|
28
|
-
"@dynamic-labs/utils": "4.
|
|
29
|
-
"@dynamic-labs/wallet-book": "4.
|
|
30
|
-
"@dynamic-labs/wallet-connector-core": "4.
|
|
24
|
+
"@dynamic-labs/ethereum-core": "4.92.1",
|
|
25
|
+
"@dynamic-labs/logger": "4.92.1",
|
|
26
|
+
"@dynamic-labs/solana-core": "4.92.1",
|
|
27
|
+
"@dynamic-labs/sui-core": "4.92.1",
|
|
28
|
+
"@dynamic-labs/utils": "4.92.1",
|
|
29
|
+
"@dynamic-labs/wallet-book": "4.92.1",
|
|
30
|
+
"@dynamic-labs/wallet-connector-core": "4.92.1"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {}
|
|
33
33
|
}
|
package/src/DynamicWaasMixin.cjs
CHANGED
|
@@ -150,7 +150,7 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
150
150
|
accountAddress,
|
|
151
151
|
authToken,
|
|
152
152
|
password: resolvedPassword,
|
|
153
|
-
sessionPublicKey: yield ((_d = this.getSessionPublicKey) === null || _d === void 0 ? void 0 : _d.call(this)),
|
|
153
|
+
sessionPublicKey: (yield ((_d = this.getSessionPublicKey) === null || _d === void 0 ? void 0 : _d.call(this))),
|
|
154
154
|
signedSessionId,
|
|
155
155
|
});
|
|
156
156
|
});
|
|
@@ -277,21 +277,48 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
277
277
|
}
|
|
278
278
|
// Common methods that are identical across all connectors
|
|
279
279
|
createWalletAccount() {
|
|
280
|
-
return _tslib.__awaiter(this, arguments, void 0, function* ({ thresholdSignatureScheme = 'TWO_OF_TWO', password, bitcoinConfig, } = {}) {
|
|
280
|
+
return _tslib.__awaiter(this, arguments, void 0, function* ({ thresholdSignatureScheme = 'TWO_OF_TWO', password, bitcoinConfig, businessAccountId, } = {}) {
|
|
281
281
|
var _a, _b;
|
|
282
282
|
const walletClient = yield this.getWaasWalletClient();
|
|
283
283
|
const signedSessionId = yield ((_a = this.getSignedSessionId) === null || _a === void 0 ? void 0 : _a.call(this));
|
|
284
284
|
if (!signedSessionId) {
|
|
285
285
|
throw new utils.DynamicError('Signed session ID is required', 'signed_session_id_is_required');
|
|
286
286
|
}
|
|
287
|
-
const createdWallet = yield walletClient.createWalletAccount({
|
|
288
|
-
|
|
289
|
-
|
|
287
|
+
const createdWallet = yield walletClient.createWalletAccount(Object.assign({ authToken: (_b = this.getAuthToken) === null || _b === void 0 ? void 0 : _b.call(this), bitcoinConfig,
|
|
288
|
+
password,
|
|
289
|
+
signedSessionId, thresholdSignatureScheme: thresholdSignatureScheme }, (businessAccountId && { workspaceAccountId: businessAccountId })));
|
|
290
|
+
return createdWallet;
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
// Add a business account signer via the reshare ceremony.
|
|
294
|
+
addSignerViaReshare(_a) {
|
|
295
|
+
return _tslib.__awaiter(this, arguments, void 0, function* ({ accountAddress, walletId, businessAccountId, targetSignerIdentity, signerType, password, }) {
|
|
296
|
+
var _b, _c, _d;
|
|
297
|
+
const walletClient = yield this.getWaasWalletClient();
|
|
298
|
+
const signedSessionId = yield ((_b = this.getSignedSessionId) === null || _b === void 0 ? void 0 : _b.call(this));
|
|
299
|
+
if (!signedSessionId) {
|
|
300
|
+
throw new utils.DynamicError('Signed session ID is required', 'signed_session_id_is_required');
|
|
301
|
+
}
|
|
302
|
+
(_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('[BusinessAccountAddSigner] addSignerViaReshare', {
|
|
303
|
+
accountAddress,
|
|
304
|
+
businessAccountId,
|
|
305
|
+
identifierType: targetSignerIdentity.identifierType,
|
|
306
|
+
identityMode: targetSignerIdentity.userId ? 'userId' : 'identifier',
|
|
307
|
+
signerType,
|
|
308
|
+
walletId,
|
|
309
|
+
});
|
|
310
|
+
// browser-wallet-client@1.0.48 types use workspaceAccountId; cast to
|
|
311
|
+
// bridge the rename while runtime behaviour is correct.
|
|
312
|
+
return walletClient.reshareToNewSignerShareSet({
|
|
313
|
+
accountAddress,
|
|
314
|
+
authToken: (_d = this.getAuthToken) === null || _d === void 0 ? void 0 : _d.call(this),
|
|
290
315
|
password,
|
|
291
316
|
signedSessionId,
|
|
292
|
-
|
|
317
|
+
signerType: signerType,
|
|
318
|
+
targetSignerIdentity: targetSignerIdentity,
|
|
319
|
+
walletId,
|
|
320
|
+
workspaceAccountId: businessAccountId,
|
|
293
321
|
});
|
|
294
|
-
return createdWallet;
|
|
295
322
|
});
|
|
296
323
|
}
|
|
297
324
|
importPrivateKey(_a) {
|
|
@@ -626,7 +653,7 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
626
653
|
});
|
|
627
654
|
}
|
|
628
655
|
signRawMessage(_a) {
|
|
629
|
-
return _tslib.__awaiter(this, arguments, void 0, function* ({ accountAddress, message, password, }) {
|
|
656
|
+
return _tslib.__awaiter(this, arguments, void 0, function* ({ accountAddress, context, message, password, }) {
|
|
630
657
|
var _b, _c, _d, _e;
|
|
631
658
|
if (!accountAddress) {
|
|
632
659
|
throw new utils.DynamicError('Account address is required', 'account_address_is_required');
|
|
@@ -649,6 +676,7 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
649
676
|
return walletClient.signRawMessage({
|
|
650
677
|
accountAddress,
|
|
651
678
|
authToken: (_e = this.getAuthToken) === null || _e === void 0 ? void 0 : _e.call(this),
|
|
679
|
+
context,
|
|
652
680
|
elevatedAccessToken,
|
|
653
681
|
message,
|
|
654
682
|
mfaToken,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BitcoinConfig, DynamicWalletClient
|
|
1
|
+
import { BitcoinConfig, DynamicWalletClient } from '@dynamic-labs-wallet/browser-wallet-client';
|
|
2
2
|
import type { LogoutReason } from '@dynamic-labs-sdk/client';
|
|
3
3
|
import { InstrumentOptions, Logger } from '@dynamic-labs/logger';
|
|
4
|
-
import { MFAAction, TokenScope } from '@dynamic-labs/sdk-api-core';
|
|
4
|
+
import { MFAAction, SignMessageContext, TokenScope } from '@dynamic-labs/sdk-api-core';
|
|
5
5
|
import { GetWalletPasswordFn } from '@dynamic-labs/wallet-connector-core';
|
|
6
6
|
import { InstrumentContext, InstrumentationTimer, TraceContext } from '../utils/instrumentation';
|
|
7
7
|
export declare class WaasExportHandler {
|
|
@@ -85,16 +85,31 @@ export declare const withDynamicWaas: <T extends abstract new (...args: any[]) =
|
|
|
85
85
|
getWaasWalletClient(traceContext?: TraceContext, { forceRebuild }?: {
|
|
86
86
|
forceRebuild?: boolean;
|
|
87
87
|
}): Promise<DynamicWalletClient>;
|
|
88
|
-
createWalletAccount({ thresholdSignatureScheme, password, bitcoinConfig, }?: {
|
|
88
|
+
createWalletAccount({ thresholdSignatureScheme, password, bitcoinConfig, businessAccountId, }?: {
|
|
89
89
|
thresholdSignatureScheme?: string;
|
|
90
90
|
password?: string;
|
|
91
91
|
bitcoinConfig?: BitcoinConfig;
|
|
92
|
+
businessAccountId?: string;
|
|
92
93
|
}): Promise<{
|
|
93
94
|
chainName: string;
|
|
94
95
|
accountAddress: string;
|
|
95
96
|
publicKeyHex: string;
|
|
96
97
|
rawPublicKey: string | Uint8Array | undefined;
|
|
97
98
|
}>;
|
|
99
|
+
addSignerViaReshare({ accountAddress, walletId, businessAccountId, targetSignerIdentity, signerType, password, }: {
|
|
100
|
+
accountAddress: string;
|
|
101
|
+
walletId?: string;
|
|
102
|
+
businessAccountId: string;
|
|
103
|
+
targetSignerIdentity: {
|
|
104
|
+
userId?: string;
|
|
105
|
+
identifier?: string;
|
|
106
|
+
identifierType?: string;
|
|
107
|
+
};
|
|
108
|
+
signerType?: 'endUser' | 'server';
|
|
109
|
+
password?: string;
|
|
110
|
+
}): Promise<{
|
|
111
|
+
shareSetId: string;
|
|
112
|
+
}>;
|
|
98
113
|
importPrivateKey({ privateKey, thresholdSignatureScheme, publicAddressCheck, addressType, legacyWalletId, password, }: {
|
|
99
114
|
privateKey: string;
|
|
100
115
|
thresholdSignatureScheme?: string;
|
|
@@ -111,7 +126,7 @@ export declare const withDynamicWaas: <T extends abstract new (...args: any[]) =
|
|
|
111
126
|
expectedAddresses: Record<string, string>;
|
|
112
127
|
coinTypes?: Record<string, number>;
|
|
113
128
|
password?: string;
|
|
114
|
-
}): Promise<
|
|
129
|
+
}): Promise<Record<string, unknown>>;
|
|
115
130
|
exportPrivateKey({ accountAddress, displayContainer, password, }?: {
|
|
116
131
|
accountAddress?: string;
|
|
117
132
|
displayContainer?: HTMLIFrameElement;
|
|
@@ -164,8 +179,9 @@ export declare const withDynamicWaas: <T extends abstract new (...args: any[]) =
|
|
|
164
179
|
accountAddress: string;
|
|
165
180
|
newPassword: string;
|
|
166
181
|
}): Promise<void>;
|
|
167
|
-
signRawMessage({ accountAddress, message, password, }: {
|
|
182
|
+
signRawMessage({ accountAddress, context, message, password, }: {
|
|
168
183
|
accountAddress: string;
|
|
184
|
+
context?: SignMessageContext;
|
|
169
185
|
message: string;
|
|
170
186
|
password?: string;
|
|
171
187
|
}): Promise<string>;
|
package/src/DynamicWaasMixin.js
CHANGED
|
@@ -146,7 +146,7 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
146
146
|
accountAddress,
|
|
147
147
|
authToken,
|
|
148
148
|
password: resolvedPassword,
|
|
149
|
-
sessionPublicKey: yield ((_d = this.getSessionPublicKey) === null || _d === void 0 ? void 0 : _d.call(this)),
|
|
149
|
+
sessionPublicKey: (yield ((_d = this.getSessionPublicKey) === null || _d === void 0 ? void 0 : _d.call(this))),
|
|
150
150
|
signedSessionId,
|
|
151
151
|
});
|
|
152
152
|
});
|
|
@@ -273,21 +273,48 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
273
273
|
}
|
|
274
274
|
// Common methods that are identical across all connectors
|
|
275
275
|
createWalletAccount() {
|
|
276
|
-
return __awaiter(this, arguments, void 0, function* ({ thresholdSignatureScheme = 'TWO_OF_TWO', password, bitcoinConfig, } = {}) {
|
|
276
|
+
return __awaiter(this, arguments, void 0, function* ({ thresholdSignatureScheme = 'TWO_OF_TWO', password, bitcoinConfig, businessAccountId, } = {}) {
|
|
277
277
|
var _a, _b;
|
|
278
278
|
const walletClient = yield this.getWaasWalletClient();
|
|
279
279
|
const signedSessionId = yield ((_a = this.getSignedSessionId) === null || _a === void 0 ? void 0 : _a.call(this));
|
|
280
280
|
if (!signedSessionId) {
|
|
281
281
|
throw new DynamicError('Signed session ID is required', 'signed_session_id_is_required');
|
|
282
282
|
}
|
|
283
|
-
const createdWallet = yield walletClient.createWalletAccount({
|
|
284
|
-
|
|
285
|
-
|
|
283
|
+
const createdWallet = yield walletClient.createWalletAccount(Object.assign({ authToken: (_b = this.getAuthToken) === null || _b === void 0 ? void 0 : _b.call(this), bitcoinConfig,
|
|
284
|
+
password,
|
|
285
|
+
signedSessionId, thresholdSignatureScheme: thresholdSignatureScheme }, (businessAccountId && { workspaceAccountId: businessAccountId })));
|
|
286
|
+
return createdWallet;
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
// Add a business account signer via the reshare ceremony.
|
|
290
|
+
addSignerViaReshare(_a) {
|
|
291
|
+
return __awaiter(this, arguments, void 0, function* ({ accountAddress, walletId, businessAccountId, targetSignerIdentity, signerType, password, }) {
|
|
292
|
+
var _b, _c, _d;
|
|
293
|
+
const walletClient = yield this.getWaasWalletClient();
|
|
294
|
+
const signedSessionId = yield ((_b = this.getSignedSessionId) === null || _b === void 0 ? void 0 : _b.call(this));
|
|
295
|
+
if (!signedSessionId) {
|
|
296
|
+
throw new DynamicError('Signed session ID is required', 'signed_session_id_is_required');
|
|
297
|
+
}
|
|
298
|
+
(_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('[BusinessAccountAddSigner] addSignerViaReshare', {
|
|
299
|
+
accountAddress,
|
|
300
|
+
businessAccountId,
|
|
301
|
+
identifierType: targetSignerIdentity.identifierType,
|
|
302
|
+
identityMode: targetSignerIdentity.userId ? 'userId' : 'identifier',
|
|
303
|
+
signerType,
|
|
304
|
+
walletId,
|
|
305
|
+
});
|
|
306
|
+
// browser-wallet-client@1.0.48 types use workspaceAccountId; cast to
|
|
307
|
+
// bridge the rename while runtime behaviour is correct.
|
|
308
|
+
return walletClient.reshareToNewSignerShareSet({
|
|
309
|
+
accountAddress,
|
|
310
|
+
authToken: (_d = this.getAuthToken) === null || _d === void 0 ? void 0 : _d.call(this),
|
|
286
311
|
password,
|
|
287
312
|
signedSessionId,
|
|
288
|
-
|
|
313
|
+
signerType: signerType,
|
|
314
|
+
targetSignerIdentity: targetSignerIdentity,
|
|
315
|
+
walletId,
|
|
316
|
+
workspaceAccountId: businessAccountId,
|
|
289
317
|
});
|
|
290
|
-
return createdWallet;
|
|
291
318
|
});
|
|
292
319
|
}
|
|
293
320
|
importPrivateKey(_a) {
|
|
@@ -622,7 +649,7 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
622
649
|
});
|
|
623
650
|
}
|
|
624
651
|
signRawMessage(_a) {
|
|
625
|
-
return __awaiter(this, arguments, void 0, function* ({ accountAddress, message, password, }) {
|
|
652
|
+
return __awaiter(this, arguments, void 0, function* ({ accountAddress, context, message, password, }) {
|
|
626
653
|
var _b, _c, _d, _e;
|
|
627
654
|
if (!accountAddress) {
|
|
628
655
|
throw new DynamicError('Account address is required', 'account_address_is_required');
|
|
@@ -645,6 +672,7 @@ const withDynamicWaas = (BaseClass) => {
|
|
|
645
672
|
return walletClient.signRawMessage({
|
|
646
673
|
accountAddress,
|
|
647
674
|
authToken: (_e = this.getAuthToken) === null || _e === void 0 ? void 0 : _e.call(this),
|
|
675
|
+
context,
|
|
648
676
|
elevatedAccessToken,
|
|
649
677
|
message,
|
|
650
678
|
mfaToken,
|