name: Build

on:
  push:
    branches:
      - master
    # tags:
    #   - 'v*'

jobs:
  build-wasm:
    name: Build the source code and publish to NPM
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Use Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '22.x'

      - name: Install JS dependencies
        run: npm ci

      - name: Build sources
        run: npm run build-rollup

      - name: Run linter
        run: npx @biomejs/biome ci

      - name: Run tests and upload test coverage
        run: npm test && bash <(curl -s https://codecov.io/bash) -t ${{ secrets.CODECOV_TOKEN }}

      - name: Build docs
        run: npm run typedoc

      - name: Deploy docs to 'gh-pages' branch
        if: success()
        uses: crazy-max/ghaction-github-pages@v2.1.3
        with:
          target_branch: gh-pages
          build_dir: docs
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc

      - run: npm publish
        env:
          CI: true
