UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

57 lines 2.51 kB
import type ClientBase from "@tai-kun/surrealdb/basic-client"; import type { ClientCloseOptions, ClientConfig } from "@tai-kun/surrealdb/basic-client"; import { type CreateSurqlConfig, type Surql } from "./surql/create-surql"; type ClientConstructor = new (config: ClientConfig) => ClientBase; /** * @experimental */ export interface PoolSetupOptions { readonly signal?: AbortSignal | undefined; } type Alias = { readonly [name: string]: string | URL; }; /** * @experimental */ export interface PoolInit<TClientConstructor extends ClientConstructor, TAlias extends Alias> extends ClientConfig, CreateSurqlConfig { readonly Client: TClientConstructor; readonly alias?: TAlias | undefined; readonly setup?: (this: InstanceType<TClientConstructor>, endpoint: URL, options: PoolSetupOptions, alias: keyof TAlias | undefined) => PromiseLike<void>; } /** * @experimental */ export type PoolSurreal<TClientConstructor extends ClientConstructor> = InstanceType<TClientConstructor> & Disposable & { disconnect(options?: ClientCloseOptions | undefined): void; }; type Endpoint<TAlias extends Alias> = Extract<keyof TAlias, string>; /** * @experimental */ export interface PoolInstance<TClientConstructor extends ClientConstructor, TAlias extends Alias> extends AsyncDisposable { get(endpoint: Endpoint<TAlias> | URL, options?: PoolSetupOptions | undefined): Promise<PoolSurreal<TClientConstructor>>; close(endpoint: Endpoint<TAlias> | URL, options?: ClientCloseOptions | undefined): Promise<void>; closeAll(options?: ClientCloseOptions | undefined): Promise<void>; } /** * @experimental */ export interface PoolOptions<TClientConstructor extends ClientConstructor, TAlias extends Alias> { readonly alias?: TAlias | undefined; readonly setup?: PoolInit<TClientConstructor, TAlias>["setup"]; readonly closeDelay?: number | undefined; } /** * @experimental */ export interface InitializedPool<TClientConstructor extends ClientConstructor, TAlias extends Alias> { Pool: new <const TPoolAlias extends Alias = {}>(options?: PoolOptions<TClientConstructor, TPoolAlias> | undefined) => PoolInstance<TClientConstructor, Omit<TAlias, keyof TPoolAlias> & TPoolAlias>; surql: Surql; } /** * @experimental */ export default function initPool<TClientConstructor extends ClientConstructor, const TAlias extends Alias = {}>(init: PoolInit<TClientConstructor, TAlias>): InitializedPool<TClientConstructor, TAlias>; export {}; //# sourceMappingURL=init-pool.d.ts.map