diff options
-rw-r--r-- | cli/build.rs | 12 | ||||
-rw-r--r-- | runtime/build.rs | 4 | ||||
-rw-r--r-- | runtime/web_worker.rs | 38 | ||||
-rw-r--r-- | runtime/worker.rs | 35 |
4 files changed, 47 insertions, 42 deletions
diff --git a/cli/build.rs b/cli/build.rs index c3fa9fb48..fdf57809a 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -308,11 +308,12 @@ mod ts { } fn create_cli_snapshot(snapshot_path: PathBuf) { + // NOTE(bartlomieju): ordering is important here, keep it in sync with + // `runtime/worker.rs`, `runtime/web_worker.rs` and `runtime/build.rs`! let mut extensions: Vec<Extension> = vec![ deno_webidl::init(), deno_console::init(), deno_url::init_ops(), - deno_tls::init_ops(), deno_web::init_ops::<PermissionsContainer>( deno_web::BlobStore::default(), Default::default(), @@ -327,18 +328,19 @@ fn create_cli_snapshot(snapshot_path: PathBuf) { deno_broadcast_channel::InMemoryBroadcastChannel::default(), false, // No --unstable. ), - deno_io::init_ops(Default::default()), - deno_fs::init_ops::<PermissionsContainer>(false), - deno_node::init_ops::<PermissionsContainer>(None), // No --unstable. - deno_node::init_polyfill_ops(), deno_ffi::init_ops::<PermissionsContainer>(false), deno_net::init_ops::<PermissionsContainer>( None, false, // No --unstable. None, ), + deno_tls::init_ops(), deno_napi::init_ops::<PermissionsContainer>(), deno_http::init_ops(), + deno_io::init_ops(Default::default()), + deno_fs::init_ops::<PermissionsContainer>(false), deno_flash::init_ops::<PermissionsContainer>(false), // No --unstable + deno_node::init_ops::<PermissionsContainer>(None), // No --unstable. + deno_node::init_polyfill_ops(), ]; let mut esm_files = include_js_files!( diff --git a/runtime/build.rs b/runtime/build.rs index 3392f5c13..978fdda51 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -250,11 +250,12 @@ mod startup_snapshot { )) .build(); + // NOTE(bartlomieju): ordering is important here, keep it in sync with + // `runtime/worker.rs`, `runtime/web_worker.rs` and `cli/build.rs`! let mut extensions: Vec<Extension> = vec![ deno_webidl::init_esm(), deno_console::init_esm(), deno_url::init_ops_and_esm(), - deno_tls::init_ops(), deno_web::init_ops_and_esm::<Permissions>( deno_web::BlobStore::default(), Default::default(), @@ -278,6 +279,7 @@ mod startup_snapshot { None, false, // No --unstable. None, ), + deno_tls::init_ops(), deno_napi::init_ops::<Permissions>(), deno_http::init_ops_and_esm(), deno_io::init_ops_and_esm(Default::default()), diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index d413ad11f..5874d2aac 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -383,6 +383,8 @@ impl WebWorker { CreateCache(Arc::new(create_cache_fn)) }); + // NOTE(bartlomieju): ordering is important here, keep it in sync with + // `runtime/build.rs`, `runtime/worker.rs` and `cli/build.rs`! let mut extensions: Vec<Extension> = vec![ // Web APIs deno_webidl::init(), @@ -408,14 +410,26 @@ impl WebWorker { options.unsafely_ignore_certificate_errors.clone(), ), deno_webstorage::init_ops(None).disable(), + 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), + 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(), // Runtime ops that are always initialized for WebWorkers ops::web_worker::init(), ops::runtime::init(main_module.clone()), @@ -425,31 +439,17 @@ impl WebWorker { options.pre_execute_module_cb.clone(), options.format_js_error_fn.clone(), ), - // Extensions providing Deno.* features 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_napi::init_ops::<PermissionsContainer>(), - deno_node::init_polyfill_ops(), - deno_node::init_ops::<PermissionsContainer>(options.npm_resolver), ops::os::init_for_worker(), 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(), - // Permissions ext (worker specific state) - perm_ext, ]; + extensions.push(perm_ext); + // Append exts extensions.extend(std::mem::take(&mut options.extensions)); 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(), ]; |