@dynamic-labs/sdk-react-core 5.6.0 → 5.7.0
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 +21 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +23 -14
- package/src/components.cjs +184 -0
- package/src/components.js +88 -0
- package/src/icons.cjs +298 -0
- package/src/icons.d.ts +1 -0
- package/src/icons.js +146 -0
- package/src/lib/components/DynamicSpinner/DynamicSpinner.cjs +15 -0
- package/src/lib/components/DynamicSpinner/DynamicSpinner.js +11 -0
- package/src/lib/components/Separator/Separator.cjs +11 -0
- package/src/lib/components/Separator/Separator.js +7 -0
- package/src/lib/components/Switch/Switch.cjs +11 -0
- package/src/lib/components/Switch/Switch.js +7 -0
- package/src/lib/context/DynamicContext/types/IDynamicContext.d.ts +2 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +2 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +2 -1
- package/src/lib/shared/assets/add-wallet.cjs +59 -0
- package/src/lib/shared/assets/add-wallet.js +35 -0
- package/src/lib/shared/assets/alt-embedded-wallet.cjs +55 -0
- package/src/lib/shared/assets/alt-embedded-wallet.js +31 -0
- package/src/lib/shared/assets/alt-key.cjs +55 -0
- package/src/lib/shared/assets/alt-key.js +31 -0
- package/src/lib/shared/assets/android-face-id.cjs +62 -0
- package/src/lib/shared/assets/android-face-id.js +38 -0
- package/src/lib/shared/assets/android-touch-id.cjs +52 -0
- package/src/lib/shared/assets/android-touch-id.js +28 -0
- package/src/lib/shared/assets/circle-locker.cjs +54 -0
- package/src/lib/shared/assets/circle-locker.js +30 -0
- package/src/lib/shared/assets/currency.cjs +70 -0
- package/src/lib/shared/assets/currency.js +46 -0
- package/src/lib/shared/assets/default-wallet.cjs +54 -0
- package/src/lib/shared/assets/default-wallet.js +30 -0
- package/src/lib/shared/assets/domain-blocked.cjs +73 -0
- package/src/lib/shared/assets/domain-blocked.js +49 -0
- package/src/lib/shared/assets/domain.cjs +54 -0
- package/src/lib/shared/assets/domain.js +30 -0
- package/src/lib/shared/assets/dynamic-logo.cjs +52 -0
- package/src/lib/shared/assets/dynamic-logo.js +28 -0
- package/src/lib/shared/assets/dynamic-round-logo.cjs +54 -0
- package/src/lib/shared/assets/dynamic-round-logo.js +30 -0
- package/src/lib/shared/assets/gear.cjs +54 -0
- package/src/lib/shared/assets/gear.js +30 -0
- package/src/lib/shared/assets/global-wallet-icon.cjs +64 -0
- package/src/lib/shared/assets/global-wallet-icon.js +40 -0
- package/src/lib/shared/assets/multiple-account-security.cjs +107 -0
- package/src/lib/shared/assets/multiple-account-security.js +83 -0
- package/src/lib/shared/assets/passkey-account-security.cjs +93 -0
- package/src/lib/shared/assets/passkey-account-security.js +69 -0
- package/src/lib/shared/assets/passkey-intro-icon.cjs +98 -0
- package/src/lib/shared/assets/passkey-intro-icon.js +74 -0
- package/src/lib/shared/assets/passkey-intro2.cjs +93 -0
- package/src/lib/shared/assets/passkey-intro2.js +69 -0
- package/src/lib/shared/assets/passkey-success-icon.cjs +95 -0
- package/src/lib/shared/assets/passkey-success-icon.js +71 -0
- package/src/lib/shared/assets/profile.cjs +65 -0
- package/src/lib/shared/assets/profile.js +41 -0
- package/src/lib/shared/assets/prompt-account-switch.cjs +64 -0
- package/src/lib/shared/assets/prompt-account-switch.js +40 -0
- package/src/lib/shared/assets/save-password-hero.cjs +128 -0
- package/src/lib/shared/assets/save-password-hero.js +104 -0
- package/src/lib/shared/assets/settings.cjs +54 -0
- package/src/lib/shared/assets/settings.js +30 -0
- package/src/lib/shared/assets/shield.cjs +59 -0
- package/src/lib/shared/assets/shield.js +35 -0
- package/src/lib/shared/assets/sparkles.cjs +54 -0
- package/src/lib/shared/assets/sparkles.js +30 -0
- package/src/lib/shared/assets/upgrade.cjs +93 -0
- package/src/lib/shared/assets/upgrade.js +69 -0
- package/src/lib/shared/assets/user-account-2.cjs +54 -0
- package/src/lib/shared/assets/user-account-2.js +30 -0
- package/src/lib/shared/assets/wallet-claim-hero.cjs +128 -0
- package/src/lib/shared/assets/wallet-claim-hero.js +104 -0
- package/src/lib/shared/assets/wallet.cjs +52 -0
- package/src/lib/shared/assets/wallet.js +28 -0
- package/src/lib/shared/assets/wallets/PhantomLedgerIcon/PhantomLedgerIcon.cjs +26 -0
- package/src/lib/shared/assets/wallets/PhantomLedgerIcon/PhantomLedgerIcon.js +22 -0
- package/src/lib/store/state/nonce/nonce.cjs +5 -5
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +10 -2
- package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +11 -3
- package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.cjs +17 -1
- package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.d.ts +11 -0
- package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.js +17 -2
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +1 -0
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +1 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs +2 -3
- package/src/lib/utils/hooks/useWalletConnectors/utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.js +3 -4
- package/src/lib/views/ExchangeWhitelistWarning/ExchangeWhitelistWarning.cjs +1 -0
- package/src/lib/views/ExchangeWhitelistWarning/ExchangeWhitelistWarning.js +1 -0
- package/src/lib/widgets/DynamicWidget/helpers/convertExchangeKeyAndProviderEnum.cjs +1 -0
- package/src/lib/widgets/DynamicWidget/helpers/convertExchangeKeyAndProviderEnum.js +1 -0
- package/src/lib/widgets/DynamicWidget/views/MoonPayOnramp/useMoonPayOnramp.js +1 -1
|
@@ -265,12 +265,20 @@ const useDynamicWaas = () => {
|
|
|
265
265
|
return true;
|
|
266
266
|
}
|
|
267
267
|
catch (error) {
|
|
268
|
-
|
|
268
|
+
const failureDetails = {
|
|
269
269
|
chain,
|
|
270
270
|
error,
|
|
271
271
|
sessionId: user.sessionId,
|
|
272
272
|
userId: user.id,
|
|
273
|
-
}
|
|
273
|
+
};
|
|
274
|
+
// A pending auth scope means the token has not upgraded yet, so
|
|
275
|
+
// initialization is retried once it does.
|
|
276
|
+
if (utils.isWaasAuthScopePendingError(error)) {
|
|
277
|
+
walletConnectorCore.logger.debug('Waas wallet client not initialized yet', failureDetails);
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
walletConnectorCore.logger.error('Error initializing waas wallet client', failureDetails);
|
|
281
|
+
}
|
|
274
282
|
return false;
|
|
275
283
|
}
|
|
276
284
|
})));
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
3
|
import { useMemo, useRef, useState, useCallback } from 'react';
|
|
4
4
|
import { EmbeddedWalletVersionEnum, JwtVerifiedCredentialFormatEnum, WalletProviderEnum, ChainEnum } from '@dynamic-labs/sdk-api-core';
|
|
5
|
-
import { DynamicError } from '@dynamic-labs/utils';
|
|
5
|
+
import { DynamicError, isWaasAuthScopePendingError } from '@dynamic-labs/utils';
|
|
6
6
|
import { logger } from '@dynamic-labs/wallet-connector-core';
|
|
7
7
|
import { dynamicEvents } from '../../../events/dynamicEvents.js';
|
|
8
8
|
import '@dynamic-labs-sdk/client/core';
|
|
@@ -261,12 +261,20 @@ const useDynamicWaas = () => {
|
|
|
261
261
|
return true;
|
|
262
262
|
}
|
|
263
263
|
catch (error) {
|
|
264
|
-
|
|
264
|
+
const failureDetails = {
|
|
265
265
|
chain,
|
|
266
266
|
error,
|
|
267
267
|
sessionId: user.sessionId,
|
|
268
268
|
userId: user.id,
|
|
269
|
-
}
|
|
269
|
+
};
|
|
270
|
+
// A pending auth scope means the token has not upgraded yet, so
|
|
271
|
+
// initialization is retried once it does.
|
|
272
|
+
if (isWaasAuthScopePendingError(error)) {
|
|
273
|
+
logger.debug('Waas wallet client not initialized yet', failureDetails);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
logger.error('Error initializing waas wallet client', failureDetails);
|
|
277
|
+
}
|
|
270
278
|
return false;
|
|
271
279
|
}
|
|
272
280
|
})));
|
|
@@ -45,13 +45,28 @@ const useSendDynamicProps = ({ settings: settings$1, environmentId, }) => {
|
|
|
45
45
|
};
|
|
46
46
|
const serializedEventsCallbacks = serializeEventsCallbacks(settings$1.events);
|
|
47
47
|
const serializedWalletConnectors = serializeWalletConnectors.serializeWalletConnectors(settings$1.walletConnectors);
|
|
48
|
-
const serializedDynamicContextProps = Object.assign(Object.assign({}, updatedDynamicProps), { settings: Object.assign(Object.assign({}, updatedDynamicProps.settings), { events: serializedEventsCallbacks, walletConnectors: serializedWalletConnectors }) });
|
|
48
|
+
const serializedDynamicContextProps = Object.assign(Object.assign({}, updatedDynamicProps), { settings: Object.assign(Object.assign({}, updatedDynamicProps.settings), { cssOverrides: summarizeCssOverrides(settings$1.cssOverrides), events: serializedEventsCallbacks, walletConnectors: serializedWalletConnectors }) });
|
|
49
49
|
settings.sendDynamicProps(environmentId, {
|
|
50
50
|
dynamicContextProps: serializedDynamicContextProps,
|
|
51
51
|
frameworkSettings: getFrameworkSettings(),
|
|
52
52
|
});
|
|
53
53
|
});
|
|
54
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Describes the configured CSS overrides without carrying the stylesheet
|
|
57
|
+
* itself. The raw CSS is several kilobytes of style-rule text, which reads as
|
|
58
|
+
* an injection payload to web application firewalls scoring this request body,
|
|
59
|
+
* and the shape of the overrides is all the settings telemetry needs.
|
|
60
|
+
*/
|
|
61
|
+
const summarizeCssOverrides = (cssOverrides) => {
|
|
62
|
+
if (!cssOverrides) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
if (typeof cssOverrides !== 'string') {
|
|
66
|
+
return { kind: 'element' };
|
|
67
|
+
}
|
|
68
|
+
return { characters: cssOverrides.length, kind: 'string' };
|
|
69
|
+
};
|
|
55
70
|
const serializeEventsCallbacks = (events) => {
|
|
56
71
|
try {
|
|
57
72
|
if (!events)
|
|
@@ -85,4 +100,5 @@ const getFrameworkSettings = () => {
|
|
|
85
100
|
};
|
|
86
101
|
|
|
87
102
|
exports.serializeEventsCallbacks = serializeEventsCallbacks;
|
|
103
|
+
exports.summarizeCssOverrides = summarizeCssOverrides;
|
|
88
104
|
exports.useSendDynamicProps = useSendDynamicProps;
|
|
@@ -5,5 +5,16 @@ type UseSendDynamicHookProps = {
|
|
|
5
5
|
environmentId: string;
|
|
6
6
|
};
|
|
7
7
|
export declare const useSendDynamicProps: ({ settings, environmentId, }: UseSendDynamicHookProps) => void;
|
|
8
|
+
type CssOverridesSummary = {
|
|
9
|
+
characters?: number;
|
|
10
|
+
kind: 'element' | 'string';
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Describes the configured CSS overrides without carrying the stylesheet
|
|
14
|
+
* itself. The raw CSS is several kilobytes of style-rule text, which reads as
|
|
15
|
+
* an injection payload to web application firewalls scoring this request body,
|
|
16
|
+
* and the shape of the overrides is all the settings telemetry needs.
|
|
17
|
+
*/
|
|
18
|
+
export declare const summarizeCssOverrides: (cssOverrides: DynamicContextProps['settings']['cssOverrides']) => CssOverridesSummary | undefined;
|
|
8
19
|
export declare const serializeEventsCallbacks: (events: DynamicEventsCallbacks | undefined) => string[] | undefined;
|
|
9
20
|
export {};
|
|
@@ -41,13 +41,28 @@ const useSendDynamicProps = ({ settings, environmentId, }) => {
|
|
|
41
41
|
};
|
|
42
42
|
const serializedEventsCallbacks = serializeEventsCallbacks(settings.events);
|
|
43
43
|
const serializedWalletConnectors = serializeWalletConnectors(settings.walletConnectors);
|
|
44
|
-
const serializedDynamicContextProps = Object.assign(Object.assign({}, updatedDynamicProps), { settings: Object.assign(Object.assign({}, updatedDynamicProps.settings), { events: serializedEventsCallbacks, walletConnectors: serializedWalletConnectors }) });
|
|
44
|
+
const serializedDynamicContextProps = Object.assign(Object.assign({}, updatedDynamicProps), { settings: Object.assign(Object.assign({}, updatedDynamicProps.settings), { cssOverrides: summarizeCssOverrides(settings.cssOverrides), events: serializedEventsCallbacks, walletConnectors: serializedWalletConnectors }) });
|
|
45
45
|
sendDynamicProps(environmentId, {
|
|
46
46
|
dynamicContextProps: serializedDynamicContextProps,
|
|
47
47
|
frameworkSettings: getFrameworkSettings(),
|
|
48
48
|
});
|
|
49
49
|
});
|
|
50
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* Describes the configured CSS overrides without carrying the stylesheet
|
|
53
|
+
* itself. The raw CSS is several kilobytes of style-rule text, which reads as
|
|
54
|
+
* an injection payload to web application firewalls scoring this request body,
|
|
55
|
+
* and the shape of the overrides is all the settings telemetry needs.
|
|
56
|
+
*/
|
|
57
|
+
const summarizeCssOverrides = (cssOverrides) => {
|
|
58
|
+
if (!cssOverrides) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
if (typeof cssOverrides !== 'string') {
|
|
62
|
+
return { kind: 'element' };
|
|
63
|
+
}
|
|
64
|
+
return { characters: cssOverrides.length, kind: 'string' };
|
|
65
|
+
};
|
|
51
66
|
const serializeEventsCallbacks = (events) => {
|
|
52
67
|
try {
|
|
53
68
|
if (!events)
|
|
@@ -80,4 +95,4 @@ const getFrameworkSettings = () => {
|
|
|
80
95
|
});
|
|
81
96
|
};
|
|
82
97
|
|
|
83
|
-
export { serializeEventsCallbacks, useSendDynamicProps };
|
|
98
|
+
export { serializeEventsCallbacks, summarizeCssOverrides, useSendDynamicProps };
|
|
@@ -67,15 +67,14 @@ const createLinkedWalletsFromWalletOptions = ({ user, walletConnectorOptions, pr
|
|
|
67
67
|
// common pre-MFA case, but as defense in depth swallow the WaaS
|
|
68
68
|
// "scope still pending" error specifically (recognizable via its
|
|
69
69
|
// stable code) so a late token regression doesn't spam the console.
|
|
70
|
-
// Anything else is surfaced as
|
|
70
|
+
// Anything else is surfaced as an error.
|
|
71
71
|
void smartWallet.initializeSmartWallet({
|
|
72
72
|
account,
|
|
73
73
|
primaryWalletId,
|
|
74
74
|
verifiedCredentials: user.verifiedCredentials,
|
|
75
75
|
walletConnectorOptions,
|
|
76
76
|
}).catch((error) => {
|
|
77
|
-
if (error
|
|
78
|
-
error.code === utils.WAAS_AUTH_SCOPE_PENDING_CODE) {
|
|
77
|
+
if (utils.isWaasAuthScopePendingError(error)) {
|
|
79
78
|
logger.logger.debug('[createLinkedWalletsFromWalletOptions] Swallowed WaaS scope-pending error during smart-wallet init');
|
|
80
79
|
return;
|
|
81
80
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { HardwareWalletEnum, WalletProviderEnum } from '@dynamic-labs/sdk-api-core';
|
|
3
|
-
import {
|
|
3
|
+
import { isWaasAuthScopePendingError } from '@dynamic-labs/utils';
|
|
4
4
|
import { isHardwareWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import '@dynamic-labs/iconic';
|
|
6
6
|
import 'react';
|
|
@@ -63,15 +63,14 @@ const createLinkedWalletsFromWalletOptions = ({ user, walletConnectorOptions, pr
|
|
|
63
63
|
// common pre-MFA case, but as defense in depth swallow the WaaS
|
|
64
64
|
// "scope still pending" error specifically (recognizable via its
|
|
65
65
|
// stable code) so a late token regression doesn't spam the console.
|
|
66
|
-
// Anything else is surfaced as
|
|
66
|
+
// Anything else is surfaced as an error.
|
|
67
67
|
void initializeSmartWallet({
|
|
68
68
|
account,
|
|
69
69
|
primaryWalletId,
|
|
70
70
|
verifiedCredentials: user.verifiedCredentials,
|
|
71
71
|
walletConnectorOptions,
|
|
72
72
|
}).catch((error) => {
|
|
73
|
-
if (error
|
|
74
|
-
error.code === WAAS_AUTH_SCOPE_PENDING_CODE) {
|
|
73
|
+
if (isWaasAuthScopePendingError(error)) {
|
|
75
74
|
logger.debug('[createLinkedWalletsFromWalletOptions] Swallowed WaaS scope-pending error during smart-wallet init');
|
|
76
75
|
return;
|
|
77
76
|
}
|
|
@@ -131,6 +131,7 @@ const docsLink = (exchange) => {
|
|
|
131
131
|
}
|
|
132
132
|
return undefined;
|
|
133
133
|
};
|
|
134
|
+
// TODO: add gemini exchange support (app url, docs link, whitelist copy)
|
|
134
135
|
const exchangeAppUrlMap = {
|
|
135
136
|
[sdkApiCore.ExchangeKeyEnum.Kraken]: 'https://www.kraken.com/',
|
|
136
137
|
[sdkApiCore.ExchangeKeyEnum.Coinbase]: 'https://www.coinbase.com/',
|
|
@@ -127,6 +127,7 @@ const docsLink = (exchange) => {
|
|
|
127
127
|
}
|
|
128
128
|
return undefined;
|
|
129
129
|
};
|
|
130
|
+
// TODO: add gemini exchange support (app url, docs link, whitelist copy)
|
|
130
131
|
const exchangeAppUrlMap = {
|
|
131
132
|
[ExchangeKeyEnum.Kraken]: 'https://www.kraken.com/',
|
|
132
133
|
[ExchangeKeyEnum.Coinbase]: 'https://www.coinbase.com/',
|
|
@@ -8,6 +8,7 @@ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
|
|
|
8
8
|
const EXCHANGE_TO_PROVIDER_OVERRIDES = {
|
|
9
9
|
[sdkApiCore.ExchangeKeyEnum.Coinbase]: sdkApiCore.ProviderEnum.Coinbasesocial,
|
|
10
10
|
[sdkApiCore.ExchangeKeyEnum.Kraken]: sdkApiCore.ProviderEnum.Kraken,
|
|
11
|
+
[sdkApiCore.ExchangeKeyEnum.Gemini]: sdkApiCore.ProviderEnum.Gemini,
|
|
11
12
|
};
|
|
12
13
|
const PROVIDER_TO_EXCHANGE_OVERRIDES = Object.fromEntries(Object.entries(EXCHANGE_TO_PROVIDER_OVERRIDES).map(([exchange, provider]) => [
|
|
13
14
|
provider,
|
|
@@ -4,6 +4,7 @@ import { ExchangeKeyEnum, ProviderEnum } from '@dynamic-labs/sdk-api-core';
|
|
|
4
4
|
const EXCHANGE_TO_PROVIDER_OVERRIDES = {
|
|
5
5
|
[ExchangeKeyEnum.Coinbase]: ProviderEnum.Coinbasesocial,
|
|
6
6
|
[ExchangeKeyEnum.Kraken]: ProviderEnum.Kraken,
|
|
7
|
+
[ExchangeKeyEnum.Gemini]: ProviderEnum.Gemini,
|
|
7
8
|
};
|
|
8
9
|
const PROVIDER_TO_EXCHANGE_OVERRIDES = Object.fromEntries(Object.entries(EXCHANGE_TO_PROVIDER_OVERRIDES).map(([exchange, provider]) => [
|
|
9
10
|
provider,
|
|
@@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next';
|
|
|
5
5
|
import { ProviderEnum } from '@dynamic-labs/sdk-api-core';
|
|
6
6
|
import '../../../../context/DynamicContext/useDynamicContext/useDynamicContext.js';
|
|
7
7
|
import { useInternalDynamicContext } from '../../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext/useInternalDynamicContext.js';
|
|
8
|
-
import {
|
|
8
|
+
import { getMoonPayCurrencies, getOnrampProviders } from '../../../../data/api/onramp/onramp.js';
|
|
9
9
|
import { useEnvironmentId } from '../../../../store/state/dynamicContextProps/dynamicContextProps.js';
|
|
10
10
|
import { useMutation } from '../../../../utils/hooks/useMutation/useMutation.js';
|
|
11
11
|
import { usePromise } from '../../../../utils/hooks/usePromise/usePromise.js';
|