diff options
Diffstat (limited to 'node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts')
| -rw-r--r-- | node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts b/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts new file mode 100644 index 0000000..9377781 --- /dev/null +++ b/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts @@ -0,0 +1,33 @@ +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; +export const wrap = undefined; |
