webpack-bundle-analyzer
Version:
Webpack plugin and CLI utility that represents bundle content as convenient interactive zoomable treemap
69 lines (63 loc) • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _Module = _interopRequireDefault(require("./Module.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/** @typedef {import("webpack").StatsModule} StatsModule */
/** @typedef {import("./Node").default} NodeType */
/** @typedef {import("./Module").ModuleChartData} ModuleChartData */
/** @typedef {import("./Module").ModuleOptions} ModuleOptions */
/** @typedef {import("./Module").SizeType} SizeType */
/** @typedef {import("./ConcatenatedModule").default} ConcatenatedModule */
/**
* @typedef {object} OwnContentModuleChartData
* @property {boolean} inaccurateSizes true when inaccurate sizes, otherwise false
*/
/** @typedef {ModuleChartData & OwnContentModuleChartData} ContentModuleChartData */
class ContentModule extends _Module.default {
/**
* @param {string} name name
* @param {StatsModule} data data
* @param {ConcatenatedModule} ownerModule owner module
* @param {ModuleOptions} opts options
*/
constructor(name, data, ownerModule, opts) {
super(name, data, undefined, opts);
/** @type {ConcatenatedModule} */
this.ownerModule = ownerModule;
}
get parsedSize() {
return this.getSize("parsedSize");
}
get gzipSize() {
return this.getSize("gzipSize");
}
get brotliSize() {
return this.getSize("brotliSize");
}
get zstdSize() {
return this.getSize("zstdSize");
}
/**
* @param {SizeType} sizeType size type
* @returns {number | undefined} size
*/
getSize(sizeType) {
const ownerModuleSize = this.ownerModule[sizeType];
if (ownerModuleSize !== undefined) {
return Math.floor(this.size / this.ownerModule.size * ownerModuleSize);
}
}
/**
* @returns {ContentModuleChartData} chart data
*/
toChartData() {
return {
...super.toChartData(),
inaccurateSizes: true
};
}
}
exports.default = ContentModule;