kafka-ts 0.0.1-beta.4 → 0.0.1-beta.6
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/.github/workflows/release.yml +19 -6
- package/README.md +15 -21
- package/dist/api/api-versions.d.ts +9 -0
- package/dist/api/api-versions.js +24 -0
- package/dist/api/create-topics.d.ts +38 -0
- package/dist/api/create-topics.js +53 -0
- package/dist/api/delete-topics.d.ts +18 -0
- package/dist/api/delete-topics.js +33 -0
- package/dist/api/fetch.d.ts +84 -0
- package/dist/api/fetch.js +142 -0
- package/dist/api/find-coordinator.d.ts +21 -0
- package/dist/api/find-coordinator.js +39 -0
- package/dist/api/heartbeat.d.ts +11 -0
- package/dist/api/heartbeat.js +27 -0
- package/dist/api/index.d.ts +578 -0
- package/dist/api/index.js +165 -0
- package/dist/api/init-producer-id.d.ts +13 -0
- package/dist/api/init-producer-id.js +29 -0
- package/dist/api/join-group.d.ts +34 -0
- package/dist/api/join-group.js +51 -0
- package/dist/api/leave-group.d.ts +19 -0
- package/dist/api/leave-group.js +39 -0
- package/dist/api/list-offsets.d.ts +29 -0
- package/dist/api/list-offsets.js +48 -0
- package/dist/api/metadata.d.ts +40 -0
- package/dist/api/metadata.js +58 -0
- package/dist/api/offset-commit.d.ts +28 -0
- package/dist/api/offset-commit.js +48 -0
- package/dist/api/offset-fetch.d.ts +33 -0
- package/dist/api/offset-fetch.js +57 -0
- package/dist/api/produce.d.ts +54 -0
- package/dist/api/produce.js +126 -0
- package/dist/api/sasl-authenticate.d.ts +11 -0
- package/dist/api/sasl-authenticate.js +23 -0
- package/dist/api/sasl-handshake.d.ts +6 -0
- package/dist/api/sasl-handshake.js +19 -0
- package/dist/api/sync-group.d.ts +24 -0
- package/dist/api/sync-group.js +36 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/plain.d.ts +5 -0
- package/dist/auth/plain.js +12 -0
- package/dist/auth/scram.d.ts +9 -0
- package/dist/auth/scram.js +40 -0
- package/dist/broker.d.ts +30 -0
- package/dist/broker.js +55 -0
- package/dist/client.d.ts +23 -0
- package/dist/client.js +36 -0
- package/dist/cluster.d.ts +27 -0
- package/dist/cluster.js +70 -0
- package/dist/cluster.test.d.ts +1 -0
- package/dist/cluster.test.js +345 -0
- package/dist/codecs/gzip.d.ts +2 -0
- package/dist/codecs/gzip.js +8 -0
- package/dist/codecs/index.d.ts +2 -0
- package/dist/codecs/index.js +17 -0
- package/dist/codecs/none.d.ts +2 -0
- package/dist/codecs/none.js +7 -0
- package/dist/codecs/types.d.ts +5 -0
- package/dist/codecs/types.js +2 -0
- package/dist/connection.d.ts +26 -0
- package/dist/connection.js +175 -0
- package/dist/consumer/consumer-group.d.ts +41 -0
- package/dist/consumer/consumer-group.js +217 -0
- package/dist/consumer/consumer-metadata.d.ts +7 -0
- package/dist/consumer/consumer-metadata.js +14 -0
- package/dist/consumer/consumer.d.ts +44 -0
- package/dist/consumer/consumer.js +225 -0
- package/dist/consumer/fetch-manager.d.ts +33 -0
- package/dist/consumer/fetch-manager.js +140 -0
- package/dist/consumer/fetcher.d.ts +25 -0
- package/dist/consumer/fetcher.js +64 -0
- package/dist/consumer/offset-manager.d.ts +22 -0
- package/dist/consumer/offset-manager.js +66 -0
- package/dist/consumer/processor.d.ts +19 -0
- package/dist/consumer/processor.js +59 -0
- package/dist/distributors/assignments-to-replicas.d.ts +16 -0
- package/dist/distributors/assignments-to-replicas.js +59 -0
- package/dist/distributors/assignments-to-replicas.test.d.ts +1 -0
- package/dist/distributors/assignments-to-replicas.test.js +40 -0
- package/dist/distributors/messages-to-topic-partition-leaders.d.ts +17 -0
- package/dist/distributors/messages-to-topic-partition-leaders.js +15 -0
- package/dist/distributors/messages-to-topic-partition-leaders.test.d.ts +1 -0
- package/dist/distributors/messages-to-topic-partition-leaders.test.js +30 -0
- package/dist/distributors/partitioner.d.ts +7 -0
- package/dist/distributors/partitioner.js +23 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +26 -0
- package/dist/metadata.d.ts +24 -0
- package/dist/metadata.js +106 -0
- package/dist/producer/producer.d.ts +24 -0
- package/dist/producer/producer.js +131 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.js +2 -0
- package/dist/utils/api.d.ts +9 -0
- package/dist/utils/api.js +5 -0
- package/dist/utils/crypto.d.ts +8 -0
- package/dist/utils/crypto.js +18 -0
- package/dist/utils/decoder.d.ts +30 -0
- package/dist/utils/decoder.js +152 -0
- package/dist/utils/delay.d.ts +1 -0
- package/dist/utils/delay.js +5 -0
- package/dist/utils/encoder.d.ts +28 -0
- package/dist/utils/encoder.js +125 -0
- package/dist/utils/error.d.ts +11 -0
- package/dist/utils/error.js +27 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.js +32 -0
- package/dist/utils/memo.d.ts +1 -0
- package/dist/utils/memo.js +16 -0
- package/dist/utils/murmur2.d.ts +3 -0
- package/dist/utils/murmur2.js +40 -0
- package/dist/utils/retrier.d.ts +10 -0
- package/dist/utils/retrier.js +22 -0
- package/dist/utils/tracer.d.ts +5 -0
- package/dist/utils/tracer.js +39 -0
- package/docker-compose.yml +3 -3
- package/examples/package-lock.json +3501 -3
- package/examples/package.json +8 -1
- package/examples/src/benchmark/common.ts +98 -0
- package/examples/src/benchmark/kafka-ts.ts +67 -0
- package/examples/src/benchmark/kafkajs.ts +51 -0
- package/examples/src/client.ts +4 -1
- package/examples/src/opentelemetry.ts +46 -0
- package/examples/src/producer.ts +11 -11
- package/package.json +4 -2
- package/scripts/create-scram-user.sh +4 -2
- package/scripts/generate-certs.sh +2 -0
- package/src/__snapshots__/cluster.test.ts.snap +35 -185
- package/src/api/fetch.ts +6 -1
- package/src/api/index.ts +3 -1
- package/src/api/metadata.ts +1 -1
- package/src/api/produce.ts +7 -10
- package/src/cluster.test.ts +2 -2
- package/src/cluster.ts +9 -16
- package/src/connection.ts +28 -15
- package/src/consumer/consumer-group.ts +35 -15
- package/src/consumer/consumer.ts +28 -18
- package/src/consumer/fetch-manager.ts +29 -45
- package/src/consumer/fetcher.ts +21 -14
- package/src/consumer/offset-manager.ts +18 -7
- package/src/consumer/processor.ts +14 -10
- package/src/distributors/assignments-to-replicas.ts +1 -3
- package/src/index.ts +1 -1
- package/src/metadata.ts +4 -0
- package/src/producer/producer.ts +11 -6
- package/src/utils/decoder.ts +0 -4
- package/src/utils/encoder.ts +26 -19
- package/src/utils/logger.ts +4 -4
- package/src/utils/tracer.ts +39 -23
- package/certs/ca.key +0 -52
- package/certs/ca.srl +0 -1
- package/certs/kafka.crt +0 -29
- package/certs/kafka.csr +0 -26
- package/certs/kafka.key +0 -52
- package/src/utils/mutex.ts +0 -31
|
@@ -9,7 +9,7 @@ type ProcessorOptions = {
|
|
|
9
9
|
process: (batch: Batch) => Promise<void>;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
export class Processor extends EventEmitter<{
|
|
12
|
+
export class Processor extends EventEmitter<{ stopped: [] }> {
|
|
13
13
|
private isRunning = false;
|
|
14
14
|
|
|
15
15
|
constructor(private options: ProcessorOptions) {
|
|
@@ -17,17 +17,11 @@ export class Processor extends EventEmitter<{ stop: []; stopped: [] }> {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
public async loop() {
|
|
20
|
-
const { poll, process } = this.options;
|
|
21
|
-
|
|
22
20
|
this.isRunning = true;
|
|
23
|
-
this.once('stop', () => (this.isRunning = false));
|
|
24
21
|
|
|
25
22
|
try {
|
|
26
23
|
while (this.isRunning) {
|
|
27
|
-
|
|
28
|
-
if (batch.length) {
|
|
29
|
-
await process(batch);
|
|
30
|
-
}
|
|
24
|
+
await this.step();
|
|
31
25
|
}
|
|
32
26
|
} finally {
|
|
33
27
|
this.isRunning = false;
|
|
@@ -36,14 +30,24 @@ export class Processor extends EventEmitter<{ stop: []; stopped: [] }> {
|
|
|
36
30
|
}
|
|
37
31
|
|
|
38
32
|
@trace()
|
|
33
|
+
private async step() {
|
|
34
|
+
const { poll, process } = this.options;
|
|
35
|
+
|
|
36
|
+
const batch = await poll();
|
|
37
|
+
if (batch.length) {
|
|
38
|
+
await process(batch);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
39
42
|
public async stop() {
|
|
40
43
|
if (!this.isRunning) {
|
|
41
44
|
return;
|
|
42
45
|
}
|
|
43
46
|
|
|
44
|
-
|
|
47
|
+
const stopPromise = new Promise<void>((resolve) => {
|
|
45
48
|
this.once('stopped', resolve);
|
|
46
|
-
this.emit('stop');
|
|
47
49
|
});
|
|
50
|
+
this.isRunning = false;
|
|
51
|
+
return stopPromise;
|
|
48
52
|
}
|
|
49
53
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
type Assignment = { [topicName: string]: number[] };
|
|
2
2
|
type TopicPartitionReplicaIds = { [topicName: string]: { [partition: number]: number[] } };
|
|
3
|
-
|
|
3
|
+
type NodeAssignment = { [replicaId: number]: Assignment };
|
|
4
4
|
|
|
5
5
|
/** From replica ids pick the one with fewest assignments to balance the load across brokers */
|
|
6
6
|
export const distributeAssignmentsToNodesBalanced = (
|
|
@@ -81,5 +81,3 @@ const getPartitionsByReplica = (assignment: Assignment, topicPartitionReplicaIds
|
|
|
81
81
|
}
|
|
82
82
|
return Object.entries(partitionsByReplicaId);
|
|
83
83
|
};
|
|
84
|
-
|
|
85
|
-
export const distributeAssignmentsToNodes = distributeAssignmentsToNodesBalanced;
|
package/src/index.ts
CHANGED
package/src/metadata.ts
CHANGED
|
@@ -2,6 +2,9 @@ import { API, API_ERROR } from './api';
|
|
|
2
2
|
import { Cluster } from './cluster';
|
|
3
3
|
import { delay } from './utils/delay';
|
|
4
4
|
import { KafkaTSApiError } from './utils/error';
|
|
5
|
+
import { createTracer } from './utils/tracer';
|
|
6
|
+
|
|
7
|
+
const trace = createTracer('Metadata');
|
|
5
8
|
|
|
6
9
|
type MetadataOptions = {
|
|
7
10
|
cluster: Cluster;
|
|
@@ -36,6 +39,7 @@ export class Metadata {
|
|
|
36
39
|
return this.topicNameById[id];
|
|
37
40
|
}
|
|
38
41
|
|
|
42
|
+
@trace()
|
|
39
43
|
public async fetchMetadataIfNecessary({
|
|
40
44
|
topics,
|
|
41
45
|
allowTopicAutoCreation,
|
package/src/producer/producer.ts
CHANGED
|
@@ -7,6 +7,9 @@ import { Message } from '../types';
|
|
|
7
7
|
import { delay } from '../utils/delay';
|
|
8
8
|
import { KafkaTSApiError } from '../utils/error';
|
|
9
9
|
import { memo } from '../utils/memo';
|
|
10
|
+
import { createTracer } from '../utils/tracer';
|
|
11
|
+
|
|
12
|
+
const trace = createTracer('Producer');
|
|
10
13
|
|
|
11
14
|
export type ProducerOptions = {
|
|
12
15
|
allowTopicAutoCreation?: boolean;
|
|
@@ -34,6 +37,7 @@ export class Producer {
|
|
|
34
37
|
this.partition = this.options.partitioner({ metadata: this.metadata });
|
|
35
38
|
}
|
|
36
39
|
|
|
40
|
+
@trace(() => ({ root: true }))
|
|
37
41
|
public async send(messages: Message[], { acks = -1 }: { acks?: -1 | 1 } = {}) {
|
|
38
42
|
await this.ensureConnected();
|
|
39
43
|
|
|
@@ -49,14 +53,15 @@ export class Producer {
|
|
|
49
53
|
);
|
|
50
54
|
|
|
51
55
|
await Promise.all(
|
|
52
|
-
Object.entries(nodeTopicPartitionMessages).map(
|
|
53
|
-
|
|
56
|
+
Object.entries(nodeTopicPartitionMessages).map(([nodeId, topicPartitionMessages]) =>
|
|
57
|
+
this.cluster.sendRequestToNode(parseInt(nodeId))(API.PRODUCE, {
|
|
54
58
|
transactionalId: null,
|
|
55
59
|
acks,
|
|
56
60
|
timeoutMs: 5000,
|
|
57
61
|
topicData: Object.entries(topicPartitionMessages).map(([topic, partitionMessages]) => ({
|
|
58
62
|
name: topic,
|
|
59
63
|
partitionData: Object.entries(partitionMessages).map(([partition, messages]) => {
|
|
64
|
+
const partitionIndex = parseInt(partition);
|
|
60
65
|
let baseTimestamp: bigint | undefined;
|
|
61
66
|
let maxTimestamp: bigint | undefined;
|
|
62
67
|
|
|
@@ -69,9 +74,9 @@ export class Producer {
|
|
|
69
74
|
}
|
|
70
75
|
});
|
|
71
76
|
|
|
72
|
-
const baseSequence = this.nextSequence(topic,
|
|
77
|
+
const baseSequence = this.nextSequence(topic, partitionIndex, messages.length);
|
|
73
78
|
return {
|
|
74
|
-
index:
|
|
79
|
+
index: partitionIndex,
|
|
75
80
|
baseOffset: 0n,
|
|
76
81
|
partitionLeaderEpoch: -1,
|
|
77
82
|
attributes: 0,
|
|
@@ -95,8 +100,8 @@ export class Producer {
|
|
|
95
100
|
};
|
|
96
101
|
}),
|
|
97
102
|
})),
|
|
98
|
-
})
|
|
99
|
-
|
|
103
|
+
}),
|
|
104
|
+
),
|
|
100
105
|
);
|
|
101
106
|
}
|
|
102
107
|
|
package/src/utils/decoder.ts
CHANGED
package/src/utils/encoder.ts
CHANGED
|
@@ -1,41 +1,49 @@
|
|
|
1
1
|
export class Encoder {
|
|
2
|
-
private
|
|
2
|
+
private chunks: Buffer[] = [];
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
this.
|
|
4
|
+
public getChunks() {
|
|
5
|
+
return this.chunks;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
public
|
|
9
|
-
this.
|
|
8
|
+
public getByteLength() {
|
|
9
|
+
return this.chunks.reduce((acc, chunk) => acc + chunk.byteLength, 0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public write(...buffers: Buffer[]) {
|
|
13
|
+
this.chunks.push(...buffers);
|
|
10
14
|
return this;
|
|
11
15
|
}
|
|
12
16
|
|
|
17
|
+
public writeEncoder(encoder: Encoder) {
|
|
18
|
+
return this.write(...encoder.getChunks());
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
public writeInt8(value: number) {
|
|
14
|
-
const buffer = Buffer.
|
|
22
|
+
const buffer = Buffer.allocUnsafe(1);
|
|
15
23
|
buffer.writeInt8(value);
|
|
16
24
|
return this.write(buffer);
|
|
17
25
|
}
|
|
18
26
|
|
|
19
27
|
public writeInt16(value: number) {
|
|
20
|
-
const buffer = Buffer.
|
|
28
|
+
const buffer = Buffer.allocUnsafe(2);
|
|
21
29
|
buffer.writeInt16BE(value);
|
|
22
30
|
return this.write(buffer);
|
|
23
31
|
}
|
|
24
32
|
|
|
25
33
|
public writeInt32(value: number) {
|
|
26
|
-
const buffer = Buffer.
|
|
34
|
+
const buffer = Buffer.allocUnsafe(4);
|
|
27
35
|
buffer.writeInt32BE(value);
|
|
28
36
|
return this.write(buffer);
|
|
29
37
|
}
|
|
30
38
|
|
|
31
39
|
public writeUInt32(value: number) {
|
|
32
|
-
const buffer = Buffer.
|
|
40
|
+
const buffer = Buffer.allocUnsafe(4);
|
|
33
41
|
buffer.writeUInt32BE(value);
|
|
34
42
|
return this.write(buffer);
|
|
35
43
|
}
|
|
36
44
|
|
|
37
45
|
public writeInt64(value: bigint) {
|
|
38
|
-
const buffer = Buffer.
|
|
46
|
+
const buffer = Buffer.allocUnsafe(8);
|
|
39
47
|
buffer.writeBigInt64BE(value);
|
|
40
48
|
return this.write(buffer);
|
|
41
49
|
}
|
|
@@ -75,7 +83,7 @@ export class Encoder {
|
|
|
75
83
|
return this.writeInt16(-1);
|
|
76
84
|
}
|
|
77
85
|
const byteLength = Buffer.byteLength(value, 'utf-8');
|
|
78
|
-
const buffer = Buffer.
|
|
86
|
+
const buffer = Buffer.allocUnsafe(byteLength);
|
|
79
87
|
buffer.write(value, 0, byteLength, 'utf-8');
|
|
80
88
|
return this.writeInt16(byteLength).write(buffer);
|
|
81
89
|
}
|
|
@@ -86,7 +94,7 @@ export class Encoder {
|
|
|
86
94
|
}
|
|
87
95
|
|
|
88
96
|
const byteLength = Buffer.byteLength(value, 'utf-8');
|
|
89
|
-
const buffer = Buffer.
|
|
97
|
+
const buffer = Buffer.allocUnsafe(byteLength);
|
|
90
98
|
buffer.write(value, 0, byteLength, 'utf-8');
|
|
91
99
|
return this.writeUVarInt(byteLength + 1).write(buffer);
|
|
92
100
|
}
|
|
@@ -110,21 +118,20 @@ export class Encoder {
|
|
|
110
118
|
}
|
|
111
119
|
|
|
112
120
|
public writeArray<T>(arr: T[], callback: (encoder: Encoder, item: T) => Encoder) {
|
|
113
|
-
|
|
114
|
-
return this.writeInt32(arr.length).write(Buffer.concat(buffers));
|
|
121
|
+
return this.writeInt32(arr.length).write(...arr.flatMap((item) => callback(new Encoder(), item).getChunks()));
|
|
115
122
|
}
|
|
116
123
|
|
|
117
124
|
public writeCompactArray<T>(arr: T[] | null, callback: (encoder: Encoder, item: T) => Encoder) {
|
|
118
125
|
if (arr === null) {
|
|
119
126
|
return this.writeUVarInt(0);
|
|
120
127
|
}
|
|
121
|
-
|
|
122
|
-
|
|
128
|
+
return this.writeUVarInt(arr.length + 1).write(
|
|
129
|
+
...arr.flatMap((item) => callback(new Encoder(), item).getChunks()),
|
|
130
|
+
);
|
|
123
131
|
}
|
|
124
132
|
|
|
125
133
|
public writeVarIntArray<T>(arr: T[], callback: (encoder: Encoder, item: T) => Encoder) {
|
|
126
|
-
|
|
127
|
-
return this.writeVarInt(buffers.length).write(Buffer.concat(buffers));
|
|
134
|
+
return this.writeVarInt(arr.length).write(...arr.flatMap((item) => callback(new Encoder(), item).getChunks()));
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
public writeBytes(value: Buffer) {
|
|
@@ -136,6 +143,6 @@ export class Encoder {
|
|
|
136
143
|
}
|
|
137
144
|
|
|
138
145
|
public value() {
|
|
139
|
-
return this.
|
|
146
|
+
return Buffer.concat(this.chunks);
|
|
140
147
|
}
|
|
141
148
|
}
|
package/src/utils/logger.ts
CHANGED
|
@@ -17,16 +17,16 @@ export const jsonSerializer = (_: unknown, v: unknown) => {
|
|
|
17
17
|
|
|
18
18
|
class JsonLogger implements Logger {
|
|
19
19
|
debug(message: string, metadata?: unknown) {
|
|
20
|
-
console.debug(JSON.stringify({ message, metadata }, jsonSerializer));
|
|
20
|
+
console.debug(JSON.stringify({ message, metadata, level: 'debug' }, jsonSerializer));
|
|
21
21
|
}
|
|
22
22
|
info(message: string, metadata?: unknown) {
|
|
23
|
-
console.info(JSON.stringify({ message, metadata }, jsonSerializer));
|
|
23
|
+
console.info(JSON.stringify({ message, metadata, level: 'info' }, jsonSerializer));
|
|
24
24
|
}
|
|
25
25
|
warn(message: string, metadata?: unknown) {
|
|
26
|
-
console.warn(JSON.stringify({ message, metadata }, jsonSerializer));
|
|
26
|
+
console.warn(JSON.stringify({ message, metadata, level: 'warning' }, jsonSerializer));
|
|
27
27
|
}
|
|
28
28
|
error(message: string, metadata?: unknown) {
|
|
29
|
-
console.error(JSON.stringify({ message, metadata }, jsonSerializer));
|
|
29
|
+
console.error(JSON.stringify({ message, metadata, level: 'error' }, jsonSerializer));
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
package/src/utils/tracer.ts
CHANGED
|
@@ -1,33 +1,49 @@
|
|
|
1
1
|
import { log } from './logger';
|
|
2
2
|
|
|
3
|
+
export interface Tracer {
|
|
4
|
+
startActiveSpan<T>(module: string, method: string, metadata: Record<string, unknown>, callback: () => T): T;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
class DebugTracer implements Tracer {
|
|
8
|
+
private isEnabled = process.env.DEBUG?.includes('kafka-ts');
|
|
9
|
+
|
|
10
|
+
startActiveSpan<T>(module: string, method: string, metadata: Record<string, unknown>, callback: () => T): T {
|
|
11
|
+
if (!this.isEnabled) {
|
|
12
|
+
return callback();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const startTime = Date.now();
|
|
16
|
+
|
|
17
|
+
const onEnd = <T>(result: T): T => {
|
|
18
|
+
log.debug(`[${module}.${method}] ${metadata?.message ?? ''} +${Date.now() - startTime}ms`, {
|
|
19
|
+
...metadata,
|
|
20
|
+
...(!!result && { result }),
|
|
21
|
+
});
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const result = callback();
|
|
26
|
+
if (result instanceof Promise) {
|
|
27
|
+
return result.then(onEnd) as T;
|
|
28
|
+
}
|
|
29
|
+
onEnd(result);
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
let tracer: Tracer = new DebugTracer();
|
|
35
|
+
|
|
36
|
+
export const setTracer = <T>(newTracer: Tracer) => {
|
|
37
|
+
tracer = newTracer;
|
|
38
|
+
};
|
|
39
|
+
|
|
3
40
|
export const createTracer =
|
|
4
|
-
(module: string
|
|
41
|
+
(module: string) =>
|
|
5
42
|
(fn?: (...args: any[]) => Record<string, unknown> | undefined) =>
|
|
6
43
|
(target: any, propertyKey: string, descriptor: PropertyDescriptor) => {
|
|
7
|
-
if (!process.env.DEBUG?.includes('kafka-ts')) return;
|
|
8
|
-
|
|
9
44
|
const original = descriptor.value;
|
|
10
45
|
descriptor.value = function (...args: any[]) {
|
|
11
|
-
const startTime = Date.now();
|
|
12
46
|
const metadata = fn?.(...args);
|
|
13
|
-
|
|
14
|
-
const onEnd = <T>(result: T): T => {
|
|
15
|
-
log.debug(`[${module}.${propertyKey}] ${metadata?.message ?? ''} +${Date.now() - startTime}ms`, {
|
|
16
|
-
...attributes,
|
|
17
|
-
...metadata,
|
|
18
|
-
...result && { result},
|
|
19
|
-
});
|
|
20
|
-
return result;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const result = original.apply(this, args);
|
|
24
|
-
if (result instanceof Promise) {
|
|
25
|
-
return result.then(onEnd);
|
|
26
|
-
} else {
|
|
27
|
-
onEnd(result);
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
47
|
+
return tracer.startActiveSpan(module, propertyKey, { ...metadata }, () => original.apply(this, args));
|
|
30
48
|
};
|
|
31
49
|
};
|
|
32
|
-
|
|
33
|
-
export const trace = createTracer('GLOBAL');
|
package/certs/ca.key
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
-----BEGIN PRIVATE KEY-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-
A228+muFo90WY9Wvf0RVNLinUCzmZ5lAuc62LtWPRG0AtDUEFFzWeXw5SHw3iSsE
|
|
10
|
-
SCz4EsbBxbxP2/DsR+ppAjsb2r9v/4uygQdHN1HESzlM+NUZA1x3ZERB/8OfWi8c
|
|
11
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
FTgFRJvvOF5hAt+gFRFlsOwvM/WWoVoORH8uqL5lIAqQlkQcBRSJ4pQhCeH9c5El
|
|
40
|
-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
-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
-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
-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
-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
-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
-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
-
hS+gl55cmPUeOHha67RllCp/io1yZkyzB3d3OBTfgZ6+JlzX+kWcl8d19VJiJA26
|
|
48
|
-
/FTb64EpKaB5jgmyaCHEln4FR8EViJdILgVqLliY7ObLhRv2ZozMkv1TDxquftec
|
|
49
|
-
dfGvXhZ42sWASfDnL62FFATAuIMQw2EZJNtjoxab1ZQZ+kgcuwgZ4oCI+ok56XSh
|
|
50
|
-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
|
|
51
|
-
CMLta4NyYC40J7EPwXKyrXSz8qhq
|
|
52
|
-
-----END PRIVATE KEY-----
|
package/certs/ca.srl
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0FB74CE1593C67E32AD89ADE70018EF63CB9C537
|
package/certs/kafka.crt
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
Udgk7nWQDEIRmBTs58va+HcJ1YrucEXL6tiNAYczmFIjakX7FC21GUDuq9hw8P44
|
|
13
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
+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
-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
-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
|
|
29
|
-
-----END CERTIFICATE-----
|
package/certs/kafka.csr
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE REQUEST-----
|
|
2
|
-
MIIEVTCCAj0CAQAwEDEOMAwGA1UEAwwFa2Fma2EwggIiMA0GCSqGSIb3DQEBAQUA
|
|
3
|
-
A4ICDwAwggIKAoICAQDPMfQ6rqXKOj51/MTiujAGpXgRzi82JdUKCa3Vl3ReDv2P
|
|
4
|
-
ceFpVl/fi0uJvEDUzipkgB7wTycuRIOC8/AiHy6co/VoCf4/j97sTOHeV4kwV8+o
|
|
5
|
-
//s5UApy3HC34o00ZwcP1yHJkN7Cnn1ZcA/Txulv1RfNqjhWaVzsxcs5rsb8C3+W
|
|
6
|
-
n4NbttBo7YXMf1wDPHYNzRTk2agiE3vHGqMrNAvrGmYmWhf+2a+LghG8EdBatXV0
|
|
7
|
-
GnhHA+QhqWCq84CyzfOecFndq6niZx6V3yj4yHDCjG+TefGV2SMuYgWSxAlV1g7l
|
|
8
|
-
rzV63H910rhzLEjTbfET6n6LhCDZUCZXU1JaOO+B186+7AUN75sVYHwKjHCFgivN
|
|
9
|
-
mpnwGy4FiDfhs2V+3CoFGQEYDgU3PaYDs0BFrDPnGeJtb/4bAaO8dzwaYjbb+rrk
|
|
10
|
-
s7YxzlHYJO51kAxCEZgU7OfL2vh3CdWK7nBFy+rYjQGHM5hSI2pF+xQttRlA7qvY
|
|
11
|
-
cPD+OIGy92D34QLlSnn97zZ9h+2lateKbMOH915lQd1Ac280+ZEEwp2kEB3TFyH3
|
|
12
|
-
e+iQnXwcaqmQGJsD4Kue3hn0sG6LksMMzZstvVxAoWk9Mrp8s1+UG919Zc3p7/8Z
|
|
13
|
-
ovXtN+h1VG7NdKop4ZYretzyY50OY4vyao58GhPMO+O5n7d8I1YFTTfQzR2ZlwID
|
|
14
|
-
AQABoAAwDQYJKoZIhvcNAQELBQADggIBAK4iQDBi/IQ5ef6HgExBXv9UTwX4HZGv
|
|
15
|
-
AJ16p3fNcldLLmz+r11llNNFL+QHn2iJNf3SJ3ULGrD108n2a0t2oLvXx1sNXhVc
|
|
16
|
-
vLHR2hkaQHqyh/jak63d8ngb2v0VT6GJ1zj3oGWGp3H5492Si+Ynu3Wx7lDe61fG
|
|
17
|
-
v02JdixlHYUH6FQZmGWYW1qWNsHcXP6YYTFXkCNJPnCJFRM5nYTrm0DH6bXgT4FG
|
|
18
|
-
jwHc4WbAs8dwsddueoHmV2P7CtiK5qH8r4v75hC5U3nMLStFP4upNzvB7q93JV0b
|
|
19
|
-
CogY+2MSpkf2+VfGGeaKUbHh09Gv05m6f1jQGcurYnvRem5K/OHoqpa2dUWbfIxC
|
|
20
|
-
7iIqEYNL4LALYFPBVnZPKss5/KP35bLt9LLho+YbLNpgy/5GRonvRQ3ZZvD3Le2O
|
|
21
|
-
1fXBOAf97M3r2NqhSLF/IMGay2cuooikgG8MExUzAgXlfOzVlnQ3WqxrOxn54Jep
|
|
22
|
-
pLfxi9k9020ZvnrrD6hCdnrszLbJwhWnhOy4xaJ6ZS132GaOGefmKkd/vy/2jBlz
|
|
23
|
-
McRWy9LQm1F8HMp4uuGVhaJntqPH3CFjHIgHT/Ro8hZIvCAY8LUCjsD2dhI7M3N7
|
|
24
|
-
+MSQchNA7Ty0wGGEX/5OUN4mH0RZh+mGinNe9n3NFKuBgJeWgOlwtL5kvh9rXkGq
|
|
25
|
-
aMwyvRORw3HH
|
|
26
|
-
-----END CERTIFICATE REQUEST-----
|
package/certs/kafka.key
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
-----BEGIN PRIVATE KEY-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
1RSEBCJw3HBPtC7CWDkhg0hqpOMuf2OR9iu+DrhClsd2K1EqZ6PmYUhSpWZM2Urw
|
|
19
|
-
PCVaTl1ZSkogJVv2OmrpGWm3qfMJCOr1VYk5onOsANIZUeo9wYYZNcA7+ObR0mS2
|
|
20
|
-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
-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
-
5vjJc61FA8ku1FQ4uYLe58xggVgVizl2/sdwPXVxUgbQ+YfnKtQNxvsY9fpk+dm6
|
|
23
|
-
x5bwqBCKiu6jQ0PN+/pxpc14UZmU8kvh+CZJ8G/jZzaovAINwxtS1pIzyXuTfLcT
|
|
24
|
-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
-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
-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
-
ZT++zqRQ5dXjIO0ANIVgn2e4kW7CEo2dE0b7NNJ1RCrenk55MffOoVexWxDwbksM
|
|
28
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
RlJX2x1wgaqYR/tayRezHA1ApBNqc3u16na3/MOzth3B/psGdaRcqppa7zU4QhCb
|
|
38
|
-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
-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
-
EDdbAeb8FJVuZf51X0+EYH/KJheqyDmp5iorFkkCggEBAJLz2BTFn1bj90h8llBo
|
|
41
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
|
51
|
-
0EaZY4cBQwWFep18Shu5QuXvsTbHmQ==
|
|
52
|
-
-----END PRIVATE KEY-----
|
package/src/utils/mutex.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export const createMutex = () => {
|
|
2
|
-
const queue: (() => void)[] = [];
|
|
3
|
-
let isLocked = false;
|
|
4
|
-
|
|
5
|
-
const acquire = () => {
|
|
6
|
-
return new Promise<void>((resolve) => {
|
|
7
|
-
if (!isLocked) {
|
|
8
|
-
isLocked = true;
|
|
9
|
-
return resolve();
|
|
10
|
-
}
|
|
11
|
-
queue.push(resolve);
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
const release = () => {
|
|
16
|
-
isLocked = false;
|
|
17
|
-
const next = queue.shift();
|
|
18
|
-
next && next();
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const exclusive = async (fn: () => Promise<void>) => {
|
|
22
|
-
await acquire();
|
|
23
|
-
try {
|
|
24
|
-
await fn();
|
|
25
|
-
} finally {
|
|
26
|
-
release();
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
return { exclusive };
|
|
31
|
-
};
|