summaryrefslogtreecommitdiff
path: root/op_crates/file/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'op_crates/file/lib.rs')
-rw-r--r--op_crates/file/lib.rs47
1 files changed, 31 insertions, 16 deletions
diff --git a/op_crates/file/lib.rs b/op_crates/file/lib.rs
index ea519046f..19bb8b19b 100644
--- a/op_crates/file/lib.rs
+++ b/op_crates/file/lib.rs
@@ -2,8 +2,10 @@
use deno_core::error::null_opbuf;
use deno_core::error::AnyError;
+use deno_core::include_js_files;
+use deno_core::op_sync;
use deno_core::url::Url;
-use deno_core::JsRuntime;
+use deno_core::Extension;
use deno_core::ModuleSpecifier;
use deno_core::ZeroCopyBuf;
use std::collections::HashMap;
@@ -82,22 +84,35 @@ pub fn op_file_revoke_object_url(
Ok(())
}
-/// Load and execute the javascript code.
-pub fn init(isolate: &mut JsRuntime) {
- let files = vec![
- ("deno:op_crates/file/01_file.js", include_str!("01_file.js")),
- (
- "deno:op_crates/file/02_filereader.js",
- include_str!("02_filereader.js"),
+pub fn init(
+ blob_url_store: BlobUrlStore,
+ maybe_location: Option<Url>,
+) -> Extension {
+ Extension::with_ops(
+ include_js_files!(
+ prefix "deno:op_crates/file",
+ "01_file.js",
+ "02_filereader.js",
+ "03_blob_url.js",
),
- (
- "deno:op_crates/file/03_blob_url.js",
- include_str!("03_blob_url.js"),
- ),
- ];
- for (url, source_code) in files {
- isolate.execute(url, source_code).unwrap();
- }
+ vec![
+ (
+ "op_file_create_object_url",
+ op_sync(op_file_create_object_url),
+ ),
+ (
+ "op_file_revoke_object_url",
+ op_sync(op_file_revoke_object_url),
+ ),
+ ],
+ Some(Box::new(move |state| {
+ state.put(blob_url_store.clone());
+ if let Some(location) = maybe_location.clone() {
+ state.put(Location(location));
+ }
+ Ok(())
+ })),
+ )
}
pub fn get_declaration() -> PathBuf {