name: Publish Package

on:
  push:
    branches:
      - main
  workflow_dispatch:
    inputs:
      release:
        description: 'Release version'
        required: true
        default: 'prerelease'
        type: choice
        options:
        - prerelease
        - latest

jobs:
  prerelease:
    name: Publish prerelease to npm
    runs-on: ubuntu-latest
    if: ${{ github.event.inputs.release != 'latest' }}

    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
            registry-url: 'https://registry.npmjs.org'
      - run: npm ci
      - run: ./scripts/update-package-json.js ${{ github.sha }}
      - run: npm publish --tag prerelease
        env:
            NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

  release:
    name: Publish latest to npm
    runs-on: ubuntu-latest
    if: ${{ github.event.inputs.release == 'latest' }}

    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
            registry-url: 'https://registry.npmjs.org'
      - run: npm ci
      - run: ./scripts/update-package-json.js 
      # Canary wait for 1 minute before publishing
      - run: sleep 60
      - run: npm publish --tag latest
        env:
            NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}