用途:指导在 GitLab agent webhook 代码库中新增一个 GitLab webhook 事件处理器的完整流程,适用于需要支持新 webhook 事件类型或扩展 webhook 处理的场景。
主要能力与要求:规范新增处理器的实现步骤,并强调若干强制规则——事件联合类型中的每个新变体必须在路由器中处理(穷尽 switch);载荷必须经 Zod schema 校验,不信任原始输入;解析函数必须返回 Result<WebhookEvent, AppError>,不得抛出异常。
使用方式(按资料步骤):
- 先写失败测试:在 tests/events/<handler-name>.test.ts 中覆盖有效载荷解析、无效载荷拒绝(返回 err)、边界情况(system notes、被忽略的 action),运行 bun test 确认失败。
- 在 src/events/parser.ts 中定义新事件载荷的 Zod schema,并导出推断出的 TypeScript 类型。
- 在 src/types/events.ts 中为 WebhookEvent 可辨识联合新增变体:| { readonly kind: "new_event_name"; readonly payload: NewPayloadType }。
- 在 src/events/parser.ts 中新增解析函数(如 parseNewEventHook),并在 parseWebhookPayload 中加入事件类型判断。
- 在 src/events/router.ts 的 switch (event.kind) 中新增 case;由于没有 default 分支,TypeScript 会在未处理新变体时报错。
- 运行 bun run check(类型检查 + lint + 测试),全部通过方可完成。
限制:资料仅给出上述固定步骤与技术约束,未提供依赖版本、安装命令、项目背景或收费信息;使用前需已有该代码库环境。