name: NPM Publish

on:
  push:
    tags:
      - '*'

permissions:
  id-token: write  # Required for OIDC
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6

    - uses: actions/setup-node@v6.1.0
      with:
        node-version: '24'
        registry-url: 'https://registry.npmjs.org'
    
    - name: Update NPM to latest version
      run: npm install npm@latest

    - name: Get tag name
      id: tag_name
      run: |
        echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/}

    - name: Install dependencies
      run: npm ci

    - name: Build the project
      run: npm run build

    - name: Run NodeJS Tests
      run: npm run test

    - name: NPM publish beta package
      if: ${{ contains(steps.tag_name.outputs.SOURCE_TAG, 'beta') }}
      run: npm publish --tag beta

    - name: NPM publish package
      if: ${{ !contains(steps.tag_name.outputs.SOURCE_TAG, 'beta') }}
      run: npm publish