name: TypeScript CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  verify:
    name: Verify & Test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: npm

      - name: Setup Biome
        uses: biomejs/setup-biome@v2
        with:
          version: "latest"

      - name: Install Dependencies
        run: |
          if [ -f "package-lock.json" ]; then
            npm ci
          else
            npm install
          fi

      - name: Biome Linter & Formatter Check
        run: biome ci .

      - name: Strict Type Check
        run: npx tsc --noEmit

      - name: Run Test Suite
        run: |
          if npm run | grep -q "test"; then
            npm test
          else
            echo "No test script found in package.json; skipping test run."
          fi
