Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 171x 58x 1100536x 167930x 56x 6x 4x 54x 1x 1x 3x 27x 27x 27x 27x | import * as zlib from 'node:zlib'
import { Codec } from '@ydbjs/api/topic'
export interface CompressionCodec {
codec: Codec | number
compress(payload: Uint8Array): Uint8Array
decompress(payload: Uint8Array): Uint8Array
}
// Built-in ZSTD relies on node:zlib zstd support (Node.js 22.15+ / 23.8+).
export function getCodec(codec: Codec): CompressionCodec {
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 type CodecMap = Map<Codec | number, CompressionCodec>
export const defaultCodecMap: CodecMap = new Map([
[Codec.RAW, getCodec(Codec.RAW)],
[Codec.GZIP, getCodec(Codec.GZIP)],
[Codec.ZSTD, getCodec(Codec.ZSTD)],
])
export const RAW_CODEC: CompressionCodec = getCodec(Codec.RAW)
export const GZIP_CODEC: CompressionCodec = getCodec(Codec.GZIP)
export const ZSTD_CODEC: CompressionCodec = getCodec(Codec.ZSTD)
|