UNPKG

@rollercoaster-dev/rd-logger

Version:

A neurodivergent-friendly logger for Rollercoaster.dev projects

78 lines (77 loc) 2.44 kB
import type { Context, MiddlewareHandler } from 'hono'; import { Logger } from '../core/logger.service'; import { type LoggerConfig } from '../core/logger.config'; type HonoVariables = { requestId: string; }; export interface HonoLoggerOptions { /** * An existing Logger instance to use. * If not provided, a new Logger will be created with the options below. */ loggerInstance?: Logger; /** * Configuration options for the Logger. * Ignored if loggerInstance is provided. */ loggerOptions?: Partial<LoggerConfig>; /** * Function to determine if a request should be skipped for logging. * @param c Hono context * @returns true to skip logging, false otherwise */ skip?: (c: Context) => boolean; /** * Customize the log message for incoming requests. * @param c Hono context * @param store Request context store * @returns Log message string */ requestMessage?: (c: Context, store: { requestId: string; }) => string; /** * Customize the log message for completed requests. * @param c Hono context * @param store Request context store * @param duration Request duration in ms * @param status Response status code * @returns Log message string */ responseMessage?: (c: Context, store: { requestId: string; }, duration: number, status: number) => string; } /** * Hono middleware for neuro-friendly logging and request context management. * * @param options Configuration options for the logger middleware. * @returns Hono MiddlewareHandler. */ export declare const honoLogger: (options?: HonoLoggerOptions) => MiddlewareHandler<{ Variables: HonoVariables; }>; /** * Hono error handler that logs errors using the logger and request context. * * Usage: * ```typescript * import { Hono } from 'hono'; * import { honoErrorHandler } from './path/to/honoErrorHandler'; * import { Logger } from './path/to/logger'; * * const app = new Hono(); * const logger = new Logger(); * * app.onError(honoErrorHandler(logger)); * // ... other middleware and routes * ``` * * @param loggerInstance An instance of the Logger. * @returns Hono ErrorHandler. */ export declare const honoErrorHandler: (loggerInstance: Logger) => (err: Error, c: Context) => Response & import("hono").TypedResponse<{ ok: false; message: string; }, 500, "json">; export {};