@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.
- package/dist/{updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js → NativeModuleNotLinkedError-Ds_t3AZQ.native.esm.js} +33 -4
- package/dist/NativeModuleNotLinkedError-Ds_t3AZQ.native.esm.js.map +1 -0
- package/dist/client/createDynamicClient/assertClientProps/assertClientProps.d.ts +16 -0
- package/dist/client/createDynamicClient/assertClientProps/assertClientProps.d.ts.map +1 -0
- package/dist/client/createDynamicClient/assertClientProps/index.d.ts +2 -0
- package/dist/client/createDynamicClient/assertClientProps/index.d.ts.map +1 -0
- package/dist/client/createDynamicClient/createDynamicClient.d.ts.map +1 -1
- package/dist/client/types/DynamicClientConfig.d.ts +35 -0
- package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
- package/dist/consumeMfaTokenIfRequiredForAction-CWVbmQ2A.cjs +17 -0
- package/dist/consumeMfaTokenIfRequiredForAction-CWVbmQ2A.cjs.map +1 -0
- package/dist/consumeMfaTokenIfRequiredForAction-C_IvLTH6.esm.js +12 -0
- package/dist/consumeMfaTokenIfRequiredForAction-C_IvLTH6.esm.js.map +1 -0
- package/dist/core.cjs +9 -8
- package/dist/core.cjs.map +1 -1
- package/dist/core.esm.js +6 -5
- package/dist/core.esm.js.map +1 -1
- package/dist/core.native.esm.js +5 -5
- package/dist/errors/WaasLoadFailedError.d.ts +45 -0
- package/dist/errors/WaasLoadFailedError.d.ts.map +1 -0
- package/dist/exports/index.d.ts +1 -0
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/exports/waas.d.ts +10 -0
- package/dist/exports/waas.d.ts.map +1 -1
- package/dist/{getNetworkProviderFromNetworkId-DaVOUpiF.cjs → getNetworkProviderFromNetworkId-5V4Cf8A_.cjs} +48 -13
- package/dist/getNetworkProviderFromNetworkId-5V4Cf8A_.cjs.map +1 -0
- package/dist/{getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js → getNetworkProviderFromNetworkId-DhS1snCk.esm.js} +48 -13
- package/dist/getNetworkProviderFromNetworkId-DhS1snCk.esm.js.map +1 -0
- package/dist/{getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js → getNetworkProviderFromNetworkId-DudGvTmd.native.esm.js} +2 -3
- package/dist/{getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js.map → getNetworkProviderFromNetworkId-DudGvTmd.native.esm.js.map} +1 -1
- package/dist/{getSignedSessionId-3L_aMxVD.cjs → getSignedSessionId-E6FIx5aj.cjs} +2 -17
- package/dist/getSignedSessionId-E6FIx5aj.cjs.map +1 -0
- package/dist/{getSignedSessionId-DlmNVy-g.native.esm.js → getSignedSessionId-ekp3lswQ.esm.js} +3 -12
- package/dist/getSignedSessionId-ekp3lswQ.esm.js.map +1 -0
- package/dist/{getSignedSessionId-BVc-sgeN.esm.js → getSignedSessionId-xZGFa4nS.native.esm.js} +3 -3
- package/dist/{getSignedSessionId-DlmNVy-g.native.esm.js.map → getSignedSessionId-xZGFa4nS.native.esm.js.map} +1 -1
- package/dist/{getWalletProviderByKey-BilyW5Jr.cjs → getWalletProviderByKey-BwivhTYu.cjs} +2 -2
- package/dist/{getWalletProviderByKey-BilyW5Jr.cjs.map → getWalletProviderByKey-BwivhTYu.cjs.map} +1 -1
- package/dist/{getWalletProviderByKey-PIO1ygzj.esm.js → getWalletProviderByKey-CS299i1V.esm.js} +2 -2
- package/dist/{getWalletProviderByKey-PIO1ygzj.esm.js.map → getWalletProviderByKey-CS299i1V.esm.js.map} +1 -1
- package/dist/{getWalletProviderByKey-Ccx26JsF.native.esm.js → getWalletProviderByKey-CYGDw6-5.native.esm.js} +2 -2
- package/dist/{getWalletProviderByKey-Ccx26JsF.native.esm.js.map → getWalletProviderByKey-CYGDw6-5.native.esm.js.map} +1 -1
- package/dist/index.cjs +48 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +34 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/index.native.esm.js +34 -7
- package/dist/index.native.esm.js.map +1 -1
- package/dist/{isDynamicWaasEnabled-DXVcXa66.cjs → isDynamicWaasEnabled-BEVAshnS.cjs} +2 -2
- package/dist/{isDynamicWaasEnabled-DXVcXa66.cjs.map → isDynamicWaasEnabled-BEVAshnS.cjs.map} +1 -1
- package/dist/{isDynamicWaasEnabled-C4oPJ0fw.native.esm.js → isDynamicWaasEnabled-C8Fb1xHn.native.esm.js} +2 -2
- package/dist/{isDynamicWaasEnabled-C4oPJ0fw.native.esm.js.map → isDynamicWaasEnabled-C8Fb1xHn.native.esm.js.map} +1 -1
- package/dist/{isDynamicWaasEnabled-JpnXC0f7.esm.js → isDynamicWaasEnabled-D5e2K02u.esm.js} +2 -2
- package/dist/{isDynamicWaasEnabled-JpnXC0f7.esm.js.map → isDynamicWaasEnabled-D5e2K02u.esm.js.map} +1 -1
- package/dist/{isMfaRequiredForAction-D6rt_Tzn.native.esm.js → isMfaRequiredForAction-A02NFVt8.esm.js} +3 -32
- package/dist/isMfaRequiredForAction-A02NFVt8.esm.js.map +1 -0
- package/dist/isMfaRequiredForAction-D4TSMQ4m.native.esm.js +77 -0
- package/dist/isMfaRequiredForAction-D4TSMQ4m.native.esm.js.map +1 -0
- package/dist/isMfaRequiredForAction-odpvykkm.cjs +94 -0
- package/dist/isMfaRequiredForAction-odpvykkm.cjs.map +1 -0
- package/dist/{isUserOnboardingComplete-CsoV3ae7.cjs → isUserOnboardingComplete-CEVSIxJC.cjs} +49 -3
- package/dist/isUserOnboardingComplete-CEVSIxJC.cjs.map +1 -0
- package/dist/{isUserOnboardingComplete-diGA1wlX.esm.js → isUserOnboardingComplete-Cgkw21XZ.esm.js} +44 -4
- package/dist/isUserOnboardingComplete-Cgkw21XZ.esm.js.map +1 -0
- package/dist/{isUserOnboardingComplete-DnExOJu7.native.esm.js → isUserOnboardingComplete-CvQShE05.native.esm.js} +44 -4
- package/dist/{isUserOnboardingComplete-CsoV3ae7.cjs.map → isUserOnboardingComplete-CvQShE05.native.esm.js.map} +1 -1
- package/dist/migrateFromFireblocks-BMtelH1a.native.esm.js +321 -0
- package/dist/migrateFromFireblocks-BMtelH1a.native.esm.js.map +1 -0
- package/dist/{migrateFromFireblocks-BrWXstt8.cjs → migrateFromFireblocks-CLUkVcFT.cjs} +54 -3
- package/dist/migrateFromFireblocks-CLUkVcFT.cjs.map +1 -0
- package/dist/{migrateFromFireblocks-CqL5l58Q.native.esm.js → migrateFromFireblocks-DcKrquTE.esm.js} +43 -4
- package/dist/migrateFromFireblocks-DcKrquTE.esm.js.map +1 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountMember/addBusinessAccountMember.d.ts +25 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountMember/addBusinessAccountMember.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountMember/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountMember/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/addBusinessAccountSigner.d.ts +35 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/addBusinessAccountSigner.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/addWalletToBusinessAccount.d.ts +19 -0
- package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/addWalletToBusinessAccount.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/businessAccounts.types.d.ts +184 -0
- package/dist/modules/waas/businessAccounts/businessAccounts.types.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/createBusinessAccount/createBusinessAccount.d.ts +16 -0
- package/dist/modules/waas/businessAccounts/createBusinessAccount/createBusinessAccount.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/createBusinessAccount/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/createBusinessAccount/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/createWalletForBusinessAccount.d.ts +36 -0
- package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/createWalletForBusinessAccount.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccount/getBusinessAccount.d.ts +15 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccount/getBusinessAccount.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccount/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccount/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/getBusinessAccountsClient.d.ts +12 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/getBusinessAccountsClient.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/listBusinessAccounts/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/listBusinessAccounts/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/listBusinessAccounts/listBusinessAccounts.d.ts +10 -0
- package/dist/modules/waas/businessAccounts/listBusinessAccounts/listBusinessAccounts.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/removeBusinessAccountMember.d.ts +33 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/removeBusinessAccountMember.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/index.d.ts +2 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/index.d.ts.map +1 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/removeBusinessAccountSigner.d.ts +37 -0
- package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/removeBusinessAccountSigner.d.ts.map +1 -0
- package/dist/modules/waas/createWaasClient/createWaasClient.d.ts.map +1 -1
- package/dist/modules/waas/createWaasProvider/createWaasProvider.d.ts.map +1 -1
- package/dist/modules/waas/createWaasProvider/isWaasLoadExhaustionError.d.ts +11 -0
- package/dist/modules/waas/createWaasProvider/isWaasLoadExhaustionError.d.ts.map +1 -0
- package/dist/modules/waas/waas.types.d.ts +11 -0
- package/dist/modules/waas/waas.types.d.ts.map +1 -1
- package/dist/services/keychain/createKeychainService/utils/openDatabase.d.ts +9 -1
- package/dist/services/keychain/createKeychainService/utils/openDatabase.d.ts.map +1 -1
- package/dist/services/keychain/createKeychainService/utils/withDatabase/withDatabase.d.ts +2 -1
- package/dist/services/keychain/createKeychainService/utils/withDatabase/withDatabase.d.ts.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/{updateAuthFromVerifyResponse-B0K1VJ8b.cjs → updateAuthFromVerifyResponse-CSqnGlh3.cjs} +289 -19
- package/dist/updateAuthFromVerifyResponse-CSqnGlh3.cjs.map +1 -0
- package/dist/{updateAuthFromVerifyResponse-CVDQVEQM.esm.js → updateAuthFromVerifyResponse-C_YKKAIX.esm.js} +262 -4
- package/dist/updateAuthFromVerifyResponse-C_YKKAIX.esm.js.map +1 -0
- package/dist/utils/createTranslateRejection/createTranslateRejection.d.ts +29 -0
- package/dist/utils/createTranslateRejection/createTranslateRejection.d.ts.map +1 -0
- package/dist/utils/createTranslateRejection/index.d.ts +3 -0
- package/dist/utils/createTranslateRejection/index.d.ts.map +1 -0
- package/dist/waas.cjs +281 -17
- package/dist/waas.cjs.map +1 -1
- package/dist/waas.esm.js +273 -18
- package/dist/waas.esm.js.map +1 -1
- package/dist/waas.native.esm.js +272 -18
- package/dist/waas.native.esm.js.map +1 -1
- package/dist/waasCore.cjs +291 -170
- package/dist/waasCore.cjs.map +1 -1
- package/dist/waasCore.esm.js +285 -164
- package/dist/waasCore.esm.js.map +1 -1
- package/dist/waasCore.native.esm.js +273 -371
- package/dist/waasCore.native.esm.js.map +1 -1
- package/ios/DynamicClientScreenshotProtection.mm +70 -32
- package/package.json +4 -4
- package/dist/getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js.map +0 -1
- package/dist/getNetworkProviderFromNetworkId-DaVOUpiF.cjs.map +0 -1
- package/dist/getSignedSessionId-3L_aMxVD.cjs.map +0 -1
- package/dist/getSignedSessionId-BVc-sgeN.esm.js.map +0 -1
- package/dist/isMfaRequiredForAction-20E6GsSc.esm.js +0 -336
- package/dist/isMfaRequiredForAction-20E6GsSc.esm.js.map +0 -1
- package/dist/isMfaRequiredForAction-9bYtZcve.cjs +0 -384
- package/dist/isMfaRequiredForAction-9bYtZcve.cjs.map +0 -1
- package/dist/isMfaRequiredForAction-D6rt_Tzn.native.esm.js.map +0 -1
- package/dist/isUserOnboardingComplete-DnExOJu7.native.esm.js.map +0 -1
- package/dist/isUserOnboardingComplete-diGA1wlX.esm.js.map +0 -1
- package/dist/migrateFromFireblocks--G-432sl.esm.js +0 -65
- package/dist/migrateFromFireblocks--G-432sl.esm.js.map +0 -1
- package/dist/migrateFromFireblocks-BrWXstt8.cjs.map +0 -1
- package/dist/migrateFromFireblocks-CqL5l58Q.native.esm.js.map +0 -1
- package/dist/updateAuthFromVerifyResponse-B0K1VJ8b.cjs.map +0 -1
- package/dist/updateAuthFromVerifyResponse-CVDQVEQM.esm.js.map +0 -1
- package/dist/updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js.map +0 -1
package/dist/{updateAuthFromVerifyResponse-B0K1VJ8b.cjs → updateAuthFromVerifyResponse-CSqnGlh3.cjs}
RENAMED
|
@@ -31,10 +31,10 @@ zod_mini = __toESM(zod_mini);
|
|
|
31
31
|
|
|
32
32
|
//#region package.json
|
|
33
33
|
var name = "@dynamic-labs-sdk/client";
|
|
34
|
-
var version = "1.
|
|
34
|
+
var version = "1.21.0";
|
|
35
35
|
var dependencies = {
|
|
36
36
|
"@dynamic-labs-sdk/assert-package-version": "workspace:*",
|
|
37
|
-
"@dynamic-labs-wallet/browser-wallet-client": "1.0.
|
|
37
|
+
"@dynamic-labs-wallet/browser-wallet-client": "1.0.73",
|
|
38
38
|
"@dynamic-labs-wallet/forward-mpc-client": "1.0.1",
|
|
39
39
|
"@dynamic-labs/sdk-api-core": "catalog:",
|
|
40
40
|
"@simplewebauthn/browser": "13.1.0",
|
|
@@ -896,6 +896,41 @@ const emitEvent = ({ event, args }, client) => {
|
|
|
896
896
|
eventEmitter.emit(event, args);
|
|
897
897
|
};
|
|
898
898
|
|
|
899
|
+
//#endregion
|
|
900
|
+
//#region src/utils/retryOnFail/InvalidRetryOnFailCallError.ts
|
|
901
|
+
/**
|
|
902
|
+
* This error is thrown when the `retryOnFail` function is called with an invalid
|
|
903
|
+
* number of retries (i.e. less than 0).
|
|
904
|
+
*/
|
|
905
|
+
var InvalidRetryOnFailCallError = class extends BaseError {
|
|
906
|
+
constructor(maxRetries) {
|
|
907
|
+
super({
|
|
908
|
+
cause: null,
|
|
909
|
+
code: "invalid_retry_on_fail_call_error",
|
|
910
|
+
docsUrl: null,
|
|
911
|
+
name: "InvalidRetryOnFailCallError",
|
|
912
|
+
shortMessage: `Invalid retries parameter for retryOnFail call: ${maxRetries}`
|
|
913
|
+
});
|
|
914
|
+
}
|
|
915
|
+
};
|
|
916
|
+
|
|
917
|
+
//#endregion
|
|
918
|
+
//#region src/utils/retryOnFail/retryOnFail.ts
|
|
919
|
+
/** @notInstrumented */
|
|
920
|
+
const retryOnFail = async ({ delay = 0, fn, maxRetries }) => {
|
|
921
|
+
for (let retry = 0; retry <= maxRetries; retry++) try {
|
|
922
|
+
return await fn();
|
|
923
|
+
} catch (error) {
|
|
924
|
+
if (retry >= maxRetries) throw error;
|
|
925
|
+
if (delay > 0) await new Promise((resolve) => setTimeout(resolve, delay));
|
|
926
|
+
}
|
|
927
|
+
/**
|
|
928
|
+
* Reaching this point should never happen and this
|
|
929
|
+
* error is thrown to help us debug the issue.
|
|
930
|
+
*/
|
|
931
|
+
throw new InvalidRetryOnFailCallError(maxRetries);
|
|
932
|
+
};
|
|
933
|
+
|
|
899
934
|
//#endregion
|
|
900
935
|
//#region src/errors/InvalidWalletProviderKeyError.ts
|
|
901
936
|
var InvalidWalletProviderKeyError = class extends BaseError {
|
|
@@ -1214,6 +1249,115 @@ const getWalletAccounts = (client = getDefaultClient()) => {
|
|
|
1214
1249
|
}, client);
|
|
1215
1250
|
};
|
|
1216
1251
|
|
|
1252
|
+
//#endregion
|
|
1253
|
+
//#region src/modules/auth/isSignedIn/isSignedIn.ts
|
|
1254
|
+
/**
|
|
1255
|
+
* Checks if the user is currently signed in to the Dynamic client.
|
|
1256
|
+
*
|
|
1257
|
+
* The client is considered to be in a signed in state if a user has
|
|
1258
|
+
* authenticated or if the client has at least one wallet connected.
|
|
1259
|
+
*
|
|
1260
|
+
* @deprecated What counts as "signed in" is your app's business logic, not the
|
|
1261
|
+
* SDK's. This helper bakes in one opinion (a user OR any connected wallet),
|
|
1262
|
+
* which rarely matches every app and forces a dependency on us for every
|
|
1263
|
+
* variation. Compose your own check from the underlying primitives instead —
|
|
1264
|
+
* e.g. `Boolean(client.user) || isAnyWalletAccountConnected(client)` — and
|
|
1265
|
+
* layer in whatever your app requires (device registration, completed
|
|
1266
|
+
* onboarding, satisfied MFA, a required embedded wallet, …). See the
|
|
1267
|
+
* "Check if signed in" guide:
|
|
1268
|
+
* https://www.dynamic.xyz/docs/javascript/user-session-management
|
|
1269
|
+
*
|
|
1270
|
+
* @example
|
|
1271
|
+
* ```ts
|
|
1272
|
+
* if (isSignedIn()) {
|
|
1273
|
+
* console.log('User is authenticated or has a wallet connected');
|
|
1274
|
+
* }
|
|
1275
|
+
* ```
|
|
1276
|
+
*
|
|
1277
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
1278
|
+
* @returns True if the user is signed in, false otherwise.
|
|
1279
|
+
* @see logout
|
|
1280
|
+
* @see isAnyWalletAccountConnected
|
|
1281
|
+
* @notInstrumented
|
|
1282
|
+
*/
|
|
1283
|
+
const isSignedIn = (client = getDefaultClient()) => Boolean(client.user || getWalletAccounts(client).length > 0);
|
|
1284
|
+
|
|
1285
|
+
//#endregion
|
|
1286
|
+
//#region src/modules/projectSettings/fetchProjectSettings/projectSettingsExpirationScheme.ts
|
|
1287
|
+
/**
|
|
1288
|
+
* The schema to track the expiration time of the project settings.
|
|
1289
|
+
*/
|
|
1290
|
+
const projectSettingsExpirationStorageKeySchema = createStorageKeySchema({
|
|
1291
|
+
key: "projectSettingsExpiration",
|
|
1292
|
+
schema: zod_mini.number()
|
|
1293
|
+
});
|
|
1294
|
+
|
|
1295
|
+
//#endregion
|
|
1296
|
+
//#region src/modules/projectSettings/fetchProjectSettings/fetchProjectSettings.ts
|
|
1297
|
+
/**
|
|
1298
|
+
* Expiration time of the project settings in milliseconds.
|
|
1299
|
+
*/
|
|
1300
|
+
const PROJECT_SETTINGS_EXPIRATION_TIME = 1e3 * 60 * 5;
|
|
1301
|
+
/**
|
|
1302
|
+
* Fetches and updates the project settings from the API.
|
|
1303
|
+
*
|
|
1304
|
+
* This function retrieves the latest project configuration settings
|
|
1305
|
+
* from Dynamic's servers, including authentication options, enabled chains,
|
|
1306
|
+
* and security configurations. The settings are cached for performance.
|
|
1307
|
+
*
|
|
1308
|
+
* @example
|
|
1309
|
+
* ```ts
|
|
1310
|
+
* const settings = await fetchProjectSettings();
|
|
1311
|
+
* console.log('Enabled chains:', settings.chains);
|
|
1312
|
+
* ```
|
|
1313
|
+
*
|
|
1314
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
1315
|
+
* @returns A promise that resolves to the updated project settings.
|
|
1316
|
+
* @see createDynamicClient
|
|
1317
|
+
* @see initializeClient
|
|
1318
|
+
* @notInstrumented
|
|
1319
|
+
* @noHook Internal settings fetch that is not part of the public hook surface.
|
|
1320
|
+
*/
|
|
1321
|
+
const fetchProjectSettings = async (client = getDefaultClient()) => {
|
|
1322
|
+
const core = getCore(client);
|
|
1323
|
+
const currentExpiration = await core.storage.getItem(projectSettingsExpirationStorageKeySchema);
|
|
1324
|
+
if (Boolean(client.projectSettings) && !(currentExpiration && currentExpiration < Date.now()) && isSignedIn(client)) return client.projectSettings;
|
|
1325
|
+
const apiClient = createApiClient({}, client);
|
|
1326
|
+
core.logger.debug("[fetchProjectSettings] Fetching project settings...");
|
|
1327
|
+
const doFetch = async () => apiClient.getEnvironmentSettings({
|
|
1328
|
+
environmentId: core.environmentId,
|
|
1329
|
+
sdkVersion: `${CLIENT_SDK_NAME}/${core.version}`
|
|
1330
|
+
}, { credentials: "omit" });
|
|
1331
|
+
const projectSettings = await retryOnFail({
|
|
1332
|
+
fn: doFetch,
|
|
1333
|
+
maxRetries: 2
|
|
1334
|
+
});
|
|
1335
|
+
core.state.set({ projectSettings: projectSettings ?? null });
|
|
1336
|
+
await core.storage.setItem(projectSettingsExpirationStorageKeySchema, Date.now() + PROJECT_SETTINGS_EXPIRATION_TIME);
|
|
1337
|
+
return projectSettings;
|
|
1338
|
+
};
|
|
1339
|
+
|
|
1340
|
+
//#endregion
|
|
1341
|
+
//#region src/modules/sessionKeys/generateSessionKeys/generateSessionKeys.ts
|
|
1342
|
+
/** @notInstrumented */
|
|
1343
|
+
const generateSessionKeys = async (client) => {
|
|
1344
|
+
const core = getCore(client);
|
|
1345
|
+
const currentState = core.state.get();
|
|
1346
|
+
const isRotation = Boolean(currentState.sessionKeys);
|
|
1347
|
+
const logContext = {
|
|
1348
|
+
environmentId: core.environmentId,
|
|
1349
|
+
operation: isRotation ? "rotate" : "create",
|
|
1350
|
+
userId: currentState.user?.id ?? null
|
|
1351
|
+
};
|
|
1352
|
+
core.logger.info(isRotation ? "[generateSessionKeys] Rotating session key..." : "[generateSessionKeys] Creating session key...", logContext);
|
|
1353
|
+
await core.keychain.removeKey("session");
|
|
1354
|
+
const publicKey = await core.keychain.generateKey("session");
|
|
1355
|
+
assertDefined(publicKey, "Public key not found");
|
|
1356
|
+
core.state.set({ sessionKeys: publicKey });
|
|
1357
|
+
core.logger.info(isRotation ? "[generateSessionKeys] Session key rotated" : "[generateSessionKeys] Session key created", logContext);
|
|
1358
|
+
return { publicKey };
|
|
1359
|
+
};
|
|
1360
|
+
|
|
1217
1361
|
//#endregion
|
|
1218
1362
|
//#region src/errors/NoWalletProviderFoundError.ts
|
|
1219
1363
|
var NoWalletProviderFoundError = class extends BaseError {
|
|
@@ -1369,6 +1513,51 @@ const getWalletProviderFromWalletAccount = ({ walletAccount }, client) => {
|
|
|
1369
1513
|
return walletProvider;
|
|
1370
1514
|
};
|
|
1371
1515
|
|
|
1516
|
+
//#endregion
|
|
1517
|
+
//#region src/modules/wallets/utils/getAvailableWalletProvidersFromWalletAccounts/getAvailableWalletProvidersFromWalletAccounts.ts
|
|
1518
|
+
/** @notInstrumented */
|
|
1519
|
+
const getAvailableWalletProvidersFromWalletAccounts = (client) => {
|
|
1520
|
+
const core = getCore(client);
|
|
1521
|
+
const walletProvidersMap = /* @__PURE__ */ new Map();
|
|
1522
|
+
getWalletAccounts(client).forEach((walletAccount) => {
|
|
1523
|
+
if (walletProvidersMap.has(walletAccount.walletProviderKey)) return;
|
|
1524
|
+
try {
|
|
1525
|
+
const walletProvider = getWalletProviderFromWalletAccount({ walletAccount }, client);
|
|
1526
|
+
walletProvidersMap.set(walletAccount.walletProviderKey, walletProvider);
|
|
1527
|
+
} catch (error) {
|
|
1528
|
+
core.logger.debug("Wallet provider not found for wallet account", {
|
|
1529
|
+
error,
|
|
1530
|
+
walletAccount: walletAccount.address
|
|
1531
|
+
});
|
|
1532
|
+
}
|
|
1533
|
+
});
|
|
1534
|
+
return Array.from(walletProvidersMap.values());
|
|
1535
|
+
};
|
|
1536
|
+
|
|
1537
|
+
//#endregion
|
|
1538
|
+
//#region src/modules/wallets/destroyWalletProviders/destroyWalletProviders.ts
|
|
1539
|
+
/**
|
|
1540
|
+
* Tear down every wallet provider on the client.
|
|
1541
|
+
*
|
|
1542
|
+
* Each provider's `destroy` is responsible for its own local + remote
|
|
1543
|
+
* cleanup. We swallow errors so a failing destroy on one provider does not
|
|
1544
|
+
* block teardown of the others (e.g. during logout).
|
|
1545
|
+
*
|
|
1546
|
+
* @notInstrumented
|
|
1547
|
+
*/
|
|
1548
|
+
const destroyWalletProviders = async ({ reason }, client) => {
|
|
1549
|
+
const core = getCore(client);
|
|
1550
|
+
const walletProviders = getAvailableWalletProvidersFromWalletAccounts(client);
|
|
1551
|
+
await Promise.all(walletProviders.map(async (walletProvider) => {
|
|
1552
|
+
if (!walletProvider.destroy) return;
|
|
1553
|
+
try {
|
|
1554
|
+
await walletProvider.destroy({ reason });
|
|
1555
|
+
} catch (err) {
|
|
1556
|
+
core.logger.error(`Error destroying wallet provider ${walletProvider.key}`, err);
|
|
1557
|
+
}
|
|
1558
|
+
}));
|
|
1559
|
+
};
|
|
1560
|
+
|
|
1372
1561
|
//#endregion
|
|
1373
1562
|
//#region src/modules/auth/consts.ts
|
|
1374
1563
|
const DYNAMIC_AUTH_COOKIE_NAME = "DYNAMIC_JWT_TOKEN";
|
|
@@ -1781,6 +1970,75 @@ const instrumentFunction = ({ fn, functionName, getCore: getCore$1, selectors })
|
|
|
1781
1970
|
return wrapped;
|
|
1782
1971
|
};
|
|
1783
1972
|
|
|
1973
|
+
//#endregion
|
|
1974
|
+
//#region src/modules/auth/logoutWithReason/logoutWithReason.ts
|
|
1975
|
+
/**
|
|
1976
|
+
* Logs the user out with an explicit reason.
|
|
1977
|
+
*
|
|
1978
|
+
* Revokes the session, clears auth state, terminates wallet providers, and
|
|
1979
|
+
* emits the `logout` client event with the given reason. The reason is also
|
|
1980
|
+
* captured as an argument on the function-instrumentation event, which is
|
|
1981
|
+
* how Datadog distinguishes between different logout causes.
|
|
1982
|
+
*
|
|
1983
|
+
* Use this instead of the public `logout` when triggering a logout from
|
|
1984
|
+
* internal or extension code — the caller owns the reason string, so the
|
|
1985
|
+
* telemetry correctly attributes *why* the logout happened.
|
|
1986
|
+
*
|
|
1987
|
+
* @param params - The logout params.
|
|
1988
|
+
* @param params.reason - Why the logout is being triggered. Extension authors
|
|
1989
|
+
* needing a reason outside the SDK catalog can cast with `as LogoutReason`.
|
|
1990
|
+
* @param client - The Dynamic client instance.
|
|
1991
|
+
* @instrumented
|
|
1992
|
+
*/
|
|
1993
|
+
const logoutWithReason = async ({ reason }, client) => {
|
|
1994
|
+
const core = getCore(client);
|
|
1995
|
+
core.logger.debug("[logoutWithReason] Logging out...", { reason });
|
|
1996
|
+
await destroyWalletProviders({ reason }, client);
|
|
1997
|
+
if (client.user !== null) {
|
|
1998
|
+
const apiClient = createApiClient({}, client);
|
|
1999
|
+
try {
|
|
2000
|
+
await apiClient.revokeSession({ environmentId: core.environmentId });
|
|
2001
|
+
} catch (error) {
|
|
2002
|
+
core.logger.error("Failed to revoke session", error);
|
|
2003
|
+
}
|
|
2004
|
+
/**
|
|
2005
|
+
* This deletes the auth cookie if it exists.
|
|
2006
|
+
* If the cookie doesn't exist, this sets a new cookie that expires immediately.
|
|
2007
|
+
*/
|
|
2008
|
+
if (isCookieEnabled(client)) setCookie(`${DYNAMIC_AUTH_COOKIE_NAME}=; Max-Age=-99999999; path=/; SameSite=Lax${getSecureCookieAttribute()}`);
|
|
2009
|
+
}
|
|
2010
|
+
await core.keychain.removeKey("session");
|
|
2011
|
+
core.state.set({
|
|
2012
|
+
captchaToken: null,
|
|
2013
|
+
elevatedAccessTokens: [],
|
|
2014
|
+
legacyToken: null,
|
|
2015
|
+
mfaToken: null,
|
|
2016
|
+
sessionExpiresAt: null,
|
|
2017
|
+
sessionKeys: null,
|
|
2018
|
+
token: null,
|
|
2019
|
+
unverifiedWalletAccounts: [],
|
|
2020
|
+
user: null
|
|
2021
|
+
});
|
|
2022
|
+
emitEvent({
|
|
2023
|
+
args: { reason },
|
|
2024
|
+
event: "logout"
|
|
2025
|
+
}, client);
|
|
2026
|
+
fetchProjectSettings(client);
|
|
2027
|
+
generateSessionKeys(client);
|
|
2028
|
+
};
|
|
2029
|
+
const __logoutWithReason_impl = logoutWithReason;
|
|
2030
|
+
const __logoutWithReason_wrapped = instrumentFunction({
|
|
2031
|
+
fn: __logoutWithReason_impl,
|
|
2032
|
+
functionName: "logoutWithReason",
|
|
2033
|
+
getCore: () => {
|
|
2034
|
+
try {
|
|
2035
|
+
return getCore(getDefaultClient());
|
|
2036
|
+
} catch {
|
|
2037
|
+
return;
|
|
2038
|
+
}
|
|
2039
|
+
}
|
|
2040
|
+
});
|
|
2041
|
+
|
|
1784
2042
|
//#endregion
|
|
1785
2043
|
//#region src/constants.ts
|
|
1786
2044
|
const SDK_API_CORE_VERSION = dependencies["@dynamic-labs/sdk-api-core"];
|
|
@@ -2119,12 +2377,6 @@ Object.defineProperty(exports, 'DEFAULT_WAAS_BASE_MPC_RELAY_API_URL', {
|
|
|
2119
2377
|
return DEFAULT_WAAS_BASE_MPC_RELAY_API_URL;
|
|
2120
2378
|
}
|
|
2121
2379
|
});
|
|
2122
|
-
Object.defineProperty(exports, 'DYNAMIC_AUTH_COOKIE_NAME', {
|
|
2123
|
-
enumerable: true,
|
|
2124
|
-
get: function () {
|
|
2125
|
-
return DYNAMIC_AUTH_COOKIE_NAME;
|
|
2126
|
-
}
|
|
2127
|
-
});
|
|
2128
2380
|
Object.defineProperty(exports, 'DYNAMIC_ICONIC_SPRITE_URL', {
|
|
2129
2381
|
enumerable: true,
|
|
2130
2382
|
get: function () {
|
|
@@ -2221,6 +2473,12 @@ Object.defineProperty(exports, 'WalletProviderPriority', {
|
|
|
2221
2473
|
return WalletProviderPriority;
|
|
2222
2474
|
}
|
|
2223
2475
|
});
|
|
2476
|
+
Object.defineProperty(exports, '__logoutWithReason_wrapped', {
|
|
2477
|
+
enumerable: true,
|
|
2478
|
+
get: function () {
|
|
2479
|
+
return __logoutWithReason_wrapped;
|
|
2480
|
+
}
|
|
2481
|
+
});
|
|
2224
2482
|
Object.defineProperty(exports, '__toESM', {
|
|
2225
2483
|
enumerable: true,
|
|
2226
2484
|
get: function () {
|
|
@@ -2287,6 +2545,12 @@ Object.defineProperty(exports, 'fetchAndStoreNonces', {
|
|
|
2287
2545
|
return fetchAndStoreNonces;
|
|
2288
2546
|
}
|
|
2289
2547
|
});
|
|
2548
|
+
Object.defineProperty(exports, 'fetchProjectSettings', {
|
|
2549
|
+
enumerable: true,
|
|
2550
|
+
get: function () {
|
|
2551
|
+
return fetchProjectSettings;
|
|
2552
|
+
}
|
|
2553
|
+
});
|
|
2290
2554
|
Object.defineProperty(exports, 'findWaasWalletProviderByChain', {
|
|
2291
2555
|
enumerable: true,
|
|
2292
2556
|
get: function () {
|
|
@@ -2305,6 +2569,12 @@ Object.defineProperty(exports, 'formatWalletProviderKey', {
|
|
|
2305
2569
|
return formatWalletProviderKey;
|
|
2306
2570
|
}
|
|
2307
2571
|
});
|
|
2572
|
+
Object.defineProperty(exports, 'generateSessionKeys', {
|
|
2573
|
+
enumerable: true,
|
|
2574
|
+
get: function () {
|
|
2575
|
+
return generateSessionKeys;
|
|
2576
|
+
}
|
|
2577
|
+
});
|
|
2308
2578
|
Object.defineProperty(exports, 'getChainFromVerifiedCredentialChain', {
|
|
2309
2579
|
enumerable: true,
|
|
2310
2580
|
get: function () {
|
|
@@ -2359,12 +2629,6 @@ Object.defineProperty(exports, 'getPlatform', {
|
|
|
2359
2629
|
return getPlatform;
|
|
2360
2630
|
}
|
|
2361
2631
|
});
|
|
2362
|
-
Object.defineProperty(exports, 'getSecureCookieAttribute', {
|
|
2363
|
-
enumerable: true,
|
|
2364
|
-
get: function () {
|
|
2365
|
-
return getSecureCookieAttribute;
|
|
2366
|
-
}
|
|
2367
|
-
});
|
|
2368
2632
|
Object.defineProperty(exports, 'getSessionKeys', {
|
|
2369
2633
|
enumerable: true,
|
|
2370
2634
|
get: function () {
|
|
@@ -2419,6 +2683,12 @@ Object.defineProperty(exports, 'isCookieEnabled', {
|
|
|
2419
2683
|
return isCookieEnabled;
|
|
2420
2684
|
}
|
|
2421
2685
|
});
|
|
2686
|
+
Object.defineProperty(exports, 'isSignedIn', {
|
|
2687
|
+
enumerable: true,
|
|
2688
|
+
get: function () {
|
|
2689
|
+
return isSignedIn;
|
|
2690
|
+
}
|
|
2691
|
+
});
|
|
2422
2692
|
Object.defineProperty(exports, 'isUserMissingMfaAuth', {
|
|
2423
2693
|
enumerable: true,
|
|
2424
2694
|
get: function () {
|
|
@@ -2485,16 +2755,16 @@ Object.defineProperty(exports, 'randomString', {
|
|
|
2485
2755
|
return randomString;
|
|
2486
2756
|
}
|
|
2487
2757
|
});
|
|
2488
|
-
Object.defineProperty(exports, '
|
|
2758
|
+
Object.defineProperty(exports, 'retryOnFail', {
|
|
2489
2759
|
enumerable: true,
|
|
2490
2760
|
get: function () {
|
|
2491
|
-
return
|
|
2761
|
+
return retryOnFail;
|
|
2492
2762
|
}
|
|
2493
2763
|
});
|
|
2494
|
-
Object.defineProperty(exports, '
|
|
2764
|
+
Object.defineProperty(exports, 'scrubParameters', {
|
|
2495
2765
|
enumerable: true,
|
|
2496
2766
|
get: function () {
|
|
2497
|
-
return
|
|
2767
|
+
return scrubParameters;
|
|
2498
2768
|
}
|
|
2499
2769
|
});
|
|
2500
2770
|
Object.defineProperty(exports, 'setDefaultClient', {
|
|
@@ -2533,4 +2803,4 @@ Object.defineProperty(exports, 'version', {
|
|
|
2533
2803
|
return version;
|
|
2534
2804
|
}
|
|
2535
2805
|
});
|
|
2536
|
-
//# sourceMappingURL=updateAuthFromVerifyResponse-
|
|
2806
|
+
//# sourceMappingURL=updateAuthFromVerifyResponse-CSqnGlh3.cjs.map
|