@dynamic-labs/sdk-react-core 5.9.0 → 5.9.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 +8 -0
- package/package.cjs +4 -4
- package/package.js +4 -4
- package/package.json +15 -15
- package/src/lib/context/ThemeContext/utils/stylesheetBuilder/stylesheetBuilder.cjs +9 -1
- package/src/lib/context/ThemeContext/utils/stylesheetBuilder/stylesheetBuilder.js +9 -1
- package/src/lib/utils/hooks/useBusinessAccounts/useBusinessAccounts.cjs +3 -0
- package/src/lib/utils/hooks/useBusinessAccounts/useBusinessAccounts.d.ts +8 -8
- package/src/lib/utils/hooks/useBusinessAccounts/useBusinessAccounts.js +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
|
|
2
|
+
### [5.9.1](https://github.com/dynamic-labs/dynamic-auth/compare/v5.9.0...v5.9.1) (2026-09-18)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **sdk-react-core:** sanitize interpolated values in theme stylesheet builder ([#12416](https://github.com/dynamic-labs/dynamic-auth/issues/12416)) ([f256c08](https://github.com/dynamic-labs/dynamic-auth/commit/f256c08209b7818292a7d4d76793c592bd0ca2a0))
|
|
8
|
+
* **webview-controller:** route MetaMask connector storage through native secure storage ([#12304](https://github.com/dynamic-labs/dynamic-auth/issues/12304)) ([627a483](https://github.com/dynamic-labs/dynamic-auth/commit/627a4839a8071d2b2eed1ef6536cd3ecfc833000)), closes [dynamic-labs-oss/public-wallet-connectors#189](https://github.com/dynamic-labs-oss/public-wallet-connectors/issues/189)
|
|
9
|
+
|
|
2
10
|
## [5.9.0](https://github.com/dynamic-labs/dynamic-auth/compare/v5.8.1...v5.9.0) (2026-09-16)
|
|
3
11
|
|
|
4
12
|
|
package/package.cjs
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
|
-
var version = "5.9.
|
|
6
|
+
var version = "5.9.1";
|
|
7
7
|
var dependencies = {
|
|
8
|
-
"@dynamic-labs/sdk-api-core": "0.
|
|
9
|
-
"@dynamic-labs-sdk/client": "1.
|
|
10
|
-
"@dynamic-labs-wallet/browser-wallet-client": "1.
|
|
8
|
+
"@dynamic-labs/sdk-api-core": "0.40.0",
|
|
9
|
+
"@dynamic-labs-sdk/client": "1.33.3",
|
|
10
|
+
"@dynamic-labs-wallet/browser-wallet-client": "1.1.10",
|
|
11
11
|
"@dynamic-labs-wallet/forward-mpc-client": "1.0.2",
|
|
12
12
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
13
13
|
"@marsidev/react-turnstile": "1.5.2",
|
package/package.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client'
|
|
2
|
-
var version = "5.9.
|
|
2
|
+
var version = "5.9.1";
|
|
3
3
|
var dependencies = {
|
|
4
|
-
"@dynamic-labs/sdk-api-core": "0.
|
|
5
|
-
"@dynamic-labs-sdk/client": "1.
|
|
6
|
-
"@dynamic-labs-wallet/browser-wallet-client": "1.
|
|
4
|
+
"@dynamic-labs/sdk-api-core": "0.40.0",
|
|
5
|
+
"@dynamic-labs-sdk/client": "1.33.3",
|
|
6
|
+
"@dynamic-labs-wallet/browser-wallet-client": "1.1.10",
|
|
7
7
|
"@dynamic-labs-wallet/forward-mpc-client": "1.0.2",
|
|
8
8
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
9
9
|
"@marsidev/react-turnstile": "1.5.2",
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "5.9.
|
|
3
|
+
"version": "5.9.1",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@dynamic-labs/sdk-api-core": "0.
|
|
6
|
-
"@dynamic-labs-sdk/client": "1.
|
|
7
|
-
"@dynamic-labs-wallet/browser-wallet-client": "1.
|
|
5
|
+
"@dynamic-labs/sdk-api-core": "0.40.0",
|
|
6
|
+
"@dynamic-labs-sdk/client": "1.33.3",
|
|
7
|
+
"@dynamic-labs-wallet/browser-wallet-client": "1.1.10",
|
|
8
8
|
"@dynamic-labs-wallet/forward-mpc-client": "1.0.2",
|
|
9
9
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
10
10
|
"@marsidev/react-turnstile": "1.5.2",
|
|
@@ -18,17 +18,17 @@
|
|
|
18
18
|
"react-i18next": "13.5.0",
|
|
19
19
|
"react-international-phone": "4.5.0",
|
|
20
20
|
"yup": "0.32.11",
|
|
21
|
-
"@dynamic-labs/assert-package-version": "5.9.
|
|
22
|
-
"@dynamic-labs/iconic": "5.9.
|
|
23
|
-
"@dynamic-labs/locale": "5.9.
|
|
24
|
-
"@dynamic-labs/logger": "5.9.
|
|
25
|
-
"@dynamic-labs/multi-wallet": "5.9.
|
|
26
|
-
"@dynamic-labs/rpc-providers": "5.9.
|
|
27
|
-
"@dynamic-labs/store": "5.9.
|
|
28
|
-
"@dynamic-labs/types": "5.9.
|
|
29
|
-
"@dynamic-labs/utils": "5.9.
|
|
30
|
-
"@dynamic-labs/wallet-book": "5.9.
|
|
31
|
-
"@dynamic-labs/wallet-connector-core": "5.9.
|
|
21
|
+
"@dynamic-labs/assert-package-version": "5.9.1",
|
|
22
|
+
"@dynamic-labs/iconic": "5.9.1",
|
|
23
|
+
"@dynamic-labs/locale": "5.9.1",
|
|
24
|
+
"@dynamic-labs/logger": "5.9.1",
|
|
25
|
+
"@dynamic-labs/multi-wallet": "5.9.1",
|
|
26
|
+
"@dynamic-labs/rpc-providers": "5.9.1",
|
|
27
|
+
"@dynamic-labs/store": "5.9.1",
|
|
28
|
+
"@dynamic-labs/types": "5.9.1",
|
|
29
|
+
"@dynamic-labs/utils": "5.9.1",
|
|
30
|
+
"@dynamic-labs/wallet-book": "5.9.1",
|
|
31
|
+
"@dynamic-labs/wallet-connector-core": "5.9.1",
|
|
32
32
|
"eventemitter3": "5.0.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
@@ -48,6 +48,14 @@ const findOrCreateStyleTag = (nonce) => {
|
|
|
48
48
|
styleTag.dataset.source = 'dynamic-theme';
|
|
49
49
|
return styleTag;
|
|
50
50
|
};
|
|
51
|
+
// Characters outside this set could break out of a CSS declaration
|
|
52
|
+
// (e.g. `;`, `}`, `\` escapes, comments) when interpolated into the
|
|
53
|
+
// generated theme stylesheet. `/` (modern alpha syntax) and `_`
|
|
54
|
+
// (custom-property names) are safe: comments need `*` which is excluded
|
|
55
|
+
const SAFE_CSS_VALUE_PATTERN = /^[a-zA-Z0-9#(),.%_/\s+-]+$/;
|
|
56
|
+
const isSafeCssValue = (value) => value !== undefined &&
|
|
57
|
+
value !== '' &&
|
|
58
|
+
(typeof value === 'number' || SAFE_CSS_VALUE_PATTERN.test(value));
|
|
51
59
|
const buildStylesheet = (theme) => {
|
|
52
60
|
const { customColor, brandStyle } = theme;
|
|
53
61
|
const footerBackgroundColor = brandStyle === 'bold' ? customColor : undefined;
|
|
@@ -61,7 +69,7 @@ const buildStylesheet = (theme) => {
|
|
|
61
69
|
return `@layer dynamic-project-environment-theme {
|
|
62
70
|
#dynamic-widget, #dynamic-modal, .dynamic-shadow-dom {
|
|
63
71
|
${cssAttributes
|
|
64
|
-
.filter(([, value]) => value
|
|
72
|
+
.filter(([, value]) => isSafeCssValue(value))
|
|
65
73
|
.map(([key, value]) => `${key}: ${value};`)
|
|
66
74
|
.join('\n ')}
|
|
67
75
|
}
|
|
@@ -44,6 +44,14 @@ const findOrCreateStyleTag = (nonce) => {
|
|
|
44
44
|
styleTag.dataset.source = 'dynamic-theme';
|
|
45
45
|
return styleTag;
|
|
46
46
|
};
|
|
47
|
+
// Characters outside this set could break out of a CSS declaration
|
|
48
|
+
// (e.g. `;`, `}`, `\` escapes, comments) when interpolated into the
|
|
49
|
+
// generated theme stylesheet. `/` (modern alpha syntax) and `_`
|
|
50
|
+
// (custom-property names) are safe: comments need `*` which is excluded
|
|
51
|
+
const SAFE_CSS_VALUE_PATTERN = /^[a-zA-Z0-9#(),.%_/\s+-]+$/;
|
|
52
|
+
const isSafeCssValue = (value) => value !== undefined &&
|
|
53
|
+
value !== '' &&
|
|
54
|
+
(typeof value === 'number' || SAFE_CSS_VALUE_PATTERN.test(value));
|
|
47
55
|
const buildStylesheet = (theme) => {
|
|
48
56
|
const { customColor, brandStyle } = theme;
|
|
49
57
|
const footerBackgroundColor = brandStyle === 'bold' ? customColor : undefined;
|
|
@@ -57,7 +65,7 @@ const buildStylesheet = (theme) => {
|
|
|
57
65
|
return `@layer dynamic-project-environment-theme {
|
|
58
66
|
#dynamic-widget, #dynamic-modal, .dynamic-shadow-dom {
|
|
59
67
|
${cssAttributes
|
|
60
|
-
.filter(([, value]) => value
|
|
68
|
+
.filter(([, value]) => isSafeCssValue(value))
|
|
61
69
|
.map(([key, value]) => `${key}: ${value};`)
|
|
62
70
|
.join('\n ')}
|
|
63
71
|
}
|
|
@@ -135,6 +135,9 @@ const useBusinessAccounts = () => {
|
|
|
135
135
|
throw new Error('addBusinessAccountSigner requires a walletId when no businessAccountId is provided');
|
|
136
136
|
}
|
|
137
137
|
const account = yield waas.addWalletToBusinessAccount({ walletId }, dynamicClient);
|
|
138
|
+
if (waas.isBusinessAccountActionRequired(account)) {
|
|
139
|
+
throw new Error(`addBusinessAccountSigner requires approval: ${account.reason}`);
|
|
140
|
+
}
|
|
138
141
|
resolvedBusinessAccountId = account.id;
|
|
139
142
|
}
|
|
140
143
|
if (!resolvedBusinessAccountId) {
|
|
@@ -68,11 +68,11 @@ export type AddBusinessAccountSignerInput = {
|
|
|
68
68
|
targetSignerPassword?: string;
|
|
69
69
|
};
|
|
70
70
|
export declare const useBusinessAccounts: () => {
|
|
71
|
-
addBusinessAccountMember: ({ businessAccountId, userId, identifier, identifierType, role, }: AddBusinessAccountMemberInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountMember>;
|
|
71
|
+
addBusinessAccountMember: ({ businessAccountId, userId, identifier, identifierType, role, }: AddBusinessAccountMemberInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountActionRequired | import("@dynamic-labs-sdk/client/waas").BusinessAccountMember>;
|
|
72
72
|
addBusinessAccountSigner: ({ accountAddress, walletId, chainName, businessAccountId, targetSignerIdentity, signerType, password, targetSignerPassword, }: AddBusinessAccountSignerInput) => Promise<{
|
|
73
73
|
shareSetId: string;
|
|
74
|
-
}>;
|
|
75
|
-
addWalletToBusinessAccount: (input: AddWalletToBusinessAccountInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountDetail>;
|
|
74
|
+
} | import("@dynamic-labs-wallet/core").BusinessAccountActionRequired>;
|
|
75
|
+
addWalletToBusinessAccount: (input: AddWalletToBusinessAccountInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountActionRequired | import("@dynamic-labs-sdk/client/waas").BusinessAccountDetail>;
|
|
76
76
|
createBusinessAccount: (input?: CreateBusinessAccountInput) => Promise<any>;
|
|
77
77
|
createWalletForBusinessAccount: ({ businessAccountId, chainName, thresholdSignatureScheme, password, }: CreateWalletForBusinessAccountInput) => Promise<{
|
|
78
78
|
accountAddress: string;
|
|
@@ -84,10 +84,10 @@ export declare const useBusinessAccounts: () => {
|
|
|
84
84
|
getBusinessAccount: (businessAccountId: string) => Promise<any>;
|
|
85
85
|
listBusinessAccounts: (input?: ListBusinessAccountsInput) => Promise<any>;
|
|
86
86
|
listMyWalletAccounts: () => Promise<any>;
|
|
87
|
-
removeBusinessAccountMember: ({ businessAccountId, userId }: RemoveBusinessAccountMemberInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountMember>;
|
|
88
|
-
removeBusinessAccountSigner: (input: RemoveBusinessAccountSignerInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountSigner>;
|
|
89
|
-
removeBusinessAccountWallet: (input: RemoveBusinessAccountWalletInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountDetail>;
|
|
90
|
-
transferBusinessAccountOwnership: (input: TransferBusinessAccountOwnershipInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountDetail>;
|
|
87
|
+
removeBusinessAccountMember: ({ businessAccountId, userId }: RemoveBusinessAccountMemberInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountActionRequired | import("@dynamic-labs-sdk/client/waas").BusinessAccountMember>;
|
|
88
|
+
removeBusinessAccountSigner: (input: RemoveBusinessAccountSignerInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountActionRequired | import("@dynamic-labs-sdk/client/waas").BusinessAccountSigner>;
|
|
89
|
+
removeBusinessAccountWallet: (input: RemoveBusinessAccountWalletInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountActionRequired | import("@dynamic-labs-sdk/client/waas").BusinessAccountDetail>;
|
|
90
|
+
transferBusinessAccountOwnership: (input: TransferBusinessAccountOwnershipInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountActionRequired | import("@dynamic-labs-sdk/client/waas").BusinessAccountDetail>;
|
|
91
91
|
updateBusinessAccount: (input: UpdateBusinessAccountInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccount>;
|
|
92
|
-
updateBusinessAccountMemberRole: (input: UpdateBusinessAccountMemberRoleInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountMember>;
|
|
92
|
+
updateBusinessAccountMemberRole: (input: UpdateBusinessAccountMemberRoleInput) => Promise<import("@dynamic-labs-sdk/client/waas").BusinessAccountActionRequired | import("@dynamic-labs-sdk/client/waas").BusinessAccountMember>;
|
|
93
93
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
3
|
import { useMemo, useCallback } from 'react';
|
|
4
|
-
import { addBusinessAccountMember, addWalletToBusinessAccount, removeBusinessAccountMember, updateBusinessAccountMemberRole, transferBusinessAccountOwnership, removeBusinessAccountWallet, removeBusinessAccountSigner, updateBusinessAccount } from '@dynamic-labs-sdk/client/waas';
|
|
4
|
+
import { addBusinessAccountMember, addWalletToBusinessAccount, isBusinessAccountActionRequired, removeBusinessAccountMember, updateBusinessAccountMemberRole, transferBusinessAccountOwnership, removeBusinessAccountWallet, removeBusinessAccountSigner, updateBusinessAccount } from '@dynamic-labs-sdk/client/waas';
|
|
5
5
|
import { TokenScope } from '@dynamic-labs/sdk-api-core';
|
|
6
6
|
import { useDynamicClient } from '../../../client/client.js';
|
|
7
7
|
import '@dynamic-labs-sdk/client/core';
|
|
@@ -131,6 +131,9 @@ const useBusinessAccounts = () => {
|
|
|
131
131
|
throw new Error('addBusinessAccountSigner requires a walletId when no businessAccountId is provided');
|
|
132
132
|
}
|
|
133
133
|
const account = yield addWalletToBusinessAccount({ walletId }, dynamicClient);
|
|
134
|
+
if (isBusinessAccountActionRequired(account)) {
|
|
135
|
+
throw new Error(`addBusinessAccountSigner requires approval: ${account.reason}`);
|
|
136
|
+
}
|
|
134
137
|
resolvedBusinessAccountId = account.id;
|
|
135
138
|
}
|
|
136
139
|
if (!resolvedBusinessAccountId) {
|