1234567891011121314151617181920212223242526272829303132 |
- import type { Middleware } from "./common";
- interface JsonError {
- message?: string;
- name?: string;
- stack?: string;
- cause?: JsonError;
- }
- function reduceError(e: any): JsonError {
- return {
- name: e?.name,
- message: e?.message ?? String(e),
- stack: e?.stack,
- cause: e?.cause === undefined ? undefined : reduceError(e.cause),
- };
- }
- // See comment in `bundle.ts` for details on why this is needed
- const jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {
- try {
- return await middlewareCtx.next(request, env);
- } catch (e: any) {
- const error = reduceError(e);
- return Response.json(error, {
- status: 500,
- headers: { "MF-Experimental-Error-Stack": "true" },
- });
- }
- };
- export default jsonError;
|