name: release-actions
on:
  push:
    branches:
      - main
  release:
    types:
      - created
jobs:
  publish:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
      id-token: write
    env:
      NO_COVERAGE_BADGE_UPDATE: 1
      FLAGS: FETCH_SERVICE_DISABLE,POST_CONFIGURE_TEST
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v5
        with:
          node-version: '24.x'
          registry-url: 'https://registry.npmjs.org'
          cache: "yarn"
      - uses: denoland/setup-deno@v2
        with:
          deno-version: 'v2.x'
      - uses: antongolub/action-setup-bun@v1
      - run: |
          yarn install
          npx playwright install-deps
      - run: yarn build
      # yarn coverage === c8 + yarn test
      - run: yarn coverage
      - run: yarn test:deno
      - run: yarn test:bun
      # rollup is for tests only
      - run: rm -rf ./esnext/tests/rollup.js
      - name: Package Registry Publish - npm
        run: |
          git config user.name "${{ github.actor }}"
          git config user.email "${{ github.actor}}@users.noreply.github.com"
          npm set "registry=https://registry.npmjs.org/"
          npm set "@virtualstate:registry=https://registry.npmjs.org/"
          npm set "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}"
          npm publish --access=public
        continue-on-error: true
        env:
          YARN_TOKEN: ${{ secrets.YARN_TOKEN }}
          NPM_TOKEN: ${{ secrets.YARN_TOKEN }}
          NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }}
      - uses: actions/setup-node@v2
        with:
          node-version: '21.x'
          registry-url: 'https://npm.pkg.github.com'
      - name: Package Registry Publish - GitHub
        run: |
          git config user.name "${{ github.actor }}"
          git config user.email "${{ github.actor}}@users.noreply.github.com"
          npm set "registry=https://npm.pkg.github.com/"
          npm set "@virtualstate:registry=https://npm.pkg.github.com/virtualstate"
          npm set "//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}"
          npm publish --access=public
        env:
          YARN_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        continue-on-error: true
      - uses: actions/setup-node@v2
        with:
          node-version: '21.x'
          registry-url: 'https://registry.npmjs.org'
      - name: Package Registry Test - npm
        run: |
          yarn add --dev @virtualstate/navigation@$(node scripts/log-version.js)
          yarn add --dev @virtualstate/navigation-local-build@./node_modules/@virtualstate/navigation
          export TEST_CONFIG='{"@virtualstate/navigation/test/imported/path": "@virtualstate/navigation-local-build"}'
          yarn test
        continue-on-error: true
      - uses: actions/setup-node@v2
        with:
          node-version: '21.x'
          registry-url: 'https://npm.pkg.github.com'
      - name: Package Registry Test - GitHub
        run: |
          yarn add --dev @virtualstate/navigation@$(node scripts/log-version.js)
          yarn add --dev @virtualstate/navigation-local-build@./node_modules/@virtualstate/navigation
          export TEST_CONFIG='{"@virtualstate/navigation/test/imported/path": "@virtualstate/navigation-local-build"}'
          yarn test
        continue-on-error: true