import log4js from "logger"; interface IConfig { } const defaultConfig: IConfig = { } const logger = log4js.getLogger("ERROR"); function assertRequiredContext( event: { context: Record }, keys: string[], ) { for (const key of keys) { if (!event.context[key]) { throw new Error(`event.context.${key} is not initialized`); } } } export const defineWrappedResponseHandler = ( handlerOrConfig?: EventHandler | IConfig, _handler?: EventHandler, ): EventHandler => { const handler = typeof handlerOrConfig === 'function' ? handlerOrConfig : _handler; if (!handler) { throw new Error('handler or config is required'); } Object.assign({ ...defaultConfig }, typeof handlerOrConfig === 'object' ? handlerOrConfig : {}); return defineEventHandler(async (event) => { try { assertRequiredContext(event, ["auth", "config"]); const response = await handler(event) return response } catch (error) { logger.error( event?.method ?? "", event?.path ?? "(no request)", `[request]`, "\n", error ); throw error } }) }