@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.
35 lines • 1.22 kB
JavaScript
import * as zlib from 'node:zlib';
import { Codec } from '@ydbjs/api/topic';
export function getCodec(codec) {
switch (codec) {
case Codec.RAW:
return {
codec: Codec.RAW,
compress: (payload) => payload,
decompress: (payload) => payload,
};
case Codec.GZIP:
return {
codec: Codec.GZIP,
compress: (payload) => zlib.gzipSync(payload),
decompress: (payload) => zlib.gunzipSync(payload),
};
case Codec.ZSTD:
return {
codec: Codec.ZSTD,
compress: (payload) => zlib.zstdCompressSync(payload),
decompress: (payload) => zlib.zstdDecompressSync(payload),
};
default:
throw new Error(`Unsupported codec: ${codec}`);
}
}
export const defaultCodecMap = new Map([
[Codec.RAW, getCodec(Codec.RAW)],
[Codec.GZIP, getCodec(Codec.GZIP)],
[Codec.ZSTD, getCodec(Codec.ZSTD)],
]);
export const RAW_CODEC = getCodec(Codec.RAW);
export const GZIP_CODEC = getCodec(Codec.GZIP);
export const ZSTD_CODEC = getCodec(Codec.ZSTD);
//# sourceMappingURL=codec.js.map