diff --git a/Cargo.lock b/Cargo.lock index 8ab285e..db0824d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -542,6 +542,12 @@ dependencies = [ "libc", ] +[[package]] +name = "nodejs-built-in-modules" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef70c89437ecec6d0052d1e39efee1830f37fe7d466d9aa44f08b04297f31d49" + [[package]] name = "num-traits" version = "0.2.19" @@ -630,6 +636,7 @@ dependencies = [ "fancy-regex", "flate2", "mmap-rs", + "nodejs-built-in-modules", "pathdiff", "radix_trie", "rstest", diff --git a/Cargo.toml b/Cargo.toml index 666257d..8ccb5a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ concurrent_lru = "^0.2" fancy-regex = { version = "^0.17.0", default-features = false, features = ["std"] } flate2 = { version = "1.1", default-features = false, features = ["zlib-rs"] } mmap-rs = { version = "^0.7.0", optional = true } +nodejs-built-in-modules = "0.0.1" pathdiff = "^0.2" radix_trie = "0.3.0" serde = { version = "1", features = ["derive"] } diff --git a/src/builtins.rs b/src/builtins.rs deleted file mode 100644 index a9142c0..0000000 --- a/src/builtins.rs +++ /dev/null @@ -1,58 +0,0 @@ -pub const NODEJS_BUILTINS: &[&str] = &[ - "assert", - "assert/strict", - "async_hooks", - "buffer", - "child_process", - "cluster", - "console", - "constants", - "crypto", - "dgram", - "diagnostics_channel", - "dns", - "dns/promises", - "domain", - "events", - "fs", - "fs/promises", - "http", - "http2", - "https", - "inspector", - "module", - "net", - "os", - "path", - "path/posix", - "path/win32", - "perf_hooks", - "process", - "punycode", - "querystring", - "readline", - "readline/promises", - "repl", - "stream", - "stream/consumers", - "stream/promises", - "stream/web", - "string_decoder", - "sys", - "timers", - "timers/promises", - "tls", - "trace_events", - "tty", - "url", - "util", - "util/types", - "v8", - "vm", - "worker_threads", - "zlib", -]; - -pub fn is_nodejs_builtin(s: &str) -> bool { - NODEJS_BUILTINS.binary_search(&s).is_ok() -} diff --git a/src/lib.rs b/src/lib.rs index 1502f3e..8a9a051 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,5 @@ pub mod fs; -mod builtins; mod error; mod manifest; mod util; @@ -273,7 +272,7 @@ pub fn resolve_to_unqualified_via_manifest( } if !is_set { - let message = if builtins::is_nodejs_builtin(specifier) { + let message = if nodejs_built_in_modules::is_nodejs_builtin_module(specifier) { if is_dependency_tree_root(manifest, parent_locator) { format!( "Your application tried to access {dependency_name}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since {dependency_name} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: {dependency_name}{via}\nRequired by: ${issuer_path}",