summaryrefslogtreecommitdiff
path: root/ext/web
diff options
context:
space:
mode:
Diffstat (limited to 'ext/web')
-rw-r--r--ext/web/10_filereader.js12
-rw-r--r--ext/web/lib.rs6
2 files changed, 8 insertions, 10 deletions
diff --git a/ext/web/10_filereader.js b/ext/web/10_filereader.js
index 8a76b2e0f..49f4babe1 100644
--- a/ext/web/10_filereader.js
+++ b/ext/web/10_filereader.js
@@ -13,6 +13,7 @@
"use strict";
((window) => {
+ const core = window.Deno.core;
const webidl = window.__bootstrap.webidl;
const { forgivingBase64Encode } = window.__bootstrap.infra;
const { ProgressEvent } = window.__bootstrap.event;
@@ -21,8 +22,6 @@
const { parseMimeType } = window.__bootstrap.mimesniff;
const { DOMException } = window.__bootstrap.domException;
const {
- ArrayPrototypeJoin,
- ArrayPrototypeMap,
ArrayPrototypePush,
ArrayPrototypeReduce,
FunctionPrototypeCall,
@@ -33,7 +32,6 @@
ObjectPrototypeIsPrototypeOf,
queueMicrotask,
SafeArrayIterator,
- StringFromCodePoint,
Symbol,
TypedArrayPrototypeSet,
TypeError,
@@ -170,13 +168,7 @@
break;
}
case "BinaryString":
- this[result] = ArrayPrototypeJoin(
- ArrayPrototypeMap(
- [...new Uint8Array(bytes.buffer)],
- (v) => StringFromCodePoint(v),
- ),
- "",
- );
+ this[result] = core.ops.op_encode_binary_string(bytes);
break;
case "Text": {
let decoder = undefined;
diff --git a/ext/web/lib.rs b/ext/web/lib.rs
index 85e32b70a..8a9d3e18c 100644
--- a/ext/web/lib.rs
+++ b/ext/web/lib.rs
@@ -94,6 +94,7 @@ pub fn init<P: TimersPermission + 'static>(
op_encoding_new_decoder::decl(),
op_encoding_decode::decl(),
op_encoding_encode_into::decl(),
+ op_encode_binary_string::decl(),
op_blob_create_part::decl(),
op_blob_slice_part::decl(),
op_blob_read_part::decl(),
@@ -337,6 +338,11 @@ fn op_encoding_encode_into(
Ok(())
}
+#[op]
+fn op_encode_binary_string(s: &[u8]) -> ByteString {
+ ByteString::from(s)
+}
+
/// Creates a [`CancelHandle`] resource that can be used to cancel invocations of certain ops.
#[op(fast)]
pub fn op_cancel_handle(state: &mut OpState) -> u32 {