@vibesdotdev/integrations-kafka 0.0.0-stage → 1.0.0-rc.4
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/AUDIT-CODE.md +40 -0
- package/AUDIT-SEAL.md +12 -0
- package/LICENSE +126 -0
- package/README.md +76 -2
- package/SEALED.md +13 -0
- package/dist/admin.d.ts +20 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +51 -0
- package/dist/admin.js.map +1 -0
- package/dist/auth/sasl.node.impl.d.ts +18 -0
- package/dist/auth/sasl.node.impl.d.ts.map +1 -0
- package/dist/auth/sasl.node.impl.js +62 -0
- package/dist/auth/sasl.node.impl.js.map +1 -0
- package/dist/chat/realtime-transport/host.d.ts +14 -0
- package/dist/chat/realtime-transport/host.d.ts.map +1 -0
- package/dist/chat/realtime-transport/host.js +7 -0
- package/dist/chat/realtime-transport/host.js.map +1 -0
- package/dist/chat/realtime-transport/index.d.ts +15 -0
- package/dist/chat/realtime-transport/index.d.ts.map +1 -0
- package/dist/chat/realtime-transport/index.js +13 -0
- package/dist/chat/realtime-transport/index.js.map +1 -0
- package/dist/chat/realtime-transport/lifecycle.d.ts +30 -0
- package/dist/chat/realtime-transport/lifecycle.d.ts.map +1 -0
- package/dist/chat/realtime-transport/lifecycle.js +125 -0
- package/dist/chat/realtime-transport/lifecycle.js.map +1 -0
- package/dist/chat/realtime-transport/projection.d.ts +127 -0
- package/dist/chat/realtime-transport/projection.d.ts.map +1 -0
- package/dist/chat/realtime-transport/projection.js +156 -0
- package/dist/chat/realtime-transport/projection.js.map +1 -0
- package/dist/chat/realtime-transport/sse-kafka-bridge.d.ts +32 -0
- package/dist/chat/realtime-transport/sse-kafka-bridge.d.ts.map +1 -0
- package/dist/chat/realtime-transport/sse-kafka-bridge.js +58 -0
- package/dist/chat/realtime-transport/sse-kafka-bridge.js.map +1 -0
- package/dist/chat/realtime-transport/ws-kafka-bridge.d.ts +10 -0
- package/dist/chat/realtime-transport/ws-kafka-bridge.d.ts.map +1 -0
- package/dist/chat/realtime-transport/ws-kafka-bridge.js +13 -0
- package/dist/chat/realtime-transport/ws-kafka-bridge.js.map +1 -0
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +29 -0
- package/dist/client.js.map +1 -0
- package/dist/config/kafka.config.descriptor.d.ts +109 -0
- package/dist/config/kafka.config.descriptor.d.ts.map +1 -0
- package/dist/config/kafka.config.descriptor.js +60 -0
- package/dist/config/kafka.config.descriptor.js.map +1 -0
- package/dist/connections.d.ts +27 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +20 -0
- package/dist/connections.js.map +1 -0
- package/dist/connections.node.impl.d.ts +34 -0
- package/dist/connections.node.impl.d.ts.map +1 -0
- package/dist/connections.node.impl.js +236 -0
- package/dist/connections.node.impl.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/kafka-client.node.impl.d.ts +9 -0
- package/dist/kafka-client.node.impl.d.ts.map +1 -0
- package/dist/kafka-client.node.impl.js +10 -0
- package/dist/kafka-client.node.impl.js.map +1 -0
- package/dist/kafka-connector.impl.d.ts +53 -0
- package/dist/kafka-connector.impl.d.ts.map +1 -0
- package/dist/kafka-connector.impl.js +97 -0
- package/dist/kafka-connector.impl.js.map +1 -0
- package/dist/kafka-event-adapter.descriptor.d.ts +11 -0
- package/dist/kafka-event-adapter.descriptor.d.ts.map +1 -0
- package/dist/kafka-event-adapter.descriptor.js +20 -0
- package/dist/kafka-event-adapter.descriptor.js.map +1 -0
- package/dist/kafka-event-adapter.impl.d.ts +22 -0
- package/dist/kafka-event-adapter.impl.d.ts.map +1 -0
- package/dist/kafka-event-adapter.impl.js +140 -0
- package/dist/kafka-event-adapter.impl.js.map +1 -0
- package/dist/kafka-substrate.descriptor.d.ts +4 -0
- package/dist/kafka-substrate.descriptor.d.ts.map +1 -0
- package/dist/kafka-substrate.descriptor.js +12 -0
- package/dist/kafka-substrate.descriptor.js.map +1 -0
- package/dist/kafka.d.ts +18 -0
- package/dist/kafka.d.ts.map +1 -0
- package/dist/kafka.js +23 -0
- package/dist/kafka.js.map +1 -0
- package/dist/kafka.node.plugin.d.ts +3 -0
- package/dist/kafka.node.plugin.d.ts.map +1 -0
- package/dist/kafka.node.plugin.js +66 -0
- package/dist/kafka.node.plugin.js.map +1 -0
- package/dist/kafka.plugin.d.ts +10 -0
- package/dist/kafka.plugin.d.ts.map +1 -0
- package/dist/kafka.plugin.js +28 -0
- package/dist/kafka.plugin.js.map +1 -0
- package/dist/logging/kafka.logger.descriptor.d.ts +7 -0
- package/dist/logging/kafka.logger.descriptor.d.ts.map +1 -0
- package/dist/logging/kafka.logger.descriptor.js +13 -0
- package/dist/logging/kafka.logger.descriptor.js.map +1 -0
- package/dist/message-schemas.d.ts +94 -0
- package/dist/message-schemas.d.ts.map +1 -0
- package/dist/message-schemas.js +68 -0
- package/dist/message-schemas.js.map +1 -0
- package/dist/request-queue-timeout-guard.d.ts +29 -0
- package/dist/request-queue-timeout-guard.d.ts.map +1 -0
- package/dist/request-queue-timeout-guard.js +245 -0
- package/dist/request-queue-timeout-guard.js.map +1 -0
- package/dist/schemas/contracts.d.ts +190 -0
- package/dist/schemas/contracts.d.ts.map +1 -0
- package/dist/schemas/contracts.js +85 -0
- package/dist/schemas/contracts.js.map +1 -0
- package/dist/schemas/kafka.d.ts +116 -0
- package/dist/schemas/kafka.d.ts.map +1 -0
- package/dist/schemas/kafka.js +13 -0
- package/dist/schemas/kafka.js.map +1 -0
- package/dist/schemas/realtime.d.ts +135 -0
- package/dist/schemas/realtime.d.ts.map +1 -0
- package/dist/schemas/realtime.js +44 -0
- package/dist/schemas/realtime.js.map +1 -0
- package/dist/schemas/worker-context.d.ts +14 -0
- package/dist/schemas/worker-context.d.ts.map +1 -0
- package/dist/schemas/worker-context.js +26 -0
- package/dist/schemas/worker-context.js.map +1 -0
- package/dist/topics.d.ts +85 -0
- package/dist/topics.d.ts.map +1 -0
- package/dist/topics.js +90 -0
- package/dist/topics.js.map +1 -0
- package/dist/workers/adapter/db-ops.d.ts +28 -0
- package/dist/workers/adapter/db-ops.d.ts.map +1 -0
- package/dist/workers/adapter/db-ops.js +14 -0
- package/dist/workers/adapter/db-ops.js.map +1 -0
- package/dist/workers/adapter/index.d.ts +16 -0
- package/dist/workers/adapter/index.d.ts.map +1 -0
- package/dist/workers/adapter/index.js +15 -0
- package/dist/workers/adapter/index.js.map +1 -0
- package/dist/workers/adapter/provider.d.ts +151 -0
- package/dist/workers/adapter/provider.d.ts.map +1 -0
- package/dist/workers/adapter/provider.js +654 -0
- package/dist/workers/adapter/provider.js.map +1 -0
- package/dist/workers/adapter/worker-adapter.kafka.descriptor.d.ts +36 -0
- package/dist/workers/adapter/worker-adapter.kafka.descriptor.d.ts.map +1 -0
- package/dist/workers/adapter/worker-adapter.kafka.descriptor.js +22 -0
- package/dist/workers/adapter/worker-adapter.kafka.descriptor.js.map +1 -0
- package/dist/workers/adapter/worker-adapter.kafka.impl.d.ts +36 -0
- package/dist/workers/adapter/worker-adapter.kafka.impl.d.ts.map +1 -0
- package/dist/workers/adapter/worker-adapter.kafka.impl.js +84 -0
- package/dist/workers/adapter/worker-adapter.kafka.impl.js.map +1 -0
- package/dist/workers/adapter/workers-kafka.db.context.d.ts +6 -0
- package/dist/workers/adapter/workers-kafka.db.context.d.ts.map +1 -0
- package/dist/workers/adapter/workers-kafka.db.context.descriptor.d.ts +43 -0
- package/dist/workers/adapter/workers-kafka.db.context.descriptor.d.ts.map +1 -0
- package/dist/workers/adapter/workers-kafka.db.context.descriptor.js +20 -0
- package/dist/workers/adapter/workers-kafka.db.context.descriptor.js.map +1 -0
- package/dist/workers/adapter/workers-kafka.db.context.js +5 -0
- package/dist/workers/adapter/workers-kafka.db.context.js.map +1 -0
- package/dist/workers/index.d.ts +8 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +9 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/provider-jobs.sqlite-schema.d.ts +438 -0
- package/dist/workers/provider-jobs.sqlite-schema.d.ts.map +1 -0
- package/dist/workers/provider-jobs.sqlite-schema.js +37 -0
- package/dist/workers/provider-jobs.sqlite-schema.js.map +1 -0
- package/dist/workers/shared-store.context.d.ts +25 -0
- package/dist/workers/shared-store.context.d.ts.map +1 -0
- package/dist/workers/shared-store.context.js +88 -0
- package/dist/workers/shared-store.context.js.map +1 -0
- package/dist/workers/shared-store.plugin.d.ts +8 -0
- package/dist/workers/shared-store.plugin.d.ts.map +1 -0
- package/dist/workers/shared-store.plugin.js +22 -0
- package/dist/workers/shared-store.plugin.js.map +1 -0
- package/dist/workers/workers-kafka.consumer.plugin.d.ts +4 -0
- package/dist/workers/workers-kafka.consumer.plugin.d.ts.map +1 -0
- package/dist/workers/workers-kafka.consumer.plugin.js +11 -0
- package/dist/workers/workers-kafka.consumer.plugin.js.map +1 -0
- package/dist/workers/workers-kafka.plugin.d.ts +9 -0
- package/dist/workers/workers-kafka.plugin.d.ts.map +1 -0
- package/dist/workers/workers-kafka.plugin.js +27 -0
- package/dist/workers/workers-kafka.plugin.js.map +1 -0
- package/package.json +210 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsC,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGlG,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,8EAA8E;AAC9E,MAAM,OAAgB,WAAY,SAAQ,iBAA+B;IAE/D,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEpD,UAAU,CAAC,OAAqB;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,4BAA4B,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACvJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAES,KAAK,CAAC,SAAS;QACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzH,IAAI,QAAQ,CAAC,MAAM;YAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;IACzF,CAAC;CACD;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAmB,EAAE,EAAE,CAAC,cAAc,CAAc,OAAO,EAAE,OAAO,CAAC,CAAC;AAErG,MAAM,UAAU,kBAAkB,CAAC,OAAqB;IACvD,MAAM,MAAM,GAAG,iBAAiB,CAAc,OAAO,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,8DAA8D,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAC7J,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kafka settings — the `integrations.kafka` config manifest.
|
|
3
|
+
*
|
|
4
|
+
* Non-secret connection settings. The SASL password is the `KAFKA_SASL_PASSWORD`
|
|
5
|
+
* credential. Previous env fallbacks live here as schema defaults.
|
|
6
|
+
*/
|
|
7
|
+
import * as z from 'zod/v4';
|
|
8
|
+
import { type RuntimeRef } from '@vibesdotdev/kernel';
|
|
9
|
+
export declare const KafkaSettingsSchema: z.ZodObject<{
|
|
10
|
+
brokers: z.ZodDefault<z.ZodString>;
|
|
11
|
+
ssl: z.ZodDefault<z.ZodBoolean>;
|
|
12
|
+
saslMechanism: z.ZodDefault<z.ZodEnum<{
|
|
13
|
+
plain: "plain";
|
|
14
|
+
"scram-sha-256": "scram-sha-256";
|
|
15
|
+
"scram-sha-512": "scram-sha-512";
|
|
16
|
+
}>>;
|
|
17
|
+
saslUsername: z.ZodOptional<z.ZodString>;
|
|
18
|
+
consumerGroupPrefix: z.ZodDefault<z.ZodString>;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
export type KafkaSettings = z.infer<typeof KafkaSettingsSchema>;
|
|
21
|
+
export declare const KAFKA_SETTINGS_MANIFEST_ID = "integrations.kafka";
|
|
22
|
+
export declare const kafkaSettingsManifest: {
|
|
23
|
+
id: string;
|
|
24
|
+
schema: z.ZodObject<{
|
|
25
|
+
brokers: z.ZodDefault<z.ZodString>;
|
|
26
|
+
ssl: z.ZodDefault<z.ZodBoolean>;
|
|
27
|
+
saslMechanism: z.ZodDefault<z.ZodEnum<{
|
|
28
|
+
plain: "plain";
|
|
29
|
+
"scram-sha-256": "scram-sha-256";
|
|
30
|
+
"scram-sha-512": "scram-sha-512";
|
|
31
|
+
}>>;
|
|
32
|
+
saslUsername: z.ZodOptional<z.ZodString>;
|
|
33
|
+
consumerGroupPrefix: z.ZodDefault<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
};
|
|
36
|
+
export declare function loadKafkaSettings(runtime: RuntimeRef): Promise<KafkaSettings>;
|
|
37
|
+
export declare const kafkaSettingsDescriptor: {
|
|
38
|
+
kind: "config/manifest";
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
namespace: string;
|
|
42
|
+
description: string;
|
|
43
|
+
tier: string;
|
|
44
|
+
category: string;
|
|
45
|
+
schema: z.ZodObject<{
|
|
46
|
+
brokers: z.ZodDefault<z.ZodString>;
|
|
47
|
+
ssl: z.ZodDefault<z.ZodBoolean>;
|
|
48
|
+
saslMechanism: z.ZodDefault<z.ZodEnum<{
|
|
49
|
+
plain: "plain";
|
|
50
|
+
"scram-sha-256": "scram-sha-256";
|
|
51
|
+
"scram-sha-512": "scram-sha-512";
|
|
52
|
+
}>>;
|
|
53
|
+
saslUsername: z.ZodOptional<z.ZodString>;
|
|
54
|
+
consumerGroupPrefix: z.ZodDefault<z.ZodString>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
fields: {
|
|
57
|
+
brokers: {
|
|
58
|
+
ui: {
|
|
59
|
+
label: string;
|
|
60
|
+
component: string;
|
|
61
|
+
group: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
ssl: {
|
|
65
|
+
ui: {
|
|
66
|
+
label: string;
|
|
67
|
+
component: string;
|
|
68
|
+
group: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
saslMechanism: {
|
|
72
|
+
ui: {
|
|
73
|
+
label: string;
|
|
74
|
+
component: string;
|
|
75
|
+
group: string;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
saslUsername: {
|
|
79
|
+
ui: {
|
|
80
|
+
label: string;
|
|
81
|
+
component: string;
|
|
82
|
+
group: string;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
consumerGroupPrefix: {
|
|
86
|
+
ui: {
|
|
87
|
+
label: string;
|
|
88
|
+
component: string;
|
|
89
|
+
group: string;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
groups: {
|
|
94
|
+
id: string;
|
|
95
|
+
label: string;
|
|
96
|
+
}[];
|
|
97
|
+
allowedAdapters: string[];
|
|
98
|
+
defaultAdapter: string;
|
|
99
|
+
scope: string;
|
|
100
|
+
customTables: boolean;
|
|
101
|
+
version: number;
|
|
102
|
+
internal: boolean;
|
|
103
|
+
context: {
|
|
104
|
+
surfaces: string[];
|
|
105
|
+
};
|
|
106
|
+
enabled: true;
|
|
107
|
+
};
|
|
108
|
+
export default kafkaSettingsDescriptor;
|
|
109
|
+
//# sourceMappingURL=kafka.config.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka.config.descriptor.d.ts","sourceRoot":"","sources":["../../src/config/kafka.config.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI3F,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAM9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAAkE,CAAC;AAErG,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,UAAU,GACjB,OAAO,CAAC,aAAa,CAAC,CAUxB;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlC,CAAC;AAEH,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kafka settings — the `integrations.kafka` config manifest.
|
|
3
|
+
*
|
|
4
|
+
* Non-secret connection settings. The SASL password is the `KAFKA_SASL_PASSWORD`
|
|
5
|
+
* credential. Previous env fallbacks live here as schema defaults.
|
|
6
|
+
*/
|
|
7
|
+
import * as z from 'zod/v4';
|
|
8
|
+
import { ConfigManifest } from '@vibesdotdev/config';
|
|
9
|
+
import { CapabilityError, createRuntimeAsset } from '@vibesdotdev/kernel';
|
|
10
|
+
const SASL_MECHANISMS = ['plain', 'scram-sha-256', 'scram-sha-512'];
|
|
11
|
+
export const KafkaSettingsSchema = z.object({
|
|
12
|
+
brokers: z.string().min(1).default('localhost:9092'),
|
|
13
|
+
ssl: z.boolean().default(false),
|
|
14
|
+
saslMechanism: z.enum(SASL_MECHANISMS).default('plain'),
|
|
15
|
+
saslUsername: z.string().min(1).optional(),
|
|
16
|
+
consumerGroupPrefix: z.string().min(1).default('local')
|
|
17
|
+
});
|
|
18
|
+
export const KAFKA_SETTINGS_MANIFEST_ID = 'integrations.kafka';
|
|
19
|
+
export const kafkaSettingsManifest = { id: KAFKA_SETTINGS_MANIFEST_ID, schema: KafkaSettingsSchema };
|
|
20
|
+
export async function loadKafkaSettings(runtime) {
|
|
21
|
+
if (!runtime.hasKind('config/manifest'))
|
|
22
|
+
return KafkaSettingsSchema.parse({});
|
|
23
|
+
try {
|
|
24
|
+
return await ConfigManifest.forRuntime(runtime, KAFKA_SETTINGS_MANIFEST_ID).load();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error instanceof CapabilityError && error.reason === 'config-manifest-unregistered') {
|
|
28
|
+
return KafkaSettingsSchema.parse({});
|
|
29
|
+
}
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const kafkaSettingsDescriptor = createRuntimeAsset({
|
|
34
|
+
kind: 'config/manifest',
|
|
35
|
+
id: KAFKA_SETTINGS_MANIFEST_ID,
|
|
36
|
+
name: 'Kafka',
|
|
37
|
+
namespace: 'integrations',
|
|
38
|
+
description: 'Kafka broker and consumer-group settings (the SASL password is the KAFKA_SASL_PASSWORD secret)',
|
|
39
|
+
tier: 'user',
|
|
40
|
+
category: 'integrations',
|
|
41
|
+
schema: KafkaSettingsSchema,
|
|
42
|
+
fields: {
|
|
43
|
+
brokers: { ui: { label: 'Brokers', component: 'text', group: 'kafka' } },
|
|
44
|
+
ssl: { ui: { label: 'TLS', component: 'switch', group: 'kafka' } },
|
|
45
|
+
saslMechanism: { ui: { label: 'SASL mechanism', component: 'select', group: 'kafka' } },
|
|
46
|
+
saslUsername: { ui: { label: 'SASL username', component: 'text', group: 'kafka' } },
|
|
47
|
+
consumerGroupPrefix: { ui: { label: 'Consumer-group prefix', component: 'text', group: 'kafka' } }
|
|
48
|
+
},
|
|
49
|
+
groups: [{ id: 'kafka', label: 'Kafka' }],
|
|
50
|
+
allowedAdapters: ['storage.localdb', 'storage.json'],
|
|
51
|
+
defaultAdapter: 'storage.localdb',
|
|
52
|
+
scope: 'auto',
|
|
53
|
+
customTables: false,
|
|
54
|
+
version: 1,
|
|
55
|
+
internal: false,
|
|
56
|
+
context: { surfaces: ['cli', 'tui'] },
|
|
57
|
+
enabled: true
|
|
58
|
+
});
|
|
59
|
+
export default kafkaSettingsDescriptor;
|
|
60
|
+
//# sourceMappingURL=kafka.config.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka.config.descriptor.js","sourceRoot":"","sources":["../../src/config/kafka.config.descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { VibesRuntime } from '@vibesdotdev/kernel';
|
|
2
|
+
export { KafkaConnectionPurpose } from './schemas/contracts.ts';
|
|
3
|
+
export type { KafkaConnections } from './connections.node.impl.ts';
|
|
4
|
+
export type { Consumer as KafkaConsumer, Producer as KafkaProducer, Admin as KafkaAdmin, KafkaMessage } from 'kafkajs';
|
|
5
|
+
/** Synchronous compatibility accessor after Node plugin activation. */
|
|
6
|
+
export declare function getKafkaConnections(runtime: VibesRuntime): import("./connections.node.impl.ts").KafkaConnections;
|
|
7
|
+
export declare const kafkaChat: (runtime: VibesRuntime) => {
|
|
8
|
+
producer: () => Promise<import("kafkajs").Producer | null>;
|
|
9
|
+
consumer: () => Promise<import("kafkajs").Consumer | null>;
|
|
10
|
+
admin: () => Promise<import("kafkajs").Admin | null>;
|
|
11
|
+
};
|
|
12
|
+
export declare const kafkaWorkers: (runtime: VibesRuntime) => {
|
|
13
|
+
producer: () => Promise<import("kafkajs").Producer | null>;
|
|
14
|
+
consumer: () => Promise<import("kafkajs").Consumer | null>;
|
|
15
|
+
admin: () => Promise<import("kafkajs").Admin | null>;
|
|
16
|
+
};
|
|
17
|
+
export declare const kafkaBenchmarks: (runtime: VibesRuntime) => {
|
|
18
|
+
producer: () => Promise<import("kafkajs").Producer | null>;
|
|
19
|
+
consumer: () => Promise<import("kafkajs").Consumer | null>;
|
|
20
|
+
admin: () => Promise<import("kafkajs").Admin | null>;
|
|
21
|
+
};
|
|
22
|
+
export declare const kafkaAnalytics: (runtime: VibesRuntime) => {
|
|
23
|
+
producer: () => Promise<import("kafkajs").Producer | null>;
|
|
24
|
+
consumer: () => Promise<import("kafkajs").Consumer | null>;
|
|
25
|
+
admin: () => Promise<import("kafkajs").Admin | null>;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=connections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,QAAQ,IAAI,aAAa,EAAE,QAAQ,IAAI,aAAa,EAAE,KAAK,IAAI,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvH,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,yDAExD;AAWD,eAAO,MAAM,SAAS,GAAI,SAAS,YAAY;;;;CAA2D,CAAC;AAC3G,eAAO,MAAM,YAAY,GAAI,SAAS,YAAY;;;;CAA8D,CAAC;AACjH,eAAO,MAAM,eAAe,GAAI,SAAS,YAAY;;;;CAAiE,CAAC;AACvH,eAAO,MAAM,cAAc,GAAI,SAAS,YAAY;;;;CAAgE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { requireKafkaClient } from "./client.js";
|
|
2
|
+
import { KafkaConnectionPurpose } from "./schemas/contracts.js";
|
|
3
|
+
export { KafkaConnectionPurpose } from "./schemas/contracts.js";
|
|
4
|
+
/** Synchronous compatibility accessor after Node plugin activation. */
|
|
5
|
+
export function getKafkaConnections(runtime) {
|
|
6
|
+
return requireKafkaClient(runtime).connections;
|
|
7
|
+
}
|
|
8
|
+
function purposeAccessors(runtime, purpose) {
|
|
9
|
+
const connections = getKafkaConnections(runtime);
|
|
10
|
+
return {
|
|
11
|
+
producer: () => connections.getProducer(purpose),
|
|
12
|
+
consumer: () => connections.getConsumer(purpose),
|
|
13
|
+
admin: () => connections.getAdmin(purpose)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export const kafkaChat = (runtime) => purposeAccessors(runtime, KafkaConnectionPurpose.CHAT);
|
|
17
|
+
export const kafkaWorkers = (runtime) => purposeAccessors(runtime, KafkaConnectionPurpose.WORKERS);
|
|
18
|
+
export const kafkaBenchmarks = (runtime) => purposeAccessors(runtime, KafkaConnectionPurpose.BENCHMARKS);
|
|
19
|
+
export const kafkaAnalytics = (runtime) => purposeAccessors(runtime, KafkaConnectionPurpose.ANALYTICS);
|
|
20
|
+
//# sourceMappingURL=connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACxD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;AAChD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB,EAAE,OAA+B;IAC/E,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO;QACN,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;QAChD,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;QAChD,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAqB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC3G,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAqB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACjH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAqB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACvH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAqB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type Producer, type Consumer, type Admin } from 'kafkajs';
|
|
2
|
+
import { type VibesRuntime } from '@vibesdotdev/kernel';
|
|
3
|
+
import { KafkaConnectionPurpose, type KafkaCustomConsumerOptions } from './schemas/contracts.ts';
|
|
4
|
+
/** Vendor resources belong to the registered Kafka client, never an ambient cache. */
|
|
5
|
+
export declare class KafkaConnections {
|
|
6
|
+
#private;
|
|
7
|
+
private readonly runtime;
|
|
8
|
+
private readonly producers;
|
|
9
|
+
private readonly consumers;
|
|
10
|
+
private readonly admins;
|
|
11
|
+
private readonly custom;
|
|
12
|
+
private readonly pending;
|
|
13
|
+
private closed;
|
|
14
|
+
private closing?;
|
|
15
|
+
private readonly ensureGuard;
|
|
16
|
+
constructor(runtime: VibesRuntime);
|
|
17
|
+
/** The lifecycle surface stamped on this runtime's vendor clients' request queues. */
|
|
18
|
+
private get timerOwner();
|
|
19
|
+
/** Vendor client options: the SASL layer is present only when a credential resolved. */
|
|
20
|
+
private clientOptions;
|
|
21
|
+
private get building();
|
|
22
|
+
private assertNotBuildScope;
|
|
23
|
+
private assertOpen;
|
|
24
|
+
private track;
|
|
25
|
+
getProducer(purpose: KafkaConnectionPurpose): Promise<Producer | null>;
|
|
26
|
+
getConsumer(purpose: KafkaConnectionPurpose): Promise<Consumer | null>;
|
|
27
|
+
getAdmin(purpose: KafkaConnectionPurpose): Promise<Admin | null>;
|
|
28
|
+
createCustomConsumer(purpose: KafkaConnectionPurpose, groupId: string, options?: KafkaCustomConsumerOptions): Promise<Consumer | null>;
|
|
29
|
+
releaseCustomConsumer(consumer: Consumer): Promise<void>;
|
|
30
|
+
disconnect(purpose: KafkaConnectionPurpose): Promise<void>;
|
|
31
|
+
disconnectAll(): Promise<void>;
|
|
32
|
+
dispose(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=connections.node.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.node.impl.d.ts","sourceRoot":"","sources":["../src/connections.node.impl.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAqB,MAAM,SAAS,CAAC;AAC/F,OAAO,EAA0D,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIhH,OAAO,EAAE,sBAAsB,EAAwD,KAAK,0BAA0B,EAA0B,MAAM,wBAAwB,CAAC;AA+B/K,sFAAsF;AACtF,qBAAa,gBAAgB;;IAWhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwD;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwD;IAClF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqD;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0D;IAClF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;gBAErB,OAAO,EAAE,YAAY;IAOlD,sFAAsF;IACtF,OAAO,KAAK,UAAU,GAKrB;IAED,wFAAwF;IACxF,OAAO,CAAC,aAAa;IAoBrB,OAAO,KAAK,QAAQ,GAA+D;IAEnF,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,KAAK;IA2Cb,WAAW,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAQtE,WAAW,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAStE,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIhE,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA6BhI,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxD,UAAU,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB1D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIxB"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import kafkajs, {} from 'kafkajs';
|
|
2
|
+
import { CapabilityError, CaughtFailureSchema, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
3
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
4
|
+
import { readKafkaBaseConfig } from "./kafka.js";
|
|
5
|
+
import { createAuthenticatedKafka } from "./auth/sasl.node.impl.js";
|
|
6
|
+
import { KafkaConnectionPurpose, KafkaPurposeSchema, KafkaCustomConsumerOptionsSchema } from "./schemas/contracts.js";
|
|
7
|
+
import { createKafkaRequestQueueTimeoutGuard } from "./request-queue-timeout-guard.js";
|
|
8
|
+
const { Kafka, Partitioners } = kafkajs;
|
|
9
|
+
/**
|
|
10
|
+
* The retry policy a purpose's client uses. Benchmarks retry with kafkajs's own
|
|
11
|
+
* defaults, so no policy is declared for it.
|
|
12
|
+
*/
|
|
13
|
+
function kafkaRetryPolicy(purpose) {
|
|
14
|
+
if (purpose === KafkaConnectionPurpose.WORKERS)
|
|
15
|
+
return { retries: 10, initialRetryTime: 300, maxRetryTime: 60000 };
|
|
16
|
+
if (purpose === KafkaConnectionPurpose.ANALYTICS)
|
|
17
|
+
return { retries: 3, initialRetryTime: 100, maxRetryTime: 10000 };
|
|
18
|
+
if (purpose === KafkaConnectionPurpose.BENCHMARKS)
|
|
19
|
+
return undefined;
|
|
20
|
+
return { retries: 5, initialRetryTime: 100, maxRetryTime: 30000 };
|
|
21
|
+
}
|
|
22
|
+
/** Vendor resources belong to the registered Kafka client, never an ambient cache. */
|
|
23
|
+
export class KafkaConnections {
|
|
24
|
+
runtime;
|
|
25
|
+
#sets = new Map();
|
|
26
|
+
producers = new Map();
|
|
27
|
+
consumers = new Map();
|
|
28
|
+
admins = new Map();
|
|
29
|
+
custom = new Map();
|
|
30
|
+
pending = new Set();
|
|
31
|
+
closed = false;
|
|
32
|
+
closing;
|
|
33
|
+
ensureGuard;
|
|
34
|
+
constructor(runtime) {
|
|
35
|
+
this.runtime = runtime;
|
|
36
|
+
this.ensureGuard = createKafkaRequestQueueTimeoutGuard({
|
|
37
|
+
building: () => this.building,
|
|
38
|
+
logger: getLogger('kafka', runtime).child('connections')
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** The lifecycle surface stamped on this runtime's vendor clients' request queues. */
|
|
42
|
+
get timerOwner() {
|
|
43
|
+
return {
|
|
44
|
+
signal: this.runtime.lifecycle.signal,
|
|
45
|
+
timeout: this.runtime.lifecycle.timeout.bind(this.runtime.lifecycle)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Vendor client options: the SASL layer is present only when a credential resolved. */
|
|
49
|
+
clientOptions(purpose) {
|
|
50
|
+
const options = {
|
|
51
|
+
clientId: `vibes-${purpose}-producer`,
|
|
52
|
+
connectionTimeout: 10000,
|
|
53
|
+
requestTimeout: 30000
|
|
54
|
+
};
|
|
55
|
+
const retry = kafkaRetryPolicy(purpose);
|
|
56
|
+
if (retry)
|
|
57
|
+
options.retry = retry;
|
|
58
|
+
return options;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The vendor client for a purpose, with its request queues armed on this runtime.
|
|
62
|
+
* The guard arms the facade in place, so the object returned here is the one this
|
|
63
|
+
* runtime opens its producers, consumers and admins through.
|
|
64
|
+
*/
|
|
65
|
+
async #createClient(config, purpose) {
|
|
66
|
+
return createAuthenticatedKafka(this.runtime, config, this.clientOptions(purpose), this.timerOwner);
|
|
67
|
+
}
|
|
68
|
+
get building() { return this.runtime.scope.qualifiers?.building === true; }
|
|
69
|
+
assertNotBuildScope() {
|
|
70
|
+
if (this.building) {
|
|
71
|
+
throw new CapabilityError('Kafka resources are unavailable in build scope.', 'UNAVAILABLE', { reason: 'kafka-build-scope' });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
assertOpen() {
|
|
75
|
+
if (this.closed || this.runtime.lifecycle.signal.aborted)
|
|
76
|
+
throw new CapabilityError('Kafka client is disposed.', 'UNAVAILABLE', { reason: 'kafka-client-disposed' });
|
|
77
|
+
}
|
|
78
|
+
/** The runtime's vendor client for a purpose, created once and reused. */
|
|
79
|
+
async #kafka(purpose) {
|
|
80
|
+
const parsed = KafkaPurposeSchema.safeParse(purpose);
|
|
81
|
+
if (!parsed.success)
|
|
82
|
+
throw new CapabilityError('Invalid Kafka connection purpose.', 'INVALID_INPUT', { reason: 'kafka-purpose-invalid' });
|
|
83
|
+
let pending = this.#sets.get(purpose);
|
|
84
|
+
if (!pending) {
|
|
85
|
+
const creating = readKafkaBaseConfig(this.runtime)
|
|
86
|
+
.then(config => this.#createClient(config, purpose));
|
|
87
|
+
pending = creating;
|
|
88
|
+
this.#sets.set(purpose, creating);
|
|
89
|
+
void Promise.allSettled([creating]).then(([outcome]) => {
|
|
90
|
+
if (outcome?.status === 'rejected')
|
|
91
|
+
this.#sets.delete(purpose);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return pending;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The kafkajs facade behind a purpose's client. The guard armed the queues behind
|
|
98
|
+
* it; producers, consumers and admins are built from the facade itself.
|
|
99
|
+
*/
|
|
100
|
+
#facade(purpose) {
|
|
101
|
+
return this.#kafka(purpose);
|
|
102
|
+
}
|
|
103
|
+
track(operation) {
|
|
104
|
+
const pending = Promise.resolve().then(() => {
|
|
105
|
+
this.assertOpen();
|
|
106
|
+
return operation();
|
|
107
|
+
});
|
|
108
|
+
this.pending.add(pending);
|
|
109
|
+
void Promise.allSettled([pending]).then(() => { this.pending.delete(pending); });
|
|
110
|
+
return pending;
|
|
111
|
+
}
|
|
112
|
+
async #acquire(purpose, cache, create) {
|
|
113
|
+
this.assertNotBuildScope();
|
|
114
|
+
await this.ensureGuard();
|
|
115
|
+
let pending = cache.get(purpose);
|
|
116
|
+
if (!pending) {
|
|
117
|
+
pending = (async () => {
|
|
118
|
+
const client = create(await this.#facade(purpose));
|
|
119
|
+
try {
|
|
120
|
+
await client.connect();
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
const cleanup = await Promise.allSettled([client.disconnect()]);
|
|
124
|
+
throw new CapabilityError('Kafka connection operation failed.', 'UNAVAILABLE', {
|
|
125
|
+
reason: 'kafka-connection-failed',
|
|
126
|
+
details: {
|
|
127
|
+
purpose,
|
|
128
|
+
failure: valueFreeFailure(CaughtFailureSchema.parse(error)),
|
|
129
|
+
cleanupFailures: cleanup.flatMap(result => result.status === 'rejected' ? [valueFreeFailure(CaughtFailureSchema.parse(result.reason))] : [])
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return client;
|
|
134
|
+
})();
|
|
135
|
+
cache.set(purpose, pending);
|
|
136
|
+
void Promise.allSettled([pending]).then(([outcome]) => {
|
|
137
|
+
if (outcome?.status === 'rejected' && cache.get(purpose) === pending)
|
|
138
|
+
cache.delete(purpose);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return pending;
|
|
142
|
+
}
|
|
143
|
+
getProducer(purpose) {
|
|
144
|
+
return this.track(() => this.#acquire(purpose, this.producers, kafka => {
|
|
145
|
+
const producer = kafka.producer({ createPartitioner: Partitioners.LegacyPartitioner, maxInFlightRequests: 10 });
|
|
146
|
+
producer.on(producer.events.DISCONNECT, () => { this.producers.delete(purpose); });
|
|
147
|
+
return producer;
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
getConsumer(purpose) {
|
|
151
|
+
return this.track(() => this.#acquire(purpose, this.consumers, kafka => kafka.consumer({
|
|
152
|
+
groupId: `vibes-${purpose}-group`,
|
|
153
|
+
sessionTimeout: purpose === KafkaConnectionPurpose.WORKERS ? 60000 : 30000,
|
|
154
|
+
heartbeatInterval: purpose === KafkaConnectionPurpose.WORKERS ? 5000 : 3000,
|
|
155
|
+
maxInFlightRequests: purpose === KafkaConnectionPurpose.ANALYTICS ? 10 : 5
|
|
156
|
+
})));
|
|
157
|
+
}
|
|
158
|
+
getAdmin(purpose) {
|
|
159
|
+
return this.track(() => this.#acquire(purpose, this.admins, kafka => kafka.admin()));
|
|
160
|
+
}
|
|
161
|
+
createCustomConsumer(purpose, groupId, options) {
|
|
162
|
+
return this.track(async () => {
|
|
163
|
+
this.assertNotBuildScope();
|
|
164
|
+
const parsed = KafkaCustomConsumerOptionsSchema.safeParse(options ?? {});
|
|
165
|
+
if (!parsed.success || !groupId.trim())
|
|
166
|
+
throw new CapabilityError('Invalid Kafka consumer options.', 'INVALID_INPUT', { reason: 'kafka-consumer-options-invalid' });
|
|
167
|
+
await this.ensureGuard();
|
|
168
|
+
const consumer = (await this.#facade(purpose)).consumer({ groupId, ...parsed.data });
|
|
169
|
+
this.custom.set(consumer, purpose);
|
|
170
|
+
try {
|
|
171
|
+
await consumer.connect();
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const failure = valueFreeFailure(CaughtFailureSchema.parse(error));
|
|
175
|
+
this.custom.delete(consumer);
|
|
176
|
+
const cleanup = [
|
|
177
|
+
...await Promise.allSettled([consumer.stop()]),
|
|
178
|
+
...await Promise.allSettled([consumer.disconnect()])
|
|
179
|
+
];
|
|
180
|
+
throw new CapabilityError('Kafka connection operation failed.', 'UNAVAILABLE', {
|
|
181
|
+
reason: 'kafka-connection-failed',
|
|
182
|
+
details: {
|
|
183
|
+
purpose, failure,
|
|
184
|
+
cleanupFailures: cleanup.flatMap(result => result.status === 'rejected'
|
|
185
|
+
? [valueFreeFailure(CaughtFailureSchema.parse(result.reason))] : [])
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return consumer;
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
async releaseCustomConsumer(consumer) {
|
|
193
|
+
if (!this.custom.delete(consumer))
|
|
194
|
+
return;
|
|
195
|
+
const outcomes = [
|
|
196
|
+
...await Promise.allSettled([consumer.stop()]),
|
|
197
|
+
...await Promise.allSettled([consumer.disconnect()])
|
|
198
|
+
];
|
|
199
|
+
const failures = outcomes.flatMap(outcome => outcome.status === 'rejected' ? [outcome.reason] : []);
|
|
200
|
+
if (failures.length === 1)
|
|
201
|
+
throw failures[0];
|
|
202
|
+
if (failures.length)
|
|
203
|
+
throw new AggregateError(failures, 'Kafka consumer cleanup failed');
|
|
204
|
+
}
|
|
205
|
+
async disconnect(purpose) {
|
|
206
|
+
await Promise.allSettled(this.pending);
|
|
207
|
+
const releases = [];
|
|
208
|
+
for (const cache of [this.producers, this.consumers, this.admins]) {
|
|
209
|
+
const pending = cache.get(purpose);
|
|
210
|
+
cache.delete(purpose);
|
|
211
|
+
if (pending)
|
|
212
|
+
releases.push(pending.then(client => client.disconnect()));
|
|
213
|
+
}
|
|
214
|
+
for (const [consumer, ownedPurpose] of this.custom) {
|
|
215
|
+
if (purpose === ownedPurpose)
|
|
216
|
+
releases.push(this.releaseCustomConsumer(consumer));
|
|
217
|
+
}
|
|
218
|
+
this.#sets.delete(purpose);
|
|
219
|
+
const outcomes = await Promise.allSettled(releases);
|
|
220
|
+
const failures = outcomes.flatMap(outcome => outcome.status === 'rejected' ? [outcome.reason] : []);
|
|
221
|
+
if (failures.length)
|
|
222
|
+
throw new AggregateError(failures, 'Kafka purpose cleanup failed');
|
|
223
|
+
}
|
|
224
|
+
async disconnectAll() {
|
|
225
|
+
await Promise.allSettled(this.pending);
|
|
226
|
+
const outcomes = await Promise.allSettled(Array.from(this.#sets.keys(), purpose => this.disconnect(purpose)));
|
|
227
|
+
const failures = outcomes.flatMap(outcome => outcome.status === 'rejected' ? [outcome.reason] : []);
|
|
228
|
+
if (failures.length)
|
|
229
|
+
throw new AggregateError(failures, 'Kafka connection cleanup failed');
|
|
230
|
+
}
|
|
231
|
+
dispose() {
|
|
232
|
+
this.closed = true;
|
|
233
|
+
return this.closing ??= this.disconnectAll();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=connections.node.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.node.impl.js","sourceRoot":"","sources":["../src/connections.node.impl.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrations Kafka
|
|
3
|
+
*
|
|
4
|
+
* Kafka messaging substrate providing producer, consumer, and admin sub-connectors
|
|
5
|
+
* following the integration substrate contract (integration/substrate +
|
|
6
|
+
* integration/provider kinds).
|
|
7
|
+
*
|
|
8
|
+
* Also provides domain-specific topic definitions, connection purposes, and event adapter
|
|
9
|
+
* for vibes ecosystem consumers.
|
|
10
|
+
*/
|
|
11
|
+
export { getKafkaClient, type KafkaClient } from './client.ts';
|
|
12
|
+
export type { KafkaConnectorConfig, ResolvedKafkaConnectorConfig } from './schemas/contracts.ts';
|
|
13
|
+
export { KafkaConnectorConfigSchema, KafkaAdapterOptionsSchema, KafkaEventEnvelopeSchema } from './schemas/contracts.ts';
|
|
14
|
+
export { default as kafkaSubstrateDescriptor } from './kafka-substrate.descriptor.ts';
|
|
15
|
+
export { default as kafkaEventAdapterDescriptor } from './kafka-event-adapter.descriptor.ts';
|
|
16
|
+
export { getKafkaConnections, kafkaChat, kafkaWorkers, kafkaBenchmarks, kafkaAnalytics, KafkaConnectionPurpose, type KafkaConsumer, type KafkaProducer, type KafkaMessage } from './connections.ts';
|
|
17
|
+
export { getKafkaAdmin } from './admin.ts';
|
|
18
|
+
export { readKafkaBaseConfig, readKafkaConsumerGroupPrefix } from './kafka.ts';
|
|
19
|
+
export { kafkaSettingsDescriptor, KAFKA_SETTINGS_MANIFEST_ID, KafkaSettingsSchema, loadKafkaSettings, type KafkaSettings } from './config/kafka.config.descriptor.ts';
|
|
20
|
+
export { KAFKA_TOPICS, topicConfigurationsSchema, type KafkaTopic, type TopicConfigurations } from './topics.ts';
|
|
21
|
+
export { kafkaMessageSchema, kafkaProducerConfigSchema, kafkaConsumerConfigSchema, kafkaTopicConfigSchema, kafkaProducerRecordSchema, type KafkaMessageEnvelope, type KafkaProducerConfig, type KafkaConsumerConfig, type KafkaTopicConfig, type KafkaProducerRecord } from './message-schemas.ts';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGzH,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAG7F,OAAO,EACN,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EACN,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,aAAa,EAClB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACN,YAAY,EACZ,yBAAyB,EACzB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrations Kafka
|
|
3
|
+
*
|
|
4
|
+
* Kafka messaging substrate providing producer, consumer, and admin sub-connectors
|
|
5
|
+
* following the integration substrate contract (integration/substrate +
|
|
6
|
+
* integration/provider kinds).
|
|
7
|
+
*
|
|
8
|
+
* Also provides domain-specific topic definitions, connection purposes, and event adapter
|
|
9
|
+
* for vibes ecosystem consumers.
|
|
10
|
+
*/
|
|
11
|
+
export { getKafkaClient } from "./client.js";
|
|
12
|
+
export { KafkaConnectorConfigSchema, KafkaAdapterOptionsSchema, KafkaEventEnvelopeSchema } from "./schemas/contracts.js";
|
|
13
|
+
// Substrate descriptor
|
|
14
|
+
export { default as kafkaSubstrateDescriptor } from "./kafka-substrate.descriptor.js";
|
|
15
|
+
export { default as kafkaEventAdapterDescriptor } from "./kafka-event-adapter.descriptor.js";
|
|
16
|
+
// Connection management and admin
|
|
17
|
+
export { getKafkaConnections, kafkaChat, kafkaWorkers, kafkaBenchmarks, kafkaAnalytics, KafkaConnectionPurpose } from "./connections.js";
|
|
18
|
+
export { getKafkaAdmin } from "./admin.js";
|
|
19
|
+
export { readKafkaBaseConfig, readKafkaConsumerGroupPrefix } from "./kafka.js";
|
|
20
|
+
export { kafkaSettingsDescriptor, KAFKA_SETTINGS_MANIFEST_ID, KafkaSettingsSchema, loadKafkaSettings } from "./config/kafka.config.descriptor.js";
|
|
21
|
+
// Topic & wire format schemas
|
|
22
|
+
export { KAFKA_TOPICS, topicConfigurationsSchema } from "./topics.js";
|
|
23
|
+
export { kafkaMessageSchema, kafkaProducerConfigSchema, kafkaConsumerConfigSchema, kafkaTopicConfigSchema, kafkaProducerRecordSchema } from "./message-schemas.js";
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEzH,uBAAuB;AACvB,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAE7F,kCAAkC;AAClC,OAAO,EACN,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,sBAAsB,EAItB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EACN,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,EAEjB,MAAM,qCAAqC,CAAC;AAE7C,8BAA8B;AAC9B,OAAO,EACN,YAAY,EACZ,yBAAyB,EAGzB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EAMzB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KindContext, VibesRuntime } from '@vibesdotdev/kernel';
|
|
2
|
+
import type { RuntimeClientDescriptor } from '@vibesdotdev/kernel/client';
|
|
3
|
+
import { KafkaClient } from './client.ts';
|
|
4
|
+
import { KafkaConnections } from './connections.node.impl.ts';
|
|
5
|
+
export declare class NodeKafkaClient extends KafkaClient {
|
|
6
|
+
readonly connections: KafkaConnections;
|
|
7
|
+
constructor(descriptor: RuntimeClientDescriptor, context: KindContext<VibesRuntime>);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=kafka-client.node.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka-client.node.impl.d.ts","sourceRoot":"","sources":["../src/kafka-client.node.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,qBAAa,eAAgB,SAAQ,WAAW;IAC/C,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;gBAC3B,UAAU,EAAE,uBAAuB,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC;CAInF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { KafkaClient } from "./client.js";
|
|
2
|
+
import { KafkaConnections } from "./connections.node.impl.js";
|
|
3
|
+
export class NodeKafkaClient extends KafkaClient {
|
|
4
|
+
connections;
|
|
5
|
+
constructor(descriptor, context) {
|
|
6
|
+
super(descriptor, context);
|
|
7
|
+
this.connections = new KafkaConnections(this.runtime);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=kafka-client.node.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka-client.node.impl.js","sourceRoot":"","sources":["../src/kafka-client.node.impl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACtC,WAAW,CAAmB;IACvC,YAAY,UAAmC,EAAE,OAAkC;QAClF,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;CACD"}
|