diff options
author | Jovi De Croock <decroockjovi@gmail.com> | 2023-12-31 12:50:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-31 17:20:37 +0530 |
commit | 08fc8d50e35a27835d497a631a6dcc0f733546de (patch) | |
tree | f5c1ba7b43bdf6d8590ca8e3c7b3e9fe4978860c | |
parent | 3db9c8742d986bb492cb87687c4a6bae357c956c (diff) |
fix(node/zlib): cast Dataview and Buffer to uint8 (#21746)
This fixes point 2 of #20516
This adds a conversion from Dataview/Buffer by returning `obj.buffer`
which can be converted to a `UInt8Array`.
Question: Regarding point 4 of the mentioned issue would it be
appropriate to copy the toU8 helper to the `zlib.mjs` methods?
-rw-r--r-- | cli/tests/unit_node/zlib_test.ts | 16 | ||||
-rw-r--r-- | ext/node/polyfills/_brotli.js | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/cli/tests/unit_node/zlib_test.ts b/cli/tests/unit_node/zlib_test.ts index fc9eaeb5b..957c7cdfc 100644 --- a/cli/tests/unit_node/zlib_test.ts +++ b/cli/tests/unit_node/zlib_test.ts @@ -96,3 +96,19 @@ Deno.test( handle.destroy(); }, ); + +Deno.test("should work with dataview", () => { + const buf = Buffer.from("hello world"); + const compressed = brotliCompressSync(new DataView(buf.buffer)); + const decompressed = brotliDecompressSync(compressed); + assertEquals(decompressed.toString(), "hello world"); +}); + +Deno.test("should work with a buffer from an encoded string", () => { + const encoder = new TextEncoder(); + const buffer = encoder.encode("hello world"); + const buf = Buffer.from(buffer); + const compressed = brotliCompressSync(buf); + const decompressed = brotliDecompressSync(compressed); + assertEquals(decompressed.toString(), "hello world"); +}); diff --git a/ext/node/polyfills/_brotli.js b/ext/node/polyfills/_brotli.js index bf099759b..cd54eedda 100644 --- a/ext/node/polyfills/_brotli.js +++ b/ext/node/polyfills/_brotli.js @@ -19,6 +19,10 @@ const toU8 = (input) => { return enc.encode(input); } + if (input.buffer) { + return new Uint8Array(input.buffer); + } + return input; }; |