name: Lint, build, test
on:
    push:
        branches-ignore:
            - master
jobs:
    lint:
        runs-on: ubuntu-latest
        timeout-minutes: 5
        steps:
            - uses: actions/checkout@v3
            - uses: actions/setup-node@v3
              with:
                  node-version: 18
            - name: Cache node modules
              uses: actions/cache@v3
              env:
                  cache-name: cache-node-modules
              with:
                  path: ~/.npm
                  key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
                  restore-keys: |
                      ${{ runner.os }}-${{ env.cache-name }}-
                      ${{ runner.os }}-
            - run: npm ci
            - run: npm run lint

    build:
        runs-on: ubuntu-latest
        timeout-minutes: 5
        steps:
            - uses: actions/checkout@v3
            - uses: actions/setup-node@v3
              with:
                  node-version: 18
            - name: Cache node modules
              uses: actions/cache@v3
              env:
                  cache-name: cache-node-modules
              with:
                  path: ~/.npm
                  key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
                  restore-keys: |
                      ${{ runner.os }}-${{ env.cache-name }}-
                      ${{ runner.os }}-
            - run: npm ci
            - run: npm run build
            - uses: actions/upload-artifact@v3
              with:
                  name: lib
                  path: lib/

    test:
        runs-on: ubuntu-latest
        timeout-minutes: 5
        steps:
            - uses: actions/checkout@v3
            - uses: actions/setup-node@v3
              with:
                  node-version: 18
            - name: Cache node modules
              uses: actions/cache@v3
              env:
                  cache-name: cache-node-modules
              with:
                  path: ~/.npm
                  key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
                  restore-keys: |
                      ${{ runner.os }}-${{ env.cache-name }}-
                      ${{ runner.os }}-
            - run: npm ci
            - run: npm run test
