// Worker-compatible logger shim using console // Winston is not compatible with Cloudflare Workers // eslint-disable-next-line @typescript-eslint/no-unused-vars interface LogInfo { level: string; message: string; timestamp?: string; [key: string]: unknown; } type LogMethod = (message: string, ...meta: unknown[]) => void; interface Logger { error: LogMethod; warn: LogMethod; info: LogMethod; http: LogMethod; verbose: LogMethod; debug: LogMethod; silly: LogMethod; log: (level: string, message: string, ...meta: unknown[]) => void; } const formatMessage = (level: string, message: string): string => { const timestamp = new Date().toISOString(); return `[${timestamp}] ${level}: ${message}`; }; const logger: Logger = { error: (message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.error(formatMessage('error', message), ...meta); }, warn: (message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.warn(formatMessage('warn', message), ...meta); }, info: (message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.info(formatMessage('info', message), ...meta); }, http: (message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.log(formatMessage('http', message), ...meta); }, verbose: (message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.log(formatMessage('verbose', message), ...meta); }, debug: (message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.debug(formatMessage('debug', message), ...meta); }, silly: (message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.log(formatMessage('silly', message), ...meta); }, log: (level: string, message: string, ...meta: unknown[]) => { // eslint-disable-next-line no-console console.log(formatMessage(level, message), ...meta); }, }; export default logger;