name: Node

concurrency:
    group: Node-${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true

permissions:
    security-events: write
    contents: write
    pull-requests: write

on:
    workflow_dispatch:
    push:
        branches: [$Branch$]
    pull_request:
        branches: [$Branch$]
    workflow_call:

jobs:
    Pre-Publish:
        runs-on: ubuntu-latest

        env:
            ADBLOCK: true
            ASTRO_TELEMETRY_DISABLED: 1
            AUTOMATEDLAB_TELEMETRY_OPTOUT: 1
            AZURE_CORE_COLLECT_TELEMETRY: 0
            CHOOSENIM_NO_ANALYTICS: 1
            DIEZ_DO_NOT_TRACK: 1
            DO_NOT_TRACK: 1
            DOTNET_CLI_TELEMETRY_OPTOUT: 1
            DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT: 1
            ET_NO_TELEMETRY: 1
            GATSBY_TELEMETRY_DISABLED: 1
            GATSBY_TELEMETRY_OPT_OUT: 1
            GATSBY_TELEMETRY_OPTOUT: 1
            GRIT_TELEMETRY_DISABLED: 1
            HASURA_GRAPHQL_ENABLE_TELEMETRY: false
            HINT_TELEMETRY: off
            HOMEBREW_NO_ANALYTICS: 1
            INFLUXD_REPORTING_DISABLED: true
            ITERATIVE_DO_NOT_TRACK: 1
            NEXT_TELEMETRY_DEBUG: 1
            NEXT_TELEMETRY_DISABLED: 1
            NG_CLI_ANALYTICS: false
            NUXT_TELEMETRY_DISABLED: 1
            PIN_DO_NOT_TRACK: 1
            POWERSHELL_TELEMETRY_OPTOUT: 1
            SAM_CLI_TELEMETRY: 0
            STNOUPGRADE: 1
            STRIPE_CLI_TELEMETRY_OPTOUT: 1
            TELEMETRY_DISABLED: 1
            TERRAFORM_TELEMETRY: 0
            VCPKG_DISABLE_METRICS: 1

        strategy:
            matrix:
                node-version: [18, 19, 20]

        steps:
            - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
              with:
                  version: 9.3.0
                  run_install: |
                      - recursive: true
                        args: [
                          --link-workspace-packages=true,
                          --lockfile-only,
                          --prefer-frozen-lockfile=false,
                          --shamefully-hoist=false,
                          --shared-workspace-lockfile=true,
                          --strict-peer-dependencies=false,
                          --unsafe-perm=true
                        ]
