name: PR

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  formatting:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Read .nvmrc
        run: echo "##[set-output name=nvmrc;]$(cat .nvmrc)"
        id: nvm
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: ${{ steps.nvm.outputs.nvmrc }}
          cache: "npm"
      - run: npm i -g npm@8
      - run: npm ci
      - run: npm run typecheck
      - run: npm run format -- --check
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: ["16", "18", "19"]
    name: Test on Node ${{ matrix.node }}
    steps:
      - uses: actions/checkout@v3
      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}
          cache: "npm"
      - run: npm i -g npm@8
      - run: npm ci
      - run: npm run test -- --coverage
