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

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

版本：1\.11\.0
npm 元数据更新时间：2026-11-11T02:13:56.277Z
中文译文更新时间：2026-11-11T04:57:19.823Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：6.8 MB，28 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：6 个
- 首次发布：2026-10-05T09:25:57.263Z
- 最新版本发布：2026-11-11T02:13:55.828Z
- 近 30 天下载量：3144（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：22（近 12 个月 22 个）

## 中文简介

Stateful GitHub REST API 2026-03-10 模拟器用于寄存器,参考和牵引请求假想.

## 安装

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

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

## README

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

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

WIP GitHub REST 模拟器 `X-GitHub-Api-Version: 2026-03-10`。 。 。 . 仓库观察、承诺支持的参考资料和同一仓库拉动请求 已执行创建/获取/列表/更新。 不支持的特性返回模拟器 - 只返回 501. [API 证据.md](https://npmcn.com/package/%40crvouga/mockingbird-service-github/API_EVIDENCE.md) 针入源并区分研究 运行时间验证 . [支助](https://npmcn.com/package/%40crvouga/mockingbird-service-github/SUPPORT.md) 由合同产生.

## 安装

```sh
bun add @crvouga/mockingbird-service-github
```

## API 密码

便携式进口 `GitHubAPI`, (中文(简体) ), `createRuntime`, (中文(简体) ), `prepareFixtures`, (中文(简体) ), `GITHUB_NAMESPACE`, (中文(简体) ), `GITHUB_API_VERSION`, (中文(简体) ), `document`, (中文(简体) ), `operationIds`,以及 `supportedOperationIds`。 。 。 . 类型包括: `GitHubAPIOptions`, (中文(简体) ), `GitHubRuntime`, (中文(简体) ), `GitHubRuntimeOptions`, (中文(简体) ), `GitHubFixtures`, (中文(简体) ), `PreparedGitHubFixtures`, (中文(简体) ), `Repository`, (中文(简体) ), `Commit`, (中文(简体) ), `PullRequest`, (中文(简体) ), `OperationId`,以及 `SupportedOperationId`。 。 。 . 只有节点 `/server` 进口 `createServer`, (中文(简体) ), `DEFAULT_PORT`, (中文(简体) ), `serveTarget`, (中文(简体) ), `GitHubServerOptions`,以及 `GitHubServer`可执行文件是 `mockingbird-github`。 。 。 .

`prepareFixtures(input)` 生成带有 WebCrypto 的合成 App 私钥。 传过来 `fixtures` 改为 `createRuntime` 和使用情况 `generatedPrivateKeys` 在测试的 JWT 签名器中; 提供了 该列表中不包括密钥。 重新使用已准备好的固定装置保留了整个重置的特性. 运行时间 `mount(prefix)` 将它的获取和请求方法处理器嵌入到应用程序源头. 国家行动倡议接受 `--fixtures <json-file>` 财务报告和审定财务报表 `--base-url <url>`; 机队条目也接受内置 固定装置。 见 [设置示例](https://npmcn.com/docs/GETTING_STARTED.md)。 。 。 .

## 使用量

示例使用官员 `@octokit/rest` SDK(22.0.1) (英语).

```ts
import { Octokit } from "@octokit/rest"
import { createRuntime } from "@crvouga/mockingbird-service-github"

// Test setup: the emulator, seeded with a synthetic repository and commit graph.
const emulator = createRuntime({ seed: 42 })
await emulator.fetch(new Request("http://github.mock/__admin/github/repositories", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    owner: "synthetic-org", name: "example", default_branch: "main",
    commits: [
      { sha: "a".repeat(40), parents: [] },
      { sha: "b".repeat(40), parents: ["a".repeat(40)] },
    ],
    branches: { main: "a".repeat(40) },
  }),
}))

// The app's own Octokit. Only its fetch changes: requests reach the emulator
// in this process instead of api.github.com.
const octokit = new Octokit({
  request: { fetch: (url: string, init: RequestInit) => emulator.fetch(new Request(url, init)) },
})
const repo = { owner: "synthetic-org", repo: "example" }
const { data: repository } = await octokit.rest.repos.get(repo)
console.log(repository.full_name) // "synthetic-org/example"

// Publish a synthetic branch and PR.
const branch = await octokit.rest.git.createRef({ ...repo, ref: "refs/heads/topic", sha: "b".repeat(40) })
console.log(branch.status) // 201
const { status, data: pr } = await octokit.rest.pulls.create({
  ...repo, title: "Synthetic change", head: "topic", base: "main", body: "Description",
})
console.log(status, pr.number) // 201, 1
const lookup = await octokit.rest.pulls.list({ ...repo, head: "synthetic-org:topic", base: "main", state: "open" })
console.log(lookup.data[0]?.number === pr.number) // true
const edited = await octokit.rest.pulls.update({ ...repo, pull_number: pr.number, body: "" })
console.log(edited.data.body === null) // true
```

以上所有请求都停留在本地获取运行时间内 。 分支目标必须 已经存在于合成承诺图中;这不是Git推.

`createRuntime` 添加健康、 命名空间、 时钟、 范围缺陷、 编辑请求 日记和共享时间线。 选择命名空间 `x-mockingbird-namespace` 或者说 `/__admin/ns/<name>/...` 根据种子和供应商的要求, 重置删除 寄存器、 拥有者、 父系和分支状态 和错误设置保留其共享运行时间寿命。 恢复检查点 所有存储的提供者状态通过共享的时间线.

`GitHubAPI` 是便携式的仅供货商获取/霍诺条目; `createServer` 从 `@crvouga/mockingbird-service-github/server` 显示节点 HTTP并返回 a `close` 函数。 程序服务器默认为电子回路端口 . CLI是: 校对: `mockingbird-github serve --port 8828`。 。 。 .

## 合成设置和边界

`POST /__admin/github/repositories` 接受所有者/ 名称, 可选 `private` 财务报告和审定财务报表 `default_branch`页:1 `commits` 小写 40-hex SHA/父母记录和 a `branches` 种子 SHA 的分支名称地图 。 犯罪/犯罪导致 空合成库. 每个母体和分支目标必须被播种;周期, 重复和不空分支图中缺失的默认分支被拒绝. 在突变前完成验证; 无法覆盖现有寄存器 由这个控制。 使用新的命名空间或重置不同的固定区域 . 这些是模拟器固定约束,而不是GitHub REST请求规则.

种子只创建组织所有者. 同所有者仓库共享所有者 身份证明 Repository 搜索是大小写不敏感; 分支名称保存大小写 . 只有身份、所有权、能见度、默认分支、URL和时间戳 返回;寄存器设置、统计、权限和完整的上游响应 保险没有索赔。 丢失的寄存器返回一个提供者形状的404. 没有实施基于证书的命名空间绘图或授权政策.

选定的 API 版本返回到 `x-github-api-version-selected`. 弃权 请求头选择此模拟器的 2026-03- 10 合同, 不同于 GitHub 当前 2022-11-28 默认. 其他版本只返回模拟器 501,而非声称的提供者 错误。 这是一个明确的单版模拟器.

没有Git运输,真正的承诺创建, 象征性发行,GitHub App身份, 分支保护、存储规则、合并执行或发送通知是 提供。 种子祖先不能证明一个真正的寄存器的内容. 没有 增加了预期的 " SHA " 或普遍拉动要求的 " 能力 " 保障. 只使用合成固定名称; 日记记录省略正文和证书/查询 数值。 软件包测试不需要 GitHub 账户或网络服务.

## 参考资料

`GET /repos/{owner}/{repo}/git/ref/heads/topic/nested` 读取准确的注释; `GET .../git/matching-refs/heads/topic` 返回前缀匹配。 关闭后缀 (有或无后继斜线)列出所有合成回放. 姓名对案件有敏感认识; 所有者/仓库的查询仍然对案件不敏感。 匹配的参考文献按全名排序.

创建方式 `POST .../git/refs` 财务报告和审定财务报表 `{ "ref": "refs/heads/topic", "sha": "<seeded SHA>" }`。 。 。 . 更新方式 `PATCH .../git/refs/heads/topic` 财务报告和审定财务报表 `{ "sha": "<seeded SHA>" }`。 。 。 . 默认 `force: false` 需要变异时从头流出祖先. `force: true` 允许合成非快向前更新; 它从不引用 Git 或 GitHub (英语). 未知的字段不授予预期的SHA租约或一能.

只有承诺支持的引用被建模;注释标记对象和提供者管理 拉调校对不支持 。 与成功调试操作和 一个非快速前进的422信封。 其他错误措辞、条件/状态映射和 验证优先级仍为临时;参见 API EVIDEENCE.md.

## 调取请求

创建方式 `POST /repos/{owner}/{repo}/pulls` 和标题、头分支和基分支: `{ "title": "Synthetic change", "head": "topic", "base": "main" }`。 。 。 . 两个分支必须存在 并且头部必须包含种子 祖先离开 基础。 接受拥有者资格的同级仓库主管;交叉仓库主管 和发行转换是明确的501限制。 没有发出通知.

读取 `GET .../pulls/{number}` 或列表 `GET .../pulls`列表支持状态 (单位:千美元)`open` 默认, `closed`, (中文(简体) ), `all`, (中文(简体) ), `head=owner:branch`,基础,创建/更新排序, 方向、 页面( 默认 1) 和 per page( 默认 30, 夹住 100) 。 跟踪链接关系; 过滤器和清晰的命名空间头/路径选择在 Pagination 存活. 继续 如果您选择了时光线分支, 则发送共享历史/ 分支标题 。 大众性 和长跑类还原501,因为评论/活动没有被建模.

更新标题、正文、 基础、 状态和维护者 可用 `PATCH .../pulls/{number}`。 。 。 . 空体字符串清除描述并返回为无效 。 头不是更新字段 。 数字 c. 保持稳定。 减少的响应包括: 头名/基名,仓库身份和SHA. 打开 PR 解析当前分支提示 ; 关闭的公关保留最后抓取的提示,直到明确更新。 PR 时间戳 音轨创建/更新呼叫,而非背景提供者事件。 合并和合并 执行SHA无效;合并后不成立。 作者身份,评论,标签, 没有模拟审查、合并执行和提供者事件传播.

同一头/基产量的公开PR 422,并附有拉活请求/海关验证 错误。 消费者-私营业务ID和Idepotency-Key从未造成重复. 如果丢失了响应, 请逐行列出首页/ 基准, 然后检索匹配 数字; 重试创建可以产生重复错误。 受限活的神谕 在API版本2026-03-10中确认了这个相同的存储器复制信封. 见API EVIDENCE.md 对于未经测试的案例和出错-先入后出的差距.

## 出版过失设想

激活命名空间扫描预设 `POST /__admin/faults` 与 `{ "preset": "github_pr_create_accepted_drop" }`列表预设 `GET /__admin/faults/presets`。现有的共享断层覆盖可以缩小 操作/路径,在选定计数后改变响应或退休.

-   `github_pr_create_accepted_drop`, (中文(简体) ), `github_pr_update_accepted_drop`, (中文(简体) ), `github_ref_create_accepted_drop`, (中文(简体) ), `github_ref_update_accepted_drop`下一个 匹配请求达到正常验证。 只有一个成功的突变 接受、检查和随后撤回答复。 无效的请求 保留他们的普通错误 并使用一发规则。 进程获取 用 TypeError 拒绝; 节点 HTTP 适配器关闭连接 。 回收 通过提供者读取;重试一个创建可能返回重复错误.
-   `github_unavailable`: 1,503 为4个写作操作中的每个操作进行突变前.
-   `github_denied`: 1 403 有脚本集成- 拒绝写入每封信 操作。 这不检查证书,也不评估许可/规则.
-   `github_rate_limited`: 每笔操作一次二级限值429, 重试- 60后 和一个合成的剩余数。 静态信头练习客户端反向; 在那里 没有自动配额引擎、定时器驱动的过期,或声称每个 GitHub 比率限制有这种状态/消息/标题组合.

接受日记条目记录 `accepted`检查站和参考/PR号码 元数据,即使响应状态为 0。 尸体被略去。 错误设置随之而来 共享运行时间寿命, 不会被提供者状态的检出重接 .

做一个单独的演员,打电话 `POST /__admin/github/refs/move` 与 `{ "owner": "synthetic-org", "repo": "example", "ref": "refs/heads/topic", "sha": "<seeded SHA>" }` 在客户端读写之间 此模拟器唯一的控制需要已有的 分支和种子快速前进的目标, 创建一个单独的检查站 返回时 `simulated: true`。它不能创建 refs 、 强制重写或变异另一个 名称空间。 无效的控制使状态/历史保持不变。 随后的写法使用 当前的提示的先祖; 仅停留观察不能成为拒绝的理由. 这种控制模型相互分离,而不是原子出版或真正的分支执行.

## 当地合同核查

`bun test` 包括所有9个行动的种子自我均等和成功 进行行动反应检查。 一个有意的、有计划有效的存储库 观测结果必须低于对等参照数。 这些都是两个孤立的模拟实例; 自平不是GitHub与此执行匹配的证据.

`test/node-consumer.mjs` 使用本地节点HTTP和字面公共合同反对 已建本地服务器。 它在套接字丢失后回收 PR , 观察到重复 跟踪超过31P的Pagination, 检查干扰的Ref运动 不使用 CAS , 并使用逻辑测试时钟从 Retry- After 重试 . 它不进口供货商或国家助手。 之前运行软件包构建 直接运行这个消费者。 它只创造当地固定资源.

对等元数据可以实现所有9个操作;4个写法是标记不安全的 需要明确纳入。 实际提供者的比较仍然需要 单独的有限度的甲骨文和明确的可支配资源授权。 WIP 状态 直至独立的相容性证据支持更强有力的主张.

## 确定现场证据和出版限额

单独批准的2026-09-29甲骨文核查与12个对照 修复其中发现的空体更新不匹配后的所有9个操作 首先运行。 每次运行关闭了固定的PR并删除了两个不变的固定 分支;关闭的PR历史和Git对象依然存在. 赛跑者只能使用 在寄存器检出中; 参见 [甲骨文指南](https://github.com/crvouga/mockingbird/tree/main/packages/service/github/oracle)。 。 。 . 它需要经过审查的清楚明了的书面/通知/清理批准, 加号 `MOCKINGBIRD_GITHUB_TOKEN` 或明确选定的认证 `gh` 用途. 普通的包件测试从不引用.

这一证据涵盖选定的身份/状态/ref/PR字段和两个出错案件. 它没有建立完整的上游反应计划, 所有验证优先, 现场多页行为、实际利率配额或真正的网络损失担保。 这个 软件包残存 **妇女**脚本拒绝的回复不能证明GitHub App的身份, 符号权限、分支保护或规则。 没有吉特运输或 代号签发,无预期的旧SHA比较和扫描,无原子交易 包括参考文献和公关出版物。 消费者协调政策 跨组成部分倡议的接受程度仍处在这一模拟器之外.

## 常见问题

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

Stateful GitHub REST API 2026-03-10 模拟器用于寄存器,参考和牵引请求假想\.

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

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

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

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

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

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

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

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

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

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

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

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

