@@ -55,7 +55,7 @@ function computeDiffPercent(from, to) {
5555 return 0 ;
5656 }
5757
58- return Math . round ( ( from - to ) / from * - 100 ) ;
58+ return Math . round ( ( ( from - to ) / from ) * - 100 ) ;
5959}
6060
6161/**
@@ -90,56 +90,63 @@ export function main() {
9090 * }>
9191 * }> }
9292 */
93- const packagesFiles = [ ...new Set ( [ ...Object . keys ( pr ) , ...Object . keys ( base ) ] ) ]
94- . sort ( )
95- . reduce ( ( acc , file ) => {
96- const beforeSize = base [ file ] ?. size || 0 ;
97- const afterSize = pr [ file ] ?. size || 0 ;
98- const beforeSizeGz = base [ file ] ?. size_gz || 0 ;
99- const afterSizeGz = pr [ file ] ?. size_gz || 0 ;
100-
101- if ( beforeSize !== afterSize ) {
102- const isBridge = file . includes ( 'src/Bridge' ) ; // we assume that's enough for now
103- const packageName = file . split ( '/' ) [ 1 ] ;
104- const bridgeName = isBridge ? file . split ( '/' ) [ 4 ] : '' ;
105- const key = isBridge ? `${ packageName } (Bridge ${ bridgeName } )` : packageName ;
106- if ( ! acc . has ( key ) ) {
107- acc . set ( key , {
108- meta : {
109- packageName,
110- bridgeName,
111- url : isBridge ? `${ repoUrl } /tree/${ process . env . HEAD_REF } /src/${ packageName } /src/Bridge/${ bridgeName } /assets/dist` : `${ repoUrl } /tree/${ process . env . HEAD_REF } /src/${ packageName } /assets/dist` ,
112- } , files : new Set ( ) ,
113- } ) ;
114- }
115-
116- const added = ! base [ file ] && pr [ file ] ;
117- const removed = base [ file ] && ! pr [ file ] ;
118-
119- acc . get ( key ) . files . add ( {
120- state : added ? 'added' : ( removed ? 'removed' : 'changed' ) ,
121- before : { size : beforeSize , sizeGz : beforeSizeGz } ,
122- after : { size : afterSize , sizeGz : afterSizeGz } ,
123- diffPercent : {
124- size : removed ? - 100 : ( added ? 100 : computeDiffPercent ( beforeSize , afterSize ) ) ,
125- sizeGz : removed ? - 100 : ( added ? 100 : computeDiffPercent ( beforeSizeGz , afterSizeGz ) ) ,
126- } ,
93+ const packagesFiles = [ ...new Set ( [ ...Object . keys ( pr ) , ...Object . keys ( base ) ] ) ] . sort ( ) . reduce ( ( acc , file ) => {
94+ const beforeSize = base [ file ] ?. size || 0 ;
95+ const afterSize = pr [ file ] ?. size || 0 ;
96+ const beforeSizeGz = base [ file ] ?. size_gz || 0 ;
97+ const afterSizeGz = pr [ file ] ?. size_gz || 0 ;
98+
99+ if ( beforeSize !== afterSize ) {
100+ const isBridge = file . includes ( 'src/Bridge' ) ; // we assume that's enough for now
101+ const packageName = file . split ( '/' ) [ 1 ] ;
102+ const bridgeName = isBridge ? file . split ( '/' ) [ 4 ] : '' ;
103+ const key = isBridge ? `${ packageName } (Bridge ${ bridgeName } )` : packageName ;
104+ if ( ! acc . has ( key ) ) {
105+ acc . set ( key , {
127106 meta : {
128- fileNameShort : file . replace ( isBridge ? `src/${ file . split ( '/' ) [ 1 ] } /src/Bridge/${ file . split ( '/' ) [ 4 ] } /assets/dist/` : `src/${ file . split ( '/' ) [ 1 ] } /assets/dist/` , '' ) ,
129- fileNameUrl : `${ repoUrl } /blob/${ process . env . HEAD_REF } /${ file } ` ,
107+ packageName,
108+ bridgeName,
109+ url : isBridge
110+ ? `${ repoUrl } /tree/${ process . env . HEAD_REF } /src/${ packageName } /src/Bridge/${ bridgeName } /assets/dist`
111+ : `${ repoUrl } /tree/${ process . env . HEAD_REF } /src/${ packageName } /assets/dist` ,
130112 } ,
113+ files : new Set ( ) ,
131114 } ) ;
132115 }
133116
134- return acc ;
135- } , new Map ) ;
117+ const added = ! base [ file ] && pr [ file ] ;
118+ const removed = base [ file ] && ! pr [ file ] ;
119+
120+ acc . get ( key ) . files . add ( {
121+ state : added ? 'added' : removed ? 'removed' : 'changed' ,
122+ before : { size : beforeSize , sizeGz : beforeSizeGz } ,
123+ after : { size : afterSize , sizeGz : afterSizeGz } ,
124+ diffPercent : {
125+ size : removed ? - 100 : added ? 100 : computeDiffPercent ( beforeSize , afterSize ) ,
126+ sizeGz : removed ? - 100 : added ? 100 : computeDiffPercent ( beforeSizeGz , afterSizeGz ) ,
127+ } ,
128+ meta : {
129+ fileNameShort : file . replace (
130+ isBridge
131+ ? `src/${ file . split ( '/' ) [ 1 ] } /src/Bridge/${ file . split ( '/' ) [ 4 ] } /assets/dist/`
132+ : `src/${ file . split ( '/' ) [ 1 ] } /assets/dist/` ,
133+ ''
134+ ) ,
135+ fileNameUrl : `${ repoUrl } /blob/${ process . env . HEAD_REF } /${ file } ` ,
136+ } ,
137+ } ) ;
138+ }
139+
140+ return acc ;
141+ } , new Map ( ) ) ;
136142
137143 if ( packagesFiles . size === 0 ) {
138144 output += 'ℹ️ No difference in dist packagesFiles.\n' ;
139145 return output ;
140146 }
141147
142- output += 'Thanks for the PR! Here is the difference in size of the packages dist files between the base branch and the PR.\n' ;
148+ output +=
149+ 'Thanks for the PR! Here is the difference in size of the packages dist files between the base branch and the PR.\n' ;
143150 output += 'Please review the changes and make sure they are expected.\n\n' ;
144151 output += `<table>
145152 <thead><tr><th>File</th><th>Before (Size / Gzip)</th><th>After (Size / Gzip)</th></tr></thead>
@@ -150,15 +157,17 @@ export function main() {
150157 output += `<tr>
151158 <td><a href="${ file . meta . fileNameUrl } "><code>${ file . meta . fileNameShort } </code></a></td>
152159 ` ;
153- output += file . state === 'added'
154- ? `<td><em>Added</em></td>`
155- : `<td>
160+ output +=
161+ file . state === 'added'
162+ ? `<td><em>Added</em></td>`
163+ : `<td>
156164 <code>${ formatBytes ( file . before . size ) } </code>
157165 / <code>${ formatBytes ( file . before . sizeGz ) } </code>
158- </td>` ;
159- output += file . state === 'removed'
160- ? `<td><em>Removed</em></td>`
161- : `<td>
166+ </td>` ;
167+ output +=
168+ file . state === 'removed'
169+ ? `<td><em>Removed</em></td>`
170+ : `<td>
162171 <code>${ formatBytes ( file . after . size ) } </code>${ file . state === 'changed' ? `<sup>${ formatDiffPercent ( file . diffPercent . size ) } </sup>` : '' }
163172 / <code>${ formatBytes ( file . after . sizeGz ) } </code>${ file . state === 'changed' ? `<sup>${ formatDiffPercent ( file . diffPercent . sizeGz ) } </sup>` : '' }
164173 </td>` ;
0 commit comments