summaryrefslogtreecommitdiff
path: root/runtime/worker.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-03-16 13:36:53 -0400
committerGitHub <noreply@github.com>2023-03-16 18:36:53 +0100
commit29c9a5c90d88eba5da88ea41e681e7dd7ec170b7 (patch)
tree146b0c2df9a31c3f1d9517b99203425e40730bf4 /runtime/worker.rs
parentb99c431ac78810034ea57cc778bf57d627998aa9 (diff)
refactor: reorder op initialization (#18228)
To be able to preserve "Deno.core.ops" we need to ensure that ops are registered in the same order in various places, otherwise we will get mismatch in external references ordering. Prerequisite for https://github.com/denoland/deno/pull/18080
Diffstat (limited to 'runtime/worker.rs')
-rw-r--r--runtime/worker.rs35
1 files changed, 18 insertions, 17 deletions
diff --git a/runtime/worker.rs b/runtime/worker.rs
index 4bf7b00e8..f5289ca35 100644
--- a/runtime/worker.rs
+++ b/runtime/worker.rs
@@ -203,6 +203,8 @@ impl MainWorker {
CreateCache(Arc::new(create_cache_fn))
});
+ // NOTE(bartlomieju): ordering is important here, keep it in sync with
+ // `runtime/build.rs`, `runtime/web_worker.rs` and `cli/build.rs`!
let mut extensions = vec![
// Web APIs
deno_webidl::init(),
@@ -228,41 +230,40 @@ impl MainWorker {
options.unsafely_ignore_certificate_errors.clone(),
),
deno_webstorage::init_ops(options.origin_storage_dir.clone()),
+ deno_crypto::init_ops(options.seed),
+ deno_webgpu::init_ops(unstable),
deno_broadcast_channel::init_ops(
options.broadcast_channel.clone(),
unstable,
),
- deno_crypto::init_ops(options.seed),
- deno_webgpu::init_ops(unstable),
- // ffi
deno_ffi::init_ops::<PermissionsContainer>(unstable),
- // Runtime ops
- ops::runtime::init(main_module.clone()),
- ops::worker_host::init(
- options.create_web_worker_cb.clone(),
- options.web_worker_preload_module_cb.clone(),
- options.web_worker_pre_execute_module_cb.clone(),
- options.format_js_error_fn.clone(),
- ),
- ops::fs_events::init(),
- deno_fs::init_ops::<PermissionsContainer>(unstable),
- deno_io::init_ops(options.stdio),
- deno_tls::init_ops(),
deno_net::init_ops::<PermissionsContainer>(
options.root_cert_store.clone(),
unstable,
options.unsafely_ignore_certificate_errors.clone(),
),
+ deno_tls::init_ops(),
deno_napi::init_ops::<PermissionsContainer>(),
+ deno_http::init_ops(),
+ deno_io::init_ops(options.stdio),
+ deno_fs::init_ops::<PermissionsContainer>(unstable),
+ deno_flash::init_ops::<PermissionsContainer>(unstable),
deno_node::init_ops::<PermissionsContainer>(options.npm_resolver),
deno_node::init_polyfill_ops(),
+ // Ops from this crate
+ ops::runtime::init(main_module.clone()),
+ ops::worker_host::init(
+ options.create_web_worker_cb.clone(),
+ options.web_worker_preload_module_cb.clone(),
+ options.web_worker_pre_execute_module_cb.clone(),
+ options.format_js_error_fn.clone(),
+ ),
+ ops::fs_events::init(),
ops::os::init(exit_code.clone()),
ops::permissions::init(),
ops::process::init_ops(),
ops::signal::init(),
ops::tty::init(),
- deno_http::init_ops(),
- deno_flash::init_ops::<PermissionsContainer>(unstable),
ops::http::init(),
];