mirror of
https://github.com/denoland/deno.git
synced 2025-07-24 21:54:00 +00:00
perf: upgrade to deno_semver 0.7 (#27426)
This commit is contained in:
parent
bd1437d5ec
commit
e417475a0c
30 changed files with 282 additions and 147 deletions
|
@ -18,6 +18,7 @@ use deno_graph::ModuleSpecifier;
|
|||
use deno_semver::jsr::JsrPackageReqReference;
|
||||
use deno_semver::package::PackageNv;
|
||||
use deno_semver::package::PackageReq;
|
||||
use deno_semver::StackString;
|
||||
use deno_semver::Version;
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
|
@ -33,8 +34,8 @@ pub struct JsrCacheResolver {
|
|||
/// The `module_graph` fields of the version infos should be forcibly absent.
|
||||
/// It can be large and we don't want to store it.
|
||||
info_by_nv: DashMap<PackageNv, Option<Arc<JsrPackageVersionInfo>>>,
|
||||
info_by_name: DashMap<String, Option<Arc<JsrPackageInfo>>>,
|
||||
workspace_scope_by_name: HashMap<String, ModuleSpecifier>,
|
||||
info_by_name: DashMap<StackString, Option<Arc<JsrPackageInfo>>>,
|
||||
workspace_scope_by_name: HashMap<StackString, ModuleSpecifier>,
|
||||
cache: Arc<dyn HttpCache>,
|
||||
}
|
||||
|
||||
|
@ -59,7 +60,7 @@ impl JsrCacheResolver {
|
|||
continue;
|
||||
};
|
||||
let nv = PackageNv {
|
||||
name: jsr_pkg_config.name.clone(),
|
||||
name: jsr_pkg_config.name.as_str().into(),
|
||||
version: version.clone(),
|
||||
};
|
||||
info_by_name.insert(
|
||||
|
@ -125,8 +126,8 @@ impl JsrCacheResolver {
|
|||
return nv.value().clone();
|
||||
}
|
||||
let maybe_get_nv = || {
|
||||
let name = req.name.clone();
|
||||
let package_info = self.package_info(&name)?;
|
||||
let name = &req.name;
|
||||
let package_info = self.package_info(name)?;
|
||||
// Find the first matching version of the package which is cached.
|
||||
let mut versions = package_info.versions.keys().collect::<Vec<_>>();
|
||||
versions.sort();
|
||||
|
@ -144,7 +145,10 @@ impl JsrCacheResolver {
|
|||
self.package_version_info(&nv).is_some()
|
||||
})
|
||||
.cloned()?;
|
||||
Some(PackageNv { name, version })
|
||||
Some(PackageNv {
|
||||
name: name.clone(),
|
||||
version,
|
||||
})
|
||||
};
|
||||
let nv = maybe_get_nv();
|
||||
self.nv_by_req.insert(req.clone(), nv.clone());
|
||||
|
@ -216,7 +220,10 @@ impl JsrCacheResolver {
|
|||
None
|
||||
}
|
||||
|
||||
pub fn package_info(&self, name: &str) -> Option<Arc<JsrPackageInfo>> {
|
||||
pub fn package_info(
|
||||
&self,
|
||||
name: &StackString,
|
||||
) -> Option<Arc<JsrPackageInfo>> {
|
||||
if let Some(info) = self.info_by_name.get(name) {
|
||||
return info.value().clone();
|
||||
}
|
||||
|
@ -226,7 +233,7 @@ impl JsrCacheResolver {
|
|||
serde_json::from_slice::<JsrPackageInfo>(&meta_bytes).ok()
|
||||
};
|
||||
let info = read_cached_package_info().map(Arc::new);
|
||||
self.info_by_name.insert(name.to_string(), info.clone());
|
||||
self.info_by_name.insert(name.clone(), info.clone());
|
||||
info
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue