summaryrefslogtreecommitdiff
path: root/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts
diff options
context:
space:
mode:
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.ts33
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;