From 6eb5e1d706d381067118c62acf758873b3e4deb6 Mon Sep 17 00:00:00 2001 From: Starcea Date: Sat, 24 Jun 2023 16:09:15 +0900 Subject: [PATCH] feat: literal error code type --- src/errors.ts | 15 ++++++++++++++- src/http.ts | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/errors.ts b/src/errors.ts index 9031f1e..e07e12d 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -36,6 +36,19 @@ export class LimitUseAuthenticationKeyError extends HTTPError {} export class DataNotFoundError extends HTTPError {} +export type ErrorCode = + | 'ERROR-300' + | 'ERROR-290' + | 'ERROR-310' + | 'ERROR-333' + | 'ERROR-336' + | 'ERROR-337' + | 'ERROR-500' + | 'ERROR-600' + | 'ERROR-601' + | 'INFO-300' + | 'INFO-200' + export const ErrorsMapping = { 'ERROR-300': MissingRequiredValueError, 'ERROR-290': AuthenticationError, @@ -48,4 +61,4 @@ export const ErrorsMapping = { 'ERROR-601': SQLStatementError, 'INFO-300': LimitUseAuthenticationKeyError, 'INFO-200': DataNotFoundError, -} satisfies Record +} satisfies Record diff --git a/src/http.ts b/src/http.ts index cd0ee8c..c4ed2b2 100644 --- a/src/http.ts +++ b/src/http.ts @@ -1,4 +1,4 @@ -import { ErrorsMapping, RequestTimeoutError } from './errors' +import { ErrorCode, ErrorsMapping, RequestTimeoutError } from './errors' import type { AcaInsTiInfoParam, AcaInsTiInfoResponse, @@ -180,7 +180,7 @@ export class NeisRequest { }) if (data.RESULT) { - const code = data.RESULT.CODE as keyof typeof ErrorsMapping + const code = data.RESULT.CODE as ErrorCode const err = new ErrorsMapping[code](code, data.RESULT.MESSAGE) this.logger?.error(err)