summaryrefslogtreecommitdiff
path: root/cli/standalone
diff options
context:
space:
mode:
Diffstat (limited to 'cli/standalone')
-rw-r--r--cli/standalone/binary.rs21
-rw-r--r--cli/standalone/mod.rs15
2 files changed, 36 insertions, 0 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index 8fb640be3..ed38e164b 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -19,6 +19,7 @@ use std::process::Command;
use deno_ast::ModuleSpecifier;
use deno_config::workspace::PackageJsonDepResolution;
+use deno_config::workspace::ResolverWorkspaceJsrPackage;
use deno_config::workspace::Workspace;
use deno_config::workspace::WorkspaceResolver;
use deno_core::anyhow::bail;
@@ -33,6 +34,7 @@ use deno_npm::NpmSystemInfo;
use deno_runtime::deno_node::PackageJson;
use deno_semver::npm::NpmVersionReqParseError;
use deno_semver::package::PackageReq;
+use deno_semver::Version;
use deno_semver::VersionReqSpecifierParseError;
use eszip::EszipRelativeFileBaseUrl;
use indexmap::IndexMap;
@@ -80,9 +82,18 @@ pub struct SerializedWorkspaceResolverImportMap {
pub json: String,
}
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub struct SerializedResolverWorkspaceJsrPackage {
+ pub relative_base: String,
+ pub name: String,
+ pub version: Option<Version>,
+ pub exports: IndexMap<String, String>,
+}
+
#[derive(Deserialize, Serialize)]
pub struct SerializedWorkspaceResolver {
pub import_map: Option<SerializedWorkspaceResolverImportMap>,
+ pub jsr_pkgs: Vec<SerializedResolverWorkspaceJsrPackage>,
pub package_jsons: BTreeMap<String, serde_json::Value>,
pub pkg_json_resolution: PackageJsonDepResolution,
}
@@ -620,6 +631,16 @@ impl<'a> DenoCompileBinaryWriter<'a> {
json: i.to_json(),
}
}),
+ jsr_pkgs: self
+ .workspace_resolver
+ .jsr_packages()
+ .map(|pkg| SerializedResolverWorkspaceJsrPackage {
+ relative_base: root_dir_url.specifier_key(&pkg.base).into_owned(),
+ name: pkg.name.clone(),
+ version: pkg.version.clone(),
+ exports: pkg.exports.clone(),
+ })
+ .collect(),
package_jsons: self
.workspace_resolver
.package_jsons()
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs
index e4661051a..635293cc9 100644
--- a/cli/standalone/mod.rs
+++ b/cli/standalone/mod.rs
@@ -8,6 +8,7 @@
use deno_ast::MediaType;
use deno_config::workspace::MappedResolution;
use deno_config::workspace::MappedResolutionError;
+use deno_config::workspace::ResolverWorkspaceJsrPackage;
use deno_config::workspace::WorkspaceResolver;
use deno_core::anyhow::Context;
use deno_core::error::generic_error;
@@ -169,6 +170,9 @@ impl ModuleLoader for EmbeddedModuleLoader {
self.shared.workspace_resolver.resolve(specifier, &referrer);
match mapped_resolution {
+ Ok(MappedResolution::WorkspaceJsrPackage { specifier, .. }) => {
+ Ok(specifier)
+ }
Ok(MappedResolution::WorkspaceNpmPackage {
target_pkg_json: pkg_json,
sub_path,
@@ -613,6 +617,17 @@ pub async fn run(
WorkspaceResolver::new_raw(
root_dir_url.clone(),
import_map,
+ metadata
+ .workspace_resolver
+ .jsr_pkgs
+ .iter()
+ .map(|pkg| ResolverWorkspaceJsrPackage {
+ base: root_dir_url.join(&pkg.relative_base).unwrap(),
+ name: pkg.name.clone(),
+ version: pkg.version.clone(),
+ exports: pkg.exports.clone(),
+ })
+ .collect(),
pkg_jsons,
metadata.workspace_resolver.pkg_json_resolution,
)