Skip to content

Commit 7dc3b49

Browse files
authored
feat: support loading the commonjs (#500)
* feat: support loading the commonjs * stamp: polishing * stamp: make clippy happy
1 parent c498115 commit 7dc3b49

File tree

13 files changed

+446
-96
lines changed

13 files changed

+446
-96
lines changed

crates/deno_facade/emitter.rs

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@ use deno::graph_util::ModuleGraphBuilder;
3232
use deno::graph_util::ModuleGraphCreator;
3333
use deno::http_util::HttpClientProvider;
3434
use deno::node_resolver::InNpmPackageChecker;
35+
use deno::npm::byonm::CliByonmNpmResolverCreateOptions;
36+
use deno::npm::create_cli_npm_resolver;
3537
use deno::npm::create_in_npm_pkg_checker;
36-
use deno::npm::create_managed_npm_resolver;
3738
use deno::npm::CliManagedInNpmPkgCheckerCreateOptions;
3839
use deno::npm::CliManagedNpmResolverCreateOptions;
3940
use deno::npm::CliNpmResolver;
41+
use deno::npm::CliNpmResolverCreateOptions;
4042
use deno::npm::CliNpmResolverManagedSnapshotOption;
4143
use deno::npm::CreateInNpmPkgCheckerOptions;
4244
use deno::resolver::CjsTracker;
@@ -45,6 +47,7 @@ use deno::resolver::CliDenoResolverFs;
4547
use deno::resolver::CliNpmReqResolver;
4648
use deno::resolver::CliResolver;
4749
use deno::resolver::CliResolverOptions;
50+
use deno::util::fs::canonicalize_path_maybe_not_exists;
4851
use deno::DenoOptions;
4952
use deno::PermissionsContainer;
5053
use deno_core::error::AnyError;
@@ -279,7 +282,7 @@ impl EmitterFactory {
279282
.get_or_init(|| Arc::new(HttpClientProvider::new(None, None)))
280283
}
281284

282-
pub fn real_fs(&self) -> Arc<dyn deno::deno_fs::FileSystem> {
285+
pub fn fs(&self) -> Arc<dyn deno::deno_fs::FileSystem> {
283286
Arc::new(deno::deno_fs::RealFs)
284287
}
285288

@@ -326,25 +329,49 @@ impl EmitterFactory {
326329
) -> Result<&Arc<dyn CliNpmResolver>, anyhow::Error> {
327330
self
328331
.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+
)
348375
.await
349376
}
350377

@@ -357,7 +384,7 @@ impl EmitterFactory {
357384
let npm_resolver = self.npm_resolver().await?;
358385
Ok(Arc::new(CliNpmReqResolver::new(NpmReqResolverOptions {
359386
byonm_resolver: (npm_resolver.clone()).into_maybe_byonm(),
360-
fs: CliDenoResolverFs(self.real_fs()),
387+
fs: CliDenoResolverFs(self.fs()),
361388
in_npm_pkg_checker: self.in_npm_pkg_checker()?.clone(),
362389
node_resolver: self.node_resolver().await?.clone(),
363390
npm_req_resolver: npm_resolver.clone().into_npm_req_resolver(),
@@ -404,7 +431,7 @@ impl EmitterFactory {
404431

405432
pub fn npm_cache_dir(&self) -> Result<&Arc<NpmCacheDir>, anyhow::Error> {
406433
self.npm_cache_dir.get_or_try_init(|| {
407-
let fs = self.real_fs();
434+
let fs = self.fs();
408435
let global_path = self.deno_dir.npm_folder_path();
409436
let options = self.deno_options()?;
410437
Ok(Arc::new(NpmCacheDir::new(
@@ -429,7 +456,7 @@ impl EmitterFactory {
429456
.get_or_try_init_async(
430457
async {
431458
Ok(Arc::new(NodeResolver::new(
432-
DenoFsNodeResolverEnv::new(self.real_fs().clone()),
459+
DenoFsNodeResolverEnv::new(self.fs().clone()),
433460
self.in_npm_pkg_checker()?.clone(),
434461
self
435462
.npm_resolver()
@@ -447,7 +474,7 @@ impl EmitterFactory {
447474
pub fn pkg_json_resolver(&self) -> &Arc<PackageJsonResolver> {
448475
self.pkg_json_resolver.get_or_init(|| {
449476
Arc::new(PackageJsonResolver::new(DenoFsNodeResolverEnv::new(
450-
self.real_fs().clone(),
477+
self.fs().clone(),
451478
)))
452479
})
453480
}
@@ -456,7 +483,7 @@ impl EmitterFactory {
456483
&self,
457484
) -> Result<&Arc<RuntimePermissionDescriptorParser>, anyhow::Error> {
458485
self.permission_desc_parser.get_or_try_init(|| {
459-
let fs = self.real_fs();
486+
let fs = self.fs();
460487
Ok(Arc::new(RuntimePermissionDescriptorParser::new(fs)))
461488
})
462489
}
@@ -537,7 +564,7 @@ impl EmitterFactory {
537564
self.cjs_tracker()?.clone(),
538565
options.clone(),
539566
self.file_fetcher()?.clone(),
540-
self.real_fs().clone(),
567+
self.fs().clone(),
541568
self.global_http_cache().clone(),
542569
self.in_npm_pkg_checker()?.clone(),
543570
options.maybe_lockfile().cloned(),

crates/deno_facade/eszip/migrate.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ mod v2 {
450450
ca_stores: None,
451451
ca_data: None,
452452
unsafely_ignore_certificate_errors: None,
453+
node_modules: None,
453454
};
454455

455456
v2_eszip.add_opaque_data(

0 commit comments

Comments
 (0)