File
Blob: src/node/internal/zlib.d.ts
| 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 | |
| 5 | import { owner_symbol, type Zlib } from 'node-internal:internal_zlib_base'; |
| 6 | |
| 7 | type InternalCompressCallback = (res: Error | ArrayBuffer) => void; |
| 8 | |
| 9 | export function crc32(data: ArrayBufferView | string, value: number): number; |
| 10 | |
| 11 | export function zlibSync( |
| 12 | data: ArrayBufferView | string, |
| 13 | options: ZlibOptions, |
| 14 | mode: number |
| 15 | ): ArrayBuffer; |
| 16 | export function zlib( |
| 17 | data: ArrayBufferView | string, |
| 18 | options: ZlibOptions, |
| 19 | mode: number, |
| 20 | cb: InternalCompressCallback |
| 21 | ): void; |
| 22 | |
| 23 | export function brotliDecompressSync( |
| 24 | data: ArrayBufferView | string, |
| 25 | options: BrotliOptions |
| 26 | ): ArrayBuffer; |
| 27 | export function brotliDecompress( |
| 28 | data: ArrayBufferView | string, |
| 29 | options: BrotliOptions, |
| 30 | cb: InternalCompressCallback |
| 31 | ): void; |
| 32 | |
| 33 | export function brotliCompressSync( |
| 34 | data: ArrayBufferView | string, |
| 35 | options: BrotliOptions |
| 36 | ): ArrayBuffer; |
| 37 | export function brotliCompress( |
| 38 | data: ArrayBufferView | string, |
| 39 | options: BrotliOptions, |
| 40 | cb: InternalCompressCallback |
| 41 | ): void; |
| 42 | |
| 43 | export function zstdDecompressSync( |
| 44 | data: ArrayBufferView | string, |
| 45 | options: ZstdOptions |
| 46 | ): ArrayBuffer; |
| 47 | export function zstdDecompress( |
| 48 | data: ArrayBufferView | string, |
| 49 | options: ZstdOptions, |
| 50 | cb: InternalCompressCallback |
| 51 | ): void; |
| 52 | |
| 53 | export function zstdCompressSync( |
| 54 | data: ArrayBufferView | string, |
| 55 | options: ZstdOptions |
| 56 | ): ArrayBuffer; |
| 57 | export 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) |
| 64 | export const CONST_Z_NO_FLUSH: number; |
| 65 | export const CONST_Z_PARTIAL_FLUSH: number; |
| 66 | export const CONST_Z_SYNC_FLUSH: number; |
| 67 | export const CONST_Z_FULL_FLUSH: number; |
| 68 | export const CONST_Z_FINISH: number; |
| 69 | export const CONST_Z_BLOCK: number; |
| 70 | |
| 71 | export const CONST_Z_OK: number; |
| 72 | export const CONST_Z_STREAM_END: number; |
| 73 | export const CONST_Z_NEED_DICT: number; |
| 74 | export const CONST_Z_ERRNO: number; |
| 75 | export const CONST_Z_STREAM_ERROR: number; |
| 76 | export const CONST_Z_DATA_ERROR: number; |
| 77 | export const CONST_Z_MEM_ERROR: number; |
| 78 | export const CONST_Z_BUF_ERROR: number; |
| 79 | export const CONST_Z_VERSION_ERROR: number; |
| 80 | |
| 81 | export const CONST_Z_NO_COMPRESSION: number; |
| 82 | export const CONST_Z_BEST_SPEED: number; |
| 83 | export const CONST_Z_BEST_COMPRESSION: number; |
| 84 | export const CONST_Z_DEFAULT_COMPRESSION: number; |
| 85 | export const CONST_Z_FILTERED: number; |
| 86 | export const CONST_Z_HUFFMAN_ONLY: number; |
| 87 | export const CONST_Z_RLE: number; |
| 88 | export const CONST_Z_FIXED: number; |
| 89 | export const CONST_Z_DEFAULT_STRATEGY: number; |
| 90 | export const CONST_ZLIB_VERNUM: number; |
| 91 | |
| 92 | export const CONST_DEFLATE: number; |
| 93 | export const CONST_INFLATE: number; |
| 94 | export const CONST_GZIP: number; |
| 95 | export const CONST_GUNZIP: number; |
| 96 | export const CONST_DEFLATERAW: number; |
| 97 | export const CONST_INFLATERAW: number; |
| 98 | export const CONST_UNZIP: number; |
| 99 | export const CONST_BROTLI_DECODE: number; |
| 100 | export const CONST_BROTLI_ENCODE: number; |
| 101 | export const CONST_ZSTD_ENCODE: number; |
| 102 | export const CONST_ZSTD_DECODE: number; |
| 103 | |
| 104 | export const CONST_Z_MIN_WINDOWBITS: number; |
| 105 | export const CONST_Z_MAX_WINDOWBITS: number; |
| 106 | export const CONST_Z_DEFAULT_WINDOWBITS: number; |
| 107 | export const CONST_Z_MIN_CHUNK: number; |
| 108 | export const CONST_Z_MAX_CHUNK: number; |
| 109 | export const CONST_Z_DEFAULT_CHUNK: number; |
| 110 | export const CONST_Z_MIN_MEMLEVEL: number; |
| 111 | export const CONST_Z_MAX_MEMLEVEL: number; |
| 112 | export const CONST_Z_DEFAULT_MEMLEVEL: number; |
| 113 | export const CONST_Z_MIN_LEVEL: number; |
| 114 | export const CONST_Z_MAX_LEVEL: number; |
| 115 | export const CONST_Z_DEFAULT_LEVEL: number; |
| 116 | |
| 117 | export const CONST_BROTLI_OPERATION_PROCESS: number; |
| 118 | export const CONST_BROTLI_OPERATION_FLUSH: number; |
| 119 | export const CONST_BROTLI_OPERATION_FINISH: number; |
| 120 | export const CONST_BROTLI_OPERATION_EMIT_METADATA: number; |
| 121 | export const CONST_BROTLI_PARAM_MODE: number; |
| 122 | export const CONST_BROTLI_MODE_GENERIC: number; |
| 123 | export const CONST_BROTLI_MODE_TEXT: number; |
| 124 | export const CONST_BROTLI_MODE_FONT: number; |
| 125 | export const CONST_BROTLI_DEFAULT_MODE: number; |
| 126 | export const CONST_BROTLI_PARAM_QUALITY: number; |
| 127 | export const CONST_BROTLI_MIN_QUALITY: number; |
| 128 | export const CONST_BROTLI_MAX_QUALITY: number; |
| 129 | export const CONST_BROTLI_DEFAULT_QUALITY: number; |
| 130 | export const CONST_BROTLI_PARAM_LGWIN: number; |
| 131 | export const CONST_BROTLI_MIN_WINDOW_BITS: number; |
| 132 | export const CONST_BROTLI_MAX_WINDOW_BITS: number; |
| 133 | export const CONST_BROTLI_LARGE_MAX_WINDOW_BITS: number; |
| 134 | export const CONST_BROTLI_DEFAULT_WINDOW: number; |
| 135 | export const CONST_BROTLI_PARAM_LGBLOCK: number; |
| 136 | export const CONST_BROTLI_MIN_INPUT_BLOCK_BITS: number; |
| 137 | export const CONST_BROTLI_MAX_INPUT_BLOCK_BITS: number; |
| 138 | export const CONST_BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: number; |
| 139 | export const CONST_BROTLI_PARAM_SIZE_HINT: number; |
| 140 | export const CONST_BROTLI_PARAM_LARGE_WINDOW: number; |
| 141 | export const CONST_BROTLI_PARAM_NPOSTFIX: number; |
| 142 | export const CONST_BROTLI_PARAM_NDIRECT: number; |
| 143 | export const CONST_BROTLI_DECODER_RESULT_ERROR: number; |
| 144 | export const CONST_BROTLI_DECODER_RESULT_SUCCESS: number; |
| 145 | export const CONST_BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: number; |
| 146 | export const CONST_BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: number; |
| 147 | export const CONST_BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: number; |
| 148 | export const CONST_BROTLI_DECODER_PARAM_LARGE_WINDOW: number; |
| 149 | export const CONST_BROTLI_DECODER_NO_ERROR: number; |
| 150 | export const CONST_BROTLI_DECODER_SUCCESS: number; |
| 151 | export const CONST_BROTLI_DECODER_NEEDS_MORE_INPUT: number; |
| 152 | export const CONST_BROTLI_DECODER_NEEDS_MORE_OUTPUT: number; |
| 153 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: number; |
| 154 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_RESERVED: number; |
| 155 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: number; |
| 156 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: number; |
| 157 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: number; |
| 158 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: number; |
| 159 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: number; |
| 160 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: number; |
| 161 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: number; |
| 162 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: number; |
| 163 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: number; |
| 164 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: number; |
| 165 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: number; |
| 166 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_PADDING_1: number; |
| 167 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_PADDING_2: number; |
| 168 | export const CONST_BROTLI_DECODER_ERROR_FORMAT_DISTANCE: number; |
| 169 | export const CONST_BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: number; |
| 170 | export const CONST_BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: number; |
| 171 | export const CONST_BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: number; |
| 172 | export const CONST_BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: number; |
| 173 | export const CONST_BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: number; |
| 174 | export const CONST_BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: number; |
| 175 | export const CONST_BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: number; |
| 176 | export const CONST_BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: number; |
| 177 | export const CONST_BROTLI_DECODER_ERROR_UNREACHABLE: number; |
| 178 | |
| 179 | // Zstd mode aliases (Node.js naming) |
| 180 | export const CONST_ZSTD_COMPRESS: number; |
| 181 | export const CONST_ZSTD_DECOMPRESS: number; |
| 182 | |
| 183 | // Zstd flush directives |
| 184 | export const CONST_ZSTD_e_continue: number; |
| 185 | export const CONST_ZSTD_e_flush: number; |
| 186 | export const CONST_ZSTD_e_end: number; |
| 187 | |
| 188 | // Zstd compression parameters |
| 189 | export const CONST_ZSTD_c_compressionLevel: number; |
| 190 | export const CONST_ZSTD_c_windowLog: number; |
| 191 | export const CONST_ZSTD_c_hashLog: number; |
| 192 | export const CONST_ZSTD_c_chainLog: number; |
| 193 | export const CONST_ZSTD_c_searchLog: number; |
| 194 | export const CONST_ZSTD_c_minMatch: number; |
| 195 | export const CONST_ZSTD_c_targetLength: number; |
| 196 | export const CONST_ZSTD_c_strategy: number; |
| 197 | export const CONST_ZSTD_c_enableLongDistanceMatching: number; |
| 198 | export const CONST_ZSTD_c_ldmHashLog: number; |
| 199 | export const CONST_ZSTD_c_ldmMinMatch: number; |
| 200 | export const CONST_ZSTD_c_ldmBucketSizeLog: number; |
| 201 | export const CONST_ZSTD_c_ldmHashRateLog: number; |
| 202 | export const CONST_ZSTD_c_contentSizeFlag: number; |
| 203 | export const CONST_ZSTD_c_checksumFlag: number; |
| 204 | export const CONST_ZSTD_c_dictIDFlag: number; |
| 205 | export const CONST_ZSTD_c_nbWorkers: number; |
| 206 | export const CONST_ZSTD_c_jobSize: number; |
| 207 | export const CONST_ZSTD_c_overlapLog: number; |
| 208 | |
| 209 | // Zstd decompression parameters |
| 210 | export const CONST_ZSTD_d_windowLogMax: number; |
| 211 | |
| 212 | // Zstd strategy constants |
| 213 | export const CONST_ZSTD_fast: number; |
| 214 | export const CONST_ZSTD_dfast: number; |
| 215 | export const CONST_ZSTD_greedy: number; |
| 216 | export const CONST_ZSTD_lazy: number; |
| 217 | export const CONST_ZSTD_lazy2: number; |
| 218 | export const CONST_ZSTD_btlazy2: number; |
| 219 | export const CONST_ZSTD_btopt: number; |
| 220 | export const CONST_ZSTD_btultra: number; |
| 221 | export const CONST_ZSTD_btultra2: number; |
| 222 | |
| 223 | // Zstd default compression level |
| 224 | export const CONST_ZSTD_CLEVEL_DEFAULT: number; |
| 225 | |
| 226 | // Zstd error codes |
| 227 | export const CONST_ZSTD_error_no_error: number; |
| 228 | export const CONST_ZSTD_error_GENERIC: number; |
| 229 | export const CONST_ZSTD_error_prefix_unknown: number; |
| 230 | export const CONST_ZSTD_error_version_unsupported: number; |
| 231 | export const CONST_ZSTD_error_frameParameter_unsupported: number; |
| 232 | export const CONST_ZSTD_error_frameParameter_windowTooLarge: number; |
| 233 | export const CONST_ZSTD_error_corruption_detected: number; |
| 234 | export const CONST_ZSTD_error_checksum_wrong: number; |
| 235 | export const CONST_ZSTD_error_literals_headerWrong: number; |
| 236 | export const CONST_ZSTD_error_dictionary_corrupted: number; |
| 237 | export const CONST_ZSTD_error_dictionary_wrong: number; |
| 238 | export const CONST_ZSTD_error_dictionaryCreation_failed: number; |
| 239 | export const CONST_ZSTD_error_parameter_unsupported: number; |
| 240 | export const CONST_ZSTD_error_parameter_combination_unsupported: number; |
| 241 | export const CONST_ZSTD_error_parameter_outOfBound: number; |
| 242 | export const CONST_ZSTD_error_tableLog_tooLarge: number; |
| 243 | export const CONST_ZSTD_error_maxSymbolValue_tooLarge: number; |
| 244 | export const CONST_ZSTD_error_maxSymbolValue_tooSmall: number; |
| 245 | export const CONST_ZSTD_error_stabilityCondition_notRespected: number; |
| 246 | export const CONST_ZSTD_error_stage_wrong: number; |
| 247 | export const CONST_ZSTD_error_init_missing: number; |
| 248 | export const CONST_ZSTD_error_memory_allocation: number; |
| 249 | export const CONST_ZSTD_error_workSpace_tooSmall: number; |
| 250 | export const CONST_ZSTD_error_dstSize_tooSmall: number; |
| 251 | export const CONST_ZSTD_error_srcSize_wrong: number; |
| 252 | export const CONST_ZSTD_error_dstBuffer_null: number; |
| 253 | export const CONST_ZSTD_error_noForwardProgress_destFull: number; |
| 254 | export const CONST_ZSTD_error_noForwardProgress_inputEmpty: number; |
| 255 | |
| 256 | export 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 | |
| 269 | export 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 | |
| 283 | export 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 | |
| 298 | type ErrorHandler = (errno: number, code: string, message: string) => void; |
| 299 | type ProcessHandler = () => void; |
| 300 | |
| 301 | export 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 | |
| 337 | export 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 | |
| 350 | export class BrotliDecoder extends CompressionStream { |
| 351 | initialize( |
| 352 | params: Uint32Array, |
| 353 | writeResult: Uint32Array, |
| 354 | writeCallback: () => void |
| 355 | ): boolean; |
| 356 | params(): void; |
| 357 | } |
| 358 | |
| 359 | export class BrotliEncoder extends CompressionStream { |
| 360 | initialize( |
| 361 | params: Uint32Array, |
| 362 | writeResult: Uint32Array, |
| 363 | writeCallback: () => void |
| 364 | ): boolean; |
| 365 | params(): void; |
| 366 | } |
| 367 | |
| 368 | export 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 | |
| 378 | export class ZstdEncoder extends CompressionStream { |
| 379 | initialize( |
| 380 | params: Int32Array, |
| 381 | writeResult: Uint32Array, |
| 382 | writeCallback: () => void, |
| 383 | pledgedSrcSize?: number |
| 384 | ): boolean; |
| 385 | params(): void; |
| 386 | } |