Skip to content

Phase 8a — the fetch and undici transport adapters, and the file-backed body #44

Phase 8a — the fetch and undici transport adapters, and the file-backed body

Phase 8a — the fetch and undici transport adapters, and the file-backed body #44

Workflow file for this run

# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version-file: .bun-version
- name: Install (frozen lockfile)
run: bun install --frozen-lockfile
- name: Typecheck
run: bun run typecheck
- name: Lint
run: bun run lint
- name: Build
run: bun run build
- name: Test (with coverage)
run: bun test --coverage
- name: API surface check
run: bun run api
# `lint:publish` ignores attw's `cjs-resolves-to-esm` rule. That is not a
# workaround for a fixable defect: @dexpace/core is ESM-only by design (no
# `require` condition in its exports map), so a CJS `require()` of it
# necessarily resolves to ESM and attw always flags it. Every other attw
# rule stays blocking. The `main`/`types` fields on the package exist so
# legacy `node10` resolution still finds the entry point — without them
# attw reports a hard resolution failure.
- name: Package health (publint + attw)
run: bun run lint:publish
- name: Dual JS/TS consumption check
run: bun run verify:dual-consumption
- name: Consumer typecheck against the published .d.ts
run: bun run verify:consumer-types
- name: SEAM-1 zero-dependency check
run: bun run verify:seam-1
- name: Verify SSE-37/SSE-38 (no serde dependency, no reconnect path in core SSE)
run: bun run verify:sse-37
- name: Runtime-floor consistency check
run: bun run verify:runtime-floor
- name: Dependency audit
run: bun run audit
node-conformance:
needs: ci
runs-on: ubuntu-latest
strategy:
# Report both versions rather than stopping at the first failure: "broken on the floor" and
# "broken on LTS" are different diagnoses and the matrix exists to tell them apart.
fail-fast: false
matrix:
# The declared floor AND current LTS, which is the "in addition to current LTS" half of
# sdk-design-nodejs/09:52-54 that a floor-only pin left unexercised (checkpoint 5.9).
# `lts/*` resolves at run time, so this does not go stale as LTS moves.
node: ['20.3.0', 'lts/*']
name: node-conformance (${{ matrix.node }})
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version-file: .bun-version
- name: Install (frozen lockfile)
run: bun install --frozen-lockfile
- name: Build
run: bun run build
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Node-runtime conformance against the built artifact (NFR-10/NFR-17)
run: bun run test:node