Skip to content

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. Generator is shown for installation completeness, although it runs during development. OpenAPI supplies types.

mermaid
flowchart LR
  decorator --> fetcher
  eventbus --> fetcher
  eventstream --> fetcher
  storage --> eventbus
  cosec --> fetcher & eventbus & storage
  wow --> fetcher & eventstream & decorator
  openai --> fetcher & eventstream & decorator
  react --> fetcher & eventstream & eventbus & storage & wow & cosec
  viewer --> fetcher & decorator & eventbus & eventstream & openapi & react & storage & wow
  generator --> fetcher & eventstream & decorator & openapi & wow
  classDef default fill:#2d333b,stroke:#6d5dfc,color:#e6edf3
LayerResponsibility and costManifest evidence
fetcherHTTP defaults, interception, extraction; no internal dependencypackages/fetcher/package.json:31
decoratorDeclarative services; metadata setup and runtime reflect-metadata dependencypackages/decorator/package.json:53
eventbus / eventstreamEvent delivery / SSE processing; each peers with corepackages/eventbus/package.json:51, packages/eventstream/package.json:52
storage / cosecStorage events / authentication protocol; additional state lifetime to ownpackages/storage/package.json:55, packages/cosec/package.json:53
wow / openaiService-specific runtime clients using core, decorators, and streamspackages/wow/package.json:63, packages/openai/package.json:58
reactRequest and integration Hooks; React/ReactDOM peers, direct dequal and immer dependenciespackages/react/package.json:54
viewer (maintenance mode, deprecated)Table and saved-view UI; React, Ant Design, icons, and dayjs peers alongside internal peerspackages/viewer/package.json:54
openapi / generatorOpenAPI type vocabulary / development CLI generating source; generator uses ts-morph, commander, and yamlpackages/openapi/src/index.ts:21, packages/generator/package.json:61

Installation is not execution

A React peer edge to CoSec does not mean every Hook authenticates through CoSec. A Viewer peer edge to OpenAPI does not mean a table validates a specification before loading data. The request lifecycle shows execution instead.

Keep the generator in the code-generation workflow: run it against the service specification and compile/review its output. OpenAPI types themselves neither send requests nor validate input. Generated code still needs the runtime packages it imports. React Compiler tooling listed as development dependencies does not by itself impose the repository's compiler pipeline on every consumer.

Follow declarative services, generated services, and the generator output reference for implementation. See runtime support before choosing consumer versions.

View Engine entries

@ahoo-wang/fetcher-view-engine declares direct dependencies on Wow/React and its UI implementation packages; these are separate from the peer-only arrows above. Its public core entry imports no React/DOM/CSS. The /react entry provides shadcn/Base UI components and owns browser UI integration. ViewHost composes definition, instance, preference and permission services; the record query source and option sources remain application runtime adapters. See View Engine contracts and its package manifest.

Released under the Apache License 2.0.