Skip to content

Commit 3c38740

Browse files
authored
feat: allow enabling the unstable sloppy imports (#533)
1 parent 5c35a9c commit 3c38740

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

crates/deno_facade/emitter.rs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ use deno::resolver::CliDenoResolverFs;
4747
use deno::resolver::CliNpmReqResolver;
4848
use deno::resolver::CliResolver;
4949
use deno::resolver::CliResolverOptions;
50+
use deno::resolver::CliSloppyImportsResolver;
51+
use deno::resolver::SloppyImportsCachedFs;
5052
use deno::util::fs::canonicalize_path_maybe_not_exists;
5153
use deno::DenoOptions;
5254
use deno::PermissionsContainer;
@@ -115,6 +117,7 @@ pub struct EmitterFactory {
115117
resolved_npm_rc: Deferred<Arc<ResolvedNpmRc>>,
116118
resolver: Deferred<Arc<CliResolver>>,
117119
root_permissions_container: Deferred<PermissionsContainer>,
120+
sloppy_imports_resolver: Deferred<Option<Arc<CliSloppyImportsResolver>>>,
118121
workspace_resolver: Deferred<Arc<WorkspaceResolver>>,
119122

120123
cache_strategy: Option<CacheSetting>,
@@ -154,6 +157,7 @@ impl EmitterFactory {
154157
resolved_npm_rc: Default::default(),
155158
resolver: Default::default(),
156159
root_permissions_container: Default::default(),
160+
sloppy_imports_resolver: Default::default(),
157161
workspace_resolver: Default::default(),
158162

159163
cache_strategy: None,
@@ -404,7 +408,7 @@ impl EmitterFactory {
404408
node_resolver: self.node_resolver().await?.clone(),
405409
npm_req_resolver: self.npm_req_resolver().await?.clone(),
406410
}),
407-
sloppy_imports_resolver: None,
411+
sloppy_imports_resolver: self.sloppy_imports_resolver()?.cloned(),
408412
workspace_resolver: self.workspace_resolver()?.clone(),
409413
is_byonm: options.use_byonm(),
410414
maybe_vendor_dir: options.vendor_dir_path(),
@@ -504,6 +508,21 @@ impl EmitterFactory {
504508
})
505509
}
506510

511+
pub fn sloppy_imports_resolver(
512+
&self,
513+
) -> Result<Option<&Arc<CliSloppyImportsResolver>>, AnyError> {
514+
self
515+
.sloppy_imports_resolver
516+
.get_or_try_init(|| {
517+
Ok(self.deno_options()?.unstable_sloppy_imports().then(|| {
518+
Arc::new(CliSloppyImportsResolver::new(SloppyImportsCachedFs::new(
519+
self.fs().clone(),
520+
)))
521+
}))
522+
})
523+
.map(|maybe| maybe.as_ref())
524+
}
525+
507526
pub fn workspace_resolver(
508527
&self,
509528
) -> Result<&Arc<WorkspaceResolver>, anyhow::Error> {

deno/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ impl DenoOptions {
115115
self.builder.unstable_detect_cjs.unwrap_or_default()
116116
}
117117

118+
pub fn unstable_sloppy_imports(&self) -> bool {
119+
self.workspace().has_unstable("sloppy-imports")
120+
}
121+
118122
fn byonm_enabled(&self) -> bool {
119123
self.node_modules_dir().ok().flatten() == Some(NodeModulesDirMode::Manual)
120124
}

0 commit comments

Comments
 (0)