31 lines
950 B
TypeScript
31 lines
950 B
TypeScript
import { captureException } from "@sentry/nextjs";
|
|
import type { NextApiRequest, NextApiResponse } from "next";
|
|
|
|
import { HttpError } from "@calcom/lib/http-error";
|
|
import { getServerErrorFromUnknown } from "@calcom/lib/server/getServerErrorFromUnknown";
|
|
|
|
import { TRPCError } from "@trpc/server";
|
|
import { getHTTPStatusCodeFromError } from "@trpc/server/http";
|
|
|
|
type OnErrorOptions = {
|
|
error: TRPCError;
|
|
req?: NextApiRequest;
|
|
res?: NextApiResponse;
|
|
};
|
|
|
|
export function onErrorHandler({ error }: OnErrorOptions) {
|
|
let httpError: HttpError;
|
|
if (error instanceof TRPCError) {
|
|
const statusCode = getHTTPStatusCodeFromError(error);
|
|
httpError = new HttpError({ statusCode, message: error.message });
|
|
} else {
|
|
httpError = getServerErrorFromUnknown(error);
|
|
}
|
|
|
|
// Log errors that aren't client errors (400s)
|
|
if (httpError.statusCode >= 500) {
|
|
captureException(error);
|
|
console.error("Something went wrong", error);
|
|
}
|
|
}
|