84 lines
2.4 KiB
JavaScript
84 lines
2.4 KiB
JavaScript
"use strict";
|
|
var _ = require("./lodash.custom");
|
|
var Immutable = require("immutable");
|
|
var snippetUtils = require("./snippet").utils;
|
|
module.exports = {
|
|
/**
|
|
*
|
|
* @this {BrowserSync}
|
|
* @returns {String}
|
|
*/
|
|
"client:js": function (hooks, data) {
|
|
var js = snippetUtils.getClientJs(data.port, data.options);
|
|
return hooks.reduce(function (acc, hook) {
|
|
if (typeof hook === "function") {
|
|
return acc.concat(hook);
|
|
}
|
|
return acc.concat(String(hook));
|
|
}, [js]);
|
|
},
|
|
/**
|
|
* @this {BrowserSync}
|
|
* @returns {Array}
|
|
*/
|
|
"client:events": function (hooks, clientEvents) {
|
|
hooks.forEach(function (hook) {
|
|
var result = hook(this);
|
|
if (Array.isArray(result)) {
|
|
clientEvents = _.union(clientEvents, result);
|
|
}
|
|
else {
|
|
clientEvents.push(result);
|
|
}
|
|
}, this);
|
|
return clientEvents;
|
|
},
|
|
/**
|
|
* @returns {Array}
|
|
*/
|
|
"server:middleware": function (hooks, initial) {
|
|
initial = initial || [];
|
|
_.each(hooks, function (hook) {
|
|
var result = hook(this);
|
|
if (Array.isArray(result)) {
|
|
result.forEach(function (res) {
|
|
if (_.isFunction(res)) {
|
|
initial = initial.push(res);
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
if (_.isFunction(result)) {
|
|
initial = initial.push(result);
|
|
}
|
|
}
|
|
}, this);
|
|
return initial;
|
|
},
|
|
/**
|
|
* @param {Array} hooks
|
|
* @param {Map|List} initial
|
|
* @param pluginOptions
|
|
* @returns {any}
|
|
*/
|
|
"files:watch": function (hooks, initial, pluginOptions) {
|
|
var opts;
|
|
if (pluginOptions) {
|
|
opts = Immutable.fromJS(pluginOptions);
|
|
opts.forEach(function (value, key) {
|
|
if (!value) {
|
|
return;
|
|
}
|
|
var files = value.get("files");
|
|
if (files) {
|
|
var fileArg = require("./cli/cli-options").makeFilesArg(files);
|
|
if (fileArg) {
|
|
initial = initial.set(key, Immutable.fromJS(fileArg));
|
|
}
|
|
}
|
|
});
|
|
}
|
|
return initial;
|
|
}
|
|
};
|
|
//# sourceMappingURL=hooks.js.map
|