nitropage
Version:
A free and open source, extensible visual page builder based on SolidStart.
31 lines (27 loc) • 822 B
text/typescript
import { json, RouterResponseInit } from "@solidjs/router";
import { getRequestEvent } from "solid-js/web";
export const error = <const T extends { message: string; status?: number }>(
error: T,
init: RouterResponseInit = { revalidate: "$$$nope" },
) => {
const status = error.status ?? 500;
// TODO: Remove once statusText has been added here:
// https://github.com/solidjs/solid-start/blob/f4052b2532b54ba09b74f566f6502e0ae522a255/packages/start/src/runtime/server-handler.ts#L230
const event = getRequestEvent();
if (event) {
event.response.statusText = error.message;
}
return json(
{
error: {
status,
...error,
} as T["status"] extends number ? T : T & { status: 500 },
},
{
...init,
status,
statusText: error.message,
},
);
};