@ 261027.7
current
name: CI

on:
  pull_request:

permissions:
  contents: read

jobs:
  commit-lint:
    name: Commit Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          fetch-depth: 0
      - uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6.2.1

  code-quality:
    name: Code Quality
    needs: commit-lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - name: Setup Biome CLI
        uses: biomejs/setup-biome@4c91541eaada48f67d7dbd7833600ce162b68f51 # v2.7.1
      - name: Run Biome
        run: biome ci

  build-wasm:
    name: Build WASM
    needs: commit-lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
        with:
          node-version-file: '.nvmrc'
      - name: Build WASM
        run: node ./tools/build-wasm.js
      - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
        with:
          name: wasm
          path: lib
          if-no-files-found: error

  build-and-test:
    needs: [code-quality, build-wasm]
    strategy:
      fail-fast: false
      matrix:
        node:
          - 22
          - 24
        platform:
          - ubuntu-latest
          - macos-latest
          - windows-latest
    name: "${{matrix.platform}} w/ Node.js ${{matrix.node}}.x"
    runs-on: ${{matrix.platform}}
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - name: "Use Node.js ${{matrix.node}}.x"
        uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
        with:
          node-version: ${{matrix.node}}.x
      - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
        with:
          name: wasm
          path: lib
      - run: npm install
      - run: npm run typecheck
      - run: npm run build
      - run: npm test