# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: CI

on:
    push:
        branches: [master, develop, next, beta, alpha]
    pull_request:

permissions:
    packages: write
    contents: write
    issues: write
    pull-requests: write

env:
    PRIMARY_NODE_VERSION: 22

jobs:
    install:
        name: Checkout and Install
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Install
              uses: ./.github/actions/install
              with:
                  node-version: ${{ env.PRIMARY_NODE_VERSION }}

    lint:
        name: lint Package
        needs: [build]
        runs-on: ubuntu-latest
        steps:
            -   name: Checkout
                uses: actions/checkout@v4

            -   name: Install
                uses: ./.github/actions/install
                with:
                    node-version: ${{ env.PRIMARY_NODE_VERSION }}

            -   name: Build
                uses: ./.github/actions/build

            -   name: Lint
                run: |
                    npm run lint

    build:
        name: Build Package
        needs: [install]
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Install
              uses: ./.github/actions/install
              with:
                  node-version: ${{ env.PRIMARY_NODE_VERSION }}
            - name: Build
              uses: ./.github/actions/build

    tests:
        name: Test Package
        needs: [build]
        runs-on: ubuntu-latest
        steps:
            -   name: Checkout
                uses: actions/checkout@v4

            -   name: Install
                uses: ./.github/actions/install
                with:
                    node-version: ${{ env.PRIMARY_NODE_VERSION }}

            -   name: Build
                uses: ./.github/actions/build

            -   name: Run tests
                run: |
                    npm run test
