UNPKG

kafka-ts

Version:

**KafkaTS** is a Apache Kafka client library for Node.js. It provides both a low-level API for communicating directly with the Apache Kafka cluster and high-level APIs for publishing and subscribing to Kafka topics.

169 lines (165 loc) 6.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SYNC_GROUP = void 0; const api_1 = require("../utils/api"); const decoder_1 = require("../utils/decoder"); const encoder_1 = require("../utils/encoder"); const error_1 = require("../utils/error"); /* SyncGroup Request (Version: 3) => group_id generation_id member_id group_instance_id [assignments] group_id => STRING generation_id => INT32 member_id => STRING group_instance_id => NULLABLE_STRING assignments => member_id assignment member_id => STRING assignment => BYTES SyncGroup Response (Version: 3) => throttle_time_ms error_code assignment throttle_time_ms => INT32 error_code => INT16 assignment => BYTES */ const SYNC_GROUP_V3 = (0, api_1.createApi)({ apiKey: 14, apiVersion: 3, requestHeaderVersion: 1, responseHeaderVersion: 0, request: (encoder, data) => encoder .writeString(data.groupId) .writeInt32(data.generationId) .writeString(data.memberId) .writeString(data.groupInstanceId) .writeArray(data.assignments, (encoder, assignment) => encoder .writeString(assignment.memberId) .writeBytes(encodeAssignment(assignment.assignment))), response: (decoder) => { const result = { throttleTimeMs: decoder.readInt32(), errorCode: decoder.readInt16(), protocolType: null, protocolName: null, assignment: decodeAssignment(decoder.readBytes()), tags: {}, }; if (result.errorCode) throw new error_1.KafkaTSApiError(result.errorCode, null, result); return result; }, }); /* SyncGroup Request (Version: 4) => group_id generation_id member_id group_instance_id [assignments] _tagged_fields group_id => COMPACT_STRING generation_id => INT32 member_id => COMPACT_STRING group_instance_id => COMPACT_NULLABLE_STRING assignments => member_id assignment _tagged_fields member_id => COMPACT_STRING assignment => COMPACT_BYTES SyncGroup Response (Version: 4) => throttle_time_ms error_code assignment _tagged_fields throttle_time_ms => INT32 error_code => INT16 assignment => COMPACT_BYTES */ const SYNC_GROUP_V4 = (0, api_1.createApi)({ apiKey: 14, apiVersion: 4, fallback: SYNC_GROUP_V3, requestHeaderVersion: 2, responseHeaderVersion: 1, request: (encoder, data) => encoder .writeCompactString(data.groupId) .writeInt32(data.generationId) .writeCompactString(data.memberId) .writeCompactString(data.groupInstanceId) .writeCompactArray(data.assignments, (encoder, assignment) => encoder .writeCompactString(assignment.memberId) .writeCompactBytes(encodeAssignment(assignment.assignment)) .writeTagBuffer()) .writeTagBuffer(), response: (decoder) => { const result = { throttleTimeMs: decoder.readInt32(), errorCode: decoder.readInt16(), protocolType: null, protocolName: null, assignment: decodeAssignment(decoder.readCompactBytes()), tags: decoder.readTagBuffer(), }; if (result.errorCode) throw new error_1.KafkaTSApiError(result.errorCode, null, result); return result; }, }); /* SyncGroup Request (Version: 5) => group_id generation_id member_id group_instance_id protocol_type protocol_name [assignments] _tagged_fields group_id => COMPACT_STRING generation_id => INT32 member_id => COMPACT_STRING group_instance_id => COMPACT_NULLABLE_STRING protocol_type => COMPACT_NULLABLE_STRING protocol_name => COMPACT_NULLABLE_STRING assignments => member_id assignment _tagged_fields member_id => COMPACT_STRING assignment => COMPACT_BYTES SyncGroup Response (Version: 5) => throttle_time_ms error_code protocol_type protocol_name assignment _tagged_fields throttle_time_ms => INT32 error_code => INT16 protocol_type => COMPACT_NULLABLE_STRING protocol_name => COMPACT_NULLABLE_STRING assignment => COMPACT_BYTES */ exports.SYNC_GROUP = (0, api_1.createApi)({ apiKey: 14, apiVersion: 5, fallback: SYNC_GROUP_V4, requestHeaderVersion: 2, responseHeaderVersion: 1, request: (encoder, data) => encoder .writeCompactString(data.groupId) .writeInt32(data.generationId) .writeCompactString(data.memberId) .writeCompactString(data.groupInstanceId) .writeCompactString(data.protocolType) .writeCompactString(data.protocolName) .writeCompactArray(data.assignments, (encoder, assignment) => encoder .writeCompactString(assignment.memberId) .writeCompactBytes(encodeAssignment(assignment.assignment)) .writeTagBuffer()) .writeTagBuffer(), response: (decoder) => { const result = { throttleTimeMs: decoder.readInt32(), errorCode: decoder.readInt16(), protocolType: decoder.readCompactString(), protocolName: decoder.readCompactString(), assignment: decodeAssignment(decoder.readCompactBytes()), tags: decoder.readTagBuffer(), }; if (result.errorCode) throw new error_1.KafkaTSApiError(result.errorCode, null, result); return result; }, }); const encodeAssignment = (data) => new encoder_1.Encoder() .writeInt16(0) .writeArray(Object.entries(data), (encoder, [topic, partitions]) => encoder.writeString(topic).writeArray(partitions, (encoder, partition) => encoder.writeInt32(partition))) .writeBytes(Buffer.alloc(0)) .value(); const decodeAssignment = (data) => { if (!data) { return {}; } const decoder = new decoder_1.Decoder(data); if (!decoder.getBufferLength()) { return {}; } const result = { version: decoder.readInt16(), assignment: decoder.readArray((decoder) => ({ topic: decoder.readString(), partitions: decoder.readArray((decoder) => decoder.readInt32()), })), userData: decoder.readBytes(), }; return Object.fromEntries(result.assignment.map(({ topic, partitions }) => [topic, partitions])); };