# @crvouga/mockingbird-service-rxvortex 中文文档

规范地址：https://npmcn.com/package/%40crvouga/mockingbird-service-rxvortex/

版本：3\.11\.0
npm 元数据更新时间：2026-11-11T02:34:54.913Z
中文译文更新时间：2026-11-11T02:35:53.142Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40crvouga/mockingbird-service-rxvortex
原文对照：https://npmcn.com/package/%40crvouga/mockingbird-service-rxvortex/?lang=original
项目主页：https://github.com/crvouga/mockingbird/tree/main/packages/service/rxvortex#readme
源码仓库：https://github.com/crvouga/mockingbird

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4.4 MB，18 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-09-22T23:57:16.961Z
- 最新版本发布：2026-11-11T02:34:54.596Z
- 近 30 天下载量：15885（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：41（近 12 个月 41 个）

## 中文简介

RxVortex (Strive) 药店 API 的状态仿真器: OAuth 令牌, 命令提交, 状态, 取消, 由发件人命令 id 恢复, 预设目录, 并签名状态 webhooks.

## 安装

```sh
npm install @crvouga/mockingbird-service-rxvortex
```

也可以使用：`pnpm add @crvouga/mockingbird-service-rxvortex`、`yarn add @crvouga/mockingbird-service-rxvortex`、`bun add @crvouga/mockingbird-service-rxvortex`

## README

# @crvouga/ mockingbird-service-rxvortex (英语)

> 本地模拟器。 真正的API合同. 部分 [嘲笑鸟](https://github.com/crvouga/mockingbird)。 。 。 .

国家模拟器 **RxVortex( 任务)** 测试套房的复合药用API: 客户端 - 证书符号、 命令提交、 状态、 取消、 发送者命令 id 的恢复查询, 预设目录 和签名状态 网络选择药店的帖子。 只移动命令 当测试这样说时(模拟器时钟上的管理过渡或自动推进路径),所以eRx 在真正的沙盒上等待60秒的套房 以毫秒的速度解决.

-   行动范围: [支助](https://github.com/crvouga/mockingbird/blob/main/packages/service/rxvortex/SUPPORT.md)
-   供应商不公布具体内容:合同`openapi.yaml`)是从线上手写的 造就我们的消费者阅读和写作, 并且它依赖的每一个领域都得到服务.

## 安装

```bash
npm install -D @crvouga/mockingbird-service-rxvortex
```

仅限无害环境管理。 节点 22或 Bun 1.2. 无土生属地. 给它服务 `npx mockingbird-rxvortex serve`, (中文(简体) ), `createServer` 从 `./server` (节点),或 `createRuntime` 与 任何获取服务器.

## 使用量

点 `RXVORTEX_API_URL` 在模拟者那里。 设定 `RXVORTEX_WEBHOOK_SECRET` 在应用程序中,通过同样的 值为 `--webhook-secret`。 。 。 .

```bash
npx mockingbird-rxvortex serve --port 8791 \
  --webhook-url http://127.0.0.1:3000/prescriptions/webhooks/rxvortex \
  --webhook-secret "$RXVORTEX_WEBHOOK_SECRET" \
  --auto-advance "2000:Fill,Shipping,Delivered" \
  --catalog ./preset-catalog.json
```

`--catalog` 将自己的预设目录加载到每个命名空间: JSON 数组行,或 `{data: [...]}` 机构 `GET /api/v1/preset-catalog-items` 答案,所以一个记录的沙盒 响应负载 。 仅 `catalog_id` 财务报告和审定财务报表 `medication_name` 需要这样做. `POST /__admin/reset` 返回这些行。 过 `--unknown-presets accept` 以任何好的预设身份代之.

```ts
import { createServer } from "@crvouga/mockingbird-service-rxvortex/server"

// Test setup: a local RxVortex that posts its status webhooks to the app.
const server = await createServer({
  webhooks: { url: "http://127.0.0.1:3000/prescriptions/webhooks/rxvortex", secret: "whsec-test" },
})
const baseUrl = server.url // the app's RXVORTEX_API_URL
const post = (path: string, body: unknown, headers: Record<string, string> = {}) =>
  fetch(`${baseUrl}${path}`, {
    method: "POST",
    headers: { "content-type": "application/json", ...headers },
    body: JSON.stringify(body),
  })

// Application code: the requests it sends to RxVortex.
const { access_token } = (await (
  await post("/api/v1/generate-access-token", { client_id: "acme", client_secret: "s" })
).json()) as { access_token: string }
// …then POST /api/v1/orders with Authorization: Bearer <access_token> and sender_order_id "pay_123"…

// Test control: move that order the way the pharmacy would; each step emits the signed status webhook.
await post("/__admin/orders/pay_123/transition", { to: "Shipping", trackingnumber: "1Z999" })
await post("/__admin/orders/pay_123/transition", { to: "Delivered" })

await server.close()
```

### 路线

| 路线 | 行为 |
| --- | --- |
| `POST /api/v1/generate-access-token` | 贾森 `{client_id, client_secret}` → `{access_token, token_type: "Bearer", expires_in: 86400}`。任何一对有效,除非 `clients` 设定( e)`PUT /__admin/settings`) (中文(简体) ). Tokens在模拟时钟上保持有效为24 h;我们的客户端缓存为24 h,在401上从不刷新. |
| `POST /api/v1/orders` | 对照合同验证提交有效载荷;违反情况为422起 `{message, errors: {"patient.phone": ["…"]}}`不活动或未知 `preset_catalog_id` 422(低于 `unknownPresets: "accept"` 一个未知的 UUID 成为以请求命名的活跃目录行 `medication_name`) (中文(简体) ). 重复 `order.sender_order_id` 409个。 成功 : `{success: true, order_tracking_id: "RXV-…", sender_order_id, status: "Created"}` (追踪id总是个字符串). |
| `GET /api/v1/orders/{id}` | `id` 是跟踪 id **或者说** 发送者命令 id (我们的付款 id, 回收查询) 。 回返 `rxstatus`, (中文(简体) ), `orderstatus`, (中文(简体) ), `shipping_status`, (中文(简体) ), `delivered_date`, (中文(简体) ), `trackingnumber`, (中文(简体) ), `shippingservice`, (中文(简体) ), `shippingcarrier`, (中文(简体) ), `shipmenttrackingurl`, (中文(简体) ), `cancellable`,并用 `order_tracking_id`, (中文(简体) ), `tracking_id` 财务报告和审定财务报表 `orderReferenceID`。 。 。 . |
| `DELETE /api/v1/orders/{id}` | 取消时 `cancellable` 出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出. |
| `GET /api/v1/preset-catalog-items` | `{data: [...]}` 行为 `catalog_id`, (中文(简体) ), `medication_name`, (中文(简体) ), `medication_strength`, (中文(简体) ), `package_size`, (中文(简体) ), `quantity`, (中文(简体) ), `quantity_units`, (中文(简体) ), `medication_form`, (中文(简体) ), `route`, (中文(简体) ), `states`, (中文(简体) ), `status`。包括定制亮点主播预设 `e404ad76-0f82-4b04-8f25-841650e2e819` 和一个不活动行. |

### 网络呼号

每个地位变动员额 `{event: "order.status_updated", orderReferenceID, order_tracking_id, tracking_id, sender_order_id, rxstatus, orderstatus, shipping_status, delivered_date, trackingnumber, shippingcarrier, shippingservice, shipmenttrackingurl, updated_at}` 有页眉 `x-rxvortex-webhook-secret: <secret>` (方言平等,作为我们的接受者检查). 非-2xx 答案 重新试验(即立即5分、5分、30分、2分). `GET /__admin/webhooks` 清单, `GET /__admin/webhooks/events` 载荷, `POST /__admin/webhooks/flush` 运行等待重试 现在,和 `PUT /__admin/webhook-endpoints` 每个名称空间接收器.

### 管理员(超过标准合同)

| 路线 | 效果 |
| --- | --- |
| `POST /__admin/orders/:id/transition` | `{to, trackingnumber?, shippingcarrier?, shippingservice?, delivered_date?}`。 。 。 . `to` 是一个供应商身份: `Fill`, (中文(简体) ), `PV1 Complete`, (中文(简体) ), `Compound`, (中文(简体) ), `Out of Stock`, (中文(简体) ), `On Hold`, (中文(简体) ), `Shipping`, (中文(简体) ), `Delivered`, (中文(简体) ), `Cancelled`, (中文(简体) ), `Rejected`, (中文(简体) ), `Error`,或任意字符串(已使用逐字记录)。 三个状态字段一起移动;在不给出时,航运生成跟踪. |
| `PUT /__admin/catalog` | `{items: [{catalog_id, medication_name, medication_strength?, package_size?, quantity?, quantity_units?, medication_form?, route?, states?, status?}], mode?: "replace" | "merge"}` 用于调用命名空间( n)`replace` 默认; `merge` 调高由 `catalog_id`) (中文(简体) ). 答复 `{count}`,命名空间的行数. `items` 也可作为 `data`。 。 。 . |
| `GET /__admin/catalog` | 命名空间的行, 如 `{data: [...]}`。 。 。 . |
| `PUT /__admin/settings` | `{tokenTtlSeconds?, staticTokens?, clients?, autoAdvance?: {afterMs, path} | null, unknownPresets?: "reject" | "accept"}` 呼叫的命名空间. `unknownPresets` 默认为 `reject`就像沙盒一样. `staticTokens` 承认 `RXVORTEX_API_TOKEN` (目录客户端的静态持有者). |
| `POST /__admin/tick` | 应用模拟器时钟上到期的每个自动推进步骤(服务模拟器也每100毫秒计分). |
| `GET /__admin/orders` | 名字空间的命令. |

错误预设( E)`POST /__admin/faults {"preset": "<name>", "count"?: n}`· ; `GET /__admin/faults/presets`: `duplicate_sender_order_id`, (中文(简体) ), `created_but_500` (创造,然后500;恢复成功), `numeric_tracking_id`, (中文(简体) ), `token_expired`, (中文(简体) ), `stale_error_with_delivered_date`, (中文(简体) ), `validation_errors_array`, (中文(简体) ), `validation_errors_object`, (中文(简体) ), `validation_errors_empty`, (中文(简体) ), `server_error`, (中文(简体) ), `webhook_duplicate`, (中文(简体) ), `webhook_reorder`, (中文(简体) ), `webhook_drop`。 。 。 .

### 命名空间

我们的后端 `fetch` 无法添加信头,所以可以选择三个方式: `x-mockingbird-namespace`页:1 `/__admin/ns/<name>` 前缀在 `RXVORTEX_API_URL`,或客户端代码: `PUT /__admin/credentials {"credentials": {"<RXVORTEX_CLIENT_ID>": "<namespace>"}}` (手提箱携带) 他们的客户身份被签发.

### 故意不模拟

-   实际完成时间:除非 `autoAdvance` 已经设定.
-   患者和处方细节经过验证,从未存储或回放.
-   活目录:默认行被合成到活客户端的字段名中( 否) 沙盒记录存在). 装入已记录行 `serve --catalog`, (中文(简体) ), `PUT /__admin/catalog`, (中文(简体) ), 或 `catalog` 选项.
-   复置并多令发运.

## API 密码

| 导出 | 仁爱 | 说明 |
| --- | --- | --- |
| `RxVortexAPI` | 类 | 进程模拟器 : `fetch(request)`, (中文(简体) ), `reset()`, (中文(简体) ), `transition(id, {to, …})`, (中文(简体) ), `tick()`, (中文(简体) ), `orders()`选项: `sqlite`, (中文(简体) ), `now`, (中文(简体) ), `namespace`, (中文(简体) ), `catalog`, (中文(简体) ), `settings`, (中文(简体) ), `onWebhook`。 。 。 . |
| `createRuntime` | 函数 | 全面服务合同的仿真器(健康、管理、命名空间、证书、预设、网络呼号)。 选项 : `webhooks: {url, secret, retryDelaysMs?, fetch?}`, (中文(简体) ), `settings`, (中文(简体) ), `catalog`, (中文(简体) ), `tickMs`, (中文(简体) ), `clock`, (中文(简体) ), `seed`, (中文(简体) ), `adminKey`, (中文(简体) ), `onLog`。 。 。 . |
| `RXVORTEX_PRESETS` | 对象 | 每个命名的断层预设. |
| `RXVORTEX_NAMESPACE` | 字符串 | 服务名称, `"rxvortex"`。 。 。 . |
| `tokenCredential` | 函数 | 向客户端代号为无记名代号(如何将证书映射到命名空间). |
| `CUSTOM_CREAM_ANCHOR_PRESET_ID` | 字符串 | 沙盒自定义奶油主播预设ID. |
| `DEFAULT_CATALOG` | 数组 | 默认的预设目录行 . |
| `parseCatalog`, (中文(简体) ), `parseCatalogItem` | 函数 | 从 JSON 阵列或录入的目录行 `{data: [...]}` 机构( 缺少可选字段默认为 `null`, (中文(简体) ), `states` 改为 `[]`, (中文(简体) ), `status` 改为 `"active"`);丢入一行畸形. |
| `document`, (中文(简体) ), `operationIds`, (中文(简体) ), `supportedOperationIds` | 数值 | 销售商为OpenAPI合同及其业务代号. |
| `createServer`, (中文(简体) ), `serveTarget`, (中文(简体) ), `DEFAULT_PORT`, (中文(简体) ), `loadCatalogFile` (单位:千美元)`./server`(中文(简体) ) | 节点 | 服务过来 `node:http` (自动提醒每100米) `serve` CLI 目标; 端口 8791; 读取a `--catalog` 文档. |

部分 [嘲笑鸟](https://github.com/crvouga/mockingbird)。 。 。 .

## 常见问题

### @crvouga/mockingbird-service-rxvortex 是什么？

RxVortex \(Strive\) 药店 API 的状态仿真器: OAuth 令牌, 命令提交, 状态, 取消, 由发件人命令 id 恢复, 预设目录, 并签名状态 webhooks\.

### 如何安装 @crvouga/mockingbird-service-rxvortex？

在项目目录运行 npm install @crvouga/mockingbird-service-rxvortex，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-rxvortex，可以用 npx mockingbird-rxvortex 直接运行。

### @crvouga/mockingbird-service-rxvortex 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @crvouga/mockingbird-service-rxvortex 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @crvouga/mockingbird-service-rxvortex 可以商用吗？

@crvouga/mockingbird-service-rxvortex 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @crvouga/mockingbird-service-rxvortex 的下载量有多少？

根据 npm 官方下载统计，@crvouga/mockingbird-service-rxvortex 在 2026/10/11 – 2026/11/09 这 30 天内被下载 15,885 次，日均约 530 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @crvouga/mockingbird-service-rxvortex 还在维护吗？

最新版本 3\.11\.0 发布于 2026/11/11（今天）；至今共发布 41 个版本，其中过去 12 个月发布了 41 个；首次发布于 2026/09/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

