Skip to content
File

Blob: src/node/internal/zlib.d.ts

typescript387 lines
1// Copyright (c) 2026 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4 
5import { owner_symbol, type Zlib } from 'node-internal:internal_zlib_base';
6 
7type InternalCompressCallback = (res: Error | ArrayBuffer) => void;
8 
9export function crc32(data: ArrayBufferView | string, value: number): number;
10 
11export function zlibSync(
12 data: ArrayBufferView | string,
13 options: ZlibOptions,
14 mode: number
15): ArrayBuffer;
16export function zlib(
17 data: ArrayBufferView | string,
18 options: ZlibOptions,
19 mode: number,
20 cb: InternalCompressCallback
21): void;
22 
23export function brotliDecompressSync(
24 data: ArrayBufferView | string,
25 options: BrotliOptions
26): ArrayBuffer;
27export function brotliDecompress(
28 data: ArrayBufferView | string,
29 options: BrotliOptions,
30 cb: InternalCompressCallback
31): void;
32 
33export function brotliCompressSync(
34 data: ArrayBufferView | string,
35 options: BrotliOptions
36): ArrayBuffer;
37export function brotliCompress(
38 data: ArrayBufferView | string,
39 options: BrotliOptions,
40 cb: InternalCompressCallback
41): void;
42 
43export function zstdDecompressSync(
44 data: ArrayBufferView | string,
45 options: ZstdOptions
46): ArrayBuffer;
47export function zstdDecompress(
48 data: ArrayBufferView | string,
49 options: ZstdOptions,
50 cb: InternalCompressCallback
51): void;
52 
53export function zstdCompressSync(
54 data: ArrayBufferView | string,
55 options: ZstdOptions
56): ArrayBuffer;
57export function zstdCompress(
58 data: ArrayBufferView | string,
59 options: ZstdOptions,
60 cb: InternalCompressCallback
61): void;
62 
63// zlib.constants (part of the API contract for node:zlib)
64export const CONST_Z_NO_FLUSH: number;
65export const CONST_Z_PARTIAL_FLUSH: number;
66export const CONST_Z_SYNC_FLUSH: number;
67export const CONST_Z_FULL_FLUSH: number;
68export const CONST_Z_FINISH: number;
69export const CONST_Z_BLOCK: number;
70 
71export const CONST_Z_OK: number;
72export const CONST_Z_STREAM_END: number;
73export const CONST_Z_NEED_DICT: number;
74export const CONST_Z_ERRNO: number;
75export const CONST_Z_STREAM_ERROR: number;
76export const CONST_Z_DATA_ERROR: number;
77export const CONST_Z_MEM_ERROR: number;
78export const CONST_Z_BUF_ERROR: number;
79export const CONST_Z_VERSION_ERROR: number;
80 
81export const CONST_Z_NO_COMPRESSION: number;
82export const CONST_Z_BEST_SPEED: number;
83export const CONST_Z_BEST_COMPRESSION: number;
84export const CONST_Z_DEFAULT_COMPRESSION: number;
85export const CONST_Z_FILTERED: number;
86export const CONST_Z_HUFFMAN_ONLY: number;
87export const CONST_Z_RLE: number;
88export const CONST_Z_FIXED: number;
89export const CONST_Z_DEFAULT_STRATEGY: number;
90export const CONST_ZLIB_VERNUM: number;
91 
92export const CONST_DEFLATE: number;
93export const CONST_INFLATE: number;
94export const CONST_GZIP: number;
95export const CONST_GUNZIP: number;
96export const CONST_DEFLATERAW: number;
97export const CONST_INFLATERAW: number;
98export const CONST_UNZIP: number;
99export const CONST_BROTLI_DECODE: number;
100export const CONST_BROTLI_ENCODE: number;
101export const CONST_ZSTD_ENCODE: number;
102export const CONST_ZSTD_DECODE: number;
103 
104export const CONST_Z_MIN_WINDOWBITS: number;
105export const CONST_Z_MAX_WINDOWBITS: number;
106export const CONST_Z_DEFAULT_WINDOWBITS: number;
107export const CONST_Z_MIN_CHUNK: number;
108export const CONST_Z_MAX_CHUNK: number;
109export const CONST_Z_DEFAULT_CHUNK: number;
110export const CONST_Z_MIN_MEMLEVEL: number;
111export const CONST_Z_MAX_MEMLEVEL: number;
112export const CONST_Z_DEFAULT_MEMLEVEL: number;
113export const CONST_Z_MIN_LEVEL: number;
114export const CONST_Z_MAX_LEVEL: number;
115export const CONST_Z_DEFAULT_LEVEL: number;
116 
117export const CONST_BROTLI_OPERATION_PROCESS: number;
118export const CONST_BROTLI_OPERATION_FLUSH: number;
119export const CONST_BROTLI_OPERATION_FINISH: number;
120export const CONST_BROTLI_OPERATION_EMIT_METADATA: number;
121export const CONST_BROTLI_PARAM_MODE: number;
122export const CONST_BROTLI_MODE_GENERIC: number;
123export const CONST_BROTLI_MODE_TEXT: number;
124export const CONST_BROTLI_MODE_FONT: number;
125export const CONST_BROTLI_DEFAULT_MODE: number;
126export const CONST_BROTLI_PARAM_QUALITY: number;
127export const CONST_BROTLI_MIN_QUALITY: number;
128export const CONST_BROTLI_MAX_QUALITY: number;
129export const CONST_BROTLI_DEFAULT_QUALITY: number;
130export const CONST_BROTLI_PARAM_LGWIN: number;
131export const CONST_BROTLI_MIN_WINDOW_BITS: number;
132export const CONST_BROTLI_MAX_WINDOW_BITS: number;
133export const CONST_BROTLI_LARGE_MAX_WINDOW_BITS: number;
134export const CONST_BROTLI_DEFAULT_WINDOW: number;
135export const CONST_BROTLI_PARAM_LGBLOCK: number;
136export const CONST_BROTLI_MIN_INPUT_BLOCK_BITS: number;
137export const CONST_BROTLI_MAX_INPUT_BLOCK_BITS: number;
138export const CONST_BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: number;
139export const CONST_BROTLI_PARAM_SIZE_HINT: number;
140export const CONST_BROTLI_PARAM_LARGE_WINDOW: number;
141export const CONST_BROTLI_PARAM_NPOSTFIX: number;
142export const CONST_BROTLI_PARAM_NDIRECT: number;
143export const CONST_BROTLI_DECODER_RESULT_ERROR: number;
144export const CONST_BROTLI_DECODER_RESULT_SUCCESS: number;
145export const CONST_BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: number;
146export const CONST_BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: number;
147export const CONST_BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: number;
148export const CONST_BROTLI_DECODER_PARAM_LARGE_WINDOW: number;
149export const CONST_BROTLI_DECODER_NO_ERROR: number;
150export const CONST_BROTLI_DECODER_SUCCESS: number;
151export const CONST_BROTLI_DECODER_NEEDS_MORE_INPUT: number;
152export const CONST_BROTLI_DECODER_NEEDS_MORE_OUTPUT: number;
153export const CONST_BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: number;
154export const CONST_BROTLI_DECODER_ERROR_FORMAT_RESERVED: number;
155export const CONST_BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: number;
156export const CONST_BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: number;
157export const CONST_BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: number;
158export const CONST_BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: number;
159export const CONST_BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: number;
160export const CONST_BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: number;
161export const CONST_BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: number;
162export const CONST_BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: number;
163export const CONST_BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: number;
164export const CONST_BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: number;
165export const CONST_BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: number;
166export const CONST_BROTLI_DECODER_ERROR_FORMAT_PADDING_1: number;
167export const CONST_BROTLI_DECODER_ERROR_FORMAT_PADDING_2: number;
168export const CONST_BROTLI_DECODER_ERROR_FORMAT_DISTANCE: number;
169export const CONST_BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: number;
170export const CONST_BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: number;
171export const CONST_BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: number;
172export const CONST_BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: number;
173export const CONST_BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: number;
174export const CONST_BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: number;
175export const CONST_BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: number;
176export const CONST_BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: number;
177export const CONST_BROTLI_DECODER_ERROR_UNREACHABLE: number;
178 
179// Zstd mode aliases (Node.js naming)
180export const CONST_ZSTD_COMPRESS: number;
181export const CONST_ZSTD_DECOMPRESS: number;
182 
183// Zstd flush directives
184export const CONST_ZSTD_e_continue: number;
185export const CONST_ZSTD_e_flush: number;
186export const CONST_ZSTD_e_end: number;
187 
188// Zstd compression parameters
189export const CONST_ZSTD_c_compressionLevel: number;
190export const CONST_ZSTD_c_windowLog: number;
191export const CONST_ZSTD_c_hashLog: number;
192export const CONST_ZSTD_c_chainLog: number;
193export const CONST_ZSTD_c_searchLog: number;
194export const CONST_ZSTD_c_minMatch: number;
195export const CONST_ZSTD_c_targetLength: number;
196export const CONST_ZSTD_c_strategy: number;
197export const CONST_ZSTD_c_enableLongDistanceMatching: number;
198export const CONST_ZSTD_c_ldmHashLog: number;
199export const CONST_ZSTD_c_ldmMinMatch: number;
200export const CONST_ZSTD_c_ldmBucketSizeLog: number;
201export const CONST_ZSTD_c_ldmHashRateLog: number;
202export const CONST_ZSTD_c_contentSizeFlag: number;
203export const CONST_ZSTD_c_checksumFlag: number;
204export const CONST_ZSTD_c_dictIDFlag: number;
205export const CONST_ZSTD_c_nbWorkers: number;
206export const CONST_ZSTD_c_jobSize: number;
207export const CONST_ZSTD_c_overlapLog: number;
208 
209// Zstd decompression parameters
210export const CONST_ZSTD_d_windowLogMax: number;
211 
212// Zstd strategy constants
213export const CONST_ZSTD_fast: number;
214export const CONST_ZSTD_dfast: number;
215export const CONST_ZSTD_greedy: number;
216export const CONST_ZSTD_lazy: number;
217export const CONST_ZSTD_lazy2: number;
218export const CONST_ZSTD_btlazy2: number;
219export const CONST_ZSTD_btopt: number;
220export const CONST_ZSTD_btultra: number;
221export const CONST_ZSTD_btultra2: number;
222 
223// Zstd default compression level
224export const CONST_ZSTD_CLEVEL_DEFAULT: number;
225 
226// Zstd error codes
227export const CONST_ZSTD_error_no_error: number;
228export const CONST_ZSTD_error_GENERIC: number;
229export const CONST_ZSTD_error_prefix_unknown: number;
230export const CONST_ZSTD_error_version_unsupported: number;
231export const CONST_ZSTD_error_frameParameter_unsupported: number;
232export const CONST_ZSTD_error_frameParameter_windowTooLarge: number;
233export const CONST_ZSTD_error_corruption_detected: number;
234export const CONST_ZSTD_error_checksum_wrong: number;
235export const CONST_ZSTD_error_literals_headerWrong: number;
236export const CONST_ZSTD_error_dictionary_corrupted: number;
237export const CONST_ZSTD_error_dictionary_wrong: number;
238export const CONST_ZSTD_error_dictionaryCreation_failed: number;
239export const CONST_ZSTD_error_parameter_unsupported: number;
240export const CONST_ZSTD_error_parameter_combination_unsupported: number;
241export const CONST_ZSTD_error_parameter_outOfBound: number;
242export const CONST_ZSTD_error_tableLog_tooLarge: number;
243export const CONST_ZSTD_error_maxSymbolValue_tooLarge: number;
244export const CONST_ZSTD_error_maxSymbolValue_tooSmall: number;
245export const CONST_ZSTD_error_stabilityCondition_notRespected: number;
246export const CONST_ZSTD_error_stage_wrong: number;
247export const CONST_ZSTD_error_init_missing: number;
248export const CONST_ZSTD_error_memory_allocation: number;
249export const CONST_ZSTD_error_workSpace_tooSmall: number;
250export const CONST_ZSTD_error_dstSize_tooSmall: number;
251export const CONST_ZSTD_error_srcSize_wrong: number;
252export const CONST_ZSTD_error_dstBuffer_null: number;
253export const CONST_ZSTD_error_noForwardProgress_destFull: number;
254export const CONST_ZSTD_error_noForwardProgress_inputEmpty: number;
255 
256export interface ZlibOptions {
257 flush?: number | undefined;
258 finishFlush?: number | undefined;
259 chunkSize?: number | undefined;
260 windowBits?: number | undefined;
261 level?: number | undefined; // compression only
262 memLevel?: number | undefined; // compression only
263 strategy?: number | undefined; // compression only
264 dictionary?: ArrayBufferView | undefined; // deflate/inflate only, empty dictionary by default
265 info?: boolean | undefined;
266 maxOutputLength?: number | undefined;
267}
268 
269export interface BrotliOptions {
270 flush?: number | undefined;
271 finishFlush?: number | undefined;
272 chunkSize?: number | undefined;
273 params?:
274 | {
275 [key: number]: boolean | number;
276 }
277 | undefined;
278 maxOutputLength?: number | undefined;
279 // Not specified in NodeJS docs but the tests expect it
280 info?: boolean | undefined;
281}
282 
283export interface ZstdOptions {
284 flush?: number | undefined;
285 finishFlush?: number | undefined;
286 chunkSize?: number | undefined;
287 params?:
288 | {
289 [key: number]: boolean | number;
290 }
291 | undefined;
292 maxOutputLength?: number | undefined;
293 pledgedSrcSize?: number | undefined;
294 // Not specified in NodeJS docs but the tests expect it
295 info?: boolean | undefined;
296}
297 
298type ErrorHandler = (errno: number, code: string, message: string) => void;
299type ProcessHandler = () => void;
300 
301export abstract class CompressionStream {
302 [owner_symbol]: Zlib;
303 // Not used by C++ implementation but required to be Node.js compatible.
304 inOff: number;
305 buffer: NodeJS.TypedArray | null;
306 cb: () => void;
307 availOutBefore: number;
308 availInBefore: number;
309 flushFlag: number;
310 
311 constructor(mode: number);
312 close(): void;
313 write(
314 flushFlag: number,
315 inputBuffer: NodeJS.TypedArray,
316 inputOffset: number,
317 inputLength: number,
318 outputBuffer: NodeJS.TypedArray,
319 outputOffset: number,
320 outputLength: number
321 ): void;
322 writeSync(
323 flushFlag: number,
324 inputBuffer: NodeJS.TypedArray,
325 inputOffset: number,
326 inputLength: number,
327 outputBuffer: NodeJS.TypedArray,
328 outputOffset: number,
329 outputLength: number
330 ): void;
331 reset(): void;
332 
333 // Workerd specific functions
334 setErrorHandler(cb: ErrorHandler): void;
335}
336 
337export class ZlibStream extends CompressionStream {
338 initialize(
339 windowBits: number,
340 level: number,
341 memLevel: number,
342 strategy: number,
343 writeState: NodeJS.TypedArray,
344 processCallback: ProcessHandler,
345 dictionary: ZlibOptions['dictionary']
346 ): void;
347 params(level: number, strategy: number): void;
348}
349 
350export class BrotliDecoder extends CompressionStream {
351 initialize(
352 params: Uint32Array,
353 writeResult: Uint32Array,
354 writeCallback: () => void
355 ): boolean;
356 params(): void;
357}
358 
359export class BrotliEncoder extends CompressionStream {
360 initialize(
361 params: Uint32Array,
362 writeResult: Uint32Array,
363 writeCallback: () => void
364 ): boolean;
365 params(): void;
366}
367 
368export class ZstdDecoder extends CompressionStream {
369 initialize(
370 params: Int32Array,
371 writeResult: Uint32Array,
372 writeCallback: () => void,
373 pledgedSrcSize?: number
374 ): boolean;
375 params(): void;
376}
377 
378export class ZstdEncoder extends CompressionStream {
379 initialize(
380 params: Int32Array,
381 writeResult: Uint32Array,
382 writeCallback: () => void,
383 pledgedSrcSize?: number
384 ): boolean;
385 params(): void;
386}