UNPKG

express-ts-skeleton

Version:

This is a skeleton(boiler plate) for nodejs, express and typescript.

137 lines (136 loc) 5.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FailureResponse = exports.SuccessResponse = void 0; /* eslint-disable @typescript-eslint/no-explicit-any */ const http_status_codes_1 = require("http-status-codes"); //#MARK: SuccessResponse class SuccessResponse { /** * Returns a success response with a provided message. * @param {string} [message="Success"] - The response message. * @returns {ResponseFormat<null>} The formatted success response. */ static success(message = "Success") { const res = { isSuccess: true, statusCode: http_status_codes_1.StatusCodes.OK, message, }; return res; } /** * Returns a formatted response with the provided data. * @param {T} data - The data to include in the response. * @param {string} [message="Success"] - The response message. * @returns {ResponseFormat<T>} The formatted response. */ static data(data, message = "Success", metaData) { const res = { isSuccess: true, statusCode: http_status_codes_1.StatusCodes.OK, message, data, metaData, }; return res; } /** * Paginates a list of items and returns a formatted response. * @param {T[]} items - The array of items to paginate. * @param {number} [page=1] - The current page number. * @param {number} [size=10] - The number of items per page. * @param {number} [totalRecords=items.length] - The total number of records. * @param {string} [message="Success"] - The response message. * @returns {ResponseFormat} The paginated response. */ static paginate(items, page = 1, size = 10, totalRecords = items.length, metaData, message = "Success") { const res = { isSuccess: true, statusCode: http_status_codes_1.StatusCodes.OK, message, data: { items, total: items.length, page: +(page || 1), size: +(items.length > size ? items.length : size), totalRecords: +(totalRecords || items.length), }, metaData, }; return res; } /** * Handles file download. * @param {string} data.filePath - The path to the file. * @param {string} [data.fileName] - The name of the downloaded file. Defaults to the file name from `filePath`. * @param {boolean} [willDelete=true] - Whether to delete the file after download. * @param {number} [statusCode] - The HTTP response status code. */ static download(data, willDelete = true, metaData, statusCode = http_status_codes_1.StatusCodes.OK) { const filePahtSplit = data.filePath.split("/"); const fileName = data.fileName || filePahtSplit[filePahtSplit.length - 1]; const res = { filePath: data.filePath, fileName, metaData, willDelete, statusCode, }; return res; } /** * Renders an EJS template. * @param {string} data.view - The name of the EJS template to render. * @param {dynamicKeysI} data.content - Key-value pairs for replacing variables in the EJS template. * @param {dynamicKeysI} [data.metaData] - Headers to set in the response. */ static render(data, statusCode = http_status_codes_1.StatusCodes.OK) { const res = { view: data.view, content: data.content, metaData: data.metaData, statusCode, }; return res; } } exports.SuccessResponse = SuccessResponse; //#MARK: FailureResponse class FailureResponse { /** * Returns a failure response with the provided error details. * @param {number} [params.statusCode=400] - The HTTP status code. * @param {string} [params.message="Unknown error"] - The error message. * @param {any} [params.validation] - Validation details, if any. * @param {any} [params.error] - The error object or message. * @returns {ResponseFormat} The formatted failure response. */ static failure({ message = "Unknown error", error, validation, statusCode = http_status_codes_1.StatusCodes.BAD_REQUEST, metaData, }) { const res = { isSuccess: false, statusCode, message, validation, error: error || "SERVER ERROR", metaData, }; return res; } /** * Returns an unauthorized access response with the provided error details. * @param {any} error - The error object or message. * @param {number} [statusCode=401] - The HTTP status code. * @returns {ResponseFormat} The formatted unauthorized access response. */ static unauthorizedAccess({ message, error }, statusCode = http_status_codes_1.StatusCodes.UNAUTHORIZED, metaData) { const res = { isSuccess: false, statusCode, message: message || "UNAUTHORIZED ACCESS", error: error || "SERVER ERROR", metaData, }; return res; } } exports.FailureResponse = FailureResponse;