mirror of
https://github.com/denoland/deno.git
synced 2025-08-03 18:38:33 +00:00
refactor: upgrade deno_ast 0.28 and deno_semver 0.4 (#20193)
This commit is contained in:
parent
af125c8e70
commit
5834d282d4
38 changed files with 883 additions and 473 deletions
|
@ -16,7 +16,7 @@ use deno_core::url::Url;
|
|||
use deno_npm::registry::NpmPackageVersionDistInfo;
|
||||
use deno_npm::NpmPackageCacheFolderId;
|
||||
use deno_runtime::deno_fs;
|
||||
use deno_semver::npm::NpmPackageNv;
|
||||
use deno_semver::package::PackageNv;
|
||||
use deno_semver::Version;
|
||||
use once_cell::sync::Lazy;
|
||||
|
||||
|
@ -43,7 +43,7 @@ pub fn should_sync_download() -> bool {
|
|||
const NPM_PACKAGE_SYNC_LOCK_FILENAME: &str = ".deno_sync_lock";
|
||||
|
||||
pub fn with_folder_sync_lock(
|
||||
package: &NpmPackageNv,
|
||||
package: &PackageNv,
|
||||
output_folder: &Path,
|
||||
action: impl FnOnce() -> Result<(), AnyError>,
|
||||
) -> Result<(), AnyError> {
|
||||
|
@ -162,7 +162,7 @@ impl NpmCacheDir {
|
|||
|
||||
pub fn package_folder_for_name_and_version(
|
||||
&self,
|
||||
package: &NpmPackageNv,
|
||||
package: &PackageNv,
|
||||
registry_url: &Url,
|
||||
) -> PathBuf {
|
||||
self
|
||||
|
@ -251,7 +251,7 @@ impl NpmCacheDir {
|
|||
(version_part, 0)
|
||||
};
|
||||
Some(NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv {
|
||||
nv: PackageNv {
|
||||
name,
|
||||
version: Version::parse_from_npm(version).ok()?,
|
||||
},
|
||||
|
@ -273,7 +273,7 @@ pub struct NpmCache {
|
|||
http_client: Arc<HttpClient>,
|
||||
progress_bar: ProgressBar,
|
||||
/// ensures a package is only downloaded once per run
|
||||
previously_reloaded_packages: Mutex<HashSet<NpmPackageNv>>,
|
||||
previously_reloaded_packages: Mutex<HashSet<PackageNv>>,
|
||||
}
|
||||
|
||||
impl NpmCache {
|
||||
|
@ -311,10 +311,7 @@ impl NpmCache {
|
|||
/// to ensure a package is only downloaded once per run of the CLI. This
|
||||
/// prevents downloads from re-occurring when someone has `--reload` and
|
||||
/// and imports a dynamic import that imports the same package again for example.
|
||||
fn should_use_global_cache_for_package(
|
||||
&self,
|
||||
package: &NpmPackageNv,
|
||||
) -> bool {
|
||||
fn should_use_global_cache_for_package(&self, package: &PackageNv) -> bool {
|
||||
self.cache_setting.should_use_for_npm_package(&package.name)
|
||||
|| !self
|
||||
.previously_reloaded_packages
|
||||
|
@ -324,7 +321,7 @@ impl NpmCache {
|
|||
|
||||
pub async fn ensure_package(
|
||||
&self,
|
||||
package: &NpmPackageNv,
|
||||
package: &PackageNv,
|
||||
dist: &NpmPackageVersionDistInfo,
|
||||
registry_url: &Url,
|
||||
) -> Result<(), AnyError> {
|
||||
|
@ -336,7 +333,7 @@ impl NpmCache {
|
|||
|
||||
async fn ensure_package_inner(
|
||||
&self,
|
||||
package: &NpmPackageNv,
|
||||
package: &PackageNv,
|
||||
dist: &NpmPackageVersionDistInfo,
|
||||
registry_url: &Url,
|
||||
) -> Result<(), AnyError> {
|
||||
|
@ -422,7 +419,7 @@ impl NpmCache {
|
|||
|
||||
pub fn package_folder_for_name_and_version(
|
||||
&self,
|
||||
package: &NpmPackageNv,
|
||||
package: &PackageNv,
|
||||
registry_url: &Url,
|
||||
) -> PathBuf {
|
||||
self
|
||||
|
@ -467,7 +464,7 @@ pub fn mixed_case_package_name_decode(name: &str) -> Option<String> {
|
|||
#[cfg(test)]
|
||||
mod test {
|
||||
use deno_core::url::Url;
|
||||
use deno_semver::npm::NpmPackageNv;
|
||||
use deno_semver::package::PackageNv;
|
||||
use deno_semver::Version;
|
||||
|
||||
use super::NpmCacheDir;
|
||||
|
@ -483,7 +480,7 @@ mod test {
|
|||
assert_eq!(
|
||||
cache.package_folder_for_id(
|
||||
&NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv {
|
||||
nv: PackageNv {
|
||||
name: "json".to_string(),
|
||||
version: Version::parse_from_npm("1.2.5").unwrap(),
|
||||
},
|
||||
|
@ -500,7 +497,7 @@ mod test {
|
|||
assert_eq!(
|
||||
cache.package_folder_for_id(
|
||||
&NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv {
|
||||
nv: PackageNv {
|
||||
name: "json".to_string(),
|
||||
version: Version::parse_from_npm("1.2.5").unwrap(),
|
||||
},
|
||||
|
@ -517,7 +514,7 @@ mod test {
|
|||
assert_eq!(
|
||||
cache.package_folder_for_id(
|
||||
&NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv {
|
||||
nv: PackageNv {
|
||||
name: "JSON".to_string(),
|
||||
version: Version::parse_from_npm("2.1.5").unwrap(),
|
||||
},
|
||||
|
@ -534,7 +531,7 @@ mod test {
|
|||
assert_eq!(
|
||||
cache.package_folder_for_id(
|
||||
&NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv {
|
||||
nv: PackageNv {
|
||||
name: "@types/JSON".to_string(),
|
||||
version: Version::parse_from_npm("2.1.5").unwrap(),
|
||||
},
|
||||
|
|
|
@ -8,7 +8,7 @@ use deno_core::futures::stream::FuturesOrdered;
|
|||
use deno_core::futures::StreamExt;
|
||||
use deno_npm::registry::NpmRegistryApi;
|
||||
use deno_npm::registry::NpmRegistryPackageInfoLoadError;
|
||||
use deno_semver::npm::NpmPackageReq;
|
||||
use deno_semver::package::PackageReq;
|
||||
|
||||
use crate::args::PackageJsonDepsProvider;
|
||||
use crate::util::sync::AtomicFlag;
|
||||
|
@ -27,11 +27,11 @@ struct PackageJsonDepsInstallerInner {
|
|||
impl PackageJsonDepsInstallerInner {
|
||||
pub fn reqs_with_info_futures<'a>(
|
||||
&self,
|
||||
reqs: &'a [&'a NpmPackageReq],
|
||||
reqs: &'a [&'a PackageReq],
|
||||
) -> FuturesOrdered<
|
||||
impl Future<
|
||||
Output = Result<
|
||||
(&'a NpmPackageReq, Arc<deno_npm::registry::NpmPackageInfo>),
|
||||
(&'a PackageReq, Arc<deno_npm::registry::NpmPackageInfo>),
|
||||
NpmRegistryPackageInfoLoadError,
|
||||
>,
|
||||
>,
|
||||
|
|
|
@ -27,8 +27,8 @@ use deno_npm::NpmPackageCacheFolderId;
|
|||
use deno_npm::NpmPackageId;
|
||||
use deno_npm::NpmResolutionPackage;
|
||||
use deno_npm::NpmSystemInfo;
|
||||
use deno_semver::npm::NpmPackageNv;
|
||||
use deno_semver::npm::NpmPackageReq;
|
||||
use deno_semver::package::PackageNv;
|
||||
use deno_semver::package::PackageReq;
|
||||
use deno_semver::VersionReq;
|
||||
|
||||
use crate::args::Lockfile;
|
||||
|
@ -82,7 +82,7 @@ impl NpmResolution {
|
|||
|
||||
pub async fn add_package_reqs(
|
||||
&self,
|
||||
package_reqs: &[NpmPackageReq],
|
||||
package_reqs: &[PackageReq],
|
||||
) -> Result<(), AnyError> {
|
||||
// only allow one thread in here at a time
|
||||
let _permit = self.update_queue.acquire().await;
|
||||
|
@ -100,7 +100,7 @@ impl NpmResolution {
|
|||
|
||||
pub async fn set_package_reqs(
|
||||
&self,
|
||||
package_reqs: &[NpmPackageReq],
|
||||
package_reqs: &[PackageReq],
|
||||
) -> Result<(), AnyError> {
|
||||
// only allow one thread in here at a time
|
||||
let _permit = self.update_queue.acquire().await;
|
||||
|
@ -185,7 +185,7 @@ impl NpmResolution {
|
|||
/// Resolve a node package from a deno module.
|
||||
pub fn resolve_pkg_id_from_pkg_req(
|
||||
&self,
|
||||
req: &NpmPackageReq,
|
||||
req: &PackageReq,
|
||||
) -> Result<NpmPackageId, PackageReqNotFoundError> {
|
||||
self
|
||||
.snapshot
|
||||
|
@ -197,7 +197,7 @@ impl NpmResolution {
|
|||
pub fn resolve_pkg_reqs_from_pkg_id(
|
||||
&self,
|
||||
id: &NpmPackageId,
|
||||
) -> Vec<NpmPackageReq> {
|
||||
) -> Vec<PackageReq> {
|
||||
let snapshot = self.snapshot.read();
|
||||
let mut pkg_reqs = snapshot
|
||||
.package_reqs()
|
||||
|
@ -211,7 +211,7 @@ impl NpmResolution {
|
|||
|
||||
pub fn resolve_pkg_id_from_deno_module(
|
||||
&self,
|
||||
id: &NpmPackageNv,
|
||||
id: &PackageNv,
|
||||
) -> Result<NpmPackageId, PackageNvNotFoundError> {
|
||||
self
|
||||
.snapshot
|
||||
|
@ -225,8 +225,8 @@ impl NpmResolution {
|
|||
/// a package.json
|
||||
pub fn resolve_package_req_as_pending(
|
||||
&self,
|
||||
pkg_req: &NpmPackageReq,
|
||||
) -> Result<NpmPackageNv, NpmPackageVersionResolutionError> {
|
||||
pkg_req: &PackageReq,
|
||||
) -> Result<PackageNv, NpmPackageVersionResolutionError> {
|
||||
// we should always have this because it should have been cached before here
|
||||
let package_info = self.api.get_cached_package_info(&pkg_req.name).unwrap();
|
||||
self.resolve_package_req_as_pending_with_info(pkg_req, &package_info)
|
||||
|
@ -237,9 +237,9 @@ impl NpmResolution {
|
|||
/// a package.json
|
||||
pub fn resolve_package_req_as_pending_with_info(
|
||||
&self,
|
||||
pkg_req: &NpmPackageReq,
|
||||
pkg_req: &PackageReq,
|
||||
package_info: &NpmPackageInfo,
|
||||
) -> Result<NpmPackageNv, NpmPackageVersionResolutionError> {
|
||||
) -> Result<PackageNv, NpmPackageVersionResolutionError> {
|
||||
debug_assert_eq!(pkg_req.name, package_info.name);
|
||||
let mut snapshot = self.snapshot.write();
|
||||
let pending_resolver = get_npm_pending_resolver(&self.api);
|
||||
|
@ -251,7 +251,7 @@ impl NpmResolution {
|
|||
Ok(nv)
|
||||
}
|
||||
|
||||
pub fn package_reqs(&self) -> HashMap<NpmPackageReq, NpmPackageNv> {
|
||||
pub fn package_reqs(&self) -> HashMap<PackageReq, PackageNv> {
|
||||
self.snapshot.read().package_reqs().clone()
|
||||
}
|
||||
|
||||
|
@ -304,7 +304,7 @@ impl NpmResolution {
|
|||
|
||||
async fn add_package_reqs_to_snapshot(
|
||||
api: &CliNpmRegistryApi,
|
||||
package_reqs: &[NpmPackageReq],
|
||||
package_reqs: &[PackageReq],
|
||||
maybe_lockfile: Option<Arc<Mutex<Lockfile>>>,
|
||||
get_new_snapshot: impl Fn() -> NpmResolutionSnapshot,
|
||||
) -> Result<NpmResolutionSnapshot, AnyError> {
|
||||
|
|
|
@ -37,7 +37,7 @@ use deno_runtime::deno_fs;
|
|||
use deno_runtime::deno_node::NodePermissions;
|
||||
use deno_runtime::deno_node::NodeResolutionMode;
|
||||
use deno_runtime::deno_node::PackageJson;
|
||||
use deno_semver::npm::NpmPackageNv;
|
||||
use deno_semver::package::PackageNv;
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -657,7 +657,7 @@ fn get_package_folder_id_from_folder_name(
|
|||
};
|
||||
let version = deno_semver::Version::parse_from_npm(raw_version).ok()?;
|
||||
Some(NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv { name, version },
|
||||
nv: PackageNv { name, version },
|
||||
copy_index,
|
||||
})
|
||||
}
|
||||
|
@ -726,7 +726,7 @@ fn join_package_name(path: &Path, package_name: &str) -> PathBuf {
|
|||
#[cfg(test)]
|
||||
mod test {
|
||||
use deno_npm::NpmPackageCacheFolderId;
|
||||
use deno_semver::npm::NpmPackageNv;
|
||||
use deno_semver::package::PackageNv;
|
||||
use test_util::TempDir;
|
||||
|
||||
use super::*;
|
||||
|
@ -736,20 +736,14 @@ mod test {
|
|||
let cases = vec![
|
||||
(
|
||||
NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv {
|
||||
name: "@types/foo".to_string(),
|
||||
version: deno_semver::Version::parse_standard("1.2.3").unwrap(),
|
||||
},
|
||||
nv: PackageNv::from_str("@types/foo@1.2.3").unwrap(),
|
||||
copy_index: 1,
|
||||
},
|
||||
"@types+foo@1.2.3_1".to_string(),
|
||||
),
|
||||
(
|
||||
NpmPackageCacheFolderId {
|
||||
nv: NpmPackageNv {
|
||||
name: "JSON".to_string(),
|
||||
version: deno_semver::Version::parse_standard("3.2.1").unwrap(),
|
||||
},
|
||||
nv: PackageNv::from_str("JSON@3.2.1").unwrap(),
|
||||
copy_index: 0,
|
||||
},
|
||||
"_jjju6tq@3.2.1".to_string(),
|
||||
|
|
|
@ -25,8 +25,8 @@ use deno_runtime::deno_node::NodePermissions;
|
|||
use deno_runtime::deno_node::NodeResolutionMode;
|
||||
use deno_runtime::deno_node::NpmResolver;
|
||||
use deno_runtime::deno_node::PathClean;
|
||||
use deno_semver::npm::NpmPackageNv;
|
||||
use deno_semver::npm::NpmPackageReq;
|
||||
use deno_semver::package::PackageNv;
|
||||
use deno_semver::package::PackageReq;
|
||||
use global::GlobalNpmPackageResolver;
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
|
@ -91,7 +91,7 @@ impl CliNpmResolver {
|
|||
}
|
||||
|
||||
/// Checks if the provided package req's folder is cached.
|
||||
pub fn is_pkg_req_folder_cached(&self, req: &NpmPackageReq) -> bool {
|
||||
pub fn is_pkg_req_folder_cached(&self, req: &PackageReq) -> bool {
|
||||
self
|
||||
.resolve_pkg_id_from_pkg_req(req)
|
||||
.ok()
|
||||
|
@ -102,7 +102,7 @@ impl CliNpmResolver {
|
|||
|
||||
pub fn resolve_pkg_id_from_pkg_req(
|
||||
&self,
|
||||
req: &NpmPackageReq,
|
||||
req: &PackageReq,
|
||||
) -> Result<NpmPackageId, PackageReqNotFoundError> {
|
||||
self.resolution.resolve_pkg_id_from_pkg_req(req)
|
||||
}
|
||||
|
@ -182,7 +182,7 @@ impl CliNpmResolver {
|
|||
/// Adds package requirements to the resolver and ensures everything is setup.
|
||||
pub async fn add_package_reqs(
|
||||
&self,
|
||||
packages: &[NpmPackageReq],
|
||||
packages: &[PackageReq],
|
||||
) -> Result<(), AnyError> {
|
||||
if packages.is_empty() {
|
||||
return Ok(());
|
||||
|
@ -205,7 +205,7 @@ impl CliNpmResolver {
|
|||
/// This will retrieve and resolve package information, but not cache any package files.
|
||||
pub async fn set_package_reqs(
|
||||
&self,
|
||||
packages: &[NpmPackageReq],
|
||||
packages: &[PackageReq],
|
||||
) -> Result<(), AnyError> {
|
||||
self.resolution.set_package_reqs(packages).await
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ impl CliNpmResolver {
|
|||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn package_reqs(&self) -> HashMap<NpmPackageReq, NpmPackageNv> {
|
||||
pub fn package_reqs(&self) -> HashMap<PackageReq, PackageNv> {
|
||||
self.resolution.package_reqs()
|
||||
}
|
||||
|
||||
|
@ -241,7 +241,7 @@ impl CliNpmResolver {
|
|||
&self,
|
||||
) -> Result<(), AnyError> {
|
||||
// add and ensure this isn't added to the lockfile
|
||||
let package_reqs = vec![NpmPackageReq::from_str("@types/node").unwrap()];
|
||||
let package_reqs = vec![PackageReq::from_str("@types/node").unwrap()];
|
||||
self.resolution.add_package_reqs(&package_reqs).await?;
|
||||
self.fs_resolver.cache_packages().await?;
|
||||
|
||||
|
@ -279,7 +279,7 @@ impl NpmResolver for CliNpmResolver {
|
|||
|
||||
fn resolve_package_folder_from_deno_module(
|
||||
&self,
|
||||
pkg_nv: &NpmPackageNv,
|
||||
pkg_nv: &PackageNv,
|
||||
) -> Result<PathBuf, AnyError> {
|
||||
let pkg_id = self.resolution.resolve_pkg_id_from_deno_module(pkg_nv)?;
|
||||
self.resolve_pkg_folder_from_pkg_id(&pkg_id)
|
||||
|
@ -287,7 +287,7 @@ impl NpmResolver for CliNpmResolver {
|
|||
|
||||
fn resolve_pkg_id_from_pkg_req(
|
||||
&self,
|
||||
req: &NpmPackageReq,
|
||||
req: &PackageReq,
|
||||
) -> Result<NpmPackageId, PackageReqNotFoundError> {
|
||||
self.resolution.resolve_pkg_id_from_pkg_req(req)
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ use std::path::PathBuf;
|
|||
use deno_core::anyhow::bail;
|
||||
use deno_core::error::AnyError;
|
||||
use deno_npm::registry::NpmPackageVersionDistInfo;
|
||||
use deno_semver::npm::NpmPackageNv;
|
||||
use deno_semver::package::PackageNv;
|
||||
use flate2::read::GzDecoder;
|
||||
use tar::Archive;
|
||||
use tar::EntryType;
|
||||
|
@ -16,7 +16,7 @@ use tar::EntryType;
|
|||
use super::cache::with_folder_sync_lock;
|
||||
|
||||
pub fn verify_and_extract_tarball(
|
||||
package: &NpmPackageNv,
|
||||
package: &PackageNv,
|
||||
data: &[u8],
|
||||
dist_info: &NpmPackageVersionDistInfo,
|
||||
output_folder: &Path,
|
||||
|
@ -29,7 +29,7 @@ pub fn verify_and_extract_tarball(
|
|||
}
|
||||
|
||||
fn verify_tarball_integrity(
|
||||
package: &NpmPackageNv,
|
||||
package: &PackageNv,
|
||||
data: &[u8],
|
||||
npm_integrity: &str,
|
||||
) -> Result<(), AnyError> {
|
||||
|
@ -140,7 +140,7 @@ mod test {
|
|||
|
||||
#[test]
|
||||
pub fn test_verify_tarball() {
|
||||
let package = NpmPackageNv {
|
||||
let package = PackageNv {
|
||||
name: "package".to_string(),
|
||||
version: Version::parse_from_npm("1.0.0").unwrap(),
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue