@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
57 lines • 2.51 kB
TypeScript
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