74 lines
2.5 KiB
Bash
Executable File
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!"
|