sqlocal
Version:
SQLocal makes it easy to run SQLite3 in the browser, backed by the origin private file system.
109 lines (108 loc) • 2.92 kB
TypeScript
import type { ConnectReason, DatabaseInfo, ProcessorConfig, QueryKey, Sqlite3Method, UserFunction } from './types.js';
export type Message = InputMessage | OutputMessage;
export type OmitQueryKey<T> = T extends Message ? Omit<T, 'queryKey'> : never;
export type WorkerProxy = (typeof globalThis | ProxyHandler<Worker>) & Record<string, (...args: any) => any>;
export type InputMessage = QueryMessage | BatchMessage | TransactionMessage | FunctionMessage | ConfigMessage | GetInfoMessage | ImportMessage | ExportMessage | DeleteMessage | DestroyMessage;
export type QueryMessage = {
type: 'query';
queryKey: QueryKey;
transactionKey?: QueryKey;
sql: string;
params: unknown[];
method: Sqlite3Method;
};
export type BatchMessage = {
type: 'batch';
queryKey: QueryKey;
statements: {
sql: string;
params: unknown[];
method?: Sqlite3Method;
}[];
};
export type TransactionMessage = {
type: 'transaction';
queryKey: QueryKey;
transactionKey: QueryKey;
action: 'begin' | 'rollback' | 'commit';
};
export type FunctionMessage = {
type: 'function';
queryKey: QueryKey;
functionName: string;
functionType: UserFunction['type'];
};
export type ConfigMessage = {
type: 'config';
config: ProcessorConfig;
};
export type GetInfoMessage = {
type: 'getinfo';
queryKey: QueryKey;
};
export type ImportMessage = {
type: 'import';
queryKey: QueryKey;
database: ArrayBuffer | Uint8Array | ReadableStream<Uint8Array>;
};
export type ExportMessage = {
type: 'export';
queryKey: QueryKey;
};
export type DeleteMessage = {
type: 'delete';
queryKey: QueryKey;
};
export type DestroyMessage = {
type: 'destroy';
queryKey: QueryKey;
};
export type OutputMessage = SuccessMessage | ErrorMessage | DataMessage | BufferMessage | CallbackMessage | InfoMessage | EventMessage;
export type SuccessMessage = {
type: 'success';
queryKey: QueryKey;
};
export type ErrorMessage = {
type: 'error';
queryKey: QueryKey | null;
error: unknown;
};
export type DataMessage = {
type: 'data';
queryKey: QueryKey;
data: {
columns: string[];
rows: unknown[] | unknown[][];
}[];
};
export type BufferMessage = {
type: 'buffer';
queryKey: QueryKey;
bufferName: string;
buffer: ArrayBuffer | Uint8Array;
};
export type CallbackMessage = {
type: 'callback';
name: string;
args: unknown[];
};
export type InfoMessage = {
type: 'info';
queryKey: QueryKey;
info: DatabaseInfo;
};
export type EventMessage = {
type: 'event';
event: 'connect';
reason: ConnectReason;
};
export type BroadcastMessage = ReinitBroadcast | CloseBroadcast;
export type ReinitBroadcast = {
type: 'reinit';
clientKey: QueryKey;
reason: ConnectReason;
};
export type CloseBroadcast = {
type: 'close';
clientKey: QueryKey;
};