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);
  };
};