@@ -47,6 +47,8 @@ use deno::resolver::CliDenoResolverFs;
4747use deno:: resolver:: CliNpmReqResolver ;
4848use deno:: resolver:: CliResolver ;
4949use deno:: resolver:: CliResolverOptions ;
50+ use deno:: resolver:: CliSloppyImportsResolver ;
51+ use deno:: resolver:: SloppyImportsCachedFs ;
5052use deno:: util:: fs:: canonicalize_path_maybe_not_exists;
5153use deno:: DenoOptions ;
5254use 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 > {
0 commit comments