From 966ce7de8a23f63d0f30b1748fe69ccaf07519e0 Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Wed, 7 Apr 2021 15:22:14 +0200 Subject: feat: blob URL support (#10045) This commit adds blob URL support. Blob URLs are stored in a process global storage, that can be accessed from all workers, and the module loader. Blob URLs can be created using `URL.createObjectURL` and revoked using `URL.revokeObjectURL`. This commit does not add support for `fetch`ing blob URLs. This will be added in a follow up commit. --- runtime/ops/file.rs | 31 +++++++++++++++++++++++++++++++ runtime/ops/mod.rs | 1 + 2 files changed, 32 insertions(+) create mode 100644 runtime/ops/file.rs (limited to 'runtime/ops') diff --git a/runtime/ops/file.rs b/runtime/ops/file.rs new file mode 100644 index 000000000..e7f68b207 --- /dev/null +++ b/runtime/ops/file.rs @@ -0,0 +1,31 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +use deno_core::url::Url; +use deno_file::op_file_create_object_url; +use deno_file::op_file_revoke_object_url; +use deno_file::BlobUrlStore; +use deno_file::Location; + +pub fn init( + rt: &mut deno_core::JsRuntime, + blob_url_store: BlobUrlStore, + maybe_location: Option, +) { + { + let op_state = rt.op_state(); + let mut op_state = op_state.borrow_mut(); + op_state.put(blob_url_store); + if let Some(location) = maybe_location { + op_state.put(Location(location)); + } + } + super::reg_json_sync( + rt, + "op_file_create_object_url", + op_file_create_object_url, + ); + super::reg_json_sync( + rt, + "op_file_revoke_object_url", + op_file_revoke_object_url, + ); +} diff --git a/runtime/ops/mod.rs b/runtime/ops/mod.rs index 6574546b1..67eae27b2 100644 --- a/runtime/ops/mod.rs +++ b/runtime/ops/mod.rs @@ -2,6 +2,7 @@ pub mod crypto; pub mod fetch; +pub mod file; pub mod fs; pub mod fs_events; pub mod io; -- cgit v1.2.3