top | item 45100760 (no title) bestest | 6 months ago Consider middleware.ts as a root middleware. Nothing is stopping you from creating your own chain (which is trivial) in there. I mean, that would eventually work the same if nextjs implemented that feature — there would be a root somewhere. discuss order hn newest rs186|6 months ago That doesn't answer parent's question.People expect "middleware" to mean a certain thing and work a certain way. bestest|6 months ago middleware = fn(req) → next(req). express/koa give you the use() chain. next.js gives you one root, but nothing stops you from chaining yourself. same semantics, just manual wiring. type mw = (req: Request, next: () => Response) => Response; const logger: mw = (req, next) => { console.log(req.url); return next(); }; const auth: mw = (req, next) => { if (!req.headers.get("x-auth")) return new Response("forbidden", { status: 403 }); return next(); }; function chain(mws: mw[]) { return (req: Request) => mws.reduceRight((next, mw) => () => mw(req, next), () => new Response("ok"))(); } export function middleware(req: Request) { return chain([logger, auth])(req); } root is given, chain is trivial. that’s middleware. load replies (1)
rs186|6 months ago That doesn't answer parent's question.People expect "middleware" to mean a certain thing and work a certain way. bestest|6 months ago middleware = fn(req) → next(req). express/koa give you the use() chain. next.js gives you one root, but nothing stops you from chaining yourself. same semantics, just manual wiring. type mw = (req: Request, next: () => Response) => Response; const logger: mw = (req, next) => { console.log(req.url); return next(); }; const auth: mw = (req, next) => { if (!req.headers.get("x-auth")) return new Response("forbidden", { status: 403 }); return next(); }; function chain(mws: mw[]) { return (req: Request) => mws.reduceRight((next, mw) => () => mw(req, next), () => new Response("ok"))(); } export function middleware(req: Request) { return chain([logger, auth])(req); } root is given, chain is trivial. that’s middleware. load replies (1)
bestest|6 months ago middleware = fn(req) → next(req). express/koa give you the use() chain. next.js gives you one root, but nothing stops you from chaining yourself. same semantics, just manual wiring. type mw = (req: Request, next: () => Response) => Response; const logger: mw = (req, next) => { console.log(req.url); return next(); }; const auth: mw = (req, next) => { if (!req.headers.get("x-auth")) return new Response("forbidden", { status: 403 }); return next(); }; function chain(mws: mw[]) { return (req: Request) => mws.reduceRight((next, mw) => () => mw(req, next), () => new Response("ok"))(); } export function middleware(req: Request) { return chain([logger, auth])(req); } root is given, chain is trivial. that’s middleware. load replies (1)
rs186|6 months ago
People expect "middleware" to mean a certain thing and work a certain way.
bestest|6 months ago