UNPKG

kafkajs

Version:

A modern Apache Kafka client for node.js

55 lines (45 loc) 1.32 kB
const Decoder = require('../../../decoder') const { failure, createErrorFromCode } = require('../../../error') /** * Produce Response (Version: 3) => [responses] throttle_time_ms * responses => topic [partition_responses] * topic => STRING * partition_responses => partition error_code base_offset log_append_time * partition => INT32 * error_code => INT16 * base_offset => INT64 * log_append_time => INT64 * throttle_time_ms => INT32 */ const partition = decoder => ({ partition: decoder.readInt32(), errorCode: decoder.readInt16(), baseOffset: decoder.readInt64().toString(), logAppendTime: decoder.readInt64().toString(), }) const decode = async rawData => { const decoder = new Decoder(rawData) const topics = decoder.readArray(decoder => ({ topicName: decoder.readString(), partitions: decoder.readArray(partition), })) const throttleTime = decoder.readInt32() return { topics, throttleTime, } } const parse = async data => { const errors = data.topics.flatMap(response => { return response.partitions.filter(partition => failure(partition.errorCode)) }) if (errors.length > 0) { const { errorCode } = errors[0] throw createErrorFromCode(errorCode) } return data } module.exports = { decode, parse, }