cyrus-gitlab-event-transport 0.2.38
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/GitLabCommentService.d.ts +89 -0
- package/dist/GitLabCommentService.d.ts.map +1 -0
- package/dist/GitLabCommentService.js +78 -0
- package/dist/GitLabCommentService.js.map +1 -0
- package/dist/GitLabEventTransport.d.ts +63 -0
- package/dist/GitLabEventTransport.d.ts.map +1 -0
- package/dist/GitLabEventTransport.js +175 -0
- package/dist/GitLabEventTransport.js.map +1 -0
- package/dist/GitLabMessageTranslator.d.ts +69 -0
- package/dist/GitLabMessageTranslator.d.ts.map +1 -0
- package/dist/GitLabMessageTranslator.js +274 -0
- package/dist/GitLabMessageTranslator.js.map +1 -0
- package/dist/gitlab-webhook-utils.d.ts +74 -0
- package/dist/gitlab-webhook-utils.d.ts.map +1 -0
- package/dist/gitlab-webhook-utils.js +157 -0
- package/dist/gitlab-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 +169 -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,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for GitLab event transport
|
|
3
|
+
*/
|
|
4
|
+
import type { InternalMessage } from "cyrus-core";
|
|
5
|
+
import type { FastifyInstance } from "fastify";
|
|
6
|
+
/**
|
|
7
|
+
* Verification mode for GitLab webhooks
|
|
8
|
+
* - 'proxy': Use CYRUS_API_KEY Bearer token for authentication (self-hosted via CYHOST)
|
|
9
|
+
* - 'signature': Use X-Gitlab-Token secret token verification (direct webhooks)
|
|
10
|
+
*/
|
|
11
|
+
export type GitLabVerificationMode = "proxy" | "signature";
|
|
12
|
+
/**
|
|
13
|
+
* Configuration for GitLabEventTransport
|
|
14
|
+
*/
|
|
15
|
+
export interface GitLabEventTransportConfig {
|
|
16
|
+
/** Fastify server instance to mount routes on */
|
|
17
|
+
fastifyServer: FastifyInstance;
|
|
18
|
+
/** Verification mode: 'proxy' or 'signature' */
|
|
19
|
+
verificationMode: GitLabVerificationMode;
|
|
20
|
+
/** Secret for verification (CYRUS_API_KEY for proxy, GITLAB_WEBHOOK_SECRET for signature) */
|
|
21
|
+
secret: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Events emitted by GitLabEventTransport
|
|
25
|
+
*/
|
|
26
|
+
export interface GitLabEventTransportEvents {
|
|
27
|
+
/** Emitted when a GitLab webhook is received and verified (legacy) */
|
|
28
|
+
event: (event: GitLabWebhookEvent) => 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 GitLab webhook event that is emitted to listeners
|
|
36
|
+
*/
|
|
37
|
+
export interface GitLabWebhookEvent {
|
|
38
|
+
/** The GitLab event type */
|
|
39
|
+
eventType: GitLabEventType;
|
|
40
|
+
/** The full GitLab webhook payload */
|
|
41
|
+
payload: GitLabNotePayload | GitLabMergeRequestPayload;
|
|
42
|
+
/** GitLab access token forwarded from CYHOST */
|
|
43
|
+
accessToken?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Supported GitLab webhook event types
|
|
47
|
+
*/
|
|
48
|
+
export type GitLabEventType = "note" | "merge_request";
|
|
49
|
+
/**
|
|
50
|
+
* GitLab user object (minimal)
|
|
51
|
+
*/
|
|
52
|
+
export interface GitLabUser {
|
|
53
|
+
id: number;
|
|
54
|
+
name: string;
|
|
55
|
+
username: string;
|
|
56
|
+
avatar_url: string;
|
|
57
|
+
email?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* GitLab project object
|
|
61
|
+
*/
|
|
62
|
+
export interface GitLabProject {
|
|
63
|
+
id: number;
|
|
64
|
+
name: string;
|
|
65
|
+
description: string | null;
|
|
66
|
+
web_url: string;
|
|
67
|
+
git_ssh_url: string;
|
|
68
|
+
git_http_url: string;
|
|
69
|
+
namespace: string;
|
|
70
|
+
path_with_namespace: string;
|
|
71
|
+
default_branch: string;
|
|
72
|
+
homepage: string;
|
|
73
|
+
url: string;
|
|
74
|
+
ssh_url: string;
|
|
75
|
+
http_url: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* GitLab merge request object (as embedded in webhook payloads)
|
|
79
|
+
*/
|
|
80
|
+
export interface GitLabMergeRequest {
|
|
81
|
+
id: number;
|
|
82
|
+
iid: number;
|
|
83
|
+
title: string;
|
|
84
|
+
description: string | null;
|
|
85
|
+
state: string;
|
|
86
|
+
url: string;
|
|
87
|
+
source_branch: string;
|
|
88
|
+
target_branch: string;
|
|
89
|
+
source_project_id: number;
|
|
90
|
+
target_project_id: number;
|
|
91
|
+
author_id: number;
|
|
92
|
+
assignee_id: number | null;
|
|
93
|
+
created_at: string;
|
|
94
|
+
updated_at: string;
|
|
95
|
+
action?: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* GitLab note (comment) object attributes
|
|
99
|
+
*/
|
|
100
|
+
export interface GitLabNoteAttributes {
|
|
101
|
+
id: number;
|
|
102
|
+
note: string;
|
|
103
|
+
noteable_type: "MergeRequest" | "Issue" | "Snippet" | "Commit";
|
|
104
|
+
author_id: number;
|
|
105
|
+
created_at: string;
|
|
106
|
+
updated_at: string;
|
|
107
|
+
project_id: number;
|
|
108
|
+
url: string;
|
|
109
|
+
type: string | null;
|
|
110
|
+
description?: string;
|
|
111
|
+
/** Discussion ID for threaded notes */
|
|
112
|
+
discussion_id?: string;
|
|
113
|
+
/** For diff notes: position data */
|
|
114
|
+
position?: {
|
|
115
|
+
base_sha: string;
|
|
116
|
+
start_sha: string;
|
|
117
|
+
head_sha: string;
|
|
118
|
+
old_path: string;
|
|
119
|
+
new_path: string;
|
|
120
|
+
position_type: string;
|
|
121
|
+
old_line: number | null;
|
|
122
|
+
new_line: number | null;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Payload for note (comment) webhook events
|
|
127
|
+
* @see https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html#comment-events
|
|
128
|
+
*/
|
|
129
|
+
export interface GitLabNotePayload {
|
|
130
|
+
object_kind: "note";
|
|
131
|
+
event_type: "note";
|
|
132
|
+
user: GitLabUser;
|
|
133
|
+
project: GitLabProject;
|
|
134
|
+
object_attributes: GitLabNoteAttributes;
|
|
135
|
+
/** Present when the note is on a merge request */
|
|
136
|
+
merge_request?: GitLabMergeRequest;
|
|
137
|
+
/** Repository info */
|
|
138
|
+
repository?: {
|
|
139
|
+
name: string;
|
|
140
|
+
url: string;
|
|
141
|
+
description: string | null;
|
|
142
|
+
homepage: string;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Merge request object_attributes in webhook payload
|
|
147
|
+
*/
|
|
148
|
+
export interface GitLabMergeRequestAttributes extends GitLabMergeRequest {
|
|
149
|
+
action: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Payload for merge_request webhook events
|
|
153
|
+
* @see https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html#merge-request-events
|
|
154
|
+
*/
|
|
155
|
+
export interface GitLabMergeRequestPayload {
|
|
156
|
+
object_kind: "merge_request";
|
|
157
|
+
event_type: "merge_request";
|
|
158
|
+
user: GitLabUser;
|
|
159
|
+
project: GitLabProject;
|
|
160
|
+
object_attributes: GitLabMergeRequestAttributes;
|
|
161
|
+
/** Repository info */
|
|
162
|
+
repository?: {
|
|
163
|
+
name: string;
|
|
164
|
+
url: string;
|
|
165
|
+
description: string | null;
|
|
166
|
+
homepage: string;
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//# 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-gitlab-event-transport",
|
|
3
|
+
"version": "0.2.38",
|
|
4
|
+
"description": "GitLab event transport for receiving and verifying forwarded GitLab 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.8.1",
|
|
13
|
+
"cyrus-core": "0.2.38"
|
|
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 --passWithNoTests"
|
|
29
|
+
}
|
|
30
|
+
}
|