Files
web/server/errors/trpc.ts

76 lines
1.7 KiB
TypeScript

import { TRPCError } from "@trpc/server"
export function unauthorizedError(cause?: unknown) {
return new TRPCError({
code: "UNAUTHORIZED",
message: `Unauthorized`,
cause,
})
}
export function forbiddenError(cause?: unknown) {
return new TRPCError({
code: "FORBIDDEN",
message: `Forbidden`,
cause,
})
}
export function badRequestError(cause?: unknown) {
return new TRPCError({
code: "BAD_REQUEST",
message: `Bad request`,
cause,
})
}
export function notFound(cause?: unknown) {
return new TRPCError({
code: "NOT_FOUND",
message: `Not found`,
cause,
})
}
export function internalServerError(cause?: unknown) {
return new TRPCError({
code: "INTERNAL_SERVER_ERROR",
message: `Internal Server Error`,
cause,
})
}
export const SESSION_EXPIRED = "SESSION_EXPIRED"
export class SessionExpiredError extends Error {}
export function sessionExpiredError() {
return new TRPCError({
code: "UNAUTHORIZED",
message: SESSION_EXPIRED,
cause: new SessionExpiredError(SESSION_EXPIRED),
})
}
export const PUBLIC_UNAUTHORIZED = "PUBLIC_UNAUTHORIZED"
export class PublicUnauthorizedError extends Error {}
export function publicUnauthorizedError() {
return new TRPCError({
code: "UNAUTHORIZED",
message: PUBLIC_UNAUTHORIZED,
cause: new PublicUnauthorizedError(PUBLIC_UNAUTHORIZED),
})
}
export function serverErrorByStatus(status: number, cause?: unknown) {
switch (status) {
case 401:
return unauthorizedError(cause)
case 403:
return forbiddenError(cause)
case 404:
return notFound(cause)
case 500:
default:
return internalServerError(cause)
}
}