UNPKG

meru-stablecoin-lib

Version:

A comprehensive TypeScript library for stablecoin operations including encryption utilities, error handling, and validation tools

108 lines 6.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ErrorResponses = void 0; exports.sendErrorResponse = sendErrorResponse; exports.sendSuccessResponse = sendSuccessResponse; const http_status_codes_1 = require("http-status-codes"); /** * Send a standardized error response * @param res - Express response object * @param statusCode - HTTP status code * @param errorCode - Error code (e.g., "RESOURCE_NOT_FOUND") * @param message - Error message * @param details - Optional detailed error description * @param path - Optional request path for debugging * @param suggestion - Optional suggestion for resolving the error * @param requestId - Optional request ID for tracking * @param documentation_url - Optional documentation URL */ function sendErrorResponse(res, statusCode, errorCode, message, details, path, suggestion, requestId, documentation_url) { const errorResponse = { status: "error", statusCode, error: { code: errorCode, message, details, timestamp: new Date().toISOString(), ...(path && { path }), ...(suggestion && { suggestion }), }, ...(requestId && { requestId }), ...(documentation_url && { documentation_url }), }; res.statusCode = statusCode; res.writeHead(statusCode, { "Content-Type": "application/json" }); res.end(JSON.stringify(errorResponse)); } /** * Send a standardized success response * @param res - Express response object * @param data - Response data * @param message - Success message * @param statusCode - HTTP status code (defaults to 200) */ function sendSuccessResponse(res, data, message = "Success", statusCode = http_status_codes_1.StatusCodes.OK) { const successResponse = { status: "success", statusCode, data, message, timestamp: new Date().toISOString(), }; res.statusCode = statusCode; res.writeHead(statusCode, { "Content-Type": "application/json" }); res.end(JSON.stringify(successResponse)); } /** * Common error response functions for frequently used status codes */ exports.ErrorResponses = { // 400 Bad Request badRequest: (res, message = "Bad Request", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.BAD_REQUEST, "BAD_REQUEST", message, details, path, suggestion, requestId, documentation_url), // 401 Unauthorized unauthorized: (res, message = "Unauthorized", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.UNAUTHORIZED, "UNAUTHORIZED", message, details, path, suggestion, requestId, documentation_url), // 403 Forbidden forbidden: (res, message = "Forbidden", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.FORBIDDEN, "FORBIDDEN", message, details, path, suggestion, requestId, documentation_url), // 404 Not Found notFound: (res, message = "Not Found", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.NOT_FOUND, "RESOURCE_NOT_FOUND", message, details, path, suggestion, requestId, documentation_url), // 409 Conflict conflict: (res, message = "Conflict", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.CONFLICT, "CONFLICT", message, details, path, suggestion, requestId, documentation_url), // 422 Unprocessable Entity unprocessableEntity: (res, message = "Unprocessable Entity", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.UNPROCESSABLE_ENTITY, "UNPROCESSABLE_ENTITY", message, details, path, suggestion, requestId, documentation_url), // 429 Too Many Requests tooManyRequests: (res, message = "Too Many Requests", details, path, suggestion, retryAfter, requestId, documentation_url) => { const headers = { "Content-Type": "application/json", }; if (retryAfter) { headers["Retry-After"] = retryAfter.toString(); } const errorResponse = { status: "error", statusCode: http_status_codes_1.StatusCodes.TOO_MANY_REQUESTS, error: { code: "TOO_MANY_REQUESTS", message, details, timestamp: new Date().toISOString(), ...(path && { path }), ...(suggestion && { suggestion }), }, ...(requestId && { requestId }), ...(documentation_url && { documentation_url }), }; res.statusCode = http_status_codes_1.StatusCodes.TOO_MANY_REQUESTS; res.writeHead(http_status_codes_1.StatusCodes.TOO_MANY_REQUESTS, headers); res.end(JSON.stringify(errorResponse)); }, // 500 Internal Server Error internalServerError: (res, message = "Internal Server Error", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR, "INTERNAL_SERVER_ERROR", message, details, path, suggestion, requestId, documentation_url), // 502 Bad Gateway badGateway: (res, message = "Bad Gateway", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.BAD_GATEWAY, "BAD_GATEWAY", message, details, path, suggestion, requestId, documentation_url), // 503 Service Unavailable serviceUnavailable: (res, message = "Service Unavailable", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.SERVICE_UNAVAILABLE, "SERVICE_UNAVAILABLE", message, details, path, suggestion, requestId, documentation_url), // 504 Gateway Timeout gatewayTimeout: (res, message = "Gateway Timeout", details, path, suggestion, requestId, documentation_url) => sendErrorResponse(res, http_status_codes_1.StatusCodes.GATEWAY_TIMEOUT, "GATEWAY_TIMEOUT", message, details, path, suggestion, requestId, documentation_url), }; //# sourceMappingURL=error-response.util.js.map