diff --git a/ext/node/ops/require.rs b/ext/node/ops/require.rs index 484e4327dc..1d6ef3ec6b 100644 --- a/ext/node/ops/require.rs +++ b/ext/node/ops/require.rs @@ -26,7 +26,6 @@ use node_resolver::NpmPackageFolderResolver; use node_resolver::ResolutionMode; use node_resolver::UrlOrPath; use node_resolver::UrlOrPathRef; -use node_resolver::REQUIRE_CONDITIONS; use sys_traits::FsCanonicalize; use sys_traits::FsMetadata; use sys_traits::FsMetadataValue; @@ -534,7 +533,7 @@ pub fn op_require_try_self< exports, Some(&referrer), ResolutionMode::Require, - REQUIRE_CONDITIONS, + node_resolver.require_conditions(), NodeResolutionKind::Execution, )?; Ok(Some(url_or_path_to_string(r)?)) @@ -641,7 +640,7 @@ pub fn op_require_resolve_exports< .map(|r| UrlOrPathRef::from_path(r)) .as_ref(), ResolutionMode::Require, - REQUIRE_CONDITIONS, + node_resolver.require_conditions(), NodeResolutionKind::Execution, )?; Ok(Some(url_or_path_to_string(r)?)) @@ -720,7 +719,7 @@ pub fn op_require_package_imports_resolve< Some(&UrlOrPathRef::from_path(&referrer_path)), ResolutionMode::Require, Some(&pkg), - REQUIRE_CONDITIONS, + node_resolver.require_conditions(), NodeResolutionKind::Execution, )?; Ok(Some(url_or_path_to_string(url)?)) diff --git a/resolvers/node/resolution.rs b/resolvers/node/resolution.rs index aad17a587b..1950a01873 100644 --- a/resolvers/node/resolution.rs +++ b/resolvers/node/resolution.rs @@ -137,6 +137,10 @@ impl ConditionResolver { ResolutionMode::Require => &self.require_conditions, } } + + pub fn require_conditions(&self) -> &[Cow<'static, str>] { + &self.require_conditions + } } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] @@ -310,6 +314,10 @@ impl< } } + pub fn require_conditions(&self) -> &[Cow<'static, str>] { + self.condition_resolver.require_conditions() + } + pub fn in_npm_package(&self, specifier: &Url) -> bool { self.in_npm_pkg_checker.in_npm_package(specifier) } diff --git a/tests/specs/run/conditional_exports_from_require/__test__.jsonc b/tests/specs/run/conditional_exports_from_require/__test__.jsonc new file mode 100644 index 0000000000..37b35848cc --- /dev/null +++ b/tests/specs/run/conditional_exports_from_require/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "run --unstable-node-conditions some-condition main.cjs", + "output": "good\n" +} diff --git a/tests/specs/run/conditional_exports_from_require/deno.json b/tests/specs/run/conditional_exports_from_require/deno.json new file mode 100644 index 0000000000..fde86a1efb --- /dev/null +++ b/tests/specs/run/conditional_exports_from_require/deno.json @@ -0,0 +1,3 @@ +{ + "nodeModulesDir": "manual" +} diff --git a/tests/specs/run/conditional_exports_from_require/main.cjs b/tests/specs/run/conditional_exports_from_require/main.cjs new file mode 100644 index 0000000000..347e208321 --- /dev/null +++ b/tests/specs/run/conditional_exports_from_require/main.cjs @@ -0,0 +1 @@ +require("foo"); diff --git a/tests/specs/run/conditional_exports_from_require/node_modules/foo/bad.js b/tests/specs/run/conditional_exports_from_require/node_modules/foo/bad.js new file mode 100644 index 0000000000..11d4dc4e67 --- /dev/null +++ b/tests/specs/run/conditional_exports_from_require/node_modules/foo/bad.js @@ -0,0 +1 @@ +console.log("bad"); diff --git a/tests/specs/run/conditional_exports_from_require/node_modules/foo/good.js b/tests/specs/run/conditional_exports_from_require/node_modules/foo/good.js new file mode 100644 index 0000000000..7ebb266b94 --- /dev/null +++ b/tests/specs/run/conditional_exports_from_require/node_modules/foo/good.js @@ -0,0 +1 @@ +console.log("good"); diff --git a/tests/specs/run/conditional_exports_from_require/node_modules/foo/package.json b/tests/specs/run/conditional_exports_from_require/node_modules/foo/package.json new file mode 100644 index 0000000000..5f1e2bedde --- /dev/null +++ b/tests/specs/run/conditional_exports_from_require/node_modules/foo/package.json @@ -0,0 +1,8 @@ +{ + "exports": { + ".": { + "some-condition": "./good.js", + "default": "./bad.js" + } + } +}