utils/trpc: map http to trpc errors
This commit is contained in:
parent
3aea4c439f
commit
4dd4038091
@ -2,12 +2,28 @@ import { HttpError } from './error';
|
|||||||
import { TRPCError } from '@trpc/server';
|
import { TRPCError } from '@trpc/server';
|
||||||
import type { TRPC_ERROR_CODE_KEY } from '@trpc/server/rpc';
|
import type { TRPC_ERROR_CODE_KEY } from '@trpc/server/rpc';
|
||||||
|
|
||||||
|
const HTTP_CODE_TO_JSONRPC2: Record<number, TRPC_ERROR_CODE_KEY> = {
|
||||||
|
400: 'BAD_REQUEST',
|
||||||
|
401: 'UNAUTHORIZED',
|
||||||
|
403: 'FORBIDDEN',
|
||||||
|
404: 'NOT_FOUND',
|
||||||
|
405: 'METHOD_NOT_SUPPORTED',
|
||||||
|
408: 'TIMEOUT',
|
||||||
|
409: 'CONFLICT',
|
||||||
|
412: 'PRECONDITION_FAILED',
|
||||||
|
413: 'PAYLOAD_TOO_LARGE',
|
||||||
|
429: 'TOO_MANY_REQUESTS',
|
||||||
|
499: 'CLIENT_CLOSED_REQUEST',
|
||||||
|
500: 'INTERNAL_SERVER_ERROR',
|
||||||
|
};
|
||||||
|
|
||||||
export function createTRPCError(error: unknown) {
|
export function createTRPCError(error: unknown) {
|
||||||
let code: TRPC_ERROR_CODE_KEY = 'INTERNAL_SERVER_ERROR';
|
let code: TRPC_ERROR_CODE_KEY = 'INTERNAL_SERVER_ERROR';
|
||||||
let message = '';
|
let message = '';
|
||||||
|
|
||||||
if (error instanceof HttpError && error.statusCode === 400) {
|
if (error instanceof HttpError) {
|
||||||
code = 'BAD_REQUEST';
|
const { statusCode = 500 } = error;
|
||||||
|
code = HTTP_CODE_TO_JSONRPC2[statusCode];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (error instanceof Error) {
|
if (error instanceof Error) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user