@dynamic-labs-sdk/client 0.24.0 → 0.25.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 (148) hide show
  1. package/dist/InvalidParamError-B5NwKSKU.native.esm.js +1177 -0
  2. package/dist/InvalidParamError-B5NwKSKU.native.esm.js.map +1 -0
  3. package/dist/{InvalidParamError-kLBXFKhe.esm.js → InvalidParamError-BiVmL7nM.esm.js} +4 -4
  4. package/dist/InvalidParamError-BiVmL7nM.esm.js.map +1 -0
  5. package/dist/{InvalidParamError-BgmShvv_.cjs.js → InvalidParamError-D-d-UfBL.cjs.js} +5 -5
  6. package/dist/InvalidParamError-D-d-UfBL.cjs.js.map +1 -0
  7. package/dist/{NotWaasWalletAccountError-qK9GIBpr.cjs.js → NotWaasWalletAccountError-BJaemI4V.cjs.js} +3 -3
  8. package/dist/{NotWaasWalletAccountError-qK9GIBpr.cjs.js.map → NotWaasWalletAccountError-BJaemI4V.cjs.js.map} +1 -1
  9. package/dist/NotWaasWalletAccountError-BX5lUnKT.native.esm.js +50 -0
  10. package/dist/NotWaasWalletAccountError-BX5lUnKT.native.esm.js.map +1 -0
  11. package/dist/{NotWaasWalletAccountError-VJL72OTC.esm.js → NotWaasWalletAccountError-Bo4VhW4n.esm.js} +3 -3
  12. package/dist/{NotWaasWalletAccountError-VJL72OTC.esm.js.map → NotWaasWalletAccountError-Bo4VhW4n.esm.js.map} +1 -1
  13. package/dist/client/core/createCore/createCore.d.ts.map +1 -1
  14. package/dist/client/core/types/DynamicCore.d.ts +4 -0
  15. package/dist/client/core/types/DynamicCore.d.ts.map +1 -1
  16. package/dist/client/types/DynamicClientConfig.d.ts +10 -0
  17. package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
  18. package/dist/core.cjs.js +5 -5
  19. package/dist/core.cjs.js.map +1 -1
  20. package/dist/core.esm.js +5 -5
  21. package/dist/core.esm.js.map +1 -1
  22. package/dist/core.native.esm.js +377 -0
  23. package/dist/core.native.esm.js.map +1 -0
  24. package/dist/errors/APIError/APIError.d.ts.map +1 -1
  25. package/dist/errors/InvalidParamError.d.ts.map +1 -1
  26. package/dist/errors/InvalidStorageValue.d.ts.map +1 -1
  27. package/dist/errors/InvalidWalletProviderKeyError.d.ts.map +1 -1
  28. package/dist/errors/MethodNotImplementedError.d.ts.map +1 -1
  29. package/dist/errors/MissingSocialUrlParamError.d.ts.map +1 -1
  30. package/dist/errors/NoSmartWalletAccountSignerFoundError.d.ts.map +1 -1
  31. package/dist/errors/UnavailableInServerSideError.d.ts.map +1 -1
  32. package/dist/errors/ValueMustBeDefinedError.d.ts.map +1 -1
  33. package/dist/errors/WalletAccountAlreadyVerifiedError.d.ts.map +1 -1
  34. package/dist/exports/index.d.ts +4 -4
  35. package/dist/exports/index.d.ts.map +1 -1
  36. package/dist/{getNetworkProviderFromNetworkId-RlnraKJN.esm.js → getNetworkProviderFromNetworkId-5dK99mQR.esm.js} +5 -5
  37. package/dist/getNetworkProviderFromNetworkId-5dK99mQR.esm.js.map +1 -0
  38. package/dist/{getNetworkProviderFromNetworkId-B8OjAdet.cjs.js → getNetworkProviderFromNetworkId-Cl2XDWo9.cjs.js} +5 -5
  39. package/dist/getNetworkProviderFromNetworkId-Cl2XDWo9.cjs.js.map +1 -0
  40. package/dist/getNetworkProviderFromNetworkId-DWOYr3uv.native.esm.js +1302 -0
  41. package/dist/getNetworkProviderFromNetworkId-DWOYr3uv.native.esm.js.map +1 -0
  42. package/dist/{getSignedSessionId-DBQS7lht.cjs.js → getSignedSessionId-BbhZjeRt.cjs.js} +3 -3
  43. package/dist/{getSignedSessionId-DBQS7lht.cjs.js.map → getSignedSessionId-BbhZjeRt.cjs.js.map} +1 -1
  44. package/dist/{getSignedSessionId-CvNFnwt1.esm.js → getSignedSessionId-DakTrfSz.esm.js} +3 -3
  45. package/dist/{getSignedSessionId-CvNFnwt1.esm.js.map → getSignedSessionId-DakTrfSz.esm.js.map} +1 -1
  46. package/dist/getSignedSessionId-Dk3_TQLq.native.esm.js +67 -0
  47. package/dist/getSignedSessionId-Dk3_TQLq.native.esm.js.map +1 -0
  48. package/dist/{getVerifiedCredentialForWalletAccount-CBJrrV08.cjs.js → getVerifiedCredentialForWalletAccount-BDvkZbtb.cjs.js} +3 -3
  49. package/dist/getVerifiedCredentialForWalletAccount-BDvkZbtb.cjs.js.map +1 -0
  50. package/dist/{getVerifiedCredentialForWalletAccount-8VlwTOBc.esm.js → getVerifiedCredentialForWalletAccount-ByUSFAHs.esm.js} +2 -2
  51. package/dist/getVerifiedCredentialForWalletAccount-ByUSFAHs.esm.js.map +1 -0
  52. package/dist/getVerifiedCredentialForWalletAccount-Dhqf6Tdl.native.esm.js +783 -0
  53. package/dist/getVerifiedCredentialForWalletAccount-Dhqf6Tdl.native.esm.js.map +1 -0
  54. package/dist/index.cjs.js +73 -49
  55. package/dist/index.cjs.js.map +1 -1
  56. package/dist/index.esm.js +73 -49
  57. package/dist/index.esm.js.map +1 -1
  58. package/dist/index.native.esm.js +7000 -0
  59. package/dist/index.native.esm.js.map +1 -0
  60. package/dist/{isMfaRequiredForAction-9NDyQhHS.cjs.js → isMfaRequiredForAction-CYrluCK-.cjs.js} +2 -2
  61. package/dist/{isMfaRequiredForAction-9NDyQhHS.cjs.js.map → isMfaRequiredForAction-CYrluCK-.cjs.js.map} +1 -1
  62. package/dist/{isMfaRequiredForAction-8NlpzYe6.esm.js → isMfaRequiredForAction-SFbQW5j5.esm.js} +2 -2
  63. package/dist/{isMfaRequiredForAction-8NlpzYe6.esm.js.map → isMfaRequiredForAction-SFbQW5j5.esm.js.map} +1 -1
  64. package/dist/isMfaRequiredForAction-y15A_lhP.native.esm.js +89 -0
  65. package/dist/isMfaRequiredForAction-y15A_lhP.native.esm.js.map +1 -0
  66. package/dist/modules/auth/decodeJwt/decodeJwt.d.ts.map +1 -1
  67. package/dist/modules/auth/externalAuth/signInWithExternalJwt/signInWithExternalJwt.d.ts +0 -1
  68. package/dist/modules/auth/externalAuth/signInWithExternalJwt/signInWithExternalJwt.d.ts.map +1 -1
  69. package/dist/modules/auth/extractSessionId/extractSessionId.d.ts.map +1 -1
  70. package/dist/modules/auth/initializeAuth/setLongTimeout/setLongTimeout.d.ts.map +1 -1
  71. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts.map +1 -1
  72. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/buildOAuthUrl.d.ts.map +1 -1
  73. package/dist/modules/auth/social/removeDynamicOauthParamsFromUrl/removeDynamicOauthParamsFromUrl.d.ts.map +1 -1
  74. package/dist/modules/auth/updateAuthFromVerifyResponse/elevatedAccessTokens/normalizeScopes/normalizeScopes.d.ts.map +1 -1
  75. package/dist/modules/auth/updateAuthFromVerifyResponse/elevatedAccessTokens/parseElevatedAccessToken/parseElevatedAccessToken.d.ts.map +1 -1
  76. package/dist/modules/checkout/attachCheckoutTransactionSource/attachCheckoutTransactionSource.d.ts +34 -6
  77. package/dist/modules/checkout/attachCheckoutTransactionSource/attachCheckoutTransactionSource.d.ts.map +1 -1
  78. package/dist/modules/checkout/broadcastCheckoutTransaction/broadcastCheckoutTransaction.d.ts +11 -3
  79. package/dist/modules/checkout/broadcastCheckoutTransaction/broadcastCheckoutTransaction.d.ts.map +1 -1
  80. package/dist/modules/checkout/checkout.types.d.ts +1 -0
  81. package/dist/modules/checkout/checkout.types.d.ts.map +1 -1
  82. package/dist/modules/checkout/trackCheckoutTransaction/trackCheckoutTransaction.d.ts +7 -3
  83. package/dist/modules/checkout/trackCheckoutTransaction/trackCheckoutTransaction.d.ts.map +1 -1
  84. package/dist/modules/checkout/utils/createCheckoutSessionTokenStorageKey/createCheckoutSessionTokenStorageKey.d.ts.map +1 -1
  85. package/dist/modules/checkout/utils/subscribeToCheckoutTransaction/subscribeToCheckoutTransaction.d.ts.map +1 -1
  86. package/dist/modules/instrumentation/setInstrumentationEnabled/setInstrumentationEnabled.d.ts.map +1 -1
  87. package/dist/modules/keychainMigration/migrateSessionKeyToKeychain/KeyMigrationError.d.ts.map +1 -1
  88. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/shouldFilterWallet/shouldFilterWallet.d.ts.map +1 -1
  89. package/dist/modules/otp/sendEmailOTP/sendEmailOTP.d.ts +0 -1
  90. package/dist/modules/otp/sendEmailOTP/sendEmailOTP.d.ts.map +1 -1
  91. package/dist/modules/otp/sendSmsOTP/sendSmsOTP.d.ts +0 -1
  92. package/dist/modules/otp/sendSmsOTP/sendSmsOTP.d.ts.map +1 -1
  93. package/dist/modules/user/updateUser/updateUser.d.ts +0 -1
  94. package/dist/modules/user/updateUser/updateUser.d.ts.map +1 -1
  95. package/dist/modules/waas/createWaasClient/createWaasClient.d.ts.map +1 -1
  96. package/dist/modules/waas/createWaasProvider/createWaasProvider.d.ts.map +1 -1
  97. package/dist/modules/waas/getWaasChainNameFromChain/getWaasChainNameFromChain.d.ts.map +1 -1
  98. package/dist/modules/wallets/networks/createBaseNetworkProvider/createBaseNetworkProvider.d.ts.map +1 -1
  99. package/dist/modules/wallets/networks/getSdkChainFromApiChainName/getSdkChainFromApiChainName.d.ts.map +1 -1
  100. package/dist/modules/wallets/utils/assertWalletProviderMethodDefined/assertWalletProviderMethodDefined.d.ts.map +1 -1
  101. package/dist/modules/wallets/utils/getAllProvidersFromWindow/getAllProvidersFromWindow.d.ts.map +1 -1
  102. package/dist/modules/wallets/utils/getInjectedProviderFromWindow/getInjectedProviderFromWindow.d.ts.map +1 -1
  103. package/dist/modules/wallets/utils/isSameAddress/isSameAddress.d.ts.map +1 -1
  104. package/dist/modules/wallets/utils/normalizeAddress/normalizeAddress.d.ts.map +1 -1
  105. package/dist/modules/wallets/walletProvider/splitWalletProviderKey/splitWalletProviderKey.d.ts.map +1 -1
  106. package/dist/services/instrumentation/createInstrumentation/createInstrumentation.d.ts.map +1 -1
  107. package/dist/services/instrumentation/instrumentFunction/extractParams/extractParams.d.ts.map +1 -1
  108. package/dist/services/keychain/createIndexedDBKeychainService/KeyNotFoundError.d.ts.map +1 -1
  109. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.d.ts.map +1 -1
  110. package/dist/services/keychain/createIndexedDBKeychainService/utils/deleteIndexedDBItem.d.ts.map +1 -1
  111. package/dist/services/keychain/createIndexedDBKeychainService/utils/getIndexedDBItem.d.ts.map +1 -1
  112. package/dist/services/keychain/createIndexedDBKeychainService/utils/setIndexedDBItem.d.ts.map +1 -1
  113. package/dist/services/logger/createLogger/createLogger.d.ts.map +1 -1
  114. package/dist/services/realtime/createRealtimeService/createRealtimeService.d.ts.map +1 -1
  115. package/dist/services/realtime/realtime.types.d.ts +1 -0
  116. package/dist/services/realtime/realtime.types.d.ts.map +1 -1
  117. package/dist/services/runtimeServices/createRuntimeServiceAccessKey/createRuntimeServiceAccessKey.d.ts.map +1 -1
  118. package/dist/services/runtimeServices/createRuntimeServices/createRuntimeServices.d.ts.map +1 -1
  119. package/dist/services/storage/createStorage/formatForStorage/isValidDateISOString/isValidDateISOString.d.ts.map +1 -1
  120. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  121. package/dist/utils/assertDefined/assertDefined.d.ts.map +1 -1
  122. package/dist/utils/base64UrlDecode/base64UrlDecode.d.ts.map +1 -1
  123. package/dist/utils/digestSHA256/digestSHA256.d.ts.map +1 -1
  124. package/dist/utils/getChainFromVerifiedCredentialChain/getChainFromVerifiedCredentialChain.d.ts.map +1 -1
  125. package/dist/utils/isEqualShallow/isEqualShallow.d.ts.map +1 -1
  126. package/dist/utils/isErrorWithCode/isErrorWithCode.d.ts.map +1 -1
  127. package/dist/utils/isMobile/isMobile.d.ts.map +1 -1
  128. package/dist/utils/observable/createObservableState/createObservableState.d.ts.map +1 -1
  129. package/dist/utils/observable/subscribeWithSelector/subscribeWithSelector.d.ts.map +1 -1
  130. package/dist/utils/retryOnFail/InvalidRetryOnFailCallError.d.ts.map +1 -1
  131. package/dist/utils/setCookie/setCookie.d.ts.map +1 -1
  132. package/dist/waas.cjs.js +4 -4
  133. package/dist/waas.esm.js +3 -3
  134. package/dist/waas.native.esm.js +506 -0
  135. package/dist/waas.native.esm.js.map +1 -0
  136. package/dist/waasCore.cjs.js +7 -5
  137. package/dist/waasCore.cjs.js.map +1 -1
  138. package/dist/waasCore.esm.js +6 -4
  139. package/dist/waasCore.esm.js.map +1 -1
  140. package/dist/waasCore.native.esm.js +253 -0
  141. package/dist/waasCore.native.esm.js.map +1 -0
  142. package/package.json +8 -4
  143. package/dist/InvalidParamError-BgmShvv_.cjs.js.map +0 -1
  144. package/dist/InvalidParamError-kLBXFKhe.esm.js.map +0 -1
  145. package/dist/getNetworkProviderFromNetworkId-B8OjAdet.cjs.js.map +0 -1
  146. package/dist/getNetworkProviderFromNetworkId-RlnraKJN.esm.js.map +0 -1
  147. package/dist/getVerifiedCredentialForWalletAccount-8VlwTOBc.esm.js.map +0 -1
  148. package/dist/getVerifiedCredentialForWalletAccount-CBJrrV08.cjs.js.map +0 -1
@@ -0,0 +1,1302 @@
1
+ import { F as getDefaultClient, R as BaseError, c as CHAINS_INFO_MAP, k as assertDefined, u as __createApiClient_wrapped, w as instrumentFunction, z as getCore } from "./InvalidParamError-B5NwKSKU.native.esm.js";
2
+ import { _ as __createRuntimeServiceAccessKey_wrapped, d as checkAndRaiseWalletAccountsChangedEvent, m as __getWalletProviderFromWalletAccount_wrapped, x as normalizeWalletNameWithChain } from "./getVerifiedCredentialForWalletAccount-Dhqf6Tdl.native.esm.js";
3
+ import { AuthModeEnum } from "@dynamic-labs/sdk-api-core";
4
+ import * as z from "zod/mini";
5
+ import { Buffer as Buffer$1 } from "buffer";
6
+ import EventEmitter, { EventEmitter as EventEmitter$1 } from "eventemitter3";
7
+
8
+ //#region src/utils/isEqualShallow/isEqualShallow.ts
9
+ /**
10
+ * Shallow compare two objects.
11
+ *
12
+ * Source: https://github.com/pmndrs/zustand/blob/main/src/vanilla/shallow.ts
13
+ * @not-instrumented
14
+ */
15
+ const isEqualShallow = (objA, objB) => {
16
+ if (Object.is(objA, objB)) return true;
17
+ if (typeof objA !== "object" || objA === null || typeof objB !== "object" || objB === null) return objA === objB;
18
+ if (objA instanceof Map && objB instanceof Map) {
19
+ if (objA.size !== objB.size) return false;
20
+ for (const [key, value] of objA) if (!Object.is(value, objB.get(key))) return false;
21
+ return true;
22
+ }
23
+ if (objA instanceof Set && objB instanceof Set) {
24
+ if (objA.size !== objB.size) return false;
25
+ for (const value of objA) if (!objB.has(value)) return false;
26
+ return true;
27
+ }
28
+ const keysA = Object.keys(objA);
29
+ if (keysA.length !== Object.keys(objB).length) return false;
30
+ for (const keyA of keysA) if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) return false;
31
+ if (objA.constructor !== objB.constructor) return false;
32
+ return true;
33
+ };
34
+
35
+ //#endregion
36
+ //#region src/utils/observable/subscribeWithSelector/subscribeWithSelector.ts
37
+ /**
38
+ * Allows subscribing to a slice of the state.
39
+ * The slice is a computation of the states.
40
+ *
41
+ * The callback will only be called when the slice has changed.
42
+ * Change is determined by shallow comparison.
43
+ *
44
+ * Returns a function to unsubscribe the callback.
45
+ * @instrumented
46
+ */
47
+ const subscribeWithSelector = (observable, selector) => (callback) => {
48
+ let lastSlice = selector(observable.get());
49
+ return observable.subscribe((value) => {
50
+ const nextSlice = selector(value);
51
+ if (isEqualShallow(nextSlice, lastSlice)) return;
52
+ lastSlice = nextSlice;
53
+ callback(nextSlice);
54
+ });
55
+ };
56
+ const __subscribeWithSelector_impl = subscribeWithSelector;
57
+ const __subscribeWithSelector_wrapped = instrumentFunction({
58
+ fn: __subscribeWithSelector_impl,
59
+ functionName: "subscribeWithSelector",
60
+ getCore: () => {
61
+ try {
62
+ return getCore(getDefaultClient());
63
+ } catch {
64
+ return;
65
+ }
66
+ }
67
+ });
68
+
69
+ //#endregion
70
+ //#region src/services/storage/createLocalStorageAdapter/createLocalStorageAdapter.ts
71
+ /**
72
+ * Creates a localStorage adapter
73
+ * @instrumented
74
+ */
75
+ const createLocalStorageAdapter = () => ({
76
+ getItem: async (key) => localStorage.getItem(key),
77
+ removeItem: async (key) => localStorage.removeItem(key),
78
+ setItem: async (key, value) => localStorage.setItem(key, value)
79
+ });
80
+ const __createLocalStorageAdapter_impl = createLocalStorageAdapter;
81
+ const __createLocalStorageAdapter_wrapped = instrumentFunction({
82
+ fn: __createLocalStorageAdapter_impl,
83
+ functionName: "createLocalStorageAdapter",
84
+ getCore: () => {
85
+ try {
86
+ return getCore(getDefaultClient());
87
+ } catch {
88
+ return;
89
+ }
90
+ }
91
+ });
92
+
93
+ //#endregion
94
+ //#region src/errors/InvalidStorageSet.ts
95
+ var InvalidStorageSet = class extends BaseError {
96
+ constructor({ key, value }) {
97
+ super({
98
+ cause: null,
99
+ code: "invalid_storage_set",
100
+ docsUrl: null,
101
+ metaMessages: [`key: ${key}`, value],
102
+ name: "InvalidStorageSet",
103
+ shortMessage: "Tried to store a value that does not match the schema"
104
+ });
105
+ }
106
+ };
107
+
108
+ //#endregion
109
+ //#region src/services/storage/createStorage/formatForStorage/isValidDateISOString/isValidDateISOString.ts
110
+ /**
111
+ * Returns whether the given string is a valid ISO date string.
112
+ *
113
+ * Does not support timezone offsets.
114
+ * @not-instrumented
115
+ */
116
+ const isValidDateISOString = (value) => {
117
+ const date = new Date(value);
118
+ return !isNaN(date.getTime()) && date.toISOString() === value;
119
+ };
120
+
121
+ //#endregion
122
+ //#region src/services/storage/createStorage/formatForStorage/storageFormat.ts
123
+ const DATE_PREFIX = "__DATE__";
124
+ /** @not-instrumented */
125
+ const formatForStorage = (value) => {
126
+ const item = { value };
127
+ return JSON.stringify(item, (_, entry) => {
128
+ if (isValidDateISOString(entry)) return `${DATE_PREFIX}${entry}`;
129
+ return entry;
130
+ });
131
+ };
132
+ /** @not-instrumented */
133
+ const parseFromStorage = (value) => {
134
+ try {
135
+ return JSON.parse(value, (_, entry) => {
136
+ if (typeof entry === "string" && entry.startsWith(DATE_PREFIX)) return new Date(entry.slice(8));
137
+ return entry;
138
+ });
139
+ } catch (error) {
140
+ return null;
141
+ }
142
+ };
143
+
144
+ //#endregion
145
+ //#region src/services/storage/createStorage/createStorage.ts
146
+ /**
147
+ * Creates a Storage service to interact with storage adapter
148
+ * @instrumented
149
+ */
150
+ const createStorage = ({ prefix = "", storageAdapter }) => {
151
+ const getPrefixedKey = (key) => prefix ? `${prefix}_${key}` : key;
152
+ return {
153
+ getItem: async (storageKeySchema) => {
154
+ const rawItem = await storageAdapter.getItem(getPrefixedKey(storageKeySchema.key));
155
+ const parsedItem = rawItem ? parseFromStorage(rawItem) : null;
156
+ /**
157
+ * The item saved to localStorage may be malformed.
158
+ * In this case, we remove it and return null.
159
+ */
160
+ if (parsedItem !== null) {
161
+ const parsed = storageKeySchema.schema.safeParse(parsedItem.value);
162
+ if (parsed.success) return parsed.data;
163
+ }
164
+ /**
165
+ * The item saved to localStorage may be malformed.
166
+ * In this case, we remove it and return null.
167
+ */
168
+ await storageAdapter.removeItem(getPrefixedKey(storageKeySchema.key));
169
+ return null;
170
+ },
171
+ removeItem: async (storageKeySchema) => {
172
+ await storageAdapter.removeItem(getPrefixedKey(storageKeySchema.key));
173
+ },
174
+ setItem: async (storageKeySchema, value) => {
175
+ const parsed = storageKeySchema.schema.safeParse(value);
176
+ if (!parsed.success) throw new InvalidStorageSet({
177
+ key: storageKeySchema.key,
178
+ value: JSON.stringify(value)
179
+ });
180
+ const item = formatForStorage(parsed.data);
181
+ await storageAdapter.setItem(getPrefixedKey(storageKeySchema.key), item);
182
+ }
183
+ };
184
+ };
185
+ const __createStorage_impl = createStorage;
186
+ const __createStorage_wrapped = instrumentFunction({
187
+ fn: __createStorage_impl,
188
+ functionName: "createStorage",
189
+ getCore: () => {
190
+ try {
191
+ return getCore(getDefaultClient());
192
+ } catch {
193
+ return;
194
+ }
195
+ }
196
+ });
197
+
198
+ //#endregion
199
+ //#region src/services/storage/createStorageKeySchema/createStorageKeySchema.ts
200
+ /** @instrumented */
201
+ const createStorageKeySchema = (params) => {
202
+ return params;
203
+ };
204
+ const __createStorageKeySchema_impl = createStorageKeySchema;
205
+ const __createStorageKeySchema_wrapped = instrumentFunction({
206
+ fn: __createStorageKeySchema_impl,
207
+ functionName: "createStorageKeySchema",
208
+ getCore: () => {
209
+ try {
210
+ return getCore(getDefaultClient());
211
+ } catch {
212
+ return;
213
+ }
214
+ }
215
+ });
216
+
217
+ //#endregion
218
+ //#region src/modules/sessionKeys/generateSessionKeys/generateSessionKeys.ts
219
+ /** @instrumented */
220
+ const generateSessionKeys = async (client) => {
221
+ const core = getCore(client);
222
+ const publicKey = await core.keychain.generateKey("session");
223
+ core.state.set({ sessionKeys: publicKey });
224
+ return { publicKey };
225
+ };
226
+ const __generateSessionKeys_impl = generateSessionKeys;
227
+ const __generateSessionKeys_wrapped = instrumentFunction({
228
+ fn: __generateSessionKeys_impl,
229
+ functionName: "generateSessionKeys",
230
+ getCore: () => {
231
+ try {
232
+ return getCore(getDefaultClient());
233
+ } catch {
234
+ return;
235
+ }
236
+ }
237
+ });
238
+
239
+ //#endregion
240
+ //#region src/utils/getBuffer/getBuffer.ts
241
+ /** @not-instrumented */
242
+ const getBuffer = () => typeof Buffer !== "undefined" ? Buffer : Buffer$1;
243
+
244
+ //#endregion
245
+ //#region src/utils/isServerSideRendering/isServerSideRendering.ts
246
+ /**
247
+ * Indicates if the code is running in a server-side environment.
248
+ * @not-instrumented
249
+ */
250
+ const isServerSideRendering = () => typeof window === "undefined";
251
+
252
+ //#endregion
253
+ //#region src/modules/initializeClient/consts.ts
254
+ const REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY = "refresh-user-state-from-cookie";
255
+ const INITIALIZE_STORAGE_SYNC_TRACKER_KEY = "initialize-storage-sync";
256
+ const FETCH_PROJECT_SETTINGS_TRACKER_KEY = "fetch-project-settings";
257
+ const GENERATE_SESSION_KEYS_TRACKER_KEY = "generate-session-keys";
258
+ const REFRESH_USER_STATE_FROM_VALID_TOKEN_TRACKER_KEY = "refresh-user-state-from-valid-token";
259
+
260
+ //#endregion
261
+ //#region src/utils/deferredPromise/createDeferredPromise.ts
262
+ /** @instrumented */
263
+ const createDeferredPromise = () => {
264
+ let resolve;
265
+ let reject;
266
+ return {
267
+ promise: new Promise((_resolve, _reject) => {
268
+ resolve = _resolve;
269
+ reject = _reject;
270
+ }),
271
+ reject: (reason) => reject?.(reason),
272
+ resolve: (value) => resolve?.(value)
273
+ };
274
+ };
275
+ const __createDeferredPromise_impl = createDeferredPromise;
276
+ const __createDeferredPromise_wrapped = instrumentFunction({
277
+ fn: __createDeferredPromise_impl,
278
+ functionName: "createDeferredPromise",
279
+ getCore: () => {
280
+ try {
281
+ return getCore(getDefaultClient());
282
+ } catch {
283
+ return;
284
+ }
285
+ }
286
+ });
287
+
288
+ //#endregion
289
+ //#region src/errors/CannotTrackError.ts
290
+ var CannotTrackError = class extends BaseError {
291
+ constructor() {
292
+ super({
293
+ cause: null,
294
+ code: "cannot_track_error",
295
+ docsUrl: null,
296
+ name: "CannotTrackError",
297
+ shortMessage: "All track calls must be performed in the same node tick"
298
+ });
299
+ }
300
+ };
301
+
302
+ //#endregion
303
+ //#region src/services/crossTabBroadcast/crossTabBroadcast.schema.ts
304
+ /**
305
+ * Schema for validating cross-tab broadcast messages.
306
+ */
307
+ const CrossTabBroadcastMessageSchema = z.object({
308
+ args: z.optional(z.unknown()),
309
+ event: z.string()
310
+ });
311
+
312
+ //#endregion
313
+ //#region src/services/crossTabBroadcast/createCrossTabBroadcast/createCrossTabBroadcast.ts
314
+ /**
315
+ * Creates a cross-tab broadcast service instance using the BroadcastChannel API.
316
+ *
317
+ * Enables communication between multiple tabs/windows of the same application.
318
+ * Messages are validated against the schema and invalid messages are silently ignored.
319
+ *
320
+ * In SSR or when BroadcastChannel is unavailable, returns a no-op implementation.
321
+ *
322
+ * @param params - Configuration parameters
323
+ * @param params.channelName - The name of the broadcast channel to use
324
+ * @returns A cross-tab broadcast service instance
325
+ * @instrumented
326
+ */
327
+ const createCrossTabBroadcast = ({ channelName }) => {
328
+ if (isServerSideRendering() || typeof BroadcastChannel === "undefined") return {
329
+ off: () => {},
330
+ on: () => {},
331
+ send: () => {}
332
+ };
333
+ const channel = new BroadcastChannel(channelName);
334
+ const eventEmitter = new EventEmitter();
335
+ const handleMessage = (messageEvent) => {
336
+ const parsed = CrossTabBroadcastMessageSchema.safeParse(messageEvent.data);
337
+ if (!parsed.success) return;
338
+ const { args, event } = parsed.data;
339
+ eventEmitter.emit(event, args);
340
+ };
341
+ channel.addEventListener("message", handleMessage);
342
+ return {
343
+ off: (event, callback) => {
344
+ eventEmitter.off(event, callback);
345
+ },
346
+ on: (event, callback) => {
347
+ eventEmitter.on(event, callback);
348
+ },
349
+ send: ({ args, event }) => {
350
+ channel.postMessage({
351
+ args,
352
+ event
353
+ });
354
+ }
355
+ };
356
+ };
357
+ const __createCrossTabBroadcast_impl = createCrossTabBroadcast;
358
+ const __createCrossTabBroadcast_wrapped = instrumentFunction({
359
+ fn: __createCrossTabBroadcast_impl,
360
+ functionName: "createCrossTabBroadcast",
361
+ getCore: () => {
362
+ try {
363
+ return getCore(getDefaultClient());
364
+ } catch {
365
+ return;
366
+ }
367
+ }
368
+ });
369
+
370
+ //#endregion
371
+ //#region src/services/logger/createLogger/createLogger.ts
372
+ /**
373
+ * Log levels and their corresponding numeric values
374
+ */
375
+ const LOG_LEVELS = {
376
+ debug: 0,
377
+ error: 3,
378
+ info: 1,
379
+ warn: 2
380
+ };
381
+ const defaultConsole = console;
382
+ /**
383
+ * Creates a logger instance with configurable log level and event emission capabilities.
384
+ * @returns A logger instance with debug, info, warn, and error methods
385
+ * @not-instrumented
386
+ */
387
+ const createLogger = (options = {}) => {
388
+ const eventEmitter = new EventEmitter$1();
389
+ const minLevel = options.level ?? "warn";
390
+ const shouldLog = (level) => {
391
+ return LOG_LEVELS[level] >= LOG_LEVELS[minLevel];
392
+ };
393
+ const formatMessage = (level, message) => {
394
+ return `[${(/* @__PURE__ */ new Date()).toISOString()}] ${level.toUpperCase()}: ${message}`;
395
+ };
396
+ const log = (level, consoleMethod, message, ...args) => {
397
+ eventEmitter.emit("log", level, message, ...args);
398
+ if (!shouldLog(level)) return;
399
+ consoleMethod(formatMessage(level, message), ...args);
400
+ };
401
+ return {
402
+ debug: (message, ...args) => log("debug", defaultConsole.debug, message, ...args),
403
+ error: (message, ...args) => log("error", defaultConsole.error, message, ...args),
404
+ info: (message, ...args) => log("info", defaultConsole.info, message, ...args),
405
+ off: eventEmitter.off.bind(eventEmitter),
406
+ on: eventEmitter.on.bind(eventEmitter),
407
+ warn: (message, ...args) => log("warn", defaultConsole.warn, message, ...args)
408
+ };
409
+ };
410
+ const __createLogger_impl = createLogger;
411
+ const __createLogger_wrapped = instrumentFunction({
412
+ fn: __createLogger_impl,
413
+ functionName: "createLogger",
414
+ getCore: () => {
415
+ try {
416
+ return getCore(getDefaultClient());
417
+ } catch {
418
+ return;
419
+ }
420
+ }
421
+ });
422
+
423
+ //#endregion
424
+ //#region src/utils/bufferToHex/bufferToHex.ts
425
+ /**
426
+ * Converts an ArrayBuffer or Uint8Array to a hex-encoded string
427
+ * @not-instrumented
428
+ */
429
+ const bufferToHex = (buffer) => [...buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer)].map((x) => x.toString(16).padStart(2, "0")).join("");
430
+
431
+ //#endregion
432
+ //#region src/utils/compressRawPublicKey/compressRawPublicKey.ts
433
+ /**
434
+ * Accepts a public key array buffer, and returns a buffer with the compressed version of the public key
435
+ * @not-instrumented
436
+ */
437
+ const compressRawPublicKey = (rawPublicKey) => {
438
+ const rawPublicKeyBytes = new Uint8Array(rawPublicKey);
439
+ const len = rawPublicKeyBytes.byteLength;
440
+ const compressedBytes = rawPublicKeyBytes.slice(0, 1 + len >>> 1);
441
+ compressedBytes[0] = 2 | rawPublicKeyBytes[len - 1] & 1;
442
+ return compressedBytes.buffer;
443
+ };
444
+
445
+ //#endregion
446
+ //#region src/services/keychain/createIndexedDBKeychainService/KeyNotFoundError.ts
447
+ var KeyNotFoundError = class extends BaseError {
448
+ constructor(keyName) {
449
+ super({
450
+ cause: null,
451
+ code: "key_not_found",
452
+ docsUrl: null,
453
+ name: "KeyNotFoundError",
454
+ shortMessage: `Key "${keyName}" not found in keychain`
455
+ });
456
+ }
457
+ };
458
+
459
+ //#endregion
460
+ //#region src/services/keychain/createIndexedDBKeychainService/utils/constants.ts
461
+ const STORE_NAME = "keys";
462
+
463
+ //#endregion
464
+ //#region src/services/keychain/createIndexedDBKeychainService/utils/deleteIndexedDBItem.ts
465
+ /** @not-instrumented */
466
+ const deleteIndexedDBItem = (db, keyName) => new Promise((resolve, reject) => {
467
+ const request = db.transaction(STORE_NAME, "readwrite").objectStore(STORE_NAME).delete(keyName);
468
+ request.onsuccess = () => resolve();
469
+ request.onerror = () => reject(request.error);
470
+ });
471
+
472
+ //#endregion
473
+ //#region src/services/keychain/createIndexedDBKeychainService/utils/getIndexedDBItem.ts
474
+ /** @not-instrumented */
475
+ const getIndexedDBItem = (db, keyName) => new Promise((resolve, reject) => {
476
+ const request = db.transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(keyName);
477
+ request.onsuccess = () => resolve(request.result);
478
+ request.onerror = () => reject(request.error);
479
+ });
480
+
481
+ //#endregion
482
+ //#region src/services/keychain/createIndexedDBKeychainService/utils/setIndexedDBItem.ts
483
+ /** @not-instrumented */
484
+ const setIndexedDBItem = (db, entry) => new Promise((resolve, reject) => {
485
+ const request = db.transaction(STORE_NAME, "readwrite").objectStore(STORE_NAME).put(entry);
486
+ request.onsuccess = () => resolve();
487
+ request.onerror = () => reject(request.error);
488
+ });
489
+
490
+ //#endregion
491
+ //#region src/services/keychain/createIndexedDBKeychainService/utils/openDatabase.ts
492
+ /** @not-instrumented */
493
+ const openDatabase = (dbName) => new Promise((resolve, reject) => {
494
+ const request = indexedDB.open(dbName, 1);
495
+ request.onupgradeneeded = () => {
496
+ const db = request.result;
497
+ if (!db.objectStoreNames.contains(STORE_NAME)) db.createObjectStore(STORE_NAME, { keyPath: "keyName" });
498
+ };
499
+ request.onsuccess = () => resolve(request.result);
500
+ request.onerror = () => reject(request.error);
501
+ });
502
+
503
+ //#endregion
504
+ //#region src/services/keychain/createIndexedDBKeychainService/utils/withDatabase/withDatabase.ts
505
+ /**
506
+ * Scopes a database connection to the lifetime of a callback.
507
+ * Opens a connection, passes it to the operation, and guarantees
508
+ * the connection is closed when the operation completes or throws.
509
+ * @not-instrumented
510
+ */
511
+ const withDatabase = async ({ dbName, operation }) => {
512
+ const db = await openDatabase(dbName);
513
+ try {
514
+ return await operation(db);
515
+ } finally {
516
+ db.close();
517
+ }
518
+ };
519
+
520
+ //#endregion
521
+ //#region src/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.ts
522
+ const DEFAULT_DB_NAME = "dynamic_keychain";
523
+ /** @instrumented */
524
+ const createIndexedDBKeychainService = (params) => {
525
+ const dbName = params?.dbName ?? DEFAULT_DB_NAME;
526
+ const generateKey = async (keyName) => {
527
+ const keyPair = await crypto.subtle.generateKey({
528
+ name: "ECDSA",
529
+ namedCurve: "P-256"
530
+ }, false, ["sign"]);
531
+ const publicKeyHex = bufferToHex(compressRawPublicKey(await crypto.subtle.exportKey("raw", keyPair.publicKey)));
532
+ await withDatabase({
533
+ dbName,
534
+ operation: (db) => setIndexedDBItem(db, {
535
+ keyName,
536
+ privateKey: keyPair.privateKey,
537
+ publicKeyHex
538
+ })
539
+ });
540
+ return publicKeyHex;
541
+ };
542
+ const importKey = async (keyName, jwk) => {
543
+ const privateKey = await crypto.subtle.importKey("jwk", jwk, {
544
+ name: "ECDSA",
545
+ namedCurve: "P-256"
546
+ }, false, ["sign"]);
547
+ const publicJwk = {
548
+ crv: jwk.crv,
549
+ kty: jwk.kty,
550
+ x: jwk.x,
551
+ y: jwk.y
552
+ };
553
+ const publicCryptoKey = await crypto.subtle.importKey("jwk", publicJwk, {
554
+ name: "ECDSA",
555
+ namedCurve: "P-256"
556
+ }, true, ["verify"]);
557
+ const publicKeyHex = bufferToHex(compressRawPublicKey(await crypto.subtle.exportKey("raw", publicCryptoKey)));
558
+ await withDatabase({
559
+ dbName,
560
+ operation: (db) => setIndexedDBItem(db, {
561
+ keyName,
562
+ privateKey,
563
+ publicKeyHex
564
+ })
565
+ });
566
+ return publicKeyHex;
567
+ };
568
+ const getPublicKey = async (keyName) => {
569
+ return (await withDatabase({
570
+ dbName,
571
+ operation: (db) => getIndexedDBItem(db, keyName)
572
+ }))?.publicKeyHex ?? null;
573
+ };
574
+ const sign = async (keyName, message) => {
575
+ const entry = await withDatabase({
576
+ dbName,
577
+ operation: (db) => getIndexedDBItem(db, keyName)
578
+ });
579
+ if (!entry) throw new KeyNotFoundError(keyName);
580
+ const data = new TextEncoder().encode(message);
581
+ return bufferToHex(await crypto.subtle.sign({
582
+ hash: { name: "SHA-256" },
583
+ name: "ECDSA"
584
+ }, entry.privateKey, data));
585
+ };
586
+ const hasKey = async (keyName) => {
587
+ return await withDatabase({
588
+ dbName,
589
+ operation: (db) => getIndexedDBItem(db, keyName)
590
+ }) !== void 0;
591
+ };
592
+ const removeKey = async (keyName) => {
593
+ await withDatabase({
594
+ dbName,
595
+ operation: (db) => deleteIndexedDBItem(db, keyName)
596
+ });
597
+ };
598
+ return {
599
+ generateKey,
600
+ getPublicKey,
601
+ hasKey,
602
+ importKey,
603
+ removeKey,
604
+ sign
605
+ };
606
+ };
607
+ const __createIndexedDBKeychainService_impl = createIndexedDBKeychainService;
608
+ const __createIndexedDBKeychainService_wrapped = instrumentFunction({
609
+ fn: __createIndexedDBKeychainService_impl,
610
+ functionName: "createIndexedDBKeychainService",
611
+ getCore: () => {
612
+ try {
613
+ return getCore(getDefaultClient());
614
+ } catch {
615
+ return;
616
+ }
617
+ }
618
+ });
619
+
620
+ //#endregion
621
+ //#region src/errors/InvalidRealtimePublishError.ts
622
+ var InvalidRealtimePublishError = class extends BaseError {
623
+ constructor({ channel }) {
624
+ super({
625
+ cause: null,
626
+ code: "invalid_realtime_publish",
627
+ docsUrl: null,
628
+ metaMessages: [`channel: ${channel}`],
629
+ name: "InvalidRealtimePublishError",
630
+ shortMessage: "Tried to publish data that does not match the channel schema"
631
+ });
632
+ }
633
+ };
634
+
635
+ //#endregion
636
+ //#region src/errors/RealtimeNotConnectedError.ts
637
+ var RealtimeNotConnectedError = class extends BaseError {
638
+ constructor() {
639
+ super({
640
+ cause: null,
641
+ code: "realtime_not_connected_error",
642
+ docsUrl: null,
643
+ name: "RealtimeNotConnectedError",
644
+ shortMessage: "Realtime service is not connected. Call connect() before subscribing or publishing."
645
+ });
646
+ }
647
+ };
648
+
649
+ //#endregion
650
+ //#region src/services/realtime/createRealtimeService/createRealtimeService.ts
651
+ const ABLY_STATE_TO_REALTIME_STATE = {
652
+ closed: "closed",
653
+ closing: "closing",
654
+ connected: "connected",
655
+ connecting: "connecting",
656
+ disconnected: "disconnected",
657
+ failed: "failed",
658
+ initialized: "idle",
659
+ suspended: "suspended"
660
+ };
661
+ const mapAblyState = (ablyState) => ABLY_STATE_TO_REALTIME_STATE[ablyState] ?? "idle";
662
+ /**
663
+ * Creates a realtime pub/sub service backed by Ably.
664
+ *
665
+ * The service starts idle. Call `connect({ client })` to establish
666
+ * a connection, passing the DynamicClient explicitly.
667
+ *
668
+ * SSR environments receive a no-op implementation.
669
+ * @instrumented
670
+ */
671
+ const createRealtimeService = () => {
672
+ if (isServerSideRendering()) return {
673
+ connect: () => Promise.resolve(),
674
+ disconnect: () => {},
675
+ getConnectionState: () => "idle",
676
+ off: () => {},
677
+ on: () => {},
678
+ publish: () => Promise.resolve(),
679
+ subscribe: () => Promise.resolve(),
680
+ unsubscribe: () => {}
681
+ };
682
+ const eventEmitter = new EventEmitter();
683
+ const channels = /* @__PURE__ */ new Map();
684
+ const handlerMap = /* @__PURE__ */ new WeakMap();
685
+ let ablyClient;
686
+ let connectionState = "idle";
687
+ let isConnecting = false;
688
+ const setConnectionState = (state) => {
689
+ connectionState = state;
690
+ eventEmitter.emit("connectionStateChange", state);
691
+ };
692
+ const getOrCreateChannel = (channelName) => {
693
+ const existing = channels.get(channelName);
694
+ if (existing) return existing;
695
+ if (!ablyClient) throw new RealtimeNotConnectedError();
696
+ const channel = ablyClient.channels.get(channelName);
697
+ channels.set(channelName, channel);
698
+ return channel;
699
+ };
700
+ const connect = async ({ client, headers }) => {
701
+ if (isConnecting) return;
702
+ isConnecting = true;
703
+ try {
704
+ const core = getCore(client);
705
+ if (ablyClient) {
706
+ ablyClient.close();
707
+ channels.clear();
708
+ }
709
+ const { BaseRealtime: AblyBaseRealtime, FetchRequest, WebSocketTransport } = await import("ably/modular");
710
+ ablyClient = new AblyBaseRealtime({
711
+ authCallback: (_tokenParams, callback) => {
712
+ __createApiClient_wrapped({ headers }, client).getRealtimeAuthToken({ environmentId: core.environmentId }).then((response) => {
713
+ callback(null, response.token);
714
+ }).catch((err) => {
715
+ callback(err instanceof Error ? err.message : String(err), null);
716
+ });
717
+ },
718
+ autoConnect: false,
719
+ plugins: {
720
+ FetchRequest,
721
+ WebSocketTransport
722
+ }
723
+ });
724
+ ablyClient.connection.on((stateChange) => {
725
+ setConnectionState(mapAblyState(stateChange.current));
726
+ });
727
+ ablyClient.connect();
728
+ } finally {
729
+ isConnecting = false;
730
+ }
731
+ };
732
+ const disconnect = () => {
733
+ if (!ablyClient) return;
734
+ for (const channel of channels.values()) channel.detach().catch(() => {});
735
+ channels.clear();
736
+ ablyClient.close();
737
+ ablyClient = void 0;
738
+ };
739
+ const subscribe = async ({ channelSchema, callback }) => {
740
+ const channel = getOrCreateChannel(channelSchema.channel);
741
+ const handler = (message) => {
742
+ const parsed = channelSchema.schema.safeParse(message.data);
743
+ if (!parsed.success) return;
744
+ callback({ data: parsed.data });
745
+ };
746
+ handlerMap.set(callback, handler);
747
+ await channel.subscribe(handler);
748
+ };
749
+ const unsubscribe = ({ channelSchema, callback }) => {
750
+ const channel = channels.get(channelSchema.channel);
751
+ if (!channel) return;
752
+ const handler = handlerMap.get(callback);
753
+ if (handler) {
754
+ channel.unsubscribe(handler);
755
+ handlerMap.delete(callback);
756
+ }
757
+ };
758
+ const publish = async ({ channelSchema, data }) => {
759
+ const parsed = channelSchema.schema.safeParse(data);
760
+ if (!parsed.success) throw new InvalidRealtimePublishError({ channel: channelSchema.channel });
761
+ await getOrCreateChannel(channelSchema.channel).publish("message", parsed.data);
762
+ };
763
+ return {
764
+ connect,
765
+ disconnect,
766
+ getConnectionState: () => connectionState,
767
+ off: (event, callback) => {
768
+ eventEmitter.off(event, callback);
769
+ },
770
+ on: (event, callback) => {
771
+ eventEmitter.on(event, callback);
772
+ },
773
+ publish,
774
+ subscribe,
775
+ unsubscribe
776
+ };
777
+ };
778
+ const __createRealtimeService_impl = createRealtimeService;
779
+ const __createRealtimeService_wrapped = instrumentFunction({
780
+ fn: __createRealtimeService_impl,
781
+ functionName: "createRealtimeService",
782
+ getCore: () => {
783
+ try {
784
+ return getCore(getDefaultClient());
785
+ } catch {
786
+ return;
787
+ }
788
+ }
789
+ });
790
+
791
+ //#endregion
792
+ //#region src/errors/NoNetworkProvidersError.ts
793
+ var NoNetworkProvidersError = class extends BaseError {
794
+ constructor() {
795
+ super({
796
+ cause: null,
797
+ code: "no_network_providers",
798
+ docsUrl: null,
799
+ name: "NoNetworkProvidersError",
800
+ shortMessage: "No networks were registered in the client"
801
+ });
802
+ }
803
+ };
804
+
805
+ //#endregion
806
+ //#region src/errors/WalletAlreadyLinkedToAnotherUserError.ts
807
+ var WalletAlreadyLinkedToAnotherUserError = class extends BaseError {
808
+ constructor({ cause }) {
809
+ super({
810
+ cause,
811
+ code: "wallet_already_linked_to_another_user_error",
812
+ docsUrl: null,
813
+ name: "WalletAlreadyLinkedToAnotherUserError",
814
+ shortMessage: "This wallet is already linked to another user"
815
+ });
816
+ }
817
+ };
818
+
819
+ //#endregion
820
+ //#region src/modules/captcha/isCaptchaRequired/isCaptchaRequired.ts
821
+ /** @not-instrumented */
822
+ const isCaptchaRequired = (client = getDefaultClient()) => {
823
+ const projectSettings = client.projectSettings;
824
+ assertDefined(projectSettings, "Project settings are not available");
825
+ return projectSettings.security.hCaptcha?.enabled ?? false;
826
+ };
827
+
828
+ //#endregion
829
+ //#region src/modules/captcha/consumeCaptchaToken/consumeCaptchaToken.ts
830
+ /**
831
+ * Retrieves the current captcha token from the client state and sets it to null.
832
+ * @instrumented
833
+ */
834
+ const consumeCaptchaToken = (client) => {
835
+ const core = getCore(client);
836
+ const captchaToken = core.state.get().captchaToken;
837
+ if (isCaptchaRequired(client)) assertDefined(captchaToken, "Captcha token is required");
838
+ core.state.set({ captchaToken: null });
839
+ return captchaToken ?? void 0;
840
+ };
841
+ const __consumeCaptchaToken_impl = consumeCaptchaToken;
842
+ const __consumeCaptchaToken_wrapped = instrumentFunction({
843
+ fn: __consumeCaptchaToken_impl,
844
+ functionName: "consumeCaptchaToken",
845
+ getCore: () => {
846
+ try {
847
+ return getCore(getDefaultClient());
848
+ } catch {
849
+ return;
850
+ }
851
+ }
852
+ });
853
+
854
+ //#endregion
855
+ //#region src/modules/captcha/setCaptchaToken/setCaptchaToken.ts
856
+ /**
857
+ * Sets the given captcha token in the client state.
858
+ *
859
+ * @param params.captchaToken - The captcha token to set.
860
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
861
+ * @instrumented
862
+ */
863
+ const setCaptchaToken = ({ captchaToken }, client = getDefaultClient()) => {
864
+ getCore(client).state.set({ captchaToken });
865
+ };
866
+ const __setCaptchaToken_impl = setCaptchaToken;
867
+ const __setCaptchaToken_wrapped = instrumentFunction({
868
+ fn: __setCaptchaToken_impl,
869
+ functionName: "setCaptchaToken",
870
+ getCore: () => {
871
+ try {
872
+ return getCore(getDefaultClient());
873
+ } catch {
874
+ return;
875
+ }
876
+ }
877
+ });
878
+
879
+ //#endregion
880
+ //#region src/services/realtime/createRealtimeChannelSchema/createRealtimeChannelSchema.ts
881
+ /**
882
+ * Defines a typed schema for a realtime channel — analogous to `createStorageKeySchema`
883
+ * for storage. Pairs a channel name with a Zod schema that validates the shape of
884
+ * messages sent and received on that channel. Pass the result to the realtime service's
885
+ * `subscribe` / `unsubscribe` / `publish` methods to get end-to-end type safety.
886
+ * @instrumented
887
+ */
888
+ const createRealtimeChannelSchema = (params) => params;
889
+ const __createRealtimeChannelSchema_impl = createRealtimeChannelSchema;
890
+ const __createRealtimeChannelSchema_wrapped = instrumentFunction({
891
+ fn: __createRealtimeChannelSchema_impl,
892
+ functionName: "createRealtimeChannelSchema",
893
+ getCore: () => {
894
+ try {
895
+ return getCore(getDefaultClient());
896
+ } catch {
897
+ return;
898
+ }
899
+ }
900
+ });
901
+
902
+ //#endregion
903
+ //#region src/modules/extension/hasExtension/hasExtension.ts
904
+ /**
905
+ * Checks if a specific extension has been applied to the Dynamic client.
906
+ *
907
+ * Extensions add optional features to the Dynamic SDK,
908
+ * such as EVM, Solana, or other chain support.
909
+ *
910
+ * @param params.extensionKey - The unique key identifying the extension to check for.
911
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
912
+ * @returns True if the extension is applied, false otherwise.
913
+ * @not-instrumented
914
+ */
915
+ const hasExtension = ({ extensionKey }, client = getDefaultClient()) => {
916
+ return getCore(client).extensions.has(extensionKey);
917
+ };
918
+
919
+ //#endregion
920
+ //#region src/modules/auth/createVisit/createVisit.ts
921
+ /** @instrumented */
922
+ const createVisit = async ({ walletAccount, authMode = AuthModeEnum.Only }, client) => {
923
+ const core = getCore(client);
924
+ const apiClient = __createApiClient_wrapped({}, client);
925
+ const walletProvider = __getWalletProviderFromWalletAccount_wrapped({ walletAccount }, client);
926
+ try {
927
+ const walletName = normalizeWalletNameWithChain({
928
+ chain: walletProvider.chain,
929
+ displayName: walletProvider.metadata.displayName
930
+ });
931
+ const connectRequest = {
932
+ address: walletAccount.address,
933
+ authMode,
934
+ chain: walletProvider.chain,
935
+ provider: walletProvider.walletProviderType,
936
+ walletName
937
+ };
938
+ await apiClient.createVisit({
939
+ connectRequest,
940
+ environmentId: core.environmentId
941
+ });
942
+ } catch (error) {
943
+ core.logger.error("Error creating visit", { error });
944
+ }
945
+ };
946
+ const __createVisit_impl = createVisit;
947
+ const __createVisit_wrapped = instrumentFunction({
948
+ fn: __createVisit_impl,
949
+ functionName: "createVisit",
950
+ getCore: () => {
951
+ try {
952
+ return getCore(getDefaultClient());
953
+ } catch {
954
+ return;
955
+ }
956
+ }
957
+ });
958
+
959
+ //#endregion
960
+ //#region src/modules/wallets/unverifiedWalletAccounts/setUnverifiedWalletAccounts/setUnverifiedWalletAccounts.ts
961
+ /**
962
+ * Updates the unverified wallet account in the client state.
963
+ * This will add new wallet accounts and override those with matching ids,
964
+ * but will leave other preexisting wallet accounts unchanged.
965
+ * @instrumented
966
+ */
967
+ const setUnverifiedWalletAccounts = ({ unverifiedWalletAccountsToUpdate }, client) => {
968
+ if (unverifiedWalletAccountsToUpdate.length === 0) return;
969
+ const core = getCore(client);
970
+ const unverifiedWalletAccountsToUpdateIds = unverifiedWalletAccountsToUpdate.map(({ id }) => id);
971
+ const filteredUnverifiedWalletAccounts = core.state.get().unverifiedWalletAccounts.filter((unverifiedWalletAccount) => !unverifiedWalletAccountsToUpdateIds.includes(unverifiedWalletAccount.id));
972
+ core.state.set({ unverifiedWalletAccounts: [...filteredUnverifiedWalletAccounts, ...unverifiedWalletAccountsToUpdate] });
973
+ };
974
+ const __setUnverifiedWalletAccounts_impl = setUnverifiedWalletAccounts;
975
+ const __setUnverifiedWalletAccounts_wrapped = instrumentFunction({
976
+ fn: __setUnverifiedWalletAccounts_impl,
977
+ functionName: "setUnverifiedWalletAccounts",
978
+ getCore: () => {
979
+ try {
980
+ return getCore(getDefaultClient());
981
+ } catch {
982
+ return;
983
+ }
984
+ }
985
+ });
986
+
987
+ //#endregion
988
+ //#region src/modules/wallets/utils/formatSignInMessage/formatSignInMessage.ts
989
+ /**
990
+ * Formats a sign in message to prove ownership of an address.
991
+ * @not-instrumented
992
+ */
993
+ const formatSignInMessage = async ({ domain, blockchainName, address, uri, chainId, nonce, issuedAt, requestId, statement, resources }) => {
994
+ const prefix = [`${domain} wants you to sign in with your ${blockchainName} account:`, address].join("\n");
995
+ const prefixWithStatementGap = statement ? "\n\n" : "\n";
996
+ const prefixWithStatement = `${[prefix, statement].join(prefixWithStatementGap)}\n`;
997
+ const suffixFields = [];
998
+ suffixFields.push(`URI: ${uri}`);
999
+ suffixFields.push("Version: 1");
1000
+ if (chainId) suffixFields.push(`Chain ID: ${chainId}`);
1001
+ suffixFields.push(`Nonce: ${nonce}`);
1002
+ if (issuedAt) suffixFields.push(`Issued At: ${issuedAt}`);
1003
+ if (requestId) suffixFields.push(`Request ID: ${requestId}`);
1004
+ if (resources?.length) suffixFields.push(`Resources:${resources.map((resource) => "\n- " + resource).join()}`);
1005
+ return [prefixWithStatement, suffixFields.join("\n")].join("\n");
1006
+ };
1007
+
1008
+ //#endregion
1009
+ //#region src/modules/wallets/utils/getSignInMessage/createSignInMessageStatement/createSignInMessageStatement.ts
1010
+ /** @instrumented */
1011
+ const createSignInMessageStatement = (client) => {
1012
+ const appName = getCore(client).metadata?.name ?? client.projectSettings?.general.displayName;
1013
+ return `Welcome to ${appName}. Signing is the only way we can truly know that you are the owner of the wallet you are connecting. Signing is a safe, gas-less transaction that does not in any way give ${appName} permission to perform any transactions with your wallet.`;
1014
+ };
1015
+ const __createSignInMessageStatement_impl = createSignInMessageStatement;
1016
+ const __createSignInMessageStatement_wrapped = instrumentFunction({
1017
+ fn: __createSignInMessageStatement_impl,
1018
+ functionName: "createSignInMessageStatement",
1019
+ getCore: () => {
1020
+ try {
1021
+ return getCore(getDefaultClient());
1022
+ } catch {
1023
+ return;
1024
+ }
1025
+ }
1026
+ });
1027
+
1028
+ //#endregion
1029
+ //#region src/modules/wallets/unverifiedWalletAccounts/removeUnverifiedWalletAccount/removeUnverifiedWalletAccount.ts
1030
+ /**
1031
+ * Removes an unverified wallet account from the client's state.
1032
+ * @instrumented
1033
+ */
1034
+ const removeUnverifiedWalletAccount = ({ unverifiedWalletAccount }, client) => {
1035
+ const core = getCore(client);
1036
+ const previousState = core.state.get();
1037
+ const { unverifiedWalletAccounts } = core.state.get();
1038
+ const filteredUnverifiedWalletAccounts = unverifiedWalletAccounts.filter((account) => account.id !== unverifiedWalletAccount.id);
1039
+ core.state.set({ unverifiedWalletAccounts: filteredUnverifiedWalletAccounts });
1040
+ /**
1041
+ * We check before raising because the wallet account we are removing might still
1042
+ * be present in wallet accounts due to having been moved to verified credentials.
1043
+ */
1044
+ checkAndRaiseWalletAccountsChangedEvent({ previousState }, client);
1045
+ };
1046
+ const __removeUnverifiedWalletAccount_impl = removeUnverifiedWalletAccount;
1047
+ const __removeUnverifiedWalletAccount_wrapped = instrumentFunction({
1048
+ fn: __removeUnverifiedWalletAccount_impl,
1049
+ functionName: "removeUnverifiedWalletAccount",
1050
+ getCore: () => {
1051
+ try {
1052
+ return getCore(getDefaultClient());
1053
+ } catch {
1054
+ return;
1055
+ }
1056
+ }
1057
+ });
1058
+
1059
+ //#endregion
1060
+ //#region src/utils/isError/isError.ts
1061
+ /**
1062
+ * Check if the given value is an Error object
1063
+ * @not-instrumented
1064
+ */
1065
+ const isError = (error) => error instanceof Error;
1066
+
1067
+ //#endregion
1068
+ //#region src/utils/isErrorWithCode/isErrorWithCode.ts
1069
+ /**
1070
+ * Check if the given value is an Error object with a specific code
1071
+ * @not-instrumented
1072
+ */
1073
+ const isErrorWithCode = (error, code) => {
1074
+ if (!isError(error)) return false;
1075
+ return "code" in error && error.code === code;
1076
+ };
1077
+
1078
+ //#endregion
1079
+ //#region src/modules/wallets/verifyMessageSignatureOwnership/verifyMessageSignatureOwnership.ts
1080
+ /**
1081
+ * Verifies a signed message by calling either the verifyLink, verifyTransfer or verify API function,
1082
+ * depending on whether the user is signing in, linking or transferring a wallet.
1083
+ *
1084
+ * Does NOT call updateAuthFromVerifyResponse, it should be called from the return of this function.
1085
+ * @instrumented
1086
+ */
1087
+ const verifyMessageSignatureOwnership = async ({ messageToSign, walletAddress, addressesWithTypes, signature, chain, isTransfer = false, walletDisplayName, walletProviderType, networkId, requestedScopes }, client) => {
1088
+ const core = getCore(client);
1089
+ const apiClient = __createApiClient_wrapped({}, client);
1090
+ const walletName = normalizeWalletNameWithChain({
1091
+ chain,
1092
+ displayName: walletDisplayName
1093
+ });
1094
+ let verifyApiFunction;
1095
+ if (!client.user) verifyApiFunction = apiClient.walletsSignin.bind(apiClient);
1096
+ else if (isTransfer) verifyApiFunction = apiClient.verifyTransfer.bind(apiClient);
1097
+ else if (client.user && requestedScopes) verifyApiFunction = apiClient.walletsVerify.bind(apiClient);
1098
+ else verifyApiFunction = apiClient.verifyLink.bind(apiClient);
1099
+ try {
1100
+ return await verifyApiFunction({
1101
+ environmentId: core.environmentId,
1102
+ verifyRequest: {
1103
+ additionalWalletAddresses: addressesWithTypes?.map((address) => ({
1104
+ address: address.address,
1105
+ publicKey: address.publicKey,
1106
+ type: address.type
1107
+ })),
1108
+ captchaToken: __consumeCaptchaToken_wrapped(client),
1109
+ chain,
1110
+ messageToSign,
1111
+ network: networkId,
1112
+ publicWalletAddress: walletAddress,
1113
+ requestedScopes,
1114
+ signedMessage: signature,
1115
+ walletName,
1116
+ walletProvider: walletProviderType
1117
+ }
1118
+ });
1119
+ } catch (error) {
1120
+ core.logger.error("Failed to verify message signature ownership", error);
1121
+ if (isErrorWithCode(error, "reassign_wallet_confirm") || isErrorWithCode(error, "merge_accounts_confirmation")) throw new WalletAlreadyLinkedToAnotherUserError({ cause: error });
1122
+ throw error;
1123
+ }
1124
+ };
1125
+ const __verifyMessageSignatureOwnership_impl = verifyMessageSignatureOwnership;
1126
+ const __verifyMessageSignatureOwnership_wrapped = instrumentFunction({
1127
+ fn: __verifyMessageSignatureOwnership_impl,
1128
+ functionName: "verifyMessageSignatureOwnership",
1129
+ getCore: () => {
1130
+ try {
1131
+ return getCore(getDefaultClient());
1132
+ } catch {
1133
+ return;
1134
+ }
1135
+ }
1136
+ });
1137
+
1138
+ //#endregion
1139
+ //#region src/modules/wallets/walletProvider/walletProviderKeyMap/updateWalletProviderKeysForVerifiedCredentials/updateWalletProviderKeysForVerifiedCredentials.ts
1140
+ /** @instrumented */
1141
+ const updateWalletProviderKeysForVerifiedCredentials = ({ keysToUpdate }, client) => {
1142
+ const core = getCore(client);
1143
+ core.state.set({ walletProviderKeyMap: {
1144
+ ...core.state.get().walletProviderKeyMap,
1145
+ ...keysToUpdate
1146
+ } });
1147
+ };
1148
+ const __updateWalletProviderKeysForVerifiedCredentials_impl = updateWalletProviderKeysForVerifiedCredentials;
1149
+ const __updateWalletProviderKeysForVerifiedCredentials_wrapped = instrumentFunction({
1150
+ fn: __updateWalletProviderKeysForVerifiedCredentials_impl,
1151
+ functionName: "updateWalletProviderKeysForVerifiedCredentials",
1152
+ getCore: () => {
1153
+ try {
1154
+ return getCore(getDefaultClient());
1155
+ } catch {
1156
+ return;
1157
+ }
1158
+ }
1159
+ });
1160
+
1161
+ //#endregion
1162
+ //#region src/modules/wallets/networks/getSdkChainFromApiChainName/getSdkChainFromApiChainName.ts
1163
+ /**
1164
+ * Maps the chain name from the API to the SDK chain name
1165
+ * @not-instrumented
1166
+ */
1167
+ const getSdkChainFromApiChainName = (chainName) => {
1168
+ return Object.keys(CHAINS_INFO_MAP).find((chain) => CHAINS_INFO_MAP[chain].apiChainName === chainName) || null;
1169
+ };
1170
+
1171
+ //#endregion
1172
+ //#region src/modules/wallets/networks/getNetworksData/getNetworksData.ts
1173
+ /**
1174
+ * Retrieves all available network configurations from project settings.
1175
+ *
1176
+ * This function returns detailed configuration data for all networks enabled
1177
+ * in your Dynamic project, including RPC URLs, native currencies, and metadata.
1178
+ *
1179
+ * If a `transformers.networkData` callback was provided in the client configuration,
1180
+ * it will be applied to each network before returning the data. This allows you to
1181
+ * customize network properties (such as RPC URLs) in a centralized way.
1182
+ *
1183
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1184
+ * @returns An array of network configuration data for all enabled networks.
1185
+ * @instrumented
1186
+ */
1187
+ const getNetworksData = (client = getDefaultClient()) => {
1188
+ const { state, transformers } = getCore(client);
1189
+ const networkDataTransformer = transformers?.networkData ?? ((networkData) => networkData);
1190
+ const { projectSettings } = state.get();
1191
+ assertDefined(projectSettings, "projectSettings not found");
1192
+ const networks = projectSettings.networks;
1193
+ if (!networks) return [];
1194
+ return networks.map((network) => {
1195
+ if (!network.chainName) return [];
1196
+ const chain = getSdkChainFromApiChainName(network.chainName);
1197
+ if (!network?.networks?.length || !chain) return [];
1198
+ return network.networks.map((networkConfiguration) => {
1199
+ return networkDataTransformer({
1200
+ blockExplorerUrls: networkConfiguration.blockExplorerUrls,
1201
+ chain,
1202
+ cluster: networkConfiguration.cluster,
1203
+ displayName: networkConfiguration.vanityName || networkConfiguration.name,
1204
+ genesisHash: networkConfiguration.genesisHash,
1205
+ iconUrl: networkConfiguration.iconUrls[0],
1206
+ name: networkConfiguration.name,
1207
+ nativeCurrency: {
1208
+ decimals: networkConfiguration.nativeCurrency.decimals,
1209
+ iconUrl: networkConfiguration.nativeCurrency.iconUrl,
1210
+ name: networkConfiguration.nativeCurrency.name,
1211
+ symbol: networkConfiguration.nativeCurrency.symbol
1212
+ },
1213
+ networkId: networkConfiguration.networkId,
1214
+ rpcUrls: { http: [...networkConfiguration.privateCustomerRpcUrls ?? [], ...networkConfiguration.rpcUrls ?? []] },
1215
+ testnet: networkConfiguration.isTestnet ?? false
1216
+ });
1217
+ });
1218
+ }).flat();
1219
+ };
1220
+ const __getNetworksData_impl = getNetworksData;
1221
+ const __getNetworksData_wrapped = instrumentFunction({
1222
+ fn: __getNetworksData_impl,
1223
+ functionName: "getNetworksData",
1224
+ getCore: () => {
1225
+ try {
1226
+ return getCore(getDefaultClient());
1227
+ } catch {
1228
+ return;
1229
+ }
1230
+ }
1231
+ });
1232
+
1233
+ //#endregion
1234
+ //#region src/modules/wallets/networks/networkProviderBuilderRegistry/createNetworkProviderBuilderRegistry/createNetworkProviderBuilderRegistry.ts
1235
+ /** @not-instrumented */
1236
+ const createNetworkProviderBuilderRegistry = () => {
1237
+ const registry = /* @__PURE__ */ new Map();
1238
+ return {
1239
+ get: () => registry,
1240
+ register: (networkProviderBuilder) => {
1241
+ registry.set(networkProviderBuilder.chain, networkProviderBuilder);
1242
+ }
1243
+ };
1244
+ };
1245
+
1246
+ //#endregion
1247
+ //#region src/modules/wallets/networks/networkProviderBuilderRegistry/getNetworkProviderBuilderRegistry/getNetworkProviderBuilderRegistry.ts
1248
+ const getNetworkProviderBuilderRegistry = __createRuntimeServiceAccessKey_wrapped("networkProviderBuilderRegistry", createNetworkProviderBuilderRegistry);
1249
+
1250
+ //#endregion
1251
+ //#region src/modules/wallets/networks/getNetworkProviders/getNetworkProviders.ts
1252
+ /**
1253
+ * Retrieves all registered network providers for enabled chains.
1254
+ * @instrumented
1255
+ */
1256
+ const getNetworkProviders = (client) => {
1257
+ const networkProviderBuilderRegistry = getNetworkProviderBuilderRegistry(client);
1258
+ const registeredNetworkProviderBuilders = Array.from(networkProviderBuilderRegistry.get().values());
1259
+ const networksData = __getNetworksData_wrapped(client);
1260
+ return registeredNetworkProviderBuilders.map(({ builder, chain }) => {
1261
+ return networksData.filter((networkData) => networkData.chain === chain).map(builder);
1262
+ }).flat();
1263
+ };
1264
+ const __getNetworkProviders_impl = getNetworkProviders;
1265
+ const __getNetworkProviders_wrapped = instrumentFunction({
1266
+ fn: __getNetworkProviders_impl,
1267
+ functionName: "getNetworkProviders",
1268
+ getCore: () => {
1269
+ try {
1270
+ return getCore(getDefaultClient());
1271
+ } catch {
1272
+ return;
1273
+ }
1274
+ }
1275
+ });
1276
+
1277
+ //#endregion
1278
+ //#region src/modules/wallets/networks/getNetworkProviderFromNetworkId/getNetworkProviderFromNetworkId.ts
1279
+ /** @instrumented */
1280
+ const getNetworkProviderFromNetworkId = ({ networkId, chain }, client) => {
1281
+ const networkProviders = __getNetworkProviders_wrapped(client);
1282
+ if (networkProviders.length === 0) throw new NoNetworkProvidersError();
1283
+ const networkProvider = networkProviders.find((networkProvider$1) => networkProvider$1.networkId === networkId && networkProvider$1.chain === chain);
1284
+ assertDefined(networkProvider, `No network provider found for chain ${chain} with network id ${networkId}`);
1285
+ return networkProvider;
1286
+ };
1287
+ const __getNetworkProviderFromNetworkId_impl = getNetworkProviderFromNetworkId;
1288
+ const __getNetworkProviderFromNetworkId_wrapped = instrumentFunction({
1289
+ fn: __getNetworkProviderFromNetworkId_impl,
1290
+ functionName: "getNetworkProviderFromNetworkId",
1291
+ getCore: () => {
1292
+ try {
1293
+ return getCore(getDefaultClient());
1294
+ } catch {
1295
+ return;
1296
+ }
1297
+ }
1298
+ });
1299
+
1300
+ //#endregion
1301
+ export { REFRESH_USER_STATE_FROM_VALID_TOKEN_TRACKER_KEY as A, CrossTabBroadcastMessageSchema as C, GENERATE_SESSION_KEYS_TRACKER_KEY as D, FETCH_PROJECT_SETTINGS_TRACKER_KEY as E, __createStorage_wrapped as F, InvalidStorageSet as I, __createLocalStorageAdapter_wrapped as L, getBuffer as M, __generateSessionKeys_wrapped as N, INITIALIZE_STORAGE_SYNC_TRACKER_KEY as O, __createStorageKeySchema_wrapped as P, __subscribeWithSelector_wrapped as R, __createCrossTabBroadcast_wrapped as S, __createDeferredPromise_wrapped as T, WalletAlreadyLinkedToAnotherUserError as _, __updateWalletProviderKeysForVerifiedCredentials_wrapped as a, __createIndexedDBKeychainService_wrapped as b, __createSignInMessageStatement_wrapped as c, __createVisit_wrapped as d, hasExtension as f, isCaptchaRequired as g, __consumeCaptchaToken_wrapped as h, __getNetworksData_wrapped as i, isServerSideRendering as j, REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY as k, formatSignInMessage as l, __setCaptchaToken_wrapped as m, __getNetworkProviders_wrapped as n, __verifyMessageSignatureOwnership_wrapped as o, __createRealtimeChannelSchema_wrapped as p, getNetworkProviderBuilderRegistry as r, __removeUnverifiedWalletAccount_wrapped as s, __getNetworkProviderFromNetworkId_wrapped as t, __setUnverifiedWalletAccounts_wrapped as u, NoNetworkProvidersError as v, CannotTrackError as w, __createLogger_wrapped as x, __createRealtimeService_wrapped as y, isEqualShallow as z };
1302
+ //# sourceMappingURL=getNetworkProviderFromNetworkId-DWOYr3uv.native.esm.js.map