diff options
Diffstat (limited to 'cli/tools')
-rw-r--r-- | cli/tools/registry/mod.rs | 45 | ||||
-rw-r--r-- | cli/tools/registry/unfurl.rs | 31 |
2 files changed, 40 insertions, 36 deletions
diff --git a/cli/tools/registry/mod.rs b/cli/tools/registry/mod.rs index 134a973f7..3f59f4e14 100644 --- a/cli/tools/registry/mod.rs +++ b/cli/tools/registry/mod.rs @@ -12,7 +12,7 @@ use base64::prelude::BASE64_STANDARD; use base64::Engine; use deno_ast::ModuleSpecifier; use deno_config::workspace::JsrPackageConfig; -use deno_config::workspace::WorkspaceResolver; +use deno_config::workspace::PackageJsonDepResolution; use deno_core::anyhow::bail; use deno_core::anyhow::Context; use deno_core::error::AnyError; @@ -24,7 +24,6 @@ use deno_core::serde_json; use deno_core::serde_json::json; use deno_core::serde_json::Value; use deno_runtime::deno_fetch::reqwest; -use deno_runtime::deno_fs::FileSystem; use deno_terminal::colors; use lsp_types::Url; use serde::Deserialize; @@ -81,8 +80,6 @@ pub async fn publish( let auth_method = get_auth_method(publish_flags.token, publish_flags.dry_run)?; - let workspace_resolver = cli_factory.workspace_resolver().await?.clone(); - let directory_path = cli_factory.cli_options().initial_cwd(); let cli_options = cli_factory.cli_options(); let publish_configs = cli_options.workspace.jsr_packages_for_publish(); @@ -103,6 +100,20 @@ pub async fn publish( } } } + let specifier_unfurler = Arc::new(SpecifierUnfurler::new( + if cli_options.unstable_sloppy_imports() { + Some(SloppyImportsResolver::new(cli_factory.fs().clone())) + } else { + None + }, + cli_options + .create_workspace_resolver( + cli_factory.file_fetcher()?, + PackageJsonDepResolution::Enabled, + ) + .await?, + cli_options.unstable_bare_node_builtins(), + )); let diagnostics_collector = PublishDiagnosticsCollector::default(); let publish_preparer = PublishPreparer::new( @@ -110,9 +121,8 @@ pub async fn publish( cli_factory.module_graph_creator().await?.clone(), cli_factory.parsed_source_cache().clone(), cli_factory.type_checker().await?.clone(), - cli_factory.fs().clone(), cli_factory.cli_options().clone(), - workspace_resolver, + specifier_unfurler, ); let prepared_data = publish_preparer @@ -191,8 +201,7 @@ struct PublishPreparer { source_cache: Arc<ParsedSourceCache>, type_checker: Arc<TypeChecker>, cli_options: Arc<CliOptions>, - sloppy_imports_resolver: Option<Arc<SloppyImportsResolver>>, - workspace_resolver: Arc<WorkspaceResolver>, + specifier_unfurler: Arc<SpecifierUnfurler>, } impl PublishPreparer { @@ -201,23 +210,16 @@ impl PublishPreparer { module_graph_creator: Arc<ModuleGraphCreator>, source_cache: Arc<ParsedSourceCache>, type_checker: Arc<TypeChecker>, - fs: Arc<dyn FileSystem>, cli_options: Arc<CliOptions>, - workspace_resolver: Arc<WorkspaceResolver>, + specifier_unfurler: Arc<SpecifierUnfurler>, ) -> Self { - let sloppy_imports_resolver = if cli_options.unstable_sloppy_imports() { - Some(Arc::new(SloppyImportsResolver::new(fs.clone()))) - } else { - None - }; Self { graph_diagnostics_collector, module_graph_creator, source_cache, type_checker, cli_options, - sloppy_imports_resolver, - workspace_resolver, + specifier_unfurler, } } @@ -432,18 +434,11 @@ impl PublishPreparer { let tarball = deno_core::unsync::spawn_blocking({ let diagnostics_collector = diagnostics_collector.clone(); - let workspace_resolver = self.workspace_resolver.clone(); - let sloppy_imports_resolver = self.sloppy_imports_resolver.clone(); + let unfurler = self.specifier_unfurler.clone(); let cli_options = self.cli_options.clone(); let source_cache = self.source_cache.clone(); let config_path = config_path.clone(); move || { - let bare_node_builtins = cli_options.unstable_bare_node_builtins(); - let unfurler = SpecifierUnfurler::new( - sloppy_imports_resolver.as_deref(), - &workspace_resolver, - bare_node_builtins, - ); let root_specifier = ModuleSpecifier::from_directory_path(&root_dir).unwrap(); let publish_paths = diff --git a/cli/tools/registry/unfurl.rs b/cli/tools/registry/unfurl.rs index 147b59f30..758db0796 100644 --- a/cli/tools/registry/unfurl.rs +++ b/cli/tools/registry/unfurl.rs @@ -5,6 +5,7 @@ use deno_ast::SourceRange; use deno_ast::SourceTextInfo; use deno_config::package_json::PackageJsonDepValue; use deno_config::workspace::MappedResolution; +use deno_config::workspace::PackageJsonDepResolution; use deno_config::workspace::WorkspaceResolver; use deno_core::ModuleSpecifier; use deno_graph::DependencyDescriptor; @@ -40,18 +41,22 @@ impl SpecifierUnfurlerDiagnostic { } } -pub struct SpecifierUnfurler<'a> { - sloppy_imports_resolver: Option<&'a SloppyImportsResolver>, - workspace_resolver: &'a WorkspaceResolver, +pub struct SpecifierUnfurler { + sloppy_imports_resolver: Option<SloppyImportsResolver>, + workspace_resolver: WorkspaceResolver, bare_node_builtins: bool, } -impl<'a> SpecifierUnfurler<'a> { +impl SpecifierUnfurler { pub fn new( - sloppy_imports_resolver: Option<&'a SloppyImportsResolver>, - workspace_resolver: &'a WorkspaceResolver, + sloppy_imports_resolver: Option<SloppyImportsResolver>, + workspace_resolver: WorkspaceResolver, bare_node_builtins: bool, ) -> Self { + debug_assert_eq!( + workspace_resolver.pkg_json_dep_resolution(), + PackageJsonDepResolution::Enabled + ); Self { sloppy_imports_resolver, workspace_resolver, @@ -136,7 +141,7 @@ impl<'a> SpecifierUnfurler<'a> { // resolved // }; let resolved = - if let Some(sloppy_imports_resolver) = self.sloppy_imports_resolver { + if let Some(sloppy_imports_resolver) = &self.sloppy_imports_resolver { sloppy_imports_resolver .resolve(&resolved, deno_graph::source::ResolutionMode::Execution) .as_specifier() @@ -148,6 +153,12 @@ impl<'a> SpecifierUnfurler<'a> { if relative_resolved == specifier { None // nothing to unfurl } else { + log::debug!( + "Unfurled specifier: {} from {} -> {}", + specifier, + referrer, + relative_resolved + ); Some(relative_resolved) } } @@ -395,11 +406,9 @@ mod tests { deno_config::workspace::PackageJsonDepResolution::Enabled, ); let fs = Arc::new(RealFs); - let sloppy_imports_resolver = SloppyImportsResolver::new(fs); - let unfurler = SpecifierUnfurler::new( - Some(&sloppy_imports_resolver), - &workspace_resolver, + Some(SloppyImportsResolver::new(fs)), + workspace_resolver, true, ); |