@crvouga/mockingbird-service-sentry

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

状态哨兵模拟器:SDK信封/存储/最小吞入、事件、问题、附件和确定性运输控制.

中文使用文档
文档目录8 节
  1. 安装
  2. 使用量
  3. 路线和行为
  4. 测试控制
  5. 原始抓取和编辑
  6. 甲骨文证据
  7. 故意不模拟
  8. API 密码

@crvouga/嘲笑鸟-服务-哨兵

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

一个状态良好的哨兵SDK运输和事件/问题断言模拟器。 此初始软件包是 阴道数字 : 其受限表面遵循官方信封协议和中继响应,而不是整个 哨兵产品. 测试不需要供应商账户、集装箱、秘密或外出电话.

安装

bun add -d @crvouga/mockingbird-service-sentry

使用量

import * as Sentry from "@sentry/node"
import { DEFAULT_PROJECT } from "@crvouga/mockingbird-service-sentry"
import { createServer } from "@crvouga/mockingbird-service-sentry/server"

// Test setup: the emulator, and a DSN that points the Sentry SDK at it.
const server = await createServer()
const dsn = `${server.url.replace("://", `://${DEFAULT_PROJECT.publicKey}@`)}/1`

// The app's own Sentry calls.
Sentry.init({ dsn })
Sentry.captureMessage("Fixture failure", { fingerprint: ["fixture-group"] })
await Sentry.flush(2000)

// The test asserts on what the emulator captured.
const captured = await (await fetch(`${server.url}/__admin/events?project=1`)).json()
console.log(captured.events.length) // 1
await Sentry.close()
await server.close()

官员 @sentry/nextjs 财务报告和审定财务报表 @sentry/node SDKs都采用 DSN: 开始 createServer() 从 页:1 /server 条目和设置 SENTRY_DSN 改为 http://<DEFAULT_PROJECT.publicKey>@127.0.0.1:<port>/1,或 给它 init编号 :NodeClient。两个SDK在 11.4.0 (中文(简体) ) (报告未提供标注版). 使用 SDK flush() 完成提交,然后 POST /__admin/flush {"eventIds": […], "count": n} 即时声明: flushed: false 意味着条件没有得到满足;它永远不会入睡.

REST请求的使用 Authorization: Bearer fixture-rest-token。 。 。 . projects 财务报告和审定财务报表 restTokens 选项 替换这些构造器固定装置。 每个项目包括组织、数字字符串、, 子弹,名字和32赫克的公用钥匙。 默认显然是合成的. 每个名称空间都收到 它自己的构造器固定装置,在重置时返回它们.

mockingbird-sentry serve --port 8810

路线和行为

  • POST /api/{project}/envelope/:字节精确的信封解析,隐含或明确长度, UTF-8 JSON 标题, 二进制附件, 未知项保留, 事件/ 交易/会话/ 届会/客户-报告项目。 Gzip/deflate请求压缩支持. 答复是: 200 {"id": "<event ID>"} 当ID适用时,或 200 {} 用于会话/只报告信封.
  • POST /api/{project}/store/: JSON 事件摄取; 生成一个确定性的 32- hex 事件 ID 当缺席时。 遗产 message: false 被接受并被忽略,匹配中继日志 Entry; 原始 输入属性不能覆盖已规范的 REST 字段。 事件 ID 调试每个项目, 包括同时重试: 重播返回 同一ID,没有第二次抓取,发出计数或附件.
  • POST /api/{project}/minidump/: 原生小型水泵或多部分 upload_file_minidump选项 sentry JSON和额外的文件. 返回连字符事件 UUID 作为纯文本, 如 Relay . 验证 MDMP/PMDM 魔法并保留字节;原生崩溃符号不模拟.
  • GET /api/0/projects/{organization}/{project}/events/: 最新错误事件, 赤出数组, full=true 封顶一页为 10。 交易在细节和管理员搜索中仍然可用.
  • GET /api/0/projects/{organization}/{project}/events/{event}/:事件ID,消息/标题, 例外/套接字条目、上下文、面包屑、标签和固定用户身份.
  • GET /api/0/projects/{organization}/{project}/issues/: 光阵列组;默认为 is:unresolved, (中文(简体) ), query= 包括所有状态。 明确指纹优先;倒计时 分组是基于例外标题/框架,或配置时的信息.
  • GET编号 :PUT /api/0/issues/{issue}/ 财务报告和审定财务报表 /api/0/organizations/{organization}/issues/{issue}/数字 : 读取或设定 status 改为 unresolved, (中文(简体) ), resolved,或 ignored解决一直持续到 明文状态更新; 自动回归检测在此初始模拟器之外.
  • GET /api/0/projects/{organization}/{project}/events/{event}/attachments/ 财务报告和审定财务报表 /{attachment}/数字 : 附件元数据; ?download=1 细节中将原字节返回给已认证的呼叫者.

读取页标使用 limit (1-100), (中文(简体) ), cursor=0:<offset>:<previous flag> 还有哨兵 Link 双向页眉 rel="previous" 财务报告和审定财务报表 rel="next",其光标,以及 results="true|false"。 。 。 . 在走固定结果集时,稳定插入令可避免重复. 链接保存过滤器 和选定的命名空间,包括自定义管理员前缀。 模拟器支持发布/tag/跟踪 和状态过滤器;生产搜索语法、取样、趋势/排序和统计 没有默默表示为已执行的特征(见下文边界).

Ingest 认证接受 X-Sentry-Auth: Sentry sentry_key=…, sentry_version=7,查询 sentry_key 可选 sentry_version或自认证的 DSN 信封 相冲突页眉/平间 证书、 缺少认证、 密钥、 不兼容的协议版本、 错误的信封和 未知的项目密钥收到中继形状 {"detail": "…"} 错误。 没有发明的通用 API 错误代码或请求 ID: 摄取响应的 id 是供应商事件标识符。 准确 生产配额、过滤理由细节和REST 错误文本,超出文件记录的情况范围 约相相相. 默认有效载荷上限为20 MiB,可配置为 maxPayloadBytes。 。 。 .

测试控制

所有内部端点一起移动 adminPrefix (默认) /__admin) (中文(简体) ). 命名空间载体: x-mockingbird-namespace, (中文(简体) ), /__admin/ns/<suite>/…,或者 DSN 查询/标题证书和 REST 令牌 映射为 PUT /__admin/credentials。自认证的仅信封DSN使用信头/路径 命名空间; 证书映射无法在共享运行时间选择命名空间之前检查一个正文 . 时钟、重置、时间线检查站/检查站和快照别名、请求日记、计量、管理员 UI,收集回溯和通用缺陷是共享服务合同.

  • GET /__admin/events?project=1&release=…&tag=key:value&trace=…: 正常捕获错误和 交易。 所有列出的字段、时间戳、指纹、标记、上下文和面包屑都能活下来 须作修改; user 只保留假的固定符 id。 。 。 .
  • GET /__admin/issues: 将组与当前分辨率状态相匹配,使用相同的过滤器.
  • GET /__admin/envelopes?project=1: 项/标题元数据和拒绝标记; 永远不要生字节.
  • GET编号 :PUT /__admin/settings数字 : grouping: "exception"|"message", (中文(简体) ), sensitivePaths (点路径; 默认 request.data, (中文(简体) ), request.cookies和 rejectItems (接受时丢弃的类型) 其他项目,含200个)。 这些是合成控制,而不是公共的哨兵设置 API.
  • POST /__admin/flush {eventIds?, count?, project?}:即时捕捉条件/结果.
  • POST /__admin/issues/{id}/status {status}: 解析/重新打开/空白.
  • POST /__admin/projects/{id}/clear: 清除项目的遥测,同时保留它的固定.

预设 : rate_limited (429个), Retry-After: 60, (中文(简体) ), X-Sentry-Rate-Limits: 60:error:organization, (中文(简体) ), server_error (503个), network_reset (口袋滴出)和 item_rejected (合成403过滤器). 每种都属于摄入范围,在写作前操作。 一般断层可以强迫其他5xx/429 回应。 官方的 SDK 测试证明错误类别配额在不阻断的情况下进一步降低错误 交易。 它立即验证行为,不重复睡眠.

原始抓取和编辑

授权/cookie和证书名字段进行回转过滤,包括页眉 双人 配置的敏感正体路径在正常数据进入存储之前被过滤或 供应商/管理人员诊断。 个人电子邮件,姓名和IP属性被删除. 日记/日志汇 仅包含请求的元数据和资源ID,从不包含正文,信头或附件字节. 保留原始线体和附件字节 用 AES- GCM 加密 在普通收藏中, 因此重置/时间线覆盖它们,而不通过一般的状态诊断披露平话. runtime.instance(namespace).rawEnvelope(id) 明确方案所有者获取原件 有线字节;它没有被管理员HTTP路由所暴露. 供应a captureKey 从 createCaptureKey() 当重开持久 SQLite 存储时; 默认密钥只活在那段运行时间的一生中 . 将这种明确的原始准入视为敏感的测试所有人准入。 正常事件/细节/搜索路径 返回已编辑的数据,而认证附件下载是一个明确的字节检索.

甲骨文证据

bun run parity:service -- sentry 需求 SENTRY_API_URL, (中文(简体) ), SENTRY_AUTH_TOKEN, (中文(简体) ), SENTRY_ORGANIZATION_SLUG, (中文(简体) ), SENTRY_PROJECT_ID 财务报告和审定财务报表 SENTRY_PROJECT_SLUG。跑者只比较 安全读取,永远不向现场销售商屈服。 测试不需要这些钥匙。 生活平等没有 ; 文档和 SDK 源是初始预言.

故意不模拟

供应商仪表板/帐单、完整的组织/项目/释放管理、生产配额、, 完整搜索 DSL 和搜索时间窗口, 排序模式, 而非最新/ 最后查看, 统计 系列/样本、源图/原生符号、会话汇总分析、剖析/重放, 完全崩溃堆放验证 遗留的压缩基质64 商店摄取 自动发行回归, 警告规则评价或可选问题提醒网点。 保留未知的信封项, 不 作为无支持产品特性处理。 组后退规则和强制过滤行为 明确的确定性测试政策,而不是哨兵的生产分组算法。 问题是: 由控制或供应商PUT明确解决/重新打开,绝不发明同步工人.

API 密码

主要输入运行时间出口 : SentryAPI (单位:千美元)fetch, (中文(简体) ), reset, (中文(简体) ), rawEnvelope, (中文(简体) ), captured, (中文(简体) ), issueWire, (中文(简体) ), sqlite, (中文(简体) ), state, (中文(简体) ), app, (中文(简体) ), createRuntime, (中文(简体) ), SENTRY_NAMESPACE, (中文(简体) ), SENTRY_PRESETS, (中文(简体) ), DEFAULT_PROJECT, (中文(简体) ), createCaptureKey, (中文(简体) ), sentryCredential, (中文(简体) ), document 财务报告和审定财务报表 supportedOperationIds。 。 。 . 类型包括: SentryAPIOptions, (中文(简体) ), SentryRuntime, (中文(简体) ), SentryRuntimeOptions, (中文(简体) ), ProjectFixture, (中文(简体) ), SentrySettings, (中文(简体) ), CapturedEvent, (中文(简体) ), CapturedEnvelope,以及 IssueRecord。 。 。 . 服务器条目运行时间导出 : createServer, (中文(简体) ), DEFAULT_PORT, (中文(简体) ), serveTarget。服务器类型 : SentryServer, (中文(简体) ), SentryServerOptions。 。 。 . createServer 返回时 {url, runtime, close, …}; 关闭 每次测试后服务器。 CLI 条目运行 serve 带有常见的主机/端口/admin前置选项.

版本与发布记录

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

版本发布日期距今
1.11.0latest2026/11/11今天
1.10.62026/11/037 天前
1.10.52026/11/038 天前
1.10.42026/11/038 天前
1.10.32026/11/038 天前
1.10.22026/11/038 天前

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

@crvouga/mockingbird-service-sentry 是什么?

状态哨兵模拟器:SDK信封/存储/最小吞入、事件、问题、附件和确定性运输控制.

如何安装 @crvouga/mockingbird-service-sentry?

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

@crvouga/mockingbird-service-sentry 支持 TypeScript 吗?

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

@crvouga/mockingbird-service-sentry 支持 ESM 还是 CommonJS?

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

@crvouga/mockingbird-service-sentry 可以商用吗?

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

@crvouga/mockingbird-service-sentry 的下载量有多少?

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

@crvouga/mockingbird-service-sentry 还在维护吗?

最新版本 1.11.0 发布于 2026/11/11(今天);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/10/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。