@dynamic-labs-sdk/client 1.31.0 → 1.31.2
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/{apiClient-DpzKqY39.native.esm.js → apiClient-d2qJyIvx.native.esm.js} +2 -2
- package/dist/{apiClient-DpzKqY39.native.esm.js.map → apiClient-d2qJyIvx.native.esm.js.map} +1 -1
- package/dist/core.cjs +78 -5
- package/dist/core.cjs.map +1 -1
- package/dist/core.esm.js +78 -8
- package/dist/core.esm.js.map +1 -1
- package/dist/core.native.esm.js +78 -8
- package/dist/core.native.esm.js.map +1 -1
- package/dist/errors/AmbiguousWalletChainError.d.ts +32 -0
- package/dist/errors/AmbiguousWalletChainError.d.ts.map +1 -0
- package/dist/errors/ConnectionUriHandlerMissingError.d.ts +37 -0
- package/dist/errors/ConnectionUriHandlerMissingError.d.ts.map +1 -0
- package/dist/errors/NoConnectionOptionAvailableError.d.ts +39 -0
- package/dist/errors/NoConnectionOptionAvailableError.d.ts.map +1 -0
- package/dist/errors/WalletOptionNotFoundError.d.ts +30 -0
- package/dist/errors/WalletOptionNotFoundError.d.ts.map +1 -0
- package/dist/exports/core.d.ts +8 -0
- package/dist/exports/core.d.ts.map +1 -1
- package/dist/exports/index.d.ts +8 -1
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/{getNetworkProviderFromNetworkId-BN2jUhHm.esm.js → getNetworkProviderFromNetworkId-D9nx6Od5.esm.js} +29 -25
- package/dist/getNetworkProviderFromNetworkId-D9nx6Od5.esm.js.map +1 -0
- package/dist/{getNetworkProviderFromNetworkId-DUym3Qq0.native.esm.js → getNetworkProviderFromNetworkId-DF9kPibD.native.esm.js} +30 -26
- package/dist/getNetworkProviderFromNetworkId-DF9kPibD.native.esm.js.map +1 -0
- package/dist/{getNetworkProviderFromNetworkId-BoNAPSjx.cjs → getNetworkProviderFromNetworkId-DueBnAl6.cjs} +23 -19
- package/dist/{getNetworkProviderFromNetworkId-BoNAPSjx.cjs.map → getNetworkProviderFromNetworkId-DueBnAl6.cjs.map} +1 -1
- package/dist/{getSignedSessionId-DxpqG4pv.esm.js → getSignedSessionId-5q4uyZsv.native.esm.js} +34 -4
- package/dist/getSignedSessionId-5q4uyZsv.native.esm.js.map +1 -0
- package/dist/{getSignedSessionId-9ADIJCl1.cjs → getSignedSessionId-B5oxmSTs.cjs} +39 -3
- package/dist/getSignedSessionId-B5oxmSTs.cjs.map +1 -0
- package/dist/{getSignedSessionId-Dr4Ic68X.native.esm.js → getSignedSessionId-BKfQycNo.esm.js} +34 -4
- package/dist/getSignedSessionId-BKfQycNo.esm.js.map +1 -0
- package/dist/{getVerifiedCredentialForWalletAccount-C2o5idph.cjs → getVerifiedCredentialForWalletAccount-Bx0HlvfW.cjs} +2 -2
- package/dist/{getVerifiedCredentialForWalletAccount-C2o5idph.cjs.map → getVerifiedCredentialForWalletAccount-Bx0HlvfW.cjs.map} +1 -1
- package/dist/{getVerifiedCredentialForWalletAccount-Cjwoeej7.esm.js → getVerifiedCredentialForWalletAccount-_3MExyld.esm.js} +2 -2
- package/dist/{getVerifiedCredentialForWalletAccount-Cjwoeej7.esm.js.map → getVerifiedCredentialForWalletAccount-_3MExyld.esm.js.map} +1 -1
- package/dist/index.cjs +536 -80
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +534 -83
- package/dist/index.esm.js.map +1 -1
- package/dist/index.native.esm.js +492 -83
- package/dist/index.native.esm.js.map +1 -1
- package/dist/{isMfaRequiredForAction-BIBmJbV9.esm.js → isMfaRequiredForAction-BDmY2_Sj.esm.js} +2 -2
- package/dist/{isMfaRequiredForAction-BIBmJbV9.esm.js.map → isMfaRequiredForAction-BDmY2_Sj.esm.js.map} +1 -1
- package/dist/{isMfaRequiredForAction-DuSU67yq.native.esm.js → isMfaRequiredForAction-BrRCSvEX.native.esm.js} +2 -2
- package/dist/{isMfaRequiredForAction-DuSU67yq.native.esm.js.map → isMfaRequiredForAction-BrRCSvEX.native.esm.js.map} +1 -1
- package/dist/{isMfaRequiredForAction-yM84r7l7.cjs → isMfaRequiredForAction-DnKzPDZk.cjs} +2 -2
- package/dist/{isMfaRequiredForAction-yM84r7l7.cjs.map → isMfaRequiredForAction-DnKzPDZk.cjs.map} +1 -1
- package/dist/{isUserOnboardingComplete-BRTOnK8V.cjs → isUserOnboardingComplete-7GzNYU2g.cjs} +3 -3
- package/dist/{isUserOnboardingComplete-BRTOnK8V.cjs.map → isUserOnboardingComplete-7GzNYU2g.cjs.map} +1 -1
- package/dist/{isUserOnboardingComplete-DCIlkCub.native.esm.js → isUserOnboardingComplete-BfMMBtkF.native.esm.js} +3 -3
- package/dist/{isUserOnboardingComplete-DCIlkCub.native.esm.js.map → isUserOnboardingComplete-BfMMBtkF.native.esm.js.map} +1 -1
- package/dist/{isUserOnboardingComplete-B2Ha2dkP.esm.js → isUserOnboardingComplete-D1-QluDm.esm.js} +3 -3
- package/dist/{isUserOnboardingComplete-B2Ha2dkP.esm.js.map → isUserOnboardingComplete-D1-QluDm.esm.js.map} +1 -1
- package/dist/{logoutWithReason-HqGlUccb.native.esm.js → logoutWithReason-3UICYir7.native.esm.js} +2 -2
- package/dist/{logoutWithReason-HqGlUccb.native.esm.js.map → logoutWithReason-3UICYir7.native.esm.js.map} +1 -1
- package/dist/{logoutWithReason-DV89zJmJ.esm.js → logoutWithReason-CHyuBHdx.esm.js} +2 -2
- package/dist/{logoutWithReason-DV89zJmJ.esm.js.map → logoutWithReason-CHyuBHdx.esm.js.map} +1 -1
- package/dist/{logoutWithReason-DlA15deT.cjs → logoutWithReason-C_T7KddM.cjs} +2 -2
- package/dist/{logoutWithReason-DlA15deT.cjs.map → logoutWithReason-C_T7KddM.cjs.map} +1 -1
- package/dist/{migrateFromFireblocks-CiOS4_Nq.esm.js → migrateFromFireblocks-BMO3u6rO.esm.js} +2 -2
- package/dist/{migrateFromFireblocks-CiOS4_Nq.esm.js.map → migrateFromFireblocks-BMO3u6rO.esm.js.map} +1 -1
- package/dist/{migrateFromFireblocks-CqIpxGRS.cjs → migrateFromFireblocks-C9Kuke5V.cjs} +2 -2
- package/dist/{migrateFromFireblocks-CqIpxGRS.cjs.map → migrateFromFireblocks-C9Kuke5V.cjs.map} +1 -1
- package/dist/{migrateFromFireblocks-DnQsGmIW.native.esm.js → migrateFromFireblocks-DJt9bktR.native.esm.js} +2 -2
- package/dist/{migrateFromFireblocks-DnQsGmIW.native.esm.js.map → migrateFromFireblocks-DJt9bktR.native.esm.js.map} +1 -1
- package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.d.ts +7 -1
- package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.d.ts.map +1 -1
- package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.types.d.ts +4 -0
- package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.types.d.ts.map +1 -0
- package/dist/modules/auth/social/oauth/completeSocialRedirect/completeSocialRedirect.d.ts +9 -0
- package/dist/modules/auth/social/oauth/completeSocialRedirect/completeSocialRedirect.d.ts.map +1 -1
- package/dist/modules/walletOptionsCatalogue/buildInAppBrowserOptions/buildInAppBrowserOptions.d.ts +9 -1
- package/dist/modules/walletOptionsCatalogue/buildInAppBrowserOptions/buildInAppBrowserOptions.d.ts.map +1 -1
- package/dist/modules/walletOptionsCatalogue/buildInstallationUrlsByWalletOptionKey/buildInstallationUrlsByWalletOptionKey.d.ts +7 -1
- package/dist/modules/walletOptionsCatalogue/buildInstallationUrlsByWalletOptionKey/buildInstallationUrlsByWalletOptionKey.d.ts.map +1 -1
- package/dist/modules/walletOptionsCatalogue/filterConnectionOptionsByEnabledChains/filterConnectionOptionsByEnabledChains.d.ts +30 -0
- package/dist/modules/walletOptionsCatalogue/filterConnectionOptionsByEnabledChains/filterConnectionOptionsByEnabledChains.d.ts.map +1 -0
- package/dist/modules/walletOptionsCatalogue/filterConnectionOptionsByEnabledChains/index.d.ts +2 -0
- package/dist/modules/walletOptionsCatalogue/filterConnectionOptionsByEnabledChains/index.d.ts.map +1 -0
- package/dist/modules/walletOptionsCatalogue/getWalletOptionsCatalogue/getWalletOptionsCatalogue.d.ts +4 -0
- package/dist/modules/walletOptionsCatalogue/getWalletOptionsCatalogue/getWalletOptionsCatalogue.d.ts.map +1 -1
- package/dist/modules/walletOptionsCatalogue/walletOptionsCatalogue.types.d.ts +2 -1
- package/dist/modules/walletOptionsCatalogue/walletOptionsCatalogue.types.d.ts.map +1 -1
- package/dist/modules/wallets/connectWallet.types.d.ts +35 -0
- package/dist/modules/wallets/connectWallet.types.d.ts.map +1 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/connectWithUriConnectionOption.d.ts +52 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/connectWithUriConnectionOption.d.ts.map +1 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/getConnectionUriDeeplink.d.ts +34 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/getConnectionUriDeeplink.d.ts.map +1 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/index.d.ts +2 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/index.d.ts.map +1 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/index.d.ts +2 -0
- package/dist/modules/wallets/connectWithUriConnectionOption/index.d.ts.map +1 -0
- package/dist/modules/wallets/networks/getEnabledChains/getEnabledChains.d.ts +25 -0
- package/dist/modules/wallets/networks/getEnabledChains/getEnabledChains.d.ts.map +1 -0
- package/dist/modules/wallets/networks/getEnabledChains/index.d.ts +2 -0
- package/dist/modules/wallets/networks/getEnabledChains/index.d.ts.map +1 -0
- package/dist/modules/wallets/networks/networkProviderBuilderRegistry/createNetworkProviderBuilderRegistry/createNetworkProviderBuilderRegistry.d.ts +2 -1
- package/dist/modules/wallets/networks/networkProviderBuilderRegistry/createNetworkProviderBuilderRegistry/createNetworkProviderBuilderRegistry.d.ts.map +1 -1
- package/dist/modules/wallets/networks/networkProviderBuilderRegistry/events.d.ts +16 -0
- package/dist/modules/wallets/networks/networkProviderBuilderRegistry/events.d.ts.map +1 -0
- package/dist/modules/wallets/redirectToInAppBrowser/index.d.ts +2 -0
- package/dist/modules/wallets/redirectToInAppBrowser/index.d.ts.map +1 -0
- package/dist/modules/wallets/redirectToInAppBrowser/redirectToInAppBrowser.d.ts +60 -0
- package/dist/modules/wallets/redirectToInAppBrowser/redirectToInAppBrowser.d.ts.map +1 -0
- package/dist/modules/wallets/resolveWalletConnectionOption/index.d.ts +3 -0
- package/dist/modules/wallets/resolveWalletConnectionOption/index.d.ts.map +1 -0
- package/dist/modules/wallets/resolveWalletConnectionOption/resolveWalletConnectionOption.d.ts +36 -0
- package/dist/modules/wallets/resolveWalletConnectionOption/resolveWalletConnectionOption.d.ts.map +1 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/createUriConnectionStarterRegistry.d.ts +22 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/createUriConnectionStarterRegistry.d.ts.map +1 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/index.d.ts +2 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/index.d.ts.map +1 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/events.d.ts +18 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/events.d.ts.map +1 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/getUriConnectionStarterRegistry.d.ts +22 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/getUriConnectionStarterRegistry.d.ts.map +1 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/index.d.ts +2 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/index.d.ts.map +1 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/index.d.ts +3 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/index.d.ts.map +1 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/uriConnectionStarterRegistry.types.d.ts +32 -0
- package/dist/modules/wallets/uriConnectionStarterRegistry/uriConnectionStarterRegistry.types.d.ts.map +1 -0
- package/dist/modules/wallets/walletProviderUriConnection.types.d.ts +19 -0
- package/dist/modules/wallets/walletProviderUriConnection.types.d.ts.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/buildInAppBrowserUrl/buildInAppBrowserUrl.d.ts +32 -0
- package/dist/utils/buildInAppBrowserUrl/buildInAppBrowserUrl.d.ts.map +1 -0
- package/dist/utils/buildInAppBrowserUrl/index.d.ts +2 -0
- package/dist/utils/buildInAppBrowserUrl/index.d.ts.map +1 -0
- package/dist/utils/getPreferredWalletDeepLink/getPreferredWalletDeepLink.d.ts +33 -0
- package/dist/utils/getPreferredWalletDeepLink/getPreferredWalletDeepLink.d.ts.map +1 -0
- package/dist/utils/getPreferredWalletDeepLink/index.d.ts +2 -0
- package/dist/utils/getPreferredWalletDeepLink/index.d.ts.map +1 -0
- package/dist/utils/isAndroid/index.d.ts +2 -0
- package/dist/utils/isAndroid/index.d.ts.map +1 -0
- package/dist/utils/isAndroid/isAndroid.d.ts +20 -0
- package/dist/utils/isAndroid/isAndroid.d.ts.map +1 -0
- package/dist/utils/isIOS/index.d.ts +2 -0
- package/dist/utils/isIOS/index.d.ts.map +1 -0
- package/dist/utils/isIOS/isIOS.d.ts +23 -0
- package/dist/utils/isIOS/isIOS.d.ts.map +1 -0
- package/dist/utils/isMobile/isMobile.d.ts +17 -36
- package/dist/utils/isMobile/isMobile.d.ts.map +1 -1
- package/dist/utils/userAgentChecks/userAgentChecks.d.ts +35 -0
- package/dist/utils/userAgentChecks/userAgentChecks.d.ts.map +1 -0
- package/dist/{waas-CkQYVo6U.native.esm.js → waas-9QajYGeK.native.esm.js} +4 -4
- package/dist/{waas-CkQYVo6U.native.esm.js.map → waas-9QajYGeK.native.esm.js.map} +1 -1
- package/dist/{waas-BOKafCeH.cjs → waas-Bxsd0-HG.cjs} +4 -4
- package/dist/{waas-BOKafCeH.cjs.map → waas-Bxsd0-HG.cjs.map} +1 -1
- package/dist/{waas-CUDgU2pl.esm.js → waas-T_dHXyI9.esm.js} +4 -4
- package/dist/{waas-CUDgU2pl.esm.js.map → waas-T_dHXyI9.esm.js.map} +1 -1
- package/dist/waas.cjs +4 -4
- package/dist/waas.esm.js +4 -4
- package/dist/waas.native.esm.js +4 -4
- package/dist/waasCore.cjs +10 -40
- package/dist/waasCore.cjs.map +1 -1
- package/dist/waasCore.esm.js +5 -35
- package/dist/waasCore.esm.js.map +1 -1
- package/dist/waasCore.native.esm.js +5 -35
- package/dist/waasCore.native.esm.js.map +1 -1
- package/package.json +2 -2
- package/dist/getNetworkProviderFromNetworkId-BN2jUhHm.esm.js.map +0 -1
- package/dist/getNetworkProviderFromNetworkId-DUym3Qq0.native.esm.js.map +0 -1
- package/dist/getSignedSessionId-9ADIJCl1.cjs.map +0 -1
- package/dist/getSignedSessionId-Dr4Ic68X.native.esm.js.map +0 -1
- package/dist/getSignedSessionId-DxpqG4pv.esm.js.map +0 -1
package/dist/index.native.esm.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { $ as NONCE_POOL_SIZE, A as onEvent, B as splitWalletProviderKey, D as getWalletProviderRegistry, E as WalletProviderPriority, Et as version, H as isUserMissingMfaAuth, I as getChainFromVerifiedCredentialChain, J as getNonce, L as CHAINS_INFO_MAP, N as getWalletAccounts, O as emitEvent, Q as createLocalStorageAdapter, R as formatWalletAccountId, St as BaseError, T as getWalletProviders, Tt as name, X as updateNoncePoolStorage, Y as fetchAndStoreNonces, Z as createStorageKeySchema, _t as getPlatform, a as instrumentFunction, at as InvalidExternalAuthError, c as getUserAgent, d as updateAuthFromVerifyResponse, et as UnauthorizedError, f as upsertElevatedAccessToken, ft as isCookieEnabled, g as checkAndRaiseWalletAccountsChangedEvent, gt as randomString, h as InvalidParamError, ht as getElevatedAccessToken, i as __refreshAuth_wrapped, it as LinkCredentialError, j as onceEvent, k as offEvent, l as getOperatingSystem, lt as DYNAMIC_ICONIC_SPRITE_URL, m as decodeJwt, mt as ValueMustBeDefinedError, n as NoWalletProviderFoundError, nt as MfaRateLimitedError, o as scrubParameters, ot as APIError, p as parseElevatedAccessToken, pt as assertDefined, r as createApiClient, rt as MfaInvalidOtpError, s as DEFAULT_PII_FIELDS, t as getWalletProviderFromWalletAccount, tt as SandboxMaximumThresholdReachedError, u as extractSessionId, ut as SDK_API_CORE_VERSION, v as initializeWaasClientsForEagerRecovery, vt as getDefaultClient, wt as TokenScope, xt as getCore, yt as setDefaultClient, z as normalizeAddress } from "./apiClient-
|
|
2
|
-
import { a as TransactionBroadcastError, i as NotWaasWalletAccountError } from "./migrateFromFireblocks-
|
|
3
|
-
import { Q as WaasChainEnum } from "./waas-
|
|
4
|
-
import { A as createEventEmitter, B as REFRESH_USER_STATE_FROM_VALID_TOKEN_TRACKER_KEY, C as getKeychainIndexedDBName, D as assertSafeNavigationUrl, E as createKeychainService, F as createAppForegroundSubscriber, G as createStorage, H as getBuffer, I as FETCH_PROJECT_SETTINGS_TRACKER_KEY, L as GENERATE_SESSION_KEYS_TRACKER_KEY, N as CannotTrackError, P as createDeferredPromise, R as INITIALIZE_STORAGE_SYNC_TRACKER_KEY, S as MergeAccountsConfirmationError, T as assertSafeDeeplinkUrl, U as subscribeWithSelector, V as isServerSideRendering, W as isEqualShallow, _ as getAppMetadata, a as
|
|
5
|
-
import { a as retryOnFail, i as isSignedIn, n as generateSessionKeys, o as getVerifiedCredentialForWalletAccount, r as fetchProjectSettings, s as getWalletProviderByKey, t as __logoutWithReason_wrapped } from "./logoutWithReason-
|
|
6
|
-
import { n as getMfaMethods, r as __consumeMfaToken_wrapped, t as isMfaRequiredForAction } from "./isMfaRequiredForAction-
|
|
7
|
-
import { a as WaasRbacStaleRetryUnsafeError, i as preconnectWaasIframe, n as isPendingRecoveryCodesAcknowledgment, o as WaasOnboardingIncompleteError, r as isDeviceRegistrationRequired, s as WaasLoadFailedError, t as isUserOnboardingComplete } from "./isUserOnboardingComplete-
|
|
1
|
+
import { $ as NONCE_POOL_SIZE, A as onEvent, B as splitWalletProviderKey, D as getWalletProviderRegistry, E as WalletProviderPriority, Et as version, H as isUserMissingMfaAuth, I as getChainFromVerifiedCredentialChain, J as getNonce, L as CHAINS_INFO_MAP, N as getWalletAccounts, O as emitEvent, Q as createLocalStorageAdapter, R as formatWalletAccountId, St as BaseError, T as getWalletProviders, Tt as name, X as updateNoncePoolStorage, Y as fetchAndStoreNonces, Z as createStorageKeySchema, _t as getPlatform, a as instrumentFunction, at as InvalidExternalAuthError, c as getUserAgent, d as updateAuthFromVerifyResponse, et as UnauthorizedError, f as upsertElevatedAccessToken, ft as isCookieEnabled, g as checkAndRaiseWalletAccountsChangedEvent, gt as randomString, h as InvalidParamError, ht as getElevatedAccessToken, i as __refreshAuth_wrapped, it as LinkCredentialError, j as onceEvent, k as offEvent, l as getOperatingSystem, lt as DYNAMIC_ICONIC_SPRITE_URL, m as decodeJwt, mt as ValueMustBeDefinedError, n as NoWalletProviderFoundError, nt as MfaRateLimitedError, o as scrubParameters, ot as APIError, p as parseElevatedAccessToken, pt as assertDefined, r as createApiClient, rt as MfaInvalidOtpError, s as DEFAULT_PII_FIELDS, t as getWalletProviderFromWalletAccount, tt as SandboxMaximumThresholdReachedError, u as extractSessionId, ut as SDK_API_CORE_VERSION, v as initializeWaasClientsForEagerRecovery, vt as getDefaultClient, wt as TokenScope, xt as getCore, yt as setDefaultClient, z as normalizeAddress } from "./apiClient-d2qJyIvx.native.esm.js";
|
|
2
|
+
import { a as TransactionBroadcastError, i as NotWaasWalletAccountError } from "./migrateFromFireblocks-DJt9bktR.native.esm.js";
|
|
3
|
+
import { Q as WaasChainEnum } from "./waas-9QajYGeK.native.esm.js";
|
|
4
|
+
import { A as createEventEmitter, B as REFRESH_USER_STATE_FROM_VALID_TOKEN_TRACKER_KEY, C as getKeychainIndexedDBName, D as assertSafeNavigationUrl, E as createKeychainService, F as createAppForegroundSubscriber, G as createStorage, H as getBuffer, I as FETCH_PROJECT_SETTINGS_TRACKER_KEY, L as GENERATE_SESSION_KEYS_TRACKER_KEY, N as CannotTrackError, P as createDeferredPromise, R as INITIALIZE_STORAGE_SYNC_TRACKER_KEY, S as MergeAccountsConfirmationError, T as assertSafeDeeplinkUrl, U as subscribeWithSelector, V as isServerSideRendering, W as isEqualShallow, _ as getAppMetadata, a as removeUnverifiedWalletAccount, b as WalletAlreadyLinkedToAnotherUserError, c as reconcileWalletAccountsAgainstClient, d as createVisit, f as getNetworkProviderBuilderRegistry, g as isCaptchaRequired, h as consumeCaptchaToken, i as verifyMessageSignatureOwnership, j as createCrossTabBroadcast, k as createLogger, l as updateWalletProviderKeysForVerifiedCredentials, m as __setCaptchaToken_wrapped, o as createSignInMessageStatement, p as hasExtension, r as getNetworksData, s as formatSignInMessage, t as getNetworkProviderFromNetworkId, u as setUnverifiedWalletAccounts, v as MethodNotImplementedError, w as createRealtimeService, x as NoNetworkProvidersError, y as WalletScreeningBlockedError, z as REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY } from "./getNetworkProviderFromNetworkId-DF9kPibD.native.esm.js";
|
|
5
|
+
import { a as retryOnFail, i as isSignedIn, n as generateSessionKeys, o as getVerifiedCredentialForWalletAccount, r as fetchProjectSettings, s as getWalletProviderByKey, t as __logoutWithReason_wrapped } from "./logoutWithReason-3UICYir7.native.esm.js";
|
|
6
|
+
import { n as getMfaMethods, r as __consumeMfaToken_wrapped, t as isMfaRequiredForAction } from "./isMfaRequiredForAction-BrRCSvEX.native.esm.js";
|
|
7
|
+
import { a as WaasRbacStaleRetryUnsafeError, i as preconnectWaasIframe, n as isPendingRecoveryCodesAcknowledgment, o as WaasOnboardingIncompleteError, r as isDeviceRegistrationRequired, s as WaasLoadFailedError, t as isUserOnboardingComplete } from "./isUserOnboardingComplete-BfMMBtkF.native.esm.js";
|
|
8
8
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
9
9
|
import { AuthModeEnum, CaptchaProviderEnum as CaptchaProviderEnum$1, ChainEnum, ExchangeKeyEnum, JwtVerifiedCredentialFormatEnum as JwtVerifiedCredentialFormatEnum$1, MFAAction as MFAAction$1, MfaBackupCodeAcknowledgement, ProviderEnum as ProviderEnum$1, TokenScope as TokenScope$1, WaasBackupOptionsEnum, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
|
|
10
10
|
import * as z from "zod/mini";
|
|
11
11
|
import { Linking } from "react-native";
|
|
12
|
-
import { EventEmitter
|
|
12
|
+
import { EventEmitter } from "eventemitter3";
|
|
13
13
|
import { Passkey } from "react-native-passkey";
|
|
14
14
|
|
|
15
15
|
//#region src/modules/state/raiseStateEvents/events.ts
|
|
@@ -557,7 +557,7 @@ const initializeClient = async (client = getDefaultClient()) => {
|
|
|
557
557
|
*/
|
|
558
558
|
if (isCookieEnabled(client)) await __refreshAuth_wrapped(client).catch(async (error) => {
|
|
559
559
|
if (error.status === 401) {
|
|
560
|
-
core.logger.
|
|
560
|
+
core.logger.warn("Session expired during initialization", error);
|
|
561
561
|
if (client.user) await __logoutWithReason_wrapped({ reason: "session-refresh-unauthorized" }, client);
|
|
562
562
|
} else throw error;
|
|
563
563
|
});
|
|
@@ -632,7 +632,7 @@ const createAsyncTrack = () => {
|
|
|
632
632
|
* This ensures no process is missed (as it would throw when tracked on a different node tick).
|
|
633
633
|
*/
|
|
634
634
|
let isTrackEnabled = true;
|
|
635
|
-
const eventEmitter = new EventEmitter
|
|
635
|
+
const eventEmitter = new EventEmitter();
|
|
636
636
|
const allSettledPromise = createDeferredPromise();
|
|
637
637
|
const tracker = /* @__PURE__ */ new Map();
|
|
638
638
|
/**
|
|
@@ -1284,6 +1284,46 @@ const __createDynamicClient_wrapped = instrumentFunction({
|
|
|
1284
1284
|
}
|
|
1285
1285
|
});
|
|
1286
1286
|
|
|
1287
|
+
//#endregion
|
|
1288
|
+
//#region src/errors/AmbiguousWalletChainError.ts
|
|
1289
|
+
/**
|
|
1290
|
+
* Thrown when a wallet can be connected on more than one of the client's
|
|
1291
|
+
* enabled chains and no chain was passed to `connectWallet`.
|
|
1292
|
+
*
|
|
1293
|
+
* Multi-chain wallets such as MetaMask or Phantom connect to a different
|
|
1294
|
+
* account per chain, so the chain has to be an explicit choice rather than one
|
|
1295
|
+
* Dynamic makes on the customer's behalf.
|
|
1296
|
+
*
|
|
1297
|
+
* @example
|
|
1298
|
+
* ```ts
|
|
1299
|
+
* try {
|
|
1300
|
+
* await connectWallet({ walletKey: 'phantom' });
|
|
1301
|
+
* } catch (error) {
|
|
1302
|
+
* if (error instanceof AmbiguousWalletChainError) {
|
|
1303
|
+
* await connectWallet({ chain: 'SOL', walletKey: 'phantom' });
|
|
1304
|
+
* }
|
|
1305
|
+
* }
|
|
1306
|
+
* ```
|
|
1307
|
+
* @see connectWallet
|
|
1308
|
+
* @see getWalletOptionsCatalogue
|
|
1309
|
+
*/
|
|
1310
|
+
var AmbiguousWalletChainError = class extends BaseError {
|
|
1311
|
+
constructor({ chains, walletKey }) {
|
|
1312
|
+
super({
|
|
1313
|
+
cause: null,
|
|
1314
|
+
code: "ambiguous_wallet_chain",
|
|
1315
|
+
docsUrl: null,
|
|
1316
|
+
metaMessages: [
|
|
1317
|
+
`Wallet key: ${walletKey}`,
|
|
1318
|
+
`Available chains: ${chains.join(", ")}`,
|
|
1319
|
+
"Pass the chain param to pick which one to connect on."
|
|
1320
|
+
],
|
|
1321
|
+
name: "AmbiguousWalletChainError",
|
|
1322
|
+
shortMessage: `Wallet ${walletKey} can be connected on more than one chain, so the chain param is required.`
|
|
1323
|
+
});
|
|
1324
|
+
}
|
|
1325
|
+
};
|
|
1326
|
+
|
|
1287
1327
|
//#endregion
|
|
1288
1328
|
//#region src/errors/CheckoutSessionTokenMissingError.ts
|
|
1289
1329
|
var CheckoutSessionTokenMissingError = class extends BaseError {
|
|
@@ -1683,6 +1723,54 @@ var NoAddressFoundError = class extends BaseError {
|
|
|
1683
1723
|
}
|
|
1684
1724
|
};
|
|
1685
1725
|
|
|
1726
|
+
//#endregion
|
|
1727
|
+
//#region src/errors/NoConnectionOptionAvailableError.ts
|
|
1728
|
+
/**
|
|
1729
|
+
* Thrown when a wallet exists in the catalogue but has no connection option
|
|
1730
|
+
* this client can drive.
|
|
1731
|
+
*
|
|
1732
|
+
* Happens when the wallet is not installed on the device and no URI pairing is
|
|
1733
|
+
* available for it — either the wallet does not support one, or the chain
|
|
1734
|
+
* extension providing that pairing was not added to the client.
|
|
1735
|
+
*
|
|
1736
|
+
* @example
|
|
1737
|
+
* ```ts
|
|
1738
|
+
* try {
|
|
1739
|
+
* await connectWallet({ walletKey: 'rainbow' });
|
|
1740
|
+
* } catch (error) {
|
|
1741
|
+
* if (error instanceof NoConnectionOptionAvailableError) {
|
|
1742
|
+
* promptWalletInstall(error.installationUrls);
|
|
1743
|
+
* }
|
|
1744
|
+
* }
|
|
1745
|
+
* ```
|
|
1746
|
+
* @see connectWallet
|
|
1747
|
+
* @see getWalletOptionsCatalogue
|
|
1748
|
+
*/
|
|
1749
|
+
var NoConnectionOptionAvailableError = class extends BaseError {
|
|
1750
|
+
/**
|
|
1751
|
+
* Install / download links for the wallet, when the wallet book carries any
|
|
1752
|
+
* for this device. Prompt the user to install the wallet with these.
|
|
1753
|
+
*/
|
|
1754
|
+
installationUrls;
|
|
1755
|
+
constructor({ chain, installationUrls, walletKey }) {
|
|
1756
|
+
super({
|
|
1757
|
+
cause: null,
|
|
1758
|
+
code: "no_connection_option_available",
|
|
1759
|
+
docsUrl: null,
|
|
1760
|
+
metaMessages: [
|
|
1761
|
+
`Wallet key: ${walletKey}`,
|
|
1762
|
+
...chain ? [`Chain: ${chain}`] : [],
|
|
1763
|
+
"The wallet is not installed and no URI pairing is available for it on this client.",
|
|
1764
|
+
"URI pairing requires the chain extension that provides it — addWalletConnect<Chain>Extension for WalletConnect, addMetaMask<Chain>Extension for MetaMask.",
|
|
1765
|
+
"Use this error's installationUrls to prompt the user to install the wallet."
|
|
1766
|
+
],
|
|
1767
|
+
name: "NoConnectionOptionAvailableError",
|
|
1768
|
+
shortMessage: `No connection option available for wallet: ${walletKey}`
|
|
1769
|
+
});
|
|
1770
|
+
this.installationUrls = installationUrls;
|
|
1771
|
+
}
|
|
1772
|
+
};
|
|
1773
|
+
|
|
1686
1774
|
//#endregion
|
|
1687
1775
|
//#region src/errors/NoPasskeyCredentialsFoundError.ts
|
|
1688
1776
|
var NoPasskeyCredentialsFoundError = class extends BaseError {
|
|
@@ -1877,6 +1965,46 @@ var WalletAccountNotSelectedError = class extends BaseError {
|
|
|
1877
1965
|
}
|
|
1878
1966
|
};
|
|
1879
1967
|
|
|
1968
|
+
//#endregion
|
|
1969
|
+
//#region src/errors/WalletOptionNotFoundError.ts
|
|
1970
|
+
/**
|
|
1971
|
+
* Thrown when `connectWallet` is given a wallet key that no wallet option in
|
|
1972
|
+
* the catalogue matches.
|
|
1973
|
+
*
|
|
1974
|
+
* A wallet is only surfaced for the chains this client has an extension for, so
|
|
1975
|
+
* this also covers keys that are valid in the wallet book but not reachable
|
|
1976
|
+
* with the client's current chain extensions.
|
|
1977
|
+
*
|
|
1978
|
+
* @example
|
|
1979
|
+
* ```ts
|
|
1980
|
+
* try {
|
|
1981
|
+
* await connectWallet({ walletKey: 'metmask' });
|
|
1982
|
+
* } catch (error) {
|
|
1983
|
+
* if (error instanceof WalletOptionNotFoundError) {
|
|
1984
|
+
* showUnknownWalletMessage();
|
|
1985
|
+
* }
|
|
1986
|
+
* }
|
|
1987
|
+
* ```
|
|
1988
|
+
* @see connectWallet
|
|
1989
|
+
* @see getWalletOptionsCatalogue
|
|
1990
|
+
*/
|
|
1991
|
+
var WalletOptionNotFoundError = class extends BaseError {
|
|
1992
|
+
constructor({ walletKey }) {
|
|
1993
|
+
super({
|
|
1994
|
+
cause: null,
|
|
1995
|
+
code: "wallet_option_not_found",
|
|
1996
|
+
docsUrl: null,
|
|
1997
|
+
metaMessages: [
|
|
1998
|
+
`Wallet key: ${walletKey}`,
|
|
1999
|
+
"The key must match a wallet option surfaced by getWalletOptionsCatalogue (e.g. \"metamask\", \"phantom\").",
|
|
2000
|
+
"A wallet is only surfaced on chains this client has an extension for, so make sure the relevant chain extension is added."
|
|
2001
|
+
],
|
|
2002
|
+
name: "WalletOptionNotFoundError",
|
|
2003
|
+
shortMessage: `No wallet option found for key: ${walletKey}`
|
|
2004
|
+
});
|
|
2005
|
+
}
|
|
2006
|
+
};
|
|
2007
|
+
|
|
1880
2008
|
//#endregion
|
|
1881
2009
|
//#region src/errors/WalletProviderMethodUnavailableError.ts
|
|
1882
2010
|
var WalletProviderMethodUnavailableError = class extends BaseError {
|
|
@@ -2427,7 +2555,7 @@ const __authenticateWithSocial_wrapped = instrumentFunction({
|
|
|
2427
2555
|
* @throws MethodNotImplementedError Always on React Native.
|
|
2428
2556
|
* @notInstrumented
|
|
2429
2557
|
*/
|
|
2430
|
-
const clearSocialRedirectParams = () => {
|
|
2558
|
+
const clearSocialRedirectParams = ({ expectedState } = {}) => {
|
|
2431
2559
|
throw new MethodNotImplementedError("clearSocialRedirectParams (not needed on React Native — signInWithSocialPopUp processes the callback inline)");
|
|
2432
2560
|
};
|
|
2433
2561
|
|
|
@@ -7268,20 +7396,37 @@ const hasAllGoogleDriveBackupScopes = (grantedScopes) => findMissingGoogleDriveB
|
|
|
7268
7396
|
const isInsufficientGoogleDriveScopesError = (err) => err instanceof Error && err.message.includes(ACCESS_DENIED_PHRASE);
|
|
7269
7397
|
|
|
7270
7398
|
//#endregion
|
|
7271
|
-
//#region src/utils/
|
|
7399
|
+
//#region src/utils/isAndroid/isAndroid.ts
|
|
7400
|
+
/**
|
|
7401
|
+
* Tells whether the SDK is running on Android.
|
|
7402
|
+
*
|
|
7403
|
+
* The operating system comes from {@link getOperatingSystem}, which reads
|
|
7404
|
+
* `Platform.OS` in React Native and the user agent on web.
|
|
7405
|
+
*
|
|
7406
|
+
* @example
|
|
7407
|
+
* ```ts
|
|
7408
|
+
* if (isAndroid()) {
|
|
7409
|
+
* return installationUrls.android;
|
|
7410
|
+
* }
|
|
7411
|
+
* ```
|
|
7412
|
+
*
|
|
7413
|
+
* @returns `true` when the current device runs Android.
|
|
7414
|
+
* @see getOperatingSystem
|
|
7415
|
+
* @see isIOS
|
|
7416
|
+
* @notInstrumented
|
|
7417
|
+
*/
|
|
7418
|
+
const isAndroid = () => getOperatingSystem() === "android";
|
|
7419
|
+
|
|
7420
|
+
//#endregion
|
|
7421
|
+
//#region src/utils/userAgentChecks/userAgentChecks.ts
|
|
7272
7422
|
/**
|
|
7273
|
-
*
|
|
7423
|
+
* Matches the device names Apple's handhelds report, plus the standalone `ios`
|
|
7424
|
+
* token that embedded web views and custom in-app browsers use in place of a
|
|
7425
|
+
* device name. The token must stand alone so that unrelated words containing
|
|
7426
|
+
* `ios` (`kiosk`, for instance) don't match.
|
|
7274
7427
|
* @notInstrumented
|
|
7275
7428
|
*/
|
|
7276
|
-
const
|
|
7277
|
-
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;
|
|
7278
|
-
/** @notInstrumented */
|
|
7279
|
-
const isMobile = (maxTouchPointsOverride) => {
|
|
7280
|
-
if (typeof window === "undefined" || typeof navigator === "undefined") return false;
|
|
7281
|
-
return userAgentRegex1.test(navigator.userAgent) || userAgentRegex2.test(navigator.userAgent.substring(0, 4)) || isIPad(maxTouchPointsOverride) || isIPhone();
|
|
7282
|
-
};
|
|
7283
|
-
/** @notInstrumented */
|
|
7284
|
-
const isIPhone = () => typeof window === "undefined" || typeof navigator === "undefined" ? false : /iPhone|ios/.test(navigator.userAgent);
|
|
7429
|
+
const isIOSUserAgent = () => typeof window === "undefined" || typeof navigator === "undefined" ? false : /iPhone|iPod|(?:^|[^a-z])ios(?:[^a-z]|$)/i.test(navigator.userAgent);
|
|
7285
7430
|
/**
|
|
7286
7431
|
* @param [optional] maxTouchPointsOverride - this is used for testing since
|
|
7287
7432
|
* it seems that JSDOM doesn't support maxTouchPoints, so it was impossible
|
|
@@ -7294,13 +7439,6 @@ const isIPad = (maxTouchPointsOverride) => {
|
|
|
7294
7439
|
return /iPad/.test(navigator.userAgent) || /Mac/.test(navigator.userAgent) && maxTouchPoints === 5;
|
|
7295
7440
|
};
|
|
7296
7441
|
/** @notInstrumented */
|
|
7297
|
-
const isIOS = (maxTouchPointsOverride) => {
|
|
7298
|
-
if (typeof window === "undefined" || typeof navigator === "undefined") return false;
|
|
7299
|
-
return isIPhone() || isIPad(maxTouchPointsOverride);
|
|
7300
|
-
};
|
|
7301
|
-
/** @notInstrumented */
|
|
7302
|
-
const isAndroid = () => isMobile() && !isIOS();
|
|
7303
|
-
/** @notInstrumented */
|
|
7304
7442
|
const isSafariBrowser = () => {
|
|
7305
7443
|
if (typeof window === "undefined" || typeof navigator === "undefined") return false;
|
|
7306
7444
|
const { userAgent } = navigator;
|
|
@@ -7327,6 +7465,31 @@ const isChromeBrowser = () => {
|
|
|
7327
7465
|
return /\bChrome\//.test(navigator.userAgent) && !isEdgeBrowser() && !isOperaBrowser();
|
|
7328
7466
|
};
|
|
7329
7467
|
|
|
7468
|
+
//#endregion
|
|
7469
|
+
//#region src/utils/isIOS/isIOS.ts
|
|
7470
|
+
/**
|
|
7471
|
+
* Tells whether the SDK is running on iOS or iPadOS.
|
|
7472
|
+
*
|
|
7473
|
+
* The operating system comes from {@link getOperatingSystem}, which reads
|
|
7474
|
+
* `Platform.OS` in React Native and the user agent on web. Two user agents
|
|
7475
|
+
* escape it: an iPad in desktop mode announces itself as macOS, and embedded
|
|
7476
|
+
* web views may carry a lowercase `ios` token instead of a device name.
|
|
7477
|
+
*
|
|
7478
|
+
* @example
|
|
7479
|
+
* ```ts
|
|
7480
|
+
* if (isIOS()) {
|
|
7481
|
+
* return installationUrls.ios;
|
|
7482
|
+
* }
|
|
7483
|
+
* ```
|
|
7484
|
+
*
|
|
7485
|
+
* @returns `true` when the current device runs iOS or iPadOS.
|
|
7486
|
+
* @see getOperatingSystem
|
|
7487
|
+
* @see isIPad
|
|
7488
|
+
* @see isIOSUserAgent
|
|
7489
|
+
* @notInstrumented
|
|
7490
|
+
*/
|
|
7491
|
+
const isIOS = () => getOperatingSystem() === "ios" || isIOSUserAgent() || isIPad();
|
|
7492
|
+
|
|
7330
7493
|
//#endregion
|
|
7331
7494
|
//#region src/modules/walletOptionsCatalogue/getInstallationLinkForCurrentPlatform/getInstallationLinkForCurrentPlatform.ts
|
|
7332
7495
|
/**
|
|
@@ -7367,6 +7530,77 @@ const getInstallationLinkForCurrentPlatform = ({ installationUrls }) => {
|
|
|
7367
7530
|
if (isChromeBrowser()) return installationUrls.chrome;
|
|
7368
7531
|
};
|
|
7369
7532
|
|
|
7533
|
+
//#endregion
|
|
7534
|
+
//#region src/modules/wallets/networks/getEnabledChains/getEnabledChains.ts
|
|
7535
|
+
/**
|
|
7536
|
+
* Returns the chains this client can operate on — a chain is enabled once
|
|
7537
|
+
* one of its extensions has been added (`addEvmExtension`,
|
|
7538
|
+
* `addSolanaExtension`, …), since every chain extension registers a
|
|
7539
|
+
* network provider builder for its chain.
|
|
7540
|
+
*
|
|
7541
|
+
* Reading the builder registry keeps chain awareness out of the client
|
|
7542
|
+
* package: the set is whatever the extensions registered, so no
|
|
7543
|
+
* chain-specific branch is needed here.
|
|
7544
|
+
*
|
|
7545
|
+
* @param client - The Dynamic client instance.
|
|
7546
|
+
* @returns The set of chains the client has an extension for.
|
|
7547
|
+
* @example
|
|
7548
|
+
* ```typescript
|
|
7549
|
+
* // client created with addEvmExtension only
|
|
7550
|
+
* getEnabledChains(client); // Set { 'EVM' }
|
|
7551
|
+
* ```
|
|
7552
|
+
* @see {@link getNetworkProviderBuilderRegistry} for the registry the chains are read from.
|
|
7553
|
+
* @see {@link getNetworkProviders} for the other consumer of that registry.
|
|
7554
|
+
* @notInstrumented
|
|
7555
|
+
*/
|
|
7556
|
+
const getEnabledChains = (client) => {
|
|
7557
|
+
const networkProviderBuilderRegistry = getNetworkProviderBuilderRegistry(client);
|
|
7558
|
+
return new Set(networkProviderBuilderRegistry.get().keys());
|
|
7559
|
+
};
|
|
7560
|
+
|
|
7561
|
+
//#endregion
|
|
7562
|
+
//#region src/modules/legacyWalletBook/getWalletConnectCatalog/getChainsFromWalletSchema/getChainsFromWalletSchema.ts
|
|
7563
|
+
/**
|
|
7564
|
+
* Returns every chain a wallet book entry advertises support for —
|
|
7565
|
+
* deduped, in `injectedConfig` order, then `chains` order. Used by the
|
|
7566
|
+
* catalogue's WalletConnect builder so a multi-chain wallet (e.g. Trust
|
|
7567
|
+
* supports EVM + SOL) gets one option per chain rather than one option
|
|
7568
|
+
* for whichever chain `getChainFromWalletSchema` happened to pick first.
|
|
7569
|
+
*
|
|
7570
|
+
* Falls back to {@link getChainFromWalletSchema}'s single-result behavior
|
|
7571
|
+
* (`['EVM']` default) when neither field is populated, so the helper
|
|
7572
|
+
* never returns an empty array — every eligible wallet emits at least
|
|
7573
|
+
* one option.
|
|
7574
|
+
*
|
|
7575
|
+
* @param params.wallet - The wallet schema from the wallet book.
|
|
7576
|
+
* @param [params.walletKey] - The wallet key identifier (used as last-resort fallback).
|
|
7577
|
+
* @returns Ordered, deduped array of Chains.
|
|
7578
|
+
* @notInstrumented
|
|
7579
|
+
*/
|
|
7580
|
+
const getChainsFromWalletSchema = ({ wallet, walletKey }) => {
|
|
7581
|
+
const chains = /* @__PURE__ */ new Set();
|
|
7582
|
+
for (const entry of wallet.injectedConfig ?? []) {
|
|
7583
|
+
if (!entry.chain) continue;
|
|
7584
|
+
const chain = getChainFromWalletBookIdentifier({ identifier: entry.chain });
|
|
7585
|
+
if (chain) chains.add(chain);
|
|
7586
|
+
}
|
|
7587
|
+
for (const identifier of wallet.chains ?? []) {
|
|
7588
|
+
const prefix = extractChainPrefix({ chainIdentifier: identifier });
|
|
7589
|
+
try {
|
|
7590
|
+
const chain = getChainFromVerifiedCredentialChain(prefix);
|
|
7591
|
+
chains.add(chain);
|
|
7592
|
+
} catch {}
|
|
7593
|
+
}
|
|
7594
|
+
if (chains.size === 0) {
|
|
7595
|
+
const chain = getChainFromWalletSchema({
|
|
7596
|
+
wallet,
|
|
7597
|
+
walletKey
|
|
7598
|
+
});
|
|
7599
|
+
chains.add(chain);
|
|
7600
|
+
}
|
|
7601
|
+
return Array.from(chains);
|
|
7602
|
+
};
|
|
7603
|
+
|
|
7370
7604
|
//#endregion
|
|
7371
7605
|
//#region src/modules/walletOptionsCatalogue/resolveWalletBookWalletOptionKey/resolveWalletBookWalletOptionKey.ts
|
|
7372
7606
|
/**
|
|
@@ -7412,11 +7646,17 @@ const getInAppBrowserUrl = ({ wallet }) => wallet.mobile?.inAppBrowserV2 ?? wall
|
|
|
7412
7646
|
* and injected-only wallets are dropped — so the catalogue's notion of
|
|
7413
7647
|
* "external wallet" stays consistent across option types.
|
|
7414
7648
|
*
|
|
7649
|
+
* A wallet's in-app browser opens a single session, so it emits one option
|
|
7650
|
+
* tagged with the first chain it advertises that the client has an
|
|
7651
|
+
* extension for — a multi-chain wallet is still reachable when only one of
|
|
7652
|
+
* its chains is enabled.
|
|
7653
|
+
*
|
|
7654
|
+
* @param params.enabledChains - Chains the client has an extension for.
|
|
7415
7655
|
* @param params.walletBook - The fetched wallet book.
|
|
7416
7656
|
* @returns Tagged `inAppBrowser` options paired with their wallet option keys.
|
|
7417
7657
|
* @notInstrumented
|
|
7418
7658
|
*/
|
|
7419
|
-
const buildInAppBrowserOptions = ({ walletBook }) => {
|
|
7659
|
+
const buildInAppBrowserOptions = ({ enabledChains, walletBook }) => {
|
|
7420
7660
|
const result = [];
|
|
7421
7661
|
for (const [walletKey, wallet] of Object.entries(walletBook.wallets)) {
|
|
7422
7662
|
if (shouldFilterWallet({
|
|
@@ -7425,12 +7665,14 @@ const buildInAppBrowserOptions = ({ walletBook }) => {
|
|
|
7425
7665
|
})) continue;
|
|
7426
7666
|
const url = getInAppBrowserUrl({ wallet });
|
|
7427
7667
|
if (!url) continue;
|
|
7668
|
+
const chain = getChainsFromWalletSchema({
|
|
7669
|
+
wallet,
|
|
7670
|
+
walletKey
|
|
7671
|
+
}).find((advertisedChain) => enabledChains.has(advertisedChain));
|
|
7672
|
+
if (!chain) continue;
|
|
7428
7673
|
result.push({
|
|
7429
7674
|
option: {
|
|
7430
|
-
chain
|
|
7431
|
-
wallet,
|
|
7432
|
-
walletKey
|
|
7433
|
-
}),
|
|
7675
|
+
chain,
|
|
7434
7676
|
type: "inAppBrowser",
|
|
7435
7677
|
url
|
|
7436
7678
|
},
|
|
@@ -7503,17 +7745,25 @@ const hasAnyInstallationUrl = ({ urls }) => Object.values(urls).some(Boolean);
|
|
|
7503
7745
|
* Reuses the generic `shouldFilterWallet` rules so embedded wallets do
|
|
7504
7746
|
* not appear here either — they're not user-installable products.
|
|
7505
7747
|
*
|
|
7748
|
+
* Wallets that advertise no chain this client has an extension for are
|
|
7749
|
+
* skipped: installing them would not make them connectable.
|
|
7750
|
+
*
|
|
7751
|
+
* @param params.enabledChains - Chains the client has an extension for.
|
|
7506
7752
|
* @param params.walletBook - The fetched wallet book.
|
|
7507
7753
|
* @returns A map from wallet option key to its install URL bag.
|
|
7508
7754
|
* @notInstrumented
|
|
7509
7755
|
*/
|
|
7510
|
-
const buildInstallationUrlsByWalletOptionKey = ({ walletBook }) => {
|
|
7756
|
+
const buildInstallationUrlsByWalletOptionKey = ({ enabledChains, walletBook }) => {
|
|
7511
7757
|
const map = /* @__PURE__ */ new Map();
|
|
7512
7758
|
for (const [walletKey, wallet] of Object.entries(walletBook.wallets)) {
|
|
7513
7759
|
if (shouldFilterWallet({
|
|
7514
7760
|
wallet,
|
|
7515
7761
|
walletKey
|
|
7516
7762
|
})) continue;
|
|
7763
|
+
if (!getChainsFromWalletSchema({
|
|
7764
|
+
wallet,
|
|
7765
|
+
walletKey
|
|
7766
|
+
}).some((chain) => enabledChains.has(chain))) continue;
|
|
7517
7767
|
const urls = buildInstallationUrls({ wallet });
|
|
7518
7768
|
if (!hasAnyInstallationUrl({ urls })) continue;
|
|
7519
7769
|
const walletOptionKey = resolveWalletBookWalletOptionKey({
|
|
@@ -7605,49 +7855,6 @@ const buildMetaMaskSdkUriOptions = ({ walletBook }) => {
|
|
|
7605
7855
|
return [];
|
|
7606
7856
|
};
|
|
7607
7857
|
|
|
7608
|
-
//#endregion
|
|
7609
|
-
//#region src/modules/legacyWalletBook/getWalletConnectCatalog/getChainsFromWalletSchema/getChainsFromWalletSchema.ts
|
|
7610
|
-
/**
|
|
7611
|
-
* Returns every chain a wallet book entry advertises support for —
|
|
7612
|
-
* deduped, in `injectedConfig` order, then `chains` order. Used by the
|
|
7613
|
-
* catalogue's WalletConnect builder so a multi-chain wallet (e.g. Trust
|
|
7614
|
-
* supports EVM + SOL) gets one option per chain rather than one option
|
|
7615
|
-
* for whichever chain `getChainFromWalletSchema` happened to pick first.
|
|
7616
|
-
*
|
|
7617
|
-
* Falls back to {@link getChainFromWalletSchema}'s single-result behavior
|
|
7618
|
-
* (`['EVM']` default) when neither field is populated, so the helper
|
|
7619
|
-
* never returns an empty array — every eligible wallet emits at least
|
|
7620
|
-
* one option.
|
|
7621
|
-
*
|
|
7622
|
-
* @param params.wallet - The wallet schema from the wallet book.
|
|
7623
|
-
* @param [params.walletKey] - The wallet key identifier (used as last-resort fallback).
|
|
7624
|
-
* @returns Ordered, deduped array of Chains.
|
|
7625
|
-
* @notInstrumented
|
|
7626
|
-
*/
|
|
7627
|
-
const getChainsFromWalletSchema = ({ wallet, walletKey }) => {
|
|
7628
|
-
const chains = /* @__PURE__ */ new Set();
|
|
7629
|
-
for (const entry of wallet.injectedConfig ?? []) {
|
|
7630
|
-
if (!entry.chain) continue;
|
|
7631
|
-
const chain = getChainFromWalletBookIdentifier({ identifier: entry.chain });
|
|
7632
|
-
if (chain) chains.add(chain);
|
|
7633
|
-
}
|
|
7634
|
-
for (const identifier of wallet.chains ?? []) {
|
|
7635
|
-
const prefix = extractChainPrefix({ chainIdentifier: identifier });
|
|
7636
|
-
try {
|
|
7637
|
-
const chain = getChainFromVerifiedCredentialChain(prefix);
|
|
7638
|
-
chains.add(chain);
|
|
7639
|
-
} catch {}
|
|
7640
|
-
}
|
|
7641
|
-
if (chains.size === 0) {
|
|
7642
|
-
const chain = getChainFromWalletSchema({
|
|
7643
|
-
wallet,
|
|
7644
|
-
walletKey
|
|
7645
|
-
});
|
|
7646
|
-
chains.add(chain);
|
|
7647
|
-
}
|
|
7648
|
-
return Array.from(chains);
|
|
7649
|
-
};
|
|
7650
|
-
|
|
7651
7858
|
//#endregion
|
|
7652
7859
|
//#region src/modules/walletOptionsCatalogue/buildWalletConnectOptions/buildWalletConnectOptions.ts
|
|
7653
7860
|
/**
|
|
@@ -8032,6 +8239,31 @@ const buildWithWalletProviderOptions = ({ entries, walletBook }, client) => {
|
|
|
8032
8239
|
*/
|
|
8033
8240
|
const EXCLUDED_WALLET_OPTION_KEYS = new Set(["coinbase", "coinbasewallet"]);
|
|
8034
8241
|
|
|
8242
|
+
//#endregion
|
|
8243
|
+
//#region src/modules/walletOptionsCatalogue/filterConnectionOptionsByEnabledChains/filterConnectionOptionsByEnabledChains.ts
|
|
8244
|
+
/**
|
|
8245
|
+
* Drops options whose chain has no extension on this client. The wallet
|
|
8246
|
+
* book advertises every chain a wallet supports, so options derived from
|
|
8247
|
+
* it have to be narrowed to the chains the client can actually connect
|
|
8248
|
+
* on — otherwise the catalogue surfaces a connection the customer has no
|
|
8249
|
+
* primitive to drive.
|
|
8250
|
+
*
|
|
8251
|
+
* @param params.enabledChains - Chains the client has an extension for.
|
|
8252
|
+
* @param params.options - The tagged options to narrow.
|
|
8253
|
+
* @returns The options on enabled chains, in input order.
|
|
8254
|
+
* @example
|
|
8255
|
+
* ```typescript
|
|
8256
|
+
* filterConnectionOptionsByEnabledChains({
|
|
8257
|
+
* enabledChains: new Set(['EVM']),
|
|
8258
|
+
* options: [evmOption, solOption],
|
|
8259
|
+
* }); // [evmOption]
|
|
8260
|
+
* ```
|
|
8261
|
+
* @see {@link getEnabledChains} for how the enabled chains are derived.
|
|
8262
|
+
* @see {@link getWalletOptionsCatalogue} for the catalogue that applies this filter.
|
|
8263
|
+
* @notInstrumented
|
|
8264
|
+
*/
|
|
8265
|
+
const filterConnectionOptionsByEnabledChains = ({ enabledChains, options }) => options.filter(({ option }) => enabledChains.has(option.chain));
|
|
8266
|
+
|
|
8035
8267
|
//#endregion
|
|
8036
8268
|
//#region src/modules/walletOptionsCatalogue/groupOptionsByWalletOption/groupOptionsByWalletOption.ts
|
|
8037
8269
|
/**
|
|
@@ -8276,6 +8508,10 @@ const EMPTY_WALLET_BOOK = {
|
|
|
8276
8508
|
* pass `includeMobileOptions: true` to additionally surface
|
|
8277
8509
|
* WalletConnect, in-app-browser, and install links.
|
|
8278
8510
|
*
|
|
8511
|
+
* Options sourced from the wallet book are scoped to the chains this
|
|
8512
|
+
* client has an extension for — a wallet is only surfaced on chains the
|
|
8513
|
+
* customer can actually connect on.
|
|
8514
|
+
*
|
|
8279
8515
|
* Pass `excludedConnectionOptionTypes` to drop specific connection types
|
|
8280
8516
|
* from the catalogue (e.g. `['inAppBrowser']` on desktop). Wallets whose
|
|
8281
8517
|
* only connection was an excluded type fall through to the install-only
|
|
@@ -8291,6 +8527,7 @@ const getWalletOptionsCatalogue = async (params = {}, client = getDefaultClient(
|
|
|
8291
8527
|
const walletOptionOrdering = params.walletOptionOrdering ?? "relevance";
|
|
8292
8528
|
const excludedConnectionOptionTypes = new Set(params.excludedConnectionOptionTypes ?? []);
|
|
8293
8529
|
const walletBook = includeMobileOptions ? await fetchLegacyWalletBook(client) : EMPTY_WALLET_BOOK;
|
|
8530
|
+
const enabledChains = getEnabledChains(client);
|
|
8294
8531
|
const allConnectionOptions = [];
|
|
8295
8532
|
if (!excludedConnectionOptionTypes.has("withWalletProvider")) {
|
|
8296
8533
|
const entries = getWalletProviderRegistry(client).listProviderEntries();
|
|
@@ -8300,11 +8537,22 @@ const getWalletOptionsCatalogue = async (params = {}, client = getDefaultClient(
|
|
|
8300
8537
|
}, client));
|
|
8301
8538
|
}
|
|
8302
8539
|
if (includeMobileOptions) {
|
|
8303
|
-
|
|
8304
|
-
if (!excludedConnectionOptionTypes.has("
|
|
8305
|
-
if (!excludedConnectionOptionTypes.has("
|
|
8540
|
+
const walletBookOptions = [];
|
|
8541
|
+
if (!excludedConnectionOptionTypes.has("walletConnect")) walletBookOptions.push(...buildWalletConnectOptions({ walletBook }));
|
|
8542
|
+
if (!excludedConnectionOptionTypes.has("metamaskSdkUri")) walletBookOptions.push(...buildMetaMaskSdkUriOptions({ walletBook }));
|
|
8543
|
+
if (!excludedConnectionOptionTypes.has("inAppBrowser")) walletBookOptions.push(...buildInAppBrowserOptions({
|
|
8544
|
+
enabledChains,
|
|
8545
|
+
walletBook
|
|
8546
|
+
}));
|
|
8547
|
+
allConnectionOptions.push(...filterConnectionOptionsByEnabledChains({
|
|
8548
|
+
enabledChains,
|
|
8549
|
+
options: walletBookOptions
|
|
8550
|
+
}));
|
|
8306
8551
|
}
|
|
8307
|
-
const installationUrlsByKey = includeMobileOptions ? buildInstallationUrlsByWalletOptionKey({
|
|
8552
|
+
const installationUrlsByKey = includeMobileOptions ? buildInstallationUrlsByWalletOptionKey({
|
|
8553
|
+
enabledChains,
|
|
8554
|
+
walletBook
|
|
8555
|
+
}) : /* @__PURE__ */ new Map();
|
|
8308
8556
|
const grouped = groupOptionsByWalletOption({ options: allConnectionOptions });
|
|
8309
8557
|
const allWalletOptionKeys = new Set([...grouped.keys(), ...installationUrlsByKey.keys()]);
|
|
8310
8558
|
const walletOptions = [];
|
|
@@ -8388,6 +8636,30 @@ const __confirmTransaction_wrapped = instrumentFunction({
|
|
|
8388
8636
|
}
|
|
8389
8637
|
});
|
|
8390
8638
|
|
|
8639
|
+
//#endregion
|
|
8640
|
+
//#region src/utils/isMobile/isMobile.native.ts
|
|
8641
|
+
/**
|
|
8642
|
+
* React Native variant — always returns `true`.
|
|
8643
|
+
*
|
|
8644
|
+
* Metro resolves `.native.ts` over the plain `.ts` counterpart, so this file
|
|
8645
|
+
* is used exclusively in RN builds. The web implementation sniffs
|
|
8646
|
+
* `navigator.userAgent`, which React Native does not have, so it would report
|
|
8647
|
+
* every phone as a desktop.
|
|
8648
|
+
*
|
|
8649
|
+
* @example
|
|
8650
|
+
* ```ts
|
|
8651
|
+
* if (isMobile()) {
|
|
8652
|
+
* // hand the pairing to the wallet app instead of rendering a QR code
|
|
8653
|
+
* }
|
|
8654
|
+
* ```
|
|
8655
|
+
*
|
|
8656
|
+
* @returns Always `true`.
|
|
8657
|
+
* @see getPlatform
|
|
8658
|
+
* @see getOperatingSystem
|
|
8659
|
+
* @notInstrumented
|
|
8660
|
+
*/
|
|
8661
|
+
const isMobile = () => true;
|
|
8662
|
+
|
|
8391
8663
|
//#endregion
|
|
8392
8664
|
//#region src/modules/wallets/utils/getAddressesWithTypesFromConnectionResult/getAddressesWithTypesFromConnectionResult.ts
|
|
8393
8665
|
/** @notInstrumented */
|
|
@@ -9384,6 +9656,109 @@ const __selectPrimaryWalletAccount_wrapped = instrumentFunction({
|
|
|
9384
9656
|
}
|
|
9385
9657
|
});
|
|
9386
9658
|
|
|
9659
|
+
//#endregion
|
|
9660
|
+
//#region src/utils/buildInAppBrowserUrl/buildInAppBrowserUrl.ts
|
|
9661
|
+
/**
|
|
9662
|
+
* Placeholder the wallet book leaves in in-app-browser URLs for the app URL
|
|
9663
|
+
* the wallet should open.
|
|
9664
|
+
*/
|
|
9665
|
+
const DAPP_URL_PLACEHOLDER = "{{encodedDappURI}}";
|
|
9666
|
+
/**
|
|
9667
|
+
* Fills a wallet's in-app-browser URL template with the app URL to open.
|
|
9668
|
+
*
|
|
9669
|
+
* Wallet book entries carry the entry point as a template (e.g.
|
|
9670
|
+
* `https://go.base.app/dapp?cb_url={{encodedDappURI}}`), so the URL is only
|
|
9671
|
+
* usable once every occurrence of the placeholder is substituted in,
|
|
9672
|
+
* percent-encoded. Templates without the placeholder are returned untouched —
|
|
9673
|
+
* some wallets open a fixed landing page.
|
|
9674
|
+
*
|
|
9675
|
+
* @example
|
|
9676
|
+
* ```ts
|
|
9677
|
+
* buildInAppBrowserUrl({
|
|
9678
|
+
* appUrl: 'https://myapp.xyz/login',
|
|
9679
|
+
* inAppBrowserUrl: 'https://go.base.app/dapp?cb_url={{encodedDappURI}}',
|
|
9680
|
+
* });
|
|
9681
|
+
* // Returns: 'https://go.base.app/dapp?cb_url=https%3A%2F%2Fmyapp.xyz%2Flogin'
|
|
9682
|
+
* ```
|
|
9683
|
+
*
|
|
9684
|
+
* @param params.appUrl - The URL of your app for the wallet's browser to open.
|
|
9685
|
+
* @param params.inAppBrowserUrl - The wallet's in-app-browser URL template.
|
|
9686
|
+
* @returns The in-app-browser URL to open.
|
|
9687
|
+
* @see redirectToInAppBrowser
|
|
9688
|
+
* @see getWalletOptionsCatalogue
|
|
9689
|
+
* @notInstrumented
|
|
9690
|
+
*/
|
|
9691
|
+
const buildInAppBrowserUrl = ({ appUrl, inAppBrowserUrl }) => inAppBrowserUrl.replaceAll(DAPP_URL_PLACEHOLDER, encodeURIComponent(appUrl));
|
|
9692
|
+
|
|
9693
|
+
//#endregion
|
|
9694
|
+
//#region src/modules/wallets/redirectToInAppBrowser/redirectToInAppBrowser.ts
|
|
9695
|
+
/**
|
|
9696
|
+
* Leaves your app for a wallet's in-app browser, which reloads `appUrl`
|
|
9697
|
+
* inside it.
|
|
9698
|
+
*
|
|
9699
|
+
* Call this from `handleWalletBrowserRedirect` with the URL of the page the
|
|
9700
|
+
* wallet should reload. The wallet's in-app-browser entry point is read from
|
|
9701
|
+
* the wallet options catalogue, so you only need the wallet's key. The wallet
|
|
9702
|
+
* is only injected on that reload, so the connection is made on the next page
|
|
9703
|
+
* load rather than in the current one.
|
|
9704
|
+
*
|
|
9705
|
+
* @example
|
|
9706
|
+
* ```ts
|
|
9707
|
+
* await connectWallet({
|
|
9708
|
+
* handleWalletBrowserRedirect: ({ chain, walletKey }) =>
|
|
9709
|
+
* redirectToInAppBrowser({ appUrl: window.location.href, chain, walletKey }),
|
|
9710
|
+
* walletKey: 'coinbase',
|
|
9711
|
+
* });
|
|
9712
|
+
* ```
|
|
9713
|
+
*
|
|
9714
|
+
* @param params.appUrl - The URL of your app for the wallet's browser to open.
|
|
9715
|
+
* @param params.walletKey - The wallet to open, keyed as in the wallet options catalogue.
|
|
9716
|
+
* @param [params.chain] - The chain to open the wallet's browser for. Required only when the wallet exposes an in-app browser on more than one enabled chain.
|
|
9717
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
9718
|
+
* @returns A promise that resolves once the redirect is triggered.
|
|
9719
|
+
* @throws WalletOptionNotFoundError If no wallet option matches the key.
|
|
9720
|
+
* @throws NoConnectionOptionAvailableError If the wallet exposes no in-app browser on the requested chain.
|
|
9721
|
+
* @throws AmbiguousWalletChainError If the wallet exposes an in-app browser on more than one chain and no chain was passed.
|
|
9722
|
+
* @throws UnsafeDeeplinkUrlError If the wallet's in-app-browser URL has a scheme that can execute script.
|
|
9723
|
+
* @see connectWallet
|
|
9724
|
+
* @see WalletBrowserRedirectHandlerParams
|
|
9725
|
+
* @instrumented
|
|
9726
|
+
*/
|
|
9727
|
+
const redirectToInAppBrowser = async ({ appUrl, chain, walletKey }, client = getDefaultClient()) => {
|
|
9728
|
+
const walletOption = (await getWalletOptionsCatalogue({ includeMobileOptions: true }, client)).find(({ key }) => key === walletKey);
|
|
9729
|
+
if (!walletOption) throw new WalletOptionNotFoundError({ walletKey });
|
|
9730
|
+
const inAppBrowserOptions = walletOption.connectionOptions.filter((option) => option.type === "inAppBrowser" && (!chain || option.chain === chain));
|
|
9731
|
+
if (inAppBrowserOptions.length === 0) throw new NoConnectionOptionAvailableError({
|
|
9732
|
+
chain,
|
|
9733
|
+
installationUrls: walletOption.installationUrls,
|
|
9734
|
+
walletKey
|
|
9735
|
+
});
|
|
9736
|
+
const availableChains = [...new Set(inAppBrowserOptions.map((option) => option.chain))];
|
|
9737
|
+
if (!chain && availableChains.length > 1) throw new AmbiguousWalletChainError({
|
|
9738
|
+
chains: availableChains,
|
|
9739
|
+
walletKey
|
|
9740
|
+
});
|
|
9741
|
+
const [inAppBrowserOption] = inAppBrowserOptions;
|
|
9742
|
+
const urlToOpen = buildInAppBrowserUrl({
|
|
9743
|
+
appUrl,
|
|
9744
|
+
inAppBrowserUrl: inAppBrowserOption.url
|
|
9745
|
+
});
|
|
9746
|
+
assertSafeDeeplinkUrl(urlToOpen);
|
|
9747
|
+
await getCore(client).openDeeplink(urlToOpen);
|
|
9748
|
+
};
|
|
9749
|
+
const __redirectToInAppBrowser_impl = redirectToInAppBrowser;
|
|
9750
|
+
const __redirectToInAppBrowser_wrapped = instrumentFunction({
|
|
9751
|
+
fn: __redirectToInAppBrowser_impl,
|
|
9752
|
+
functionName: "redirectToInAppBrowser",
|
|
9753
|
+
getCore: () => {
|
|
9754
|
+
try {
|
|
9755
|
+
return getCore(getDefaultClient());
|
|
9756
|
+
} catch {
|
|
9757
|
+
return;
|
|
9758
|
+
}
|
|
9759
|
+
}
|
|
9760
|
+
});
|
|
9761
|
+
|
|
9387
9762
|
//#endregion
|
|
9388
9763
|
//#region src/modules/wallets/disconnectWalletAccount/disconnectWalletAccount.ts
|
|
9389
9764
|
/**
|
|
@@ -10015,6 +10390,40 @@ const appendConnectionUriToDeeplink = ({ connectionUri, deeplinkUrl }) => {
|
|
|
10015
10390
|
return url.href;
|
|
10016
10391
|
};
|
|
10017
10392
|
|
|
10393
|
+
//#endregion
|
|
10394
|
+
//#region src/utils/getPreferredWalletDeepLink/getPreferredWalletDeepLink.ts
|
|
10395
|
+
/**
|
|
10396
|
+
* Picks the most appropriate deep link variant for the current platform.
|
|
10397
|
+
*
|
|
10398
|
+
* Mobile (Android, iOS, tablets) prefers `native` because the OS treats
|
|
10399
|
+
* custom URL schemes as first-class app links and gives the wallet a faster
|
|
10400
|
+
* round-trip back to the dApp. Desktop prefers `universal` because browsers
|
|
10401
|
+
* cannot resolve mobile-only custom schemes and need an `https://` link
|
|
10402
|
+
* that opens the wallet's web flow.
|
|
10403
|
+
*
|
|
10404
|
+
* In either case, the alternative is used as a fallback when the preferred
|
|
10405
|
+
* variant is missing. Returns `undefined` only when both variants are
|
|
10406
|
+
* absent.
|
|
10407
|
+
*
|
|
10408
|
+
* @example
|
|
10409
|
+
* ```ts
|
|
10410
|
+
* const deepLink = getPreferredWalletDeepLink({
|
|
10411
|
+
* deeplinks: wallet.deeplinks,
|
|
10412
|
+
* });
|
|
10413
|
+
* ```
|
|
10414
|
+
*
|
|
10415
|
+
* @param params.deeplinks - The deep link variants for a wallet (typically `WalletConnectCatalogWallet.deeplinks`).
|
|
10416
|
+
* @returns The preferred deep link URL, or `undefined` if neither variant is available.
|
|
10417
|
+
* @see appendConnectionUriToDeeplink
|
|
10418
|
+
* @see getConnectionUriDeeplink
|
|
10419
|
+
* @notInstrumented
|
|
10420
|
+
*/
|
|
10421
|
+
const getPreferredWalletDeepLink = ({ deeplinks }) => {
|
|
10422
|
+
const { native, universal } = deeplinks;
|
|
10423
|
+
if (isMobile()) return native ?? universal;
|
|
10424
|
+
return universal ?? native;
|
|
10425
|
+
};
|
|
10426
|
+
|
|
10018
10427
|
//#endregion
|
|
10019
10428
|
//#region src/utils/parseUserAgent/parseUserAgent.ts
|
|
10020
10429
|
const browserMatchers = [
|
|
@@ -10096,5 +10505,5 @@ const parseUserAgent = ({ userAgent }) => {
|
|
|
10096
10505
|
assertPackageVersion(name, version);
|
|
10097
10506
|
|
|
10098
10507
|
//#endregion
|
|
10099
|
-
export { BaseError, COINBASE_TRAVEL_RULE_FIELD_DESCRIPTIONS, CaptchaProviderEnum, CheckoutSessionTokenMissingError, ClientAlreadyInitializedError, CoinbaseBeneficiaryWalletType, CoinbaseIsSelfTransfer, CoinbaseTransferMfaFailedError, CoinbaseTransferMfaRequiredError, CoinbaseTravelRuleFieldName, CoinbaseTravelRuleRequiredError, DeeplinkConnectAndVerifyUnsupportedError, DeviceRegistrationIdentityMismatchError, FeeEstimationFailedError, FlowSessionTokenMissingError, GOOGLE_DRIVE_BACKUP_REQUIRED_SCOPES, InvalidDeviceRegistrationRedirectError, InvalidExternalAuthError, InvalidParamError, InvalidRedirectStorageStateError, InvalidSocialCallbackOriginError, JwtVerifiedCredentialFormatEnum, LinkCredentialError, MFAAction, MergeAccountsConfirmationError, MfaInvalidOtpError, MfaRateLimitedError, MissingRedirectStorageStateError, MissingSocialUrlParamError, MissingUserVerificationError, NetworkAddingUnavailableError, NetworkNotAddedError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoNetworkProvidersError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, NotWaasWalletAccountError, ProviderEnum, SandboxMaximumThresholdReachedError, ScreeningNotRequiredError, SimulationFailedError, TokenScope, TokenSwapError, TransactionBroadcastError, UnauthorizedError, UnavailableInServerSideError, UnrecognizedNetworkError, UserCancelledSocialPopUpError, UserNotAuthenticatedError, UserRejectedError, WaasChainEnum, WaasLoadFailedError, WaasOnboardingIncompleteError, WaasRbacStaleRetryUnsafeError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletAlreadyLinkedToAnotherUserError, WalletProviderMethodUnavailableError, WalletScreeningBlockedError, __acknowledgeRecoveryCodes_wrapped as acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, __addNetwork_wrapped as addNetwork, appendConnectionUriToDeeplink, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, __attachCheckoutTransactionSource_wrapped as attachCheckoutTransactionSource, __attachFlowSource_wrapped as attachFlowSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, __authenticateWithSocial_wrapped as authenticateWithSocial, __broadcastCheckoutTransaction_wrapped as broadcastCheckoutTransaction, __broadcastFlow_wrapped as broadcastFlow, canConnectWithHardwareWallet, __cancelCheckoutTransaction_wrapped as cancelCheckoutTransaction, __cancelFlow_wrapped as cancelFlow, __checkStepUpAuth_wrapped as checkStepUpAuth, checkUserScopes, __claimYieldRewards_wrapped as claimYieldRewards, clearDeviceRegistrationRedirectParams, clearSocialRedirectParams, __completeDeviceRegistration_wrapped as completeDeviceRegistration, __completeSocialAuthentication_wrapped as completeSocialAuthentication, __completeSocialRedirect_wrapped as completeSocialRedirect, __confirmTransaction_wrapped as confirmTransaction, __connectAndVerifyWithWalletProvider_wrapped as connectAndVerifyWithWalletProvider, __connectWithWalletProvider_wrapped as connectWithWalletProvider, __consumeMfaToken_wrapped as consumeMfaToken, __createCheckoutTransaction_wrapped as createCheckoutTransaction, createCoinbaseExchangeTransfer, __createCoinbaseOnrampOrder_wrapped as createCoinbaseOnrampOrder, __createCryptoDotComPayment_wrapped as createCryptoDotComPayment, __createDynamicClient_wrapped as createDynamicClient, createKrakenExchangeTransfer, __createNewMfaRecoveryCodes_wrapped as createNewMfaRecoveryCodes, __deleteMfaDevice_wrapped as deleteMfaDevice, __deletePasskey_wrapped as deletePasskey, __deleteUser_wrapped as deleteUser, __depositToYieldVault_wrapped as depositToYieldVault, detectDeviceRegistrationRedirect, detectOAuthRedirect, detectSocialRedirectUrl, excludeInstalledFromCatalog, __executeSwapTransaction_wrapped as executeSwapTransaction, fetchProjectSettings, findMissingGoogleDriveBackupScopes, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getBalances, getCaptchaSettings, getCheckoutTransaction, getCheckoutTransactionQuote, getCoinbaseAccounts, getCoinbaseBuyUrl, getConnectedAddresses, getDefaultClient, getDeviceRegistrationTokenFromUrl, getElevatedAccessToken, getFlow, getFlowQuote, __getGoogleDriveBackupReadiness_wrapped as getGoogleDriveBackupReadiness, getInstallationLinkForCurrentPlatform, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMissingVerificationForCoinbaseOnrampOrder, __getMoonPayCurrencies_wrapped as getMoonPayCurrencies, __getMoonPayUrl_wrapped as getMoonPayUrl, getMultichainBalances, getMultichainTokenBalances, getNativeBalance, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPrimaryWalletAccount, getRegisteredDevices, getSelectedWalletAccount, getSwapQuote, getSwapStatus, getTokenBalances, getTransactionHistory, getUserSocialAccounts, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletOptionsCatalogue, getWalletProviderDataByKey, getYieldDetails, getYieldPosition, getYieldRewards, hasAllGoogleDriveBackupScopes, hasExtension, __initializeClient_wrapped as initializeClient, isAnyWalletAccountConnected, isCaptchaRequired, isDeeplinkWalletProvider, isDeviceRegistrationRequired, isExternalWalletScreeningEnabled, isHardwareWalletAccount, isInsufficientGoogleDriveScopesError, isMfaRequiredForAction, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, isUserOnboardingComplete, isWalletAccountVerified, listYieldVaults, logout, matchWalletProvidersToCatalogGroup, mergeUserAccounts, offEvent, offWalletProviderEvent, onEvent, onWalletProviderEvent, onceEvent, parseUserAgent, __prepareCheckoutTransaction_wrapped as prepareCheckoutTransaction, __prepareFlowSigning_wrapped as prepareFlowSigning, __proveWalletAccountOwnership_wrapped as proveWalletAccountOwnership, __refreshAuth_wrapped as refreshAuth, __refreshUser_wrapped as refreshUser, __registerPasskey_wrapped as registerPasskey, __registerTotpMfaDevice_wrapped as registerTotpMfaDevice, __removeWalletAccount_wrapped as removeWalletAccount, __requestExternalAuthElevatedToken_wrapped as requestExternalAuthElevatedToken, requiresConversion, __revokeAllRegisteredDevices_wrapped as revokeAllRegisteredDevices, __revokeRegisteredDevice_wrapped as revokeRegisteredDevice, screenTransaction, __selectPrimaryWalletAccount_wrapped as selectPrimaryWalletAccount, __sendEmailOTP_wrapped as sendEmailOTP, __sendSmsOTP_wrapped as sendSmsOTP, __setCaptchaToken_wrapped as setCaptchaToken, __setDefaultMfaDevice_wrapped as setDefaultMfaDevice, __setInstrumentationEnabled_wrapped as setInstrumentationEnabled, __setSelectedWalletAccount_wrapped as setSelectedWalletAccount, __signInWithExternalJwt_wrapped as signInWithExternalJwt, __signInWithPasskey_wrapped as signInWithPasskey, __signInWithSocialPopUp_wrapped as signInWithSocialPopUp, __signInWithSocialRedirect_wrapped as signInWithSocialRedirect, __signMessage_wrapped as signMessage, __submitCheckoutTransaction_wrapped as submitCheckoutTransaction, __submitFlowTransaction_wrapped as submitFlowTransaction, supportedCountries, __switchActiveNetwork_wrapped as switchActiveNetwork, trackCheckoutTransaction, __transferAmount_wrapped as transferAmount, __transferWalletAccount_wrapped as transferWalletAccount, __unlinkSocialAccount_wrapped as unlinkSocialAccount, __updateUser_wrapped as updateUser, __verifyOTP_wrapped as verifyOTP, __verifyWalletAccount_wrapped as verifyWalletAccount, waitForClientInitialized, __withdrawFromYieldVault_wrapped as withdrawFromYieldVault };
|
|
10508
|
+
export { AmbiguousWalletChainError, BaseError, COINBASE_TRAVEL_RULE_FIELD_DESCRIPTIONS, CaptchaProviderEnum, CheckoutSessionTokenMissingError, ClientAlreadyInitializedError, CoinbaseBeneficiaryWalletType, CoinbaseIsSelfTransfer, CoinbaseTransferMfaFailedError, CoinbaseTransferMfaRequiredError, CoinbaseTravelRuleFieldName, CoinbaseTravelRuleRequiredError, DeeplinkConnectAndVerifyUnsupportedError, DeviceRegistrationIdentityMismatchError, FeeEstimationFailedError, FlowSessionTokenMissingError, GOOGLE_DRIVE_BACKUP_REQUIRED_SCOPES, InvalidDeviceRegistrationRedirectError, InvalidExternalAuthError, InvalidParamError, InvalidRedirectStorageStateError, InvalidSocialCallbackOriginError, JwtVerifiedCredentialFormatEnum, LinkCredentialError, MFAAction, MergeAccountsConfirmationError, MfaInvalidOtpError, MfaRateLimitedError, MissingRedirectStorageStateError, MissingSocialUrlParamError, MissingUserVerificationError, NetworkAddingUnavailableError, NetworkNotAddedError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoConnectionOptionAvailableError, NoNetworkProvidersError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, NotWaasWalletAccountError, ProviderEnum, SandboxMaximumThresholdReachedError, ScreeningNotRequiredError, SimulationFailedError, TokenScope, TokenSwapError, TransactionBroadcastError, UnauthorizedError, UnavailableInServerSideError, UnrecognizedNetworkError, UserCancelledSocialPopUpError, UserNotAuthenticatedError, UserRejectedError, WaasChainEnum, WaasLoadFailedError, WaasOnboardingIncompleteError, WaasRbacStaleRetryUnsafeError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletAlreadyLinkedToAnotherUserError, WalletOptionNotFoundError, WalletProviderMethodUnavailableError, WalletScreeningBlockedError, __acknowledgeRecoveryCodes_wrapped as acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, __addNetwork_wrapped as addNetwork, appendConnectionUriToDeeplink, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, __attachCheckoutTransactionSource_wrapped as attachCheckoutTransactionSource, __attachFlowSource_wrapped as attachFlowSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, __authenticateWithSocial_wrapped as authenticateWithSocial, __broadcastCheckoutTransaction_wrapped as broadcastCheckoutTransaction, __broadcastFlow_wrapped as broadcastFlow, canConnectWithHardwareWallet, __cancelCheckoutTransaction_wrapped as cancelCheckoutTransaction, __cancelFlow_wrapped as cancelFlow, __checkStepUpAuth_wrapped as checkStepUpAuth, checkUserScopes, __claimYieldRewards_wrapped as claimYieldRewards, clearDeviceRegistrationRedirectParams, clearSocialRedirectParams, __completeDeviceRegistration_wrapped as completeDeviceRegistration, __completeSocialAuthentication_wrapped as completeSocialAuthentication, __completeSocialRedirect_wrapped as completeSocialRedirect, __confirmTransaction_wrapped as confirmTransaction, __connectAndVerifyWithWalletProvider_wrapped as connectAndVerifyWithWalletProvider, __connectWithWalletProvider_wrapped as connectWithWalletProvider, __consumeMfaToken_wrapped as consumeMfaToken, __createCheckoutTransaction_wrapped as createCheckoutTransaction, createCoinbaseExchangeTransfer, __createCoinbaseOnrampOrder_wrapped as createCoinbaseOnrampOrder, __createCryptoDotComPayment_wrapped as createCryptoDotComPayment, __createDynamicClient_wrapped as createDynamicClient, createKrakenExchangeTransfer, __createNewMfaRecoveryCodes_wrapped as createNewMfaRecoveryCodes, __deleteMfaDevice_wrapped as deleteMfaDevice, __deletePasskey_wrapped as deletePasskey, __deleteUser_wrapped as deleteUser, __depositToYieldVault_wrapped as depositToYieldVault, detectDeviceRegistrationRedirect, detectOAuthRedirect, detectSocialRedirectUrl, excludeInstalledFromCatalog, __executeSwapTransaction_wrapped as executeSwapTransaction, fetchProjectSettings, findMissingGoogleDriveBackupScopes, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getBalances, getCaptchaSettings, getCheckoutTransaction, getCheckoutTransactionQuote, getCoinbaseAccounts, getCoinbaseBuyUrl, getConnectedAddresses, getDefaultClient, getDeviceRegistrationTokenFromUrl, getElevatedAccessToken, getFlow, getFlowQuote, __getGoogleDriveBackupReadiness_wrapped as getGoogleDriveBackupReadiness, getInstallationLinkForCurrentPlatform, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMissingVerificationForCoinbaseOnrampOrder, __getMoonPayCurrencies_wrapped as getMoonPayCurrencies, __getMoonPayUrl_wrapped as getMoonPayUrl, getMultichainBalances, getMultichainTokenBalances, getNativeBalance, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPreferredWalletDeepLink, getPrimaryWalletAccount, getRegisteredDevices, getSelectedWalletAccount, getSwapQuote, getSwapStatus, getTokenBalances, getTransactionHistory, getUserSocialAccounts, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletOptionsCatalogue, getWalletProviderDataByKey, getYieldDetails, getYieldPosition, getYieldRewards, hasAllGoogleDriveBackupScopes, hasExtension, __initializeClient_wrapped as initializeClient, isAnyWalletAccountConnected, isCaptchaRequired, isDeeplinkWalletProvider, isDeviceRegistrationRequired, isExternalWalletScreeningEnabled, isHardwareWalletAccount, isInsufficientGoogleDriveScopesError, isMfaRequiredForAction, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, isUserOnboardingComplete, isWalletAccountVerified, listYieldVaults, logout, matchWalletProvidersToCatalogGroup, mergeUserAccounts, offEvent, offWalletProviderEvent, onEvent, onWalletProviderEvent, onceEvent, parseUserAgent, __prepareCheckoutTransaction_wrapped as prepareCheckoutTransaction, __prepareFlowSigning_wrapped as prepareFlowSigning, __proveWalletAccountOwnership_wrapped as proveWalletAccountOwnership, __redirectToInAppBrowser_wrapped as redirectToInAppBrowser, __refreshAuth_wrapped as refreshAuth, __refreshUser_wrapped as refreshUser, __registerPasskey_wrapped as registerPasskey, __registerTotpMfaDevice_wrapped as registerTotpMfaDevice, __removeWalletAccount_wrapped as removeWalletAccount, __requestExternalAuthElevatedToken_wrapped as requestExternalAuthElevatedToken, requiresConversion, __revokeAllRegisteredDevices_wrapped as revokeAllRegisteredDevices, __revokeRegisteredDevice_wrapped as revokeRegisteredDevice, screenTransaction, __selectPrimaryWalletAccount_wrapped as selectPrimaryWalletAccount, __sendEmailOTP_wrapped as sendEmailOTP, __sendSmsOTP_wrapped as sendSmsOTP, __setCaptchaToken_wrapped as setCaptchaToken, __setDefaultMfaDevice_wrapped as setDefaultMfaDevice, __setInstrumentationEnabled_wrapped as setInstrumentationEnabled, __setSelectedWalletAccount_wrapped as setSelectedWalletAccount, __signInWithExternalJwt_wrapped as signInWithExternalJwt, __signInWithPasskey_wrapped as signInWithPasskey, __signInWithSocialPopUp_wrapped as signInWithSocialPopUp, __signInWithSocialRedirect_wrapped as signInWithSocialRedirect, __signMessage_wrapped as signMessage, __submitCheckoutTransaction_wrapped as submitCheckoutTransaction, __submitFlowTransaction_wrapped as submitFlowTransaction, supportedCountries, __switchActiveNetwork_wrapped as switchActiveNetwork, trackCheckoutTransaction, __transferAmount_wrapped as transferAmount, __transferWalletAccount_wrapped as transferWalletAccount, __unlinkSocialAccount_wrapped as unlinkSocialAccount, __updateUser_wrapped as updateUser, __verifyOTP_wrapped as verifyOTP, __verifyWalletAccount_wrapped as verifyWalletAccount, waitForClientInitialized, __withdrawFromYieldVault_wrapped as withdrawFromYieldVault };
|
|
10100
10509
|
//# sourceMappingURL=index.native.esm.js.map
|