exports_stats.js

/**
 * @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;