name: Automates the Verification, Testing, and Building Process

env:
  NPM_CONFIG_LOGLEVEL: "warn"
  NPM_CONFIG_PREFER_OFFLINE: "true"

jobs:
  verification:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22.x
      - name: Install dependencies
        run: npm clean-install
      - name: Lint code
        run: npm run lint

  testing:
    needs: verification
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22.x
      - name: Install dependencies
        run: npm clean-install
      - name: Run test suite
        run: npm run test

  assembly:
    needs: testing
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22.x
      - name: Install dependencies
        run: npm clean-install
      - name: Build artifact(s)
        run: npm run build

on:
  pull_request:
    branches:
      - master
  push:
    branches:
      - master

permissions:
  contents: read
