function callHook(name) {
const hooks = hookMap.get(name) || [];
const result = [].slice.apply(arguments, [1]);
let processed;
if (hooks) {
hooks.forEach(function(hook) {
if (hook.func) {
let params = processed || result;
if (params && params.constructor !== Array) {
params = [params];
}
params = [].concat.apply([], params);
processed = hook.func.apply(hook.context, params);
}
});
}
return processed || result;
}