Skip to content

Phase 2 #29

Description

@Wahbeh-Mohammad

Build seam contracts in @dexpace/core: Transport, Serde, OperationDescriptor/buildRequest(). Builds on Phase 1 domain model, feeds Phase 4+ pipelines/resilience/adapters.

Scope

  • Transport interface (send(), close()) — collapses SEAM-11/16 sync+async into one Promise contract. close() signature locked now (breaking-change avoidance), behavior deferred to Phase 8.
  • composeSignal() / isTimeoutSignal() — cancellation/timeout helpers, reused by Phase 5 retry logic.
  • CancellationError, OperationAssemblyError — new error classes under new DexpaceError taxonomy root (replaces DomainModelError as root).
  • Serde — internal-only, provisional (SEAM-21 reshapes it Phase 6), kept out of public barrel/api-extractor surface.
  • OperationDescriptor + buildRequest() — SEAM-26/27 encoding and base-URL composition rules.
  • Retrofit: extract shared encodeRfc3986Component() (HTTP-29) into http/rfc3986.ts.

Toolchain

  • tsconfig.base.json lib: add DOM (for AbortSignal/AbortController/DOMException)
  • add expect-type devDependency
  • ESLint guard against lib.dom global name collisions (Request/Response/Headers/window/document)
  • CI: pin Node 18.17.0 job to conformance-check AbortSignal.any() against declared floor (NFR-10/NFR-17)

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions