better-auth
Version:
The most comprehensive authentication framework for TypeScript.
123 lines (122 loc) • 5.71 kB
text/typescript
import { PrettifyDeep, UnionToIntersection } from "../types/helper.mjs";
import { InferActions, InferClientAPI, InferErrorCodes, IsSignal } from "./types.mjs";
import { BetterAuthClientOptions, BetterAuthClientPlugin } from "@better-auth/core";
import { BASE_ERROR_CODES } from "@better-auth/core/error";
import * as nanostores5 from "nanostores";
import { Atom } from "nanostores";
import * as _better_fetch_fetch95 from "@better-fetch/fetch";
import { BetterFetchError } from "@better-fetch/fetch";
//#region src/client/vanilla.d.ts
type InferResolvedHooks<O extends BetterAuthClientOptions> = O extends {
plugins: Array<infer Plugin>;
} ? UnionToIntersection<Plugin extends BetterAuthClientPlugin ? Plugin["getAtoms"] extends ((fetch: any) => infer Atoms) ? Atoms extends Record<string, any> ? { [key in keyof Atoms as IsSignal<key> extends true ? never : key extends string ? `use${Capitalize<key>}` : never]: Atoms[key] } : {} : {} : {}> : {};
declare function createAuthClient<Option extends BetterAuthClientOptions>(options?: Option | undefined): UnionToIntersection<InferResolvedHooks<Option>> & InferClientAPI<Option> & InferActions<Option> & {
useSession: Atom<{
data: InferClientAPI<Option> extends {
getSession: () => Promise<infer Res>;
} ? Res extends {
data: null;
error: {
message?: string | undefined;
status: number;
statusText: string;
};
} | {
data: infer S;
error: null;
} ? S : Res extends Record<string, any> ? Res : never : never;
error: BetterFetchError | null;
isPending: boolean;
}>;
$fetch: _better_fetch_fetch95.BetterFetch<{
plugins: (_better_fetch_fetch95.BetterFetchPlugin<Record<string, any>> | {
id: string;
name: string;
hooks: {
onSuccess(context: _better_fetch_fetch95.SuccessContext<any>): void;
};
} | {
id: string;
name: string;
hooks: {
onSuccess: ((context: _better_fetch_fetch95.SuccessContext<any>) => Promise<void> | void) | undefined;
onError: ((context: _better_fetch_fetch95.ErrorContext) => Promise<void> | void) | undefined;
onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch95.RequestContext<T>) => Promise<_better_fetch_fetch95.RequestContext | void> | _better_fetch_fetch95.RequestContext | void) | undefined;
onResponse: ((context: _better_fetch_fetch95.ResponseContext) => Promise<Response | void | _better_fetch_fetch95.ResponseContext> | Response | _better_fetch_fetch95.ResponseContext | void) | undefined;
};
})[];
cache?: RequestCache | undefined;
method: string;
headers?: (HeadersInit & (HeadersInit | {
accept: "application/json" | "text/plain" | "application/octet-stream";
"content-type": "application/json" | "text/plain" | "application/x-www-form-urlencoded" | "multipart/form-data" | "application/octet-stream";
authorization: "Bearer" | "Basic";
})) | undefined;
redirect?: RequestRedirect | undefined;
credentials?: RequestCredentials;
integrity?: string | undefined;
keepalive?: boolean | undefined;
mode?: RequestMode | undefined;
priority?: RequestPriority | undefined;
referrer?: string | undefined;
referrerPolicy?: ReferrerPolicy | undefined;
signal?: (AbortSignal | null) | undefined;
window?: null | undefined;
onRetry?: ((response: _better_fetch_fetch95.ResponseContext) => Promise<void> | void) | undefined;
hookOptions?: {
cloneResponse?: boolean;
} | undefined;
timeout?: number | undefined;
customFetchImpl: _better_fetch_fetch95.FetchEsque;
baseURL: string;
throw?: boolean | undefined;
auth?: ({
type: "Bearer";
token: string | Promise<string | undefined> | (() => string | Promise<string | undefined> | undefined) | undefined;
} | {
type: "Basic";
username: string | (() => string | undefined) | undefined;
password: string | (() => string | undefined) | undefined;
} | {
type: "Custom";
prefix: string | (() => string | undefined) | undefined;
value: string | (() => string | undefined) | undefined;
}) | undefined;
body?: any;
query?: any;
params?: any;
duplex?: "full" | "half" | undefined;
jsonParser: (text: string) => Promise<any> | any;
retry?: _better_fetch_fetch95.RetryOptions | undefined;
retryAttempt?: number | undefined;
output?: (_better_fetch_fetch95.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
errorSchema?: _better_fetch_fetch95.StandardSchemaV1 | undefined;
disableValidation?: boolean | undefined;
disableSignal?: boolean | undefined;
}, unknown, unknown, {}>;
$store: {
notify: (signal?: (Omit<string, "$sessionSignal"> | "$sessionSignal") | undefined) => void;
listen: (signal: Omit<string, "$sessionSignal"> | "$sessionSignal", listener: (value: boolean, oldValue?: boolean | undefined) => void) => void;
atoms: Record<string, nanostores5.WritableAtom<any>>;
};
$Infer: {
Session: NonNullable<InferClientAPI<Option> extends {
getSession: () => Promise<infer Res>;
} ? Res extends {
data: null;
error: {
message?: string | undefined;
status: number;
statusText: string;
};
} | {
data: infer S;
error: null;
} ? S : Res extends Record<string, any> ? Res : never : never>;
};
$ERROR_CODES: PrettifyDeep<InferErrorCodes<Option> & typeof BASE_ERROR_CODES>;
};
type AuthClient<Option extends BetterAuthClientOptions> = ReturnType<typeof createAuthClient<Option>>;
//#endregion
export { AuthClient, createAuthClient };
//# sourceMappingURL=vanilla.d.mts.map