kafkajs
Version:
A modern Apache Kafka client for node.js
27 lines (22 loc) • 945 B
JavaScript
const isInvalidOffset = require('./isInvalidOffset')
const { keys, assign } = Object
const indexPartitions = (obj, { partition, offset }) => assign(obj, { [partition]: offset })
const indexTopics = (obj, { topic, partitions }) =>
assign(obj, { [topic]: partitions.reduce(indexPartitions, {}) })
module.exports = (consumerOffsets, topicOffsets) => {
const indexedConsumerOffsets = consumerOffsets.reduce(indexTopics, {})
const indexedTopicOffsets = topicOffsets.reduce(indexTopics, {})
return keys(indexedConsumerOffsets).map(topic => {
const partitions = indexedConsumerOffsets[topic]
return {
topic,
partitions: keys(partitions).map(partition => {
const offset = partitions[partition]
const resolvedOffset = isInvalidOffset(offset)
? indexedTopicOffsets[topic][partition]
: offset
return { partition: Number(partition), offset: resolvedOffset }
}),
}
})
}