decorator-router

1.3.1 • Public • Published

decorator-router Build Status

Framework agnostic router using es7 decorators

Install

$ npm install --save decorator-router

Usage

Given a controller controller/homeCtrl.js

import {httpGet, middlewareFactory} from 'decorator-router';
 
const isLoggedIn = middlewareFactory(function(res, req, next){
    /*   check if user is logged in   */
    next();
});
 
const isRole = middlewareFactory(role => function(res, req, next){
    /*   check if user have the right role   */
    next();
});
 
const 
 
export default {
 
    @isLoggedIn
    @httpGet('/')
    getIndex(req, res){
        res.ok();
    },
 
    @isRole('admin')
    @httpGet('/admin')
    getAdminPortal(req, res){
        res.ok();
    }
}

You can register those routes by doing

import decoratorRouter = from 'decorator-router';
import decoratorRouterExpress = from 'decorator-router-express';
import express from 'express';
 
let app = express();
 
decoratorRouter('controller/*Ctrl.js', decoratorRouterExpress, app)
.then(x => {
    console.log('done');
});

API

decoratorRouter(patterns, strategy, ...strategyParameters)

patterns

Required
Type: string|Array

globby patterns

strategy

Required
Type: Function

the strategy used to register routes. See available strategies

strategyParameters

Type: Array

This will be passed to instantiate the strategy.

middlewareFactory(middleware)

Returns a decorator.

middleware

Required
Type: Function

Can be a middleware or a middleware factory depending if you need to pass parameters to your middleware or not.

@httpGet(url)

@httpPost(url)

@httpPut(url)

@httpDelete(url)

@httpHead(url)

url

Required
Type: string

Strategies

Inspiration

I originaly wrote node-annotation-router Annotations names are inspired by Microsoft's MVC

License

MIT © Thomas Sileghem

Readme

Keywords

none

Package Sidebar

Install

npm i decorator-router

Weekly Downloads

7

Version

1.3.1

License

MIT

Last publish

Collaborators

  • mastilver