name: CI on: push: branches: [main] pull_request: workflow_call: permissions: contents: read concurrency: group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: name: Test (${{ matrix.os }}, Node ${{ matrix.node }}) # GitHub only: the Gitea origin also runs .github/workflows but has no macOS/Windows runners. # Gitea matches runs-on before evaluating `if`, so off GitHub every job asks for ubuntu-latest and is skipped. if: github.server_url == 'https://github.com' runs-on: ${{ github.server_url == 'https://github.com' && matrix.os || 'ubuntu-latest' }} strategy: fail-fast: false matrix: os: [ubuntu-latest] node: [22, 24, 26] include: - os: macos-latest node: 24 - os: windows-latest node: 24 env: HUSKY: "0" steps: - uses: actions/checkout@v7 - uses: actions/setup-node@v7 with: node-version: ${{ matrix.node }} cache: npm - run: npm ci - run: npm run typecheck - run: npm test - name: Check package contents run: npm pack --dry-run