mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 00:20:08 +01:00
stream: add brotli support to CompressionStream and DecompressionStream
Refs: https://github.com/whatwg/compression/issues/34 PR-URL: https://github.com/nodejs/node/pull/59464 Reviewed-By: Mattias Buelens <mattias@buelens.com> Reviewed-By: Jason Zhang <xzha4350@gmail.com> Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
This commit is contained in:
parent
3e1ae63451
commit
44d9e6d8ad
|
|
@ -330,6 +330,9 @@ with the [`--no-experimental-websocket`][] CLI flag.
|
|||
<!-- YAML
|
||||
added: v18.0.0
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/59464
|
||||
description: format now accepts `brotli` value.
|
||||
- version:
|
||||
- v23.11.0
|
||||
- v22.15.0
|
||||
|
|
@ -445,6 +448,9 @@ A browser-compatible implementation of {CustomEvent}.
|
|||
<!-- YAML
|
||||
added: v18.0.0
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/59464
|
||||
description: format now accepts `brotli` value.
|
||||
- version:
|
||||
- v23.11.0
|
||||
- v22.15.0
|
||||
|
|
|
|||
|
|
@ -1480,6 +1480,9 @@ changes:
|
|||
<!-- YAML
|
||||
added: v17.0.0
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/59464
|
||||
description: format now accepts `brotli` value.
|
||||
- version:
|
||||
- v21.2.0
|
||||
- v20.12.0
|
||||
|
|
@ -1487,7 +1490,7 @@ changes:
|
|||
description: format now accepts `deflate-raw` value.
|
||||
-->
|
||||
|
||||
* `format` {string} One of `'deflate'`, `'deflate-raw'`, or `'gzip'`.
|
||||
* `format` {string} One of `'deflate'`, `'deflate-raw'`, `'gzip'`, or `'brotli'`.
|
||||
|
||||
#### `compressionStream.readable`
|
||||
|
||||
|
|
@ -1520,6 +1523,9 @@ changes:
|
|||
<!-- YAML
|
||||
added: v17.0.0
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/59464
|
||||
description: format now accepts `brotli` value.
|
||||
- version:
|
||||
- v21.2.0
|
||||
- v20.12.0
|
||||
|
|
@ -1527,7 +1533,7 @@ changes:
|
|||
description: format now accepts `deflate-raw` value.
|
||||
-->
|
||||
|
||||
* `format` {string} One of `'deflate'`, `'deflate-raw'`, or `'gzip'`.
|
||||
* `format` {string} One of `'deflate'`, `'deflate-raw'`, `'gzip'`, or `'brotli'`.
|
||||
|
||||
#### `decompressionStream.readable`
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ const formatConverter = createEnumConverter('CompressionFormat', [
|
|||
'deflate',
|
||||
'deflate-raw',
|
||||
'gzip',
|
||||
'brotli',
|
||||
]);
|
||||
|
||||
/**
|
||||
|
|
@ -40,7 +41,7 @@ class CompressionStream {
|
|||
#transform;
|
||||
|
||||
/**
|
||||
* @param {'deflate'|'deflate-raw'|'gzip'} format
|
||||
* @param {'deflate'|'deflate-raw'|'gzip'|'brotli'} format
|
||||
*/
|
||||
constructor(format) {
|
||||
format = formatConverter(format, {
|
||||
|
|
@ -57,6 +58,9 @@ class CompressionStream {
|
|||
case 'gzip':
|
||||
this.#handle = lazyZlib().createGzip();
|
||||
break;
|
||||
case 'brotli':
|
||||
this.#handle = lazyZlib().createBrotliCompress();
|
||||
break;
|
||||
}
|
||||
this.#transform = newReadableWritablePairFromDuplex(this.#handle);
|
||||
}
|
||||
|
|
@ -90,7 +94,7 @@ class DecompressionStream {
|
|||
#transform;
|
||||
|
||||
/**
|
||||
* @param {'deflate'|'deflate-raw'|'gzip'} format
|
||||
* @param {'deflate'|'deflate-raw'|'gzip'|'brotli'} format
|
||||
*/
|
||||
constructor(format) {
|
||||
format = formatConverter(format, {
|
||||
|
|
@ -111,6 +115,9 @@ class DecompressionStream {
|
|||
rejectGarbageAfterEnd: true,
|
||||
});
|
||||
break;
|
||||
case 'brotli':
|
||||
this.#handle = lazyZlib().createBrotliDecompress();
|
||||
break;
|
||||
}
|
||||
this.#transform = newReadableWritablePairFromDuplex(this.#handle);
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ async function test(format) {
|
|||
]);
|
||||
}
|
||||
|
||||
Promise.all(['gzip', 'deflate', 'deflate-raw'].map((i) => test(i))).then(common.mustCall());
|
||||
Promise.all(['gzip', 'deflate', 'deflate-raw', 'brotli'].map((i) => test(i))).then(common.mustCall());
|
||||
|
||||
[1, 'hello', false, {}].forEach((i) => {
|
||||
assert.throws(() => new CompressionStream(i), {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user