Skip to content

Invokes connect-like middleware if / unless routing criteria matches. Inspired on express-unless module.

License

Notifications You must be signed in to change notification settings

BackendStack21/middleware-if-unless

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

NPM version NPM Total Downloads License TypeScript support Github stars

Invokes connect-like middleware if / unless routing criteria match.

Inspired by the express-unless module. But a lot faster ;)

Main features

  • Advanced routes matching capabilities. Uses find-my-way or any compatible router to match the routes.
  • iff: execute middleware only if routing criteria is a match. Ideal use case: API gateways (see: fast-gateway)
  • unless: execute middleware unless routing criteria is a match.
  • Arbitraty chaining of iff -> unless of vice-versa.
  • Low overhead, blazing fast implementation.

Usage

Install

npm i middleware-if-unless

Extending middleware

const iu = require('middleware-if-unless')()

const middleware = function (req, res, next) {
  res.body = 'hit'

  return next()
}

// extend middleware with iff/unless capabilities
iu(middleware)

unless

Execute middleware unless routing criteria is a match:

const app = require('express')()
app.use(middleware.unless([
  '/not/allowed/to/hit'
]))

...

In this example, all requests except [GET] /not/allowed/to/hit will cause the middleware to be executed.

iff

Execute middleware only if routing criteria is a match:

const app = require('express')()
app.use(middleware.iff([
  {
    methods: ['POST', 'DELETE', 'PUT', 'PATCH'],
    url: '/tasks/:id'
  }
]))

...

In this example, only a [POST|DELETE|PUT|PATCH] /tasks/:id request will cause the middleware to be executed.

More

About

Invokes connect-like middleware if / unless routing criteria matches. Inspired on express-unless module.

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published