image: node:20

stages:
  - publish

publish_npm:
  stage: publish
  script:
    - echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc
    - npm install
    - |
      CURRENT=$(node -p "require('./package.json').version")
      PUBLISHED=$(npm view $(node -p "require('./package.json').name") version || echo "0")

      if [ "$CURRENT" = "$PUBLISHED" ]; then
        echo "Version unchanged. Skipping publish."
      else
        echo "Publishing version $CURRENT..."
        npm publish --access public
      fi
  only:
    - main
