Files
bewell-in-ua/middlewares/chain.ts
2025-02-05 08:01:14 +02:00

37 lines
970 B
TypeScript

/***************************************
*
* Based on
* https://medium.com/@tanzimhossain2/implementing-multiple-middleware-in-next-js-combining-nextauth-and-internationalization-28d5435d3187
*
**************************************/
import {NextMiddlewareResult} from 'next/dist/server/web/types'
import {NextResponse} from 'next/server'
import type {NextFetchEvent, NextRequest} from 'next/server'
export type CustomMiddleware = (
request: NextRequest,
event: NextFetchEvent,
response: NextResponse
) => NextMiddlewareResult | Promise<NextMiddlewareResult>
type MiddlewareFactory = (middleware: CustomMiddleware) => CustomMiddleware
export function chain(
functions: MiddlewareFactory[],
index = 0
): CustomMiddleware {
const current = functions[index]
if (current) {
const next = chain(functions, index + 1)
return current(next)
}
return (
request: NextRequest,
event: NextFetchEvent,
response: NextResponse
) => {
return response
}
}