68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
var utils = require("../utils");
|
||
|
var publicUtils = require("./public-utils");
|
||
|
var _ = require("../../lodash.custom");
|
||
|
var defaultConfig = require("../default-config");
|
||
|
var stream = require("./stream");
|
||
|
|
||
|
/**
|
||
|
* @param emitter
|
||
|
* @returns {Function}
|
||
|
*/
|
||
|
module.exports = function (emitter) {
|
||
|
|
||
|
/**
|
||
|
* Inform browsers about file changes.
|
||
|
*
|
||
|
* eg: reload("core.css")
|
||
|
*/
|
||
|
function browserSyncReload (opts) {
|
||
|
|
||
|
/**
|
||
|
* BACKWARDS COMPATIBILITY:
|
||
|
* Passing an object as the only arg to the `reload`
|
||
|
* method with at *least* the key-value pair of {stream: true},
|
||
|
* was only ever used for streams support - so it's safe to check
|
||
|
* for that signature here and defer to the
|
||
|
* dedicated `.stream()` method instead.
|
||
|
*/
|
||
|
if (_.isObject(opts)) {
|
||
|
if (!Array.isArray(opts) && Object.keys(opts).length) {
|
||
|
if (opts.stream === true) {
|
||
|
return stream(emitter)(opts);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Handle single string paths such as
|
||
|
* reload("core.css")
|
||
|
*/
|
||
|
if (typeof opts === "string" && opts !== "undefined") {
|
||
|
return publicUtils.emitChangeEvent(emitter, opts, true);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Handle an array of file paths such as
|
||
|
* reload(["core.css, "ie.css"])
|
||
|
*/
|
||
|
if (Array.isArray(opts)) {
|
||
|
return opts.forEach(function (filepath) {
|
||
|
publicUtils.emitChangeEvent(emitter, filepath, true);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* At this point the argument given was neither an object,
|
||
|
* array or string so we simply perform a reload. This is to
|
||
|
* allow the following syntax to work as expected
|
||
|
*
|
||
|
* reload();
|
||
|
*/
|
||
|
return publicUtils.emitBrowserReload(emitter);
|
||
|
}
|
||
|
|
||
|
return browserSyncReload;
|
||
|
};
|