From 5becfd6381889287ff16a064128021f87c8dfcb6 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Tue, 21 Feb 2023 15:19:09 -0500 Subject: fix(npm): filter out duplicate packages names in resolution (#17857) --- cli/npm/resolution/mod.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'cli/npm/resolution/mod.rs') diff --git a/cli/npm/resolution/mod.rs b/cli/npm/resolution/mod.rs index 90bf16c43..c95124b61 100644 --- a/cli/npm/resolution/mod.rs +++ b/cli/npm/resolution/mod.rs @@ -1,6 +1,7 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use std::cmp::Ordering; +use std::collections::BTreeMap; use std::collections::HashMap; use std::collections::HashSet; @@ -191,7 +192,7 @@ impl PartialOrd for NpmPackageId { } } -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[derive(Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct NpmResolutionPackage { pub pkg_id: NpmPackageId, /// The peer dependency resolution can differ for the same @@ -205,6 +206,21 @@ pub struct NpmResolutionPackage { pub dependencies: HashMap, } +impl std::fmt::Debug for NpmResolutionPackage { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + // custom debug implementation for deterministic output in the tests + f.debug_struct("NpmResolutionPackage") + .field("pkg_id", &self.pkg_id) + .field("copy_index", &self.copy_index) + .field("dist", &self.dist) + .field( + "dependencies", + &self.dependencies.iter().collect::>(), + ) + .finish() + } +} + impl NpmResolutionPackage { pub fn get_package_cache_folder_id(&self) -> NpmPackageCacheFolderId { NpmPackageCacheFolderId { -- cgit v1.2.3