@testcontainers/kafka 10.7.2 → 10.8.1
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.
|
@@ -20,12 +20,14 @@ interface PKCS12CertificateStore {
|
|
|
20
20
|
}
|
|
21
21
|
export declare class KafkaContainer extends GenericContainer {
|
|
22
22
|
private readonly uuid;
|
|
23
|
-
private
|
|
23
|
+
private mode;
|
|
24
24
|
private zooKeeperHost?;
|
|
25
25
|
private zooKeeperPort?;
|
|
26
26
|
private saslSslConfig?;
|
|
27
|
+
private originalWaitinStrategy;
|
|
27
28
|
constructor(image?: string);
|
|
28
29
|
withZooKeeper(host: string, port: number): this;
|
|
30
|
+
withKraft(): this;
|
|
29
31
|
withSaslSslListener(options: SaslSslListenerOptions): this;
|
|
30
32
|
protected beforeContainerCreated(): Promise<void>;
|
|
31
33
|
start(): Promise<StartedKafkaContainer>;
|
|
@@ -34,6 +36,11 @@ export declare class KafkaContainer extends GenericContainer {
|
|
|
34
36
|
private addPlaintextListener;
|
|
35
37
|
private updateAdvertisedListeners;
|
|
36
38
|
private createUser;
|
|
39
|
+
private verifyMinKraftVersion;
|
|
40
|
+
private isLessThanCP;
|
|
41
|
+
private commandKraftCreateUser;
|
|
42
|
+
private commandKraft;
|
|
43
|
+
private commandZookeeper;
|
|
37
44
|
}
|
|
38
45
|
export declare class StartedKafkaContainer extends AbstractStartedContainer {
|
|
39
46
|
constructor(startedTestContainer: StartedTestContainer);
|
package/build/kafka-container.js
CHANGED
|
@@ -4,14 +4,28 @@ exports.StartedKafkaContainer = exports.KafkaContainer = exports.KAFKA_IMAGE = v
|
|
|
4
4
|
const testcontainers_1 = require("testcontainers");
|
|
5
5
|
const KAFKA_PORT = 9093;
|
|
6
6
|
const KAFKA_BROKER_PORT = 9092;
|
|
7
|
+
const KAFKA_CONTROLLER_PORT = 9094;
|
|
7
8
|
const DEFAULT_ZOOKEEPER_PORT = 2181;
|
|
9
|
+
const DEFAULT_CLUSTER_ID = "4L6g3nShT-eMCtK--X86sw";
|
|
10
|
+
const STARTER_SCRIPT = "/testcontainers_start.sh";
|
|
11
|
+
const WAIT_FOR_SCRIPT_MESSAGE = "Waiting for script...";
|
|
12
|
+
// https://docs.confluent.io/platform/7.0.0/release-notes/index.html#ak-raft-kraft
|
|
13
|
+
const MIN_KRAFT_VERSION = "7.0.0";
|
|
14
|
+
const MIN_KRAFT_SASL_VERSION = "7.5.0";
|
|
8
15
|
exports.KAFKA_IMAGE = "confluentinc/cp-kafka:7.2.2";
|
|
16
|
+
var KafkaMode;
|
|
17
|
+
(function (KafkaMode) {
|
|
18
|
+
KafkaMode[KafkaMode["EMBEDDED_ZOOKEEPER"] = 0] = "EMBEDDED_ZOOKEEPER";
|
|
19
|
+
KafkaMode[KafkaMode["PROVIDED_ZOOKEEPER"] = 1] = "PROVIDED_ZOOKEEPER";
|
|
20
|
+
KafkaMode[KafkaMode["KRAFT"] = 2] = "KRAFT";
|
|
21
|
+
})(KafkaMode || (KafkaMode = {}));
|
|
9
22
|
class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
10
23
|
uuid = new testcontainers_1.RandomUuid();
|
|
11
|
-
|
|
24
|
+
mode = KafkaMode.EMBEDDED_ZOOKEEPER;
|
|
12
25
|
zooKeeperHost;
|
|
13
26
|
zooKeeperPort;
|
|
14
27
|
saslSslConfig;
|
|
28
|
+
originalWaitinStrategy;
|
|
15
29
|
constructor(image = exports.KAFKA_IMAGE) {
|
|
16
30
|
super(image);
|
|
17
31
|
this.withExposedPorts(KAFKA_PORT).withStartupTimeout(180000).withEnvironment({
|
|
@@ -25,13 +39,21 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
25
39
|
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: "0",
|
|
26
40
|
KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE: "false",
|
|
27
41
|
});
|
|
42
|
+
this.originalWaitinStrategy = this.waitStrategy;
|
|
28
43
|
}
|
|
29
44
|
withZooKeeper(host, port) {
|
|
30
|
-
this.
|
|
45
|
+
this.mode = KafkaMode.PROVIDED_ZOOKEEPER;
|
|
31
46
|
this.zooKeeperHost = host;
|
|
32
47
|
this.zooKeeperPort = port;
|
|
33
48
|
return this;
|
|
34
49
|
}
|
|
50
|
+
withKraft() {
|
|
51
|
+
this.verifyMinKraftVersion();
|
|
52
|
+
this.mode = KafkaMode.KRAFT;
|
|
53
|
+
this.zooKeeperHost = undefined;
|
|
54
|
+
this.zooKeeperPort = undefined;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
35
57
|
withSaslSslListener(options) {
|
|
36
58
|
this.saslSslConfig = options;
|
|
37
59
|
return this;
|
|
@@ -45,30 +67,71 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
45
67
|
else {
|
|
46
68
|
this.addPlaintextListener();
|
|
47
69
|
}
|
|
48
|
-
|
|
49
|
-
if (this.isZooKeeperProvided) {
|
|
70
|
+
if (this.mode === KafkaMode.PROVIDED_ZOOKEEPER) {
|
|
50
71
|
this.withEnvironment({ KAFKA_ZOOKEEPER_CONNECT: `${this.zooKeeperHost}:${this.zooKeeperPort}` });
|
|
51
72
|
}
|
|
52
|
-
else {
|
|
73
|
+
else if (this.mode === KafkaMode.EMBEDDED_ZOOKEEPER) {
|
|
53
74
|
this.zooKeeperHost = this.uuid.nextUuid();
|
|
54
75
|
this.zooKeeperPort = DEFAULT_ZOOKEEPER_PORT;
|
|
55
76
|
this.withExposedPorts(this.zooKeeperPort);
|
|
56
77
|
this.withEnvironment({ KAFKA_ZOOKEEPER_CONNECT: `localhost:${this.zooKeeperPort}` });
|
|
57
|
-
command += "echo 'clientPort=" + this.zooKeeperPort + "' > zookeeper.properties\n";
|
|
58
|
-
command += "echo 'dataDir=/var/lib/zookeeper/data' >> zookeeper.properties\n";
|
|
59
|
-
command += "echo 'dataLogDir=/var/lib/zookeeper/log' >> zookeeper.properties\n";
|
|
60
|
-
command += "zookeeper-server-start zookeeper.properties &\n";
|
|
61
78
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
else {
|
|
80
|
+
// Kraft
|
|
81
|
+
this.withEnvironment({
|
|
82
|
+
CLUSTER_ID: DEFAULT_CLUSTER_ID,
|
|
83
|
+
KAFKA_NODE_ID: this.environment["KAFKA_BROKER_ID"],
|
|
84
|
+
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: this.environment["KAFKA_LISTENER_SECURITY_PROTOCOL_MAP"] + ",CONTROLLER:PLAINTEXT",
|
|
85
|
+
KAFKA_LISTENERS: `${this.environment["KAFKA_LISTENERS"]},CONTROLLER://0.0.0.0:${KAFKA_CONTROLLER_PORT}`,
|
|
86
|
+
KAFKA_PROCESS_ROLES: "broker,controller",
|
|
87
|
+
KAFKA_CONTROLLER_QUORUM_VOTERS: `${this.environment["KAFKA_BROKER_ID"]}@${network}:${KAFKA_CONTROLLER_PORT}`,
|
|
88
|
+
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER",
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Change the wait strategy to wait for a log message from a fake starter script
|
|
92
|
+
// so that we can put a real starter script in place at that moment
|
|
93
|
+
this.originalWaitinStrategy = this.waitStrategy;
|
|
94
|
+
this.waitStrategy = testcontainers_1.Wait.forLogMessage(WAIT_FOR_SCRIPT_MESSAGE);
|
|
95
|
+
this.withEntrypoint(["sh"]);
|
|
96
|
+
this.withCommand([
|
|
97
|
+
"-c",
|
|
98
|
+
`echo '${WAIT_FOR_SCRIPT_MESSAGE}'; while [ ! -f ${STARTER_SCRIPT} ]; do sleep 0.1; done; ${STARTER_SCRIPT}`,
|
|
99
|
+
]);
|
|
65
100
|
}
|
|
66
101
|
async start() {
|
|
102
|
+
if (this.mode === KafkaMode.KRAFT && this.saslSslConfig && this.isLessThanCP(7, 5)) {
|
|
103
|
+
throw new Error(`Provided Confluent Platform's version ${this.imageName.tag} is not supported in Kraft mode with sasl (must be ${MIN_KRAFT_SASL_VERSION} or above)`);
|
|
104
|
+
}
|
|
67
105
|
return new StartedKafkaContainer(await super.start());
|
|
68
106
|
}
|
|
69
107
|
async containerStarted(container, inspectResult) {
|
|
70
|
-
|
|
71
|
-
|
|
108
|
+
let command = "#!/bin/bash\n";
|
|
109
|
+
const advertisedListeners = this.updateAdvertisedListeners(container, inspectResult);
|
|
110
|
+
// exporting KAFKA_ADVERTISED_LISTENERS with the container hostname
|
|
111
|
+
command += `export KAFKA_ADVERTISED_LISTENERS=${advertisedListeners}\n`;
|
|
112
|
+
if (this.mode !== KafkaMode.KRAFT || this.isLessThanCP(7, 4)) {
|
|
113
|
+
// Optimization: skip the checks
|
|
114
|
+
command += "echo '' > /etc/confluent/docker/ensure \n";
|
|
115
|
+
}
|
|
116
|
+
if (this.mode === KafkaMode.KRAFT) {
|
|
117
|
+
if (this.saslSslConfig) {
|
|
118
|
+
command += this.commandKraftCreateUser(this.saslSslConfig);
|
|
119
|
+
}
|
|
120
|
+
if (this.isLessThanCP(7, 4)) {
|
|
121
|
+
command += this.commandKraft();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (this.mode === KafkaMode.EMBEDDED_ZOOKEEPER) {
|
|
125
|
+
command += this.commandZookeeper();
|
|
126
|
+
}
|
|
127
|
+
// Run the original command
|
|
128
|
+
command += "/etc/confluent/docker/run \n";
|
|
129
|
+
await container.copyContentToContainer([{ content: command, target: STARTER_SCRIPT, mode: 0o777 }]);
|
|
130
|
+
const client = await (0, testcontainers_1.getContainerRuntimeClient)();
|
|
131
|
+
const dockerContainer = client.container.getById(container.getId());
|
|
132
|
+
const boundPorts = testcontainers_1.BoundPorts.fromInspectResult(client.info.containerRuntime.hostIps, inspectResult).filter(this.exposedPorts);
|
|
133
|
+
await (0, testcontainers_1.waitForContainer)(client, dockerContainer, this.originalWaitinStrategy, boundPorts);
|
|
134
|
+
if (this.saslSslConfig && this.mode !== KafkaMode.KRAFT) {
|
|
72
135
|
await this.createUser(container, this.saslSslConfig.sasl);
|
|
73
136
|
}
|
|
74
137
|
}
|
|
@@ -100,8 +163,8 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
100
163
|
KAFKA_LISTENERS: `PLAINTEXT://0.0.0.0:${KAFKA_PORT},BROKER://0.0.0.0:${KAFKA_BROKER_PORT}`,
|
|
101
164
|
}).withExposedPorts(KAFKA_PORT);
|
|
102
165
|
}
|
|
103
|
-
|
|
104
|
-
|
|
166
|
+
updateAdvertisedListeners(container, inspectResult) {
|
|
167
|
+
let advertisedListeners = `BROKER://${inspectResult.hostname}:${KAFKA_BROKER_PORT}`;
|
|
105
168
|
let bootstrapServers = `PLAINTEXT://${container.getHost()}:${container.getMappedPort(KAFKA_PORT)}`;
|
|
106
169
|
if (this.saslSslConfig) {
|
|
107
170
|
if (this.networkMode) {
|
|
@@ -111,21 +174,8 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
111
174
|
bootstrapServers = `${bootstrapServers},SECURE://${container.getHost()}:${container.getMappedPort(this.saslSslConfig.port)}`;
|
|
112
175
|
}
|
|
113
176
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
"--alter",
|
|
117
|
-
"--bootstrap-server",
|
|
118
|
-
brokerAdvertisedListener,
|
|
119
|
-
"--entity-type",
|
|
120
|
-
"brokers",
|
|
121
|
-
"--entity-name",
|
|
122
|
-
this.environment["KAFKA_BROKER_ID"],
|
|
123
|
-
"--add-config",
|
|
124
|
-
`advertised.listeners=[${bootstrapServers},${brokerAdvertisedListener}]`,
|
|
125
|
-
]);
|
|
126
|
-
if (exitCode !== 0) {
|
|
127
|
-
throw new Error(`Kafka container configuration failed with exit code ${exitCode}: ${output}`);
|
|
128
|
-
}
|
|
177
|
+
advertisedListeners += `,${bootstrapServers}`;
|
|
178
|
+
return advertisedListeners;
|
|
129
179
|
}
|
|
130
180
|
async createUser(container, { user: { name, password }, mechanism }) {
|
|
131
181
|
const { output, exitCode } = await container.exec([
|
|
@@ -146,6 +196,42 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
146
196
|
throw new Error(`Kafka container configuration failed with exit code ${exitCode}: ${output}`);
|
|
147
197
|
}
|
|
148
198
|
}
|
|
199
|
+
verifyMinKraftVersion() {
|
|
200
|
+
if (this.isLessThanCP(7)) {
|
|
201
|
+
throw new Error(`Provided Confluent Platform's version ${this.imageName.tag} is not supported in Kraft mode (must be ${MIN_KRAFT_VERSION} or above)`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
isLessThanCP(max, min = 0, patch = 0) {
|
|
205
|
+
if (this.imageName.tag === "latest") {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
const parts = this.imageName.tag.split(".");
|
|
209
|
+
return !(parts.length > 2 &&
|
|
210
|
+
(Number(parts[0]) > max ||
|
|
211
|
+
(Number(parts[0]) === max &&
|
|
212
|
+
(Number(parts[1]) > min || (Number(parts[1]) === min && Number(parts[2]) >= patch)))));
|
|
213
|
+
}
|
|
214
|
+
commandKraftCreateUser(saslOptions) {
|
|
215
|
+
return ("echo 'kafka-storage format --ignore-formatted " +
|
|
216
|
+
`-t "${this.environment["CLUSTER_ID"]}" ` +
|
|
217
|
+
"-c /etc/kafka/kafka.properties " +
|
|
218
|
+
`--add-scram "${saslOptions.sasl.mechanism}=[name=${saslOptions.sasl.user.name},password=${saslOptions.sasl.user.password}]"' >> /etc/confluent/docker/configure\n`);
|
|
219
|
+
}
|
|
220
|
+
commandKraft() {
|
|
221
|
+
let command = "sed -i '/KAFKA_ZOOKEEPER_CONNECT/d' /etc/confluent/docker/configure\n";
|
|
222
|
+
command +=
|
|
223
|
+
"echo 'kafka-storage format --ignore-formatted " +
|
|
224
|
+
`-t "${this.environment["CLUSTER_ID"]}" ` +
|
|
225
|
+
"-c /etc/kafka/kafka.properties' >> /etc/confluent/docker/configure\n";
|
|
226
|
+
return command;
|
|
227
|
+
}
|
|
228
|
+
commandZookeeper() {
|
|
229
|
+
let command = "echo 'clientPort=" + DEFAULT_ZOOKEEPER_PORT + "' > zookeeper.properties\n";
|
|
230
|
+
command += "echo 'dataDir=/var/lib/zookeeper/data' >> zookeeper.properties\n";
|
|
231
|
+
command += "echo 'dataLogDir=/var/lib/zookeeper/log' >> zookeeper.properties\n";
|
|
232
|
+
command += "zookeeper-server-start zookeeper.properties &\n";
|
|
233
|
+
return command;
|
|
234
|
+
}
|
|
149
235
|
}
|
|
150
236
|
exports.KafkaContainer = KafkaContainer;
|
|
151
237
|
class StartedKafkaContainer extends testcontainers_1.AbstractStartedContainer {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka-container.js","sourceRoot":"","sources":["../src/kafka-container.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"kafka-container.js","sourceRoot":"","sources":["../src/kafka-container.ts"],"names":[],"mappings":";;;AAAA,mDAawB;AAExB,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAClD,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD,kFAAkF;AAClF,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAClC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAE1B,QAAA,WAAW,GAAG,6BAA6B,CAAC;AAwBzD,IAAK,SAIJ;AAJD,WAAK,SAAS;IACZ,qEAAkB,CAAA;IAClB,qEAAkB,CAAA;IAClB,2CAAK,CAAA;AACP,CAAC,EAJI,SAAS,KAAT,SAAS,QAIb;AAED,MAAa,cAAe,SAAQ,iCAAgB;IACjC,IAAI,GAAS,IAAI,2BAAU,EAAE,CAAC;IAEvC,IAAI,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACpC,aAAa,CAAU;IACvB,aAAa,CAAU;IACvB,aAAa,CAA0B;IACvC,sBAAsB,CAAe;IAE7C,YAAY,KAAK,GAAG,mBAAW;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,MAAO,CAAC,CAAC,eAAe,CAAC;YAC5E,oCAAoC,EAAE,sCAAsC;YAC5E,gCAAgC,EAAE,QAAQ;YAC1C,eAAe,EAAE,GAAG;YACpB,sCAAsC,EAAE,GAAG;YAC3C,kCAAkC,EAAE,GAAG;YACvC,mCAAmC,EAAE,GAAG;YACxC,iCAAiC,EAAE,qBAAqB;YACxD,sCAAsC,EAAE,GAAG;YAC3C,sCAAsC,EAAE,OAAO;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC;IAClD,CAAC;IAEM,aAAa,CAAC,IAAY,EAAE,IAAY;QAC7C,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,kBAAkB,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,OAA+B;QACjD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,KAAK,CAAC,sBAAsB;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1G,IAAI,CAAC,eAAe,CAAC,EAAE,0BAA0B,EAAE,YAAY,OAAO,IAAI,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAEjG,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACxD;aAAM;YACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,kBAAkB,EAAE;YAC9C,IAAI,CAAC,eAAe,CAAC,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;SAClG;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,kBAAkB,EAAE;YACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;YAC5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,IAAI,CAAC,eAAe,CAAC,EAAE,uBAAuB,EAAE,aAAa,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;SACtF;aAAM;YACL,QAAQ;YACR,IAAI,CAAC,eAAe,CAAC;gBACnB,UAAU,EAAE,kBAAkB;gBAC9B,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;gBAClD,oCAAoC,EAClC,IAAI,CAAC,WAAW,CAAC,sCAAsC,CAAC,GAAG,uBAAuB;gBACpF,eAAe,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,yBAAyB,qBAAqB,EAAE;gBACvG,mBAAmB,EAAE,mBAAmB;gBACxC,8BAA8B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,OAAO,IAAI,qBAAqB,EAAE;gBAC5G,+BAA+B,EAAE,YAAY;aAC9C,CAAC,CAAC;SACJ;QAED,gFAAgF;QAChF,mEAAmE;QACnE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,qBAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC;YACf,IAAI;YACJ,SAAS,uBAAuB,mBAAmB,cAAc,2BAA2B,cAAc,EAAE;SAC7G,CAAC,CAAC;IACL,CAAC;IAEe,KAAK,CAAC,KAAK;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAClF,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,SAAS,CAAC,GAAG,sDAAsD,sBAAsB,YAAY,CACpJ,CAAC;SACH;QACD,OAAO,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAEkB,KAAK,CAAC,gBAAgB,CACvC,SAA+B,EAC/B,aAA4B;QAE5B,IAAI,OAAO,GAAG,eAAe,CAAC;QAC9B,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACrF,mEAAmE;QACnE,OAAO,IAAI,qCAAqC,mBAAmB,IAAI,CAAC;QAExE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC5D,gCAAgC;YAChC,OAAO,IAAI,2CAA2C,CAAC;SACxD;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE;YACjC,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,OAAO,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC5D;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAC3B,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;aAChC;SACF;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,kBAAkB,EAAE;YACrD,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACpC;QAED,2BAA2B;QAC3B,OAAO,IAAI,8BAA8B,CAAC;QAC1C,MAAM,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpG,MAAM,MAAM,GAAG,MAAM,IAAA,0CAAyB,GAAE,CAAC;QACjD,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,2BAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,MAAM,CACzG,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,MAAM,IAAA,iCAAgB,EAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QAEzF,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE;YACvD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC3D;IACH,CAAC;IAEO,6BAA6B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAA0B;QAChG,IAAI,CAAC,eAAe,CAAC;YACnB,eAAe,EAAE,oBAAoB,IAAI,wBAAwB,UAAU,qBAAqB,iBAAiB,EAAE;YACnH,oCAAoC,EAAE,sDAAsD;YAC5F,kBAAkB,EAAE,SAAS;YAC7B,2BAA2B,EAAE,wCAAwC;YACrE,2BAA2B,EAAE,QAAQ,CAAC,UAAU;YAChD,uBAAuB,EAAE,QAAQ;YACjC,6BAA6B,EAAE,IAAI,CAAC,SAAS;YAC7C,CAAC,8BAA8B,IAAI,CAAC,SAAS,mBAAmB,CAAC,EAC/D,mEAAmE;SACtE,CAAC;aACC,0BAA0B,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC,CAAC;aAC7G,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,0BAA0B,CAAC;gBAC9B,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,0CAA0C,EAAE;aACpF,CAAC,CAAC,eAAe,CAAC;gBACjB,6BAA6B,EAAE,0CAA0C;gBACzE,6BAA6B,EAAE,UAAU,CAAC,UAAU;gBACpD,yBAAyB,EAAE,QAAQ;aACpC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,eAAe,CAAC;YACnB,eAAe,EAAE,uBAAuB,UAAU,qBAAqB,iBAAiB,EAAE;SAC3F,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAEO,yBAAyB,CAAC,SAA+B,EAAE,aAA4B;QAC7F,IAAI,mBAAmB,GAAG,YAAY,aAAa,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QAEpF,IAAI,gBAAgB,GAAG,eAAe,SAAS,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QACnG,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,gBAAgB,GAAG,GAAG,gBAAgB,aAAa,aAAa,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aACxG;iBAAM;gBACL,gBAAgB,GAAG,GAAG,gBAAgB,aAAa,SAAS,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,aAAa,CAC/F,IAAI,CAAC,aAAa,CAAC,IAAI,CACxB,EAAE,CAAC;aACL;SACF;QACD,mBAAmB,IAAI,IAAI,gBAAgB,EAAE,CAAC;QAC9C,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,SAA+B,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAe;QAC5G,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC;YAChD,eAAe;YACf,SAAS;YACT,0IAA0I;YAC1I,6FAA6F;YAC7F,aAAa;YACb,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC;YAC3C,eAAe;YACf,OAAO;YACP,eAAe;YACf,GAAG,IAAI,EAAE;YACT,cAAc;YACd,GAAG,SAAS,cAAc,QAAQ,GAAG;SACtC,CAAC,CAAC;QAEH,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,uDAAuD,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;SAC/F;IACH,CAAC;IAEO,qBAAqB;QAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,SAAS,CAAC,GAAG,4CAA4C,iBAAiB,YAAY,CACrI,CAAC;SACH;IACH,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;QAClD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,QAAQ,EAAE;YACnC,OAAO,KAAK,CAAC;SACd;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,CACN,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;gBACrB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;oBACvB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1F,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,WAAmC;QAChE,OAAO,CACL,gDAAgD;YAChD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI;YACzC,iCAAiC;YACjC,gBAAgB,WAAW,CAAC,IAAI,CAAC,SAAS,UAAU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,0CAA0C,CACpK,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,IAAI,OAAO,GAAG,uEAAuE,CAAC;QACtF,OAAO;YACL,gDAAgD;gBAChD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI;gBACzC,sEAAsE,CAAC;QACzE,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB;QACtB,IAAI,OAAO,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,4BAA4B,CAAC;QAC1F,OAAO,IAAI,kEAAkE,CAAC;QAC9E,OAAO,IAAI,oEAAoE,CAAC;QAChF,OAAO,IAAI,iDAAiD,CAAC;QAC7D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA9PD,wCA8PC;AAED,MAAa,qBAAsB,SAAQ,yCAAwB;IACjE,YAAY,oBAA0C;QACpD,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC9B,CAAC;CACF;AAJD,sDAIC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testcontainers/kafka",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.8.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kafka",
|
|
@@ -32,6 +32,6 @@
|
|
|
32
32
|
"kafkajs": "^2.2.4"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"testcontainers": "^10.
|
|
35
|
+
"testcontainers": "^10.8.1"
|
|
36
36
|
}
|
|
37
37
|
}
|