@dynamic-labs-sdk/client 0.14.0 → 0.15.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/dist/{InvalidParamError-DQn49mNB.esm.js → InvalidParamError-Dyk0GfyN.esm.js} +257 -6
- package/dist/InvalidParamError-Dyk0GfyN.esm.js.map +1 -0
- package/dist/{InvalidParamError-DVzrk97b.cjs.js → InvalidParamError-DzSZbHE5.cjs.js} +343 -5
- package/dist/InvalidParamError-DzSZbHE5.cjs.js.map +1 -0
- package/dist/{NotWaasWalletAccountError-IxbdRVGy.cjs.js → NotWaasWalletAccountError-DFTloI8C.cjs.js} +3 -3
- package/dist/{NotWaasWalletAccountError-IxbdRVGy.cjs.js.map → NotWaasWalletAccountError-DFTloI8C.cjs.js.map} +1 -1
- package/dist/{NotWaasWalletAccountError-D0BXVuKy.esm.js → NotWaasWalletAccountError-kNpOqccC.esm.js} +3 -3
- package/dist/{NotWaasWalletAccountError-D0BXVuKy.esm.js.map → NotWaasWalletAccountError-kNpOqccC.esm.js.map} +1 -1
- package/dist/client/core/createCore/getInitialState.d.ts.map +1 -1
- package/dist/core.cjs.js +33 -65
- package/dist/core.cjs.js.map +1 -1
- package/dist/core.esm.js +24 -60
- package/dist/core.esm.js.map +1 -1
- package/dist/errors/DeeplinkConnectAndVerifyUnsupportedError.d.ts +9 -0
- package/dist/errors/DeeplinkConnectAndVerifyUnsupportedError.d.ts.map +1 -0
- package/dist/errors/UnauthorizedError.d.ts +5 -0
- package/dist/errors/UnauthorizedError.d.ts.map +1 -0
- package/dist/exports/core.d.ts +9 -1
- package/dist/exports/core.d.ts.map +1 -1
- package/dist/exports/index.d.ts +13 -2
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/{getNetworkProviderFromNetworkId-z8WEapnj.cjs.js → getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js} +66 -148
- package/dist/getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js.map +1 -0
- package/dist/{getNetworkProviderFromNetworkId-DMMnYrfG.esm.js → getNetworkProviderFromNetworkId-ySZUpmOr.esm.js} +59 -96
- package/dist/getNetworkProviderFromNetworkId-ySZUpmOr.esm.js.map +1 -0
- package/dist/{getSignedSessionId-BKKO2mqj.esm.js → getSignedSessionId-BxhxGkA4.esm.js} +4 -17
- package/dist/getSignedSessionId-BxhxGkA4.esm.js.map +1 -0
- package/dist/{getSignedSessionId-BdGOv_TA.cjs.js → getSignedSessionId-s45HpP3W.cjs.js} +5 -24
- package/dist/getSignedSessionId-s45HpP3W.cjs.js.map +1 -0
- package/dist/{getVerifiedCredentialForWalletAccount-Ck7DNGPJ.cjs.js → getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js} +2 -3
- package/dist/{getVerifiedCredentialForWalletAccount-Ck7DNGPJ.cjs.js.map → getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js.map} +1 -1
- package/dist/{getVerifiedCredentialForWalletAccount-DQ7g6O7y.esm.js → getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js} +2 -2
- package/dist/{getVerifiedCredentialForWalletAccount-DQ7g6O7y.esm.js.map → getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js.map} +1 -1
- package/dist/index.cjs.js +291 -79
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +273 -70
- package/dist/index.esm.js.map +1 -1
- package/dist/{isMfaRequiredForAction-MvVGc7k3.esm.js → isMfaRequiredForAction-D1sFhYH1.esm.js} +3 -10
- package/dist/isMfaRequiredForAction-D1sFhYH1.esm.js.map +1 -0
- package/dist/{isMfaRequiredForAction-BINs954q.cjs.js → isMfaRequiredForAction-DaJSsq8Z.cjs.js} +2 -15
- package/dist/isMfaRequiredForAction-DaJSsq8Z.cjs.js.map +1 -0
- package/dist/modules/apiClient/createApiClient.d.ts.map +1 -1
- package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware.d.ts +4 -0
- package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware.d.ts.map +1 -0
- package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/index.d.ts +2 -0
- package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/index.d.ts.map +1 -0
- package/dist/modules/apiClient/utils/unauthorizedMiddleware/createUnauthorizedMiddleware.d.ts +3 -0
- package/dist/modules/apiClient/utils/unauthorizedMiddleware/createUnauthorizedMiddleware.d.ts.map +1 -0
- package/dist/modules/checkout/submitCheckoutTransaction/index.d.ts +3 -0
- package/dist/modules/checkout/submitCheckoutTransaction/index.d.ts.map +1 -0
- package/dist/modules/checkout/submitCheckoutTransaction/submitCheckoutTransaction.d.ts +22 -0
- package/dist/modules/checkout/submitCheckoutTransaction/submitCheckoutTransaction.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.d.ts.map +1 -1
- package/dist/modules/deviceRegistration/getDeviceSigner/{getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys.d.ts → getOrCreateEnvironmentDeviceSigningKeys/getOrCreateEnvironmentDeviceSigningKeys.d.ts} +2 -2
- package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateEnvironmentDeviceSigningKeys/getOrCreateEnvironmentDeviceSigningKeys.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateEnvironmentDeviceSigningKeys/index.d.ts +2 -0
- package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateEnvironmentDeviceSigningKeys/index.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/getHeadersForNonceSignedByDeviceSigners.d.ts +3 -0
- package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/getHeadersForNonceSignedByDeviceSigners.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/index.d.ts +2 -0
- package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/index.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/getRegisteredDevices/getRegisteredDevices.d.ts +3 -0
- package/dist/modules/deviceRegistration/getRegisteredDevices/getRegisteredDevices.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/getRegisteredDevices/index.d.ts +2 -0
- package/dist/modules/deviceRegistration/getRegisteredDevices/index.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/index.d.ts +2 -0
- package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/index.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/revokeAllRegisteredDevices.d.ts +2 -0
- package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/revokeAllRegisteredDevices.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/revokeRegisteredDevice/index.d.ts +2 -0
- package/dist/modules/deviceRegistration/revokeRegisteredDevice/index.d.ts.map +1 -0
- package/dist/modules/deviceRegistration/revokeRegisteredDevice/revokeRegisteredDevice.d.ts +6 -0
- package/dist/modules/deviceRegistration/revokeRegisteredDevice/revokeRegisteredDevice.d.ts.map +1 -0
- package/dist/modules/initializeClient/initializeClient.d.ts.map +1 -1
- package/dist/modules/wallets/connectAndVerifyWithWalletProvider/connectAndVerifyWithWalletProvider.d.ts +10 -0
- package/dist/modules/wallets/connectAndVerifyWithWalletProvider/connectAndVerifyWithWalletProvider.d.ts.map +1 -1
- package/dist/modules/wallets/transferAmount/index.d.ts +2 -0
- package/dist/modules/wallets/transferAmount/index.d.ts.map +1 -0
- package/dist/modules/wallets/transferAmount/transferAmount.d.ts +19 -0
- package/dist/modules/wallets/transferAmount/transferAmount.d.ts.map +1 -0
- package/dist/modules/wallets/walletProvider/index.d.ts +1 -1
- package/dist/modules/wallets/walletProvider/index.d.ts.map +1 -1
- package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/index.d.ts +2 -0
- package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/index.d.ts.map +1 -0
- package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/isDeeplinkWalletProvider.d.ts +10 -0
- package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/isDeeplinkWalletProvider.d.ts.map +1 -0
- package/dist/modules/wallets/walletProvider/walletProvider.types.d.ts +17 -0
- package/dist/modules/wallets/walletProvider/walletProvider.types.d.ts.map +1 -1
- package/dist/services/openDeeplink/createWebDeeplinkOpener/createWebDeeplinkOpener.d.ts +11 -1
- package/dist/services/openDeeplink/createWebDeeplinkOpener/createWebDeeplinkOpener.d.ts.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.d.ts +6 -0
- package/dist/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.d.ts.map +1 -0
- package/dist/utils/getDeviceNameFromUserAgent/index.d.ts +2 -0
- package/dist/utils/getDeviceNameFromUserAgent/index.d.ts.map +1 -0
- package/dist/utils/getNonce/constants.d.ts +2 -0
- package/dist/utils/getNonce/constants.d.ts.map +1 -0
- package/dist/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.d.ts +13 -0
- package/dist/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.d.ts.map +1 -0
- package/dist/utils/getNonce/fetchAndStoreNonces/index.d.ts +2 -0
- package/dist/utils/getNonce/fetchAndStoreNonces/index.d.ts.map +1 -0
- package/dist/utils/getNonce/getNonce.d.ts +7 -0
- package/dist/utils/getNonce/getNonce.d.ts.map +1 -1
- package/dist/utils/getNonce/state.d.ts +11 -0
- package/dist/utils/getNonce/state.d.ts.map +1 -0
- package/dist/utils/parseAmountToSmallestUnit/index.d.ts +2 -0
- package/dist/utils/parseAmountToSmallestUnit/index.d.ts.map +1 -0
- package/dist/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.d.ts +22 -0
- package/dist/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.d.ts.map +1 -0
- package/dist/waas.cjs.js +3 -4
- package/dist/waas.cjs.js.map +1 -1
- package/dist/waas.esm.js +3 -3
- package/dist/waasCore.cjs.js +3 -4
- package/dist/waasCore.cjs.js.map +1 -1
- package/dist/waasCore.esm.js +3 -3
- package/package.json +3 -3
- package/dist/InvalidParamError-DQn49mNB.esm.js.map +0 -1
- package/dist/InvalidParamError-DVzrk97b.cjs.js.map +0 -1
- package/dist/getNetworkProviderFromNetworkId-DMMnYrfG.esm.js.map +0 -1
- package/dist/getNetworkProviderFromNetworkId-z8WEapnj.cjs.js.map +0 -1
- package/dist/getSignedSessionId-BKKO2mqj.esm.js.map +0 -1
- package/dist/getSignedSessionId-BdGOv_TA.cjs.js.map +0 -1
- package/dist/isMfaRequiredForAction-BINs954q.cjs.js.map +0 -1
- package/dist/isMfaRequiredForAction-MvVGc7k3.esm.js.map +0 -1
- package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys.d.ts.map +0 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
import { A as
|
|
3
|
-
import { D as onceEvent, E as onEvent, O as setCookie, S as splitWalletProviderKey, T as offEvent, _ as getWalletAccounts, b as formatWalletAccountId, c as getWalletProviders, d as DYNAMIC_AUTH_COOKIE_NAME, f as getWalletProviderFromWalletAccount, g as NoWalletProviderFoundError, i as restoreUserSharesForAllWalletAccounts, l as checkAndRaiseWalletAccountsChangedEvent, n as getWalletProviderByKey, r as updateAuthFromVerifyResponse, t as getVerifiedCredentialForWalletAccount, u as emitWalletAccountsChangedEvent, w as emitEvent, x as normalizeAddress } from "./getVerifiedCredentialForWalletAccount-
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
1
|
+
import { A as randomString, C as InvalidExternalAuthError, D as isCookieEnabled, I as BaseError, L as getCore, N as getDefaultClient, O as assertDefined, P as setDefaultClient, R as name, S as LinkCredentialError, a as DYNAMIC_ICONIC_SPRITE_URL, b as MfaRateLimitedError, c as CHAINS_INFO_MAP, d as UnauthorizedError, g as createStorageKeySchema, j as CLIENT_SDK_NAME, k as ValueMustBeDefinedError, l as fetchAndStoreNonces, o as SDK_API_CORE_VERSION, s as getChainFromVerifiedCredentialChain, t as InvalidParamError, u as createApiClient, v as getNonce, w as APIError, x as MfaInvalidOtpError, y as SandboxMaximumThresholdReachedError, z as version } from "./InvalidParamError-Dyk0GfyN.esm.js";
|
|
2
|
+
import { A as isEqualShallow, C as isServerSideRendering, D as REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY, E as INITIALIZE_STORAGE_SYNC_TRACKER_KEY, N as createLocalStorageAdapter, O as generateSessionKeys, S as createDeferredPromise, T as GENERATE_SESSION_KEYS_TRACKER_KEY, _ as NoNetworkProvidersError, a as updateWalletProviderKeysForVerifiedCredentials, c as createSignInMessageStatement, d as createVisit, f as hasExtension, g as WalletAlreadyLinkedToAnotherUserError, h as isCaptchaRequired, i as getNetworksData, j as createStorage, k as subscribeWithSelector, l as formatSignInMessage, m as consumeCaptchaToken, o as verifyMessageSignatureOwnership, p as setCaptchaToken, s as removeUnverifiedWalletAccount, t as getNetworkProviderFromNetworkId, u as setUnverifiedWalletAccounts, v as createLogger, w as FETCH_PROJECT_SETTINGS_TRACKER_KEY, x as CannotTrackError, y as createCrossTabBroadcast } from "./getNetworkProviderFromNetworkId-ySZUpmOr.esm.js";
|
|
3
|
+
import { D as onceEvent, E as onEvent, O as setCookie, S as splitWalletProviderKey, T as offEvent, _ as getWalletAccounts, b as formatWalletAccountId, c as getWalletProviders, d as DYNAMIC_AUTH_COOKIE_NAME, f as getWalletProviderFromWalletAccount, g as NoWalletProviderFoundError, i as restoreUserSharesForAllWalletAccounts, l as checkAndRaiseWalletAccountsChangedEvent, n as getWalletProviderByKey, r as updateAuthFromVerifyResponse, t as getVerifiedCredentialForWalletAccount, u as emitWalletAccountsChangedEvent, w as emitEvent, x as normalizeAddress } from "./getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js";
|
|
4
|
+
import { n as refreshAuth, t as NotWaasWalletAccountError } from "./NotWaasWalletAccountError-kNpOqccC.esm.js";
|
|
5
|
+
import { n as getMfaMethods, r as consumeMfaToken, t as isMfaRequiredForAction } from "./isMfaRequiredForAction-D1sFhYH1.esm.js";
|
|
6
6
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
7
|
-
import { AuthModeEnum, ExchangeKeyEnum, JwtVerifiedCredentialFormatEnum, MFAAction, MfaBackupCodeAcknowledgement, ProviderEnum, WaasBackupOptionsEnum } from "@dynamic-labs/sdk-api-core";
|
|
7
|
+
import { AuthModeEnum, ExchangeKeyEnum, JwtVerifiedCredentialFormatEnum, MFAAction, MfaBackupCodeAcknowledgement, ProviderEnum, WaasBackupOptionsEnum, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
|
|
8
8
|
import * as z from "zod/mini";
|
|
9
9
|
import EventEmitter, { EventEmitter as EventEmitter$1 } from "eventemitter3";
|
|
10
10
|
import { browserSupportsWebAuthn, startAuthentication, startRegistration } from "@simplewebauthn/browser";
|
|
@@ -117,26 +117,6 @@ const fetchProjectSettings = async (client = getDefaultClient()) => {
|
|
|
117
117
|
return projectSettings;
|
|
118
118
|
};
|
|
119
119
|
|
|
120
|
-
//#endregion
|
|
121
|
-
//#region src/modules/sessionKeys/generateSessionKeys/generateSessionKeys.ts
|
|
122
|
-
const generateSessionKeys = async (client) => {
|
|
123
|
-
const { private: privateKey, public: publicKey, privateJwk: privateKeyJwk } = await p256Keygen();
|
|
124
|
-
const core = getCore(client);
|
|
125
|
-
const stringifiedSessionKeys = JSON.stringify({
|
|
126
|
-
privateKey,
|
|
127
|
-
privateKeyJwk,
|
|
128
|
-
publicKey,
|
|
129
|
-
registered: false
|
|
130
|
-
});
|
|
131
|
-
const encodedSessionKeys = getBuffer().from(stringifiedSessionKeys).toString("base64");
|
|
132
|
-
core.state.set({ sessionKeys: encodedSessionKeys });
|
|
133
|
-
return {
|
|
134
|
-
privateKey,
|
|
135
|
-
privateKeyJwk,
|
|
136
|
-
publicKey
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
|
|
140
120
|
//#endregion
|
|
141
121
|
//#region src/services/runtimeServices/createRuntimeServices/createRuntimeServices.ts
|
|
142
122
|
/**
|
|
@@ -484,6 +464,9 @@ const initializeClient = async (client = getDefaultClient()) => {
|
|
|
484
464
|
const fetchProjectSettingsPromise = initializeStorageSyncPromise.then(async () => {
|
|
485
465
|
if (!core.state.get().projectSettings) await fetchProjectSettings(client);
|
|
486
466
|
});
|
|
467
|
+
fetchProjectSettingsPromise.then(() => fetchAndStoreNonces(client)).catch((error) => {
|
|
468
|
+
core.logger.error("Failed to prefetch nonces:", error);
|
|
469
|
+
});
|
|
487
470
|
/**
|
|
488
471
|
* Generate session keys if they don't exist
|
|
489
472
|
*/
|
|
@@ -642,12 +625,22 @@ const createNavigationHandler = () => {
|
|
|
642
625
|
//#endregion
|
|
643
626
|
//#region src/services/openDeeplink/createWebDeeplinkOpener/createWebDeeplinkOpener.ts
|
|
644
627
|
/**
|
|
645
|
-
* Creates a deeplink opener that
|
|
628
|
+
* Creates a deeplink opener that navigates the current tab to the deeplink URL.
|
|
629
|
+
*
|
|
630
|
+
* Uses `window.location.assign` instead of `window.open` deliberately.
|
|
631
|
+
* This matters for Phantom redirect specifically, which is the only deep link
|
|
632
|
+
* provider that redirects back to the app in a new tab. With `window.open`,
|
|
633
|
+
* the browser first opens an `about:blank` tab before the native wallet app
|
|
634
|
+
* handles the deep link. When Phantom redirects back, it opens yet another
|
|
635
|
+
* tab. The user ends up with three tabs (original, about:blank, redirect) and
|
|
636
|
+
* the browser focuses the lingering about:blank after the redirect tab closes.
|
|
637
|
+
* `window.location.assign` reuses the current tab, avoiding the extra tab
|
|
638
|
+
* entirely.
|
|
646
639
|
*/
|
|
647
640
|
const createWebDeeplinkOpener = () => {
|
|
648
641
|
if (isServerSideRendering()) return () => Promise.reject(new UnavailableInServerSideError("createWebDeeplinkOpener"));
|
|
649
642
|
return async (url) => {
|
|
650
|
-
window.
|
|
643
|
+
window.location.assign(url);
|
|
651
644
|
};
|
|
652
645
|
};
|
|
653
646
|
|
|
@@ -802,6 +795,7 @@ const getInitialState = () => ({
|
|
|
802
795
|
initStatus: "uninitialized",
|
|
803
796
|
legacyToken: null,
|
|
804
797
|
mfaToken: null,
|
|
798
|
+
prefetchedNonces: [],
|
|
805
799
|
projectSettings: null,
|
|
806
800
|
sessionExpiresAt: null,
|
|
807
801
|
sessionKeys: null,
|
|
@@ -923,6 +917,27 @@ var CheckoutSessionTokenMissingError = class extends BaseError {
|
|
|
923
917
|
}
|
|
924
918
|
};
|
|
925
919
|
|
|
920
|
+
//#endregion
|
|
921
|
+
//#region src/errors/DeeplinkConnectAndVerifyUnsupportedError.ts
|
|
922
|
+
var DeeplinkConnectAndVerifyUnsupportedError = class extends BaseError {
|
|
923
|
+
constructor({ walletProviderKey }) {
|
|
924
|
+
super({
|
|
925
|
+
cause: null,
|
|
926
|
+
code: "deeplink_connect_and_verify_unsupported",
|
|
927
|
+
docsUrl: null,
|
|
928
|
+
metaMessages: [
|
|
929
|
+
`Wallet provider key: ${walletProviderKey}`,
|
|
930
|
+
"On mobile, deep link wallet providers (e.g. Phantom redirect) cannot connect and verify in a single step.",
|
|
931
|
+
"iOS does not allow two sequential deep links — the second one is silently ignored because it is no longer tied to a user gesture.",
|
|
932
|
+
"Android may handle sequential deep links differently, but this guard applies to all mobile platforms to ensure a stable experience and prevent production-only errors.",
|
|
933
|
+
"Use connectWithWalletProvider() first, then call verifyWalletAccount() from a separate user action (e.g. a \"Verify Ownership\" button)."
|
|
934
|
+
],
|
|
935
|
+
name: "DeeplinkConnectAndVerifyUnsupportedError",
|
|
936
|
+
shortMessage: "connectAndVerifyWithWalletProvider is not supported for deep link wallet providers on mobile. Use connectWithWalletProvider and verifyWalletAccount separately."
|
|
937
|
+
});
|
|
938
|
+
}
|
|
939
|
+
};
|
|
940
|
+
|
|
926
941
|
//#endregion
|
|
927
942
|
//#region src/errors/FeeEstimationFailedError.ts
|
|
928
943
|
var FeeEstimationFailedError = class extends BaseError {
|
|
@@ -1905,6 +1920,67 @@ const prepareCheckoutTransaction = async ({ transactionId }, client = getDefault
|
|
|
1905
1920
|
});
|
|
1906
1921
|
};
|
|
1907
1922
|
|
|
1923
|
+
//#endregion
|
|
1924
|
+
//#region src/modules/wallets/utils/assertWalletProviderMethodDefined/assertWalletProviderMethodDefined.ts
|
|
1925
|
+
/**
|
|
1926
|
+
* Asserts that a specific wallet provider method is defined, throwing an error if it's not.
|
|
1927
|
+
* This function acts as a type guard, narrowing the type to ensure the method exists.
|
|
1928
|
+
*
|
|
1929
|
+
* @template T - The specific wallet provider method key being checked
|
|
1930
|
+
* @param walletProvider - The wallet provider object to check
|
|
1931
|
+
* @param methodName - The name of the method to check for availability
|
|
1932
|
+
* @throws Throws WalletProviderMethodUnavailableError if the method is not defined
|
|
1933
|
+
* @example
|
|
1934
|
+
* ```typescript
|
|
1935
|
+
* const walletProvider: WalletProvider = getWalletProvider();
|
|
1936
|
+
* assertWalletProviderMethodDefined(walletProvider, 'connect');
|
|
1937
|
+
* // walletProvider.connect is now guaranteed to be defined
|
|
1938
|
+
* await walletProvider.connect();
|
|
1939
|
+
* ```
|
|
1940
|
+
*/
|
|
1941
|
+
function assertWalletProviderMethodDefined(walletProvider, methodName) {
|
|
1942
|
+
if (walletProvider[methodName] === void 0) throw new WalletProviderMethodUnavailableError({
|
|
1943
|
+
methodName,
|
|
1944
|
+
walletProviderKey: walletProvider.key
|
|
1945
|
+
});
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1948
|
+
//#endregion
|
|
1949
|
+
//#region src/modules/checkout/submitCheckoutTransaction/submitCheckoutTransaction.ts
|
|
1950
|
+
/**
|
|
1951
|
+
* Prepares, signs, and broadcasts a checkout transaction in one call.
|
|
1952
|
+
*
|
|
1953
|
+
* Orchestrates the full submission flow:
|
|
1954
|
+
* 1. Calls prepareCheckoutTransaction to advance to signing state and lock the quote
|
|
1955
|
+
* 2. Ensures the wallet is on the correct network for the transaction
|
|
1956
|
+
* 3. Delegates on-chain signing to the wallet provider's executeCheckoutTransaction method
|
|
1957
|
+
* 4. Calls broadcastCheckoutTransaction with the resulting txHash
|
|
1958
|
+
*
|
|
1959
|
+
* @param params SubmitCheckoutTransactionParams - The transaction ID, wallet account, and optional step callback.
|
|
1960
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
1961
|
+
* @returns The broadcasted checkout transaction
|
|
1962
|
+
*/
|
|
1963
|
+
const submitCheckoutTransaction = async ({ onStepChange, transactionId, walletAccount }, client = getDefaultClient()) => {
|
|
1964
|
+
const prepared = await prepareCheckoutTransaction({ transactionId }, client);
|
|
1965
|
+
assertDefined(prepared.signingPayload, "No signing payload returned from prepare — quote may be missing transaction data");
|
|
1966
|
+
const walletProvider = getWalletProviderFromWalletAccount({ walletAccount }, client);
|
|
1967
|
+
assertWalletProviderMethodDefined(walletProvider, "executeCheckoutTransaction");
|
|
1968
|
+
const requiredNetworkId = prepared.signingPayload.chainId;
|
|
1969
|
+
if (requiredNetworkId && walletProvider.switchActiveNetwork) {
|
|
1970
|
+
const { networkId: activeNetworkId } = await walletProvider.getActiveNetworkId();
|
|
1971
|
+
if (activeNetworkId !== requiredNetworkId) await walletProvider.switchActiveNetwork({ networkId: requiredNetworkId });
|
|
1972
|
+
}
|
|
1973
|
+
const { transactionHash } = await walletProvider.executeCheckoutTransaction({
|
|
1974
|
+
onStepChange,
|
|
1975
|
+
signingPayload: prepared.signingPayload,
|
|
1976
|
+
walletAccount
|
|
1977
|
+
});
|
|
1978
|
+
return broadcastCheckoutTransaction({
|
|
1979
|
+
transactionId,
|
|
1980
|
+
txHash: transactionHash
|
|
1981
|
+
}, client);
|
|
1982
|
+
};
|
|
1983
|
+
|
|
1908
1984
|
//#endregion
|
|
1909
1985
|
//#region src/modules/deviceRegistration/completeDeviceRegistration/completeDeviceRegistration.ts
|
|
1910
1986
|
const DEVICE_REGISTRATION_TOKEN_HEADER = "x-dynamic-device-registration-token";
|
|
@@ -1959,6 +2035,23 @@ const detectDeviceRegistrationRedirect = ({ url }) => {
|
|
|
1959
2035
|
}
|
|
1960
2036
|
};
|
|
1961
2037
|
|
|
2038
|
+
//#endregion
|
|
2039
|
+
//#region src/modules/deviceRegistration/getRegisteredDevices/getRegisteredDevices.ts
|
|
2040
|
+
const getRegisteredDevices = async (client = getDefaultClient()) => {
|
|
2041
|
+
const core = getCore(client);
|
|
2042
|
+
const apiClient = createApiClient({}, client);
|
|
2043
|
+
try {
|
|
2044
|
+
return (await apiClient.listDeviceRegistrations({ environmentId: core.environmentId })).deviceRegistrations;
|
|
2045
|
+
} catch (error) {
|
|
2046
|
+
/**
|
|
2047
|
+
* The API will return 401 when no devices are registered when there are no
|
|
2048
|
+
* devices registered. We need to handle this case gracefully.
|
|
2049
|
+
*/
|
|
2050
|
+
if (error instanceof UnauthorizedError) return [];
|
|
2051
|
+
throw error;
|
|
2052
|
+
}
|
|
2053
|
+
};
|
|
2054
|
+
|
|
1962
2055
|
//#endregion
|
|
1963
2056
|
//#region src/modules/deviceRegistration/isDeviceRegistrationRequired/isDeviceRegistrationRequired.ts
|
|
1964
2057
|
/**
|
|
@@ -1975,6 +2068,26 @@ const isDeviceRegistrationRequired = (client = getDefaultClient()) => {
|
|
|
1975
2068
|
return Boolean(user.scope?.includes("device:register"));
|
|
1976
2069
|
};
|
|
1977
2070
|
|
|
2071
|
+
//#endregion
|
|
2072
|
+
//#region src/modules/deviceRegistration/revokeAllRegisteredDevices/revokeAllRegisteredDevices.ts
|
|
2073
|
+
const revokeAllRegisteredDevices = async (client = getDefaultClient()) => {
|
|
2074
|
+
const core = getCore(client);
|
|
2075
|
+
await createApiClient({}, client).deleteAllDeviceRegistrations({ environmentId: core.environmentId });
|
|
2076
|
+
await refreshAuth(client);
|
|
2077
|
+
};
|
|
2078
|
+
|
|
2079
|
+
//#endregion
|
|
2080
|
+
//#region src/modules/deviceRegistration/revokeRegisteredDevice/revokeRegisteredDevice.ts
|
|
2081
|
+
const revokeRegisteredDevice = async ({ deviceRegistrationId }, client = getDefaultClient()) => {
|
|
2082
|
+
assertDefined(deviceRegistrationId, "deviceRegistrationId is required");
|
|
2083
|
+
const core = getCore(client);
|
|
2084
|
+
await createApiClient({}, client).deleteDeviceRegistration({
|
|
2085
|
+
deviceRegistrationId,
|
|
2086
|
+
environmentId: core.environmentId
|
|
2087
|
+
});
|
|
2088
|
+
await refreshAuth(client);
|
|
2089
|
+
};
|
|
2090
|
+
|
|
1978
2091
|
//#endregion
|
|
1979
2092
|
//#region src/modules/funding/coinbase/addCoinbaseOnrampOrderEventListener/addCoinbaseOnrampOrderEventListener.ts
|
|
1980
2093
|
/**
|
|
@@ -4125,29 +4238,27 @@ const assertWalletAccountSigningAvailability = async ({ walletAccount }, client
|
|
|
4125
4238
|
};
|
|
4126
4239
|
|
|
4127
4240
|
//#endregion
|
|
4128
|
-
//#region src/
|
|
4241
|
+
//#region src/utils/isMobile/isMobile.ts
|
|
4129
4242
|
/**
|
|
4130
|
-
*
|
|
4131
|
-
* This function acts as a type guard, narrowing the type to ensure the method exists.
|
|
4132
|
-
*
|
|
4133
|
-
* @template T - The specific wallet provider method key being checked
|
|
4134
|
-
* @param walletProvider - The wallet provider object to check
|
|
4135
|
-
* @param methodName - The name of the method to check for availability
|
|
4136
|
-
* @throws Throws WalletProviderMethodUnavailableError if the method is not defined
|
|
4137
|
-
* @example
|
|
4138
|
-
* ```typescript
|
|
4139
|
-
* const walletProvider: WalletProvider = getWalletProvider();
|
|
4140
|
-
* assertWalletProviderMethodDefined(walletProvider, 'connect');
|
|
4141
|
-
* // walletProvider.connect is now guaranteed to be defined
|
|
4142
|
-
* await walletProvider.connect();
|
|
4143
|
-
* ```
|
|
4243
|
+
* Sourced from http://detectmobilebrowsers.com/
|
|
4144
4244
|
*/
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
}
|
|
4245
|
+
const userAgentRegex1 = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ios|ipad|playbook|silk/i;
|
|
4246
|
+
const userAgentRegex2 = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i;
|
|
4247
|
+
const isMobile = (maxTouchPointsOverride) => {
|
|
4248
|
+
if (typeof window === "undefined" || typeof navigator === "undefined") return false;
|
|
4249
|
+
return userAgentRegex1.test(navigator.userAgent) || userAgentRegex2.test(navigator.userAgent.substring(0, 4)) || isIPad(maxTouchPointsOverride) || isIPhone();
|
|
4250
|
+
};
|
|
4251
|
+
const isIPhone = () => typeof window === "undefined" || typeof navigator === "undefined" ? false : /iPhone|ios/.test(navigator.userAgent);
|
|
4252
|
+
/**
|
|
4253
|
+
* @param [optional] maxTouchPointsOverride - this is used for testing since
|
|
4254
|
+
* it seems that JSDOM doesn't support maxTouchPoints, so it was impossible
|
|
4255
|
+
* to mock it
|
|
4256
|
+
*/
|
|
4257
|
+
const isIPad = (maxTouchPointsOverride) => {
|
|
4258
|
+
if (typeof window === "undefined" || typeof navigator === "undefined") return false;
|
|
4259
|
+
const maxTouchPoints = maxTouchPointsOverride || navigator.maxTouchPoints;
|
|
4260
|
+
return /iPad/.test(navigator.userAgent) || /Mac/.test(navigator.userAgent) && maxTouchPoints === 5;
|
|
4261
|
+
};
|
|
4151
4262
|
|
|
4152
4263
|
//#endregion
|
|
4153
4264
|
//#region src/modules/wallets/utils/getAddressesWithTypesFromConnectionResult/getAddressesWithTypesFromConnectionResult.ts
|
|
@@ -4357,6 +4468,13 @@ const verifyWalletAccount = async ({ walletAccount, requestedScopes }, client =
|
|
|
4357
4468
|
}, client);
|
|
4358
4469
|
};
|
|
4359
4470
|
|
|
4471
|
+
//#endregion
|
|
4472
|
+
//#region src/modules/wallets/walletProvider/isDeeplinkWalletProvider/isDeeplinkWalletProvider.ts
|
|
4473
|
+
/**
|
|
4474
|
+
* Returns true if the wallet provider uses the deep link protocol (e.g. Phantom redirect on mobile).
|
|
4475
|
+
*/
|
|
4476
|
+
const isDeeplinkWalletProvider = ({ walletProvider }) => walletProvider.walletProviderType === WalletProviderEnum.DeepLink;
|
|
4477
|
+
|
|
4360
4478
|
//#endregion
|
|
4361
4479
|
//#region src/modules/wallets/connectAndVerifyWithWalletProvider/connectAndVerifyWithWalletProvider.ts
|
|
4362
4480
|
/**
|
|
@@ -4366,12 +4484,24 @@ const verifyWalletAccount = async ({ walletAccount, requestedScopes }, client =
|
|
|
4366
4484
|
* requiring the user to sign a message to prove wallet ownership before
|
|
4367
4485
|
* the wallet account is added to their profile.
|
|
4368
4486
|
*
|
|
4487
|
+
* @throws {DeeplinkConnectAndVerifyUnsupportedError} On mobile with deep link
|
|
4488
|
+
* wallet providers (e.g. Phantom redirect). This function triggers two sequential
|
|
4489
|
+
* deeplinks — one to connect and another to sign for verification. iOS will not
|
|
4490
|
+
* honor the second deeplink because it is no longer tied to a user gesture.
|
|
4491
|
+
* Android may handle sequential deeplinks differently, but this guard applies to
|
|
4492
|
+
* all mobile platforms to ensure a stable experience and prevent production-only
|
|
4493
|
+
* errors. Use `connectWithWalletProvider` first and then invoke
|
|
4494
|
+
* `verifyWalletAccount` separately from a new user gesture (e.g. a "Verify
|
|
4495
|
+
* Ownership" button).
|
|
4496
|
+
*
|
|
4369
4497
|
* @param params.walletProviderKey - The unique key identifying the wallet provider to connect to.
|
|
4370
4498
|
* @param [params.hardwareWalletVendor] - The hardware wallet vendor, if connecting via a hardware wallet (e.g. 'ledger').
|
|
4371
4499
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
4372
4500
|
* @returns A promise that resolves to the connected and verified wallet account.
|
|
4373
4501
|
*/
|
|
4374
4502
|
const connectAndVerifyWithWalletProvider = async ({ walletProviderKey, hardwareWalletVendor }, client = getDefaultClient()) => {
|
|
4503
|
+
const walletProvider = getWalletProviderByKey({ walletProviderKey }, client);
|
|
4504
|
+
if (isMobile() && isDeeplinkWalletProvider({ walletProvider })) throw new DeeplinkConnectAndVerifyUnsupportedError({ walletProviderKey });
|
|
4375
4505
|
const walletAccount = await connectWithWalletProvider({
|
|
4376
4506
|
addToDynamicWalletAccounts: false,
|
|
4377
4507
|
hardwareWalletVendor,
|
|
@@ -4743,6 +4873,34 @@ const signMessage = async ({ walletAccount, message }, client = getDefaultClient
|
|
|
4743
4873
|
return { signature };
|
|
4744
4874
|
};
|
|
4745
4875
|
|
|
4876
|
+
//#endregion
|
|
4877
|
+
//#region src/modules/wallets/transferAmount/transferAmount.ts
|
|
4878
|
+
/**
|
|
4879
|
+
* Transfers an amount of currency from the wallet account to a recipient.
|
|
4880
|
+
*
|
|
4881
|
+
* Supports native token transfers and, where supported by the chain,
|
|
4882
|
+
* fungible/token transfers via the optional `token` parameter.
|
|
4883
|
+
*
|
|
4884
|
+
* @param params.walletAccount - The wallet account to transfer from.
|
|
4885
|
+
* @param params.amount - The amount to transfer as a decimal string (e.g. "1.5").
|
|
4886
|
+
* @param params.recipient - The recipient address.
|
|
4887
|
+
* @param params.token - Optional token info for non-native transfers.
|
|
4888
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
4889
|
+
* @returns A promise that resolves to an object containing the transaction hash.
|
|
4890
|
+
* @throws If the wallet provider does not support the transfer amount method.
|
|
4891
|
+
*/
|
|
4892
|
+
const transferAmount = async ({ walletAccount, amount, recipient, token }, client = getDefaultClient()) => {
|
|
4893
|
+
const walletProvider = getWalletProviderFromWalletAccount({ walletAccount }, client);
|
|
4894
|
+
assertWalletProviderMethodDefined(walletProvider, "transferAmount");
|
|
4895
|
+
const { transactionHash } = await walletProvider.transferAmount({
|
|
4896
|
+
amount,
|
|
4897
|
+
recipient,
|
|
4898
|
+
token,
|
|
4899
|
+
walletAccount
|
|
4900
|
+
});
|
|
4901
|
+
return { transactionHash };
|
|
4902
|
+
};
|
|
4903
|
+
|
|
4746
4904
|
//#endregion
|
|
4747
4905
|
//#region src/modules/wallets/transferWalletAccount/transferWalletAccount.ts
|
|
4748
4906
|
/**
|
|
@@ -4821,26 +4979,71 @@ const onWalletProviderEvent = ({ callback, event, walletProviderKey }, client =
|
|
|
4821
4979
|
};
|
|
4822
4980
|
|
|
4823
4981
|
//#endregion
|
|
4824
|
-
//#region src/utils/
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
}
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
|
|
4843
|
-
|
|
4982
|
+
//#region src/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.ts
|
|
4983
|
+
const browserMatchers = [
|
|
4984
|
+
{
|
|
4985
|
+
name: "Edge",
|
|
4986
|
+
pattern: /Edg(e|A|iOS)?\//
|
|
4987
|
+
},
|
|
4988
|
+
{
|
|
4989
|
+
name: "Opera",
|
|
4990
|
+
pattern: /OPR\/|Opera/
|
|
4991
|
+
},
|
|
4992
|
+
{
|
|
4993
|
+
name: "Samsung Browser",
|
|
4994
|
+
pattern: /SamsungBrowser/
|
|
4995
|
+
},
|
|
4996
|
+
{
|
|
4997
|
+
name: "Firefox",
|
|
4998
|
+
pattern: /Firefox/
|
|
4999
|
+
},
|
|
5000
|
+
{
|
|
5001
|
+
name: "Safari",
|
|
5002
|
+
pattern: /^(?!.*(?:Chrome|Chromium|CriOS)).*Safari/
|
|
5003
|
+
},
|
|
5004
|
+
{
|
|
5005
|
+
name: "Chrome",
|
|
5006
|
+
pattern: /Chrome|CriOS/
|
|
5007
|
+
}
|
|
5008
|
+
];
|
|
5009
|
+
const osMatchers = [
|
|
5010
|
+
{
|
|
5011
|
+
name: "iPhone",
|
|
5012
|
+
pattern: /iPhone/
|
|
5013
|
+
},
|
|
5014
|
+
{
|
|
5015
|
+
name: "iPad",
|
|
5016
|
+
pattern: /iPad/
|
|
5017
|
+
},
|
|
5018
|
+
{
|
|
5019
|
+
name: "Android",
|
|
5020
|
+
pattern: /Android/
|
|
5021
|
+
},
|
|
5022
|
+
{
|
|
5023
|
+
name: "Windows",
|
|
5024
|
+
pattern: /Windows/
|
|
5025
|
+
},
|
|
5026
|
+
{
|
|
5027
|
+
name: "macOS",
|
|
5028
|
+
pattern: /Macintosh|Mac OS X/
|
|
5029
|
+
},
|
|
5030
|
+
{
|
|
5031
|
+
name: "Linux",
|
|
5032
|
+
pattern: /Linux/
|
|
5033
|
+
},
|
|
5034
|
+
{
|
|
5035
|
+
name: "ChromeOS",
|
|
5036
|
+
pattern: /CrOS/
|
|
5037
|
+
}
|
|
5038
|
+
];
|
|
5039
|
+
const getDeviceNameFromUserAgent = ({ userAgent }) => {
|
|
5040
|
+
if (!userAgent) return null;
|
|
5041
|
+
const browser = browserMatchers.find(({ pattern }) => pattern.test(userAgent))?.name;
|
|
5042
|
+
const os = osMatchers.find(({ pattern }) => pattern.test(userAgent))?.name;
|
|
5043
|
+
if (browser && os) return `${browser} on ${os}`;
|
|
5044
|
+
if (browser) return browser;
|
|
5045
|
+
if (os) return os;
|
|
5046
|
+
return null;
|
|
4844
5047
|
};
|
|
4845
5048
|
|
|
4846
5049
|
//#endregion
|
|
@@ -4848,5 +5051,5 @@ const isIPad = (maxTouchPointsOverride) => {
|
|
|
4848
5051
|
assertPackageVersion(name, version);
|
|
4849
5052
|
|
|
4850
5053
|
//#endregion
|
|
4851
|
-
export { BaseError, CheckoutSessionTokenMissingError, ClientAlreadyInitializedError, FeeEstimationFailedError, InvalidDeviceRegistrationRedirectError, InvalidExternalAuthError, InvalidParamError, InvalidRedirectStorageStateError, LinkCredentialError, MFAAction, MfaInvalidOtpError, MfaRateLimitedError, MissingRedirectStorageStateError, MissingSocialUrlParamError, MissingUserVerificationError, NetworkAddingUnavailableError, NetworkNotAddedError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoNetworkProvidersError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, NotWaasWalletAccountError, SandboxMaximumThresholdReachedError, SimulationFailedError, UnavailableInServerSideError, UnrecognizedNetworkError, UserNotAuthenticatedError, UserRejectedError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletAlreadyLinkedToAnotherUserError, WalletProviderMethodUnavailableError, acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, addNetwork, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, attachCheckoutTransactionSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, authenticateWithSocial, broadcastCheckoutTransaction, canConnectWithHardwareWallet, cancelCheckoutTransaction, completeDeviceRegistration, completeSocialAuthentication, connectAndVerifyWithWalletProvider, connectWithWalletProvider, consumeMfaToken, createCheckoutTransaction, createCoinbaseOnrampOrder, createCryptoDotComPayment, createDynamicClient, createKrakenExchangeTransfer, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, deleteUser, detectDeviceRegistrationRedirect, detectOAuthRedirect, fetchProjectSettings, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getCheckoutTransaction, getCheckoutTransactionQuote, getCoinbaseBuyUrl, getConnectedAddresses, getDefaultClient, getDeviceRegistrationTokenFromUrl, getElevatedAccessToken, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMissingVerificationForCoinbaseOnrampOrder, getMultichainBalances, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPrimaryWalletAccount, getTransactionHistory, getUserSocialAccounts, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletProviderDataByKey, hasExtension, initializeClient, isCaptchaRequired, isDeviceRegistrationRequired, isHardwareWalletAccount, isMfaRequiredForAction, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, isUserOnboardingComplete, isWalletAccountVerified, logout, offEvent, offWalletProviderEvent, onEvent, onWalletProviderEvent, onceEvent, prepareCheckoutTransaction, proveWalletAccountOwnership, refreshAuth, refreshUser, registerPasskey, registerTotpMfaDevice, removeWalletAccount, selectPrimaryWalletAccount, sendEmailOTP, sendSmsOTP, setCaptchaToken, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signMessage, supportedCountries, switchActiveNetwork, transferWalletAccount, unlinkSocialAccount, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized };
|
|
5054
|
+
export { BaseError, CheckoutSessionTokenMissingError, ClientAlreadyInitializedError, DeeplinkConnectAndVerifyUnsupportedError, FeeEstimationFailedError, InvalidDeviceRegistrationRedirectError, InvalidExternalAuthError, InvalidParamError, InvalidRedirectStorageStateError, LinkCredentialError, MFAAction, MfaInvalidOtpError, MfaRateLimitedError, MissingRedirectStorageStateError, MissingSocialUrlParamError, MissingUserVerificationError, NetworkAddingUnavailableError, NetworkNotAddedError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoNetworkProvidersError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, NotWaasWalletAccountError, SandboxMaximumThresholdReachedError, SimulationFailedError, UnauthorizedError, UnavailableInServerSideError, UnrecognizedNetworkError, UserNotAuthenticatedError, UserRejectedError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletAlreadyLinkedToAnotherUserError, WalletProviderMethodUnavailableError, acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, addNetwork, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, attachCheckoutTransactionSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, authenticateWithSocial, broadcastCheckoutTransaction, canConnectWithHardwareWallet, cancelCheckoutTransaction, completeDeviceRegistration, completeSocialAuthentication, connectAndVerifyWithWalletProvider, connectWithWalletProvider, consumeMfaToken, createCheckoutTransaction, createCoinbaseOnrampOrder, createCryptoDotComPayment, createDynamicClient, createKrakenExchangeTransfer, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, deleteUser, detectDeviceRegistrationRedirect, detectOAuthRedirect, fetchProjectSettings, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getCheckoutTransaction, getCheckoutTransactionQuote, getCoinbaseBuyUrl, getConnectedAddresses, getDefaultClient, getDeviceNameFromUserAgent, getDeviceRegistrationTokenFromUrl, getElevatedAccessToken, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMissingVerificationForCoinbaseOnrampOrder, getMultichainBalances, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPrimaryWalletAccount, getRegisteredDevices, getTransactionHistory, getUserSocialAccounts, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletProviderDataByKey, hasExtension, initializeClient, isCaptchaRequired, isDeeplinkWalletProvider, isDeviceRegistrationRequired, isHardwareWalletAccount, isMfaRequiredForAction, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, isUserOnboardingComplete, isWalletAccountVerified, logout, offEvent, offWalletProviderEvent, onEvent, onWalletProviderEvent, onceEvent, prepareCheckoutTransaction, proveWalletAccountOwnership, refreshAuth, refreshUser, registerPasskey, registerTotpMfaDevice, removeWalletAccount, revokeAllRegisteredDevices, revokeRegisteredDevice, selectPrimaryWalletAccount, sendEmailOTP, sendSmsOTP, setCaptchaToken, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signMessage, submitCheckoutTransaction, supportedCountries, switchActiveNetwork, transferAmount, transferWalletAccount, unlinkSocialAccount, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized };
|
|
4852
5055
|
//# sourceMappingURL=index.esm.js.map
|