bun-routes
Version:
Bun Routes is a lightweight, type-safe router built for Bun with zero dependencies
24 lines (23 loc) • 802 B
JavaScript
export function middleware(fn) {
return fn;
}
export function composeMiddlewares(middlewares, finalHandler) {
return async (req, server) => {
const execute = async (middlewareIndex) => {
if (middlewareIndex >= middlewares.length) {
return finalHandler(req, server);
}
let hasNextBeenCalled = false;
const middleware = middlewares[middlewareIndex];
const next = async () => {
if (hasNextBeenCalled) {
throw new Error("next() called multiple times");
}
hasNextBeenCalled = true;
return execute(middlewareIndex + 1);
};
return middleware(req, server, next);
};
return execute(0);
};
}