mirror of
https://github.com/JonasunderscoreJones/api.jonasjones.dev.git
synced 2025-10-23 20:19:19 +02:00
33 lines
763 B
TypeScript
33 lines
763 B
TypeScript
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;
|