@clerk/shared 4.32.0-snapshot.v20260904162929 → 4.32.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 (103) hide show
  1. package/dist/_chunks/{error-C-B61RHn.js → error-CdWUgmMd.js} +4 -4
  2. package/dist/_chunks/error-CdWUgmMd.js.map +1 -0
  3. package/dist/_chunks/{error-CYyD2kei.mjs → error-wrUdW78M.mjs} +4 -4
  4. package/dist/_chunks/error-wrUdW78M.mjs.map +1 -0
  5. package/dist/error.js +1 -1
  6. package/dist/error.mjs +1 -1
  7. package/dist/errors/errorThrower.d.mts +3 -3
  8. package/dist/errors/errorThrower.d.ts +3 -3
  9. package/dist/errors/errorThrower.js +3 -3
  10. package/dist/internal/clerk-js/componentGuards.d.mts +2 -1
  11. package/dist/internal/clerk-js/componentGuards.d.ts +2 -1
  12. package/dist/internal/clerk-js/componentGuards.js +4 -0
  13. package/dist/internal/clerk-js/componentGuards.js.map +1 -1
  14. package/dist/internal/clerk-js/componentGuards.mjs +4 -1
  15. package/dist/internal/clerk-js/componentGuards.mjs.map +1 -1
  16. package/dist/internal/clerk-js/passkeys.js +1 -1
  17. package/dist/internal/clerk-js/passkeys.mjs +1 -1
  18. package/dist/internal/clerk-js/protectCheck.js +1 -1
  19. package/dist/internal/clerk-js/protectCheck.mjs +1 -1
  20. package/dist/internal/clerk-js/warnings.d.mts +3 -2
  21. package/dist/internal/clerk-js/warnings.d.ts +3 -2
  22. package/dist/internal/clerk-js/warnings.js +2 -1
  23. package/dist/internal/clerk-js/warnings.js.map +1 -1
  24. package/dist/internal/clerk-js/warnings.mjs +2 -1
  25. package/dist/internal/clerk-js/warnings.mjs.map +1 -1
  26. package/dist/internal/clerk-js/web3.js +1 -1
  27. package/dist/internal/clerk-js/web3.mjs +1 -1
  28. package/dist/keys.d.mts +1 -6
  29. package/dist/keys.d.ts +1 -6
  30. package/dist/keys.js +2 -8
  31. package/dist/keys.js.map +1 -1
  32. package/dist/keys.mjs +3 -8
  33. package/dist/keys.mjs.map +1 -1
  34. package/dist/loadClerkJsScript.js +2 -2
  35. package/dist/loadClerkJsScript.js.map +1 -1
  36. package/dist/loadClerkJsScript.mjs +2 -2
  37. package/dist/loadClerkJsScript.mjs.map +1 -1
  38. package/dist/react/hooks/index.d.mts +2 -0
  39. package/dist/react/hooks/index.d.ts +2 -0
  40. package/dist/react/hooks/index.js +2 -0
  41. package/dist/react/hooks/useClerk.d.mts +1 -1
  42. package/dist/react/hooks/useClerk.d.ts +1 -1
  43. package/dist/react/hooks/useClerk.js +1 -1
  44. package/dist/react/hooks/useOAuthDeviceVerification.types.d.mts +31 -2
  45. package/dist/react/hooks/useOAuthDeviceVerification.types.d.ts +31 -2
  46. package/dist/react/hooks/useOrganization.d.mts +1 -1
  47. package/dist/react/hooks/useOrganization.d.ts +1 -1
  48. package/dist/react/hooks/useOrganizationDirectorySync.d.mts +27 -0
  49. package/dist/react/hooks/useOrganizationDirectorySync.d.ts +27 -0
  50. package/dist/react/hooks/useOrganizationDirectorySync.js +89 -0
  51. package/dist/react/hooks/useOrganizationDirectorySync.shared.js +49 -0
  52. package/dist/react/hooks/useOrganizationDirectorySyncUsers.d.mts +53 -0
  53. package/dist/react/hooks/useOrganizationDirectorySyncUsers.d.ts +53 -0
  54. package/dist/react/hooks/useOrganizationDirectorySyncUsers.js +71 -0
  55. package/dist/react/hooks/useOrganizationEnterpriseConnectionTestRuns.js +7 -5
  56. package/dist/react/hooks/useOrganizationList.d.mts +1 -1
  57. package/dist/react/hooks/useOrganizationList.d.ts +1 -1
  58. package/dist/react/hooks/useReverification.d.mts +1 -1
  59. package/dist/react/hooks/useReverification.d.ts +1 -1
  60. package/dist/react/index.d.mts +3 -1
  61. package/dist/react/index.d.ts +3 -1
  62. package/dist/react/index.js +199 -8
  63. package/dist/react/index.js.map +1 -1
  64. package/dist/react/index.mjs +198 -9
  65. package/dist/react/index.mjs.map +1 -1
  66. package/dist/react/stable-keys.js +5 -1
  67. package/dist/types/billing.d.mts +1 -1
  68. package/dist/types/billing.d.ts +1 -1
  69. package/dist/types/clerk.d.mts +19 -3
  70. package/dist/types/clerk.d.ts +19 -3
  71. package/dist/types/directorySync.d.mts +123 -0
  72. package/dist/types/directorySync.d.ts +123 -0
  73. package/dist/types/elementIds.d.mts +2 -2
  74. package/dist/types/elementIds.d.ts +2 -2
  75. package/dist/types/hooks.d.mts +11 -11
  76. package/dist/types/hooks.d.ts +11 -11
  77. package/dist/types/index.d.mts +2 -1
  78. package/dist/types/index.d.ts +2 -1
  79. package/dist/types/localization.d.mts +108 -0
  80. package/dist/types/localization.d.ts +108 -0
  81. package/dist/types/oauthApplication.d.mts +76 -3
  82. package/dist/types/oauthApplication.d.ts +76 -3
  83. package/dist/types/organization.d.mts +11 -1
  84. package/dist/types/organization.d.ts +11 -1
  85. package/dist/types/organizationDomain.d.mts +3 -3
  86. package/dist/types/organizationDomain.d.ts +3 -3
  87. package/dist/types/signIn.d.mts +2 -0
  88. package/dist/types/signIn.d.ts +2 -0
  89. package/dist/types/signInFuture.d.mts +19 -7
  90. package/dist/types/signInFuture.d.ts +19 -7
  91. package/dist/types/signUpFuture.d.mts +5 -5
  92. package/dist/types/signUpFuture.d.ts +5 -5
  93. package/dist/types/user.d.mts +1 -1
  94. package/dist/types/user.d.ts +1 -1
  95. package/dist/types/userSettings.d.mts +2 -1
  96. package/dist/types/userSettings.d.ts +2 -1
  97. package/dist/versionSelector.js +1 -1
  98. package/dist/versionSelector.js.map +1 -1
  99. package/dist/versionSelector.mjs +1 -1
  100. package/dist/versionSelector.mjs.map +1 -1
  101. package/package.json +2 -2
  102. package/dist/_chunks/error-C-B61RHn.js.map +0 -1
  103. package/dist/_chunks/error-CYyD2kei.mjs.map +0 -1
@@ -4,7 +4,7 @@ const require_authorization_errors = require('../authorization-errors.js');
4
4
  const require_authorization = require('../authorization.js');
5
5
  const require_deriveState = require('../deriveState.js');
6
6
  const require_clerkRuntimeError = require('../_chunks/clerkRuntimeError-CYZdTZ_x.js');
7
- const require_error = require('../_chunks/error-C-B61RHn.js');
7
+ const require_error = require('../_chunks/error-CdWUgmMd.js');
8
8
  const require_logger = require('../logger.js');
9
9
  const require_organization = require('../organization.js');
10
10
  const require_telemetry = require('../_chunks/telemetry-DZp9OI1j.js');
@@ -159,6 +159,8 @@ const ENTERPRISE_CONNECTION_TEST_RUNS_KEY = "enterpriseConnectionTestRuns";
159
159
  const ORGANIZATION_ENTERPRISE_CONNECTIONS_KEY = "organizationEnterpriseConnections";
160
160
  const ORGANIZATION_ENTERPRISE_CONNECTION_TEST_RUNS_KEY = "organizationEnterpriseConnectionTestRuns";
161
161
  const ORGANIZATION_DOMAINS_KEY = "organizationDomains";
162
+ const ORGANIZATION_DIRECTORY_SYNC_KEY = "organizationDirectorySync";
163
+ const ORGANIZATION_DIRECTORY_SYNC_USERS_KEY = "organizationDirectorySyncUsers";
162
164
  const CREDIT_HISTORY_KEY = "billing-credit-history";
163
165
  const INTERNAL_STABLE_KEYS = {
164
166
  PAYMENT_ATTEMPT_KEY,
@@ -169,7 +171,9 @@ const INTERNAL_STABLE_KEYS = {
169
171
  ENTERPRISE_CONNECTION_TEST_RUNS_KEY,
170
172
  ORGANIZATION_ENTERPRISE_CONNECTIONS_KEY,
171
173
  ORGANIZATION_ENTERPRISE_CONNECTION_TEST_RUNS_KEY,
172
- ORGANIZATION_DOMAINS_KEY
174
+ ORGANIZATION_DOMAINS_KEY,
175
+ ORGANIZATION_DIRECTORY_SYNC_KEY,
176
+ ORGANIZATION_DIRECTORY_SYNC_USERS_KEY
173
177
  };
174
178
 
175
179
  //#endregion
@@ -1079,7 +1083,7 @@ function useSessionBase() {
1079
1083
  *
1080
1084
  * @example
1081
1085
  *
1082
- * The following example uses the `useClerk()` hook to access the `clerk` object. The `clerk` object is used to call the [`openSignIn()`](https://clerk.com/docs/reference/objects/clerk#sign-in) method to open the sign-in modal.
1086
+ * The following example uses the `useClerk()` hook to access the `clerk` object. The `clerk` object is used to call the [`openSignIn()`](https://clerk.com/docs/reference/objects/clerk#opensignin) method to open the sign-in modal.
1083
1087
  *
1084
1088
  * <Tabs items='React,Next.js'>
1085
1089
  * <Tab>
@@ -3179,6 +3183,189 @@ function useOrganizationDomains(params = {}) {
3179
3183
  };
3180
3184
  }
3181
3185
 
3186
+ //#endregion
3187
+ //#region src/react/hooks/useOrganizationDirectorySync.shared.ts
3188
+ /**
3189
+ * @internal
3190
+ */
3191
+ function useOrganizationDirectorySyncCacheKeys(params) {
3192
+ const { organizationId, enterpriseConnectionId } = params;
3193
+ return (0, react.useMemo)(() => {
3194
+ return createCacheKeys({
3195
+ stablePrefix: INTERNAL_STABLE_KEYS.ORGANIZATION_DIRECTORY_SYNC_KEY,
3196
+ authenticated: Boolean(organizationId),
3197
+ tracked: {
3198
+ organizationId: organizationId ?? null,
3199
+ enterpriseConnectionId: enterpriseConnectionId ?? null
3200
+ },
3201
+ untracked: { args: {} }
3202
+ });
3203
+ }, [organizationId, enterpriseConnectionId]);
3204
+ }
3205
+ /**
3206
+ * @internal
3207
+ */
3208
+ function useOrganizationDirectorySyncUsersCacheKeys(params) {
3209
+ const { organizationId, enterpriseConnectionId, directoryId, args } = params;
3210
+ return (0, react.useMemo)(() => {
3211
+ return createCacheKeys({
3212
+ stablePrefix: INTERNAL_STABLE_KEYS.ORGANIZATION_DIRECTORY_SYNC_USERS_KEY,
3213
+ authenticated: Boolean(organizationId),
3214
+ tracked: {
3215
+ organizationId: organizationId ?? null,
3216
+ enterpriseConnectionId: enterpriseConnectionId ?? null,
3217
+ directoryId: directoryId ?? null
3218
+ },
3219
+ untracked: { args }
3220
+ });
3221
+ }, [
3222
+ organizationId,
3223
+ enterpriseConnectionId,
3224
+ directoryId,
3225
+ JSON.stringify(args)
3226
+ ]);
3227
+ }
3228
+
3229
+ //#endregion
3230
+ //#region src/react/hooks/useOrganizationDirectorySync.tsx
3231
+ /**
3232
+ * The Directory Sync directory bound to an enterprise connection of the active organization.
3233
+ *
3234
+ * @internal
3235
+ */
3236
+ function useOrganizationDirectorySync(params) {
3237
+ const { enterpriseConnectionId, enabled = true } = params;
3238
+ const clerk = useClerkInstanceContext();
3239
+ const organization = useOrganizationBase();
3240
+ const [queryClient] = useClerkQueryClient();
3241
+ const { queryKey, invalidationKey, stableKey, authenticated } = useOrganizationDirectorySyncCacheKeys({
3242
+ organizationId: organization?.id ?? null,
3243
+ enterpriseConnectionId
3244
+ });
3245
+ const queryEnabled = enabled && clerk.loaded && Boolean(organization) && Boolean(enterpriseConnectionId);
3246
+ useClearQueriesOnSignOut({
3247
+ isSignedOut: organization === null,
3248
+ authenticated,
3249
+ stableKeys: stableKey
3250
+ });
3251
+ const query = useClerkQuery({
3252
+ queryKey,
3253
+ queryFn: async () => {
3254
+ if (!enterpriseConnectionId) throw new Error("enterpriseConnectionId is required to fetch the directory");
3255
+ try {
3256
+ return await organization?.getDirectorySync(enterpriseConnectionId) ?? null;
3257
+ } catch (err) {
3258
+ if (require_error.isClerkAPIResponseError(err) && err.status === 404) return null;
3259
+ throw err;
3260
+ }
3261
+ },
3262
+ enabled: queryEnabled
3263
+ });
3264
+ const revalidate = (0, react.useCallback)(() => queryClient.invalidateQueries({ queryKey: invalidationKey }), [queryClient, invalidationKey]);
3265
+ const createDirectorySync = (0, react.useCallback)(async (createParams) => {
3266
+ if (!enterpriseConnectionId) return;
3267
+ const created = await organization?.createDirectorySync(enterpriseConnectionId, createParams);
3268
+ await revalidate();
3269
+ return created;
3270
+ }, [
3271
+ organization,
3272
+ enterpriseConnectionId,
3273
+ revalidate
3274
+ ]);
3275
+ const directory = query.data;
3276
+ const updateDirectorySync = (0, react.useCallback)(async (updateParams) => {
3277
+ if (!directory) return;
3278
+ const updated = await directory.update(updateParams);
3279
+ await revalidate();
3280
+ return updated;
3281
+ }, [directory, revalidate]);
3282
+ const rotateDirectorySyncToken = (0, react.useCallback)(async () => {
3283
+ if (!directory) return;
3284
+ const rotated = await directory.rotateToken();
3285
+ await revalidate();
3286
+ return rotated;
3287
+ }, [directory, revalidate]);
3288
+ const deleteDirectorySync = (0, react.useCallback)(async () => {
3289
+ if (!directory) return;
3290
+ const deleted = await directory.delete();
3291
+ await revalidate();
3292
+ return deleted;
3293
+ }, [directory, revalidate]);
3294
+ return {
3295
+ data: query.data,
3296
+ error: query.error ?? null,
3297
+ isLoading: query.isLoading,
3298
+ isFetching: query.isFetching,
3299
+ createDirectorySync,
3300
+ updateDirectorySync,
3301
+ rotateDirectorySyncToken,
3302
+ deleteDirectorySync,
3303
+ revalidate
3304
+ };
3305
+ }
3306
+
3307
+ //#endregion
3308
+ //#region src/react/hooks/useOrganizationDirectorySyncUsers.tsx
3309
+ const DEFAULT_POLL_INTERVAL_MS$1 = 2e3;
3310
+ /**
3311
+ * The users provisioned into an enterprise connection's Directory Sync
3312
+ * directory, most recently touched first. Polling is opt-in via `poll`, which
3313
+ * lets the setup flow use the list as a live activity feed.
3314
+ *
3315
+ * @internal
3316
+ */
3317
+ function useOrganizationDirectorySyncUsers(params) {
3318
+ const { directory, params: fetchParams = {
3319
+ initialPage: 1,
3320
+ pageSize: 10
3321
+ }, poll = false, pollIntervalMs = DEFAULT_POLL_INTERVAL_MS$1, enabled = true, keepPreviousData = true } = params;
3322
+ const clerk = useClerkInstanceContext();
3323
+ const organization = useOrganizationBase();
3324
+ const [queryClient] = useClerkQueryClient();
3325
+ const enterpriseConnectionId = directory?.enterpriseConnectionId ?? null;
3326
+ const directoryId = directory?.id ?? null;
3327
+ const { queryKey, invalidationKey, stableKey, authenticated } = useOrganizationDirectorySyncUsersCacheKeys({
3328
+ organizationId: organization?.id ?? null,
3329
+ enterpriseConnectionId,
3330
+ directoryId,
3331
+ args: fetchParams
3332
+ });
3333
+ useClearQueriesOnSignOut({
3334
+ isSignedOut: organization === null,
3335
+ authenticated,
3336
+ stableKeys: stableKey
3337
+ });
3338
+ const queryEnabled = enabled && clerk.loaded && Boolean(organization) && Boolean(directory);
3339
+ const currentTracked = queryKey[2];
3340
+ const query = useClerkQuery({
3341
+ queryKey,
3342
+ queryFn: () => {
3343
+ if (!directory) throw new Error("directory is required to fetch directory users");
3344
+ return directory.getUsers(fetchParams);
3345
+ },
3346
+ refetchInterval: () => poll ? pollIntervalMs : false,
3347
+ enabled: queryEnabled,
3348
+ refetchIntervalInBackground: false,
3349
+ placeholderData: keepPreviousData ? (previousData, previousQuery) => {
3350
+ const previousTracked = previousQuery?.queryKey[2];
3351
+ return Boolean(currentTracked.organizationId) && Boolean(currentTracked.directoryId) && previousTracked?.organizationId === currentTracked.organizationId && previousTracked?.directoryId === currentTracked.directoryId ? previousData : void 0;
3352
+ } : void 0
3353
+ });
3354
+ const revalidate = (0, react.useCallback)(async () => {
3355
+ await queryClient.invalidateQueries({ queryKey: invalidationKey });
3356
+ }, [queryClient, invalidationKey]);
3357
+ const isPolling = queryEnabled && poll;
3358
+ return {
3359
+ data: queryEnabled ? query.data?.data : void 0,
3360
+ totalCount: queryEnabled ? query.data?.total_count : void 0,
3361
+ error: query.error ?? null,
3362
+ isLoading: query.isLoading,
3363
+ isFetching: query.isFetching,
3364
+ isPolling,
3365
+ revalidate
3366
+ };
3367
+ }
3368
+
3182
3369
  //#endregion
3183
3370
  //#region src/react/hooks/useOrganizationEnterpriseConnectionTestRuns.shared.ts
3184
3371
  /**
@@ -3230,9 +3417,10 @@ function useOrganizationEnterpriseConnectionTestRuns(params) {
3230
3417
  stableKeys: stableKey
3231
3418
  });
3232
3419
  const queryEnabled = enabled && clerk.loaded && Boolean(organization) && Boolean(enterpriseConnectionId);
3233
- const [shouldPoll, setShouldPoll] = (0, react.useState)(false);
3420
+ const [pollingConnectionId, setPollingConnectionId] = (0, react.useState)(null);
3421
+ const shouldPoll = pollingConnectionId !== null && pollingConnectionId === enterpriseConnectionId;
3234
3422
  (0, react.useEffect)(() => {
3235
- setShouldPoll(false);
3423
+ setPollingConnectionId((current) => current !== null && current !== enterpriseConnectionId ? null : current);
3236
3424
  }, [enterpriseConnectionId]);
3237
3425
  const query = useClerkQuery({
3238
3426
  queryKey,
@@ -3250,10 +3438,10 @@ function useOrganizationEnterpriseConnectionTestRuns(params) {
3250
3438
  });
3251
3439
  const hasRows = (query.data?.data?.length ?? 0) > 0;
3252
3440
  (0, react.useEffect)(() => {
3253
- if (shouldPoll && hasRows) setShouldPoll(false);
3441
+ if (shouldPoll && hasRows) setPollingConnectionId(null);
3254
3442
  }, [shouldPoll, hasRows]);
3255
3443
  const revalidate = (0, react.useCallback)(async (options) => {
3256
- if ((options?.armPolling ?? true) && !hasRows) setShouldPoll(true);
3444
+ if ((options?.armPolling ?? true) && !hasRows) setPollingConnectionId(enterpriseConnectionId);
3257
3445
  if (options?.exact) await queryClient.invalidateQueries({
3258
3446
  queryKey,
3259
3447
  exact: true
@@ -3268,7 +3456,8 @@ function useOrganizationEnterpriseConnectionTestRuns(params) {
3268
3456
  queryClient,
3269
3457
  invalidationKey,
3270
3458
  queryKey,
3271
- hasRows
3459
+ hasRows,
3460
+ enterpriseConnectionId
3272
3461
  ]);
3273
3462
  const isPolling = queryEnabled && shouldPoll && !hasRows;
3274
3463
  return {
@@ -3880,6 +4069,8 @@ exports.__internal_useClientBase = useClientBase;
3880
4069
  exports.__internal_useCreditBalanceQuery = __internal_useCreditBalanceQuery;
3881
4070
  exports.__internal_useCreditHistoryQuery = __internal_useCreditHistoryQuery;
3882
4071
  exports.__internal_useOrganizationBase = useOrganizationBase;
4072
+ exports.__internal_useOrganizationDirectorySync = useOrganizationDirectorySync;
4073
+ exports.__internal_useOrganizationDirectorySyncUsers = useOrganizationDirectorySyncUsers;
3883
4074
  exports.__internal_useOrganizationDomains = useOrganizationDomains;
3884
4075
  exports.__internal_useOrganizationEnterpriseConnectionTestRuns = useOrganizationEnterpriseConnectionTestRuns;
3885
4076
  exports.__internal_useOrganizationEnterpriseConnections = useOrganizationEnterpriseConnections;