1
0
cvsa/packages/backend/src/schema.ts

40 lines
888 B
TypeScript

import { t } from "elysia";
export const errorCodes = [
"INVALID_QUERY_PARAMS",
"UNKNOWN_ERROR",
"INVALID_PAYLOAD",
"MALFORMED_SLOT",
"INVALID_HEADER",
"BODY_TOO_LARGE",
"UNAUTHORIZED",
"INVALID_CREDENTIALS",
"ENTITY_NOT_FOUND",
"SERVER_ERROR",
"RATE_LIMIT_EXCEEDED",
"ENTITY_EXISTS",
"THIRD_PARTY_ERROR"
];
function generateErrorCodeRegex(strings: string[]): string {
if (strings.length === 0) {
return "(?!)";
}
const escapedStrings = strings.map((str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
return `^(${escapedStrings.join("|")})$`;
}
export const ErrorResponseSchema = t.Object({
code: t.String({ pattern: generateErrorCodeRegex(errorCodes) }),
message: t.String(),
errors: t.Array(t.String()),
i18n: t.Optional(
t.Object({
key: t.String(),
values: t.Optional(t.Record(t.String(), t.Union([t.String(), t.Number(), t.Date()])))
})
)
});