https://github.com/advisories/GHSA-f82v-jwr5-mffw
ヤバめ。アップデートしたらjotaiのswc pluginが壊れた。つらい
ミドルウェアは高階関数としてチェーンして書くと楽そう。 https://zenn.dev/smartcamp/articles/92207e343f8a79
import type { NextFetchEvent, NextRequest, NextResponse } from "next/server";
// 作成するミドルウェア関数の型
export type Middleware = (
req: NextRequest,
event: NextFetchEvent,
next: () => Promise<NextResponse>
) => Promise<NextResponse>;
// Chain作成関数の型
type MiddlewareChain = (
request: NextRequest,
event: NextFetchEvent,
next: () => Promise<NextResponse>
) => Promise<NextResponse>;
// Chain作成関数
export const createMiddlewareChain = (...middlewares: Middleware[]): MiddlewareChain => {
// 実行する関数を返す
return async (req, event, next) => {
// ミドルウェアを順番に実行する関数を定義
const executeMiddleware = (index: number): Promise<NextResponse> => {
// ミドルウェアがある場合は実行する
if (index < middlewares.length) {
const middleware = middlewares[index];
return middleware(req, event, async () => executeMiddleware(index + 1));
}
// ミドルウェアがない場合は次の処理を実行する(= 全てのミドルウェアが実行済み)
return next();
};
return executeMiddleware(0);
};
};