summaryrefslogtreecommitdiff
path: root/cli/node/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/node/mod.rs')
-rw-r--r--cli/node/mod.rs202
1 files changed, 6 insertions, 196 deletions
diff --git a/cli/node/mod.rs b/cli/node/mod.rs
index aed639bc4..2125f670e 100644
--- a/cli/node/mod.rs
+++ b/cli/node/mod.rs
@@ -25,6 +25,7 @@ use deno_runtime::deno_node::package_imports_resolve;
use deno_runtime::deno_node::package_resolve;
use deno_runtime::deno_node::path_to_declaration_path;
use deno_runtime::deno_node::NodeModuleKind;
+use deno_runtime::deno_node::NodeModulePolyfill;
use deno_runtime::deno_node::NodePermissions;
use deno_runtime::deno_node::NodeResolutionMode;
use deno_runtime::deno_node::PackageJson;
@@ -32,6 +33,7 @@ use deno_runtime::deno_node::PathClean;
use deno_runtime::deno_node::RequireNpmResolver;
use deno_runtime::deno_node::DEFAULT_CONDITIONS;
use deno_runtime::deno_node::NODE_GLOBAL_THIS_NAME;
+use deno_runtime::deno_node::SUPPORTED_BUILTIN_NODE_MODULES;
use deno_runtime::permissions::PermissionsContainer;
use once_cell::sync::Lazy;
use regex::Regex;
@@ -106,200 +108,6 @@ impl NodeResolution {
}
}
-struct NodeModulePolyfill {
- /// Name of the module like "assert" or "timers/promises"
- name: &'static str,
-
- /// Specifier relative to the root of `deno_std` repo, like "node/asser.ts"
- specifier: &'static str,
-}
-
-static SUPPORTED_MODULES: &[NodeModulePolyfill] = &[
- NodeModulePolyfill {
- name: "assert",
- specifier: "node/assert.ts",
- },
- NodeModulePolyfill {
- name: "assert/strict",
- specifier: "node/assert/strict.ts",
- },
- NodeModulePolyfill {
- name: "async_hooks",
- specifier: "node/async_hooks.ts",
- },
- NodeModulePolyfill {
- name: "buffer",
- specifier: "node/buffer.ts",
- },
- NodeModulePolyfill {
- name: "child_process",
- specifier: "node/child_process.ts",
- },
- NodeModulePolyfill {
- name: "cluster",
- specifier: "node/cluster.ts",
- },
- NodeModulePolyfill {
- name: "console",
- specifier: "node/console.ts",
- },
- NodeModulePolyfill {
- name: "constants",
- specifier: "node/constants.ts",
- },
- NodeModulePolyfill {
- name: "crypto",
- specifier: "node/crypto.ts",
- },
- NodeModulePolyfill {
- name: "dgram",
- specifier: "node/dgram.ts",
- },
- NodeModulePolyfill {
- name: "dns",
- specifier: "node/dns.ts",
- },
- NodeModulePolyfill {
- name: "dns/promises",
- specifier: "node/dns/promises.ts",
- },
- NodeModulePolyfill {
- name: "domain",
- specifier: "node/domain.ts",
- },
- NodeModulePolyfill {
- name: "events",
- specifier: "node/events.ts",
- },
- NodeModulePolyfill {
- name: "fs",
- specifier: "node/fs.ts",
- },
- NodeModulePolyfill {
- name: "fs/promises",
- specifier: "node/fs/promises.ts",
- },
- NodeModulePolyfill {
- name: "http",
- specifier: "node/http.ts",
- },
- NodeModulePolyfill {
- name: "https",
- specifier: "node/https.ts",
- },
- NodeModulePolyfill {
- name: "module",
- // NOTE(bartlomieju): `module` is special, because we don't want to use
- // `deno_std/node/module.ts`, but instead use a special shim that we
- // provide in `ext/node`.
- specifier: "[USE `deno_node::MODULE_ES_SHIM` to get this module]",
- },
- NodeModulePolyfill {
- name: "net",
- specifier: "node/net.ts",
- },
- NodeModulePolyfill {
- name: "os",
- specifier: "node/os.ts",
- },
- NodeModulePolyfill {
- name: "path",
- specifier: "node/path.ts",
- },
- NodeModulePolyfill {
- name: "path/posix",
- specifier: "node/path/posix.ts",
- },
- NodeModulePolyfill {
- name: "path/win32",
- specifier: "node/path/win32.ts",
- },
- NodeModulePolyfill {
- name: "perf_hooks",
- specifier: "node/perf_hooks.ts",
- },
- NodeModulePolyfill {
- name: "process",
- specifier: "node/process.ts",
- },
- NodeModulePolyfill {
- name: "querystring",
- specifier: "node/querystring.ts",
- },
- NodeModulePolyfill {
- name: "readline",
- specifier: "node/readline.ts",
- },
- NodeModulePolyfill {
- name: "stream",
- specifier: "node/stream.ts",
- },
- NodeModulePolyfill {
- name: "stream/consumers",
- specifier: "node/stream/consumers.mjs",
- },
- NodeModulePolyfill {
- name: "stream/promises",
- specifier: "node/stream/promises.mjs",
- },
- NodeModulePolyfill {
- name: "stream/web",
- specifier: "node/stream/web.ts",
- },
- NodeModulePolyfill {
- name: "string_decoder",
- specifier: "node/string_decoder.ts",
- },
- NodeModulePolyfill {
- name: "sys",
- specifier: "node/sys.ts",
- },
- NodeModulePolyfill {
- name: "timers",
- specifier: "node/timers.ts",
- },
- NodeModulePolyfill {
- name: "timers/promises",
- specifier: "node/timers/promises.ts",
- },
- NodeModulePolyfill {
- name: "tls",
- specifier: "node/tls.ts",
- },
- NodeModulePolyfill {
- name: "tty",
- specifier: "node/tty.ts",
- },
- NodeModulePolyfill {
- name: "url",
- specifier: "node/url.ts",
- },
- NodeModulePolyfill {
- name: "util",
- specifier: "node/util.ts",
- },
- NodeModulePolyfill {
- name: "util/types",
- specifier: "node/util/types.ts",
- },
- NodeModulePolyfill {
- name: "v8",
- specifier: "node/v8.ts",
- },
- NodeModulePolyfill {
- name: "vm",
- specifier: "node/vm.ts",
- },
- NodeModulePolyfill {
- name: "worker_threads",
- specifier: "node/worker_threads.ts",
- },
- NodeModulePolyfill {
- name: "zlib",
- specifier: "node/zlib.ts",
- },
-];
-
static NODE_COMPAT_URL: Lazy<Url> = Lazy::new(|| {
if let Ok(url_str) = std::env::var("DENO_NODE_COMPAT_URL") {
let url = Url::parse(&url_str).expect(
@@ -315,7 +123,9 @@ pub static MODULE_ALL_URL: Lazy<Url> =
Lazy::new(|| NODE_COMPAT_URL.join("node/module_all.ts").unwrap());
fn find_builtin_node_module(specifier: &str) -> Option<&NodeModulePolyfill> {
- SUPPORTED_MODULES.iter().find(|m| m.name == specifier)
+ SUPPORTED_BUILTIN_NODE_MODULES
+ .iter()
+ .find(|m| m.name == specifier)
}
fn is_builtin_node_module(specifier: &str) -> bool {
@@ -336,7 +146,7 @@ pub fn resolve_builtin_node_module(specifier: &str) -> Result<Url, AnyError> {
}
Err(generic_error(format!(
- "Unknown built-in Node module: {}",
+ "Unknown built-in \"node:\" module: {}",
specifier
)))
}