@@ -41,7 +41,11 @@ function formatBytes(bytes, digits = 2) {
4141 * @returns {number }
4242 */
4343function computeDiffPercent ( from , to ) {
44- return from === to ? 0 : Number ( ( ( from - to ) / to * 100 * ( from < to ? - 1 : 1 ) ) . toFixed ( 2 ) ) ;
44+ if ( from === to ) {
45+ return 0 ;
46+ }
47+
48+ return Number ( ( ( from - to ) / to * - 100 ) . toFixed ( 2 ) ) ;
4549}
4650
4751/**
@@ -58,12 +62,15 @@ export function main() {
5862 let output = '<h1>📊 Dist files size difference</h1>\n\n' ;
5963
6064 const files = [ ...new Set ( [ ...Object . keys ( pr ) , ...Object . keys ( base ) ] ) ] . sort ( ) . reduce ( ( acc , file ) => {
61- const diff_percent_size = base [ file ] && ! pr [ file ] ? - 100 : ( ! base [ file ] && pr [ file ] ? 100 : ( computeDiffPercent ( base [ file ] . size , pr [ file ] . size ) ) ) ;
62- const diff_percent_size_gz = base [ file ] && ! pr [ file ] ? - 100 : ( ! base [ file ] && pr [ file ] ? 100 : ( computeDiffPercent ( base [ file ] . size_gz , pr [ file ] . size_gz ) ) ) ;
63- const diff_percent_size_brotli = base [ file ] && ! pr [ file ] ? - 100 : ( ! base [ file ] && pr [ file ] ? 100 : ( computeDiffPercent ( base [ file ] . size_brotli , pr [ file ] . size_brotli ) ) ) ;
65+ const added = ! base [ file ] && pr [ file ] ;
66+ const removed = base [ file ] && ! pr [ file ] ;
67+ const diff_percent_size = removed ? - 100 : ( added ? 100 : ( computeDiffPercent ( base [ file ] . size , pr [ file ] . size ) ) ) ;
68+ const diff_percent_size_gz = removed ? - 100 : ( added ? 100 : ( computeDiffPercent ( base [ file ] . size_gz , pr [ file ] . size_gz ) ) ) ;
69+ const diff_percent_size_brotli = removed ? - 100 : ( added ? 100 : ( computeDiffPercent ( base [ file ] . size_brotli , pr [ file ] . size_brotli ) ) ) ;
6470
6571 if ( diff_percent_size !== 0 && diff_percent_size_gz !== 0 && diff_percent_size_brotli !== 0 ) {
6672 acc . set ( file , {
73+ state : added ? 'added' : ( removed ? 'removed' : 'changed' ) ,
6774 diff_percent_size,
6875 diff_percent_size_gz,
6976 diff_percent_size_brotli
@@ -85,11 +92,11 @@ export function main() {
8592 <tbody>` ;
8693 for ( const [ file , details ] of files . entries ( ) ) {
8794 output += `<tr>
88- <td><code>${ file } </code></td>
95+ <td><code>${ file } </code> ${ details . state === 'added' ? '(new)' : ( details . state === 'removed' ? '(deleted)' : '' ) } </td>
8996 <td>
90- Size: <code>${ formatBytes ( base [ file ] ?. size || 0 ) } </code> vs <code>${ formatBytes ( pr [ file ] ?. size || 0 ) } </code><br>
91- Gzip: <code>${ formatBytes ( base [ file ] ?. size_gz || 0 ) } </code> vs <code>${ formatBytes ( pr [ file ] ?. size_gz || 0 ) } </code><br>
92- Brotli: <code>${ formatBytes ( base [ file ] ?. size_brotli || 0 ) } </code> vs <code>${ formatBytes ( pr [ file ] ?. size_brotli || 0 ) } </code>
97+ Size: <code>${ formatBytes ( base [ file ] ?. size || 0 ) } </code> → <code>${ formatBytes ( pr [ file ] ?. size || 0 ) } </code><br>
98+ Gzip: <code>${ formatBytes ( base [ file ] ?. size_gz || 0 ) } </code> → <code>${ formatBytes ( pr [ file ] ?. size_gz || 0 ) } </code><br>
99+ Brotli: <code>${ formatBytes ( base [ file ] ?. size_brotli || 0 ) } </code> → <code>${ formatBytes ( pr [ file ] ?. size_brotli || 0 ) } </code>
93100 </td>
94101 <td align="right">
95102 Size: <b>${ formatDiffPercent ( details . diff_percent_size ) } </b><br>
0 commit comments