MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/snap.cafsinfotech.in/node_modules/laravel-mix-compress/index.js
const mix = require('laravel-mix');
const CompressionPlugin = require('compression-webpack-plugin');
const zopfli = require('@gfx/zopfli');

class CompressPlugin {
    register(options) {
        this.options = {
            productionOnly: true,
            useBrotli: true,
            useZopfli: true,
            test: /\.(js|json|css|html|svg|map)(\?.*)?$/i,
            ...options
        };
    }

    dependencies() {
        return ['compression-webpack-plugin', '@gfx/zopfli'];
    }

    webpackPlugins() {
        if (this.options.productionOnly && !mix.inProduction()) return [];

        const commonOptionsKeys = [
            'test',
            'include',
            'exclude',
            'threshold',
            'minRatio',
            'deleteOriginalAssets'
        ];
        let commonOptions = {};
        for (const key of commonOptionsKeys) {
            if (key in this.options) {
                commonOptions[key] = this.options[key];
            }
        }

        let plugins = [];
        if (this.options.useBrotli) {
            let brotliOptions = {
                filename: '[path][base].br',
                algorithm: 'brotliCompress',
                ...commonOptions
            };
            if ('brotliCompressionOptions' in this.options)
                brotliOptions.compressionOptions = this.options.brotliCompressionOptions;

            plugins.push(new CompressionPlugin(brotliOptions));
        }

        if (this.options.useZopfli) {
            let zopfliOptions = {
                filename: '[path][base].gz',
                algorithm(input, compressionOptions, callback) {
                    return zopfli.gzip(input, compressionOptions, callback);
                },

                ...commonOptions
            };
            if ('zopfliCompressionOptions' in this.options)
                zopfliOptions.compressionOptions = this.options.zopfliCompressionOptions;

            plugins.push(new CompressionPlugin(zopfliOptions));
        }

        return plugins;
    }
}

mix.extend('compress', new CompressPlugin());