summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-08-09 22:09:51 -0400
committerGitHub <noreply@github.com>2022-08-09 22:09:51 -0400
commit04d402116cb1cb6512fd5f47ab5ee8c3bc0559d0 (patch)
tree21464bf9c37d1f572a98f2bfec7a51b056f4694d
parentd6f789eb05e18dd8887e8e409736773bdf2e0e00 (diff)
chore: temporarily disable `ext/node` and use unstable ops (#15438)
-rw-r--r--ext/node/lib.rs70
-rw-r--r--runtime/build.rs2
-rw-r--r--runtime/web_worker.rs2
-rw-r--r--runtime/worker.rs2
4 files changed, 61 insertions, 15 deletions
diff --git a/ext/node/lib.rs b/ext/node/lib.rs
index 80296a6cc..c61e27079 100644
--- a/ext/node/lib.rs
+++ b/ext/node/lib.rs
@@ -5,9 +5,12 @@ use deno_core::include_js_files;
use deno_core::normalize_path;
use deno_core::op;
use deno_core::Extension;
+use deno_core::OpState;
use std::path::PathBuf;
-pub fn init() -> Extension {
+pub struct Unstable(pub bool);
+
+pub fn init(unstable: bool) -> Extension {
Extension::builder()
.js(include_js_files!(
prefix "deno:ext/node",
@@ -29,11 +32,26 @@ pub fn init() -> Extension {
op_require_path_basename::decl(),
op_require_read_file::decl(),
])
+ .state(move |state| {
+ state.put(Unstable(unstable));
+ Ok(())
+ })
.build()
}
+fn check_unstable(state: &OpState) {
+ let unstable = state.borrow::<Unstable>();
+
+ if !unstable.0 {
+ eprintln!("Unstable API 'require'. The --unstable flag must be provided.",);
+ std::process::exit(70);
+ }
+}
+
#[op]
-pub fn op_require_init_paths() -> Vec<String> {
+pub fn op_require_init_paths(state: &mut OpState) -> Vec<String> {
+ check_unstable(state);
+
let (home_dir, node_path) = if cfg!(windows) {
(
std::env::var("USERPROFILE").unwrap_or_else(|_| "".into()),
@@ -80,7 +98,11 @@ pub fn op_require_init_paths() -> Vec<String> {
}
#[op]
-pub fn op_require_node_module_paths(from: String) -> Vec<String> {
+pub fn op_require_node_module_paths(
+ state: &mut OpState,
+ from: String,
+) -> Vec<String> {
+ check_unstable(state);
// Guarantee that "from" is absolute.
let from = deno_core::resolve_path(&from)
.unwrap()
@@ -126,7 +148,8 @@ pub fn op_require_node_module_paths(from: String) -> Vec<String> {
}
#[op]
-fn op_require_proxy_path(filename: String) -> String {
+fn op_require_proxy_path(state: &mut OpState, filename: String) -> String {
+ check_unstable(state);
// Allow a directory to be passed as the filename
let trailing_slash = if cfg!(windows) {
filename.ends_with('\\')
@@ -143,7 +166,11 @@ fn op_require_proxy_path(filename: String) -> String {
}
#[op]
-fn op_require_is_request_relative(request: String) -> bool {
+fn op_require_is_request_relative(
+ state: &mut OpState,
+ request: String,
+) -> bool {
+ check_unstable(state);
if request.starts_with("./") {
return true;
}
@@ -167,10 +194,12 @@ fn op_require_is_request_relative(request: String) -> bool {
#[op]
fn op_require_resolve_lookup_paths(
+ state: &mut OpState,
request: String,
maybe_parent_paths: Option<Vec<String>>,
parent_filename: String,
) -> Option<Vec<String>> {
+ check_unstable(state);
if !request.starts_with('.')
|| (request.len() > 1
&& !request.starts_with("..")
@@ -207,12 +236,14 @@ fn op_require_resolve_lookup_paths(
}
#[op]
-fn op_require_path_is_absolute(p: String) -> bool {
+fn op_require_path_is_absolute(state: &mut OpState, p: String) -> bool {
+ check_unstable(state);
PathBuf::from(p).is_absolute()
}
#[op]
-fn op_require_stat(filename: String) -> i32 {
+fn op_require_stat(state: &mut OpState, filename: String) -> i32 {
+ check_unstable(state);
if let Ok(metadata) = std::fs::metadata(&filename) {
if metadata.is_file() {
return 0;
@@ -225,7 +256,11 @@ fn op_require_stat(filename: String) -> i32 {
}
#[op]
-fn op_require_real_path(request: String) -> Result<String, AnyError> {
+fn op_require_real_path(
+ state: &mut OpState,
+ request: String,
+) -> Result<String, AnyError> {
+ check_unstable(state);
let mut canonicalized_path = PathBuf::from(request).canonicalize()?;
if cfg!(windows) {
canonicalized_path = PathBuf::from(
@@ -239,7 +274,8 @@ fn op_require_real_path(request: String) -> Result<String, AnyError> {
}
#[op]
-fn op_require_path_resolve(parts: Vec<String>) -> String {
+fn op_require_path_resolve(state: &mut OpState, parts: Vec<String>) -> String {
+ check_unstable(state);
assert!(!parts.is_empty());
let mut p = PathBuf::from(&parts[0]);
if parts.len() > 1 {
@@ -251,23 +287,27 @@ fn op_require_path_resolve(parts: Vec<String>) -> String {
}
#[op]
-fn op_require_path_dirname(request: String) -> String {
+fn op_require_path_dirname(state: &mut OpState, request: String) -> String {
+ check_unstable(state);
let p = PathBuf::from(request);
p.parent().unwrap().to_string_lossy().to_string()
}
#[op]
-fn op_require_path_basename(request: String) -> String {
+fn op_require_path_basename(state: &mut OpState, request: String) -> String {
+ check_unstable(state);
let p = PathBuf::from(request);
p.file_name().unwrap().to_string_lossy().to_string()
}
#[op]
fn op_require_try_self_parent_path(
+ state: &mut OpState,
has_parent: bool,
maybe_parent_filename: Option<String>,
maybe_parent_id: Option<String>,
) -> Option<String> {
+ check_unstable(state);
if !has_parent {
return None;
}
@@ -288,10 +328,12 @@ fn op_require_try_self_parent_path(
#[op]
fn op_require_try_self(
+ state: &mut OpState,
has_parent: bool,
maybe_parent_filename: Option<String>,
maybe_parent_id: Option<String>,
) -> Option<String> {
+ check_unstable(state);
if !has_parent {
return None;
}
@@ -311,6 +353,10 @@ fn op_require_try_self(
}
#[op]
-fn op_require_read_file(_filename: String) -> Result<String, AnyError> {
+fn op_require_read_file(
+ state: &mut OpState,
+ _filename: String,
+) -> Result<String, AnyError> {
+ check_unstable(state);
todo!("not implemented");
}
diff --git a/runtime/build.rs b/runtime/build.rs
index b389462b5..0c9c0d0d0 100644
--- a/runtime/build.rs
+++ b/runtime/build.rs
@@ -158,7 +158,7 @@ mod not_docs {
deno_broadcast_channel::InMemoryBroadcastChannel::default(),
false, // No --unstable.
),
- deno_node::init(),
+ // deno_node::init(), // todo(dsherret): re-enable
deno_ffi::init::<Permissions>(false),
deno_net::init::<Permissions>(
None, false, // No --unstable.
diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs
index ec6cd5041..ca11cc18f 100644
--- a/runtime/web_worker.rs
+++ b/runtime/web_worker.rs
@@ -419,7 +419,7 @@ impl WebWorker {
unstable,
options.unsafely_ignore_certificate_errors.clone(),
),
- deno_node::init(),
+ // deno_node::init(), // todo(dsherret): re-enable
ops::os::init_for_worker(),
ops::permissions::init(),
ops::process::init(),
diff --git a/runtime/worker.rs b/runtime/worker.rs
index c90129ab3..b8ab8b8ca 100644
--- a/runtime/worker.rs
+++ b/runtime/worker.rs
@@ -161,7 +161,7 @@ impl MainWorker {
unstable,
options.unsafely_ignore_certificate_errors.clone(),
),
- deno_node::init(),
+ // deno_node::init() // todo(dsherret): re-enable,
ops::os::init(exit_code.clone()),
ops::permissions::init(),
ops::process::init(),