import { Worker } from "node:worker_threads"; import { IBaseSqliteDialectConfig, IGenericSqlite, Promisable } from "kysely-generic-sqlite"; import { GenericSqliteWorkerDialect, WorkerRequestHandler } from "kysely-generic-sqlite/worker"; import Database, { Options } from "better-sqlite3"; //#region src/worker/utils.d.ts /** * Factory signature for creating a `better-sqlite3` Database. */ type CreateDatabaseFn = (filename?: string | Buffer, options?: Database.Options) => Promisable; /** * Default database factory — creates a new `better-sqlite3` Database instance. */ declare const defaultCreateDatabaseFn: CreateDatabaseFn; /** * Handle worker messages, with optional custom message handler. * * Uses {@link defaultCreateDatabaseFn} by default. * * @example * In `worker.ts`: * ```ts * import { createOnMessageCallback, defaultCreateDatabaseFn } from 'kysely-sqlite-worker' * * createOnMessageCallback( * (fileName, options) => { * const db = defaultCreateDatabaseFn(fileName, options) * db.loadExtension(...) * return db * }, * (executor, { type, payload }) => { * if (type === 'export') { * return executor.db.export() * } * throw new Error(`Unknown worker request: ${type}`) * }, * ) * ``` */ declare function createOnMessageCallback(create: CreateDatabaseFn, custom?: WorkerRequestHandler): void; /** * Build a {@link IGenericSqlite} executor from a `better-sqlite3` Database. */ declare function createSqliteExecutor(db: Database.Database): IGenericSqlite; //#endregion //#region src/index.d.ts /** * Configuration for {@link SqliteWorkerDialect}. */ interface SqliteWorkerDialectConfig extends IBaseSqliteDialectConfig { /** * SQLite database file path or an existing buffer. */ source: string | Buffer | (() => Promisable); /** * Options forwarded to the `better-sqlite3` constructor. */ dbOption?: Options; /** * Path to a custom worker script. * * When omitted the built-in worker is used. */ workerPath?: string; } /** * SQLite dialect for Node.js using `better-sqlite3` running in a worker thread. */ declare class SqliteWorkerDialect extends GenericSqliteWorkerDialect { /** * @param config - {@link SqliteWorkerDialectConfig} */ constructor(config: SqliteWorkerDialectConfig); } //#endregion export { CreateDatabaseFn, SqliteWorkerDialect, SqliteWorkerDialectConfig, createOnMessageCallback, createSqliteExecutor, defaultCreateDatabaseFn };