You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
56 lines
1.7 KiB
6 years ago
|
"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
|