zlib.d.ts (19510B)
1 /** 2 * The `zlib` module provides compression functionality implemented using Gzip, 3 * Deflate/Inflate, and Brotli. 4 * 5 * To access it: 6 * 7 * ```js 8 * import zlib from 'node:zlib'; 9 * ``` 10 * 11 * Compression and decompression are built around the Node.js `Streams API`. 12 * 13 * Compressing or decompressing a stream (such as a file) can be accomplished by 14 * piping the source stream through a `zlib` `Transform` stream into a destination 15 * stream: 16 * 17 * ```js 18 * import { createGzip } from 'node:zlib'; 19 * import { pipeline } from 'node:stream'; 20 * import { 21 * createReadStream, 22 * createWriteStream 23 * } from 'node:fs'; 24 * 25 * const gzip = createGzip(); 26 * const source = createReadStream('input.txt'); 27 * const destination = createWriteStream('input.txt.gz'); 28 * 29 * pipeline(source, gzip, destination, (err) => { 30 * if (err) { 31 * console.error('An error occurred:', err); 32 * process.exitCode = 1; 33 * } 34 * }); 35 * 36 * // Or, Promisified 37 * 38 * import { promisify } from 'node:util'; 39 * const pipe = promisify(pipeline); 40 * 41 * async function do_gzip(input, output) { 42 * const gzip = createGzip(); 43 * const source = createReadStream(input); 44 * const destination = createWriteStream(output); 45 * await pipe(source, gzip, destination); 46 * } 47 * 48 * do_gzip('input.txt', 'input.txt.gz') 49 * .catch((err) => { 50 * console.error('An error occurred:', err); 51 * process.exitCode = 1; 52 * }); 53 * ``` 54 * 55 * It is also possible to compress or decompress data in a single step: 56 * 57 * ```js 58 * import { deflate, unzip } from 'node:zlib'; 59 * 60 * const input = '.................................'; 61 * deflate(input, (err, buffer) => { 62 * if (err) { 63 * console.error('An error occurred:', err); 64 * process.exitCode = 1; 65 * } 66 * console.log(buffer.toString('base64')); 67 * }); 68 * 69 * const buffer = Buffer.from('eJzT0yMAAGTvBe8=', 'base64'); 70 * unzip(buffer, (err, buffer) => { 71 * if (err) { 72 * console.error('An error occurred:', err); 73 * process.exitCode = 1; 74 * } 75 * console.log(buffer.toString()); 76 * }); 77 * 78 * // Or, Promisified 79 * 80 * import { promisify } from 'node:util'; 81 * const do_unzip = promisify(unzip); 82 * 83 * do_unzip(buffer) 84 * .then((buf) => console.log(buf.toString())) 85 * .catch((err) => { 86 * console.error('An error occurred:', err); 87 * process.exitCode = 1; 88 * }); 89 * ``` 90 * @since v0.5.8 91 * @see [source](https://github.com/nodejs/node/blob/v16.9.0/lib/zlib.js) 92 */ 93 declare module "zlib" { 94 import * as stream from "node:stream"; 95 interface ZlibOptions { 96 /** 97 * @default constants.Z_NO_FLUSH 98 */ 99 flush?: number | undefined; 100 /** 101 * @default constants.Z_FINISH 102 */ 103 finishFlush?: number | undefined; 104 /** 105 * @default 16*1024 106 */ 107 chunkSize?: number | undefined; 108 windowBits?: number | undefined; 109 level?: number | undefined; // compression only 110 memLevel?: number | undefined; // compression only 111 strategy?: number | undefined; // compression only 112 dictionary?: NodeJS.ArrayBufferView | ArrayBuffer | undefined; // deflate/inflate only, empty dictionary by default 113 info?: boolean | undefined; 114 maxOutputLength?: number | undefined; 115 } 116 interface BrotliOptions { 117 /** 118 * @default constants.BROTLI_OPERATION_PROCESS 119 */ 120 flush?: number | undefined; 121 /** 122 * @default constants.BROTLI_OPERATION_FINISH 123 */ 124 finishFlush?: number | undefined; 125 /** 126 * @default 16*1024 127 */ 128 chunkSize?: number | undefined; 129 params?: 130 | { 131 /** 132 * Each key is a `constants.BROTLI_*` constant. 133 */ 134 [key: number]: boolean | number; 135 } 136 | undefined; 137 maxOutputLength?: number | undefined; 138 } 139 interface Zlib { 140 /** @deprecated Use bytesWritten instead. */ 141 readonly bytesRead: number; 142 readonly bytesWritten: number; 143 shell?: boolean | string | undefined; 144 close(callback?: () => void): void; 145 flush(kind?: number, callback?: () => void): void; 146 flush(callback?: () => void): void; 147 } 148 interface ZlibParams { 149 params(level: number, strategy: number, callback: () => void): void; 150 } 151 interface ZlibReset { 152 reset(): void; 153 } 154 interface BrotliCompress extends stream.Transform, Zlib {} 155 interface BrotliDecompress extends stream.Transform, Zlib {} 156 interface Gzip extends stream.Transform, Zlib {} 157 interface Gunzip extends stream.Transform, Zlib {} 158 interface Deflate extends stream.Transform, Zlib, ZlibReset, ZlibParams {} 159 interface Inflate extends stream.Transform, Zlib, ZlibReset {} 160 interface DeflateRaw extends stream.Transform, Zlib, ZlibReset, ZlibParams {} 161 interface InflateRaw extends stream.Transform, Zlib, ZlibReset {} 162 interface Unzip extends stream.Transform, Zlib {} 163 /** 164 * Creates and returns a new `BrotliCompress` object. 165 * @since v11.7.0, v10.16.0 166 */ 167 function createBrotliCompress(options?: BrotliOptions): BrotliCompress; 168 /** 169 * Creates and returns a new `BrotliDecompress` object. 170 * @since v11.7.0, v10.16.0 171 */ 172 function createBrotliDecompress(options?: BrotliOptions): BrotliDecompress; 173 /** 174 * Creates and returns a new `Gzip` object. 175 * See `example`. 176 * @since v0.5.8 177 */ 178 function createGzip(options?: ZlibOptions): Gzip; 179 /** 180 * Creates and returns a new `Gunzip` object. 181 * @since v0.5.8 182 */ 183 function createGunzip(options?: ZlibOptions): Gunzip; 184 /** 185 * Creates and returns a new `Deflate` object. 186 * @since v0.5.8 187 */ 188 function createDeflate(options?: ZlibOptions): Deflate; 189 /** 190 * Creates and returns a new `Inflate` object. 191 * @since v0.5.8 192 */ 193 function createInflate(options?: ZlibOptions): Inflate; 194 /** 195 * Creates and returns a new `DeflateRaw` object. 196 * 197 * An upgrade of zlib from 1.2.8 to 1.2.11 changed behavior when `windowBits`is set to 8 for raw deflate streams. zlib would automatically set `windowBits`to 9 if was initially set to 8\. Newer 198 * versions of zlib will throw an exception, 199 * so Node.js restored the original behavior of upgrading a value of 8 to 9, 200 * since passing `windowBits = 9` to zlib actually results in a compressed stream 201 * that effectively uses an 8-bit window only. 202 * @since v0.5.8 203 */ 204 function createDeflateRaw(options?: ZlibOptions): DeflateRaw; 205 /** 206 * Creates and returns a new `InflateRaw` object. 207 * @since v0.5.8 208 */ 209 function createInflateRaw(options?: ZlibOptions): InflateRaw; 210 /** 211 * Creates and returns a new `Unzip` object. 212 * @since v0.5.8 213 */ 214 function createUnzip(options?: ZlibOptions): Unzip; 215 type InputType = string | ArrayBuffer | NodeJS.ArrayBufferView; 216 type CompressCallback = (error: Error | null, result: Buffer) => void; 217 /** 218 * @since v11.7.0, v10.16.0 219 */ 220 function brotliCompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void; 221 function brotliCompress(buf: InputType, callback: CompressCallback): void; 222 namespace brotliCompress { 223 function __promisify__(buffer: InputType, options?: BrotliOptions): Promise<Buffer>; 224 } 225 /** 226 * Compress a chunk of data with `BrotliCompress`. 227 * @since v11.7.0, v10.16.0 228 */ 229 function brotliCompressSync(buf: InputType, options?: BrotliOptions): Buffer; 230 /** 231 * @since v11.7.0, v10.16.0 232 */ 233 function brotliDecompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void; 234 function brotliDecompress(buf: InputType, callback: CompressCallback): void; 235 namespace brotliDecompress { 236 function __promisify__(buffer: InputType, options?: BrotliOptions): Promise<Buffer>; 237 } 238 /** 239 * Decompress a chunk of data with `BrotliDecompress`. 240 * @since v11.7.0, v10.16.0 241 */ 242 function brotliDecompressSync(buf: InputType, options?: BrotliOptions): Buffer; 243 /** 244 * @since v0.6.0 245 */ 246 function deflate(buf: InputType, callback: CompressCallback): void; 247 function deflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; 248 namespace deflate { 249 function __promisify__(buffer: InputType, options?: ZlibOptions): Promise<Buffer>; 250 } 251 /** 252 * Compress a chunk of data with `Deflate`. 253 * @since v0.11.12 254 */ 255 function deflateSync(buf: InputType, options?: ZlibOptions): Buffer; 256 /** 257 * @since v0.6.0 258 */ 259 function deflateRaw(buf: InputType, callback: CompressCallback): void; 260 function deflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; 261 namespace deflateRaw { 262 function __promisify__(buffer: InputType, options?: ZlibOptions): Promise<Buffer>; 263 } 264 /** 265 * Compress a chunk of data with `DeflateRaw`. 266 * @since v0.11.12 267 */ 268 function deflateRawSync(buf: InputType, options?: ZlibOptions): Buffer; 269 /** 270 * @since v0.6.0 271 */ 272 function gzip(buf: InputType, callback: CompressCallback): void; 273 function gzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; 274 namespace gzip { 275 function __promisify__(buffer: InputType, options?: ZlibOptions): Promise<Buffer>; 276 } 277 /** 278 * Compress a chunk of data with `Gzip`. 279 * @since v0.11.12 280 */ 281 function gzipSync(buf: InputType, options?: ZlibOptions): Buffer; 282 /** 283 * @since v0.6.0 284 */ 285 function gunzip(buf: InputType, callback: CompressCallback): void; 286 function gunzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; 287 namespace gunzip { 288 function __promisify__(buffer: InputType, options?: ZlibOptions): Promise<Buffer>; 289 } 290 /** 291 * Decompress a chunk of data with `Gunzip`. 292 * @since v0.11.12 293 */ 294 function gunzipSync(buf: InputType, options?: ZlibOptions): Buffer; 295 /** 296 * @since v0.6.0 297 */ 298 function inflate(buf: InputType, callback: CompressCallback): void; 299 function inflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; 300 namespace inflate { 301 function __promisify__(buffer: InputType, options?: ZlibOptions): Promise<Buffer>; 302 } 303 /** 304 * Decompress a chunk of data with `Inflate`. 305 * @since v0.11.12 306 */ 307 function inflateSync(buf: InputType, options?: ZlibOptions): Buffer; 308 /** 309 * @since v0.6.0 310 */ 311 function inflateRaw(buf: InputType, callback: CompressCallback): void; 312 function inflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; 313 namespace inflateRaw { 314 function __promisify__(buffer: InputType, options?: ZlibOptions): Promise<Buffer>; 315 } 316 /** 317 * Decompress a chunk of data with `InflateRaw`. 318 * @since v0.11.12 319 */ 320 function inflateRawSync(buf: InputType, options?: ZlibOptions): Buffer; 321 /** 322 * @since v0.6.0 323 */ 324 function unzip(buf: InputType, callback: CompressCallback): void; 325 function unzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; 326 namespace unzip { 327 function __promisify__(buffer: InputType, options?: ZlibOptions): Promise<Buffer>; 328 } 329 /** 330 * Decompress a chunk of data with `Unzip`. 331 * @since v0.11.12 332 */ 333 function unzipSync(buf: InputType, options?: ZlibOptions): Buffer; 334 namespace constants { 335 const BROTLI_DECODE: number; 336 const BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: number; 337 const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: number; 338 const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: number; 339 const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: number; 340 const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: number; 341 const BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: number; 342 const BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: number; 343 const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: number; 344 const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: number; 345 const BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: number; 346 const BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: number; 347 const BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: number; 348 const BROTLI_DECODER_ERROR_FORMAT_DISTANCE: number; 349 const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: number; 350 const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: number; 351 const BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: number; 352 const BROTLI_DECODER_ERROR_FORMAT_PADDING_1: number; 353 const BROTLI_DECODER_ERROR_FORMAT_PADDING_2: number; 354 const BROTLI_DECODER_ERROR_FORMAT_RESERVED: number; 355 const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: number; 356 const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: number; 357 const BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: number; 358 const BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: number; 359 const BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: number; 360 const BROTLI_DECODER_ERROR_UNREACHABLE: number; 361 const BROTLI_DECODER_NEEDS_MORE_INPUT: number; 362 const BROTLI_DECODER_NEEDS_MORE_OUTPUT: number; 363 const BROTLI_DECODER_NO_ERROR: number; 364 const BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: number; 365 const BROTLI_DECODER_PARAM_LARGE_WINDOW: number; 366 const BROTLI_DECODER_RESULT_ERROR: number; 367 const BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: number; 368 const BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: number; 369 const BROTLI_DECODER_RESULT_SUCCESS: number; 370 const BROTLI_DECODER_SUCCESS: number; 371 const BROTLI_DEFAULT_MODE: number; 372 const BROTLI_DEFAULT_QUALITY: number; 373 const BROTLI_DEFAULT_WINDOW: number; 374 const BROTLI_ENCODE: number; 375 const BROTLI_LARGE_MAX_WINDOW_BITS: number; 376 const BROTLI_MAX_INPUT_BLOCK_BITS: number; 377 const BROTLI_MAX_QUALITY: number; 378 const BROTLI_MAX_WINDOW_BITS: number; 379 const BROTLI_MIN_INPUT_BLOCK_BITS: number; 380 const BROTLI_MIN_QUALITY: number; 381 const BROTLI_MIN_WINDOW_BITS: number; 382 const BROTLI_MODE_FONT: number; 383 const BROTLI_MODE_GENERIC: number; 384 const BROTLI_MODE_TEXT: number; 385 const BROTLI_OPERATION_EMIT_METADATA: number; 386 const BROTLI_OPERATION_FINISH: number; 387 const BROTLI_OPERATION_FLUSH: number; 388 const BROTLI_OPERATION_PROCESS: number; 389 const BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: number; 390 const BROTLI_PARAM_LARGE_WINDOW: number; 391 const BROTLI_PARAM_LGBLOCK: number; 392 const BROTLI_PARAM_LGWIN: number; 393 const BROTLI_PARAM_MODE: number; 394 const BROTLI_PARAM_NDIRECT: number; 395 const BROTLI_PARAM_NPOSTFIX: number; 396 const BROTLI_PARAM_QUALITY: number; 397 const BROTLI_PARAM_SIZE_HINT: number; 398 const DEFLATE: number; 399 const DEFLATERAW: number; 400 const GUNZIP: number; 401 const GZIP: number; 402 const INFLATE: number; 403 const INFLATERAW: number; 404 const UNZIP: number; 405 // Allowed flush values. 406 const Z_NO_FLUSH: number; 407 const Z_PARTIAL_FLUSH: number; 408 const Z_SYNC_FLUSH: number; 409 const Z_FULL_FLUSH: number; 410 const Z_FINISH: number; 411 const Z_BLOCK: number; 412 const Z_TREES: number; 413 // Return codes for the compression/decompression functions. 414 // Negative values are errors, positive values are used for special but normal events. 415 const Z_OK: number; 416 const Z_STREAM_END: number; 417 const Z_NEED_DICT: number; 418 const Z_ERRNO: number; 419 const Z_STREAM_ERROR: number; 420 const Z_DATA_ERROR: number; 421 const Z_MEM_ERROR: number; 422 const Z_BUF_ERROR: number; 423 const Z_VERSION_ERROR: number; 424 // Compression levels. 425 const Z_NO_COMPRESSION: number; 426 const Z_BEST_SPEED: number; 427 const Z_BEST_COMPRESSION: number; 428 const Z_DEFAULT_COMPRESSION: number; 429 // Compression strategy. 430 const Z_FILTERED: number; 431 const Z_HUFFMAN_ONLY: number; 432 const Z_RLE: number; 433 const Z_FIXED: number; 434 const Z_DEFAULT_STRATEGY: number; 435 const Z_DEFAULT_WINDOWBITS: number; 436 const Z_MIN_WINDOWBITS: number; 437 const Z_MAX_WINDOWBITS: number; 438 const Z_MIN_CHUNK: number; 439 const Z_MAX_CHUNK: number; 440 const Z_DEFAULT_CHUNK: number; 441 const Z_MIN_MEMLEVEL: number; 442 const Z_MAX_MEMLEVEL: number; 443 const Z_DEFAULT_MEMLEVEL: number; 444 const Z_MIN_LEVEL: number; 445 const Z_MAX_LEVEL: number; 446 const Z_DEFAULT_LEVEL: number; 447 const ZLIB_VERNUM: number; 448 } 449 // Allowed flush values. 450 /** @deprecated Use `constants.Z_NO_FLUSH` */ 451 const Z_NO_FLUSH: number; 452 /** @deprecated Use `constants.Z_PARTIAL_FLUSH` */ 453 const Z_PARTIAL_FLUSH: number; 454 /** @deprecated Use `constants.Z_SYNC_FLUSH` */ 455 const Z_SYNC_FLUSH: number; 456 /** @deprecated Use `constants.Z_FULL_FLUSH` */ 457 const Z_FULL_FLUSH: number; 458 /** @deprecated Use `constants.Z_FINISH` */ 459 const Z_FINISH: number; 460 /** @deprecated Use `constants.Z_BLOCK` */ 461 const Z_BLOCK: number; 462 /** @deprecated Use `constants.Z_TREES` */ 463 const Z_TREES: number; 464 // Return codes for the compression/decompression functions. 465 // Negative values are errors, positive values are used for special but normal events. 466 /** @deprecated Use `constants.Z_OK` */ 467 const Z_OK: number; 468 /** @deprecated Use `constants.Z_STREAM_END` */ 469 const Z_STREAM_END: number; 470 /** @deprecated Use `constants.Z_NEED_DICT` */ 471 const Z_NEED_DICT: number; 472 /** @deprecated Use `constants.Z_ERRNO` */ 473 const Z_ERRNO: number; 474 /** @deprecated Use `constants.Z_STREAM_ERROR` */ 475 const Z_STREAM_ERROR: number; 476 /** @deprecated Use `constants.Z_DATA_ERROR` */ 477 const Z_DATA_ERROR: number; 478 /** @deprecated Use `constants.Z_MEM_ERROR` */ 479 const Z_MEM_ERROR: number; 480 /** @deprecated Use `constants.Z_BUF_ERROR` */ 481 const Z_BUF_ERROR: number; 482 /** @deprecated Use `constants.Z_VERSION_ERROR` */ 483 const Z_VERSION_ERROR: number; 484 // Compression levels. 485 /** @deprecated Use `constants.Z_NO_COMPRESSION` */ 486 const Z_NO_COMPRESSION: number; 487 /** @deprecated Use `constants.Z_BEST_SPEED` */ 488 const Z_BEST_SPEED: number; 489 /** @deprecated Use `constants.Z_BEST_COMPRESSION` */ 490 const Z_BEST_COMPRESSION: number; 491 /** @deprecated Use `constants.Z_DEFAULT_COMPRESSION` */ 492 const Z_DEFAULT_COMPRESSION: number; 493 // Compression strategy. 494 /** @deprecated Use `constants.Z_FILTERED` */ 495 const Z_FILTERED: number; 496 /** @deprecated Use `constants.Z_HUFFMAN_ONLY` */ 497 const Z_HUFFMAN_ONLY: number; 498 /** @deprecated Use `constants.Z_RLE` */ 499 const Z_RLE: number; 500 /** @deprecated Use `constants.Z_FIXED` */ 501 const Z_FIXED: number; 502 /** @deprecated Use `constants.Z_DEFAULT_STRATEGY` */ 503 const Z_DEFAULT_STRATEGY: number; 504 /** @deprecated */ 505 const Z_BINARY: number; 506 /** @deprecated */ 507 const Z_TEXT: number; 508 /** @deprecated */ 509 const Z_ASCII: number; 510 /** @deprecated */ 511 const Z_UNKNOWN: number; 512 /** @deprecated */ 513 const Z_DEFLATED: number; 514 } 515 declare module "node:zlib" { 516 export * from "zlib"; 517 }