Skip to content

Commit b4c4b33

Browse files
committed
Add Brotli size support in viewer
1 parent c7b4881 commit b4c4b33

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

client/components/ModulesTreemap.jsx

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,18 @@ import {store} from '../store';
1919
import ModulesList from './ModulesList';
2020
import Dropdown from './Dropdown';
2121

22-
const SIZE_SWITCH_ITEMS = [
23-
{label: 'Stat', prop: 'statSize'},
24-
{label: 'Parsed', prop: 'parsedSize'},
25-
{label: 'Gzipped', prop: 'gzipSize'}
26-
];
22+
function getSizeSwitchItems() {
23+
const items = [
24+
{label: 'Stat', prop: 'statSize'},
25+
{label: 'Parsed', prop: 'parsedSize'}
26+
];
27+
28+
if (window.compressionAlgorithm === 'gzip') items.push({label: 'Gzipped', prop: 'gzipSize'});
29+
30+
if (window.compressionAlgorithm === 'brotli') items.push({label: 'Brotli', prop: 'brotliSize'});
31+
32+
return items;
33+
};
2734

2835
@observer
2936
export default class ModulesTreemap extends Component {
@@ -144,7 +151,7 @@ export default class ModulesTreemap extends Component {
144151
renderModuleSize(module, sizeType) {
145152
const sizeProp = `${sizeType}Size`;
146153
const size = module[sizeProp];
147-
const sizeLabel = SIZE_SWITCH_ITEMS.find(item => item.prop === sizeProp).label;
154+
const sizeLabel = getSizeSwitchItems().find(item => item.prop === sizeProp).label;
148155
const isActive = (store.activeSize === sizeProp);
149156

150157
return (typeof size === 'number') ?
@@ -168,7 +175,7 @@ export default class ModulesTreemap extends Component {
168175
};
169176

170177
@computed get sizeSwitchItems() {
171-
return store.hasParsedSizes ? SIZE_SWITCH_ITEMS : SIZE_SWITCH_ITEMS.slice(0, 1);
178+
return store.hasParsedSizes ? getSizeSwitchItems() : getSizeSwitchItems().slice(0, 1);
172179
}
173180

174181
@computed get activeSizeItem() {
@@ -331,7 +338,7 @@ export default class ModulesTreemap extends Component {
331338
<br/>
332339
{this.renderModuleSize(module, 'stat')}
333340
{!module.inaccurateSizes && this.renderModuleSize(module, 'parsed')}
334-
{!module.inaccurateSizes && this.renderModuleSize(module, 'gzip')}
341+
{!module.inaccurateSizes && this.renderModuleSize(module, window.compressionAlgorithm)}
335342
{module.path &&
336343
<div>Path: <strong>{module.path}</strong></div>
337344
}

client/store.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import localStorage from './localStorage';
44

55
export class Store {
66
cid = 0;
7-
sizes = new Set(['statSize', 'parsedSize', 'gzipSize']);
7+
sizes = new Set(['statSize', 'parsedSize', 'gzipSize', 'brotliSize']);
88

99
@observable.ref allChunks;
1010
@observable.shallow selectedChunks;

src/viewer.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ function resolveTitle(reportTitle) {
2121
}
2222
}
2323

24+
function resolveDefaultSizes(defaultSizes, compressionAlgorithm) {
25+
if (['gzip', 'brotli'].includes(defaultSizes)) return compressionAlgorithm;
26+
return defaultSizes;
27+
}
28+
2429
module.exports = {
2530
startServer,
2631
generateReport,
@@ -63,7 +68,7 @@ async function startServer(bundleStats, opts) {
6368
title: resolveTitle(reportTitle),
6469
chartData,
6570
entrypoints,
66-
defaultSizes,
71+
defaultSizes: resolveDefaultSizes(defaultSizes, compressionAlgorithm),
6772
compressionAlgorithm,
6873
enableWebSocket: true
6974
});
@@ -152,7 +157,7 @@ async function generateReport(bundleStats, opts) {
152157
title: resolveTitle(reportTitle),
153158
chartData,
154159
entrypoints,
155-
defaultSizes,
160+
defaultSizes: resolveDefaultSizes(defaultSizes, compressionAlgorithm),
156161
compressionAlgorithm,
157162
enableWebSocket: false
158163
});

0 commit comments

Comments
 (0)