@crvouga/mockingbird-service-rxvortex

中文文档
3.11.0发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 1.6万

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

中文使用文档
文档目录8 节
  1. 安装
  2. 使用量
  3. 路线
  4. 网络呼号
  5. 管理员(超过标准合同)
  6. 命名空间
  7. 故意不模拟
  8. API 密码

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

本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .

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

  • 行动范围: 支助
  • 供应商不公布具体内容:合同openapi.yaml)是从线上手写的 造就我们的消费者阅读和写作, 并且它依赖的每一个领域都得到服务.

安装

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。 。 。 .

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 以任何好的预设身份代之.

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 文档.

部分 嘲笑鸟。 。 。 .

版本与发布记录

@crvouga/mockingbird-service-rxvortex 共发布 41 个版本,首次发布于 2026/09/23;过去 12 个月发布了 41 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.11.0latest2026/11/11今天
3.10.72026/11/038 天前
3.10.62026/11/038 天前
3.10.52026/11/038 天前
3.10.42026/11/038 天前
3.10.32026/11/038 天前

关于 @crvouga/mockingbird-service-rxvortex 的常见问题

@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 和提交记录判断。