Phase 8a — the fetch and undici transport adapters, and the file-backed body #44
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # .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 |