@rollercoaster-dev/rd-logger
Version:
A neurodivergent-friendly logger for Rollercoaster.dev projects
78 lines (77 loc) • 2.44 kB
TypeScript
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 {};