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.
@@ -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,5 @@
1
+ /**
2
+ * Types for GitLab event transport
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -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
+ }