Files
appointment-booking-software/src/hooks.server.ts
T
2025-09-01 17:47:46 +02:00

47 lines
1.3 KiB
TypeScript

import { logger } from "$lib/logger";
import { sequence } from "@sveltejs/kit/hooks";
import { startupHandle } from "./server-hooks/startupHandle";
import { corsHandle } from "./server-hooks/corsHandle";
import { loggingHandle } from "./server-hooks/loggingHandle";
import { rateLimitHandle } from "./server-hooks/rateLimitHandle";
import { secHeaderHandle } from "./server-hooks/secHeaderHandle";
import { apiAuthHandle } from "./server-hooks/apiAuthHandle";
import { authGuard } from "./server-hooks/authGuard";
import { i18nHandle } from "./server-hooks/i18nHandle";
import { building } from "$app/environment";
type Error = {
message?: string;
stack?: string;
};
export async function handleError({ error, event, status, message }) {
const errorLogger = logger.setContext("ERROR_HANDLER");
errorLogger.error("Unhandled error occurred", {
error: (error as Error).message,
stack: (error as Error).stack,
status,
message,
url: event.url.pathname,
method: event.request.method,
userAgent: event.request.headers.get("user-agent"),
ip: !building ? event.getClientAddress() : "server",
});
return {
message: "Internal server error occurred",
};
}
export const handle = sequence(
startupHandle,
loggingHandle,
i18nHandle,
rateLimitHandle,
corsHandle,
secHeaderHandle,
apiAuthHandle,
authGuard,
);