From 04473c04ed59cc2a987af3405074591fbc1341a4 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 7 Aug 2024 09:43:05 +0200 Subject: fix(compile): support workspace members importing other members (#24909) --- cli/tools/registry/unfurl.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'cli/tools/registry') diff --git a/cli/tools/registry/unfurl.rs b/cli/tools/registry/unfurl.rs index a28ba445a..489c9a1be 100644 --- a/cli/tools/registry/unfurl.rs +++ b/cli/tools/registry/unfurl.rs @@ -75,6 +75,9 @@ impl SpecifierUnfurler { match resolved { MappedResolution::Normal(specifier) | MappedResolution::ImportMap(specifier) => Some(specifier), + MappedResolution::WorkspaceJsrPackage { pkg_req_ref, .. } => { + Some(ModuleSpecifier::parse(&pkg_req_ref.to_string()).unwrap()) + } MappedResolution::WorkspaceNpmPackage { target_pkg_json: pkg_json, pkg_name, @@ -388,11 +391,14 @@ mod tests { use super::*; use deno_ast::MediaType; use deno_ast::ModuleSpecifier; + use deno_config::workspace::ResolverWorkspaceJsrPackage; use deno_core::serde_json::json; use deno_core::url::Url; use deno_runtime::deno_fs::RealFs; use deno_runtime::deno_node::PackageJson; + use deno_semver::Version; use import_map::ImportMapWithDiagnostics; + use indexmap::IndexMap; use pretty_assertions::assert_eq; use test_util::testdata_path; @@ -436,6 +442,13 @@ mod tests { let workspace_resolver = WorkspaceResolver::new_raw( Arc::new(ModuleSpecifier::from_directory_path(&cwd).unwrap()), Some(import_map), + vec![ResolverWorkspaceJsrPackage { + base: ModuleSpecifier::from_directory_path(cwd.join("jsr-package")) + .unwrap(), + name: "@denotest/example".to_string(), + version: Some(Version::parse_standard("1.0.0").unwrap()), + exports: IndexMap::from([(".".to_string(), "mod.ts".to_string())]), + }], vec![Arc::new(package_json)], deno_config::workspace::PackageJsonDepResolution::Enabled, ); @@ -458,6 +471,7 @@ import b from "./b.js"; import b2 from "./b"; import "./mod.ts"; import url from "url"; +import "@denotest/example"; // TODO: unfurl these to jsr // import "npm:@jsr/std__fs@1/file"; // import "npm:@jsr/std__fs@1"; @@ -507,6 +521,7 @@ import b from "./b.ts"; import b2 from "./b.ts"; import "./mod.ts"; import url from "node:url"; +import "jsr:@denotest/example@^1.0.0"; // TODO: unfurl these to jsr // import "npm:@jsr/std__fs@1/file"; // import "npm:@jsr/std__fs@1"; -- cgit v1.2.3