Modified by www.SourceFiles.app
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
// Captures the original Error out-of-band so server.ts can recover the stack
|
||||||
|
// when h3 has already swallowed the throw into a generic 500 Response.
|
||||||
|
|
||||||
|
let lastCapturedError: { error: unknown; at: number } | undefined;
|
||||||
|
const TTL_MS = 5_000;
|
||||||
|
|
||||||
|
function record(error: unknown) {
|
||||||
|
lastCapturedError = { error, at: Date.now() };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof globalThis.addEventListener === "function") {
|
||||||
|
globalThis.addEventListener("error", (event) => record((event as ErrorEvent).error ?? event));
|
||||||
|
globalThis.addEventListener("unhandledrejection", (event) =>
|
||||||
|
record((event as PromiseRejectionEvent).reason),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function consumeLastCapturedError(): unknown {
|
||||||
|
if (!lastCapturedError) return undefined;
|
||||||
|
if (Date.now() - lastCapturedError.at > TTL_MS) {
|
||||||
|
lastCapturedError = undefined;
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
const { error } = lastCapturedError;
|
||||||
|
lastCapturedError = undefined;
|
||||||
|
return error;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user