diff options
Diffstat (limited to 'cli/node/mod.rs')
-rw-r--r-- | cli/node/mod.rs | 202 |
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 ))) } |