MCPcopy
hub / github.com/mongodb/node-mongodb-native / decompress

Function decompress

src/cmap/wire_protocol/compression.ts:110–144  ·  view source on GitHub ↗
(
  compressorID: number,
  compressedData: Uint8Array
)

Source from the content-addressed store, hash-verified

108
109// Decompress a message using the given compressor
110export async function decompress(
111 compressorID: number,
112 compressedData: Uint8Array
113): Promise<Uint8Array> {
114 if (
115 compressorID !== Compressor.snappy &&
116 compressorID !== Compressor.zstd &&
117 compressorID !== Compressor.zlib &&
118 compressorID !== Compressor.none
119 ) {
120 throw new MongoDecompressionError(
121 `Server sent message compressed using an unsupported compressor. (Received compressor ID ${compressorID})`
122 );
123 }
124
125 switch (compressorID) {
126 case Compressor.snappy: {
127 Snappy ??= loadSnappy();
128 return await Snappy.uncompress(compressedData, { asBuffer: true });
129 }
130 case Compressor.zstd: {
131 loadZstd();
132 if ('kModuleError' in zstd) {
133 throw zstd['kModuleError'];
134 }
135 return await zstd.decompress(compressedData);
136 }
137 case Compressor.zlib: {
138 return await zlibInflate(compressedData);
139 }
140 default: {
141 return compressedData;
142 }
143 }
144}
145
146/**
147 * Load ZStandard if it is not already set.

Callers 2

decompressResponseFunction · 0.85

Calls 3

loadSnappyFunction · 0.85
loadZstdFunction · 0.85
zlibInflateFunction · 0.85

Tested by

no test coverage detected