import { Knex } from "knex"; //#region src/types.d.ts /** * Function logger adapter, for example `console.log`. * * Receives default string log messages. */ type SimpleLogger = (message?: unknown, ...optionalParams: unknown[]) => void; /** Receives one complete message from a string logger. */ type MessageWriter = (message: string) => void; /** Stream-like writer target accepted by string loggers, for example `process.stdout`. */ interface MessageWriterTarget { write: MessageWriter; } /** Converts query data into the SQL text written by string loggers. */ type QueryFormatter = (query: QueryFormatterInput) => string; /** Data available to custom query formatters. */ interface QueryFormatterInput { knex: Knex; sql: string; bindings: unknown; } /** Options for `defaultQueryFormatter`. */ interface DefaultQueryFormatterOptions { /** * Ask Knex to interpolate bindings into the logged SQL. * * Defaults to `true`. */ bindings?: boolean; } /** Raw query object received from Knex events. */ interface QueryData { __knexQueryUid?: string | number; __knexUid?: string; __knexTxId?: string; sql: string; bindings?: unknown; [key: string]: unknown; } /** Query lifecycle event emitted when Knex starts a query. */ interface QueryStartEvent { knex: Knex; queryId: string; sql: string; bindings: unknown; query: QueryData; startedAt: Date; } /** Base event for finished queries. */ interface TracerQueryFinishEvent extends QueryStartEvent { durationMs: number; } /** Tracer event for successful queries. */ interface TracerQueryEndEvent extends TracerQueryFinishEvent { response: unknown; } /** Tracer event for failed queries. */ interface TracerQueryErrorEvent extends TracerQueryFinishEvent { error: unknown; } /** Error reported when a logger hook, writer, or formatter throws. */ interface LoggerErrorEvent { error: unknown; } /** Error reported when a tracer hook throws. */ interface TracerErrorEvent { error: unknown; } /** Optional hooks for query lifecycle events. */ interface TracerHooks { /** Called when Knex starts a query. */ onStart?: (event: QueryStartEvent) => void; /** Called when Knex completes a query successfully. */ onEnd?: (event: QueryEndEvent) => void; /** Called when Knex reports a query error. */ onError?: (event: QueryErrorEvent) => void; } /** Active tracer subscription returned by `createTracer`. */ interface Tracer { /** Remove all Knex event listeners installed by the tracer. */ dispose: () => void; } /** Base logger event for finished queries. */ interface QueryFinishEvent extends TracerQueryFinishEvent {} /** Logger event for successful queries. */ interface QueryEndEvent extends QueryFinishEvent { response: unknown; } /** Logger event for failed queries. */ interface QueryErrorEvent extends QueryFinishEvent { error: unknown; } /** Lifecycle logger consumed by `knexTinyLogger`. */ interface Logger extends TracerHooks {} interface StringLoggerBaseOptions { /** Writer function or stream-like target. Defaults to `console.log`. */ write?: MessageWriter | MessageWriterTarget; } /** * Options shared by string loggers. * * Bindings are interpolated into the logged SQL by default through Knex. * * `formatter` provides custom SQL formatting, so `bindings` only applies when * `formatter` is not provided. */ type StringLoggerOptions = StringLoggerBaseOptions & ({ /** Ask Knex to interpolate bindings into the logged SQL. Defaults to `true`. */ bindings?: boolean; formatter?: undefined; } | { bindings?: never; /** Custom SQL formatter. */ formatter: QueryFormatter; }); /** Options accepted by `defaultLogger`. */ type DefaultLoggerOptions = StringLoggerOptions; /** Options for `createTracer`. */ interface CreateTracerOptions extends TracerHooks { /** Called when a tracer hook throws. Defaults to a no-op. */ onTracerError?: (event: TracerErrorEvent) => void; } /** Options for `knexTinyLogger`. */ interface KnexTinyLoggerOptions { /** * Logger implementation or simple log function. * * Defaults to String Logs through `defaultLogger()`. */ logger?: Logger | SimpleLogger; /** * Called when a logger hook, writer, or formatter throws. * * Defaults to `console.error`. */ onLoggerError?: (event: LoggerErrorEvent) => void; } //#endregion export { TracerQueryFinishEvent as C, TracerQueryErrorEvent as S, StringLoggerOptions as _, Logger as a, TracerHooks as b, MessageWriterTarget as c, QueryErrorEvent as d, QueryFinishEvent as f, SimpleLogger as g, QueryStartEvent as h, KnexTinyLoggerOptions as i, QueryData as l, QueryFormatterInput as m, DefaultLoggerOptions as n, LoggerErrorEvent as o, QueryFormatter as p, DefaultQueryFormatterOptions as r, MessageWriter as s, CreateTracerOptions as t, QueryEndEvent as u, Tracer as v, TracerQueryEndEvent as x, TracerErrorEvent as y };