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?
This commit is contained in:
Jovi De Croock 2023-12-31 12:50:37 +01:00 committed by GitHub
parent 3db9c8742d
commit 08fc8d50e3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View file

@ -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");
});

View file

@ -19,6 +19,10 @@ const toU8 = (input) => {
return enc.encode(input);
}
if (input.buffer) {
return new Uint8Array(input.buffer);
}
return input;
};