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.
84 lines
2.4 KiB
84 lines
2.4 KiB
"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
|