name: CI on: push: branches: [master, dev] pull_request: branches: [master] permissions: contents: read jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'yarn' - name: Install dependencies run: yarn install --immutable - name: Build JavaScript run: yarn build:js # The package.json each build/ directory holds is what npm receives: # every entry point must name a file that is there, with no ./build/ or # ./cjs/cjs/ paths and no string spread into exports (what broke the # January 2026 releases and 7.5.19). - name: Check built manifests run: python3 scripts/check-built-manifests.py . wasm-util wasm-bridge wasm-crypto-asmjs wasm-crypto-wasm wasm-crypto-init wasm-crypto - name: Lint run: yarn lint # scure-sr25519 ships committed compiled output; it must be a build of # the index.ts beside it, not hand-edited JavaScript. - name: Check scure-sr25519 is built from its source run: ./scripts/check-scure-sr25519.sh test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'yarn' - name: Setup Rust uses: dtolnay/rust-toolchain@stable - name: Install dependencies run: yarn install --immutable - name: Run Rust tests run: yarn test:wasm-crypto:rust