Skip to content

Commit

Permalink
fix(node/zlib): cast Dataview and Buffer to uint8 (#21746)
Browse files Browse the repository at this point in the history
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?
  • Loading branch information
JoviDeCroock authored and bartlomieju committed Jan 4, 2024
1 parent 73b7032 commit 2319c51
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
16 changes: 16 additions & 0 deletions cli/tests/unit_node/zlib_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");
});
4 changes: 4 additions & 0 deletions ext/node/polyfills/_brotli.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ const toU8 = (input) => {
return enc.encode(input);
}

if (input.buffer) {
return new Uint8Array(input.buffer);
}

return input;
};

Expand Down

0 comments on commit 2319c51

Please sign in to comment.