11const fs = require ( 'fs' ) ;
22const path = require ( 'path' ) ;
33
4- const gzipSize = require ( 'gzip-size' ) ;
54const { parseChunked} = require ( '@discoveryjs/json-ext' ) ;
65
76const Logger = require ( './Logger' ) ;
87const Folder = require ( './tree/Folder' ) . default ;
98const { parseBundle} = require ( './parseUtils' ) ;
109const { createAssetsFilter} = require ( './utils' ) ;
10+ const { getCompressedSize} = require ( './sizeUtils' ) ;
1111
1212const FILENAME_QUERY_REGEXP = / \? .* $ / u;
1313const FILENAME_EXTENSIONS = / \. ( j s | m j s | c j s ) $ / iu;
@@ -20,6 +20,7 @@ module.exports = {
2020function getViewerData ( bundleStats , bundleDir , opts ) {
2121 const {
2222 logger = new Logger ( ) ,
23+ compressionAlgorithm,
2324 excludeAssets = null
2425 } = opts || { } ;
2526
@@ -110,7 +111,8 @@ function getViewerData(bundleStats, bundleDir, opts) {
110111
111112 if ( assetSources ) {
112113 asset . parsedSize = Buffer . byteLength ( assetSources . src ) ;
113- asset . gzipSize = gzipSize . sync ( assetSources . src ) ;
114+ if ( compressionAlgorithm === 'gzip' ) asset . gzipSize = getCompressedSize ( 'gzip' , assetSources . src ) ;
115+ if ( compressionAlgorithm === 'brotli' ) asset . brotliSize = getCompressedSize ( 'brotli' , assetSources . src ) ;
114116 }
115117
116118 // Picking modules from current bundle script
@@ -151,7 +153,7 @@ function getViewerData(bundleStats, bundleDir, opts) {
151153 }
152154
153155 asset . modules = assetModules ;
154- asset . tree = createModulesTree ( asset . modules ) ;
156+ asset . tree = createModulesTree ( asset . modules , { compressionAlgorithm } ) ;
155157 return result ;
156158 } , { } ) ;
157159
@@ -166,6 +168,7 @@ function getViewerData(bundleStats, bundleDir, opts) {
166168 statSize : asset . tree . size || asset . size ,
167169 parsedSize : asset . parsedSize ,
168170 gzipSize : asset . gzipSize ,
171+ brotliSize : asset . brotliSize ,
169172 groups : Object . values ( asset . tree . children ) . map ( i => i . toChartData ( ) ) ,
170173 isInitialByEntrypoint : chunkToInitialByEntrypoint [ filename ] ?? { }
171174 } ) ) ;
@@ -220,8 +223,8 @@ function isRuntimeModule(statModule) {
220223 return statModule . moduleType === 'runtime' ;
221224}
222225
223- function createModulesTree ( modules ) {
224- const root = new Folder ( '.' ) ;
226+ function createModulesTree ( modules , opts ) {
227+ const root = new Folder ( '.' , opts ) ;
225228
226229 modules . forEach ( module => root . addModule ( module ) ) ;
227230 root . mergeNestedFolders ( ) ;
0 commit comments