0.1.9 • Published 6 months ago

express-ts-skeleton v0.1.9

Weekly downloads
-
License
MIT
Repository
-
Last release
6 months ago

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 Install Size NPM Downloads

npm install express-ts-skeleton

Usage

Defining the Main Route File

To define your main route file, you can use the following example:

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:

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:

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.

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

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

im.jsmeet@gmail.com
0.1.9

6 months ago

0.1.8

8 months ago

0.1.7

9 months ago

0.1.4

9 months ago

0.1.3

9 months ago

0.1.6

9 months ago

0.1.5

9 months ago

0.1.2

9 months ago

0.0.12

9 months ago

0.0.13

9 months ago

0.1.0

9 months ago

0.1.1

9 months ago

0.0.11

9 months ago

0.0.10

9 months ago

0.0.9

9 months ago

0.0.8

9 months ago

0.0.7

9 months ago

0.0.6

9 months ago

0.0.5

9 months ago

0.0.4

9 months ago

0.0.3

9 months ago

0.0.2

9 months ago

0.0.1

9 months ago