ld31-space-diggers/node_modules/browser-sync/lib/public/reload.js
Ruben Müller 760c1838ed Add game
2014-12-07 20:57:49 +01:00

99 lines
2.2 KiB
JavaScript

"use strict";
var path = require("path");
var utils = require("../utils");
var defaultConfig = require("../default-config");
/**
* @param {BrowserSync} browserSync
* @returns {Function}
*/
module.exports = function (browserSync) {
var events = browserSync.events;
function emitReload(path, log) {
events.emit("file:changed", {
path: path,
log: log,
namespace: "core"
});
}
function emitBrowserReload() {
events.emit("browser:reload");
}
function emitInfo(changed) {
events.emit("stream:changed", {changed: changed});
}
return function (arg) {
if (typeof arg === "string") {
return emitReload(arg, true);
}
if (Array.isArray(arg)) {
if (utils.willCauseReload(arg, defaultConfig.injectFileTypes)) {
return emitBrowserReload();
}
return arg.forEach(function (filepath) {
emitReload(filepath, true);
});
}
if (arg && arg.stream === true) {
// Handle Streams here...
var emitted = false;
var once = arg.once || false;
var Transform = require("stream").Transform;
var reload = new Transform({objectMode:true});
var changed = [];
reload._transform = function (file, encoding, next) {
if (once === true && !emitted) {
emitBrowserReload();
emitted = true;
} else { // handle multiple
if (once === true && emitted) {
} else {
if (file.path) {
emitted = true;
emitReload(file.path, false);
changed.push(path.basename(file.path));
}
}
}
this.push(file); // always send the file down-stream
next();
};
reload._flush = function (next) {
emitInfo(changed);
next();
};
return reload;
}
return emitBrowserReload();
};
};