file-utils.js 1.7 KB
"use strict";
var _ = require("./lodash.custom");
var fileUtils = {
    /**
     * React to file-change events that occur on "core" namespace only
     * @param bs
     * @param data
     */
    changedFile: function (bs, data) {
        /**
         * If the event property is undefined, infer that it's a 'change'
         * event due the fact this handler is for emitter.emit("file:changed")
         */
        if (_.isUndefined(data.event)) {
            data.event = "change";
        }
        /**
         * Chokidar always sends an 'event' property - which could be
         * `add` `unlink` etc etc so we need to check for that and only
         * respond to 'change', for now.
         */
        if (bs.options.get("watchEvents").indexOf(data.event) > -1) {
            if (!bs.paused && data.namespace === "core") {
                bs.events.emit("file:reload", fileUtils.getFileInfo(data, bs.options));
            }
        }
    },
    /**
     * @param data
     * @param options
     * @returns {{assetFileName: *, fileExtension: String}}
     */
    getFileInfo: function (data, options) {
        data.ext = require("path")
            .extname(data.path)
            .slice(1);
        data.basename = require("path").basename(data.path);
        var obj = {
            ext: data.ext,
            path: data.path,
            basename: data.basename,
            event: data.event,
            type: "inject"
        };
        // RELOAD page
        if (!_.includes(options.get("injectFileTypes").toJS(), obj.ext)) {
            obj.url = obj.path;
            obj.type = "reload";
        }
        obj.path = data.path;
        obj.log = data.log;
        return obj;
    }
};
module.exports = fileUtils;
//# sourceMappingURL=file-utils.js.map