TypeScript 97.6%
SQL 1.4%
JavaScript 0.5%
1export class ApiError extends Error {2 constructor(3 public status: number,4 public code: string,5 message: string,6 public details?: unknown,7 ) {8 super(message);9 }10}1112export const errors = {13 badRequest: (msg = "Bad request", details?: unknown) => new ApiError(400, "BAD_REQUEST", msg, details),14 unauthorized: (msg = "Please sign in.") => new ApiError(401, "UNAUTHORIZED", msg),15 forbidden: (msg = "Forbidden") => new ApiError(403, "FORBIDDEN", msg),16 notFound: (msg = "Not found") => new ApiError(404, "NOT_FOUND", msg),17 conflict: (code: string, msg: string) => new ApiError(409, code, msg),18 rateLimited: (retryAfter: number) => new ApiError(429, "RATE_LIMITED", "Too many requests. Please slow down.", { retryAfter }),19 insufficient: (balance: number, bet: number) => new ApiError(402, "INSUFFICIENT_CREDITS", "Not enough Spinza Credits for this bet.", { balance, bet }),20 maintenance: (message: string) => new ApiError(503, "MAINTENANCE", message),21 unavailable: (msg = "Game unavailable") => new ApiError(503, "GAME_UNAVAILABLE", msg),22};23