UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

90 lines (88 loc) 2.68 kB
const require_method_called = require('../../telemetry/events/method-called.js'); const require_contexts = require('../contexts.js'); const require_stable_keys = require('../stable-keys.js'); const require_createCacheKeys = require('./createCacheKeys.js'); const require_usePagesOrInfinite_shared = require('./usePagesOrInfinite.shared.js'); const require_usePagesOrInfinite = require('./usePagesOrInfinite.js'); //#region src/react/hooks/useAPIKeys.tsx /** * The `useAPIKeys()` hook provides access to paginated API keys for the current user or organization. * * @example * ### Basic usage with default pagination * * ```tsx * const { data, isLoading, page, pageCount, fetchNext, fetchPrevious } = useAPIKeys({ * subject: 'user_123', * pageSize: 10, * initialPage: 1, * }); * ``` * * @example * ### With search query * * ```tsx * const [searchValue, setSearchValue] = useState(''); * const debouncedSearch = useDebounce(searchValue, 500); * * const { data, isLoading } = useAPIKeys({ * subject: 'user_123', * query: debouncedSearch.trim(), * pageSize: 10, * }); * ``` * * @example * ### Infinite scroll * * ```tsx * const { data, isLoading, fetchNext, hasNextPage } = useAPIKeys({ * subject: 'user_123', * infinite: true, * }); * ``` */ function useAPIKeys(params) { require_contexts.useAssertWrappedByClerkProvider("useAPIKeys"); const safeValues = require_usePagesOrInfinite_shared.useWithSafeValues(params, { initialPage: 1, pageSize: 10, keepPreviousData: false, infinite: false, subject: "", query: "", enabled: true }); const clerk = require_contexts.useClerkInstanceContext(); clerk.telemetry?.record(require_method_called.eventMethodCalled("useAPIKeys")); const hookParams = { initialPage: safeValues.initialPage, pageSize: safeValues.pageSize, ...safeValues.subject ? { subject: safeValues.subject } : {}, ...safeValues.query ? { query: safeValues.query } : {} }; const isEnabled = (safeValues.enabled ?? true) && clerk.loaded; return require_usePagesOrInfinite.usePagesOrInfinite({ fetcher: clerk.apiKeys?.getAll ? (params) => clerk.apiKeys.getAll({ ...params, subject: safeValues.subject }) : void 0, config: { keepPreviousData: safeValues.keepPreviousData, infinite: safeValues.infinite, enabled: isEnabled, isSignedIn: clerk.user !== null, initialPage: safeValues.initialPage, pageSize: safeValues.pageSize }, keys: require_createCacheKeys.createCacheKeys({ stablePrefix: require_stable_keys.STABLE_KEYS.API_KEYS_KEY, authenticated: true, tracked: { subject: safeValues.subject }, untracked: { args: hookParams } }) }); } //#endregion exports.useAPIKeys = useAPIKeys;