Fast, lightweight middleware framework.
-
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
To use this utility, simply import it into your project:
import { run } from "umid";
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.
-
mode
(optional): Specifies the execution mode. Default is0
. -
...fns
: An array of functions to be executed. -
...args
: Parameters to be passed to the functions.
- Mode 0: (Default) Without
next
- Mode 1: With
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));
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));
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);
-
mode
: Number (optional) - Execution mode (0, 1). Default is0
. -
...fns
: Array - Functions to be executed. -
...args
: Array - Parameters to be passed to the functions.
-
Promise
: Resolves when all functions are executed or when a function returns a result (in mode 0).
This project is licensed under the MIT License. See the LICENSE file for details.