Skip to content

Integration decisions ​

Use the least elaborate layer that matches the service you actually have. Move up when it removes repeated work you already maintain, and include its configuration and backend contract in the decision.

Direct, declarative, or generated clients ​

ChoiceUse whenWhat you ownPoor fit
Direct FetcherA few calls or endpoint-specific behaviorPaths, request options, result selection, boundary validationMany repeated endpoint declarations that drift independently
Decorator serviceStable methods benefit from a shared service declarationMetadata/compiler setup, parameter annotations, endpoint accuracyYou do not want decorator configuration or the API is mostly ad hoc
Generated serviceAn actual OpenAPI document is the maintained contractGeneration command/configuration, review and compilation of output, regeneration on spec changesMissing or inaccurate specification; server semantics absent from the document

These share the runtime request boundary: core implements request/extraction (packages/fetcher/src/fetcher.ts:242), decorator has a metadata runtime dependency (packages/decorator/package.json:58), and the 5.x generator is a CLI (packages/generator/src/cli.ts:8). OpenAPI exports type definitions (packages/openapi/src/index.ts:21). Neither annotations nor generated types validate response data at runtime or invent missing server semantics.

Start with HTTP requests, then use declarative client or the verified workflow in generated client. Configuration details live in decorator reference and generator reference. The generator is part of the 5.x line; from 6.0 it lives in the Wow repository. Check the peer graph separately from the code you expect to execute.

Data views ​

Fetcher main ships no table or data-view component. @ahoo-wang/fetcher-viewer (View, Viewer, FetcherViewer) is deprecated on npm and frozen in the 5.x line (npm 5.1.x, branch 5.x); its guides and reference remain for existing consumers. It is superseded by @ahoo-wang/wow-view-engine in the Wow repository, on npm from Wow 9.2.0 (9.2.1 or later accepts fetcher 6; see wow.ahoo.me). For a new table today, compose React request state with the table component your application already uses, and keep filtering, sorting and pagination in your data service.

Service-specific integrations ​

IntegrationRequired contractResponsibility retained by the service/application
Wow (5.x client)Command results/stages and supported query DSLAuthorization, tenant isolation, idempotency, projection freshness
CoSecToken storage, attribution headers, refresh endpoints/session rulesIdentity lifetime, replay safety, server authorization, which origins receive credentials (isTrusted)
SSE / OpenAI streamingCompatible event stream and payload formatPartial-result UX, cancellation, reconnect policy if required

Client-side conditions describe the query sent; they are not access control. Command stages describe protocol progress; they are not a universal consistency guarantee. CoSec's guarded refresh implementation is specific to its authentication exchange (packages/cosec/src/authorizationResponseInterceptor.ts:80), while SSE extraction requires a readable body (packages/eventstream/src/eventStreamResultExtractor.ts:41).

Continue with CoSec and streaming. The Wow client belongs to the 5.x line (Wow guide); from 6.0 it is documented at wow.ahoo.me. Before sharing these integrations across identities, read runtime support; before adding retries, read the failure model.

Released under the Apache License 2.0.