@dynamic-labs-sdk/client 1.20.0 → 1.21.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.
Files changed (165) hide show
  1. package/dist/{updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js → NativeModuleNotLinkedError-Ds_t3AZQ.native.esm.js} +33 -4
  2. package/dist/NativeModuleNotLinkedError-Ds_t3AZQ.native.esm.js.map +1 -0
  3. package/dist/client/createDynamicClient/assertClientProps/assertClientProps.d.ts +16 -0
  4. package/dist/client/createDynamicClient/assertClientProps/assertClientProps.d.ts.map +1 -0
  5. package/dist/client/createDynamicClient/assertClientProps/index.d.ts +2 -0
  6. package/dist/client/createDynamicClient/assertClientProps/index.d.ts.map +1 -0
  7. package/dist/client/createDynamicClient/createDynamicClient.d.ts.map +1 -1
  8. package/dist/client/types/DynamicClientConfig.d.ts +35 -0
  9. package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
  10. package/dist/consumeMfaTokenIfRequiredForAction-CWVbmQ2A.cjs +17 -0
  11. package/dist/consumeMfaTokenIfRequiredForAction-CWVbmQ2A.cjs.map +1 -0
  12. package/dist/consumeMfaTokenIfRequiredForAction-C_IvLTH6.esm.js +12 -0
  13. package/dist/consumeMfaTokenIfRequiredForAction-C_IvLTH6.esm.js.map +1 -0
  14. package/dist/core.cjs +9 -8
  15. package/dist/core.cjs.map +1 -1
  16. package/dist/core.esm.js +6 -5
  17. package/dist/core.esm.js.map +1 -1
  18. package/dist/core.native.esm.js +5 -5
  19. package/dist/errors/WaasLoadFailedError.d.ts +45 -0
  20. package/dist/errors/WaasLoadFailedError.d.ts.map +1 -0
  21. package/dist/exports/index.d.ts +1 -0
  22. package/dist/exports/index.d.ts.map +1 -1
  23. package/dist/exports/waas.d.ts +10 -0
  24. package/dist/exports/waas.d.ts.map +1 -1
  25. package/dist/{getNetworkProviderFromNetworkId-DaVOUpiF.cjs → getNetworkProviderFromNetworkId-5V4Cf8A_.cjs} +48 -13
  26. package/dist/getNetworkProviderFromNetworkId-5V4Cf8A_.cjs.map +1 -0
  27. package/dist/{getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js → getNetworkProviderFromNetworkId-DhS1snCk.esm.js} +48 -13
  28. package/dist/getNetworkProviderFromNetworkId-DhS1snCk.esm.js.map +1 -0
  29. package/dist/{getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js → getNetworkProviderFromNetworkId-DudGvTmd.native.esm.js} +2 -3
  30. package/dist/{getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js.map → getNetworkProviderFromNetworkId-DudGvTmd.native.esm.js.map} +1 -1
  31. package/dist/{getSignedSessionId-3L_aMxVD.cjs → getSignedSessionId-E6FIx5aj.cjs} +2 -17
  32. package/dist/getSignedSessionId-E6FIx5aj.cjs.map +1 -0
  33. package/dist/{getSignedSessionId-DlmNVy-g.native.esm.js → getSignedSessionId-ekp3lswQ.esm.js} +3 -12
  34. package/dist/getSignedSessionId-ekp3lswQ.esm.js.map +1 -0
  35. package/dist/{getSignedSessionId-BVc-sgeN.esm.js → getSignedSessionId-xZGFa4nS.native.esm.js} +3 -3
  36. package/dist/{getSignedSessionId-DlmNVy-g.native.esm.js.map → getSignedSessionId-xZGFa4nS.native.esm.js.map} +1 -1
  37. package/dist/{getWalletProviderByKey-BilyW5Jr.cjs → getWalletProviderByKey-BwivhTYu.cjs} +2 -2
  38. package/dist/{getWalletProviderByKey-BilyW5Jr.cjs.map → getWalletProviderByKey-BwivhTYu.cjs.map} +1 -1
  39. package/dist/{getWalletProviderByKey-PIO1ygzj.esm.js → getWalletProviderByKey-CS299i1V.esm.js} +2 -2
  40. package/dist/{getWalletProviderByKey-PIO1ygzj.esm.js.map → getWalletProviderByKey-CS299i1V.esm.js.map} +1 -1
  41. package/dist/{getWalletProviderByKey-Ccx26JsF.native.esm.js → getWalletProviderByKey-CYGDw6-5.native.esm.js} +2 -2
  42. package/dist/{getWalletProviderByKey-Ccx26JsF.native.esm.js.map → getWalletProviderByKey-CYGDw6-5.native.esm.js.map} +1 -1
  43. package/dist/index.cjs +48 -20
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.esm.js +34 -7
  46. package/dist/index.esm.js.map +1 -1
  47. package/dist/index.native.esm.js +34 -7
  48. package/dist/index.native.esm.js.map +1 -1
  49. package/dist/{isDynamicWaasEnabled-DXVcXa66.cjs → isDynamicWaasEnabled-BEVAshnS.cjs} +2 -2
  50. package/dist/{isDynamicWaasEnabled-DXVcXa66.cjs.map → isDynamicWaasEnabled-BEVAshnS.cjs.map} +1 -1
  51. package/dist/{isDynamicWaasEnabled-C4oPJ0fw.native.esm.js → isDynamicWaasEnabled-C8Fb1xHn.native.esm.js} +2 -2
  52. package/dist/{isDynamicWaasEnabled-C4oPJ0fw.native.esm.js.map → isDynamicWaasEnabled-C8Fb1xHn.native.esm.js.map} +1 -1
  53. package/dist/{isDynamicWaasEnabled-JpnXC0f7.esm.js → isDynamicWaasEnabled-D5e2K02u.esm.js} +2 -2
  54. package/dist/{isDynamicWaasEnabled-JpnXC0f7.esm.js.map → isDynamicWaasEnabled-D5e2K02u.esm.js.map} +1 -1
  55. package/dist/{isMfaRequiredForAction-D6rt_Tzn.native.esm.js → isMfaRequiredForAction-A02NFVt8.esm.js} +3 -32
  56. package/dist/isMfaRequiredForAction-A02NFVt8.esm.js.map +1 -0
  57. package/dist/isMfaRequiredForAction-D4TSMQ4m.native.esm.js +77 -0
  58. package/dist/isMfaRequiredForAction-D4TSMQ4m.native.esm.js.map +1 -0
  59. package/dist/isMfaRequiredForAction-odpvykkm.cjs +94 -0
  60. package/dist/isMfaRequiredForAction-odpvykkm.cjs.map +1 -0
  61. package/dist/{isUserOnboardingComplete-CsoV3ae7.cjs → isUserOnboardingComplete-CEVSIxJC.cjs} +49 -3
  62. package/dist/isUserOnboardingComplete-CEVSIxJC.cjs.map +1 -0
  63. package/dist/{isUserOnboardingComplete-diGA1wlX.esm.js → isUserOnboardingComplete-Cgkw21XZ.esm.js} +44 -4
  64. package/dist/isUserOnboardingComplete-Cgkw21XZ.esm.js.map +1 -0
  65. package/dist/{isUserOnboardingComplete-DnExOJu7.native.esm.js → isUserOnboardingComplete-CvQShE05.native.esm.js} +44 -4
  66. package/dist/{isUserOnboardingComplete-CsoV3ae7.cjs.map → isUserOnboardingComplete-CvQShE05.native.esm.js.map} +1 -1
  67. package/dist/migrateFromFireblocks-BMtelH1a.native.esm.js +321 -0
  68. package/dist/migrateFromFireblocks-BMtelH1a.native.esm.js.map +1 -0
  69. package/dist/{migrateFromFireblocks-BrWXstt8.cjs → migrateFromFireblocks-CLUkVcFT.cjs} +54 -3
  70. package/dist/migrateFromFireblocks-CLUkVcFT.cjs.map +1 -0
  71. package/dist/{migrateFromFireblocks-CqL5l58Q.native.esm.js → migrateFromFireblocks-DcKrquTE.esm.js} +43 -4
  72. package/dist/migrateFromFireblocks-DcKrquTE.esm.js.map +1 -0
  73. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/addBusinessAccountMember.d.ts +25 -0
  74. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/addBusinessAccountMember.d.ts.map +1 -0
  75. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/index.d.ts +2 -0
  76. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/index.d.ts.map +1 -0
  77. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/addBusinessAccountSigner.d.ts +35 -0
  78. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/addBusinessAccountSigner.d.ts.map +1 -0
  79. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/index.d.ts +2 -0
  80. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/index.d.ts.map +1 -0
  81. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/addWalletToBusinessAccount.d.ts +19 -0
  82. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/addWalletToBusinessAccount.d.ts.map +1 -0
  83. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/index.d.ts +2 -0
  84. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/index.d.ts.map +1 -0
  85. package/dist/modules/waas/businessAccounts/businessAccounts.types.d.ts +184 -0
  86. package/dist/modules/waas/businessAccounts/businessAccounts.types.d.ts.map +1 -0
  87. package/dist/modules/waas/businessAccounts/createBusinessAccount/createBusinessAccount.d.ts +16 -0
  88. package/dist/modules/waas/businessAccounts/createBusinessAccount/createBusinessAccount.d.ts.map +1 -0
  89. package/dist/modules/waas/businessAccounts/createBusinessAccount/index.d.ts +2 -0
  90. package/dist/modules/waas/businessAccounts/createBusinessAccount/index.d.ts.map +1 -0
  91. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/createWalletForBusinessAccount.d.ts +36 -0
  92. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/createWalletForBusinessAccount.d.ts.map +1 -0
  93. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/index.d.ts +2 -0
  94. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/index.d.ts.map +1 -0
  95. package/dist/modules/waas/businessAccounts/getBusinessAccount/getBusinessAccount.d.ts +15 -0
  96. package/dist/modules/waas/businessAccounts/getBusinessAccount/getBusinessAccount.d.ts.map +1 -0
  97. package/dist/modules/waas/businessAccounts/getBusinessAccount/index.d.ts +2 -0
  98. package/dist/modules/waas/businessAccounts/getBusinessAccount/index.d.ts.map +1 -0
  99. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/getBusinessAccountsClient.d.ts +12 -0
  100. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/getBusinessAccountsClient.d.ts.map +1 -0
  101. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/index.d.ts +2 -0
  102. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/index.d.ts.map +1 -0
  103. package/dist/modules/waas/businessAccounts/listBusinessAccounts/index.d.ts +2 -0
  104. package/dist/modules/waas/businessAccounts/listBusinessAccounts/index.d.ts.map +1 -0
  105. package/dist/modules/waas/businessAccounts/listBusinessAccounts/listBusinessAccounts.d.ts +10 -0
  106. package/dist/modules/waas/businessAccounts/listBusinessAccounts/listBusinessAccounts.d.ts.map +1 -0
  107. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/index.d.ts +2 -0
  108. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/index.d.ts.map +1 -0
  109. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/removeBusinessAccountMember.d.ts +33 -0
  110. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/removeBusinessAccountMember.d.ts.map +1 -0
  111. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/index.d.ts +2 -0
  112. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/index.d.ts.map +1 -0
  113. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/removeBusinessAccountSigner.d.ts +37 -0
  114. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/removeBusinessAccountSigner.d.ts.map +1 -0
  115. package/dist/modules/waas/createWaasClient/createWaasClient.d.ts.map +1 -1
  116. package/dist/modules/waas/createWaasProvider/createWaasProvider.d.ts.map +1 -1
  117. package/dist/modules/waas/createWaasProvider/isWaasLoadExhaustionError.d.ts +11 -0
  118. package/dist/modules/waas/createWaasProvider/isWaasLoadExhaustionError.d.ts.map +1 -0
  119. package/dist/modules/waas/waas.types.d.ts +11 -0
  120. package/dist/modules/waas/waas.types.d.ts.map +1 -1
  121. package/dist/services/keychain/createKeychainService/utils/openDatabase.d.ts +9 -1
  122. package/dist/services/keychain/createKeychainService/utils/openDatabase.d.ts.map +1 -1
  123. package/dist/services/keychain/createKeychainService/utils/withDatabase/withDatabase.d.ts +2 -1
  124. package/dist/services/keychain/createKeychainService/utils/withDatabase/withDatabase.d.ts.map +1 -1
  125. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  126. package/dist/{updateAuthFromVerifyResponse-B0K1VJ8b.cjs → updateAuthFromVerifyResponse-CSqnGlh3.cjs} +289 -19
  127. package/dist/updateAuthFromVerifyResponse-CSqnGlh3.cjs.map +1 -0
  128. package/dist/{updateAuthFromVerifyResponse-CVDQVEQM.esm.js → updateAuthFromVerifyResponse-C_YKKAIX.esm.js} +262 -4
  129. package/dist/updateAuthFromVerifyResponse-C_YKKAIX.esm.js.map +1 -0
  130. package/dist/utils/createTranslateRejection/createTranslateRejection.d.ts +29 -0
  131. package/dist/utils/createTranslateRejection/createTranslateRejection.d.ts.map +1 -0
  132. package/dist/utils/createTranslateRejection/index.d.ts +3 -0
  133. package/dist/utils/createTranslateRejection/index.d.ts.map +1 -0
  134. package/dist/waas.cjs +281 -17
  135. package/dist/waas.cjs.map +1 -1
  136. package/dist/waas.esm.js +273 -18
  137. package/dist/waas.esm.js.map +1 -1
  138. package/dist/waas.native.esm.js +272 -18
  139. package/dist/waas.native.esm.js.map +1 -1
  140. package/dist/waasCore.cjs +291 -170
  141. package/dist/waasCore.cjs.map +1 -1
  142. package/dist/waasCore.esm.js +285 -164
  143. package/dist/waasCore.esm.js.map +1 -1
  144. package/dist/waasCore.native.esm.js +273 -371
  145. package/dist/waasCore.native.esm.js.map +1 -1
  146. package/ios/DynamicClientScreenshotProtection.mm +70 -32
  147. package/package.json +4 -4
  148. package/dist/getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js.map +0 -1
  149. package/dist/getNetworkProviderFromNetworkId-DaVOUpiF.cjs.map +0 -1
  150. package/dist/getSignedSessionId-3L_aMxVD.cjs.map +0 -1
  151. package/dist/getSignedSessionId-BVc-sgeN.esm.js.map +0 -1
  152. package/dist/isMfaRequiredForAction-20E6GsSc.esm.js +0 -336
  153. package/dist/isMfaRequiredForAction-20E6GsSc.esm.js.map +0 -1
  154. package/dist/isMfaRequiredForAction-9bYtZcve.cjs +0 -384
  155. package/dist/isMfaRequiredForAction-9bYtZcve.cjs.map +0 -1
  156. package/dist/isMfaRequiredForAction-D6rt_Tzn.native.esm.js.map +0 -1
  157. package/dist/isUserOnboardingComplete-DnExOJu7.native.esm.js.map +0 -1
  158. package/dist/isUserOnboardingComplete-diGA1wlX.esm.js.map +0 -1
  159. package/dist/migrateFromFireblocks--G-432sl.esm.js +0 -65
  160. package/dist/migrateFromFireblocks--G-432sl.esm.js.map +0 -1
  161. package/dist/migrateFromFireblocks-BrWXstt8.cjs.map +0 -1
  162. package/dist/migrateFromFireblocks-CqL5l58Q.native.esm.js.map +0 -1
  163. package/dist/updateAuthFromVerifyResponse-B0K1VJ8b.cjs.map +0 -1
  164. package/dist/updateAuthFromVerifyResponse-CVDQVEQM.esm.js.map +0 -1
  165. package/dist/updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js.map +0 -1
@@ -1,46 +1,59 @@
1
- import { N as getChainFromVerifiedCredentialChain, P as CHAINS_INFO_MAP, St as version, bt as getCore, d as DYNAMIC_WAAS_METADATA, i as InvalidParamError, l as DEFAULT_WAAS_BASE_API_URL, pt as CLIENT_SDK_NAME, st as isCookieEnabled, u as DEFAULT_WAAS_BASE_MPC_RELAY_API_URL, ut as getElevatedAccessToken, xt as name } from "./updateAuthFromVerifyResponse-CVDQVEQM.esm.js";
2
- import { i as __logoutWithReason_wrapped } from "./isMfaRequiredForAction-20E6GsSc.esm.js";
3
- import "./isDynamicWaasEnabled-JpnXC0f7.esm.js";
4
- import { a as WaasOnboardingIncompleteError, i as preconnectWaasIframe, t as isUserOnboardingComplete } from "./isUserOnboardingComplete-diGA1wlX.esm.js";
5
- import { n as consumeMfaTokenIfRequiredForAction, t as getSignedSessionId } from "./getSignedSessionId-BVc-sgeN.esm.js";
6
- import { n as getWaasWalletProviderFromWalletAccount, t as migrateFromFireblocks } from "./migrateFromFireblocks--G-432sl.esm.js";
1
+ import { Ct as name, I as getChainFromVerifiedCredentialChain, St as getCore, d as DYNAMIC_WAAS_METADATA, ft as getElevatedAccessToken, i as InvalidParamError, wt as version } from "./updateAuthFromVerifyResponse-C_YKKAIX.esm.js";
2
+ import "./isDynamicWaasEnabled-D5e2K02u.esm.js";
3
+ import { a as WaasOnboardingIncompleteError, i as preconnectWaasIframe, o as WaasLoadFailedError, t as isUserOnboardingComplete } from "./isUserOnboardingComplete-Cgkw21XZ.esm.js";
4
+ import "./isMfaRequiredForAction-A02NFVt8.esm.js";
5
+ import { t as consumeMfaTokenIfRequiredForAction } from "./consumeMfaTokenIfRequiredForAction-C_IvLTH6.esm.js";
6
+ import { t as getSignedSessionId } from "./getSignedSessionId-ekp3lswQ.esm.js";
7
+ import { i as createWaasClient, n as getWaasWalletProviderFromWalletAccount, r as getWaasChainNameFromChain, t as migrateFromFireblocks } from "./migrateFromFireblocks-DcKrquTE.esm.js";
7
8
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
8
9
  import { MFAAction, TokenScope, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
9
- import { DynamicWalletClient, ThresholdSignatureScheme, WalletOperation } from "@dynamic-labs-wallet/browser-wallet-client";
10
+ import { ThresholdSignatureScheme, WalletOperation } from "@dynamic-labs-wallet/browser-wallet-client";
10
11
 
11
- //#region src/modules/waas/createWaasClient/createWaasClient.ts
12
- /** @notInstrumented */
13
- const createWaasClient = ({ chainName }, client) => {
14
- const core = getCore(client);
15
- const additionalTrustedOrigins = core.waas?.additionalTrustedOrigins;
16
- const baseClientKeysharesRelayApiUrl = client.projectSettings?.sdk.waas?.customKeyshareRelayBaseUrl;
17
- return new DynamicWalletClient({
18
- authMode: isCookieEnabled(client) ? "cookie" : "header",
19
- authToken: client.token || "",
20
- baseApiUrl: (core.apiBaseUrl || DEFAULT_WAAS_BASE_API_URL).replace("/api/v0", ""),
21
- baseMPCRelayApiUrl: client.projectSettings?.sdk.waas?.relayUrl || DEFAULT_WAAS_BASE_MPC_RELAY_API_URL,
22
- chainName,
23
- eagerlyRecoverKeyShares: true,
24
- environmentId: core.environmentId,
25
- sdkVersion: `${CLIENT_SDK_NAME}/${core.version}`,
26
- ...additionalTrustedOrigins == void 0 ? {} : { additionalTrustedOrigins },
27
- ...baseClientKeysharesRelayApiUrl == void 0 ? {} : { baseClientKeysharesRelayApiUrl }
28
- }, {
29
- getSignedSessionId: () => getSignedSessionId(client).then(({ signature }) => signature),
30
- onUnauthorized: () => {
31
- __logoutWithReason_wrapped({ reason: "session-refresh-unauthorized" }, client).catch((error) => {
32
- core.logger.error("Failed to log out after WaaS unauthorized response", error);
33
- });
34
- }
35
- });
12
+ //#region src/utils/createTranslateRejection/createTranslateRejection.ts
13
+ /**
14
+ * Builds a reusable decorator, bound once to a `match`/`mapTo` pair, that wraps
15
+ * any async function so a matching rejection is rethrown as `mapTo(error)`
16
+ * while every other rejection — and every resolved value — passes through
17
+ * untouched. Unmatched errors are rethrown by reference, so the decorator can
18
+ * never swallow or reshape an error it was not asked to translate.
19
+ *
20
+ * Binding `match`/`mapTo` up front keeps the generic wrapping machinery here
21
+ * instead of at the call site: consumers get a plain `(fn) => wrappedFn`
22
+ * decorator they can apply to many functions of differing signatures, each of
23
+ * which keeps its own argument and return types.
24
+ *
25
+ * @notInstrumented
26
+ */
27
+ const createTranslateRejection = ({ match, mapTo }) => (fn) => async (...args) => {
28
+ try {
29
+ return await fn(...args);
30
+ } catch (error) {
31
+ if (match(error)) throw mapTo(error);
32
+ throw error;
33
+ }
36
34
  };
37
35
 
38
36
  //#endregion
39
- //#region src/modules/waas/getWaasChainNameFromChain/getWaasChainNameFromChain.ts
40
- /** @notInstrumented */
41
- const getWaasChainNameFromChain = (chain) => {
42
- return CHAINS_INFO_MAP[chain].waasChainNameOverride || chain;
43
- };
37
+ //#region src/modules/waas/createWaasProvider/isWaasLoadExhaustionError.ts
38
+ /**
39
+ * Exact message prefix of the rejection thrown by
40
+ * `@dynamic-labs-wallet/browser-wallet-client` when the secure container load
41
+ * exhausts all retry attempts. The upstream library throws a plain `Error`
42
+ * with no code, so message matching is the only detection mechanism available;
43
+ * the dependency is pinned to an exact version and the spec pins this string
44
+ * so drift is caught at upgrade time.
45
+ */
46
+ const UPSTREAM_LOAD_EXHAUSTION_MESSAGE_PREFIX = "Failed to load iframe after all retry attempts";
47
+ /**
48
+ * True when `error` is the upstream "load retry attempts exhausted" rejection
49
+ * from the embedded (WaaS) wallet's secure container load. Narrows to `Error`
50
+ * so the matched value can be forwarded as a typed error cause without a cast,
51
+ * and guards `instanceof Error` before reading `.message` so a non-`Error`
52
+ * rejection never throws during detection.
53
+ *
54
+ * @notInstrumented
55
+ */
56
+ const isWaasLoadExhaustionError = (error) => error instanceof Error && error.message.startsWith(UPSTREAM_LOAD_EXHAUSTION_MESSAGE_PREFIX);
44
57
 
45
58
  //#endregion
46
59
  //#region src/modules/waas/createWaasProvider/createWaasProvider.ts
@@ -50,25 +63,49 @@ const createWaasProvider = ({ sdkClient, chain }) => {
50
63
  const logger = getCore(sdkClient).logger;
51
64
  let _waasClient;
52
65
  let _waasClientSessionId;
66
+ const resetClientIfCurrent = (client) => {
67
+ if (_waasClient === client) {
68
+ _waasClient = void 0;
69
+ _waasClientSessionId = void 0;
70
+ }
71
+ };
53
72
  const getWaasClient = async () => {
54
73
  const currentSessionId = getCore(sdkClient).state.get().user?.sessionId;
55
74
  if (_waasClient && currentSessionId !== _waasClientSessionId) _waasClient = void 0;
56
75
  if (!_waasClient) {
57
76
  if (!isUserOnboardingComplete(sdkClient)) throw new WaasOnboardingIncompleteError();
58
- _waasClient = createWaasClient({ chainName: getWaasChainNameFromChain(chain) }, sdkClient);
77
+ const builtClient = createWaasClient({ chainName: getWaasChainNameFromChain(chain) }, sdkClient);
78
+ _waasClient = builtClient;
59
79
  _waasClientSessionId = currentSessionId;
60
- await _waasClient.initialize();
80
+ try {
81
+ await builtClient.initialize();
82
+ } catch (error) {
83
+ resetClientIfCurrent(builtClient);
84
+ throw error;
85
+ }
61
86
  }
62
87
  return _waasClient;
63
88
  };
89
+ const discardClientOnLoadFailure = async ({ waasClient, operation }) => {
90
+ try {
91
+ return await operation();
92
+ } catch (error) {
93
+ if (isWaasLoadExhaustionError(error)) resetClientIfCurrent(waasClient);
94
+ throw error;
95
+ }
96
+ };
64
97
  const backupKeySharesToGoogleDrive = async ({ googleDriveAccessToken, password, walletAccount }) => {
65
98
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
66
- return (await getWaasClient()).backupKeySharesToGoogleDrive({
67
- accountAddress: walletAccount.address,
68
- authToken: sdkClient.token ?? void 0,
69
- googleDriveAccessToken,
70
- password,
71
- signedSessionId
99
+ const waasClient = await getWaasClient();
100
+ return discardClientOnLoadFailure({
101
+ operation: () => waasClient.backupKeySharesToGoogleDrive({
102
+ accountAddress: walletAccount.address,
103
+ authToken: sdkClient.token ?? void 0,
104
+ googleDriveAccessToken,
105
+ password,
106
+ signedSessionId
107
+ }),
108
+ waasClient
72
109
  });
73
110
  };
74
111
  const createWalletAccount = async (args = {}) => {
@@ -77,30 +114,43 @@ const createWaasProvider = ({ sdkClient, chain }) => {
77
114
  thresholdSignatureScheme: args.thresholdSignatureScheme
78
115
  });
79
116
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
80
- return await (await getWaasClient()).createWalletAccount({
81
- authToken: sdkClient.token ?? void 0,
82
- bitcoinConfig: args.bitcoinConfig,
83
- password: args.password,
84
- signedSessionId,
85
- thresholdSignatureScheme: args.thresholdSignatureScheme ?? ThresholdSignatureScheme.TWO_OF_TWO
117
+ const waasClient = await getWaasClient();
118
+ return await discardClientOnLoadFailure({
119
+ operation: () => waasClient.createWalletAccount({
120
+ authToken: sdkClient.token ?? void 0,
121
+ bitcoinConfig: args.bitcoinConfig,
122
+ businessAccountId: args.businessAccountId,
123
+ password: args.password,
124
+ signedSessionId,
125
+ thresholdSignatureScheme: args.thresholdSignatureScheme ?? ThresholdSignatureScheme.TWO_OF_TWO
126
+ }),
127
+ waasClient
86
128
  });
87
129
  };
88
130
  const delegateKeyShares = async ({ password, walletAccount }) => {
89
131
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
90
- return (await getWaasClient()).delegateKeyShares({
91
- accountAddress: walletAccount.address,
92
- authToken: sdkClient.token ?? void 0,
93
- password,
94
- signedSessionId
132
+ const waasClient = await getWaasClient();
133
+ return discardClientOnLoadFailure({
134
+ operation: () => waasClient.delegateKeyShares({
135
+ accountAddress: walletAccount.address,
136
+ authToken: sdkClient.token ?? void 0,
137
+ password,
138
+ signedSessionId
139
+ }),
140
+ waasClient
95
141
  });
96
142
  };
97
143
  const exportClientKeyshares = async ({ password, walletAccount }) => {
98
144
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
99
- await (await getWaasClient()).exportClientKeyshares({
100
- accountAddress: walletAccount.address,
101
- authToken: sdkClient.token ?? void 0,
102
- password,
103
- signedSessionId
145
+ const waasClient = await getWaasClient();
146
+ await discardClientOnLoadFailure({
147
+ operation: () => waasClient.exportClientKeyshares({
148
+ accountAddress: walletAccount.address,
149
+ authToken: sdkClient.token ?? void 0,
150
+ password,
151
+ signedSessionId
152
+ }),
153
+ waasClient
104
154
  });
105
155
  };
106
156
  const exportPrivateKey = async ({ container, displayContainer, walletAccount, password }) => {
@@ -108,78 +158,120 @@ const createWaasProvider = ({ sdkClient, chain }) => {
108
158
  const waasClient = await getWaasClient();
109
159
  const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction.WalletWaasExport }, sdkClient);
110
160
  const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletexport }, sdkClient);
111
- await waasClient.exportPrivateKey({
112
- accountAddress: walletAccount.address,
113
- authToken: sdkClient.token ?? void 0,
114
- container,
115
- displayContainer,
116
- elevatedAccessToken,
117
- mfaToken,
118
- password,
119
- signedSessionId
161
+ await discardClientOnLoadFailure({
162
+ operation: () => waasClient.exportPrivateKey({
163
+ accountAddress: walletAccount.address,
164
+ authToken: sdkClient.token ?? void 0,
165
+ container,
166
+ displayContainer,
167
+ elevatedAccessToken,
168
+ mfaToken,
169
+ password,
170
+ signedSessionId
171
+ }),
172
+ waasClient
120
173
  });
121
174
  };
122
175
  const restoreUserShareForWalletAccount = async ({ walletAccount }) => {
123
176
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
124
- await (await getWaasClient()).getWallet({
125
- accountAddress: walletAccount.address,
126
- authToken: sdkClient.token ?? void 0,
127
- signedSessionId,
128
- walletOperation: WalletOperation.SIGN_MESSAGE
177
+ const waasClient = await getWaasClient();
178
+ await discardClientOnLoadFailure({
179
+ operation: () => waasClient.getWallet({
180
+ accountAddress: walletAccount.address,
181
+ authToken: sdkClient.token ?? void 0,
182
+ signedSessionId,
183
+ walletOperation: WalletOperation.SIGN_MESSAGE
184
+ }),
185
+ waasClient
129
186
  });
130
187
  };
131
188
  const importPrivateKey = async ({ privateKey, thresholdSignatureScheme = ThresholdSignatureScheme.TWO_OF_TWO }) => {
132
189
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
133
- await (await getWaasClient()).importPrivateKey({
134
- authToken: sdkClient.token ?? void 0,
135
- privateKey,
136
- signedSessionId,
137
- thresholdSignatureScheme
190
+ const walletClient = await getWaasClient();
191
+ await discardClientOnLoadFailure({
192
+ operation: () => walletClient.importPrivateKey({
193
+ authToken: sdkClient.token ?? void 0,
194
+ privateKey,
195
+ signedSessionId,
196
+ thresholdSignatureScheme
197
+ }),
198
+ waasClient: walletClient
138
199
  });
139
200
  };
140
201
  const migrateFromFireblocks$1 = async ({ coinTypes, deviceId, expectedAddresses, jwt, password, storage }) => {
141
202
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
142
- return (await getWaasClient()).migrateFromFireblocks({
143
- authToken: sdkClient.token ?? void 0,
144
- fireblocks: {
145
- deviceId,
146
- expectedAddresses,
147
- jwt,
148
- ncwStorage: storage,
149
- walletPassword: password,
150
- ...coinTypes ? { coinTypes } : {}
151
- },
152
- signedSessionId
203
+ const walletClient = await getWaasClient();
204
+ return discardClientOnLoadFailure({
205
+ operation: () => walletClient.migrateFromFireblocks({
206
+ authToken: sdkClient.token ?? void 0,
207
+ fireblocks: {
208
+ deviceId,
209
+ expectedAddresses,
210
+ jwt,
211
+ ncwStorage: storage,
212
+ walletPassword: password,
213
+ ...coinTypes ? { coinTypes } : {}
214
+ },
215
+ signedSessionId
216
+ }),
217
+ waasClient: walletClient
153
218
  });
154
219
  };
155
220
  const refreshWalletAccountShares = async ({ password, walletAccount }) => {
156
221
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
157
222
  const walletClient = await getWaasClient();
158
223
  const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction.WalletWaasRefresh }, sdkClient);
159
- return walletClient.refreshWalletAccountShares({
160
- accountAddress: walletAccount.address,
161
- authToken: sdkClient.token ?? void 0,
162
- mfaToken,
163
- password,
164
- signedSessionId
224
+ return discardClientOnLoadFailure({
225
+ operation: () => walletClient.refreshWalletAccountShares({
226
+ accountAddress: walletAccount.address,
227
+ authToken: sdkClient.token ?? void 0,
228
+ mfaToken,
229
+ password,
230
+ signedSessionId
231
+ }),
232
+ waasClient: walletClient
233
+ });
234
+ };
235
+ const reshareToNewSignerShareSet = async ({ businessAccountId, password, signerType, targetSignerIdentity, walletAccount }) => {
236
+ const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
237
+ const waasClient = await getWaasClient();
238
+ return discardClientOnLoadFailure({
239
+ operation: () => waasClient.reshareToNewSignerShareSet({
240
+ accountAddress: walletAccount.address,
241
+ authToken: sdkClient.token ?? void 0,
242
+ businessAccountId,
243
+ password,
244
+ signedSessionId,
245
+ signerType,
246
+ targetSignerIdentity
247
+ }),
248
+ waasClient
165
249
  });
166
250
  };
167
251
  const revokeDelegation = async ({ password, walletAccount }) => {
168
252
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
169
- return (await getWaasClient()).revokeDelegation({
170
- accountAddress: walletAccount.address,
171
- authToken: sdkClient.token ?? void 0,
172
- password,
173
- signedSessionId
253
+ const waasClient = await getWaasClient();
254
+ return discardClientOnLoadFailure({
255
+ operation: () => waasClient.revokeDelegation({
256
+ accountAddress: walletAccount.address,
257
+ authToken: sdkClient.token ?? void 0,
258
+ password,
259
+ signedSessionId
260
+ }),
261
+ waasClient
174
262
  });
175
263
  };
176
264
  const setWaasWalletAccountPassword = async ({ password, walletAccount }) => {
177
265
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
178
- return (await getWaasClient()).setPassword({
179
- accountAddress: walletAccount.address,
180
- authToken: sdkClient.token ?? void 0,
181
- newPassword: password,
182
- signedSessionId
266
+ const waasClient = await getWaasClient();
267
+ return discardClientOnLoadFailure({
268
+ operation: () => waasClient.setPassword({
269
+ accountAddress: walletAccount.address,
270
+ authToken: sdkClient.token ?? void 0,
271
+ newPassword: password,
272
+ signedSessionId
273
+ }),
274
+ waasClient
183
275
  });
184
276
  };
185
277
  const signRawMessage = async ({ message, password, walletAccount }) => {
@@ -187,14 +279,18 @@ const createWaasProvider = ({ sdkClient, chain }) => {
187
279
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
188
280
  const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction.WalletWaasSign }, sdkClient);
189
281
  const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletsign }, sdkClient);
190
- return { signature: await (await getWaasClient()).signRawMessage({
191
- accountAddress: walletAccount.address,
192
- authToken: sdkClient.token ?? void 0,
193
- elevatedAccessToken,
194
- message,
195
- mfaToken,
196
- password,
197
- signedSessionId
282
+ const walletClient = await getWaasClient();
283
+ return { signature: await discardClientOnLoadFailure({
284
+ operation: () => walletClient.signRawMessage({
285
+ accountAddress: walletAccount.address,
286
+ authToken: sdkClient.token ?? void 0,
287
+ elevatedAccessToken,
288
+ message,
289
+ mfaToken,
290
+ password,
291
+ signedSessionId
292
+ }),
293
+ waasClient: walletClient
198
294
  }) };
199
295
  };
200
296
  const destroy = async (args) => {
@@ -205,78 +301,103 @@ const createWaasProvider = ({ sdkClient, chain }) => {
205
301
  };
206
302
  const updatePassword = async ({ walletAccount, currentPassword, newPassword }) => {
207
303
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
208
- return (await getWaasClient()).updatePassword({
209
- accountAddress: walletAccount.address,
210
- authToken: sdkClient.token ?? void 0,
211
- existingPassword: currentPassword,
212
- newPassword,
213
- signedSessionId
304
+ const waasClient = await getWaasClient();
305
+ return discardClientOnLoadFailure({
306
+ operation: () => waasClient.updatePassword({
307
+ accountAddress: walletAccount.address,
308
+ authToken: sdkClient.token ?? void 0,
309
+ existingPassword: currentPassword,
310
+ newPassword,
311
+ signedSessionId
312
+ }),
313
+ waasClient
214
314
  });
215
315
  };
216
316
  const signMessage = async ({ message, walletAccount }) => {
217
317
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
218
318
  const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction.WalletWaasSign }, sdkClient);
219
319
  const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletsign }, sdkClient);
220
- return { signature: await (await getWaasClient()).signMessage({
221
- accountAddress: walletAccount.address,
222
- authToken: sdkClient.token ?? void 0,
223
- elevatedAccessToken,
224
- message,
225
- mfaToken,
226
- signedSessionId
320
+ const waasClient = await getWaasClient();
321
+ return { signature: await discardClientOnLoadFailure({
322
+ operation: () => waasClient.signMessage({
323
+ accountAddress: walletAccount.address,
324
+ authToken: sdkClient.token ?? void 0,
325
+ elevatedAccessToken,
326
+ message,
327
+ mfaToken,
328
+ signedSessionId
329
+ }),
330
+ waasClient
227
331
  }) };
228
332
  };
229
333
  const signSerializedTransaction = async ({ chainId, serializedTransaction, walletAccount }) => {
230
334
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
231
335
  const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction.WalletWaasSign }, sdkClient);
232
336
  const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletsign }, sdkClient);
233
- return { signature: await (await getWaasClient()).signTransaction({
234
- authToken: sdkClient.token ?? void 0,
235
- chainId,
236
- elevatedAccessToken,
237
- mfaToken,
238
- senderAddress: walletAccount.address,
239
- signedSessionId,
240
- transaction: serializedTransaction
337
+ const waasClient = await getWaasClient();
338
+ return { signature: await discardClientOnLoadFailure({
339
+ operation: () => waasClient.signTransaction({
340
+ authToken: sdkClient.token ?? void 0,
341
+ chainId,
342
+ elevatedAccessToken,
343
+ mfaToken,
344
+ senderAddress: walletAccount.address,
345
+ signedSessionId,
346
+ transaction: serializedTransaction
347
+ }),
348
+ waasClient
241
349
  }) };
242
350
  };
243
351
  const getWalletRecoveryState = async ({ walletAccount }) => {
244
352
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
245
- return (await getWaasClient()).getWalletRecoveryState({
246
- accountAddress: walletAccount.address,
247
- authToken: sdkClient.token ?? void 0,
248
- signedSessionId
353
+ const waasClient = await getWaasClient();
354
+ return discardClientOnLoadFailure({
355
+ operation: () => waasClient.getWalletRecoveryState({
356
+ accountAddress: walletAccount.address,
357
+ authToken: sdkClient.token ?? void 0,
358
+ signedSessionId
359
+ }),
360
+ waasClient
249
361
  });
250
362
  };
251
363
  const unlockWallet = async ({ password, walletAccount }) => {
252
364
  const { signature: signedSessionId } = await getSignedSessionId(sdkClient);
253
- return (await getWaasClient()).unlockWallet({
254
- accountAddress: walletAccount.address,
255
- authToken: sdkClient.token ?? void 0,
256
- password,
257
- signedSessionId
365
+ const waasClient = await getWaasClient();
366
+ return discardClientOnLoadFailure({
367
+ operation: () => waasClient.unlockWallet({
368
+ accountAddress: walletAccount.address,
369
+ authToken: sdkClient.token ?? void 0,
370
+ password,
371
+ signedSessionId
372
+ }),
373
+ waasClient
258
374
  });
259
375
  };
376
+ const translateLoadFailure = createTranslateRejection({
377
+ mapTo: (error) => new WaasLoadFailedError({ cause: error }),
378
+ match: isWaasLoadExhaustionError
379
+ });
260
380
  return {
261
- backupKeySharesToGoogleDrive,
262
- createWalletAccount,
263
- delegateKeyShares,
264
- destroy,
265
- exportClientKeyshares,
266
- exportPrivateKey,
267
- getWaasClient,
268
- getWalletRecoveryState,
269
- importPrivateKey,
270
- migrateFromFireblocks: migrateFromFireblocks$1,
271
- refreshWalletAccountShares,
272
- restoreUserShareForWalletAccount,
273
- revokeDelegation,
274
- setWaasWalletAccountPassword,
275
- signMessage,
276
- signRawMessage,
277
- signSerializedTransaction,
278
- unlockWallet,
279
- updatePassword
381
+ backupKeySharesToGoogleDrive: translateLoadFailure(backupKeySharesToGoogleDrive),
382
+ createWalletAccount: translateLoadFailure(createWalletAccount),
383
+ delegateKeyShares: translateLoadFailure(delegateKeyShares),
384
+ destroy: translateLoadFailure(destroy),
385
+ exportClientKeyshares: translateLoadFailure(exportClientKeyshares),
386
+ exportPrivateKey: translateLoadFailure(exportPrivateKey),
387
+ getWaasClient: translateLoadFailure(getWaasClient),
388
+ getWalletRecoveryState: translateLoadFailure(getWalletRecoveryState),
389
+ importPrivateKey: translateLoadFailure(importPrivateKey),
390
+ migrateFromFireblocks: translateLoadFailure(migrateFromFireblocks$1),
391
+ refreshWalletAccountShares: translateLoadFailure(refreshWalletAccountShares),
392
+ reshareToNewSignerShareSet: translateLoadFailure(reshareToNewSignerShareSet),
393
+ restoreUserShareForWalletAccount: translateLoadFailure(restoreUserShareForWalletAccount),
394
+ revokeDelegation: translateLoadFailure(revokeDelegation),
395
+ setWaasWalletAccountPassword: translateLoadFailure(setWaasWalletAccountPassword),
396
+ signMessage: translateLoadFailure(signMessage),
397
+ signRawMessage: translateLoadFailure(signRawMessage),
398
+ signSerializedTransaction: translateLoadFailure(signSerializedTransaction),
399
+ unlockWallet: translateLoadFailure(unlockWallet),
400
+ updatePassword: translateLoadFailure(updatePassword)
280
401
  };
281
402
  };
282
403