{"library":"middleware-if-unless","title":"Middleware if/unless","description":"middleware-if-unless is a Node.js library that provides conditional execution of connect-like middleware based on routing criteria. Inspired by the popular `express-unless` module, it aims for higher performance by leveraging `find-my-way` for advanced route matching capabilities. It allows developers to define rules for when a middleware should (`iff`) or should not (`unless`) be applied to an incoming request, supporting various matching criteria like methods, URLs, functions, and even `Accept-Version` headers. The package ships with TypeScript types, promoting better developer experience and type safety. Currently at version 1.6.0, it maintains an active release cadence, with recent updates focusing on performance optimizations and dependency updates.","language":"javascript","status":"active","last_verified":"Thu Apr 23","install":{"commands":["npm install middleware-if-unless"],"cli":null},"imports":["import createIffUnless from 'middleware-if-unless';","import createIffUnless, { type IffUnlessMiddleware } from 'middleware-if-unless';","const iu = require('middleware-if-unless')();"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import express from 'express';\nimport createIffUnless from 'middleware-if-unless';\n\nconst app = express();\n\ninterface CustomRequest extends express.Request {\n  body: string;\n}\n\nconst myMiddleware: express.RequestHandler = (req: CustomRequest, res, next) => {\n  req.body = 'hit';\n  console.log('Middleware executed!');\n  next();\n};\n\n// Extend the middleware with iff/unless capabilities\nconst extendedMiddleware = createIffUnless()(myMiddleware);\n\n// Use 'unless': middleware runs for all requests EXCEPT /not/allowed\napp.use(extendedMiddleware.unless([\n  '/not/allowed'\n]));\n\n// Use 'iff': middleware runs ONLY for POST/PUT/DELETE/PATCH to /tasks/:id\napp.use(extendedMiddleware.iff([\n  {\n    methods: ['POST', 'DELETE', 'PUT', 'PATCH'],\n    url: '/tasks/:id',\n  },\n]));\n\napp.get('/', (req: CustomRequest, res) => {\n  res.send(`Root path. Middleware response: ${req.body ?? 'not hit'}`);\n});\n\napp.get('/not/allowed', (req: CustomRequest, res) => {\n  res.send(`Not Allowed path. Middleware response: ${req.body ?? 'not hit'}`);\n});\n\napp.post('/tasks/123', (req: CustomRequest, res) => {\n  res.send(`Task create. Middleware response: ${req.body ?? 'not hit'}`);\n});\n\nconst PORT = process.env.PORT ?? 3000;\napp.listen(PORT, () => {\n  console.log(`Server listening on port ${PORT}`);\n  console.log('Try:');\n  console.log(`- GET http://localhost:${PORT}/ (should show 'hit')`);\n  console.log(`- GET http://localhost:${PORT}/not/allowed (should show 'not hit')`);\n  console.log(`- POST http://localhost:${PORT}/tasks/123 (should show 'hit')`);\n});\n","lang":"typescript","description":"This quickstart demonstrates how to apply a custom Express-like middleware conditionally using `iff` and `unless` methods based on request paths and HTTP methods.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}