UNPKG

@ydbjs/topic

Version:

YDB Topics client for publish-subscribe messaging. Provides at-least-once delivery, exactly-once publishing, FIFO guarantees, and scalable message processing for unstructured data.

49 lines 1.94 kB
import { create, protoInt64 } from "@bufbuild/protobuf"; import { DurationSchema, timestampFromDate } from "@bufbuild/protobuf/wkt"; import { StreamReadMessage_InitRequest_TopicReadSettingsSchema } from "@ydbjs/api/topic"; import ms from "ms"; export let _parse_topics_read_settings = function parse_topics_read_settings(topic) { let settings = []; let parseDuration = function parseDuration(duration) { if (typeof duration === 'string') { duration = ms(duration); } if (typeof duration === 'number') { let seconds = Math.floor(duration / 1000); return create(DurationSchema, { seconds: protoInt64.parse(seconds), nanos: (duration - seconds * 1000) * 1_000_000, }); } return duration; }; let parseTimestamp = function parseTimestamp(timestamp) { if (typeof timestamp === 'number') { timestamp = new Date(timestamp); } if (timestamp instanceof Date) { timestamp = timestampFromDate(timestamp); } return timestamp; }; if (typeof topic === "string") { settings.push(create(StreamReadMessage_InitRequest_TopicReadSettingsSchema, { path: topic })); } else if (!Array.isArray(topic)) { topic = [topic]; } if (Array.isArray(topic)) { for (let topicSource of topic) { settings.push(create(StreamReadMessage_InitRequest_TopicReadSettingsSchema, { path: topicSource.path, ...(topicSource.maxLag && { maxLag: parseDuration(topicSource.maxLag) }), ...(topicSource.readFrom && { readFrom: parseTimestamp(topicSource.readFrom) }), ...(topicSource.partitionIds && { partitionIds: topicSource.partitionIds }), })); } } return settings; }; //# sourceMappingURL=_topics_config.js.map