%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const { ObjectDefineProperties, Symbol, } = primordials; const { codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_THIS, }, } = require('internal/errors'); const { newReadableWritablePairFromDuplex, } = require('internal/webstreams/adapters'); const { customInspect } = require('internal/webstreams/util'); const { customInspectSymbol: kInspect, kEnumerableProperty, } = require('internal/util'); let zlib; function lazyZlib() { zlib ??= require('zlib'); return zlib; } const kHandle = Symbol('kHandle'); const kTransform = Symbol('kTransform'); const kType = Symbol('kType'); /** * @typedef {import('./readablestream').ReadableStream} ReadableStream * @typedef {import('./writablestream').WritableStream} WritableStream */ function isCompressionStream(value) { return typeof value?.[kHandle] === 'object' && value?.[kType] === 'CompressionStream'; } function isDecompressionStream(value) { return typeof value?.[kHandle] === 'object' && value?.[kType] === 'DecompressionStream'; } class CompressionStream { /** * @param {'deflate'|'gzip'} format */ constructor(format) { this[kType] = 'CompressionStream'; switch (format) { case 'deflate': this[kHandle] = lazyZlib().createDeflate(); break; case 'gzip': this[kHandle] = lazyZlib().createGzip(); break; default: throw new ERR_INVALID_ARG_VALUE('format', format); } this[kTransform] = newReadableWritablePairFromDuplex(this[kHandle]); } /** * @readonly * @type {ReadableStream} */ get readable() { if (!isCompressionStream(this)) throw new ERR_INVALID_THIS('CompressionStream'); return this[kTransform].readable; } /** * @readonly * @type {WritableStream} */ get writable() { if (!isCompressionStream(this)) throw new ERR_INVALID_THIS('CompressionStream'); return this[kTransform].writable; } [kInspect](depth, options) { if (!isCompressionStream(this)) throw new ERR_INVALID_THIS('CompressionStream'); customInspect(depth, options, 'CompressionStream', { readable: this[kTransform].readable, writable: this[kTransform].writable, }); } } class DecompressionStream { /** * @param {'deflate'|'gzip'} format */ constructor(format) { this[kType] = 'DecompressionStream'; switch (format) { case 'deflate': this[kHandle] = lazyZlib().createInflate(); break; case 'gzip': this[kHandle] = lazyZlib().createGunzip(); break; default: throw new ERR_INVALID_ARG_VALUE('format', format); } this[kTransform] = newReadableWritablePairFromDuplex(this[kHandle]); } /** * @readonly * @type {ReadableStream} */ get readable() { if (!isDecompressionStream(this)) throw new ERR_INVALID_THIS('DecompressionStream'); return this[kTransform].readable; } /** * @readonly * @type {WritableStream} */ get writable() { if (!isDecompressionStream(this)) throw new ERR_INVALID_THIS('DecompressionStream'); return this[kTransform].writable; } [kInspect](depth, options) { if (!isDecompressionStream(this)) throw new ERR_INVALID_THIS('DecompressionStream'); customInspect(depth, options, 'DecompressionStream', { readable: this[kTransform].readable, writable: this[kTransform].writable, }); } } ObjectDefineProperties(CompressionStream.prototype, { readable: kEnumerableProperty, writable: kEnumerableProperty, }); ObjectDefineProperties(DecompressionStream.prototype, { readable: kEnumerableProperty, writable: kEnumerableProperty, }); module.exports = { CompressionStream, DecompressionStream, };