@better-auth-ui/core
Version:
Authentication components and data utilities for [Better Auth](https://better-auth.com), available for React and Solid.
69 lines (68 loc) • 4.29 kB
TypeScript
import { QueryClient, QueryOptions, skipToken } from '@tanstack/query-core';
import { FullOrganizationParams } from './full-organization-query';
import { ListOrganization } from './list-organizations-query';
import { OrganizationAuthClient } from './organization-auth-client';
/**
* Cached data returned by active organization queries.
*/
export type ActiveOrganizationData<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = ListOrganization<TAuthClient> | null;
/**
* Parameters forwarded to the active organization query factory.
*/
export type ActiveOrganizationParams<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = FullOrganizationParams<TAuthClient>;
/**
* Consumer options for active organization query helpers and hooks.
*/
export type ActiveOrganizationOptions<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = Omit<QueryOptions<ActiveOrganizationData<TAuthClient>>, "queryKey"> & ActiveOrganizationParams<TAuthClient>;
type ActiveOrganizationQuery<TAuthClient extends OrganizationAuthClient> = NonNullable<ActiveOrganizationParams<TAuthClient>> extends {
query?: infer TQuery;
} ? TQuery : never;
/**
* Resolve the active organization query from explicit options and plugin state.
*
* An explicit caller-provided organization ID or slug takes precedence over
* plugin state. Otherwise, a plugin slug selects the route organization and a
* `null` plugin slug selects no organization. An undefined plugin slug lets
* Better Auth use the active organization stored on the session.
*
* @param query - Caller-provided organization query options.
* @param organizationSlug - Organization slug from framework plugin state.
*/
export declare function resolveActiveOrganizationQuery<TAuthClient extends OrganizationAuthClient>(query: ActiveOrganizationQuery<TAuthClient> | undefined, organizationSlug?: string | null): ActiveOrganizationQuery<TAuthClient> | undefined;
/**
* Query options factory for the current user's active organization.
*
* `organizationSlug: null` returns `null` without a network request, while a
* missing user ID disables the query with `skipToken`.
*
* @param authClient - The Better Auth organization client.
* @param userId - The current signed-in user's ID. Used for cache partitioning.
* @param params - Parameters forwarded to `getFullOrganization`.
*/
export declare function activeOrganizationOptions<TAuthClient extends OrganizationAuthClient>(authClient: TAuthClient, userId?: string, params?: ActiveOrganizationParams<TAuthClient>): {
queryKey: readonly ["auth", "user", string | undefined, "organization", "active", {
organizationId?: string | undefined;
organizationSlug?: string | undefined;
membersLimit?: string | number | undefined;
} | null];
queryFn: typeof skipToken | (({ signal }: {
signal: AbortSignal;
}) => Promise<ActiveOrganizationData<TAuthClient>>);
};
/**
* Get the active organization from cache, fetching if needed.
*/
export declare const ensureActiveOrganization: <TAuthClient extends OrganizationAuthClient>(queryClient: QueryClient, authClient: TAuthClient, userId: string, options?: ActiveOrganizationOptions<TAuthClient>) => Promise<ActiveOrganizationData<TAuthClient>>;
/**
* Prefetch the active organization into the query cache.
*/
export declare const prefetchActiveOrganization: <TAuthClient extends OrganizationAuthClient>(queryClient: QueryClient, authClient: TAuthClient, userId: string, options?: ActiveOrganizationOptions<TAuthClient>) => Promise<void>;
/**
* Fetch and cache the active organization, resolving with data or throwing.
*/
export declare const fetchActiveOrganization: <TAuthClient extends OrganizationAuthClient>(queryClient: QueryClient, authClient: TAuthClient, userId: string, options?: ActiveOrganizationOptions<TAuthClient>) => Promise<ActiveOrganizationData<TAuthClient>>;
/**
* Read the active organization synchronously from the query cache.
*/
export declare const getActiveOrganization: <TAuthClient extends OrganizationAuthClient = OrganizationAuthClient>(queryClient: QueryClient, _authClient?: TAuthClient, userId?: string, params?: ActiveOrganizationParams<TAuthClient>) => ActiveOrganizationData<TAuthClient> | undefined;
export {};