@clerk/shared 4.22.2-snapshot.v20260630200444 → 4.23.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 (37) hide show
  1. package/dist/loadClerkJsScript.js +1 -1
  2. package/dist/loadClerkJsScript.js.map +1 -1
  3. package/dist/loadClerkJsScript.mjs +1 -1
  4. package/dist/loadClerkJsScript.mjs.map +1 -1
  5. package/dist/react/hooks/index.d.mts +2 -0
  6. package/dist/react/hooks/index.d.ts +2 -0
  7. package/dist/react/hooks/index.js +2 -0
  8. package/dist/react/hooks/useCreditBalance.d.mts +20 -0
  9. package/dist/react/hooks/useCreditBalance.d.ts +20 -0
  10. package/dist/react/hooks/useCreditBalance.js +77 -0
  11. package/dist/react/hooks/useCreditHistory.d.mts +20 -0
  12. package/dist/react/hooks/useCreditHistory.d.ts +20 -0
  13. package/dist/react/hooks/useCreditHistory.js +74 -0
  14. package/dist/react/hooks/useSafeLayoutEffect.d.mts +1 -1
  15. package/dist/react/hooks/useSafeLayoutEffect.d.ts +1 -1
  16. package/dist/react/index.d.mts +3 -1
  17. package/dist/react/index.d.ts +3 -1
  18. package/dist/react/index.js +140 -10
  19. package/dist/react/index.js.map +1 -1
  20. package/dist/react/index.mjs +139 -11
  21. package/dist/react/index.mjs.map +1 -1
  22. package/dist/react/stable-keys.js +5 -1
  23. package/dist/types/billing.d.mts +47 -1
  24. package/dist/types/billing.d.ts +47 -1
  25. package/dist/types/elementIds.d.mts +1 -1
  26. package/dist/types/elementIds.d.ts +1 -1
  27. package/dist/types/index.d.mts +3 -3
  28. package/dist/types/index.d.ts +3 -3
  29. package/dist/types/json.d.mts +19 -1
  30. package/dist/types/json.d.ts +19 -1
  31. package/dist/types/localization.d.mts +18 -0
  32. package/dist/types/localization.d.ts +18 -0
  33. package/dist/versionSelector.js +1 -1
  34. package/dist/versionSelector.js.map +1 -1
  35. package/dist/versionSelector.mjs +1 -1
  36. package/dist/versionSelector.mjs.map +1 -1
  37. package/package.json +1 -1
@@ -126,6 +126,7 @@ const SUBSCRIPTION_KEY = "billing-subscription";
126
126
  const PAYMENT_METHODS_KEY = "billing-payment-methods";
127
127
  const PAYMENT_ATTEMPTS_KEY = "billing-payment-attempts";
128
128
  const STATEMENTS_KEY = "billing-statements";
129
+ const CREDIT_BALANCE_KEY = "billing-credit-balance";
129
130
  const STABLE_KEYS = {
130
131
  USER_MEMBERSHIPS_KEY,
131
132
  USER_INVITATIONS_KEY,
@@ -141,7 +142,8 @@ const STABLE_KEYS = {
141
142
  STATEMENTS_KEY,
142
143
  API_KEYS_KEY,
143
144
  ORGANIZATION_CREATION_DEFAULTS_KEY,
144
- OAUTH_CONSENT_INFO_KEY
145
+ OAUTH_CONSENT_INFO_KEY,
146
+ CREDIT_BALANCE_KEY
145
147
  };
146
148
  /**
147
149
  * Internal stable keys for queries only used by our UI components.
@@ -155,10 +157,12 @@ const ENTERPRISE_CONNECTION_TEST_RUNS_KEY = "enterpriseConnectionTestRuns";
155
157
  const ORGANIZATION_ENTERPRISE_CONNECTIONS_KEY = "organizationEnterpriseConnections";
156
158
  const ORGANIZATION_ENTERPRISE_CONNECTION_TEST_RUNS_KEY = "organizationEnterpriseConnectionTestRuns";
157
159
  const ORGANIZATION_DOMAINS_KEY = "organizationDomains";
160
+ const CREDIT_HISTORY_KEY = "billing-credit-history";
158
161
  const INTERNAL_STABLE_KEYS = {
159
162
  PAYMENT_ATTEMPT_KEY,
160
163
  BILLING_PLANS_KEY,
161
164
  BILLING_STATEMENTS_KEY,
165
+ CREDIT_HISTORY_KEY,
162
166
  USER_ENTERPRISE_CONNECTIONS_KEY,
163
167
  ENTERPRISE_CONNECTION_TEST_RUNS_KEY,
164
168
  ORGANIZATION_ENTERPRISE_CONNECTIONS_KEY,
@@ -846,7 +850,7 @@ function useOAuthConsentCacheKeys(params) {
846
850
 
847
851
  //#endregion
848
852
  //#region src/react/hooks/useOAuthConsent.tsx
849
- const HOOK_NAME$2 = "useOAuthConsent";
853
+ const HOOK_NAME$4 = "useOAuthConsent";
850
854
  /**
851
855
  * The `useOAuthConsent()` hook loads OAuth application consent metadata for the **signed-in** user
852
856
  * (`GET /me/oauth/consent/{oauthClientId}`). Ensure the user is authenticated before relying on this hook
@@ -863,12 +867,12 @@ const HOOK_NAME$2 = "useOAuthConsent";
863
867
  * ```
864
868
  */
865
869
  function useOAuthConsent(params) {
866
- useAssertWrappedByClerkProvider(HOOK_NAME$2);
870
+ useAssertWrappedByClerkProvider(HOOK_NAME$4);
867
871
  const { oauthClientId: oauthClientIdParam, scope, redirectUri, keepPreviousData = true, enabled = true } = params;
868
872
  const clerk = useClerkInstanceContext();
869
873
  const user = useUserBase();
870
874
  const oauthClientId = (oauthClientIdParam ?? "").trim();
871
- clerk.telemetry?.record(eventMethodCalled(HOOK_NAME$2));
875
+ clerk.telemetry?.record(eventMethodCalled(HOOK_NAME$4));
872
876
  const { queryKey } = useOAuthConsentCacheKeys({
873
877
  userId: user?.id ?? null,
874
878
  oauthClientId,
@@ -1319,7 +1323,7 @@ function useOrganizationCreationDefaultsCacheKeys(params) {
1319
1323
 
1320
1324
  //#endregion
1321
1325
  //#region src/react/hooks/useOrganizationCreationDefaults.tsx
1322
- const HOOK_NAME$1 = "useOrganizationCreationDefaults";
1326
+ const HOOK_NAME$3 = "useOrganizationCreationDefaults";
1323
1327
  /**
1324
1328
  * The `useOrganizationCreationDefaults()` hook retrieves the organization creation defaults for the current user.
1325
1329
  *
@@ -1345,12 +1349,12 @@ const HOOK_NAME$1 = "useOrganizationCreationDefaults";
1345
1349
  * ```
1346
1350
  */
1347
1351
  function useOrganizationCreationDefaults(params = {}) {
1348
- useAssertWrappedByClerkProvider(HOOK_NAME$1);
1352
+ useAssertWrappedByClerkProvider(HOOK_NAME$3);
1349
1353
  const { keepPreviousData = true, enabled = true } = params;
1350
1354
  const clerk = useClerkInstanceContext();
1351
1355
  const user = useUserBase();
1352
1356
  const featureEnabled = clerk.__internal_environment?.organizationSettings?.organizationCreationDefaults?.enabled ?? false;
1353
- clerk.telemetry?.record(eventMethodCalled(HOOK_NAME$1));
1357
+ clerk.telemetry?.record(eventMethodCalled(HOOK_NAME$3));
1354
1358
  const { queryKey } = useOrganizationCreationDefaultsCacheKeys({ userId: user?.id ?? null });
1355
1359
  const queryEnabled = Boolean(user) && enabled && featureEnabled && clerk.loaded;
1356
1360
  const query = useClerkQuery({
@@ -2375,12 +2379,12 @@ function useSubscriptionCacheKeys(params) {
2375
2379
 
2376
2380
  //#endregion
2377
2381
  //#region src/react/hooks/useSubscription.tsx
2378
- const HOOK_NAME = "useSubscription";
2382
+ const HOOK_NAME$2 = "useSubscription";
2379
2383
  /**
2380
2384
  * @internal
2381
2385
  */
2382
2386
  function useSubscription(params) {
2383
- useAssertWrappedByClerkProvider(HOOK_NAME);
2387
+ useAssertWrappedByClerkProvider(HOOK_NAME$2);
2384
2388
  const clerk = useClerkInstanceContext();
2385
2389
  const user = useUserBase();
2386
2390
  const organization = useOrganizationBase();
@@ -2388,7 +2392,7 @@ function useSubscription(params) {
2388
2392
  const recordedRef = useRef(false);
2389
2393
  useEffect(() => {
2390
2394
  if (!recordedRef.current && clerk?.telemetry) {
2391
- clerk.telemetry.record(eventMethodCalled(HOOK_NAME));
2395
+ clerk.telemetry.record(eventMethodCalled(HOOK_NAME$2));
2392
2396
  recordedRef.current = true;
2393
2397
  }
2394
2398
  }, [clerk]);
@@ -2476,6 +2480,130 @@ const useCheckout = (options) => {
2476
2480
  return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
2477
2481
  };
2478
2482
 
2483
+ //#endregion
2484
+ //#region src/react/hooks/useCreditBalance.tsx
2485
+ const HOOK_NAME$1 = "useCreditBalance";
2486
+ /**
2487
+ * @internal
2488
+ */
2489
+ function __internal_useCreditBalanceQuery(params) {
2490
+ useAssertWrappedByClerkProvider(HOOK_NAME$1);
2491
+ const clerk = useClerkInstanceContext();
2492
+ const user = useUserBase();
2493
+ const organization = useOrganizationBase();
2494
+ const billingEnabled = useBillingIsEnabled(params);
2495
+ const recordedRef = useRef(false);
2496
+ useEffect(() => {
2497
+ if (!recordedRef.current && clerk?.telemetry) {
2498
+ clerk.telemetry.record(eventMethodCalled(HOOK_NAME$1));
2499
+ recordedRef.current = true;
2500
+ }
2501
+ }, [clerk]);
2502
+ const keepPreviousData = params?.keepPreviousData ?? false;
2503
+ const [queryClient] = useClerkQueryClient();
2504
+ const { queryKey, invalidationKey, stableKey, authenticated } = useMemo(() => {
2505
+ const safeOrgId = params?.for === "organization" ? organization?.id : void 0;
2506
+ return createCacheKeys({
2507
+ stablePrefix: STABLE_KEYS.CREDIT_BALANCE_KEY,
2508
+ authenticated: true,
2509
+ tracked: {
2510
+ userId: user?.id,
2511
+ orgId: safeOrgId
2512
+ },
2513
+ untracked: { args: { orgId: safeOrgId } }
2514
+ });
2515
+ }, [
2516
+ user?.id,
2517
+ organization?.id,
2518
+ params?.for
2519
+ ]);
2520
+ const queriesEnabled = Boolean(user?.id && billingEnabled && (params?.enabled ?? true));
2521
+ useClearQueriesOnSignOut({
2522
+ isSignedOut: user === null,
2523
+ authenticated,
2524
+ stableKeys: stableKey
2525
+ });
2526
+ const query = useClerkQuery({
2527
+ queryKey,
2528
+ queryFn: ({ queryKey }) => {
2529
+ const obj = queryKey[3];
2530
+ return clerk.billing.getCreditBalance(obj.args);
2531
+ },
2532
+ staleTime: 1e3 * 60,
2533
+ enabled: queriesEnabled,
2534
+ placeholderData: defineKeepPreviousDataFn(keepPreviousData && queriesEnabled)
2535
+ });
2536
+ const revalidate = useCallback(() => queryClient.invalidateQueries({ queryKey: invalidationKey }), [queryClient, invalidationKey]);
2537
+ return {
2538
+ data: query.data,
2539
+ error: query.error ?? void 0,
2540
+ isLoading: query.isLoading,
2541
+ isFetching: query.isFetching,
2542
+ revalidate
2543
+ };
2544
+ }
2545
+
2546
+ //#endregion
2547
+ //#region src/react/hooks/useCreditHistory.tsx
2548
+ const HOOK_NAME = "useCreditHistory";
2549
+ /**
2550
+ * @internal
2551
+ */
2552
+ function __internal_useCreditHistoryQuery(params) {
2553
+ useAssertWrappedByClerkProvider(HOOK_NAME);
2554
+ const clerk = useClerkInstanceContext();
2555
+ const user = useUserBase();
2556
+ const organization = useOrganizationBase();
2557
+ const billingEnabled = useBillingIsEnabled(params);
2558
+ const recordedRef = useRef(false);
2559
+ useEffect(() => {
2560
+ if (!recordedRef.current && clerk?.telemetry) {
2561
+ clerk.telemetry.record(eventMethodCalled(HOOK_NAME));
2562
+ recordedRef.current = true;
2563
+ }
2564
+ }, [clerk]);
2565
+ const [queryClient] = useClerkQueryClient();
2566
+ const { queryKey, invalidationKey, stableKey, authenticated } = useMemo(() => {
2567
+ const safeOrgId = params?.for === "organization" ? organization?.id : void 0;
2568
+ return createCacheKeys({
2569
+ stablePrefix: INTERNAL_STABLE_KEYS.CREDIT_HISTORY_KEY,
2570
+ authenticated: true,
2571
+ tracked: {
2572
+ userId: user?.id,
2573
+ orgId: safeOrgId
2574
+ },
2575
+ untracked: { args: { orgId: safeOrgId } }
2576
+ });
2577
+ }, [
2578
+ user?.id,
2579
+ organization?.id,
2580
+ params?.for
2581
+ ]);
2582
+ const queriesEnabled = Boolean(user?.id && billingEnabled && (params?.enabled ?? true));
2583
+ useClearQueriesOnSignOut({
2584
+ isSignedOut: user === null,
2585
+ authenticated,
2586
+ stableKeys: stableKey
2587
+ });
2588
+ const query = useClerkQuery({
2589
+ queryKey,
2590
+ queryFn: ({ queryKey }) => {
2591
+ const obj = queryKey[3];
2592
+ return clerk.billing.getCreditHistory(obj.args);
2593
+ },
2594
+ staleTime: 1e3 * 60,
2595
+ enabled: queriesEnabled
2596
+ });
2597
+ const revalidate = useCallback(() => queryClient.invalidateQueries({ queryKey: invalidationKey }), [queryClient, invalidationKey]);
2598
+ return {
2599
+ data: query.data,
2600
+ error: query.error ?? void 0,
2601
+ isLoading: query.isLoading,
2602
+ isFetching: query.isFetching,
2603
+ revalidate
2604
+ };
2605
+ }
2606
+
2479
2607
  //#endregion
2480
2608
  //#region src/react/hooks/useStatementQuery.shared.ts
2481
2609
  function useStatementQueryCacheKeys(params) {
@@ -3581,5 +3709,5 @@ const usePortalRoot = () => {
3581
3709
  };
3582
3710
 
3583
3711
  //#endregion
3584
- export { ClerkContextProvider, ClerkInstanceContext, InitialStateProvider, OptionsContext, UNSAFE_PortalProvider, __createClerkTestQueryClient, __experimental_CheckoutProvider, PaymentElement as __experimental_PaymentElement, PaymentElementProvider as __experimental_PaymentElementProvider, useCheckout as __experimental_useCheckout, usePaymentAttempts as __experimental_usePaymentAttempts, usePaymentElement as __experimental_usePaymentElement, usePaymentMethods as __experimental_usePaymentMethods, usePlans as __experimental_usePlans, useStatements as __experimental_useStatements, useSubscription as __experimental_useSubscription, useClientBase as __internal_useClientBase, useOrganizationBase as __internal_useOrganizationBase, useOrganizationDomains as __internal_useOrganizationDomains, useOrganizationEnterpriseConnectionTestRuns as __internal_useOrganizationEnterpriseConnectionTestRuns, useOrganizationEnterpriseConnections as __internal_useOrganizationEnterpriseConnections, usePaymentAttemptQuery as __internal_usePaymentAttemptQuery, __internal_usePlanDetailsQuery, useSessionBase as __internal_useSessionBase, useStatementQuery as __internal_useStatementQuery, useUserBase as __internal_useUserBase, useUserEnterpriseConnections as __internal_useUserEnterpriseConnections, __resetClerkQueryClientForTest, __setClerkQueryClientForTest, assertContextExists, createContextAndHook, getClerkQueryClient, isDeeplyEqual, useAPIKeys, useAssertWrappedByClerkProvider, useAttemptToEnableOrganizations, useClerk, useClerkInstanceContext, useDeepEqualMemo, useInitialStateContext, useOAuthConsent, useOptionsContext, useOrganization, useOrganizationCreationDefaults, useOrganizationList, usePortalRoot, useReverification, useSafeLayoutEffect, useSession, useSessionList, useUser };
3712
+ export { ClerkContextProvider, ClerkInstanceContext, InitialStateProvider, OptionsContext, UNSAFE_PortalProvider, __createClerkTestQueryClient, __experimental_CheckoutProvider, PaymentElement as __experimental_PaymentElement, PaymentElementProvider as __experimental_PaymentElementProvider, useCheckout as __experimental_useCheckout, usePaymentAttempts as __experimental_usePaymentAttempts, usePaymentElement as __experimental_usePaymentElement, usePaymentMethods as __experimental_usePaymentMethods, usePlans as __experimental_usePlans, useStatements as __experimental_useStatements, useSubscription as __experimental_useSubscription, useClientBase as __internal_useClientBase, __internal_useCreditBalanceQuery, __internal_useCreditHistoryQuery, useOrganizationBase as __internal_useOrganizationBase, useOrganizationDomains as __internal_useOrganizationDomains, useOrganizationEnterpriseConnectionTestRuns as __internal_useOrganizationEnterpriseConnectionTestRuns, useOrganizationEnterpriseConnections as __internal_useOrganizationEnterpriseConnections, usePaymentAttemptQuery as __internal_usePaymentAttemptQuery, __internal_usePlanDetailsQuery, useSessionBase as __internal_useSessionBase, useStatementQuery as __internal_useStatementQuery, useUserBase as __internal_useUserBase, useUserEnterpriseConnections as __internal_useUserEnterpriseConnections, __resetClerkQueryClientForTest, __setClerkQueryClientForTest, assertContextExists, createContextAndHook, getClerkQueryClient, isDeeplyEqual, useAPIKeys, useAssertWrappedByClerkProvider, useAttemptToEnableOrganizations, useClerk, useClerkInstanceContext, useDeepEqualMemo, useInitialStateContext, useOAuthConsent, useOptionsContext, useOrganization, useOrganizationCreationDefaults, useOrganizationList, usePortalRoot, useReverification, useSafeLayoutEffect, useSession, useSessionList, useUser };
3585
3713
  //# sourceMappingURL=index.mjs.map