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.

151 lines (148 loc) 6.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OFFSET_FETCH = void 0; const api_1 = require("../utils/api"); const error_1 = require("../utils/error"); /* OffsetFetch Request (Version: 6) => group_id [topics] _tagged_fields group_id => COMPACT_STRING topics => name [partition_indexes] _tagged_fields name => COMPACT_STRING partition_indexes => INT32 OffsetFetch Response (Version: 6) => throttle_time_ms [topics] error_code _tagged_fields throttle_time_ms => INT32 topics => name [partitions] _tagged_fields name => COMPACT_STRING partitions => partition_index committed_offset committed_leader_epoch metadata error_code _tagged_fields partition_index => INT32 committed_offset => INT64 committed_leader_epoch => INT32 metadata => COMPACT_NULLABLE_STRING error_code => INT16 error_code => INT16 */ const OFFSET_FETCH_V6 = (0, api_1.createApi)({ apiKey: 9, apiVersion: 6, requestHeaderVersion: 2, responseHeaderVersion: 1, request: (encoder, data) => { if (data.groups.length !== 1) throw new Error('OffsetFetch v6 requires exactly 1 group'); const [group] = data.groups; return encoder .writeCompactString(group.groupId) .writeCompactArray(group.topics, (encoder, topic) => encoder .writeCompactString(topic.name) .writeCompactArray(topic.partitionIndexes, (encoder, partitionIndex) => encoder.writeInt32(partitionIndex)) .writeTagBuffer()) .writeTagBuffer(); }, response: (decoder) => { const result = { throttleTimeMs: decoder.readInt32(), groups: [ { groupId: '', topics: decoder.readCompactArray((decoder) => ({ name: decoder.readCompactString(), partitions: decoder.readCompactArray((decoder) => ({ partitionIndex: decoder.readInt32(), committedOffset: decoder.readInt64(), committedLeaderEpoch: decoder.readInt32(), committedMetadata: decoder.readCompactString(), errorCode: decoder.readInt16(), tags: decoder.readTagBuffer(), })), tags: decoder.readTagBuffer(), })), errorCode: decoder.readInt16(), tags: {}, }, ], tags: decoder.readTagBuffer(), }; if (result.groups[0].errorCode) throw new error_1.KafkaTSApiError(result.groups[0].errorCode, null, result); result.groups[0].topics.forEach((topic) => { topic.partitions.forEach((partition) => { if (partition.errorCode) throw new error_1.KafkaTSApiError(partition.errorCode, null, result); }); }); return result; }, }); /* OffsetFetch Request (Version: 8) => [groups] require_stable _tagged_fields groups => group_id [topics] _tagged_fields group_id => COMPACT_STRING topics => name [partition_indexes] _tagged_fields name => COMPACT_STRING partition_indexes => INT32 require_stable => BOOLEAN OffsetFetch Response (Version: 8) => throttle_time_ms [groups] _tagged_fields throttle_time_ms => INT32 groups => group_id [topics] error_code _tagged_fields group_id => COMPACT_STRING topics => name [partitions] _tagged_fields name => COMPACT_STRING partitions => partition_index committed_offset committed_leader_epoch metadata error_code _tagged_fields partition_index => INT32 committed_offset => INT64 committed_leader_epoch => INT32 metadata => COMPACT_NULLABLE_STRING error_code => INT16 error_code => INT16 */ exports.OFFSET_FETCH = (0, api_1.createApi)({ apiKey: 9, apiVersion: 8, fallback: OFFSET_FETCH_V6, requestHeaderVersion: 2, responseHeaderVersion: 1, request: (encoder, data) => encoder .writeCompactArray(data.groups, (encoder, group) => encoder .writeCompactString(group.groupId) .writeCompactArray(group.topics, (encoder, topic) => encoder .writeCompactString(topic.name) .writeCompactArray(topic.partitionIndexes, (encoder, partitionIndex) => encoder.writeInt32(partitionIndex)) .writeTagBuffer()) .writeTagBuffer()) .writeBoolean(data.requireStable) .writeTagBuffer(), response: (decoder) => { const result = { throttleTimeMs: decoder.readInt32(), groups: decoder.readCompactArray((decoder) => ({ groupId: decoder.readCompactString(), topics: decoder.readCompactArray((decoder) => ({ name: decoder.readCompactString(), partitions: decoder.readCompactArray((decoder) => ({ partitionIndex: decoder.readInt32(), committedOffset: decoder.readInt64(), committedLeaderEpoch: decoder.readInt32(), committedMetadata: decoder.readCompactString(), errorCode: decoder.readInt16(), tags: decoder.readTagBuffer(), })), tags: decoder.readTagBuffer(), })), errorCode: decoder.readInt16(), tags: decoder.readTagBuffer(), })), tags: decoder.readTagBuffer(), }; result.groups.forEach((group) => { if (group.errorCode) throw new error_1.KafkaTSApiError(group.errorCode, null, result); group.topics.forEach((topic) => { topic.partitions.forEach((partition) => { if (partition.errorCode) throw new error_1.KafkaTSApiError(partition.errorCode, null, result); }); }); }); return result; }, });