@dynamic-labs-sdk/client 0.17.2 → 0.17.3

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 (67) hide show
  1. package/dist/{InvalidParamError-Dc2HgrDm.esm.js → InvalidParamError-C8bqZx25.esm.js} +52 -3
  2. package/dist/InvalidParamError-C8bqZx25.esm.js.map +1 -0
  3. package/dist/{InvalidParamError-z_h8HyKL.cjs.js → InvalidParamError-DvFYOkxL.cjs.js} +58 -3
  4. package/dist/InvalidParamError-DvFYOkxL.cjs.js.map +1 -0
  5. package/dist/{NotWaasWalletAccountError-B4xS_9HL.esm.js → NotWaasWalletAccountError-C-_6uyUM.esm.js} +3 -3
  6. package/dist/{NotWaasWalletAccountError-B4xS_9HL.esm.js.map → NotWaasWalletAccountError-C-_6uyUM.esm.js.map} +1 -1
  7. package/dist/{NotWaasWalletAccountError-DsYkBFyx.cjs.js → NotWaasWalletAccountError-CHSFUjd9.cjs.js} +3 -3
  8. package/dist/{NotWaasWalletAccountError-DsYkBFyx.cjs.js.map → NotWaasWalletAccountError-CHSFUjd9.cjs.js.map} +1 -1
  9. package/dist/client/core/createCore/createCore.d.ts.map +1 -1
  10. package/dist/client/core/types/DynamicCore.d.ts +10 -0
  11. package/dist/client/core/types/DynamicCore.d.ts.map +1 -1
  12. package/dist/client/types/DynamicClientConfig.d.ts +5 -0
  13. package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
  14. package/dist/core.cjs.js +5 -5
  15. package/dist/core.esm.js +5 -5
  16. package/dist/{getNetworkProviderFromNetworkId-CllkC31J.cjs.js → getNetworkProviderFromNetworkId-DK9fnM_Y.cjs.js} +3 -3
  17. package/dist/{getNetworkProviderFromNetworkId-CllkC31J.cjs.js.map → getNetworkProviderFromNetworkId-DK9fnM_Y.cjs.js.map} +1 -1
  18. package/dist/{getNetworkProviderFromNetworkId-DO13PEvc.esm.js → getNetworkProviderFromNetworkId-n7VUDpn0.esm.js} +3 -3
  19. package/dist/{getNetworkProviderFromNetworkId-DO13PEvc.esm.js.map → getNetworkProviderFromNetworkId-n7VUDpn0.esm.js.map} +1 -1
  20. package/dist/{getSignedSessionId-DqmEBqI9.cjs.js → getSignedSessionId-B2-EYPik.cjs.js} +3 -3
  21. package/dist/{getSignedSessionId-DqmEBqI9.cjs.js.map → getSignedSessionId-B2-EYPik.cjs.js.map} +1 -1
  22. package/dist/{getSignedSessionId-BM05CMyp.esm.js → getSignedSessionId-CM3X3R5t.esm.js} +3 -3
  23. package/dist/{getSignedSessionId-BM05CMyp.esm.js.map → getSignedSessionId-CM3X3R5t.esm.js.map} +1 -1
  24. package/dist/{getVerifiedCredentialForWalletAccount-57Omjjyi.esm.js → getVerifiedCredentialForWalletAccount-Cs7AcMKQ.esm.js} +2 -2
  25. package/dist/{getVerifiedCredentialForWalletAccount-57Omjjyi.esm.js.map → getVerifiedCredentialForWalletAccount-Cs7AcMKQ.esm.js.map} +1 -1
  26. package/dist/{getVerifiedCredentialForWalletAccount-BK4IBZlH.cjs.js → getVerifiedCredentialForWalletAccount-CyLnpS2G.cjs.js} +3 -3
  27. package/dist/{getVerifiedCredentialForWalletAccount-BK4IBZlH.cjs.js.map → getVerifiedCredentialForWalletAccount-CyLnpS2G.cjs.js.map} +1 -1
  28. package/dist/index.cjs.js +80 -57
  29. package/dist/index.cjs.js.map +1 -1
  30. package/dist/index.esm.js +80 -57
  31. package/dist/index.esm.js.map +1 -1
  32. package/dist/{isMfaRequiredForAction-BS239c-s.cjs.js → isMfaRequiredForAction-BrRKwK_i.cjs.js} +2 -2
  33. package/dist/{isMfaRequiredForAction-BS239c-s.cjs.js.map → isMfaRequiredForAction-BrRKwK_i.cjs.js.map} +1 -1
  34. package/dist/{isMfaRequiredForAction-CXRaUbFE.esm.js → isMfaRequiredForAction-CM26tbT2.esm.js} +2 -2
  35. package/dist/{isMfaRequiredForAction-CXRaUbFE.esm.js.map → isMfaRequiredForAction-CM26tbT2.esm.js.map} +1 -1
  36. package/dist/modules/apiClient/apiClient.types.d.ts +7 -0
  37. package/dist/modules/apiClient/apiClient.types.d.ts.map +1 -1
  38. package/dist/modules/apiClient/constants.d.ts +2 -0
  39. package/dist/modules/apiClient/constants.d.ts.map +1 -1
  40. package/dist/modules/apiClient/createApiClient.d.ts.map +1 -1
  41. package/dist/modules/auth/getElevatedAccessToken/getElevatedAccessToken.d.ts +15 -8
  42. package/dist/modules/auth/getElevatedAccessToken/getElevatedAccessToken.d.ts.map +1 -1
  43. package/dist/modules/auth/passkeys/deletePasskey/deletePasskey.d.ts.map +1 -1
  44. package/dist/modules/auth/passkeys/serverRegisterPasskey/serverRegisterPasskey.d.ts.map +1 -1
  45. package/dist/modules/mfa/deleteMfaDevice/deleteMfaDevice.d.ts +6 -4
  46. package/dist/modules/mfa/deleteMfaDevice/deleteMfaDevice.d.ts.map +1 -1
  47. package/dist/modules/mfa/registerTotpMfaDevice/registerTotpMfaDevice.d.ts.map +1 -1
  48. package/dist/services/instrumentation/constants.d.ts +17 -0
  49. package/dist/services/instrumentation/constants.d.ts.map +1 -0
  50. package/dist/services/instrumentation/createInstrumentation/createInstrumentation.d.ts +18 -0
  51. package/dist/services/instrumentation/createInstrumentation/createInstrumentation.d.ts.map +1 -0
  52. package/dist/services/instrumentation/createInstrumentation/index.d.ts +2 -0
  53. package/dist/services/instrumentation/createInstrumentation/index.d.ts.map +1 -0
  54. package/dist/services/instrumentation/instrumentation.types.d.ts +44 -0
  55. package/dist/services/instrumentation/instrumentation.types.d.ts.map +1 -0
  56. package/dist/services/instrumentation/scrubParameters/index.d.ts +2 -0
  57. package/dist/services/instrumentation/scrubParameters/index.d.ts.map +1 -0
  58. package/dist/services/instrumentation/scrubParameters/scrubParameters.d.ts +8 -0
  59. package/dist/services/instrumentation/scrubParameters/scrubParameters.d.ts.map +1 -0
  60. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  61. package/dist/waas.cjs.js +4 -4
  62. package/dist/waas.esm.js +3 -3
  63. package/dist/waasCore.cjs.js +4 -4
  64. package/dist/waasCore.esm.js +3 -3
  65. package/package.json +2 -2
  66. package/dist/InvalidParamError-Dc2HgrDm.esm.js.map +0 -1
  67. package/dist/InvalidParamError-z_h8HyKL.cjs.js.map +0 -1
package/dist/index.cjs.js CHANGED
@@ -1,8 +1,8 @@
1
- const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-CllkC31J.cjs.js');
2
- const require_InvalidParamError = require('./InvalidParamError-z_h8HyKL.cjs.js');
3
- const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-BK4IBZlH.cjs.js');
4
- const require_NotWaasWalletAccountError = require('./NotWaasWalletAccountError-DsYkBFyx.cjs.js');
5
- const require_isMfaRequiredForAction = require('./isMfaRequiredForAction-BS239c-s.cjs.js');
1
+ const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-DK9fnM_Y.cjs.js');
2
+ const require_InvalidParamError = require('./InvalidParamError-DvFYOkxL.cjs.js');
3
+ const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-CyLnpS2G.cjs.js');
4
+ const require_NotWaasWalletAccountError = require('./NotWaasWalletAccountError-CHSFUjd9.cjs.js');
5
+ const require_isMfaRequiredForAction = require('./isMfaRequiredForAction-BrRKwK_i.cjs.js');
6
6
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
7
7
  let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
8
8
  let zod_mini = require("zod/mini");
@@ -703,6 +703,59 @@ const createWebFetch = () => {
703
703
  return window.fetch.bind(window);
704
704
  };
705
705
 
706
+ //#endregion
707
+ //#region src/services/instrumentation/constants.ts
708
+ const DEFAULT_PII_FIELDS = [
709
+ "password",
710
+ "token",
711
+ "secret",
712
+ "privateKey",
713
+ "mnemonic",
714
+ "seed",
715
+ "email",
716
+ "phone",
717
+ "ssn",
718
+ "address",
719
+ "authorization"
720
+ ];
721
+
722
+ //#endregion
723
+ //#region src/services/instrumentation/createInstrumentation/createInstrumentation.ts
724
+ const buildPiiFields = (customFields = []) => {
725
+ const merged = [...DEFAULT_PII_FIELDS, ...customFields];
726
+ return [...new Set(merged)];
727
+ };
728
+ /**
729
+ * Creates the instrumentation service that gates event emission behind an
730
+ * enabled flag and delegates to a pluggable transport.
731
+ *
732
+ * The transport is intentionally optional at creation time — it is wired in
733
+ * later via setTransport so the SDK can initialise without one. Events logged
734
+ * before a transport is set are simply dropped.
735
+ *
736
+ * Custom piiFields are merged with and deduplicated against the defaults so
737
+ * callers only need to list additional fields, not replicate the baseline.
738
+ */
739
+ const createInstrumentation = ({ config: inputConfig } = {}) => {
740
+ let transport;
741
+ const config = {
742
+ enabled: inputConfig?.enabled ?? true,
743
+ piiFields: buildPiiFields(inputConfig?.piiFields)
744
+ };
745
+ return {
746
+ config,
747
+ log: (event) => {
748
+ if (config.enabled) transport?.log(event);
749
+ },
750
+ setEnabled: (value) => {
751
+ config.enabled = value;
752
+ },
753
+ setTransport: (t) => {
754
+ transport = t;
755
+ }
756
+ };
757
+ };
758
+
706
759
  //#endregion
707
760
  //#region src/services/navigate/createNavigationHandler/createNavigationHandler.ts
708
761
  /**
@@ -918,6 +971,8 @@ const createCore = (config) => {
918
971
  const debouncedMutex = createDebouncedMutex();
919
972
  const eventEmitter = createEventEmitter();
920
973
  const initTrack = createAsyncTrack();
974
+ const sdkSessionId = require_InvalidParamError.randomString({ length: 32 });
975
+ const instrumentation = createInstrumentation({ config: config.instrumentation });
921
976
  const runtimeServices = createRuntimeServices();
922
977
  const passkey = config.coreConfig?.passkey ?? createWebPasskeyService();
923
978
  const realtime = config.coreConfig?.realtime ?? require_getNetworkProviderFromNetworkId.createRealtimeService();
@@ -934,6 +989,7 @@ const createCore = (config) => {
934
989
  fetch,
935
990
  getApiHeaders: config.coreConfig?.getApiHeaders ?? (() => ({})),
936
991
  initTrack,
992
+ instrumentation,
937
993
  keychain,
938
994
  logger,
939
995
  metadata: {
@@ -945,6 +1001,7 @@ const createCore = (config) => {
945
1001
  passkey,
946
1002
  realtime,
947
1003
  runtimeServices,
1004
+ sdkSessionId,
948
1005
  state,
949
1006
  storage,
950
1007
  transformers: config.transformers,
@@ -1367,47 +1424,6 @@ const signInWithExternalJwt = async ({ externalJwt, sessionPublicKey } = {}, cli
1367
1424
  return response;
1368
1425
  };
1369
1426
 
1370
- //#endregion
1371
- //#region src/modules/auth/getElevatedAccessToken/getElevatedAccessToken.ts
1372
- /**
1373
- * Gets an elevated access token by scope.
1374
- *
1375
- * This function retrieves an elevated access token that contains the specified scope.
1376
- * Expired tokens are automatically filtered out.
1377
- *
1378
- * If the token has `singleUse: true`, it will be automatically
1379
- * consumed (removed from state) after retrieval. Otherwise, it remains in state
1380
- * for future use.
1381
- *
1382
- * @param params - The parameters object.
1383
- * @param params.scope - The scope to match (e.g., 'wallet:export').
1384
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1385
- * @returns The elevated access token if found and not expired, or undefined if not found or expired.
1386
- *
1387
- * @example
1388
- * ```typescript
1389
- * const token = getElevatedAccessToken({ scope: 'wallet:export' });
1390
- * if (token) {
1391
- * // Use the token
1392
- * // Token is automatically consumed if singleUse: true
1393
- * }
1394
- * ```
1395
- */
1396
- const getElevatedAccessToken = ({ scope }, client = require_InvalidParamError.getDefaultClient()) => {
1397
- const core = require_InvalidParamError.getCore(client);
1398
- const now = /* @__PURE__ */ new Date();
1399
- const elevatedAccessTokens = core.state.get().elevatedAccessTokens || [];
1400
- const validTokens = elevatedAccessTokens.filter((token$1) => !token$1.expiresAt || token$1.expiresAt > now);
1401
- if (validTokens.length !== elevatedAccessTokens.length) core.state.set({ elevatedAccessTokens: validTokens });
1402
- const token = validTokens.find((token$1) => token$1.scopes.includes(scope));
1403
- if (!token) return;
1404
- if (token.singleUse) {
1405
- const updatedTokens = validTokens.filter((t) => t !== token);
1406
- core.state.set({ elevatedAccessTokens: updatedTokens });
1407
- }
1408
- return token.token;
1409
- };
1410
-
1411
1427
  //#endregion
1412
1428
  //#region src/modules/auth/passkeys/deletePasskey/deletePasskey.ts
1413
1429
  /**
@@ -1419,7 +1435,10 @@ const getElevatedAccessToken = ({ scope }, client = require_InvalidParamError.ge
1419
1435
  */
1420
1436
  const deletePasskey = async ({ passkeyId }, client = require_InvalidParamError.getDefaultClient()) => {
1421
1437
  const core = require_InvalidParamError.getCore(client);
1422
- await require_InvalidParamError.createApiClient({ includeMfaToken: true }, client).deletePasskey({
1438
+ await require_InvalidParamError.createApiClient({
1439
+ elevatedAccessTokenScope: _dynamic_labs_sdk_api_core.TokenScope.Credentialunlink,
1440
+ includeMfaToken: true
1441
+ }, client).deletePasskey({
1423
1442
  deleteUserPasskeyRequest: { passkeyId },
1424
1443
  environmentId: core.environmentId
1425
1444
  });
@@ -1452,7 +1471,7 @@ const getPasskeyRegistrationOptions = async (client) => {
1452
1471
  //#region src/modules/auth/passkeys/serverRegisterPasskey/serverRegisterPasskey.ts
1453
1472
  const serverRegisterPasskey = async ({ registration, createMfaToken }, client) => {
1454
1473
  const core = require_InvalidParamError.getCore(client);
1455
- return await require_InvalidParamError.createApiClient({}, client).registerPasskey({
1474
+ return await require_InvalidParamError.createApiClient({ elevatedAccessTokenScope: _dynamic_labs_sdk_api_core.TokenScope.Credentiallink }, client).registerPasskey({
1456
1475
  environmentId: core.environmentId,
1457
1476
  passkeyRegisterRequest: {
1458
1477
  ...registration,
@@ -3121,23 +3140,27 @@ const createNewMfaRecoveryCodes = async (client = require_InvalidParamError.getD
3121
3140
  /**
3122
3141
  * Deletes a specific MFA device from the user's account.
3123
3142
  *
3124
- * This function removes a multi-factor authentication device such as
3125
- * a TOTP authenticator from the user's registered devices.
3143
+ * When an elevated access token for `credential:unlink` is available,
3144
+ * it is sent via the `x-dyn-elevated-access-token` header and the
3145
+ * MFA auth token is not required. Otherwise, `mfaAuthToken` must be
3146
+ * provided for backward compatibility with the legacy MFA flow.
3126
3147
  *
3127
3148
  * @param params.deviceId - The unique identifier of the MFA device to delete.
3128
- * @param params.mfaAuthToken - The MFA authentication token required for device deletion.
3149
+ * @param params.mfaAuthToken - The MFA authentication token. Optional when using elevated access tokens.
3129
3150
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
3130
3151
  * @returns A promise that resolves when the MFA device is successfully deleted.
3131
3152
  */
3132
3153
  const deleteMfaDevice = async ({ deviceId, mfaAuthToken }, client = require_InvalidParamError.getDefaultClient()) => {
3133
3154
  const core = require_InvalidParamError.getCore(client);
3134
- const apiClient = require_InvalidParamError.createApiClient({}, client);
3135
3155
  require_InvalidParamError.assertDefined(deviceId, "deviceId is required");
3136
- require_InvalidParamError.assertDefined(mfaAuthToken, "mfaAuthToken is required");
3137
- return apiClient.deleteMfaDevice({
3156
+ if (!require_InvalidParamError.getElevatedAccessToken({
3157
+ consume: false,
3158
+ scope: _dynamic_labs_sdk_api_core.TokenScope.Credentialunlink
3159
+ }, client)) require_InvalidParamError.assertDefined(mfaAuthToken, "mfaAuthToken is required");
3160
+ return require_InvalidParamError.createApiClient({ elevatedAccessTokenScope: _dynamic_labs_sdk_api_core.TokenScope.Credentialunlink }, client).deleteMfaDevice({
3138
3161
  environmentId: core.environmentId,
3139
3162
  mfaDeviceId: deviceId,
3140
- xMfaAuthToken: mfaAuthToken
3163
+ xMfaAuthToken: mfaAuthToken ?? ""
3141
3164
  });
3142
3165
  };
3143
3166
 
@@ -3224,7 +3247,7 @@ const isUserMissingMfaAuth = (client = require_InvalidParamError.getDefaultClien
3224
3247
  */
3225
3248
  const registerTotpMfaDevice = async (client = require_InvalidParamError.getDefaultClient()) => {
3226
3249
  const core = require_InvalidParamError.getCore(client);
3227
- return require_InvalidParamError.createApiClient({}, client).registerTotpMfaDevice({ environmentId: core.environmentId });
3250
+ return require_InvalidParamError.createApiClient({ elevatedAccessTokenScope: _dynamic_labs_sdk_api_core.TokenScope.Credentiallink }, client).registerTotpMfaDevice({ environmentId: core.environmentId });
3228
3251
  };
3229
3252
 
3230
3253
  //#endregion
@@ -5281,7 +5304,7 @@ exports.getCoinbaseBuyUrl = getCoinbaseBuyUrl;
5281
5304
  exports.getConnectedAddresses = getConnectedAddresses;
5282
5305
  exports.getDefaultClient = require_InvalidParamError.getDefaultClient;
5283
5306
  exports.getDeviceRegistrationTokenFromUrl = getDeviceRegistrationTokenFromUrl;
5284
- exports.getElevatedAccessToken = getElevatedAccessToken;
5307
+ exports.getElevatedAccessToken = require_InvalidParamError.getElevatedAccessToken;
5285
5308
  exports.getKrakenAccounts = getKrakenAccounts;
5286
5309
  exports.getKrakenWhitelistedAddresses = getKrakenWhitelistedAddresses;
5287
5310
  exports.getMfaDevices = getMfaDevices;