/**
* @file exports/experiments.js
* @copyright @spmhome @_2025
* @author Scott Meesseman @spmeesseman
*
* @see {@link [webpack.js.org/experiments](https://webpack.js.org/configuration/experiments)}
*
*//** */
const WpwWebpackExport = require("./base");
/**
* @augments WpwWebpackExport
*/
class WpwExperimentsExport extends WpwWebpackExport
{
/**
* @param {WpwExportOptions} options Plugin options to be applied
*/
constructor(options)
{
super(options);
this.buildOptions = /** @type {WpwBuildOptionsExportConfig<"experiments">} */(this.buildOptions);
}
/**
* @override
* @param {WpwBuild} b
*/
static create = (b) => WpwExperimentsExport.wrap.call(this, b, b.isAnyAppOrLib);
/**
* @override
* @param {WpwBuild} build The current build's rc wrapper @see {@link WpwBuild}
*/
create(build)
{ // TODO - use built-in css support, rmv rules[minicssextractplugin/css-loader]
const topLevelAwait = !build.isWebApp || !!this.buildOptions.topLevelAwait,
layers = !!((build.isAppOrLib && build.debug) || this.buildOptions.layers),
css = !!((build.isWebApp && build.options.web?.css) || this.buildOptions.css);
build.logger.values([
[ "output module", build.isModule ], [ "support layers", layers ], [ "top-level await", topLevelAwait ],
[ "parse cascading stylesheets", css ]
], 1);
this._obj_.apply(build.wpc.experiments,
{ css,
layers,
topLevelAwait,
outputModule: build.isModule
});
}
}
module.exports = WpwExperimentsExport.create;