kafka-ts 0.0.2-beta → 0.0.2

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 (195) hide show
  1. package/.prettierrc +3 -2
  2. package/README.md +109 -39
  3. package/dist/api/api-versions.d.ts +9 -0
  4. package/dist/api/api-versions.js +24 -0
  5. package/dist/api/create-topics.d.ts +38 -0
  6. package/dist/api/create-topics.js +53 -0
  7. package/dist/api/delete-topics.d.ts +18 -0
  8. package/dist/api/delete-topics.js +33 -0
  9. package/dist/api/fetch.d.ts +84 -0
  10. package/dist/api/fetch.js +142 -0
  11. package/dist/api/find-coordinator.d.ts +21 -0
  12. package/dist/api/find-coordinator.js +39 -0
  13. package/dist/api/heartbeat.d.ts +11 -0
  14. package/dist/api/heartbeat.js +27 -0
  15. package/dist/api/index.d.ts +578 -0
  16. package/dist/api/index.js +165 -0
  17. package/dist/api/init-producer-id.d.ts +13 -0
  18. package/dist/api/init-producer-id.js +29 -0
  19. package/dist/api/join-group.d.ts +34 -0
  20. package/dist/api/join-group.js +51 -0
  21. package/dist/api/leave-group.d.ts +19 -0
  22. package/dist/api/leave-group.js +39 -0
  23. package/dist/api/list-offsets.d.ts +29 -0
  24. package/dist/api/list-offsets.js +48 -0
  25. package/dist/api/metadata.d.ts +40 -0
  26. package/dist/api/metadata.js +58 -0
  27. package/dist/api/offset-commit.d.ts +28 -0
  28. package/dist/api/offset-commit.js +48 -0
  29. package/dist/api/offset-fetch.d.ts +33 -0
  30. package/dist/api/offset-fetch.js +57 -0
  31. package/dist/api/produce.d.ts +54 -0
  32. package/dist/api/produce.js +126 -0
  33. package/dist/api/sasl-authenticate.d.ts +11 -0
  34. package/dist/api/sasl-authenticate.js +23 -0
  35. package/dist/api/sasl-handshake.d.ts +6 -0
  36. package/dist/api/sasl-handshake.js +19 -0
  37. package/dist/api/sync-group.d.ts +24 -0
  38. package/dist/api/sync-group.js +36 -0
  39. package/dist/auth/index.d.ts +2 -0
  40. package/dist/auth/index.js +8 -0
  41. package/dist/auth/plain.d.ts +5 -0
  42. package/dist/auth/plain.js +12 -0
  43. package/dist/auth/scram.d.ts +9 -0
  44. package/dist/auth/scram.js +40 -0
  45. package/dist/broker.d.ts +30 -0
  46. package/dist/broker.js +55 -0
  47. package/dist/client.d.ts +23 -0
  48. package/dist/client.js +36 -0
  49. package/dist/cluster.d.ts +27 -0
  50. package/dist/cluster.js +70 -0
  51. package/dist/cluster.test.d.ts +1 -0
  52. package/dist/cluster.test.js +345 -0
  53. package/dist/codecs/gzip.d.ts +2 -0
  54. package/dist/codecs/gzip.js +8 -0
  55. package/dist/codecs/index.d.ts +2 -0
  56. package/dist/codecs/index.js +17 -0
  57. package/dist/codecs/none.d.ts +2 -0
  58. package/dist/codecs/none.js +7 -0
  59. package/dist/codecs/types.d.ts +5 -0
  60. package/dist/codecs/types.js +2 -0
  61. package/dist/connection.d.ts +26 -0
  62. package/dist/connection.js +175 -0
  63. package/dist/consumer/consumer-group.d.ts +41 -0
  64. package/dist/consumer/consumer-group.js +217 -0
  65. package/dist/consumer/consumer-metadata.d.ts +7 -0
  66. package/dist/consumer/consumer-metadata.js +14 -0
  67. package/dist/consumer/consumer.d.ts +44 -0
  68. package/dist/consumer/consumer.js +225 -0
  69. package/dist/consumer/fetch-manager.d.ts +33 -0
  70. package/dist/consumer/fetch-manager.js +140 -0
  71. package/dist/consumer/fetcher.d.ts +25 -0
  72. package/dist/consumer/fetcher.js +64 -0
  73. package/dist/consumer/offset-manager.d.ts +22 -0
  74. package/dist/consumer/offset-manager.js +66 -0
  75. package/dist/consumer/processor.d.ts +19 -0
  76. package/dist/consumer/processor.js +59 -0
  77. package/dist/distributors/assignments-to-replicas.d.ts +16 -0
  78. package/dist/distributors/assignments-to-replicas.js +59 -0
  79. package/dist/distributors/assignments-to-replicas.test.d.ts +1 -0
  80. package/dist/distributors/assignments-to-replicas.test.js +40 -0
  81. package/dist/distributors/messages-to-topic-partition-leaders.d.ts +17 -0
  82. package/dist/distributors/messages-to-topic-partition-leaders.js +15 -0
  83. package/dist/distributors/messages-to-topic-partition-leaders.test.d.ts +1 -0
  84. package/dist/distributors/messages-to-topic-partition-leaders.test.js +30 -0
  85. package/dist/distributors/partitioner.d.ts +7 -0
  86. package/dist/distributors/partitioner.js +23 -0
  87. package/dist/index.d.ts +9 -0
  88. package/dist/index.js +26 -0
  89. package/dist/metadata.d.ts +24 -0
  90. package/dist/metadata.js +106 -0
  91. package/dist/producer/producer.d.ts +24 -0
  92. package/dist/producer/producer.js +131 -0
  93. package/dist/types.d.ts +11 -0
  94. package/dist/types.js +2 -0
  95. package/dist/utils/api.d.ts +9 -0
  96. package/dist/utils/api.js +5 -0
  97. package/dist/utils/crypto.d.ts +8 -0
  98. package/dist/utils/crypto.js +18 -0
  99. package/dist/utils/decoder.d.ts +30 -0
  100. package/dist/utils/decoder.js +152 -0
  101. package/dist/utils/delay.d.ts +1 -0
  102. package/dist/utils/delay.js +5 -0
  103. package/dist/utils/encoder.d.ts +28 -0
  104. package/dist/utils/encoder.js +125 -0
  105. package/dist/utils/error.d.ts +11 -0
  106. package/dist/utils/error.js +27 -0
  107. package/dist/utils/logger.d.ts +9 -0
  108. package/dist/utils/logger.js +32 -0
  109. package/dist/utils/memo.d.ts +1 -0
  110. package/dist/utils/memo.js +16 -0
  111. package/dist/utils/murmur2.d.ts +3 -0
  112. package/dist/utils/murmur2.js +40 -0
  113. package/dist/utils/retrier.d.ts +10 -0
  114. package/dist/utils/retrier.js +22 -0
  115. package/dist/utils/tracer.d.ts +5 -0
  116. package/dist/utils/tracer.js +39 -0
  117. package/package.json +30 -19
  118. package/src/__snapshots__/{request-handler.test.ts.snap → cluster.test.ts.snap} +329 -26
  119. package/src/api/api-versions.ts +2 -2
  120. package/src/api/create-topics.ts +2 -2
  121. package/src/api/delete-topics.ts +2 -2
  122. package/src/api/fetch.ts +86 -31
  123. package/src/api/find-coordinator.ts +2 -2
  124. package/src/api/heartbeat.ts +2 -2
  125. package/src/api/index.ts +21 -19
  126. package/src/api/init-producer-id.ts +2 -2
  127. package/src/api/join-group.ts +3 -3
  128. package/src/api/leave-group.ts +2 -2
  129. package/src/api/list-offsets.ts +3 -3
  130. package/src/api/metadata.ts +3 -3
  131. package/src/api/offset-commit.ts +2 -2
  132. package/src/api/offset-fetch.ts +2 -2
  133. package/src/api/produce.ts +17 -20
  134. package/src/api/sasl-authenticate.ts +2 -2
  135. package/src/api/sasl-handshake.ts +2 -2
  136. package/src/api/sync-group.ts +2 -2
  137. package/src/auth/index.ts +2 -0
  138. package/src/auth/plain.ts +10 -0
  139. package/src/auth/scram.ts +52 -0
  140. package/src/broker.ts +12 -14
  141. package/src/client.ts +7 -7
  142. package/src/cluster.test.ts +78 -74
  143. package/src/cluster.ts +43 -45
  144. package/src/codecs/gzip.ts +9 -0
  145. package/src/codecs/index.ts +16 -0
  146. package/src/codecs/none.ts +6 -0
  147. package/src/codecs/types.ts +4 -0
  148. package/src/connection.ts +49 -33
  149. package/src/consumer/consumer-group.ts +57 -35
  150. package/src/consumer/consumer-metadata.ts +2 -2
  151. package/src/consumer/consumer.ts +115 -92
  152. package/src/consumer/fetch-manager.ts +169 -0
  153. package/src/consumer/fetcher.ts +64 -0
  154. package/src/consumer/offset-manager.ts +24 -13
  155. package/src/consumer/processor.ts +53 -0
  156. package/src/distributors/assignments-to-replicas.test.ts +7 -7
  157. package/src/distributors/assignments-to-replicas.ts +2 -4
  158. package/src/distributors/messages-to-topic-partition-leaders.test.ts +6 -6
  159. package/src/distributors/partitioner.ts +27 -0
  160. package/src/index.ts +9 -3
  161. package/src/metadata.ts +8 -4
  162. package/src/producer/producer.ts +30 -20
  163. package/src/types.ts +5 -3
  164. package/src/utils/api.ts +5 -5
  165. package/src/utils/crypto.ts +15 -0
  166. package/src/utils/decoder.ts +14 -8
  167. package/src/utils/encoder.ts +34 -27
  168. package/src/utils/error.ts +3 -3
  169. package/src/utils/logger.ts +37 -0
  170. package/src/utils/murmur2.ts +44 -0
  171. package/src/utils/retrier.ts +1 -1
  172. package/src/utils/tracer.ts +41 -20
  173. package/tsconfig.json +16 -16
  174. package/.github/workflows/release.yml +0 -17
  175. package/certs/ca.crt +0 -29
  176. package/certs/ca.key +0 -52
  177. package/certs/ca.srl +0 -1
  178. package/certs/kafka.crt +0 -29
  179. package/certs/kafka.csr +0 -26
  180. package/certs/kafka.key +0 -52
  181. package/certs/kafka.keystore.jks +0 -0
  182. package/certs/kafka.truststore.jks +0 -0
  183. package/docker-compose.yml +0 -104
  184. package/examples/package-lock.json +0 -31
  185. package/examples/package.json +0 -14
  186. package/examples/src/client.ts +0 -9
  187. package/examples/src/consumer.ts +0 -17
  188. package/examples/src/create-topic.ts +0 -37
  189. package/examples/src/producer.ts +0 -24
  190. package/examples/src/replicator.ts +0 -25
  191. package/examples/src/utils/json.ts +0 -1
  192. package/examples/tsconfig.json +0 -7
  193. package/log4j.properties +0 -95
  194. package/scripts/generate-certs.sh +0 -24
  195. package/src/utils/debug.ts +0 -9
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Encoder = void 0;
4
+ class Encoder {
5
+ chunks = [];
6
+ getChunks() {
7
+ return this.chunks;
8
+ }
9
+ getByteLength() {
10
+ return this.chunks.reduce((acc, chunk) => acc + chunk.byteLength, 0);
11
+ }
12
+ write(...buffers) {
13
+ this.chunks.push(...buffers);
14
+ return this;
15
+ }
16
+ writeEncoder(encoder) {
17
+ return this.write(...encoder.getChunks());
18
+ }
19
+ writeInt8(value) {
20
+ const buffer = Buffer.allocUnsafe(1);
21
+ buffer.writeInt8(value);
22
+ return this.write(buffer);
23
+ }
24
+ writeInt16(value) {
25
+ const buffer = Buffer.allocUnsafe(2);
26
+ buffer.writeInt16BE(value);
27
+ return this.write(buffer);
28
+ }
29
+ writeInt32(value) {
30
+ const buffer = Buffer.allocUnsafe(4);
31
+ buffer.writeInt32BE(value);
32
+ return this.write(buffer);
33
+ }
34
+ writeUInt32(value) {
35
+ const buffer = Buffer.allocUnsafe(4);
36
+ buffer.writeUInt32BE(value);
37
+ return this.write(buffer);
38
+ }
39
+ writeInt64(value) {
40
+ const buffer = Buffer.allocUnsafe(8);
41
+ buffer.writeBigInt64BE(value);
42
+ return this.write(buffer);
43
+ }
44
+ writeUVarInt(value) {
45
+ const byteArray = [];
46
+ while ((value & 0xffffffff) !== 0) {
47
+ byteArray.push((value & 0x7f) | 0x80);
48
+ value >>>= 7;
49
+ }
50
+ byteArray.push(value & 0x7f);
51
+ return this.write(Buffer.from(byteArray));
52
+ }
53
+ writeVarInt(value) {
54
+ const encodedValue = (value << 1) ^ (value >> 31);
55
+ return this.writeUVarInt(encodedValue);
56
+ }
57
+ writeUVarLong(value) {
58
+ const byteArray = [];
59
+ while ((value & BigInt(0xffffffffffffffff)) !== BigInt(0)) {
60
+ byteArray.push(Number((value & BigInt(0x7f)) | BigInt(0x80)));
61
+ value = value >> BigInt(7);
62
+ }
63
+ byteArray.push(Number(value));
64
+ return this.write(Buffer.from(byteArray));
65
+ }
66
+ writeVarLong(value) {
67
+ const encodedValue = (value << BigInt(1)) ^ (value >> BigInt(63));
68
+ return this.writeUVarLong(encodedValue);
69
+ }
70
+ writeString(value) {
71
+ if (value === null) {
72
+ return this.writeInt16(-1);
73
+ }
74
+ const byteLength = Buffer.byteLength(value, 'utf-8');
75
+ const buffer = Buffer.allocUnsafe(byteLength);
76
+ buffer.write(value, 0, byteLength, 'utf-8');
77
+ return this.writeInt16(byteLength).write(buffer);
78
+ }
79
+ writeCompactString(value) {
80
+ if (value === null) {
81
+ return this.writeUVarInt(0);
82
+ }
83
+ const byteLength = Buffer.byteLength(value, 'utf-8');
84
+ const buffer = Buffer.allocUnsafe(byteLength);
85
+ buffer.write(value, 0, byteLength, 'utf-8');
86
+ return this.writeUVarInt(byteLength + 1).write(buffer);
87
+ }
88
+ writeVarIntBuffer(buffer) {
89
+ if (buffer === null) {
90
+ return this.writeVarInt(-1);
91
+ }
92
+ return this.writeVarInt(buffer.byteLength).write(buffer);
93
+ }
94
+ writeUUID(value) {
95
+ if (value === null) {
96
+ return this.write(Buffer.alloc(16));
97
+ }
98
+ return this.write(Buffer.from(value, 'hex'));
99
+ }
100
+ writeBoolean(value) {
101
+ return this.writeInt8(value ? 1 : 0);
102
+ }
103
+ writeArray(arr, callback) {
104
+ return this.writeInt32(arr.length).write(...arr.flatMap((item) => callback(new Encoder(), item).getChunks()));
105
+ }
106
+ writeCompactArray(arr, callback) {
107
+ if (arr === null) {
108
+ return this.writeUVarInt(0);
109
+ }
110
+ return this.writeUVarInt(arr.length + 1).write(...arr.flatMap((item) => callback(new Encoder(), item).getChunks()));
111
+ }
112
+ writeVarIntArray(arr, callback) {
113
+ return this.writeVarInt(arr.length).write(...arr.flatMap((item) => callback(new Encoder(), item).getChunks()));
114
+ }
115
+ writeBytes(value) {
116
+ return this.writeInt32(value.length).write(value);
117
+ }
118
+ writeCompactBytes(value) {
119
+ return this.writeUVarInt(value.length + 1).write(value);
120
+ }
121
+ value() {
122
+ return Buffer.concat(this.chunks);
123
+ }
124
+ }
125
+ exports.Encoder = Encoder;
@@ -0,0 +1,11 @@
1
+ export declare class KafkaTSError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class KafkaTSApiError<T = any> extends KafkaTSError {
5
+ errorCode: number;
6
+ errorMessage: string | null;
7
+ response: T;
8
+ constructor(errorCode: number, errorMessage: string | null, response: T);
9
+ }
10
+ export declare class ConnectionError extends KafkaTSError {
11
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionError = exports.KafkaTSApiError = exports.KafkaTSError = void 0;
4
+ const api_1 = require("../api");
5
+ class KafkaTSError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = this.constructor.name;
9
+ }
10
+ }
11
+ exports.KafkaTSError = KafkaTSError;
12
+ class KafkaTSApiError extends KafkaTSError {
13
+ errorCode;
14
+ errorMessage;
15
+ response;
16
+ constructor(errorCode, errorMessage, response) {
17
+ const [errorName] = Object.entries(api_1.API_ERROR).find(([, value]) => value === errorCode) ?? ['UNKNOWN'];
18
+ super(`${errorName}${errorMessage ? `: ${errorMessage}` : ''}`);
19
+ this.errorCode = errorCode;
20
+ this.errorMessage = errorMessage;
21
+ this.response = response;
22
+ }
23
+ }
24
+ exports.KafkaTSApiError = KafkaTSApiError;
25
+ class ConnectionError extends KafkaTSError {
26
+ }
27
+ exports.ConnectionError = ConnectionError;
@@ -0,0 +1,9 @@
1
+ export interface Logger {
2
+ debug: (message: string, metadata?: unknown) => void;
3
+ info: (message: string, metadata?: unknown) => void;
4
+ warn: (message: string, metadata?: unknown) => void;
5
+ error: (message: string, metadata?: unknown) => void;
6
+ }
7
+ export declare const jsonSerializer: (_: unknown, v: unknown) => unknown;
8
+ export declare let log: Logger;
9
+ export declare const setLogger: (newLogger: Logger) => void;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setLogger = exports.log = exports.jsonSerializer = void 0;
4
+ const jsonSerializer = (_, v) => {
5
+ if (v instanceof Error) {
6
+ return { name: v.name, message: v.message, stack: v.stack, cause: v.cause };
7
+ }
8
+ if (typeof v === 'bigint') {
9
+ return v.toString();
10
+ }
11
+ return v;
12
+ };
13
+ exports.jsonSerializer = jsonSerializer;
14
+ class JsonLogger {
15
+ debug(message, metadata) {
16
+ console.debug(JSON.stringify({ message, metadata, level: 'debug' }, exports.jsonSerializer));
17
+ }
18
+ info(message, metadata) {
19
+ console.info(JSON.stringify({ message, metadata, level: 'info' }, exports.jsonSerializer));
20
+ }
21
+ warn(message, metadata) {
22
+ console.warn(JSON.stringify({ message, metadata, level: 'warning' }, exports.jsonSerializer));
23
+ }
24
+ error(message, metadata) {
25
+ console.error(JSON.stringify({ message, metadata, level: 'error' }, exports.jsonSerializer));
26
+ }
27
+ }
28
+ exports.log = new JsonLogger();
29
+ const setLogger = (newLogger) => {
30
+ exports.log = newLogger;
31
+ };
32
+ exports.setLogger = setLogger;
@@ -0,0 +1 @@
1
+ export declare const memo: <T extends (...args: any[]) => any>(fn: T) => (...args: Parameters<T>) => ReturnType<T>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.memo = void 0;
4
+ const memo = (fn) => {
5
+ const cache = {};
6
+ return (...args) => {
7
+ const key = JSON.stringify(args);
8
+ if (cache[key]) {
9
+ return cache[key];
10
+ }
11
+ const result = fn(...args);
12
+ cache[key] = result;
13
+ return result;
14
+ };
15
+ };
16
+ exports.memo = memo;
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ export declare const murmur2: (data: Buffer) => number;
3
+ export declare const toPositive: (input: number) => number;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /* https://github.com/apache/kafka/blob/0.10.2/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L364 */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.toPositive = exports.murmur2 = void 0;
5
+ const murmur2 = (data) => {
6
+ const length = data.length;
7
+ const seed = 0x9747b28c;
8
+ const m = 0x5bd1e995;
9
+ const r = 24;
10
+ let h = seed ^ length;
11
+ let length4 = Math.floor(length / 4);
12
+ for (let i = 0; i < length4; i++) {
13
+ const i4 = i * 4;
14
+ let k = (data[i4 + 0] & 0xff) +
15
+ ((data[i4 + 1] & 0xff) << 8) +
16
+ ((data[i4 + 2] & 0xff) << 16) +
17
+ ((data[i4 + 3] & 0xff) << 24);
18
+ k *= m;
19
+ k ^= k >> r;
20
+ k *= m;
21
+ h *= m;
22
+ h ^= k;
23
+ }
24
+ switch (length % 4) {
25
+ case 3:
26
+ h = h ^ ((data[(length & ~3) + 2] & 0xff) << 16);
27
+ case 2:
28
+ h = h ^ ((data[(length & ~3) + 1] & 0xff) << 8);
29
+ case 1:
30
+ h = h ^ (data[length & ~3] & 0xff);
31
+ h *= m;
32
+ }
33
+ h ^= h >> 13;
34
+ h *= m;
35
+ h ^= h >> 15;
36
+ return h;
37
+ };
38
+ exports.murmur2 = murmur2;
39
+ const toPositive = (input) => input & 0x7fffffff;
40
+ exports.toPositive = toPositive;
@@ -0,0 +1,10 @@
1
+ export type Retrier = (func: () => unknown) => Promise<void>;
2
+ export declare const createExponentialBackoffRetrier: (options: {
3
+ onFailure?: (error: unknown) => Promise<void>;
4
+ maxRetries?: number;
5
+ initialDelayMs?: number;
6
+ maxDelayMs?: number;
7
+ multiplier?: number;
8
+ retry?: number;
9
+ }) => Retrier;
10
+ export declare const defaultRetrier: Retrier;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultRetrier = exports.createExponentialBackoffRetrier = void 0;
4
+ const delay_1 = require("./delay");
5
+ const createExponentialBackoffRetrier = (options) => async (func) => {
6
+ try {
7
+ await func();
8
+ }
9
+ catch (error) {
10
+ const { retry = 0, maxRetries = 3, onFailure = (error) => {
11
+ throw error;
12
+ }, initialDelayMs = 100, maxDelayMs = 3000, multiplier = 2, } = options;
13
+ const isMaxRetriesExceeded = retry > maxRetries;
14
+ if (isMaxRetriesExceeded)
15
+ return onFailure(error);
16
+ const delayMs = Math.min(maxDelayMs, initialDelayMs * multiplier ** retry);
17
+ await (0, delay_1.delay)(delayMs);
18
+ return (0, exports.createExponentialBackoffRetrier)({ ...options, retry: retry + 1 })(func);
19
+ }
20
+ };
21
+ exports.createExponentialBackoffRetrier = createExponentialBackoffRetrier;
22
+ exports.defaultRetrier = (0, exports.createExponentialBackoffRetrier)({});
@@ -0,0 +1,5 @@
1
+ export interface Tracer {
2
+ startActiveSpan<T>(module: string, method: string, metadata: Record<string, unknown>, callback: () => T): T;
3
+ }
4
+ export declare const setTracer: <T>(newTracer: Tracer) => void;
5
+ export declare const createTracer: (module: string) => (fn?: (...args: any[]) => Record<string, unknown> | undefined) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTracer = exports.setTracer = void 0;
4
+ const logger_1 = require("./logger");
5
+ class DebugTracer {
6
+ isEnabled = process.env.DEBUG?.includes('kafka-ts');
7
+ startActiveSpan(module, method, metadata, callback) {
8
+ if (!this.isEnabled) {
9
+ return callback();
10
+ }
11
+ const startTime = Date.now();
12
+ const onEnd = (result) => {
13
+ logger_1.log.debug(`[${module}.${method}] ${metadata?.message ?? ''} +${Date.now() - startTime}ms`, {
14
+ ...metadata,
15
+ ...(!!result && { result }),
16
+ });
17
+ return result;
18
+ };
19
+ const result = callback();
20
+ if (result instanceof Promise) {
21
+ return result.then(onEnd);
22
+ }
23
+ onEnd(result);
24
+ return result;
25
+ }
26
+ }
27
+ let tracer = new DebugTracer();
28
+ const setTracer = (newTracer) => {
29
+ tracer = newTracer;
30
+ };
31
+ exports.setTracer = setTracer;
32
+ const createTracer = (module) => (fn) => (target, propertyKey, descriptor) => {
33
+ const original = descriptor.value;
34
+ descriptor.value = function (...args) {
35
+ const metadata = fn?.(...args);
36
+ return tracer.startActiveSpan(module, propertyKey, { ...metadata }, () => original.apply(this, args));
37
+ };
38
+ };
39
+ exports.createTracer = createTracer;
package/package.json CHANGED
@@ -1,21 +1,32 @@
1
1
  {
2
- "name": "kafka-ts",
3
- "version": "0.0.2-beta",
4
- "main": "dist/index.js",
5
- "author": "Priit Käärd",
6
- "license": "MIT",
7
- "repository": {
8
- "type": "git",
9
- "url": "https://github.com/priitkaard/kafka-ts.git"
10
- },
11
- "scripts": {
12
- "build": "tsc",
13
- "test": "vitest --testTimeout 60000 --bail 1"
14
- },
15
- "devDependencies": {
16
- "@types/node": "^20.12.12",
17
- "prettier": "^3.2.5",
18
- "typescript": "^5.4.5",
19
- "vitest": "^1.6.0"
20
- }
2
+ "name": "kafka-ts",
3
+ "version": "0.0.2",
4
+ "main": "dist/index.js",
5
+ "author": "Priit Käärd",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/priitkaard/kafka-ts.git"
10
+ },
11
+ "scripts": {
12
+ "start": "docker-compose down && KAFKA_VERSION=3.7.1 docker-compose up -d && sleep 5 && bash ./scripts/create-scram-user.sh",
13
+ "version:beta": "npm version prerelease --preid=beta",
14
+ "version:patch": "npm version patch",
15
+ "format": "prettier --write .",
16
+ "build": "tsc",
17
+ "watch": "tsc -w",
18
+ "test": "vitest --testTimeout 60000 --bail 1"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^20.12.12",
22
+ "prettier": "^3.3.3",
23
+ "typescript": "^5.4.5",
24
+ "vitest": "^1.6.0"
25
+ },
26
+ "keywords": [
27
+ "kafka",
28
+ "client",
29
+ "producer",
30
+ "consumer"
31
+ ]
21
32
  }