exp-core
Version:
Core utilities and middleware for building robust Express applications, including standard API responses, async error handling, request sanitization, and extended request types.
68 lines (64 loc) • 2.01 kB
JavaScript
// src/utils/apiResponse.util.ts
var successResponse = (res, options) => {
if (!options.statusCode) options.statusCode = 200;
return apiResponse(res, true, options);
};
var errorResponse = (res, options) => {
if (!options.statusCode) options.statusCode = 400;
return apiResponse(res, false, options);
};
function apiResponse(res, isSuccess, options) {
const responseObject = {
isSuccess,
message: options.message,
...options.meta && { meta: options.meta },
...options.data && { data: options.data },
...options.errors && { errors: options.errors }
};
res.status(options.statusCode).json(responseObject);
}
// src/middlewares/aw.middleware.ts
var aw = (requestHandler) => {
return (req, res, next) => {
Promise.resolve(requestHandler(req, res, next)).catch((error) => {
const message = error.message || "An unexpected error occurred. Please try again later." /* SERVER_ERROR */;
return errorResponse(res, {
message,
statusCode: error.statusCode || 400,
errors: error.errors || null
});
});
};
};
var aw_middleware_default = aw;
// src/libs/ApiError.lib.ts
var ApiError = class extends Error {
/**
* Creates a new ApiError instance.
*
* @param {string} message - A human-readable error message.
* @param {number} [statusCode=400] - Optional HTTP status code.
* @param {Record<string, string[]> | null} [errors=null] - Optional detailed errors.
*/
constructor(message, statusCode = 400, errors = null) {
super(message);
this.statusCode = statusCode;
this.errors = errors;
}
};
var ApiError_lib_default = ApiError;
// src/middlewares/body.middleware.ts
var initRequestBody = aw_middleware_default(
async (req, res, next) => {
if (!req.body) req.body = {};
next();
}
);
var body_middleware_default = initRequestBody;
export {
ApiError_lib_default as ApiError,
aw_middleware_default as aw,
errorResponse,
body_middleware_default as initRequestBody,
successResponse
};