@@ -3,7 +3,10 @@ import { get } from '../../../modules/manager';
33import  type  {  ExtractResults  }  from  './types' ; 
44
55export  function  processSupersedesManagers ( extracts : ExtractResults [ ] ) : void { 
6+   const  rejected : Record < string ,  string [ ] >  =  { } ; 
7+ 
68  for  ( const  primaryExtract  of  extracts )  { 
9+     const  primaryManager  =  primaryExtract . manager ; 
710    const  secondaryManagers  =  get ( primaryExtract . manager ,  'supersedesManagers' ) ; 
811    if  ( ! is . nonEmptyArray ( secondaryManagers ) )  { 
912      continue ; 
@@ -26,19 +29,29 @@ export function processSupersedesManagers(extracts: ExtractResults[]): void {
2629        continue ; 
2730      } 
2831
29-       secondaryExtract . packageFiles  =  secondaryExtract . packageFiles . filter ( 
30-         ( {  packageFile,  lockFiles } )  =>  { 
31-           if  ( is . nonEmptyArray ( lockFiles ) )  { 
32-             return  true ; 
33-           } 
34- 
35-           if  ( ! primaryPackageFiles . includes ( packageFile ) )  { 
36-             return  true ; 
37-           } 
32+       for  ( const  {  packageFile,  lockFiles }  of  secondaryExtract . packageFiles )  { 
33+         if  ( is . nonEmptyArray ( lockFiles ) )  { 
34+           rejected [ primaryManager ]  ??=  [ ] ; 
35+           rejected [ primaryManager ] . push ( packageFile ) ; 
36+           continue ; 
37+         } 
38+ 
39+         if  ( primaryPackageFiles . includes ( packageFile ) )  { 
40+           rejected [ secondaryManager ]  ??=  [ ] ; 
41+           rejected [ secondaryManager ] . push ( packageFile ) ; 
42+         } 
43+       } 
44+     } 
45+   } 
3846
39-           return  false ; 
40-         } , 
41-       ) ; 
47+   for  ( const  extract  of  extracts )  { 
48+     const  rejectedFiles  =  rejected [ extract . manager ] ; 
49+     if  ( ! is . nonEmptyArray ( rejectedFiles )  ||  ! extract . packageFiles )  { 
50+       continue ; 
4251    } 
52+ 
53+     extract . packageFiles  =  extract . packageFiles . filter ( 
54+       ( {  packageFile } )  =>  ! rejectedFiles . includes ( packageFile ) , 
55+     ) ; 
4356  } 
4457} 
0 commit comments