summaryrefslogtreecommitdiff
path: root/cli/standalone
diff options
context:
space:
mode:
Diffstat (limited to 'cli/standalone')
-rw-r--r--cli/standalone/binary.rs1
-rw-r--r--cli/standalone/mod.rs40
2 files changed, 34 insertions, 7 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index 960aad157..b48e1c97c 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -720,7 +720,6 @@ impl<'a> DenoCompileBinaryWriter<'a> {
unstable_config: UnstableConfig {
legacy_flag_enabled: false,
bare_node_builtins: cli_options.unstable_bare_node_builtins(),
- detect_cjs: cli_options.unstable_detect_cjs(),
sloppy_imports: cli_options.unstable_sloppy_imports(),
features: cli_options.unstable_features(),
},
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs
index bb0ab423d..15937c7ae 100644
--- a/cli/standalone/mod.rs
+++ b/cli/standalone/mod.rs
@@ -45,6 +45,8 @@ use deno_runtime::WorkerLogLevel;
use deno_semver::npm::NpmPackageReqReference;
use import_map::parse_from_json;
use node_resolver::analyze::NodeCodeTranslator;
+use node_resolver::errors::ClosestPkgJsonError;
+use node_resolver::NodeModuleKind;
use node_resolver::NodeResolutionMode;
use serialization::DenoCompileModuleSource;
use std::borrow::Cow;
@@ -76,9 +78,9 @@ use crate::npm::CliNpmResolverCreateOptions;
use crate::npm::CliNpmResolverManagedSnapshotOption;
use crate::npm::CreateInNpmPkgCheckerOptions;
use crate::resolver::CjsTracker;
-use crate::resolver::CjsTrackerOptions;
use crate::resolver::CliDenoResolverFs;
use crate::resolver::CliNodeResolver;
+use crate::resolver::IsCjsResolverOptions;
use crate::resolver::NpmModuleLoader;
use crate::util::progress_bar::ProgressBar;
use crate::util::progress_bar::ProgressBarStyle;
@@ -146,13 +148,27 @@ impl ModuleLoader for EmbeddedModuleLoader {
type_error(format!("Referrer uses invalid specifier: {}", err))
})?
};
+ let referrer_kind = if self
+ .shared
+ .cjs_tracker
+ .is_maybe_cjs(&referrer, MediaType::from_specifier(&referrer))?
+ {
+ NodeModuleKind::Cjs
+ } else {
+ NodeModuleKind::Esm
+ };
if self.shared.node_resolver.in_npm_package(&referrer) {
return Ok(
self
.shared
.node_resolver
- .resolve(raw_specifier, &referrer, NodeResolutionMode::Execution)?
+ .resolve(
+ raw_specifier,
+ &referrer,
+ referrer_kind,
+ NodeResolutionMode::Execution,
+ )?
.into_url(),
);
}
@@ -178,6 +194,7 @@ impl ModuleLoader for EmbeddedModuleLoader {
pkg_json.dir_path(),
sub_path.as_deref(),
Some(&referrer),
+ referrer_kind,
NodeResolutionMode::Execution,
)?,
),
@@ -192,6 +209,7 @@ impl ModuleLoader for EmbeddedModuleLoader {
req,
sub_path.as_deref(),
&referrer,
+ referrer_kind,
NodeResolutionMode::Execution,
)
}
@@ -211,6 +229,7 @@ impl ModuleLoader for EmbeddedModuleLoader {
pkg_folder,
sub_path.as_deref(),
Some(&referrer),
+ referrer_kind,
NodeResolutionMode::Execution,
)?,
)
@@ -224,6 +243,7 @@ impl ModuleLoader for EmbeddedModuleLoader {
return self.shared.node_resolver.resolve_req_reference(
&reference,
&referrer,
+ referrer_kind,
NodeResolutionMode::Execution,
);
}
@@ -250,6 +270,7 @@ impl ModuleLoader for EmbeddedModuleLoader {
let maybe_res = self.shared.node_resolver.resolve_if_for_npm_pkg(
raw_specifier,
&referrer,
+ referrer_kind,
NodeResolutionMode::Execution,
)?;
if let Some(res) = maybe_res {
@@ -429,6 +450,14 @@ impl NodeRequireLoader for EmbeddedModuleLoader {
) -> Result<String, AnyError> {
Ok(self.shared.fs.read_text_file_lossy_sync(path, None)?)
}
+
+ fn is_maybe_cjs(
+ &self,
+ specifier: &ModuleSpecifier,
+ ) -> Result<bool, ClosestPkgJsonError> {
+ let media_type = MediaType::from_specifier(specifier);
+ self.shared.cjs_tracker.is_maybe_cjs(specifier, media_type)
+ }
}
struct StandaloneModuleLoaderFactory {
@@ -628,14 +657,14 @@ pub async fn run(data: StandaloneData) -> Result<i32, AnyError> {
let cjs_tracker = Arc::new(CjsTracker::new(
in_npm_pkg_checker.clone(),
pkg_json_resolver.clone(),
- CjsTrackerOptions {
- unstable_detect_cjs: metadata.unstable_config.detect_cjs,
+ IsCjsResolverOptions {
+ detect_cjs: !metadata.workspace_resolver.package_jsons.is_empty(),
+ is_node_main: false,
},
));
let cache_db = Caches::new(deno_dir_provider.clone());
let node_analysis_cache = NodeAnalysisCache::new(cache_db.node_analysis_db());
let cli_node_resolver = Arc::new(CliNodeResolver::new(
- cjs_tracker.clone(),
fs.clone(),
in_npm_pkg_checker.clone(),
node_resolver.clone(),
@@ -646,7 +675,6 @@ pub async fn run(data: StandaloneData) -> Result<i32, AnyError> {
cjs_tracker.clone(),
fs.clone(),
None,
- false,
);
let node_code_translator = Arc::new(NodeCodeTranslator::new(
cjs_esm_code_analyzer,