name: CI

on:
  push:
  pull_request:

jobs:
  node:
    name: Node ${{ matrix.node-version }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        node-version: ['22', '24']
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: npm
      - run: npm ci
      - run: npm run test:unit

  bun:
    name: Bun (latest)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '22'
          cache: npm
      - uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest
      - run: npm ci
      # test:bun imports the built dist/, so build first.
      - run: npm run build
      # Bun as a runtime is the supported Bun story (`bun add` / `bun run`).
      - run: npm run test:bun
