Repository Public MIT
1export class ApiError extends Error {2 constructor(3 public status: number,4 public code: string,5 message: string,6 public details?: unknown,7 public headers?: Record<string, string>,8 ) {9 super(message);10 this.name = "ApiError";11 }12}13export const badRequest = (message: string, details?: unknown) => new ApiError(400, "bad_request", message, details);14export const unauthorized = (message = "Authentication is required. Send `Authorization: Bearer <token>`.", code = "unauthorized") =>15 new ApiError(401, code, message, undefined, { "WWW-Authenticate": 'Bearer realm="skills-registry"' });16export const forbidden = (message: string, code = "forbidden", details?: unknown) => new ApiError(403, code, message, details);17export const notFound = (what = "Resource") => new ApiError(404, "not_found", `${what} not found.`);18export const conflict = (message: string, code = "conflict", details?: unknown) => new ApiError(409, code, message, details);19export const unprocessable = (message: string, code = "validation_failed", details?: unknown) => new ApiError(422, code, message, details);20