meru-stablecoin-lib
Version:
A comprehensive TypeScript library for stablecoin operations including encryption utilities, error handling, and validation tools
108 lines • 6.26 kB
JavaScript
;
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