
export default (api) => {
    api.describe({
        key: 'analyze',
        config: {
            schema(joi) {
                return joi
                    .object({
                        analyzerMode: joi.string().valid('server', 'static', 'disabled'),
                        analyzerHost: joi.string(),
                        analyzerPort: joi.alternatives(joi.number(), 'auto'),
                        openAnalyzer: joi.boolean(),
                        generateStatsFile: joi.boolean(),
                        statsFilename: joi.string(),
                        logLevel: joi.string().valid('info', 'warn', 'error', 'silent'),
                        defaultSizes: joi.string().valid('stat', 'parsed', 'gzip')
                    })
                    .unknown(true);
            },
            default: {
                analyzerMode: process.env.ANALYZE_MODE || 'server',
                analyzerPort: process.env.ANALYZE_PORT || 8888,
                openAnalyzer: process.env.ANALYZE_OPEN !== 'none',
                // generate stats file while ANALYZE_DUMP exist
                generateStatsFile: !!process.env.ANALYZE_DUMP,
                statsFilename: process.env.ANALYZE_DUMP || 'stats.json',
                logLevel: process.env.ANALYZE_LOG_LEVEL || 'info',
                defaultSizes: 'parsed' // stat  // gzip
            }
        },
        enableBy: () => !!process.env.ANALYZE
    });
    api.chainWebpack((webpackConfig) => {
        webpackConfig
            .plugin('bundle-analyzer')
            .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, [
                api.config?.analyze || {}
            ]);
        return webpackConfig;
    });
};
