UNPKG

express-ts-skeleton

Version:

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

154 lines (115 loc) 4.22 kB
# express-ts-skeleton **express-ts-skeleton** is a boilerplate for building Express applications using TypeScript. It simplifies the process of defining routes and handling responses in your Express applications. ## Features - A **skeleton** for your **ts** project - Easily define routes with a structured approach. - Return standardized success and failure responses. - Supports middleware and validation for route handling. ## Installation **You can install the package via npm:** [![NPM Version][npm-version-image]][npm-url] [![NPM Install Size][npm-install-size-image]][npm-install-size-url] [![NPM Downloads][npm-downloads-image]][npm-downloads-url] ```bash npm install express-ts-skeleton ``` ## Usage ### Defining the Main Route File **To define your main route file, you can use the following example:** ```typescript import { IndexRouteFormat, Routehelper } from "express-ts-skeleton"; import { commonRoutes } from "./common.routes"; //Define an array of routes const routes: Array<IndexRouteFormat> = [ { path: "/common", // Path for the route route: commonRoutes, // Common routes to use }, ]; // Create a new router instance export const router = Routehelper.mountRoutes(routes); ``` ### Defining Routes **To define specific routes for your application, create an array of `RouteFormat` objects. Below is an example of how to set up common routes using the `routeMaker` function:** ```typescript import { RequestMethod, RouteFormat, Routehelper } from "express-ts-skeleton"; import { controllers } from "../controllers/common.cotrollers"; const routes: Array<RouteFormat> = [ { type: RequestMethod.GET, //Request method path: "/", //Path middlewares: [ // Add middleware ], validate: null, //Add validator handler: "get", // controller class function }, ]; export const commonRoutes = Routehelper.assembleRouter(controllers, routes); ``` ### Example of Controllers **Create controllers to handle business logic. Below is an example of a controller class:** ```typescript import { FailureResponse, SuccessResponse } from "express-ts-skeleton"; export class Controllers { constructor() {} async create() { try { return SuccessResponse.success("Success"); } catch (err: unknown) { return FailureResponse.failure({ message: err instanceof Error ? err.message : (err as string), error: err instanceof Error ? err.message : "Unknown error", }); } } } ``` ### Example of Validators **You can use the commonValidators object to validate different aspects of incoming requests (query, params, and body) in your Express routes.** ```typescript import { validateObjectLiteral } from "express-ts-skeleton"; import Joi from "joi"; export const validators: validateObjectLiteral = { create: { query: Joi.object().keys({ id: Joi.string().regex(/[0-9]/), }), params: Joi.object().keys({ id: Joi.string().regex(/[0-9]/), }), body: Joi.object().keys({ id: Joi.string().regex(/[0-9]/), }), }, }; ``` - **These keys (query, parmas, body) are optional.** - **query** - to validate query of request. - **params** - to validate params of request. - **body** - to validate body of request. ## CommonHelper ### filter - To create a filter ```typescript import { CommonHelper } from "express-ts-skeleton"; const filterQuery = CommonHelper.filter<{ name: string }>({ data, fields: { name: "normal" }, }); ``` - use **normal** to apply normal filter on feild. - use **regex** to apple regex on field. - use **greaterThan** to apply greater than on feild - use **lessThan** to apply less than on feild ## License This project is licensed under the MIT License. ### Report bugs ```Javascript im.jsmeet@gmail.com ``` [npm-version-image]: https://badgen.net/npm/v/express-ts-skeleton [npm-install-size-image]: https://packagephobia.com/badge?p=express-ts-skeleton [npm-downloads-image]: https://badgen.net/npm/dm/express-ts-skeleton [npm-url]: https://www.npmjs.com/package/express-ts-skeleton [npm-install-size-url]: https://packagephobia.com/result?p=express-ts-skeleton [npm-downloads-url]: https://npmcharts.com/compare/express-ts-skeleton?minimal=true