Files
rc-compat/bash-setup-scripts/fix-api-dynamic-routes.sh
T

74 lines
2.5 KiB
Bash
Executable File

#!/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!"