summaryrefslogtreecommitdiff
path: root/cli/factory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/factory.rs')
-rw-r--r--cli/factory.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/cli/factory.rs b/cli/factory.rs
index 14f448b19..e4f9b60fe 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -47,6 +47,7 @@ use crate::worker::CliMainWorkerOptions;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
+use deno_core::FeatureChecker;
use deno_graph::GraphKind;
use deno_runtime::deno_fs;
@@ -161,6 +162,7 @@ struct CliFactoryServices {
type_checker: Deferred<Arc<TypeChecker>>,
cjs_resolutions: Deferred<Arc<CjsResolutionStore>>,
cli_node_resolver: Deferred<Arc<CliNodeResolver>>,
+ feature_checker: Deferred<Arc<FeatureChecker>>,
}
pub struct CliFactory {
@@ -558,6 +560,21 @@ impl CliFactory {
.await
}
+ pub fn feature_checker(&self) -> &Arc<FeatureChecker> {
+ self.services.feature_checker.get_or_init(|| {
+ let mut checker = FeatureChecker::default();
+ checker.set_exit_cb(Box::new(crate::unstable_exit_cb));
+ // TODO(bartlomieju): enable, once we deprecate `--unstable` in favor
+ // of granular --unstable-* flags.
+ // feature_checker.set_warn_cb(Box::new(crate::unstable_warn_cb));
+ if self.options.unstable() {
+ checker.enable_legacy_unstable();
+ }
+
+ Arc::new(checker)
+ })
+ }
+
pub async fn create_compile_binary_writer(
&self,
) -> Result<DenoCompileBinaryWriter, AnyError> {
@@ -602,6 +619,7 @@ impl CliFactory {
self.fs().clone(),
self.maybe_inspector_server().clone(),
self.maybe_lockfile().clone(),
+ self.feature_checker().clone(),
self.create_cli_main_worker_options()?,
))
}