62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
"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;
|