summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/build.rs17
-rw-r--r--runtime/ops/mod.rs35
-rw-r--r--runtime/web_worker.rs17
-rw-r--r--runtime/worker.rs17
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(),