cyrus-github-event-transport 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/dist/GitHubCommentService.d.ts +93 -0
- package/dist/GitHubCommentService.d.ts.map +1 -0
- package/dist/GitHubCommentService.js +88 -0
- package/dist/GitHubCommentService.js.map +1 -0
- package/dist/GitHubEventTransport.d.ts +60 -0
- package/dist/GitHubEventTransport.d.ts.map +1 -0
- package/dist/GitHubEventTransport.js +181 -0
- package/dist/GitHubEventTransport.js.map +1 -0
- package/dist/GitHubMessageTranslator.d.ts +77 -0
- package/dist/GitHubMessageTranslator.d.ts.map +1 -0
- package/dist/GitHubMessageTranslator.js +328 -0
- package/dist/GitHubMessageTranslator.js.map +1 -0
- package/dist/github-webhook-utils.d.ts +76 -0
- package/dist/github-webhook-utils.d.ts.map +1 -0
- package/dist/github-webhook-utils.js +137 -0
- package/dist/github-webhook-utils.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +171 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +30 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for GitHub event transport
|
|
3
|
+
*/
|
|
4
|
+
import type { InternalMessage } from "cyrus-core";
|
|
5
|
+
import type { FastifyInstance } from "fastify";
|
|
6
|
+
/**
|
|
7
|
+
* Verification mode for GitHub webhooks forwarded from CYHOST
|
|
8
|
+
* - 'proxy': Use CYRUS_API_KEY Bearer token for authentication (self-hosted)
|
|
9
|
+
* - 'signature': Use x-hub-signature-256 GitHub HMAC-SHA256 signature verification (cloud)
|
|
10
|
+
*/
|
|
11
|
+
export type GitHubVerificationMode = "proxy" | "signature";
|
|
12
|
+
/**
|
|
13
|
+
* Configuration for GitHubEventTransport
|
|
14
|
+
*/
|
|
15
|
+
export interface GitHubEventTransportConfig {
|
|
16
|
+
/** Fastify server instance to mount routes on */
|
|
17
|
+
fastifyServer: FastifyInstance;
|
|
18
|
+
/** Verification mode: 'proxy' or 'signature' */
|
|
19
|
+
verificationMode: GitHubVerificationMode;
|
|
20
|
+
/** Secret for verification (CYRUS_API_KEY for proxy, GITHUB_WEBHOOK_SECRET for signature) */
|
|
21
|
+
secret: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Events emitted by GitHubEventTransport
|
|
25
|
+
*/
|
|
26
|
+
export interface GitHubEventTransportEvents {
|
|
27
|
+
/** Emitted when a GitHub webhook is received and verified (legacy) */
|
|
28
|
+
event: (event: GitHubWebhookEvent) => void;
|
|
29
|
+
/** Emitted when a unified internal message is received */
|
|
30
|
+
message: (message: InternalMessage) => void;
|
|
31
|
+
/** Emitted when an error occurs */
|
|
32
|
+
error: (error: Error) => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Processed GitHub webhook event that is emitted to listeners
|
|
36
|
+
*/
|
|
37
|
+
export interface GitHubWebhookEvent {
|
|
38
|
+
/** The GitHub event type (e.g., 'issue_comment', 'pull_request_review_comment') */
|
|
39
|
+
eventType: GitHubEventType;
|
|
40
|
+
/** Unique webhook delivery ID */
|
|
41
|
+
deliveryId: string;
|
|
42
|
+
/** The full GitHub webhook payload */
|
|
43
|
+
payload: GitHubIssueCommentPayload | GitHubPullRequestReviewCommentPayload;
|
|
44
|
+
/** GitHub installation token forwarded from CYHOST (1-hour expiry) */
|
|
45
|
+
installationToken?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Supported GitHub webhook event types
|
|
49
|
+
*/
|
|
50
|
+
export type GitHubEventType = "issue_comment" | "pull_request_review_comment";
|
|
51
|
+
/**
|
|
52
|
+
* GitHub user object (minimal)
|
|
53
|
+
*/
|
|
54
|
+
export interface GitHubUser {
|
|
55
|
+
login: string;
|
|
56
|
+
id: number;
|
|
57
|
+
avatar_url: string;
|
|
58
|
+
html_url: string;
|
|
59
|
+
type: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* GitHub repository object (minimal)
|
|
63
|
+
*/
|
|
64
|
+
export interface GitHubRepository {
|
|
65
|
+
id: number;
|
|
66
|
+
name: string;
|
|
67
|
+
full_name: string;
|
|
68
|
+
html_url: string;
|
|
69
|
+
clone_url: string;
|
|
70
|
+
ssh_url: string;
|
|
71
|
+
default_branch: string;
|
|
72
|
+
owner: GitHubUser;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* GitHub PR reference (head/base)
|
|
76
|
+
*/
|
|
77
|
+
export interface GitHubPullRequestRef {
|
|
78
|
+
label: string;
|
|
79
|
+
ref: string;
|
|
80
|
+
sha: string;
|
|
81
|
+
repo: GitHubRepository;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* GitHub Pull Request object (minimal, used in issue_comment context)
|
|
85
|
+
*/
|
|
86
|
+
export interface GitHubPullRequestMinimal {
|
|
87
|
+
url: string;
|
|
88
|
+
html_url: string;
|
|
89
|
+
diff_url: string;
|
|
90
|
+
patch_url: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* GitHub Pull Request object (full, used in pull_request_review_comment context)
|
|
94
|
+
*/
|
|
95
|
+
export interface GitHubPullRequest {
|
|
96
|
+
id: number;
|
|
97
|
+
number: number;
|
|
98
|
+
title: string;
|
|
99
|
+
body: string | null;
|
|
100
|
+
state: string;
|
|
101
|
+
html_url: string;
|
|
102
|
+
url: string;
|
|
103
|
+
head: GitHubPullRequestRef;
|
|
104
|
+
base: GitHubPullRequestRef;
|
|
105
|
+
user: GitHubUser;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* GitHub Issue object (used in issue_comment webhook)
|
|
109
|
+
*/
|
|
110
|
+
export interface GitHubIssue {
|
|
111
|
+
id: number;
|
|
112
|
+
number: number;
|
|
113
|
+
title: string;
|
|
114
|
+
body: string | null;
|
|
115
|
+
state: string;
|
|
116
|
+
html_url: string;
|
|
117
|
+
url: string;
|
|
118
|
+
user: GitHubUser;
|
|
119
|
+
/** Present when the issue is a PR */
|
|
120
|
+
pull_request?: GitHubPullRequestMinimal;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* GitHub comment object
|
|
124
|
+
*/
|
|
125
|
+
export interface GitHubComment {
|
|
126
|
+
id: number;
|
|
127
|
+
body: string;
|
|
128
|
+
html_url: string;
|
|
129
|
+
url: string;
|
|
130
|
+
user: GitHubUser;
|
|
131
|
+
created_at: string;
|
|
132
|
+
updated_at: string;
|
|
133
|
+
/** For PR review comments: the file path being commented on */
|
|
134
|
+
path?: string;
|
|
135
|
+
/** For PR review comments: the diff hunk */
|
|
136
|
+
diff_hunk?: string;
|
|
137
|
+
/** For PR review comments: the commit being commented on */
|
|
138
|
+
commit_id?: string;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* GitHub installation object (for GitHub App)
|
|
142
|
+
*/
|
|
143
|
+
export interface GitHubInstallation {
|
|
144
|
+
id: number;
|
|
145
|
+
node_id: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Payload for issue_comment webhook events
|
|
149
|
+
* @see https://docs.github.com/en/webhooks/webhook-events-and-payloads#issue_comment
|
|
150
|
+
*/
|
|
151
|
+
export interface GitHubIssueCommentPayload {
|
|
152
|
+
action: "created" | "edited" | "deleted";
|
|
153
|
+
issue: GitHubIssue;
|
|
154
|
+
comment: GitHubComment;
|
|
155
|
+
repository: GitHubRepository;
|
|
156
|
+
sender: GitHubUser;
|
|
157
|
+
installation?: GitHubInstallation;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Payload for pull_request_review_comment webhook events
|
|
161
|
+
* @see https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request_review_comment
|
|
162
|
+
*/
|
|
163
|
+
export interface GitHubPullRequestReviewCommentPayload {
|
|
164
|
+
action: "created" | "edited" | "deleted";
|
|
165
|
+
comment: GitHubComment;
|
|
166
|
+
pull_request: GitHubPullRequest;
|
|
167
|
+
repository: GitHubRepository;
|
|
168
|
+
sender: GitHubUser;
|
|
169
|
+
installation?: GitHubInstallation;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cyrus-github-event-transport",
|
|
3
|
+
"version": "0.2.22",
|
|
4
|
+
"description": "GitHub event transport for receiving and verifying forwarded GitHub webhooks",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"fastify": "^5.2.0",
|
|
13
|
+
"cyrus-core": "0.2.22"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@types/node": "^20.0.0",
|
|
17
|
+
"typescript": "^5.3.3",
|
|
18
|
+
"vitest": "^3.1.4"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"dev": "tsc --watch",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
27
|
+
"test": "vitest",
|
|
28
|
+
"test:run": "vitest run"
|
|
29
|
+
}
|
|
30
|
+
}
|