alinea
Version:
Headless git-based CMS
22 lines (21 loc) • 1.37 kB
TypeScript
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 {};