#!/bin/bash set -euo pipefail echo "====================================" echo " Davidson CI - JavaScript/TypeScript" echo "====================================" JS_COUNT="${DAVIDSON_JS_COUNT:-0}" TS_COUNT="${DAVIDSON_TS_COUNT:-0}" TOTAL=$((JS_COUNT + TS_COUNT)) if [ "$TOTAL" -eq 0 ]; then echo "No JavaScript or TypeScript detected - skipping module" exit 0 fi echo echo "JavaScript files: $JS_COUNT" echo "TypeScript files: $TS_COUNT" echo # ------------------------- # Dependencies # ------------------------- echo "→ Node dependencies" if [ -f package-lock.json ]; then npm ci elif [ -f package.json ]; then echo "package.json found but no package-lock.json" else echo "No package.json found" fi # ------------------------- # JavaScript syntax # ------------------------- echo echo "→ JavaScript syntax" if [ "$JS_COUNT" -gt 0 ]; then find . \ -type f \ \( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) \ -not -path "./node_modules/*" \ -print0 | while IFS= read -r -d '' file; do echo "Checking $file" node --check "$file" done else echo "No JavaScript files - skipping syntax check" fi # ------------------------- # TypeScript # ------------------------- echo echo "→ TypeScript" if [ "$TS_COUNT" -gt 0 ]; then if [ -f package.json ] && \ node -e "let p=require('./package.json'); process.exit(p.scripts?.typecheck ? 0 : 1)" then npm run typecheck elif [ -x node_modules/.bin/tsc ]; then npx tsc --noEmit else echo "TypeScript detected but no TypeScript checker configured" fi else echo "No TypeScript files - skipping" fi # ------------------------- # ESLint # ------------------------- echo echo "→ ESLint" if [ -f package.json ] && \ node -e "let p=require('./package.json'); process.exit(p.scripts?.lint ? 0 : 1)" then npm run lint else echo "No lint script - skipping" fi # ------------------------- # Tests # ------------------------- echo echo "→ JavaScript tests" if [ -f package.json ] && \ node -e "let p=require('./package.json'); process.exit(p.scripts?.test ? 0 : 1)" then npm test else echo "No test script - skipping" fi # ------------------------- # Build # ------------------------- echo echo "→ Frontend build" if [ -f package.json ] && \ node -e "let p=require('./package.json'); process.exit(p.scripts?.build ? 0 : 1)" then npm run build else echo "No build script - skipping" fi echo echo "JavaScript/TypeScript module completed successfully"