@@ -1050,17 +1050,19 @@ struct DepEntryCache(HashMap<Rc<PackageNv>, Rc<Vec<NpmDependencyEntry>>>);
10501050impl DepEntryCache {
10511051 pub fn store (
10521052 & mut self ,
1053- nv : Rc < PackageNv > ,
1053+ nv : & Rc < PackageNv > ,
10541054 version_info : & NpmPackageVersionInfo ,
10551055 ) -> Result < Rc < Vec < NpmDependencyEntry > > , Box < NpmDependencyEntryError > > {
10561056 debug_assert_eq ! ( nv. version, version_info. version) ;
1057- debug_assert ! ( !self . 0 . contains_key( & nv) ) ; // we should not be re-inserting
1057+ if let Some ( deps) = self . 0 . get ( nv) {
1058+ return Ok ( deps. clone ( ) ) ;
1059+ }
10581060 let mut deps = version_info. dependencies_as_entries ( & nv. name ) ?;
10591061 // Ensure name alphabetical and then version descending
10601062 // so these are resolved in that order
10611063 deps. sort ( ) ;
10621064 let deps = Rc :: new ( deps) ;
1063- self . 0 . insert ( nv, deps. clone ( ) ) ;
1065+ self . 0 . insert ( nv. clone ( ) , deps. clone ( ) ) ;
10641066 Ok ( deps)
10651067 }
10661068
@@ -1383,7 +1385,7 @@ impl<'a, TNpmRegistryApi: NpmRegistryApi>
13831385 let has_deps = if let Some ( deps) = self . dep_entry_cache . get ( & pkg_nv) {
13841386 !deps. is_empty ( )
13851387 } else {
1386- let deps = self . dep_entry_cache . store ( pkg_nv. clone ( ) , info) ?;
1388+ let deps = self . dep_entry_cache . store ( & pkg_nv, info) ?;
13871389 !deps. is_empty ( )
13881390 } ;
13891391
@@ -2585,8 +2587,7 @@ impl<'a, TNpmRegistryApi: NpmRegistryApi>
25852587 let version_info = package_info
25862588 . version_info ( & nv, & self . version_resolver . link_packages )
25872589 . map_err ( NpmPackageVersionResolutionError :: VersionNotFound ) ?;
2588- let child_deps =
2589- self . dep_entry_cache . store ( nv. clone ( ) , version_info) ?;
2590+ let child_deps = self . dep_entry_cache . store ( & nv, version_info) ?;
25902591
25912592 if child_deps. is_empty ( ) {
25922593 self . graph . borrow_node_mut ( path. node_id ( ) ) . no_peers = true ;
@@ -3041,7 +3042,7 @@ impl<'a, TNpmRegistryApi: NpmRegistryApi>
30413042 let version_info = package_info
30423043 . version_info ( & nv, & self . version_resolver . link_packages )
30433044 . map_err ( NpmPackageVersionResolutionError :: VersionNotFound ) ?;
3044- let deps = self . dep_entry_cache . store ( nv . clone ( ) , version_info) ?;
3045+ let deps = self . dep_entry_cache . store ( & nv , version_info) ?;
30453046 pending_dep_entries. push_back ( ( node_id, deps) ) ;
30463047 }
30473048
0 commit comments