#!/usr/bin/env bash
# Dipanggil oleh PM2 (ecosystem.config.cjs) sebelum exec Nitro.
# Membersihkan TCP PORT agar tidak ada proses yatim / duplikat yang pegang port
# (penyebab sering: HTML build baru + Nitro lama → /_nuxt/*.js 404/500).

set -euo pipefail

PORT="${NITRO_PORT:-${PORT:-3020}}"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

free_port() {
  if command -v fuser >/dev/null 2>&1; then
    fuser -k "${PORT}/tcp" 2>/dev/null || true
    return 0
  fi
  local p
  p=$(ss -tlnp 2>/dev/null | grep -E ":${PORT}\b" | sed -n 's/.*pid=\([0-9]*\).*/\1/p' | sort -u)
  for pid in $p; do
    if [[ -n "${pid}" ]] && [[ "${pid}" =~ ^[0-9]+$ ]]; then
      kill "${pid}" 2>/dev/null || true
    fi
  done
}

free_port
sleep 1

# Jangan start Nitro jika manifest chunk SSR tidak konsisten (gejala: 500 di /team, ERR_MODULE_NOT_FOUND).
if ! bash "${ROOT}/scripts/verify-nitro-server-chunks.sh"; then
  echo "workpulse-fe-pm2-entry: verifikasi gagal — Nitro tidak dijalankan." >&2
  exit 1
fi

exec node ".output/server/index.mjs"
