name: WebAssembly Build

on:
  push:
    branches: [master]
  pull_request:

defaults:
  run:
    working-directory: src/api/js

env:
  EM_VERSION: 3.1.15

permissions:
  contents: read # to fetch code (actions/checkout)

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup node
        uses: actions/setup-node@v4
        with:
          node-version: "lts/*"

      - name: Setup emscripten
        uses: mymindstorm/setup-emsdk@v14
        with:
          no-install: true
          version: ${{env.EM_VERSION}}
          actions-cache-folder: "emsdk-cache"

      - name: Install dependencies
        run: npm ci

      - name: Build TypeScript
        run: npm run build:ts

      - name: Build wasm
        run: |
          emsdk install ${EM_VERSION}
          emsdk activate ${EM_VERSION}
          source $(dirname $(which emsdk))/emsdk_env.sh
          which node
          which clang++
          npm run build:wasm

      - name: Test
        run: npm test
