diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2022-03-22 16:39:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-22 16:39:58 +0100 |
commit | f81334d5bd1df723b1543dd906bd5672808bc75f (patch) | |
tree | f0cfe6da3c6078170a714d52272243ca647e119d /runtime/web_worker.rs | |
parent | c9817c335c23a5b85d6262b0e42abef19075c975 (diff) |
feat(core): disableable extensions & ops (#14063)
Streamlines a common middleware pattern and provides foundations for avoiding variably sized v8::ExternalReferences & enabling fully monomorphic op callpaths
Diffstat (limited to 'runtime/web_worker.rs')
-rw-r--r-- | runtime/web_worker.rs | 61 |
1 files changed, 27 insertions, 34 deletions
diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index c90e91b92..0e3167041 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -386,55 +386,48 @@ impl WebWorker { options.root_cert_store.clone(), options.unsafely_ignore_certificate_errors.clone(), ), + deno_webstorage::init(None).disable(), deno_broadcast_channel::init(options.broadcast_channel.clone(), unstable), deno_crypto::init(options.seed), deno_webgpu::init(unstable), // ffi deno_ffi::init::<Permissions>(unstable), - // Permissions ext (worker specific state) - perm_ext, - ]; - - // Runtime ops that are always initialized for WebWorkers - let runtime_exts = vec![ + // Runtime ops that are always initialized for WebWorkers ops::web_worker::init(), ops::runtime::init(main_module.clone()), ops::worker_host::init( options.create_web_worker_cb.clone(), options.preload_module_cb.clone(), ), + // Extensions providing Deno.* features + ops::fs_events::init().enabled(options.use_deno_namespace), + ops::fs::init().enabled(options.use_deno_namespace), ops::io::init(), + ops::io::init_stdio().enabled(options.use_deno_namespace), + deno_tls::init().enabled(options.use_deno_namespace), + deno_net::init::<Permissions>( + options.root_cert_store.clone(), + unstable, + options.unsafely_ignore_certificate_errors.clone(), + ) + .enabled(options.use_deno_namespace), + ops::os::init(Some( + options + .maybe_exit_code + .expect("Worker has access to OS ops but exit code was not passed."), + )) + .enabled(options.use_deno_namespace), + ops::permissions::init().enabled(options.use_deno_namespace), + ops::process::init().enabled(options.use_deno_namespace), + ops::signal::init().enabled(options.use_deno_namespace), + ops::tty::init().enabled(options.use_deno_namespace), + deno_http::init().enabled(options.use_deno_namespace), + ops::http::init().enabled(options.use_deno_namespace), + // Permissions ext (worker specific state) + perm_ext, ]; - // Extensions providing Deno.* features - let deno_ns_exts = if options.use_deno_namespace { - vec![ - ops::fs_events::init(), - ops::fs::init(), - deno_tls::init(), - deno_net::init::<Permissions>( - options.root_cert_store.clone(), - unstable, - options.unsafely_ignore_certificate_errors.clone(), - ), - ops::os::init(Some(options.maybe_exit_code.expect( - "Worker has access to OS ops but exit code was not passed.", - ))), - ops::permissions::init(), - ops::process::init(), - ops::signal::init(), - ops::tty::init(), - deno_http::init(), - ops::http::init(), - ops::io::init_stdio(), - ] - } else { - vec![] - }; - // Append exts - extensions.extend(runtime_exts); - extensions.extend(deno_ns_exts); // May be empty extensions.extend(std::mem::take(&mut options.extensions)); let mut js_runtime = JsRuntime::new(RuntimeOptions { |