fix(lockfile): re-fetch packuments if version not found, properly pass patch packages (#28964)

Fixes two issues:
- If a cached packument was out of date and missing a version from the
lockfile, we would fail. Instead we should try again with a forced
re-fetch
- We weren't threading through the workspace patch packages correctly
This commit is contained in:
Nathan Whitaker 2025-04-18 16:08:15 -07:00 committed by GitHub
parent 6ce1e9b7f7
commit dbb5373eab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 311 additions and 135 deletions

View file

@ -1967,9 +1967,7 @@ mod tests {
use deno_config::deno_json::ConfigFile;
use deno_core::resolve_url;
use deno_npm::registry::NpmPackageInfo;
use deno_npm::registry::NpmRegistryApi;
use deno_npm::registry::NpmRegistryPackageInfoLoadError;
use deno_semver::package::PackageNv;
use pretty_assertions::assert_eq;
use test_util::TempDir;
@ -2011,16 +2009,20 @@ mod tests {
struct DefaultRegistry;
#[async_trait::async_trait(?Send)]
impl NpmRegistryApi for DefaultRegistry {
async fn package_info(
impl deno_lockfile::NpmPackageInfoProvider for DefaultRegistry {
async fn get_npm_package_info(
&self,
_name: &str,
) -> Result<Arc<NpmPackageInfo>, NpmRegistryPackageInfoLoadError> {
Ok(Arc::new(NpmPackageInfo::default()))
values: &[PackageNv],
) -> Result<
Vec<deno_lockfile::Lockfile5NpmInfo>,
Box<dyn std::error::Error + Send + Sync>,
> {
Ok(values.iter().map(|_| Default::default()).collect())
}
}
fn default_registry() -> Arc<dyn NpmRegistryApi + Send + Sync> {
fn default_registry(
) -> Arc<dyn deno_lockfile::NpmPackageInfoProvider + Send + Sync> {
Arc::new(DefaultRegistry)
}