UNPKG

edgespec

Version:

Write Winter-CG compatible routes with filesystem routing and tons of features

56 lines (53 loc) 1.73 kB
export { BadRequestError, EdgeSpecMiddlewareError, InputParsingError, InputValidationError, InvalidContentTypeError, InvalidQueryParamsError, MethodNotAllowedError, NotFoundError, ResponseValidationError } from '../chunk-J77ZRDU2.js'; import '../chunk-5WRI5ZAA.js'; import kleur from 'kleur'; var createWithDefaultExceptionHandling = ({ coloredLogs = true, logWhen = (status) => status >= 500, includeStackTraceInResponse = true } = {}) => async (req, ctx, next) => { try { return await next(req, ctx); } catch (e) { let response; if ("_isHttpException" in e) { response = Response.json( { message: e.message, stack: includeStackTraceInResponse ? e.stack : void 0 }, { status: e.status } ); } else { response = Response.json( { message: "Internal server error", stack: includeStackTraceInResponse ? e.stack : void 0 }, { status: 500 } ); } if (logWhen(response.status, e)) { const logger = ctx.logger ?? console; kleur.enabled = coloredLogs; const { pathname } = new URL(req.url); const routeLog = response.status >= 500 ? kleur.bgRed(`${pathname} threw an error`) : kleur.bgYellow(`${pathname} threw an error`); logger.error( `${routeLog}: ${e instanceof Error ? e.stack : e.toString()}` ); } return response; } }; // src/middleware/with-logger.ts var createWithLogger = (logger) => (req, ctx, next) => { ctx.logger = logger; return next(req, ctx); }; export { createWithDefaultExceptionHandling, createWithLogger }; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map