Skip to content

Wow

Wow 客户端适用于实现 Wow 命令与查询协议的服务。构建器在本地创建可序列化数据,构造查询或客户端不会发送 HTTP。泛型描述预期响应,不保证服务端授权、结构校验或投影新鲜度。

选择入口

需求入口先检查
写入并检查执行阶段CommandClientURL 身份、命令体与等待策略;HTTP 成功不等于业务成功。
读取当前状态或快照QueryClientFactory区分纯状态与完整快照结果并选择路径。
构造查询而不执行 I/Ofilter + pagedQuery新 filter/旧 condition 形式不同;list 默认 limit 分别为 0/10。
遍历变化中的结果集游标查询服务端支持的稳定排序与游标规则。
计算分组结果聚合指标/分组表达式与服务端能力;构建器不计算结果。
读取事件流或历史状态事件与历史事件信封与状态载荷的区别及流清理。

完整安装前提

sh
pnpm add @ahoo-wang/fetcher @ahoo-wang/fetcher-decorator @ahoo-wang/fetcher-eventstream @ahoo-wang/fetcher-wow

本参考针对 5.0.0。库包声明 Node >=18.20.8;仓库开发要求 Node >=20.20.2、pnpm 10.34.5。命令包含递归内部 peer,包括经 Wow/React/CoSec 引入的包;直接运行依赖自动安装。

核心调用

传入已配置 baseURL/认证的 Fetcher。调用 loadUsers 才发送请求,并返回 {list,total};服务须实现 accounts/user 的 Wow 快照状态分页端点。本例不联系公共服务。

ts
import type { Fetcher } from '@ahoo-wang/fetcher';
import { QueryClientFactory, filter, pagedQuery } from '@ahoo-wang/fetcher-wow';

interface User {
  id: string;
  name: string;
}

export async function loadUsers(fetcher: Fetcher) {
  const client = new QueryClientFactory<User>({
    fetcher,
    contextAlias: 'accounts',
    aggregateName: 'user',
  }).createSnapshotQueryClient();
  return client.pagedState(
    pagedQuery({
      filter: filter.matchAll(),
      pagination: { index: 1, size: 20 },
    }),
  );
}

专题

状态与资源所有权 · 失败与取消边界

基于 Apache License 2.0 发布。