UNPKG

alinea

Version:
22 lines (21 loc) 1.37 kB
import type { Config } from 'alinea/core/Config'; import type { RemoteConnection, RequestContext } from 'alinea/core/Connection'; import * as driver from 'rado/driver'; import { type GithubOptions } from './GithubApi.js'; import { type OAuth2Options } from './OAuth2.js'; export type AvailableDrivers = 'd1' | 'mysql2' | '@neondatabase/serverless' | '@vercel/postgres' | 'pg' | '@electric-sql/pglite' | 'sql.js' | '@libsql/client'; type DatabaseClient<Driver extends AvailableDrivers> = Parameters<(typeof driver)[Driver]>[0]; type DatabaseOption<Driver extends AvailableDrivers> = { driver: Driver; client: DatabaseClient<Driver>; }; export type DatabaseDeclaration = DatabaseOption<'d1'> | DatabaseOption<'mysql2'> | DatabaseOption<'@neondatabase/serverless'> | DatabaseOption<'@vercel/postgres'> | DatabaseOption<'pg'> | DatabaseOption<'@electric-sql/pglite'> | DatabaseOption<'sql.js'> | DatabaseOption<'@libsql/client'>; export interface BackendOptions { auth?(username: string, password: string): boolean | Promise<boolean>; oauth2?: OAuth2Options; database: DatabaseDeclaration; github: GithubOptions; } export declare function createBackend(config: Config, options: BackendOptions): (context: RequestContext) => RemoteConnection; export declare function createRemote(...impl: Array<Partial<RemoteConnection>>): RemoteConnection; export {};