1.0.0 • Published 3 years ago

express-route-groups v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

Express Route Groups

import express from 'express'
import Group from 'express-route-groups'

const app = express()
app.use( Group('/users', router => {
    router.get('/:id', usersController.view)
    router.get('/create', usersController.create)
}) )

Middleware

Place middleware before the callback function

app.use( Group(
    '/users',
    usersMiddleware,
    usersMiddleware2,
    router => {
        router.get('/:id', usersController.view)
        router.get('/create', usersController.create)
    }
) )

Module Format:

CommonJS (CommonJS + ES Module friendly)

Inspect the code:

const { Router } = require('express')

module.exports = function Group(...args) {

    const path = (typeof args[0] ==='string') ? args[0] : undefined

    const router = Router()
    let internalRouter
    if (path) {
        internalRouter = Router()
        router.use(path, internalRouter)
    } else {
        internalRouter = router
    }

    // skip the first item if it was a string
    // leave the last item too
    for (let i = (path) ? 1 : 0; i < args.length -1; i++) {
        internalRouter.use(args[i])
    }

    const callback = args[args.length -1]
    callback(internalRouter)

    return router
}

License:

MIT