/**
* @file exports/stats.js
* @copyright @spmhome @_2025
* @author Scott Meesseman @spmeesseman
*//** */
const WpwWebpackExport = require("./base");
/**
* @augments WpwWebpackExport
*/
class WpwStatsExport extends WpwWebpackExport
{
/**
* @param {WpwExportOptions} options Plugin options
*/
constructor(options) { super(options); }
/**
* @override
*/
static create = WpwStatsExport.wrap.bind(this);
/**
* @override
*/
create()
{
const build = this.build,
logLevel = build.logger.level;
build.logger.write(`configured logging level is '${build.wpc.infrastructureLogging.level}' [${logLevel}]`, 1);
if (logLevel === 5)
{
build.wpc.stats.all = true;
build.wpc.infrastructureLogging.debug = true;
}
else if (logLevel > 0)
{
this._obj_.apply(build.wpc.stats, {
// preset: logLevel < 3 ? "errors-warnings" : "error-details",
assets: true,
builtAt: logLevel >= 4,
chunkModules: logLevel >= 3,
colors: true,
entrypoints: logLevel >= 3 && !!build.entry,
env: true,
errors: true,
errorsCount: true,
errorDetails: logLevel >= 1,
hash: build.options.hash?.enabled && logLevel >= 3,
modules: logLevel >= 4,
orphanModules: logLevel >= 2,
outputPath: logLevel >= 3,
performance: logLevel >= 3,
relatedAssets: logLevel >= 3,
runtimeModules: logLevel >= 4,
timings: true,
usedExports: logLevel >= 3,
warnings: true,
warningsCount: true
});
const cacheLog = (logLevel >= 2 && build.options.cache?.enabled !== false) || !!build.options.cache?.verbose;
this._obj_.apply(build.wpc.stats, { cachedAssets: cacheLog, cachedModules: cacheLog });
}
}
}
module.exports = WpwStatsExport.create;