Uname: Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
Software: LiteSpeed
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.213.251.212
Your Ip: 3.147.68.199
User: allssztx (535) | Group: allssztx (533)
Safe Mode: OFF
Disable Function:
NONE

name : FileCollection.js
let concat = require('concat');
let babel = require('@babel/core');
let glob = require('glob');
let Log = require('./Log');

class FileCollection {
    /**
     * Create a new FileCollection instance.
     *
     * @param {Array|string} files
     */
    constructor(files = []) {
        this.files = [].concat(files);
    }

    /**
     * Fetch the underlying files.
     */
    get() {
        return this.files;
    }

    /**
     * Merge all files in the collection into one.
     *
     * @param {object} output
     * @param {object} wantsBabel
     */
    merge(output, wantsBabel = false) {
        return concat(this.files, output.makeDirectories().path()).then(
            contents => {
                if (this.shouldCompileWithBabel(wantsBabel, output)) {
                    output.write(this.babelify(contents));
                }

                return new File(output.makeDirectories().path());
            }
        );
    }

    /**
     * Determine if we should add a Babel pass to the concatenated file.
     *
     * @param {Boolean}  wantsBabel
     * @param {Object}  output
     */
    shouldCompileWithBabel(wantsBabel, output) {
        return wantsBabel && output.extension() === '.js';
    }

    /**
     * Apply Babel to the given contents.
     *
     * @param {string} contents
     */
    babelify(contents) {
        let babelConfig = Config.babel();

        delete babelConfig.cacheDirectory;

        return babel.transform(contents, babelConfig).code;
    }

    /**
     * Copy the src files to the given destination.
     *
     * @param {string} destination
     * @param {string|array|null} src
     */
    copyTo(destination, src = this.files) {
        this.assets = this.assets || [];

        this.destination = destination;

        if (Array.isArray(src)) {
            src.forEach(file => this.copyTo(destination, new File(file)));

            return;
        }

        if (src.isDirectory()) {
            return src.copyTo(destination.path());
        }

        if (src.contains('*')) {
            let files = glob.sync(src.path(), { nodir: true });

            if (!files.length) {
                Log.feedback(
                    `Notice: The ${src.path()} search produced no matches.`
                );
            }

            return this.copyTo(destination, files);
        }

        if (destination.isDirectory()) {
            destination = destination.append(src.name());
        }

        src.copyTo(destination.path());

        this.assets = this.assets.concat(destination);

        return destination.path();
    }
}

module.exports = FileCollection;
© 2025 GrazzMean-Shell