diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/build.rs | 17 | ||||
-rw-r--r-- | runtime/ops/mod.rs | 35 | ||||
-rw-r--r-- | runtime/web_worker.rs | 17 | ||||
-rw-r--r-- | runtime/worker.rs | 17 |
4 files changed, 27 insertions, 59 deletions
diff --git a/runtime/build.rs b/runtime/build.rs index 5134c9d7a..6684afe09 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -224,22 +224,17 @@ mod startup_snapshot { deno_crypto::deno_crypto::init_ops_and_esm(None), deno_broadcast_channel::deno_broadcast_channel::init_ops_and_esm( deno_broadcast_channel::InMemoryBroadcastChannel::default(), - false, // No --unstable. - ), - deno_ffi::deno_ffi::init_ops_and_esm::<Permissions>(false), - deno_net::deno_net::init_ops_and_esm::<Permissions>( - None, false, // No --unstable. - None, ), + deno_ffi::deno_ffi::init_ops_and_esm::<Permissions>(), + deno_net::deno_net::init_ops_and_esm::<Permissions>(None, None), deno_tls::deno_tls::init_ops_and_esm(), - deno_kv::deno_kv::init_ops_and_esm( - deno_kv::sqlite::SqliteDbHandler::<Permissions>::new(None), - false, // No --unstable - ), + deno_kv::deno_kv::init_ops_and_esm(deno_kv::sqlite::SqliteDbHandler::< + Permissions, + >::new(None)), deno_napi::deno_napi::init_ops_and_esm::<Permissions>(), deno_http::deno_http::init_ops_and_esm::<DefaultHttpPropertyExtractor>(), deno_io::deno_io::init_ops_and_esm(Default::default()), - deno_fs::deno_fs::init_ops_and_esm::<Permissions>(false, fs.clone()), + deno_fs::deno_fs::init_ops_and_esm::<Permissions>(fs.clone()), deno_node::deno_node::init_ops_and_esm::<Permissions>(None, fs), runtime::init_ops_and_esm(), ]; diff --git a/runtime/ops/mod.rs b/runtime/ops/mod.rs index 5cb7dcbff..cdafd61ec 100644 --- a/runtime/ops/mod.rs +++ b/runtime/ops/mod.rs @@ -13,41 +13,12 @@ pub mod web_worker; pub mod worker_host; use deno_core::OpState; -use std::cell::RefCell; -use std::rc::Rc; -/// `UnstableChecker` is a struct so it can be placed inside `GothamState`; -/// using type alias for a bool could work, but there's a high chance -/// that there might be another type alias pointing to a bool, which -/// would override previously used alias. -pub struct UnstableChecker { - pub unstable: bool, -} - -impl UnstableChecker { - /// Quits the process if the --unstable flag was not provided. - /// - /// This is intentionally a non-recoverable check so that people cannot probe - /// for unstable APIs from stable programs. - // NOTE(bartlomieju): keep in sync with `cli/program_state.rs` - pub fn check_unstable(&self, api_name: &str) { - if !self.unstable { - eprintln!( - "Unstable API '{api_name}'. The --unstable flag must be provided." - ); - std::process::exit(70); - } - } -} /// Helper for checking unstable features. Used for sync ops. pub fn check_unstable(state: &OpState, api_name: &str) { - state.borrow::<UnstableChecker>().check_unstable(api_name) -} - -/// Helper for checking unstable features. Used for async ops. -pub fn check_unstable2(state: &Rc<RefCell<OpState>>, api_name: &str) { - let state = state.borrow(); - state.borrow::<UnstableChecker>().check_unstable(api_name) + state + .feature_checker + .check_legacy_unstable_or_exit(api_name); } pub struct TestingFeaturesEnabled(pub bool); diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 6fcc7aa9c..f37a77d88 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -376,12 +376,10 @@ impl WebWorker { deno_core::extension!(deno_permissions_web_worker, options = { permissions: PermissionsContainer, - unstable: bool, enable_testing_features: bool, }, state = |state, options| { state.put::<PermissionsContainer>(options.permissions); - state.put(ops::UnstableChecker { unstable: options.unstable }); state.put(ops::TestingFeaturesEnabled(options.enable_testing_features)); }, ); @@ -429,24 +427,20 @@ impl WebWorker { deno_crypto::deno_crypto::init_ops_and_esm(options.seed), deno_broadcast_channel::deno_broadcast_channel::init_ops_and_esm( options.broadcast_channel.clone(), - unstable, ), - deno_ffi::deno_ffi::init_ops_and_esm::<PermissionsContainer>(unstable), + deno_ffi::deno_ffi::init_ops_and_esm::<PermissionsContainer>(), deno_net::deno_net::init_ops_and_esm::<PermissionsContainer>( options.root_cert_store_provider.clone(), - unstable, options.unsafely_ignore_certificate_errors.clone(), ), deno_tls::deno_tls::init_ops_and_esm(), deno_kv::deno_kv::init_ops_and_esm( MultiBackendDbHandler::remote_or_sqlite::<PermissionsContainer>(None), - unstable, ), deno_napi::deno_napi::init_ops_and_esm::<PermissionsContainer>(), deno_http::deno_http::init_ops_and_esm::<DefaultHttpPropertyExtractor>(), deno_io::deno_io::init_ops_and_esm(Some(options.stdio)), deno_fs::deno_fs::init_ops_and_esm::<PermissionsContainer>( - unstable, options.fs.clone(), ), deno_node::deno_node::init_ops_and_esm::<PermissionsContainer>( @@ -469,7 +463,6 @@ impl WebWorker { ops::http::deno_http_runtime::init_ops_and_esm(), deno_permissions_web_worker::init_ops_and_esm( permissions, - unstable, enable_testing_features, ), runtime::init_ops_and_esm(), @@ -519,6 +512,14 @@ impl WebWorker { ..Default::default() }); + if unstable { + let op_state = js_runtime.op_state(); + op_state + .borrow_mut() + .feature_checker + .enable_legacy_unstable(); + } + if let Some(server) = options.maybe_inspector_server.clone() { server.register_inspector( main_module.to_string(), diff --git a/runtime/worker.rs b/runtime/worker.rs index 6b9fca561..e8874575a 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -196,12 +196,10 @@ impl MainWorker { deno_core::extension!(deno_permissions_worker, options = { permissions: PermissionsContainer, - unstable: bool, enable_testing_features: bool, }, state = |state, options| { state.put::<PermissionsContainer>(options.permissions); - state.put(ops::UnstableChecker { unstable: options.unstable }); state.put(ops::TestingFeaturesEnabled(options.enable_testing_features)); }, ); @@ -251,12 +249,10 @@ impl MainWorker { deno_crypto::deno_crypto::init_ops_and_esm(options.seed), deno_broadcast_channel::deno_broadcast_channel::init_ops_and_esm( options.broadcast_channel.clone(), - unstable, ), - deno_ffi::deno_ffi::init_ops_and_esm::<PermissionsContainer>(unstable), + deno_ffi::deno_ffi::init_ops_and_esm::<PermissionsContainer>(), deno_net::deno_net::init_ops_and_esm::<PermissionsContainer>( options.root_cert_store_provider.clone(), - unstable, options.unsafely_ignore_certificate_errors.clone(), ), deno_tls::deno_tls::init_ops_and_esm(), @@ -264,13 +260,11 @@ impl MainWorker { MultiBackendDbHandler::remote_or_sqlite::<PermissionsContainer>( options.origin_storage_dir.clone(), ), - unstable, ), deno_napi::deno_napi::init_ops_and_esm::<PermissionsContainer>(), deno_http::deno_http::init_ops_and_esm::<DefaultHttpPropertyExtractor>(), deno_io::deno_io::init_ops_and_esm(Some(options.stdio)), deno_fs::deno_fs::init_ops_and_esm::<PermissionsContainer>( - unstable, options.fs.clone(), ), deno_node::deno_node::init_ops_and_esm::<PermissionsContainer>( @@ -292,7 +286,6 @@ impl MainWorker { ops::http::deno_http_runtime::init_ops_and_esm(), deno_permissions_worker::init_ops_and_esm( permissions, - unstable, enable_testing_features, ), runtime::init_ops_and_esm(), @@ -344,6 +337,14 @@ impl MainWorker { ..Default::default() }); + if unstable { + let op_state = js_runtime.op_state(); + op_state + .borrow_mut() + .feature_checker + .enable_legacy_unstable(); + } + if let Some(server) = options.maybe_inspector_server.clone() { server.register_inspector( main_module.to_string(), |