@@ -79,79 +79,71 @@ export const extractModulesPackages = (
7979 currentExtractedData ?: MetricsModules ,
8080) : MetricsPackages => {
8181 const modules = Object . entries ( currentExtractedData ?. metrics ?. modules || { } ) ;
82+ const packages : Record < string , Package > = { } ;
8283
83- const packages = modules . reduce (
84- ( agg , [ modulePath , { value } ] ) => {
85- const packageMeta = getPackageMetaFromModulePath ( modulePath ) ;
86-
87- if ( ! packageMeta ) {
88- return agg ;
89- }
90-
91- const existingPackageData = agg [ packageMeta . id ] ;
92-
93- // New package data
94- if ( ! existingPackageData ) {
95- return {
96- ...agg ,
97- [ packageMeta . id ] : {
98- name : packageMeta . name ,
99- path : packageMeta . path ,
100- value,
101- } ,
102- } ;
103- }
104-
105- // Existing package info
106- if ( existingPackageData . path === packageMeta . path ) {
107- return {
108- ...agg ,
109- [ packageMeta . id ] : {
110- ...existingPackageData ,
111- value : existingPackageData . value + value ,
112- } ,
113- } ;
114- }
115-
116- // Same package name, but different paths (eg: symlinks)
117- const existingPackageWithEqualPath = Object . entries ( agg ) . find (
118- ( [ __ , packageData ] ) => packageData . path === packageMeta . path ,
119- ) ;
120-
121- if ( existingPackageWithEqualPath ) {
122- const [ name , data ] = existingPackageWithEqualPath ;
123-
124- return {
125- ...agg ,
126- [ name ] : {
127- ...data ,
128- value : data . value + value ,
129- } ,
130- } ;
131- }
132-
133- // New package name & data
134- const lastIndex =
135- max (
136- Object . keys ( agg )
137- . map ( ( id ) => id . split ( '~' ) )
138- . filter ( ( [ id ] ) => id === packageMeta . id )
139- . map ( ( [ __ , index ] ) => parseInt ( index , 10 ) ) ,
140- ) || 0 ;
141-
142- const packageName = [ packageMeta . id , lastIndex + 1 ] . join ( PACKAGE_ID_SEPARATOR ) ;
143-
144- return {
145- ...agg ,
146- [ packageName ] : {
147- name : packageMeta . name ,
148- path : packageMeta . path ,
149- value,
150- } ,
84+ modules . forEach ( ( [ modulePath , entry ] ) => {
85+ const packageMeta = getPackageMetaFromModulePath ( modulePath ) ;
86+
87+ if ( ! packageMeta ) {
88+ return ;
89+ }
90+
91+ const existingPackageData = packages [ packageMeta . id ] ;
92+
93+ // New package data
94+ if ( ! existingPackageData ) {
95+ packages [ packageMeta . id ] = {
96+ name : packageMeta . name ,
97+ path : packageMeta . path ,
98+ value : entry . value ,
15199 } ;
152- } ,
153- { } as Record < string , Package > ,
154- ) ;
100+
101+ return ;
102+ }
103+
104+ // Existing package info
105+ if ( existingPackageData . path === packageMeta . path ) {
106+ packages [ packageMeta . id ] = {
107+ ...existingPackageData ,
108+ value : existingPackageData . value + entry . value ,
109+ } ;
110+
111+ return ;
112+ }
113+
114+ // Same package name, but different paths (eg: symlinks)
115+ const existingPackageWithEqualPath = Object . entries ( packages ) . find (
116+ ( [ __ , packageData ] ) => packageData . path === packageMeta . path ,
117+ ) ;
118+
119+ if ( existingPackageWithEqualPath ) {
120+ const [ name , data ] = existingPackageWithEqualPath ;
121+
122+ packages [ name ] = {
123+ ...data ,
124+ value : data . value + entry . value ,
125+ } ;
126+
127+ return ;
128+ }
129+
130+ // New package name & data
131+ const lastIndex =
132+ max (
133+ Object . keys ( packages )
134+ . map ( ( id ) => id . split ( '~' ) )
135+ . filter ( ( [ id ] ) => id === packageMeta . id )
136+ . map ( ( [ __ , index ] ) => parseInt ( index , 10 ) ) ,
137+ ) || 0 ;
138+
139+ const packageName = [ packageMeta . id , lastIndex + 1 ] . join ( PACKAGE_ID_SEPARATOR ) ;
140+
141+ packages [ packageName ] = {
142+ name : packageMeta . name ,
143+ path : packageMeta . path ,
144+ value : entry . value ,
145+ } ;
146+ } ) ;
155147
156148 return { metrics : { packages } } ;
157149} ;
0 commit comments