name: CI

on: [push, pull_request]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        include:
          - node: '18'
            platform: ubuntu-latest
          - node: '20'
            platform: ubuntu-latest
          - node: '21'
            platform: ubuntu-latest
          - node: '20'
            platform: windows-latest
          - node: '20'
            platform: macos-latest

    name: '${{matrix.platform}} / Node.js ${{ matrix.node }}'
    runs-on: ${{matrix.platform}}

    steps:
    - name: Checkout Commit
      uses: actions/checkout@v1
    - name: Setup Node
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node }}
    - name: install pnpm
      run: |
        npm install pnpm -g
        pnpm --version
    - name: pnpm install
      run: pnpm install
    - name: run tests
      run: pnpm test

  typecheck:
    name: Type Check
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Commit
      uses: actions/checkout@v1
    - name: Setup Node
      uses: actions/setup-node@v1
      with:
        node-version: '20'
    - name: install pnpm
      run: |
        npm install pnpm -g
        pnpm --version
    - name: pnpm install
      run: pnpm install
    - name: type check
      run: pnpm run typecheck
