@@ -32,11 +32,13 @@ use deno::graph_util::ModuleGraphBuilder;
32
32
use deno:: graph_util:: ModuleGraphCreator ;
33
33
use deno:: http_util:: HttpClientProvider ;
34
34
use deno:: node_resolver:: InNpmPackageChecker ;
35
+ use deno:: npm:: byonm:: CliByonmNpmResolverCreateOptions ;
36
+ use deno:: npm:: create_cli_npm_resolver;
35
37
use deno:: npm:: create_in_npm_pkg_checker;
36
- use deno:: npm:: create_managed_npm_resolver;
37
38
use deno:: npm:: CliManagedInNpmPkgCheckerCreateOptions ;
38
39
use deno:: npm:: CliManagedNpmResolverCreateOptions ;
39
40
use deno:: npm:: CliNpmResolver ;
41
+ use deno:: npm:: CliNpmResolverCreateOptions ;
40
42
use deno:: npm:: CliNpmResolverManagedSnapshotOption ;
41
43
use deno:: npm:: CreateInNpmPkgCheckerOptions ;
42
44
use deno:: resolver:: CjsTracker ;
@@ -45,6 +47,7 @@ use deno::resolver::CliDenoResolverFs;
45
47
use deno:: resolver:: CliNpmReqResolver ;
46
48
use deno:: resolver:: CliResolver ;
47
49
use deno:: resolver:: CliResolverOptions ;
50
+ use deno:: util:: fs:: canonicalize_path_maybe_not_exists;
48
51
use deno:: DenoOptions ;
49
52
use deno:: PermissionsContainer ;
50
53
use deno_core:: error:: AnyError ;
@@ -279,7 +282,7 @@ impl EmitterFactory {
279
282
. get_or_init ( || Arc :: new ( HttpClientProvider :: new ( None , None ) ) )
280
283
}
281
284
282
- pub fn real_fs ( & self ) -> Arc < dyn deno:: deno_fs:: FileSystem > {
285
+ pub fn fs ( & self ) -> Arc < dyn deno:: deno_fs:: FileSystem > {
283
286
Arc :: new ( deno:: deno_fs:: RealFs )
284
287
}
285
288
@@ -326,25 +329,49 @@ impl EmitterFactory {
326
329
) -> Result < & Arc < dyn CliNpmResolver > , anyhow:: Error > {
327
330
self
328
331
. npm_resolver
329
- . get_or_try_init_async ( async {
330
- let options = self . deno_options ( ) ?;
331
- create_managed_npm_resolver ( CliManagedNpmResolverCreateOptions {
332
- snapshot : CliNpmResolverManagedSnapshotOption :: Specified ( None ) ,
333
- maybe_lockfile : options. maybe_lockfile ( ) . cloned ( ) ,
334
- fs : self . real_fs ( ) ,
335
- http_client_provider : self . http_client_provider ( ) . clone ( ) ,
336
- npm_cache_dir : self . npm_cache_dir ( ) ?. clone ( ) ,
337
- cache_setting : self
338
- . cache_strategy
339
- . clone ( )
340
- . unwrap_or ( CacheSetting :: Use ) ,
341
- maybe_node_modules_path : None ,
342
- npm_system_info : Default :: default ( ) ,
343
- npm_install_deps_provider : Default :: default ( ) ,
344
- npmrc : self . resolved_npm_rc ( ) ?. clone ( ) ,
345
- } )
346
- . await
347
- } )
332
+ . get_or_try_init_async (
333
+ async {
334
+ let fs = self . fs ( ) ;
335
+ let options = self . deno_options ( ) ?;
336
+ create_cli_npm_resolver ( if options. use_byonm ( ) {
337
+ CliNpmResolverCreateOptions :: Byonm (
338
+ CliByonmNpmResolverCreateOptions {
339
+ fs : CliDenoResolverFs ( fs) ,
340
+ pkg_json_resolver : self . pkg_json_resolver ( ) . clone ( ) ,
341
+ root_node_modules_dir : Some (
342
+ match options. node_modules_dir_path ( ) {
343
+ Some ( node_modules_path) => node_modules_path. to_path_buf ( ) ,
344
+ None => {
345
+ canonicalize_path_maybe_not_exists ( options. initial_cwd ( ) ) ?
346
+ . join ( "node_modules" )
347
+ }
348
+ } ,
349
+ ) ,
350
+ } ,
351
+ )
352
+ } else {
353
+ CliNpmResolverCreateOptions :: Managed (
354
+ CliManagedNpmResolverCreateOptions {
355
+ snapshot : CliNpmResolverManagedSnapshotOption :: Specified ( None ) ,
356
+ maybe_lockfile : options. maybe_lockfile ( ) . cloned ( ) ,
357
+ fs,
358
+ http_client_provider : self . http_client_provider ( ) . clone ( ) ,
359
+ npm_cache_dir : self . npm_cache_dir ( ) ?. clone ( ) ,
360
+ cache_setting : self
361
+ . cache_strategy
362
+ . clone ( )
363
+ . unwrap_or ( CacheSetting :: Use ) ,
364
+ maybe_node_modules_path : None ,
365
+ npm_system_info : Default :: default ( ) ,
366
+ npm_install_deps_provider : Default :: default ( ) ,
367
+ npmrc : self . resolved_npm_rc ( ) ?. clone ( ) ,
368
+ } ,
369
+ )
370
+ } )
371
+ . await
372
+ }
373
+ . boxed_local ( ) ,
374
+ )
348
375
. await
349
376
}
350
377
@@ -357,7 +384,7 @@ impl EmitterFactory {
357
384
let npm_resolver = self . npm_resolver ( ) . await ?;
358
385
Ok ( Arc :: new ( CliNpmReqResolver :: new ( NpmReqResolverOptions {
359
386
byonm_resolver : ( npm_resolver. clone ( ) ) . into_maybe_byonm ( ) ,
360
- fs : CliDenoResolverFs ( self . real_fs ( ) ) ,
387
+ fs : CliDenoResolverFs ( self . fs ( ) ) ,
361
388
in_npm_pkg_checker : self . in_npm_pkg_checker ( ) ?. clone ( ) ,
362
389
node_resolver : self . node_resolver ( ) . await ?. clone ( ) ,
363
390
npm_req_resolver : npm_resolver. clone ( ) . into_npm_req_resolver ( ) ,
@@ -404,7 +431,7 @@ impl EmitterFactory {
404
431
405
432
pub fn npm_cache_dir ( & self ) -> Result < & Arc < NpmCacheDir > , anyhow:: Error > {
406
433
self . npm_cache_dir . get_or_try_init ( || {
407
- let fs = self . real_fs ( ) ;
434
+ let fs = self . fs ( ) ;
408
435
let global_path = self . deno_dir . npm_folder_path ( ) ;
409
436
let options = self . deno_options ( ) ?;
410
437
Ok ( Arc :: new ( NpmCacheDir :: new (
@@ -429,7 +456,7 @@ impl EmitterFactory {
429
456
. get_or_try_init_async (
430
457
async {
431
458
Ok ( Arc :: new ( NodeResolver :: new (
432
- DenoFsNodeResolverEnv :: new ( self . real_fs ( ) . clone ( ) ) ,
459
+ DenoFsNodeResolverEnv :: new ( self . fs ( ) . clone ( ) ) ,
433
460
self . in_npm_pkg_checker ( ) ?. clone ( ) ,
434
461
self
435
462
. npm_resolver ( )
@@ -447,7 +474,7 @@ impl EmitterFactory {
447
474
pub fn pkg_json_resolver ( & self ) -> & Arc < PackageJsonResolver > {
448
475
self . pkg_json_resolver . get_or_init ( || {
449
476
Arc :: new ( PackageJsonResolver :: new ( DenoFsNodeResolverEnv :: new (
450
- self . real_fs ( ) . clone ( ) ,
477
+ self . fs ( ) . clone ( ) ,
451
478
) ) )
452
479
} )
453
480
}
@@ -456,7 +483,7 @@ impl EmitterFactory {
456
483
& self ,
457
484
) -> Result < & Arc < RuntimePermissionDescriptorParser > , anyhow:: Error > {
458
485
self . permission_desc_parser . get_or_try_init ( || {
459
- let fs = self . real_fs ( ) ;
486
+ let fs = self . fs ( ) ;
460
487
Ok ( Arc :: new ( RuntimePermissionDescriptorParser :: new ( fs) ) )
461
488
} )
462
489
}
@@ -537,7 +564,7 @@ impl EmitterFactory {
537
564
self . cjs_tracker ( ) ?. clone ( ) ,
538
565
options. clone ( ) ,
539
566
self . file_fetcher ( ) ?. clone ( ) ,
540
- self . real_fs ( ) . clone ( ) ,
567
+ self . fs ( ) . clone ( ) ,
541
568
self . global_http_cache ( ) . clone ( ) ,
542
569
self . in_npm_pkg_checker ( ) ?. clone ( ) ,
543
570
options. maybe_lockfile ( ) . cloned ( ) ,
0 commit comments