kafka-ts 1.3.1-beta.3 → 1.3.1-beta.5

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.
@@ -5,60 +5,67 @@ const api_1 = require("../utils/api");
5
5
  const encoder_1 = require("../utils/encoder");
6
6
  const error_1 = require("../utils/error");
7
7
  /*
8
- JoinGroup Request (Version: 0) => group_id session_timeout_ms member_id protocol_type [protocols]
9
- group_id => STRING
8
+ JoinGroup Request (Version: 6) => group_id session_timeout_ms rebalance_timeout_ms member_id group_instance_id protocol_type [protocols] _tagged_fields
9
+ group_id => COMPACT_STRING
10
10
  session_timeout_ms => INT32
11
- member_id => STRING
12
- protocol_type => STRING
13
- protocols => name metadata
14
- name => STRING
15
- metadata => BYTES
11
+ rebalance_timeout_ms => INT32
12
+ member_id => COMPACT_STRING
13
+ group_instance_id => COMPACT_NULLABLE_STRING
14
+ protocol_type => COMPACT_STRING
15
+ protocols => name metadata _tagged_fields
16
+ name => COMPACT_STRING
17
+ metadata => COMPACT_BYTES
16
18
 
17
- JoinGroup Response (Version: 0) => error_code generation_id protocol_name leader member_id [members]
19
+ JoinGroup Response (Version: 6) => throttle_time_ms error_code generation_id protocol_name leader member_id [members] _tagged_fields
20
+ throttle_time_ms => INT32
18
21
  error_code => INT16
19
22
  generation_id => INT32
20
- protocol_name => STRING
21
- leader => STRING
22
- member_id => STRING
23
- members => member_id metadata
24
- member_id => STRING
25
- metadata => BYTES
23
+ protocol_name => COMPACT_STRING
24
+ leader => COMPACT_STRING
25
+ member_id => COMPACT_STRING
26
+ members => member_id group_instance_id metadata _tagged_fields
27
+ member_id => COMPACT_STRING
28
+ group_instance_id => COMPACT_NULLABLE_STRING
29
+ metadata => COMPACT_BYTES
26
30
  */
27
- const JOIN_GROUP_V0 = (0, api_1.createApi)({
31
+ const JOIN_GROUP_V6 = (0, api_1.createApi)({
28
32
  apiKey: 11,
29
- apiVersion: 0,
30
- requestHeaderVersion: 1,
31
- responseHeaderVersion: 0,
33
+ apiVersion: 6,
34
+ requestHeaderVersion: 2,
35
+ responseHeaderVersion: 1,
32
36
  request: (encoder, data) => encoder
33
- .writeString(data.groupId)
37
+ .writeCompactString(data.groupId)
34
38
  .writeInt32(data.sessionTimeoutMs)
35
- .writeString(data.memberId)
36
- .writeString(data.protocolType)
37
- .writeArray(data.protocols, (encoder, protocol) => {
39
+ .writeInt32(data.rebalanceTimeoutMs)
40
+ .writeCompactString(data.memberId)
41
+ .writeCompactString(data.groupInstanceId)
42
+ .writeCompactString(data.protocolType)
43
+ .writeCompactArray(data.protocols, (encoder, protocol) => {
38
44
  const metadata = new encoder_1.Encoder()
39
45
  .writeInt16(protocol.metadata.version)
40
46
  .writeArray(protocol.metadata.topics, (encoder, topic) => encoder.writeString(topic))
41
47
  .writeBytes(Buffer.alloc(0))
42
48
  .value();
43
- return encoder.writeString(protocol.name).writeBytes(metadata);
44
- }),
49
+ return encoder.writeCompactString(protocol.name).writeCompactBytes(metadata).writeTagBuffer();
50
+ })
51
+ .writeTagBuffer(),
45
52
  response: (decoder) => {
46
53
  const result = {
47
- throttleTimeMs: 0,
54
+ throttleTimeMs: decoder.readInt32(),
48
55
  errorCode: decoder.readInt16(),
49
56
  generationId: decoder.readInt32(),
50
57
  protocolType: null,
51
- protocolName: decoder.readString(),
52
- leader: decoder.readString(),
58
+ protocolName: decoder.readCompactString(),
59
+ leader: decoder.readCompactString(),
53
60
  skipAssignment: false,
54
- memberId: decoder.readString(),
55
- members: decoder.readArray((decoder) => ({
56
- memberId: decoder.readString(),
57
- groupInstanceId: null,
58
- metadata: decoder.readBytes(),
59
- tags: {},
61
+ memberId: decoder.readCompactString(),
62
+ members: decoder.readCompactArray((decoder) => ({
63
+ memberId: decoder.readCompactString(),
64
+ groupInstanceId: decoder.readCompactString(),
65
+ metadata: decoder.readCompactBytes(),
66
+ tags: decoder.readTagBuffer(),
60
67
  })),
61
- tags: {},
68
+ tags: decoder.readTagBuffer(),
62
69
  };
63
70
  if (result.errorCode)
64
71
  throw new error_1.KafkaTSApiError(result.errorCode, null, result);
@@ -95,7 +102,7 @@ JoinGroup Response (Version: 9) => throttle_time_ms error_code generation_id pro
95
102
  exports.JOIN_GROUP = (0, api_1.createApi)({
96
103
  apiKey: 11,
97
104
  apiVersion: 9,
98
- fallback: JOIN_GROUP_V0,
105
+ fallback: JOIN_GROUP_V6,
99
106
  requestHeaderVersion: 2,
100
107
  responseHeaderVersion: 1,
101
108
  request: (encoder, data) => encoder
@@ -6,36 +6,43 @@ const decoder_1 = require("../utils/decoder");
6
6
  const encoder_1 = require("../utils/encoder");
7
7
  const error_1 = require("../utils/error");
8
8
  /*
9
- SyncGroup Request (Version: 0) => group_id generation_id member_id [assignments]
10
- group_id => STRING
9
+ SyncGroup Request (Version: 4) => group_id generation_id member_id group_instance_id [assignments] _tagged_fields
10
+ group_id => COMPACT_STRING
11
11
  generation_id => INT32
12
- member_id => STRING
13
- assignments => member_id assignment
14
- member_id => STRING
15
- assignment => BYTES
12
+ member_id => COMPACT_STRING
13
+ group_instance_id => COMPACT_NULLABLE_STRING
14
+ assignments => member_id assignment _tagged_fields
15
+ member_id => COMPACT_STRING
16
+ assignment => COMPACT_BYTES
16
17
 
17
- SyncGroup Response (Version: 0) => error_code assignment
18
+ SyncGroup Response (Version: 4) => throttle_time_ms error_code assignment _tagged_fields
19
+ throttle_time_ms => INT32
18
20
  error_code => INT16
19
- assignment => BYTES
21
+ assignment => COMPACT_BYTES
20
22
  */
21
- const SYNC_GROUP_V0 = (0, api_1.createApi)({
23
+ const SYNC_GROUP_V4 = (0, api_1.createApi)({
22
24
  apiKey: 14,
23
- apiVersion: 0,
24
- requestHeaderVersion: 1,
25
- responseHeaderVersion: 0,
25
+ apiVersion: 4,
26
+ requestHeaderVersion: 2,
27
+ responseHeaderVersion: 1,
26
28
  request: (encoder, data) => encoder
27
- .writeString(data.groupId)
29
+ .writeCompactString(data.groupId)
28
30
  .writeInt32(data.generationId)
29
- .writeString(data.memberId)
30
- .writeArray(data.assignments, (encoder, assignment) => encoder.writeString(assignment.memberId).writeBytes(encodeAssignment(assignment.assignment))),
31
+ .writeCompactString(data.memberId)
32
+ .writeCompactString(data.groupInstanceId)
33
+ .writeCompactArray(data.assignments, (encoder, assignment) => encoder
34
+ .writeCompactString(assignment.memberId)
35
+ .writeCompactBytes(encodeAssignment(assignment.assignment))
36
+ .writeTagBuffer())
37
+ .writeTagBuffer(),
31
38
  response: (decoder) => {
32
39
  const result = {
33
- throttleTimeMs: 0,
40
+ throttleTimeMs: decoder.readInt32(),
34
41
  errorCode: decoder.readInt16(),
35
42
  protocolType: null,
36
43
  protocolName: null,
37
- assignments: decodeAssignment(decoder.readBytes()),
38
- tags: {},
44
+ assignments: decodeAssignment(decoder.readCompactBytes()),
45
+ tags: decoder.readTagBuffer(),
39
46
  };
40
47
  if (result.errorCode)
41
48
  throw new error_1.KafkaTSApiError(result.errorCode, null, result);
@@ -64,7 +71,7 @@ SyncGroup Response (Version: 5) => throttle_time_ms error_code protocol_type pro
64
71
  exports.SYNC_GROUP = (0, api_1.createApi)({
65
72
  apiKey: 14,
66
73
  apiVersion: 5,
67
- fallback: SYNC_GROUP_V0,
74
+ fallback: SYNC_GROUP_V4,
68
75
  requestHeaderVersion: 2,
69
76
  responseHeaderVersion: 1,
70
77
  request: (encoder, data) => encoder
package/dist/broker.d.ts CHANGED
@@ -21,7 +21,7 @@ export declare class Broker {
21
21
  constructor(options: BrokerOptions);
22
22
  connect(): Promise<this>;
23
23
  disconnect(): Promise<void>;
24
- private validateApiVersions;
24
+ private fetchApiVersions;
25
25
  private saslHandshake;
26
26
  private saslAuthenticate;
27
27
  }
package/dist/broker.js CHANGED
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Broker = void 0;
4
4
  const api_1 = require("./api");
5
5
  const connection_1 = require("./connection");
6
- const logger_1 = require("./utils/logger");
7
6
  class Broker {
8
7
  options;
9
8
  connection;
@@ -21,7 +20,7 @@ class Broker {
21
20
  async connect() {
22
21
  if (!this.connection.isConnected()) {
23
22
  await this.connection.connect();
24
- await this.validateApiVersions();
23
+ await this.fetchApiVersions();
25
24
  await this.saslHandshake();
26
25
  await this.saslAuthenticate();
27
26
  }
@@ -30,18 +29,8 @@ class Broker {
30
29
  async disconnect() {
31
30
  await this.connection.disconnect();
32
31
  }
33
- async validateApiVersions() {
32
+ async fetchApiVersions() {
34
33
  const { versions } = await this.sendRequest(api_1.API.API_VERSIONS, {});
35
- const apiByKey = Object.fromEntries(Object.values(api_1.API).map((api) => [api.apiKey, api]));
36
- versions.forEach(({ apiKey, minVersion, maxVersion }) => {
37
- const api = apiByKey[apiKey];
38
- if (!api) {
39
- return;
40
- }
41
- if (api.apiVersion < minVersion || api.apiVersion > maxVersion) {
42
- logger_1.log.warn(`Broker does not support API ${(0, api_1.getApiName)(api)} version ${api.apiVersion} (minVersion=${minVersion}, maxVersion=${maxVersion})`);
43
- }
44
- });
45
34
  const versionsByApiKey = Object.fromEntries(versions.map(({ apiKey, minVersion, maxVersion }) => [apiKey, { minVersion, maxVersion }]));
46
35
  this.connection.setVersions(versionsByApiKey);
47
36
  }
@@ -123,6 +123,7 @@ class Connection {
123
123
  }
124
124
  throw new Error(`Broker does not support API ${(0, api_1.getApiName)(api)} version ${api.apiVersion} (minVersion=${versionInfo.minVersion}, maxVersion=${versionInfo.maxVersion})`);
125
125
  }
126
+ logger_1.log.debug(`Using API ${(0, api_1.getApiName)(api)} version ${api.apiVersion}`);
126
127
  return api;
127
128
  }
128
129
  validateVersionCached = (0, cached_1.cached)(this.validateVersion.bind(this), (api) => api.apiKey.toString());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kafka-ts",
3
- "version": "1.3.1-beta.3",
3
+ "version": "1.3.1-beta.5",
4
4
  "main": "dist/index.js",
5
5
  "author": "Priit Käärd",
6
6
  "license": "MIT",