Skip to main content

CompressionUtils

Utility class for compressing and decompressing data, plus reading ZIP archives. All methods are static.


At a Glance

// Compress data before sending
const data = StringUtils.toBytes("Large payload...");
const compressed = CompressionUtils.compress('gzip', data);

// Decompress received data
const decompressed = CompressionUtils.decompress('gzip', compressed);

// Read ZIP archive contents
const files = CompressionUtils.zipList(zipData);
const content = CompressionUtils.zipRead(zipData, 'data.csv');

Compression

compress(algorithm, data)

Compresses a byte array using the specified algorithm.

ParameterTypeDescription
algorithmstringCompression algorithm
dataUint8ArrayByte array to compress

Returns: Uint8Array

const data = StringUtils.toBytes("Hello, World!");
const compressed = CompressionUtils.compress('gzip', data);

decompress(algorithm, data)

Decompresses a byte array.

ParameterTypeDescription
algorithmstringCompression algorithm (or 'auto' to detect)
dataUint8ArrayCompressed byte array

Returns: Uint8Array

const decompressed = CompressionUtils.decompress('gzip', compressed);
const text = StringUtils.fromBytes(decompressed);

Supported Algorithms

AlgorithmDescription
gzip / gzGzip (most common)
deflateDeflate
bzip2 / bzBzip2
lz4framedLZ4 framed
lz4blockLZ4 block
lzmaLZMA
snappySnappy (fast)
xzXZ
zstdZstandard
autoAuto-detect (decompress only)

ZIP Archives

zipList(data, password?)

Lists all file names in a ZIP archive.

ParameterTypeDescription
dataUint8ArrayZIP archive bytes
passwordstring (optional)Password if encrypted

Returns: string[]

const files = CompressionUtils.zipList(zipData);
stream.logInfo(`Files in archive: ${files.join(', ')}`);

zipRead(data, file, password?)

Reads a specific file from a ZIP archive.

ParameterTypeDescription
dataUint8ArrayZIP archive bytes
filestringFile name to extract
passwordstring (optional)Password if encrypted

Returns: string[]

// Read a file
const lines = CompressionUtils.zipRead(zipData, 'data.csv');
for (const line of lines) {
stream.logInfo(line);
}

// Read with password
const lines = CompressionUtils.zipRead(zipData, 'sensitive.csv', 'password123');

Complete Example

export function onMessage() {
const fileContent = message.getByteString(dataDictionary.type.File.RAW_CONTENT);
const bytes = StringUtils.toBytes(fileContent);

// Compress for storage
const compressed = CompressionUtils.compress('zstd', bytes);
message.setByteString(dataDictionary.type.File.COMPRESSED, compressed);

stream.emit(message, OUTPUT_PORT);
}

See Also