import { a as Logger, t as HTTP_LOG_START_TIME_SYMBOL } from "../utils-BFFYnAvQ.cjs"; import { IncomingMessage, OutgoingMessage } from "http"; import { Colors } from "@neodx/colors"; //#region src/http/index.d.ts interface HttpLoggerParams { /** * Custom logger instance. * @default createLogger() */ logger?: Logger; /** * Custom colors instance * @see `@neodx/colors` */ colors?: Colors; /** * If `true`, the logger will only log the pre-formatted message without any additional metadata. * @default process.env.NODE_ENV === 'development' */ simple?: boolean; /** * Optional function to extract/create request ID. * @default built-in simple safe number counter */ getRequestId?: (req: Req, res: Res) => string | number; /** * Extract shared metadata for every produced log */ getMeta?: (req: Req, res: Res) => Record; /** * Extract metadata for request logs */ getRequestMeta?: (ctx: HttpResponseContext) => Record; /** * Custom incoming request message formatter */ getRequestMessage?: (ctx: HttpResponseContext) => string; /** * Extract metadata for success response logs */ getResponseMeta?: (ctx: HttpResponseContext) => Record; /** * Custom success response message formatter */ getResponseMessage?: (ctx: HttpResponseContext) => string; /** * Extract metadata for error response logs */ getErrorMeta?: (ctx: HttpResponseContext) => Record; /** * Custom error response message formatter */ getErrorMessage?: (ctx: HttpResponseContext) => string; /** * Whether to log anything at all. * @default true */ shouldLog?: boolean | ((req: Req, res: Res) => boolean); /** * Prevents logging of errors. * @default true */ shouldLogError?: boolean | ((ctx: HttpResponseContext) => boolean); /** * Prevents built-in logging of requests. * DISABLED BY DEFAULT, because it can be very verbose. * @default false */ shouldLogRequest?: boolean | ((ctx: HttpResponseContext) => boolean); /** * Prevents built-in logging of responses. * @default true */ shouldLogResponse?: boolean | ((ctx: HttpResponseContext) => boolean); } interface HttpLoggerMetaKeys { req: string; res: string; err: string; requestId: string; responseTime: string; } interface HttpResponseContext { req: Req; res: Res; error?: Error; logger: Logger; colors: Colors; responseTime: number; } type HttpRequestId = string | number; type HttpLogLevels = 'debug' | 'error' | 'info' | 'done'; declare module 'http' { interface IncomingMessage { id: HttpRequestId; log: Logger; } interface ServerResponse { err?: Error | undefined; } interface OutgoingMessage { [HTTP_LOG_START_TIME_SYMBOL]: number; } } declare function createHttpLogger({ simple, colors, logger: rootLogger, getRequestId, getMeta, getErrorMeta, getErrorMessage, getRequestMeta, getRequestMessage, getResponseMeta, getResponseMessage, shouldLog, shouldLogError, shouldLogRequest, shouldLogResponse }?: HttpLoggerParams): (req: Req, res: Res, next?: () => void) => void; //#endregion export { HttpLogLevels, HttpLoggerMetaKeys, HttpLoggerParams, HttpRequestId, HttpResponseContext, createHttpLogger }; //# sourceMappingURL=index.d.cts.map