Package boundaries
The core package has no internal runtime or peer dependencies. Select additional capabilities by their responsibility, then satisfy the selected packages' peer requirements. “Optional for your application” does not mean a declared peer can be ignored. See packages/fetcher/package.json:31.
Declared internal peers
Every arrow below means the source package declares the target as an internal peer dependency. It is an installation graph, not a request call graph. Names abbreviate @ahoo-wang/fetcher-*; fetcher is @ahoo-wang/fetcher. OpenAPI supplies types only and has no internal peers.
flowchart LR
decorator --> fetcher
eventbus --> fetcher
eventstream --> fetcher
storage --> eventbus
cosec --> fetcher & eventbus & storage
openai --> fetcher & eventstream & decorator
react --> fetcher & eventbus & storage & cosec
openapi
classDef default fill:#2d333b,stroke:#6d5dfc,color:#e6edf3| Layer | Responsibility and cost | Manifest evidence |
|---|---|---|
| fetcher | HTTP defaults, interception, extraction; no internal dependency | packages/fetcher/package.json:31 |
| decorator | Declarative services; metadata setup and runtime reflect-metadata dependency | packages/decorator/package.json:54 |
| eventbus / eventstream | Event delivery / SSE processing; each peers with core | packages/eventbus/package.json:52, packages/eventstream/package.json:53 |
| storage / cosec | Storage events / authentication protocol; additional state lifetime to own | packages/storage/package.json:56, packages/cosec/package.json:54 |
| openai | Service-specific runtime client using core, decorators, and streams | packages/openai/package.json:59 |
| react | Request and integration Hooks; React/ReactDOM peers, direct dequal and immer dependencies; /core and /fetcher subpaths | packages/react/package.json:74 |
| openapi | OpenAPI 3 type vocabulary; neither sends requests nor validates input | packages/openapi/src/index.ts:19 |
Installation is not execution
A React peer edge to CoSec does not mean every Hook authenticates through CoSec. Importing @ahoo-wang/fetcher-react/core loads only React, and @ahoo-wang/fetcher-react/fetcher loads only @ahoo-wang/fetcher, but the declared peers remain installation requirements; see React subpath entries. The request lifecycle shows execution instead.
OpenAPI types themselves neither send requests nor validate input. React Compiler tooling listed as development dependencies does not by itself impose the repository's compiler pipeline on every consumer. Follow declarative services for service declarations, and see runtime support before choosing consumer versions.
Packages that moved to the Wow repository
The Wow-coupled packages left this repository before 6.0. Their last releases from here are the 5.x line (npm 5.1.x, branch 5.x); the pages that document them apply to 5.x only.
| 5.x package | From 6.0 | Where to read |
|---|---|---|
@ahoo-wang/fetcher-wow | @ahoo-wang/wow-client in the Wow repository, typescript/ | 5.x: Wow guide, Wow reference; from 6.0: wow.ahoo.me |
Wow query hooks in @ahoo-wang/fetcher-react | @ahoo-wang/wow-react in the Wow repository | wow.ahoo.me |
@ahoo-wang/fetcher-generator | @ahoo-wang/wow-generator in the Wow repository (CLI wow-generator; alias fetcher-generator until Wow v10) | 5.x: generated client, generator reference; from 6.0: wow.ahoo.me |
@ahoo-wang/fetcher-viewer, data-monitor hooks | Deprecated on npm, frozen in 5.x; replaced by @ahoo-wang/wow-view-engine (Wow 9.2+) | 5.x: Viewer guides, Viewer reference |
The Wow packages are on npm from Wow 9.2.0, their first stable release, and accept fetcher 6 from Wow 9.2.1 (peer range ^5.1.5 || ^6.0.0). To move a 5.x application to 6.0, switch to the Wow packages (9.2.1 or later) first, then upgrade fetcher; @ahoo-wang/fetcher-viewer consumers stay on the 5.1.x releases above until they migrate to @ahoo-wang/wow-view-engine.
