@relaymesh/githook 0.0.7

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.
Files changed (76) hide show
  1. package/README.md +143 -0
  2. package/dist/api.d.ts +68 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +260 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/client.d.ts +10 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +10 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/codec.d.ts +9 -0
  11. package/dist/codec.d.ts.map +1 -0
  12. package/dist/codec.js +92 -0
  13. package/dist/codec.js.map +1 -0
  14. package/dist/config.d.ts +29 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +2 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/context.d.ts +8 -0
  19. package/dist/context.d.ts.map +1 -0
  20. package/dist/context.js +2 -0
  21. package/dist/context.js.map +1 -0
  22. package/dist/driver_config.d.ts +3 -0
  23. package/dist/driver_config.d.ts.map +1 -0
  24. package/dist/driver_config.js +36 -0
  25. package/dist/driver_config.js.map +1 -0
  26. package/dist/event.d.ts +14 -0
  27. package/dist/event.d.ts.map +1 -0
  28. package/dist/event.js +2 -0
  29. package/dist/event.js.map +1 -0
  30. package/dist/event_log_status.d.ts +4 -0
  31. package/dist/event_log_status.d.ts.map +1 -0
  32. package/dist/event_log_status.js +4 -0
  33. package/dist/event_log_status.js.map +1 -0
  34. package/dist/index.d.ts +18 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +18 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/listener.d.ts +15 -0
  39. package/dist/listener.d.ts.map +1 -0
  40. package/dist/listener.js +2 -0
  41. package/dist/listener.js.map +1 -0
  42. package/dist/metadata.d.ts +12 -0
  43. package/dist/metadata.d.ts.map +1 -0
  44. package/dist/metadata.js +12 -0
  45. package/dist/metadata.js.map +1 -0
  46. package/dist/oauth2.d.ts +20 -0
  47. package/dist/oauth2.d.ts.map +1 -0
  48. package/dist/oauth2.js +84 -0
  49. package/dist/oauth2.js.map +1 -0
  50. package/dist/retry.d.ts +20 -0
  51. package/dist/retry.d.ts.map +1 -0
  52. package/dist/retry.js +12 -0
  53. package/dist/retry.js.map +1 -0
  54. package/dist/scm_client_provider.d.ts +35 -0
  55. package/dist/scm_client_provider.d.ts.map +1 -0
  56. package/dist/scm_client_provider.js +131 -0
  57. package/dist/scm_client_provider.js.map +1 -0
  58. package/dist/scm_clients.d.ts +36 -0
  59. package/dist/scm_clients.d.ts.map +1 -0
  60. package/dist/scm_clients.js +129 -0
  61. package/dist/scm_clients.js.map +1 -0
  62. package/dist/subscriber.d.ts +8 -0
  63. package/dist/subscriber.d.ts.map +1 -0
  64. package/dist/subscriber.js +185 -0
  65. package/dist/subscriber.js.map +1 -0
  66. package/dist/types.d.ts +8 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +2 -0
  69. package/dist/types.js.map +1 -0
  70. package/dist/worker.d.ts +112 -0
  71. package/dist/worker.d.ts.map +1 -0
  72. package/dist/worker.js +726 -0
  73. package/dist/worker.js.map +1 -0
  74. package/gen/cloud/v1/githooks_pb.d.ts +2661 -0
  75. package/gen/cloud/v1/githooks_pb.js +921 -0
  76. package/package.json +29 -0
@@ -0,0 +1,129 @@
1
+ export class GitHubClient {
2
+ constructor(token, baseUrl) {
3
+ this.token = token;
4
+ this.baseUrl = baseUrl;
5
+ }
6
+ async request(method, path, body, headers = {}) {
7
+ const url = resolveURL(this.baseUrl, path);
8
+ return fetch(url, {
9
+ method,
10
+ headers: {
11
+ Authorization: `Bearer ${this.token}`,
12
+ Accept: "application/vnd.github+json",
13
+ "Content-Type": "application/json",
14
+ ...headers,
15
+ },
16
+ body: body ? JSON.stringify(body) : undefined,
17
+ });
18
+ }
19
+ async requestJSON(method, path, body, headers) {
20
+ const resp = await this.request(method, path, body, headers);
21
+ if (!resp.ok) {
22
+ const text = await resp.text().catch(() => "");
23
+ throw new Error(`github request failed (${resp.status}): ${text}`);
24
+ }
25
+ return resp.json();
26
+ }
27
+ }
28
+ export class GitLabClient {
29
+ constructor(token, baseUrl) {
30
+ this.token = token;
31
+ this.baseUrl = baseUrl;
32
+ }
33
+ async request(method, path, body, headers = {}) {
34
+ const url = resolveURL(this.baseUrl, path);
35
+ return fetch(url, {
36
+ method,
37
+ headers: {
38
+ Authorization: `Bearer ${this.token}`,
39
+ "Content-Type": "application/json",
40
+ ...headers,
41
+ },
42
+ body: body ? JSON.stringify(body) : undefined,
43
+ });
44
+ }
45
+ async requestJSON(method, path, body, headers) {
46
+ const resp = await this.request(method, path, body, headers);
47
+ if (!resp.ok) {
48
+ const text = await resp.text().catch(() => "");
49
+ throw new Error(`gitlab request failed (${resp.status}): ${text}`);
50
+ }
51
+ return resp.json();
52
+ }
53
+ }
54
+ export class BitbucketClient {
55
+ constructor(token, baseUrl) {
56
+ this.token = token;
57
+ this.baseUrl = baseUrl;
58
+ }
59
+ async request(method, path, body, headers = {}) {
60
+ const url = resolveURL(this.baseUrl, path);
61
+ return fetch(url, {
62
+ method,
63
+ headers: {
64
+ Authorization: `Bearer ${this.token}`,
65
+ "Content-Type": "application/json",
66
+ ...headers,
67
+ },
68
+ body: body ? JSON.stringify(body) : undefined,
69
+ });
70
+ }
71
+ async requestJSON(method, path, body, headers) {
72
+ const resp = await this.request(method, path, body, headers);
73
+ if (!resp.ok) {
74
+ const text = await resp.text().catch(() => "");
75
+ throw new Error(`bitbucket request failed (${resp.status}): ${text}`);
76
+ }
77
+ return resp.json();
78
+ }
79
+ }
80
+ export function GitHubClientFromEvent(evt) {
81
+ return evt?.client instanceof GitHubClient ? evt.client : undefined;
82
+ }
83
+ export function GitLabClientFromEvent(evt) {
84
+ return evt?.client instanceof GitLabClient ? evt.client : undefined;
85
+ }
86
+ export function BitbucketClientFromEvent(evt) {
87
+ return evt?.client instanceof BitbucketClient ? evt.client : undefined;
88
+ }
89
+ export function newProviderClient(provider, token, baseUrl) {
90
+ const normalized = (provider ?? "").trim().toLowerCase();
91
+ switch (normalized) {
92
+ case "github":
93
+ return new GitHubClient(token, resolveAPIBase(baseUrl, normalized));
94
+ case "gitlab":
95
+ return new GitLabClient(token, resolveAPIBase(baseUrl, normalized));
96
+ case "bitbucket":
97
+ return new BitbucketClient(token, resolveAPIBase(baseUrl, normalized));
98
+ default:
99
+ throw new Error(`unsupported provider for scm client: ${provider}`);
100
+ }
101
+ }
102
+ function resolveAPIBase(baseUrl, provider) {
103
+ const trimmed = (baseUrl ?? "").trim();
104
+ if (trimmed) {
105
+ return trimmed;
106
+ }
107
+ switch ((provider ?? "").toLowerCase()) {
108
+ case "github":
109
+ return "https://api.github.com";
110
+ case "gitlab":
111
+ return "https://gitlab.com/api/v4";
112
+ case "bitbucket":
113
+ return "https://api.bitbucket.org/2.0";
114
+ default:
115
+ return trimmed;
116
+ }
117
+ }
118
+ function resolveURL(baseUrl, path) {
119
+ if (!path) {
120
+ return baseUrl;
121
+ }
122
+ if (path.startsWith("http://") || path.startsWith("https://")) {
123
+ return path;
124
+ }
125
+ const normalizedBase = (baseUrl ?? "").replace(/\/+$/, "");
126
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
127
+ return `${normalizedBase}${normalizedPath}`;
128
+ }
129
+ //# sourceMappingURL=scm_clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm_clients.js","sourceRoot":"","sources":["../src/scm_clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SubscriberConfig } from "./config.js";
2
+ import type { MessageHandler } from "./types.js";
3
+ export interface Subscriber {
4
+ start(topic: string, handler: MessageHandler): Promise<void>;
5
+ close(): Promise<void>;
6
+ }
7
+ export declare function buildSubscriber(cfg: SubscriberConfig): Subscriber;
8
+ //# sourceMappingURL=subscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../src/subscriber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,YAAY,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,GAAG,UAAU,CAcjE"}
@@ -0,0 +1,185 @@
1
+ import { MetadataKeyDriver } from "./metadata.js";
2
+ export function buildSubscriber(cfg) {
3
+ const drivers = collectDrivers(cfg);
4
+ if (drivers.length === 0) {
5
+ throw new Error("at least one driver is required");
6
+ }
7
+ if (drivers.length === 1) {
8
+ return new RelaybusSubscriber(drivers[0], cfg);
9
+ }
10
+ const entries = drivers.map((driver) => ({
11
+ driver,
12
+ sub: new RelaybusSubscriber(driver, cfg),
13
+ }));
14
+ return new MultiSubscriber(entries);
15
+ }
16
+ class RelaybusSubscriber {
17
+ constructor(driver, cfg) {
18
+ this.driver = driver;
19
+ this.cfg = cfg;
20
+ this.subs = new Set();
21
+ }
22
+ async start(topic, handler) {
23
+ if (!handler) {
24
+ throw new Error("handler is required");
25
+ }
26
+ switch (this.driver) {
27
+ case "amqp":
28
+ await this.startAmqp(topic, handler);
29
+ return;
30
+ case "kafka":
31
+ await this.startKafka(topic, handler);
32
+ return;
33
+ case "nats":
34
+ await this.startNats(topic, handler);
35
+ return;
36
+ default:
37
+ throw new Error(`unsupported driver: ${this.driver}`);
38
+ }
39
+ }
40
+ async close() {
41
+ let firstError;
42
+ for (const sub of this.subs) {
43
+ try {
44
+ await sub.close();
45
+ }
46
+ catch (err) {
47
+ if (!firstError) {
48
+ firstError = err instanceof Error ? err : new Error(String(err));
49
+ }
50
+ }
51
+ }
52
+ this.subs.clear();
53
+ if (firstError) {
54
+ throw firstError;
55
+ }
56
+ }
57
+ async startAmqp(topic, handler) {
58
+ const cfg = this.cfg.amqp;
59
+ if (!cfg || !cfg.url) {
60
+ throw new Error("amqp url is required");
61
+ }
62
+ const { AmqpSubscriber } = await loadRelaybusModule("@relaymesh/relaybus-amqp", "relaybus amqp");
63
+ const sub = await AmqpSubscriber.connect({
64
+ url: cfg.url,
65
+ exchange: cfg.exchange,
66
+ routingKeyTemplate: cfg.routingKeyTemplate,
67
+ queue: cfg.queue,
68
+ autoAck: cfg.autoAck,
69
+ maxMessages: cfg.maxMessages,
70
+ onMessage: (msg) => handler(msg),
71
+ });
72
+ this.subs.add(sub);
73
+ try {
74
+ await sub.start(topic);
75
+ }
76
+ finally {
77
+ this.subs.delete(sub);
78
+ }
79
+ }
80
+ async startKafka(topic, handler) {
81
+ const cfg = this.cfg.kafka;
82
+ const brokers = cfg?.brokers?.length ? cfg.brokers : cfg?.broker ? [cfg.broker] : [];
83
+ if (!brokers.length) {
84
+ throw new Error("kafka brokers are required");
85
+ }
86
+ const { KafkaSubscriber } = await loadRelaybusModule("@relaymesh/relaybus-kafka", "relaybus kafka");
87
+ const sub = await KafkaSubscriber.connect({
88
+ brokers,
89
+ groupId: cfg?.groupId,
90
+ maxMessages: cfg?.maxMessages,
91
+ onMessage: (msg) => handler(msg),
92
+ });
93
+ this.subs.add(sub);
94
+ try {
95
+ await sub.start(resolveKafkaTopic(topic, cfg));
96
+ }
97
+ finally {
98
+ this.subs.delete(sub);
99
+ }
100
+ }
101
+ async startNats(topic, handler) {
102
+ const cfg = this.cfg.nats;
103
+ if (!cfg || !cfg.url) {
104
+ throw new Error("nats url is required");
105
+ }
106
+ const { NatsSubscriber } = await loadRelaybusModule("@relaymesh/relaybus-nats", "relaybus nats");
107
+ const sub = await NatsSubscriber.connect({
108
+ url: cfg.url,
109
+ subjectPrefix: cfg.subjectPrefix,
110
+ maxMessages: cfg.maxMessages,
111
+ onMessage: (msg) => handler(msg),
112
+ });
113
+ this.subs.add(sub);
114
+ try {
115
+ await sub.start(topic);
116
+ }
117
+ finally {
118
+ this.subs.delete(sub);
119
+ }
120
+ }
121
+ }
122
+ class MultiSubscriber {
123
+ constructor(entries) {
124
+ this.entries = entries;
125
+ }
126
+ async start(topic, handler) {
127
+ if (!handler) {
128
+ throw new Error("handler is required");
129
+ }
130
+ await Promise.all(this.entries.map((entry) => entry.sub.start(topic, async (msg) => {
131
+ const metadata = { ...(msg.metadata ?? {}) };
132
+ metadata[MetadataKeyDriver] = entry.driver;
133
+ msg.metadata = metadata;
134
+ await handler(msg);
135
+ })));
136
+ }
137
+ async close() {
138
+ let firstError;
139
+ for (const entry of this.entries) {
140
+ try {
141
+ await entry.sub.close();
142
+ }
143
+ catch (err) {
144
+ if (!firstError) {
145
+ firstError = err instanceof Error ? err : new Error(String(err));
146
+ }
147
+ }
148
+ }
149
+ if (firstError) {
150
+ throw firstError;
151
+ }
152
+ }
153
+ }
154
+ function collectDrivers(cfg) {
155
+ const drivers = new Set();
156
+ const append = (value) => {
157
+ const normalized = (value ?? "").toLowerCase().trim();
158
+ if (normalized) {
159
+ drivers.add(normalized);
160
+ }
161
+ };
162
+ append(cfg.driver);
163
+ if (Array.isArray(cfg.drivers)) {
164
+ for (const driver of cfg.drivers) {
165
+ append(driver);
166
+ }
167
+ }
168
+ return Array.from(drivers);
169
+ }
170
+ function resolveKafkaTopic(topic, cfg) {
171
+ const prefix = cfg?.topicPrefix ?? "";
172
+ if (!prefix) {
173
+ return topic;
174
+ }
175
+ return `${prefix}${topic}`;
176
+ }
177
+ async function loadRelaybusModule(name, label) {
178
+ try {
179
+ return await import(name);
180
+ }
181
+ catch (err) {
182
+ throw new Error(`${label} package missing: npm install ${name}`);
183
+ }
184
+ }
185
+ //# sourceMappingURL=subscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriber.js","sourceRoot":"","sources":["../src/subscriber.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface RelaybusMessage {
2
+ topic?: string;
3
+ payload?: Uint8Array;
4
+ metadata?: Record<string, string>;
5
+ [key: string]: unknown;
6
+ }
7
+ export type MessageHandler = (msg: RelaybusMessage) => Promise<void> | void;
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,112 @@
1
+ import type { ClientProvider } from "./client.js";
2
+ import type { Codec } from "./codec.js";
3
+ import type { WorkerContext } from "./context.js";
4
+ import type { Event } from "./event.js";
5
+ import type { Listener } from "./listener.js";
6
+ import type { OAuth2Config } from "./oauth2.js";
7
+ import type { RetryPolicy } from "./retry.js";
8
+ import type { Subscriber } from "./subscriber.js";
9
+ export type Handler = ((ctx: WorkerContext, event: Event) => Promise<void> | void) | ((event: Event) => Promise<void> | void);
10
+ export type ContextualHandler = (ctx: WorkerContext, event: Event) => Promise<void> | void;
11
+ export type Middleware = (next: ContextualHandler) => ContextualHandler;
12
+ export interface Logger {
13
+ printf?: (format: string, ...args: unknown[]) => void;
14
+ Printf?: (format: string, ...args: unknown[]) => void;
15
+ }
16
+ export interface WorkerOptions {
17
+ subscriber?: Subscriber;
18
+ topics?: string[];
19
+ codec?: Codec;
20
+ logger?: Logger;
21
+ concurrency?: number;
22
+ middleware?: Middleware[];
23
+ retry?: RetryPolicy;
24
+ listeners?: Listener[];
25
+ clientProvider?: ClientProvider;
26
+ endpoint?: string;
27
+ apiKey?: string;
28
+ oauth2Config?: OAuth2Config;
29
+ tenantId?: string;
30
+ defaultDriverId?: string;
31
+ validateTopics?: boolean;
32
+ }
33
+ export type WorkerOption = (worker: Worker) => void;
34
+ export declare class Worker {
35
+ private readonly topicHandlers;
36
+ private readonly topicDrivers;
37
+ private readonly typeHandlers;
38
+ private readonly ruleHandlers;
39
+ private readonly allowedTopics;
40
+ private readonly driverSubs;
41
+ private readonly topics;
42
+ private subscriber?;
43
+ private codec;
44
+ private retry;
45
+ private logger;
46
+ private middleware;
47
+ private listeners;
48
+ private clientProvider?;
49
+ private semaphore;
50
+ private endpoint;
51
+ private apiKey;
52
+ private oauth2Config?;
53
+ private tenantId;
54
+ private defaultDriverId;
55
+ private validate;
56
+ constructor(opts?: WorkerOptions);
57
+ static new(...options: WorkerOption[]): Worker;
58
+ HandleTopic(topic: string, handler: Handler): void;
59
+ HandleTopic(topic: string, driverId: string, handler: Handler): void;
60
+ handleTopic(topic: string, handler: Handler): void;
61
+ handleTopic(topic: string, driverId: string, handler: Handler): void;
62
+ handleType(eventType: string, handler: Handler): void;
63
+ HandleType(eventType: string, handler: Handler): void;
64
+ handleRule(ruleId: string, handler: Handler): void;
65
+ HandleRule(ruleId: string, handler: Handler): void;
66
+ run(ctx?: WorkerContext | AbortSignal): Promise<void>;
67
+ Run(ctx?: WorkerContext | AbortSignal): Promise<void>;
68
+ close(): Promise<void>;
69
+ Close(): Promise<void>;
70
+ apply(options: WorkerOptions): void;
71
+ Apply(options: WorkerOptions): void;
72
+ private addTopics;
73
+ private runWithSubscriber;
74
+ private runDriverSubscribers;
75
+ private runTopicSubscriber;
76
+ private topicsByDriver;
77
+ private buildDriverSubscribers;
78
+ private validateTopics;
79
+ private prepareRuleSubscriptions;
80
+ private handleMessage;
81
+ private wrap;
82
+ private buildContext;
83
+ private resolveContext;
84
+ private notifyStart;
85
+ private notifyExit;
86
+ private notifyMessageStart;
87
+ private notifyMessageFinish;
88
+ private notifyError;
89
+ private driversClient;
90
+ private rulesClient;
91
+ private eventLogsClient;
92
+ private apiClientOptions;
93
+ private updateEventLogStatus;
94
+ private bindClientProvider;
95
+ }
96
+ export declare function New(...options: WorkerOption[]): Worker;
97
+ export declare function WithSubscriber(subscriber: Subscriber): WorkerOption;
98
+ export declare function WithTopics(...topics: string[]): WorkerOption;
99
+ export declare function WithConcurrency(concurrency: number): WorkerOption;
100
+ export declare function WithCodec(codec: Codec): WorkerOption;
101
+ export declare function WithMiddleware(...middleware: Middleware[]): WorkerOption;
102
+ export declare function WithRetry(retry: RetryPolicy): WorkerOption;
103
+ export declare function WithLogger(logger: Logger): WorkerOption;
104
+ export declare function WithClientProvider(clientProvider: ClientProvider): WorkerOption;
105
+ export declare function WithListener(listener: Listener): WorkerOption;
106
+ export declare function WithEndpoint(endpoint: string): WorkerOption;
107
+ export declare function WithAPIKey(apiKey: string): WorkerOption;
108
+ export declare function WithOAuth2Config(oauth2Config: OAuth2Config): WorkerOption;
109
+ export declare function WithTenant(tenantId: string): WorkerOption;
110
+ export declare function WithDefaultDriver(driverId: string): WorkerOption;
111
+ export declare function WithValidateTopics(validate: boolean): WorkerOption;
112
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}