name: publish

on:
  push:
    tags: ['v*']
  workflow_dispatch:

permissions:
  contents: read

jobs:
  test:
    uses: ./.github/workflows/test.yml

  publish:
    needs: test
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
      - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
        with:
          node-version: '22'
      # Trusted publishing (OIDC) needs npm >= 11.5.1; Node 22 ships npm 10.
      - run: npm install -g npm@11.5.1
      # No token: id-token: write above lets npm authenticate via OIDC, and
      # provenance is attached automatically. access set in publishConfig.
      - run: npm publish
