From 4dd40380910c0322d4ea3c1b37b6c61358a67a25 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Wed, 4 Oct 2023 17:33:05 +0300 Subject: [PATCH] utils/trpc: map http to trpc errors --- apps/web/utils/trpc.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/web/utils/trpc.ts b/apps/web/utils/trpc.ts index 5fcde23..80c1ab3 100644 --- a/apps/web/utils/trpc.ts +++ b/apps/web/utils/trpc.ts @@ -2,12 +2,28 @@ import { HttpError } from './error'; import { TRPCError } from '@trpc/server'; import type { TRPC_ERROR_CODE_KEY } from '@trpc/server/rpc'; +const HTTP_CODE_TO_JSONRPC2: Record = { + 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) { let code: TRPC_ERROR_CODE_KEY = 'INTERNAL_SERVER_ERROR'; let message = ''; - if (error instanceof HttpError && error.statusCode === 400) { - code = 'BAD_REQUEST'; + if (error instanceof HttpError) { + const { statusCode = 500 } = error; + code = HTTP_CODE_TO_JSONRPC2[statusCode]; } if (error instanceof Error) {