umid v4.0.0
Universal Middleware
Fast, lightweight middleware framework.
Features
Browser and Node - Use in browser and node
- Async Await and Promise support - Support both async await and promise functions
- No Dependency - No Bloating. No external dependencies
- Express.js style middlware - Express.js like design
yarn: yarn add umid
npm: npm i umid
module: https://unpkg.com/umid?module
Installation
To use this utility, simply import it into your project:
import { run } from "umid";
Usage
The run
function accepts a mode and returns a function that accepts an array of functions to be executed asynchronously. The execution behavior depends on the mode specified.
Parameters
mode
(optional): Specifies the execution mode. Default is0
....fns
: An array of functions to be executed....args
: Parameters to be passed to the functions.
Modes
- Mode 0: (Default) Without
next
- Mode 1: With
next
Examples
Mode 0: Without next
In this mode, the functions are called sequentially without a next
callback.
const runWithoutNext = run(0);
const fn1 = async (param1, param2) => {
console.log("fn1", param1, param2);
};
const fn2 = async (param1, param2) => {
console.log("fn2", param1, param2);
return "result2";
};
runWithoutNext(fn1, fn2)("hello", "world")
.then((result) => console.log("Final result:", result))
.catch((err) => console.error("Error:", err));
Mode 1: With next
In this mode, the functions are called sequentially with a next
callback, which must be called to proceed to the next function.
const runWithNext = run(1);
const fn1 = async (param1, param2, next) => {
console.log("fn1", param1, param2);
next();
};
const fn2 = async (param1, param2, next) => {
console.log("fn2", param1, param2);
next();
// next('not authorized'); // not authorized error
};
runWithNext(fn1, fn2)("hello", "world")
.then(() => console.log("All functions executed"))
.catch((err) => console.error("Error:", err));
Creating a express middleware utility
const expressMiddleware = run(1);
const fn1 = async (req) => {
console.log('fn1');
};
const fn2 = async (req) => {
console.log('fn2');
};
const expressMiddleware = (req, res, next) => {
console.log('ex middleware', req, res, next);
setTimeout(() => {
next();
}, 1000)
}
const fn3 = async (req) => "over";
const req = {};
const res = {};
run()(fn1, expressMiddleware(expressMiddleware), fn2, fn3)(req, res).then(console.log).catch(console.log);
API
run(mode) => (...fns) => async (...args) => Promise
Parameters:
mode
: Number (optional) - Execution mode (0, 1). Default is0
....fns
: Array - Functions to be executed....args
: Array - Parameters to be passed to the functions.
Returns:
Promise
: Resolves when all functions are executed or when a function returns a result (in mode 0).
License
This project is licensed under the MIT License. See the LICENSE file for details.
12 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago