name: Code Quality

on:
    push:
        branches:
            - master
    pull_request:

jobs:
    ESLint:
        name: ESLint
        runs-on: ubuntu-latest
        steps:
            - name: Checkout Project
              uses: actions/checkout@v3
            - name: Use Node.js 18.12.0
              uses: actions/setup-node@v3
              with:
                  node-version: 18.12.0
                  cache: yarn
            - name: Restore CI Cache
              uses: actions/cache@v3
              with:
                  path: node_modules
                  key: ${{ runner.os }}-18-${{ hashFiles('**/yarn.lock') }}
            - name: Install Dependencies
              run: yarn --frozen-lockfile
            - name: Run ESLint
              run: yarn test:lint

    Typescript:
        name: Typescript
        runs-on: ubuntu-latest
        steps:
            - name: Checkout Project
              uses: actions/checkout@v3
            - name: Use Node.js 18.12.0
              uses: actions/setup-node@v3
              with:
                  node-version: 18.12.0
                  cache: yarn
            - name: Restore CI Cache
              uses: actions/cache@v3
              with:
                  path: node_modules
                  key: ${{ runner.os }}-18-${{ hashFiles('**/yarn.lock') }}
            - name: Install Dependencies
              run: yarn --frozen-lockfile
            - name: Build code
              run: yarn build
