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

    Keywords

    none

    Install

    npm i decorator-router

    DownloadsWeekly Downloads

    18

    Version

    1.3.1

    License

    MIT

    Last publish

    Collaborators

    • mastilver