summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJovi De Croock <decroockjovi@gmail.com>2023-12-31 12:50:37 +0100
committerGitHub <noreply@github.com>2023-12-31 17:20:37 +0530
commit08fc8d50e35a27835d497a631a6dcc0f733546de (patch)
treef5c1ba7b43bdf6d8590ca8e3c7b3e9fe4978860c
parent3db9c8742d986bb492cb87687c4a6bae357c956c (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.ts16
-rw-r--r--ext/node/polyfills/_brotli.js4
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;
};