UNPKG

thrilled-be-core

Version:

Core Express backend package with middleware, logging, security, and base application setup

61 lines (60 loc) 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.apiResponse = void 0; exports.formatResponse = formatResponse; exports.createPaginationMeta = createPaginationMeta; const types_1 = require("../types"); /** * Creates a standardized API response */ function formatResponse(res, statusCode, message, data, meta, errors) { const success = statusCode >= 200 && statusCode < 400; const response = { success, message, statusCode, }; if (data !== undefined) { response.data = data; } if (meta) { response.meta = meta; } else if (Array.isArray(data)) { // Automatically add count when returning arrays response.meta = { count: data.length }; } if (errors && errors.length > 0) { response.errors = errors; } return res.status(statusCode).json(response); } /** * Helper for pagination metadata * */ function createPaginationMeta(options) { const { page, limit, total } = options; return { page, limit, total: total || 0, pages: total ? Math.ceil(total / limit) : 0, }; } /** * Common response helper methods */ exports.apiResponse = { success: (res, message = 'Success', data, meta) => formatResponse(res, types_1.HttpStatusCodes.OK, message, data, meta), created: (res, message = 'Created successfully', data) => formatResponse(res, types_1.HttpStatusCodes.CREATED, message, data), noContent: (res, message = 'No content') => formatResponse(res, types_1.HttpStatusCodes.NO_CONTENT, message), badRequest: (res, message = 'Bad request', errors) => formatResponse(res, types_1.HttpStatusCodes.BAD_REQUEST, message, undefined, undefined, errors), unauthorized: (res, message = 'Unauthorized') => formatResponse(res, types_1.HttpStatusCodes.UNAUTHORIZED, message), forbidden: (res, message = 'Forbidden') => formatResponse(res, types_1.HttpStatusCodes.FORBIDDEN, message), notFound: (res, message = 'Not found') => formatResponse(res, types_1.HttpStatusCodes.NOT_FOUND, message), conflict: (res, message = 'Conflict') => formatResponse(res, types_1.HttpStatusCodes.CONFLICT, message), unprocessableEntity: (res, message = 'Unprocessable entity', errors) => formatResponse(res, types_1.HttpStatusCodes.UNPROCESSABLE_ENTITY, message, undefined, undefined, errors), serverError: (res, message = 'Internal server error') => formatResponse(res, types_1.HttpStatusCodes.INTERNAL_SERVER_ERROR, message), serviceUnavailable: (res, message = 'Service unavailable') => formatResponse(res, types_1.HttpStatusCodes.SERVICE_UNAVAILABLE, message), custom: (res, statusCode, message, data, meta, errors) => formatResponse(res, statusCode, message, data, meta, errors), };