@varuntiwari/express-ts-decorators
TypeScript icon, indicating that this package has built-in type declarations

1.0.13 • Public • Published

Express-Typescript Decorators

Simple Typescript decorators for Express.

📈 Installation

npm i @varuntiwari/express-ts-decorators

🧪 Usage

  • Initialize Express:
import express from 'express';

const app = express();
  • The library uses a single router to handle all the incoming requests. Use the AppRouter provided by library to setup Routing:
import express from 'express';
+ import { AppRouter } from '@varuntiwari/express-ts-decorators';

const app = express();

+ app.use(AppRouter.getInstance());
  • Now use the ErrorMiddleware provided by the library to setup Error Handling:
import express from 'express';
+ import { AppRouter, ErrorMiddleware } from '@varuntiwari/express-ts-decorators';

const app = express();

app.use(AppRouter.getInstance());
+ app.use(ErrorMiddleware);

(Use the middleware after using the AppRouter)

  • Create a new file containing your controller class and use the decorators provided by the library:
import {
  controller,
  get,
  post,
  bodyValidator,
} from '@varuntiwari/express-ts-decorators';

@controller('/product')
class ProductController {
  @get('/product/:id') /* Register a get method */
  @use(auth) /* Use one or multiple middlewares */
  getProducts(req: Request, res: Response) {
    //
  }

  @post('/product')
  @use(auth)
  @use(admin)
  createProduct(req: Request, res: Response) {
    //
  }
}

@controller('/auth')
export class AuthController {
  @post('/login')
  @bodyValidator('email', 'password') /* Validate request body */
  login(req: Request, res: Response): void {
    //
  }

  @get('/logout')
  logout(req: Request, res: Response): void {
    //
  }
}
  • Import the controller to the index.ts file:
import express from 'express';
import { AppRouter, ErrorMiddleware } from '@varuntiwari/express-ts-decorators';

+ import './controllers.ts';

const app = express();

app.use(AppRouter.getInstance());
app.use(ErrorMiddleware);
  • Start the server and you are ready to go 🚀

Features

  • [x] Decorators for all HTTP request methods like get, post, etc.
  • [x] Provides request body validators.
  • [x] Provides a single pre-configured router.
  • [x] Integrated Error Handling, which means that no try-catch blocks are required inside controller methods.

Tools and Technologies used

  1. Typescript

🛠 Local Installation and setup

  1. Clone the repo to your local machine.

  2. Install the required dependency for server using :

    npm install

🏎 Creating production built

  1. Build the package using

    npm run build

😎 Team Members

GSSoC'22
Varun Kumar Tiwari
LinkedIn Github

License

GPL-3.0




(If you liked the project, give it star 😃)

Package Sidebar

Install

npm i @varuntiwari/express-ts-decorators

Weekly Downloads

0

Version

1.0.13

License

ISC

Unpacked Size

52 kB

Total Files

25

Last publish

Collaborators

  • varuntiwari