#!/bin/zsh echo "🛠 Starting API Dynamic Route Autofix (Next.js 15+)..." echo "" # Find all dynamic API routes like src/app/api/**/[something]/route.js DYNAMIC_API=$(find src/app/api -type f -path "*/\[*\]/route.js") RED=$(tput setaf 1) YELLOW=$(tput setaf 3) GREEN=$(tput setaf 2) RESET=$(tput sgr0) for FILE in $DYNAMIC_API; do echo "==========================================" echo "📄 Fixing API route: $FILE" # Extract folder name: [id], [modelId], [partId], etc. FOLDER=$(basename $(dirname "$FILE")) PARAM_NAME=${FOLDER//[\[\]]/} # remove brackets echo "➡ Dynamic API param detected: ${GREEN}${PARAM_NAME}${RESET}" # Make backup cp "$FILE" "$FILE.bak" CONTENT=$(cat "$FILE") ############################################################ # 1. Fix function signature ############################################################ if echo "$CONTENT" | grep -q "export async function GET(request, { params })"; then echo " 🔧 Fixing signature..." sed -i '' "s/export async function GET(request, { params })/export async function GET(request, context) {\n const { $PARAM_NAME } = await context.params;\n/" "$FILE" elif ! echo "$CONTENT" | grep -q "await context.params"; then echo " 🔧 Inserting param extraction at top of GET function..." sed -i '' "s/export async function GET([^)]*) {/export async function GET(request, context) {\n const { $PARAM_NAME } = await context.params;/" "$FILE" else echo " ✔ Signature already patched" fi ############################################################ # 2. Fix incorrect usage of params.PARAM_NAME ############################################################ if echo "$CONTENT" | grep -q "params.$PARAM_NAME"; then echo " 🔧 Removing old params.$PARAM_NAME usage..." sed -i '' "s/params\.$PARAM_NAME/$PARAM_NAME/g" "$FILE" else echo " ✔ No old params.$PARAM_NAME found" fi ############################################################ # 3. Validate presence of correct variable usage ############################################################ if grep -q "$PARAM_NAME" "$FILE"; then echo " ✔ Param $PARAM_NAME is being used correctly" else echo " ${YELLOW}⚠ WARN:${RESET} Param '$PARAM_NAME' not found in file. You may need manual review." fi ############################################################ echo " ${GREEN}✔ API route successfully patched${RESET}" echo "" done echo "==========================================" echo "🏁 API Dynamic Route Autofix Complete!"