@drarzter/kafka-client 0.10.0 → 0.11.0
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/README.md +70 -2
- package/dist/{chunk-CMO7SMVK.mjs → chunk-OR7TPAAE.mjs} +110 -164
- package/dist/chunk-OR7TPAAE.mjs.map +1 -0
- package/dist/chunk-PQVBRDNV.mjs +149 -0
- package/dist/chunk-PQVBRDNV.mjs.map +1 -0
- package/dist/cli/index.js +115 -51
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +2 -1
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/kafka.client/consumer/features/delayed.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/features/dlq-replay.d.ts +1 -1
- package/dist/client/kafka.client/consumer/features/dlq-replay.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/features/snapshot.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/handler.d.ts +16 -2
- package/dist/client/kafka.client/consumer/handler.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/ops.d.ts +13 -0
- package/dist/client/kafka.client/consumer/ops.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/pipeline.d.ts +14 -13
- package/dist/client/kafka.client/consumer/pipeline.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/retry-topic.d.ts +4 -1
- package/dist/client/kafka.client/consumer/retry-topic.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/setup.d.ts +3 -0
- package/dist/client/kafka.client/consumer/setup.d.ts.map +1 -1
- package/dist/client/kafka.client/consumer/start.d.ts.map +1 -1
- package/dist/client/kafka.client/context.d.ts +3 -0
- package/dist/client/kafka.client/context.d.ts.map +1 -1
- package/dist/client/kafka.client/index.d.ts.map +1 -1
- package/dist/client/kafka.client/producer/ops.d.ts +12 -3
- package/dist/client/kafka.client/producer/ops.d.ts.map +1 -1
- package/dist/client/kafka.client/producer/send.d.ts +1 -1
- package/dist/client/message/schema-registry.d.ts +23 -4
- package/dist/client/message/schema-registry.d.ts.map +1 -1
- package/dist/client/message/serde.d.ts +68 -0
- package/dist/client/message/serde.d.ts.map +1 -0
- package/dist/client/message/topic.d.ts +25 -4
- package/dist/client/message/topic.d.ts.map +1 -1
- package/dist/client/transport/transport.interface.d.ts +6 -1
- package/dist/client/transport/transport.interface.d.ts.map +1 -1
- package/dist/client/types/config.types.d.ts +17 -0
- package/dist/client/types/config.types.d.ts.map +1 -1
- package/dist/core.d.ts +3 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +146 -55
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +9 -3
- package/dist/index.js +146 -55
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -3
- package/dist/index.mjs.map +1 -1
- package/dist/serde.d.ts +157 -0
- package/dist/serde.d.ts.map +1 -0
- package/dist/serde.js +308 -0
- package/dist/serde.js.map +1 -0
- package/dist/serde.mjs +158 -0
- package/dist/serde.mjs.map +1 -0
- package/package.json +20 -1
- package/dist/chunk-CMO7SMVK.mjs.map +0 -1
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { SchemaLike, SchemaParseContext } from "../../message/topic";
|
|
2
|
+
import type { MessageSerde } from "../../message/serde";
|
|
2
3
|
import type { BatchMessageItem, CompressionType, KafkaInstrumentation, KafkaLogger, MessageHeaders } from "../../types";
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the serde to use for a topic: the per-topic override
|
|
6
|
+
* (`TopicDescriptor.__serde`) if present, otherwise the client-wide default.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveSerde(topicOrDesc: any, clientSerde: MessageSerde): MessageSerde;
|
|
3
9
|
/**
|
|
4
10
|
* Extract the plain topic name string from either a `TopicDescriptor` object or a raw string.
|
|
5
11
|
* Falls back to `String(topicOrDescriptor)` for any other value.
|
|
@@ -39,6 +45,8 @@ export type BuildSendPayloadDeps = {
|
|
|
39
45
|
strictSchemasEnabled: boolean;
|
|
40
46
|
instrumentation: KafkaInstrumentation[];
|
|
41
47
|
logger: KafkaLogger;
|
|
48
|
+
/** Client-wide serde; a per-topic `TopicDescriptor.__serde` overrides it. */
|
|
49
|
+
serde: MessageSerde;
|
|
42
50
|
/** Called once per message to get the next Lamport clock value. Omit to disable clock stamping. */
|
|
43
51
|
nextLamportClock?: () => number;
|
|
44
52
|
};
|
|
@@ -50,11 +58,12 @@ export type BuildSendPayloadDeps = {
|
|
|
50
58
|
* 2. Stamps the Lamport clock header when `deps.nextLamportClock` is provided.
|
|
51
59
|
* 3. Calls `beforeSend` instrumentation hooks so tracing can inject `traceparent` etc.
|
|
52
60
|
* 4. Validates the payload against the attached or registry schema.
|
|
53
|
-
* 5.
|
|
61
|
+
* 5. Serialises the validated value via the resolved serde (per-topic override
|
|
62
|
+
* or the client-wide default; `JsonSerde` by default).
|
|
54
63
|
*
|
|
55
64
|
* @param topicOrDesc Topic descriptor or plain topic name string.
|
|
56
65
|
* @param messages Array of outgoing messages with optional key, headers, and metadata.
|
|
57
|
-
* @param deps Schema registry, strict-mode flag, instrumentation hooks, and Lamport clock factory.
|
|
66
|
+
* @param deps Schema registry, strict-mode flag, instrumentation hooks, serde, and Lamport clock factory.
|
|
58
67
|
* @param compression Optional compression codec to include in the returned payload object.
|
|
59
68
|
* @returns Kafka producer `send()` payload — `{ topic, messages, compression? }`.
|
|
60
69
|
*/
|
|
@@ -62,7 +71,7 @@ export declare function buildSendPayload(topicOrDesc: any, messages: Array<Batch
|
|
|
62
71
|
topic: string;
|
|
63
72
|
compression?: CompressionType;
|
|
64
73
|
messages: Array<{
|
|
65
|
-
value: string;
|
|
74
|
+
value: string | Buffer;
|
|
66
75
|
key: string | null;
|
|
67
76
|
headers: MessageHeaders;
|
|
68
77
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../../../src/client/kafka.client/producer/ops.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,EACf,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAUnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,MAAM,CAAC,EAAE,WAAW,GACnB,IAAI,CAYN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE;IACJ,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,oBAAoB,EAAE,OAAO,CAAC;CAC/B,EACD,GAAG,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,GAAG,CAAC,CAwBd;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../../../src/client/kafka.client/producer/ops.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,EACf,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,GAAG,EAChB,WAAW,EAAE,YAAY,GACxB,YAAY,CAEd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAUnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,MAAM,CAAC,EAAE,WAAW,GACnB,IAAI,CAYN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE;IACJ,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,oBAAoB,EAAE,OAAO,CAAC;CAC/B,EACD,GAAG,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,GAAG,CAAC,CAwBd;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,6EAA6E;IAC7E,KAAK,EAAE,YAAY,CAAC;IACpB,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,GAAG,EAChB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EACtC,IAAI,EAAE,oBAAoB,EAC1B,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,EAAE,cAAc,CAAC;KACzB,CAAC,CAAC;CACJ,CAAC,CA4CD"}
|
|
@@ -28,10 +28,10 @@ export type RegistrySchemaType = "JSON" | "AVRO" | "PROTOBUF";
|
|
|
28
28
|
* Minimal, dependency-free client for the Confluent Schema Registry REST API
|
|
29
29
|
* (works with Confluent Platform/Cloud, Redpanda, Karapace, AWS Glue SR proxy).
|
|
30
30
|
*
|
|
31
|
-
* Scope: subject/version management
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
31
|
+
* Scope: subject/version management, compatibility checks, and id->schema
|
|
32
|
+
* lookups. Used to keep locally-defined schemas in lockstep with a central
|
|
33
|
+
* registry, and as the backing lookup for the Avro/Protobuf serdes in
|
|
34
|
+
* `@drarzter/kafka-client/serde` (which handle the wire-format framing).
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
37
37
|
* ```ts
|
|
@@ -48,11 +48,30 @@ export declare class SchemaRegistryClient {
|
|
|
48
48
|
private readonly fetchFn;
|
|
49
49
|
private readonly cacheTtlMs;
|
|
50
50
|
private readonly latestCache;
|
|
51
|
+
/**
|
|
52
|
+
* `id → schema` cache. Schema ids are immutable in a Confluent-compatible
|
|
53
|
+
* registry (a given id always maps to the same schema string), so entries
|
|
54
|
+
* are cached for the lifetime of the client with no TTL.
|
|
55
|
+
*/
|
|
56
|
+
private readonly byIdCache;
|
|
51
57
|
constructor(options: SchemaRegistryClientOptions);
|
|
52
58
|
private headers;
|
|
53
59
|
private request;
|
|
54
60
|
/** Fetch the latest schema registered under `subject`. Cached for `cacheTtlMs`. */
|
|
55
61
|
getLatestSchema(subject: string): Promise<RegisteredSchema>;
|
|
62
|
+
/**
|
|
63
|
+
* Fetch a schema by its globally unique registry id (`GET /schemas/ids/{id}`).
|
|
64
|
+
*
|
|
65
|
+
* Used by the Avro/Protobuf serdes on the deserialize path: the writer schema
|
|
66
|
+
* id is read from the Confluent wire-format prefix, then resolved here. Results
|
|
67
|
+
* are cached forever (schema ids are immutable), so a given id triggers exactly
|
|
68
|
+
* one registry round-trip regardless of how many messages reference it.
|
|
69
|
+
*/
|
|
70
|
+
getSchemaById(id: number): Promise<{
|
|
71
|
+
id: number;
|
|
72
|
+
schema: string;
|
|
73
|
+
schemaType?: string;
|
|
74
|
+
}>;
|
|
56
75
|
/** Fetch a specific schema version of a subject. */
|
|
57
76
|
getSchemaVersion(subject: string, version: number): Promise<RegisteredSchema>;
|
|
58
77
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-registry.d.ts","sourceRoot":"","sources":["../../../src/client/message/schema-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAE9D,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0CAA0C;AAC1C,MAAM,WAAW,2BAA2B;IAC1C,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,+DAA+D;AAC/D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,oBAAoB;
|
|
1
|
+
{"version":3,"file":"schema-registry.d.ts","sourceRoot":"","sources":["../../../src/client/message/schema-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAE9D,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0CAA0C;AAC1C,MAAM,WAAW,2BAA2B;IAC1C,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,+DAA+D;AAC/D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,oBAAoB;IAiBnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGxB;IACJ;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;gBAEyB,OAAO,EAAE,2BAA2B;IAQjE,OAAO,CAAC,OAAO;YAYD,OAAO;IAoBrB,mFAAmF;IAC7E,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBjE;;;;;;;OAOG;IACG,aAAa,CACjB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAY/D,oDAAoD;IAC9C,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAY5B;;;OAGG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,kBAA2B,GACtC,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAS1B;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,kBAA2B,GACtC,OAAO,CAAC,OAAO,CAAC;CAQpB;AAED,sCAAsC;AACtC,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,GAAG,EACpC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,UAAU,CAAC,CAAC,CAAC,CAkBf"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { MessageHeaders } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Context passed to `MessageSerde.serialize` / `deserialize`.
|
|
4
|
+
*
|
|
5
|
+
* Carries the topic name, decoded message headers, and which side of the
|
|
6
|
+
* record is being (de)serialized. A Confluent Schema Registry serde uses
|
|
7
|
+
* `topic` + `isKey` to derive the subject name (`<topic>-value` / `<topic>-key`)
|
|
8
|
+
* and reads the schema id from the header/magic-byte prefix on `data`.
|
|
9
|
+
*/
|
|
10
|
+
export interface SerdeContext {
|
|
11
|
+
/** Topic the message is produced to / consumed from. */
|
|
12
|
+
topic: string;
|
|
13
|
+
/** Decoded message headers (envelope headers included). */
|
|
14
|
+
headers: MessageHeaders;
|
|
15
|
+
/**
|
|
16
|
+
* Which side of the Kafka record this call is (de)serializing.
|
|
17
|
+
* `false` / omitted → the value (default); `true` → the key.
|
|
18
|
+
* Used by schema-registry serdes to pick the `value` vs `key` subject.
|
|
19
|
+
*/
|
|
20
|
+
isKey?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Pluggable serialization layer for message payloads.
|
|
24
|
+
*
|
|
25
|
+
* A `MessageSerde` converts a validated payload object to the wire form
|
|
26
|
+
* (`Buffer` or `string`) on produce, and back to an object on consume.
|
|
27
|
+
* The default is {@link JsonSerde}, which reproduces the client's historical
|
|
28
|
+
* `JSON.stringify` / `JSON.parse` behaviour exactly.
|
|
29
|
+
*
|
|
30
|
+
* Serde only touches the message VALUE. Envelope metadata
|
|
31
|
+
* (`x-event-id`, `x-correlation-id`, `x-lamport-clock`, `traceparent`, …)
|
|
32
|
+
* always travels in headers and is never serialized through this layer.
|
|
33
|
+
*
|
|
34
|
+
* Set a client-wide serde via `KafkaClientOptions.serde`, or a per-topic
|
|
35
|
+
* override via `topic(...).serde(mySerde)` — the per-topic serde wins for
|
|
36
|
+
* that topic.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const kafka = new KafkaClient(id, group, brokers, { serde: new JsonSerde() });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export interface MessageSerde {
|
|
44
|
+
/**
|
|
45
|
+
* Serialize a validated payload object to wire bytes (`Buffer`) or a
|
|
46
|
+
* `string`. Validation has already run on `value` before this is called.
|
|
47
|
+
*/
|
|
48
|
+
serialize(value: unknown, ctx: SerdeContext): Buffer | string | Promise<Buffer | string>;
|
|
49
|
+
/**
|
|
50
|
+
* Deserialize raw wire bytes into a payload object. Schema validation
|
|
51
|
+
* (if any) runs on the returned object afterwards.
|
|
52
|
+
*/
|
|
53
|
+
deserialize(data: Buffer, ctx: SerdeContext): unknown | Promise<unknown>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Default {@link MessageSerde}: JSON via `JSON.stringify` / `JSON.parse`.
|
|
57
|
+
*
|
|
58
|
+
* Byte-for-byte identical to the client's historical serialization, so it is
|
|
59
|
+
* a zero-behaviour-change default. Produces a UTF-8 `string` on serialize and
|
|
60
|
+
* decodes UTF-8 bytes on deserialize.
|
|
61
|
+
*/
|
|
62
|
+
export declare class JsonSerde implements MessageSerde {
|
|
63
|
+
/** JSON-stringify the validated payload. Returns a UTF-8 string. */
|
|
64
|
+
serialize(value: unknown): string;
|
|
65
|
+
/** JSON-parse UTF-8 wire bytes into an object. */
|
|
66
|
+
deserialize(data: Buffer): unknown;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=serde.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serde.d.ts","sourceRoot":"","sources":["../../../src/client/message/serde.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,SAAS,CACP,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,YAAY,GAChB,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED;;;;;;GAMG;AACH,qBAAa,SAAU,YAAW,YAAY;IAC5C,oEAAoE;IACpE,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIjC,kDAAkD;IAClD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGnC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MessageHeaders } from "../types";
|
|
2
|
+
import type { MessageSerde } from "./serde";
|
|
2
3
|
/**
|
|
3
4
|
* Context passed as the second argument to `SchemaLike.parse()`.
|
|
4
5
|
* Enables schema-registry adapters, version-aware migration, and
|
|
@@ -56,6 +57,12 @@ export interface TopicDescriptor<N extends string = string, M extends Record<str
|
|
|
56
57
|
readonly __type: M;
|
|
57
58
|
/** Runtime schema validator. Present only when created via `topic().schema()`. */
|
|
58
59
|
readonly __schema?: SchemaLike<M>;
|
|
60
|
+
/**
|
|
61
|
+
* Per-topic serialization override. Present only when created via `.serde()`.
|
|
62
|
+
* When set, this serde is used for produce/consume on this topic instead of
|
|
63
|
+
* the client-wide `KafkaClientOptions.serde`.
|
|
64
|
+
*/
|
|
65
|
+
readonly __serde?: MessageSerde;
|
|
59
66
|
/**
|
|
60
67
|
* Partition-key extractor. Present only when created via `.key()`.
|
|
61
68
|
* Applied on every send through this descriptor unless an explicit
|
|
@@ -68,9 +75,10 @@ export interface TopicDescriptor<N extends string = string, M extends Record<str
|
|
|
68
75
|
__key?(message: M): string;
|
|
69
76
|
}
|
|
70
77
|
/**
|
|
71
|
-
* A `TopicDescriptor` that can still be extended with a `.key()` extractor
|
|
72
|
-
* Returned by `topic().type()` and `topic().schema()` —
|
|
73
|
-
* descriptor, or chained
|
|
78
|
+
* A `TopicDescriptor` that can still be extended with a `.key()` extractor or
|
|
79
|
+
* a `.serde()` override. Returned by `topic().type()` and `topic().schema()` —
|
|
80
|
+
* usable directly as a descriptor, or chained further to declare partition
|
|
81
|
+
* affinity and/or a custom serializer.
|
|
74
82
|
*/
|
|
75
83
|
export type KeyableTopicDescriptor<N extends string, M extends Record<string, any>> = TopicDescriptor<N, M> & {
|
|
76
84
|
/**
|
|
@@ -91,7 +99,20 @@ export type KeyableTopicDescriptor<N extends string, M extends Record<string, an
|
|
|
91
99
|
* // → produced with key '42'
|
|
92
100
|
* ```
|
|
93
101
|
*/
|
|
94
|
-
key(extractor: (message: M) => string):
|
|
102
|
+
key(extractor: (message: M) => string): KeyableTopicDescriptor<N, M>;
|
|
103
|
+
/**
|
|
104
|
+
* Declare a per-topic serialization override. The given {@link MessageSerde}
|
|
105
|
+
* is used for produce/consume on this topic instead of the client-wide
|
|
106
|
+
* `KafkaClientOptions.serde`. Chainable with `.key()`.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* const OrderCreated = topic('order.created')
|
|
111
|
+
* .schema(OrderSchema)
|
|
112
|
+
* .serde(new AvroSerde(OrderAvroSchema));
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
serde(serde: MessageSerde): KeyableTopicDescriptor<N, M>;
|
|
95
116
|
};
|
|
96
117
|
/**
|
|
97
118
|
* Define a typed topic descriptor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topic.d.ts","sourceRoot":"","sources":["../../../src/client/message/topic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"topic.d.ts","sourceRoot":"","sources":["../../../src/client/message/topic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,cAAc,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,kBAAkB,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChE;AAED,+CAA+C;AAC/C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,IAC1C,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAC9B,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEnD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC;;;;;;;;OAQG;IACH,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAC3B,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAC1B;;;;;;;;;;;;;;;;;OAiBG;IACH,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC;IAE3C,iEAAiE;WAC1D,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC;aAM5D,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,UACxC,CAAC,KACR,sBAAsB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;EAO/C;AAeD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;CACtC,CAAC"}
|
|
@@ -16,7 +16,12 @@ export type ITopicPartitions = {
|
|
|
16
16
|
};
|
|
17
17
|
/** A single message in a produce request. */
|
|
18
18
|
export type IProducerMessage = {
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Wire payload. `string` for text serdes (e.g. JSON), `Buffer` for binary
|
|
21
|
+
* serdes (Avro/Protobuf) and for losslessly re-forwarded messages
|
|
22
|
+
* (DLQ / retry / duplicates / delayed relay). librdkafka accepts both.
|
|
23
|
+
*/
|
|
24
|
+
value: string | Buffer | null;
|
|
20
25
|
key?: string | null;
|
|
21
26
|
headers?: Record<string, string | Buffer | string[]>;
|
|
22
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.interface.d.ts","sourceRoot":"","sources":["../../../src/client/transport/transport.interface.ts"],"names":[],"mappings":"AASA,8BAA8B;AAC9B,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,6DAA6D;AAC7D,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAIvE,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.interface.d.ts","sourceRoot":"","sources":["../../../src/client/transport/transport.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,23 @@ export interface KafkaClientOptions {
|
|
|
25
25
|
numPartitions?: number;
|
|
26
26
|
/** Client-wide instrumentation hooks (e.g. OTel). Applied to both send and consume paths. */
|
|
27
27
|
instrumentation?: KafkaInstrumentation[];
|
|
28
|
+
/**
|
|
29
|
+
* Pluggable serialization for message payloads. Defaults to `JsonSerde`
|
|
30
|
+
* (`JSON.stringify` / `JSON.parse`), which is byte-identical to the client's
|
|
31
|
+
* historical behaviour.
|
|
32
|
+
*
|
|
33
|
+
* A per-topic override declared via `topic(...).serde(mySerde)` wins over
|
|
34
|
+
* this client-wide serde for that topic. Serde only touches the message
|
|
35
|
+
* value — envelope headers are unaffected.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const kafka = new KafkaClient(id, group, brokers, {
|
|
40
|
+
* serde: new JsonSerde(), // or a custom Avro/Protobuf serde
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
serde?: import("../message/serde").MessageSerde;
|
|
28
45
|
/**
|
|
29
46
|
* Override the transactional producer ID used by `transaction()`.
|
|
30
47
|
* Defaults to `${clientId}-tx`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/client/types/config.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAkB;IACjC,yKAAyK;IACzK,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oIAAoI;IACpI,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iFAAiF;IACjF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACzC;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,QAAQ,GAAG,QAAQ,EACzB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,KACpD,IAAI,CAAC;IACV;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE;QACd,yDAAyD;QACzD,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB;;;;WAIG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE;QACZ,qFAAqF;QACrF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,wEAAwE;QACxE,MAAM,EAAE,MAAM,CAAC;QACf,gEAAgE;QAChE,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,OAAO,kCAAkC,EAAE,cAAc,CAAC;IACtE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,EAAE,OAAO,4BAA4B,EAAE,oBAAoB,CAAC;CACtE"}
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/client/types/config.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAkB;IACjC,yKAAyK;IACzK,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oIAAoI;IACpI,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iFAAiF;IACjF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACzC;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,OAAO,kBAAkB,EAAE,YAAY,CAAC;IAChD;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,QAAQ,GAAG,QAAQ,EACzB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,KACpD,IAAI,CAAC;IACV;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE;QACd,yDAAyD;QACzD,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB;;;;WAIG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE;QACZ,qFAAqF;QACrF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,wEAAwE;QACxE,MAAM,EAAE,MAAM,CAAC;QACf,gEAAgE;QAChE,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,OAAO,kCAAkC,EAAE,cAAc,CAAC;IACtE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,EAAE,OAAO,4BAA4B,EAAE,oBAAoB,CAAC;CACtE"}
|
package/dist/core.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export * from "./client/kafka.client";
|
|
2
|
+
export * from "./client/transport/transport.interface";
|
|
3
|
+
export { ConfluentTransport } from "./client/transport/confluent.transport";
|
|
2
4
|
export * from "./client/message/topic";
|
|
5
|
+
export * from "./client/message/serde";
|
|
3
6
|
export * from "./client/message/versioned-schema";
|
|
4
7
|
export * from "./client/message/schema-registry";
|
|
5
8
|
export * from "./client/errors";
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|