Spaces:
Paused
Paused
| module.exports = addHook; | |
| function addHook(state, kind, name, hook) { | |
| var orig = hook; | |
| if (!state.registry[name]) { | |
| state.registry[name] = []; | |
| } | |
| if (kind === "before") { | |
| hook = function (method, options) { | |
| return Promise.resolve() | |
| .then(orig.bind(null, options)) | |
| .then(method.bind(null, options)); | |
| }; | |
| } | |
| if (kind === "after") { | |
| hook = function (method, options) { | |
| var result; | |
| return Promise.resolve() | |
| .then(method.bind(null, options)) | |
| .then(function (result_) { | |
| result = result_; | |
| return orig(result, options); | |
| }) | |
| .then(function () { | |
| return result; | |
| }); | |
| }; | |
| } | |
| if (kind === "error") { | |
| hook = function (method, options) { | |
| return Promise.resolve() | |
| .then(method.bind(null, options)) | |
| .catch(function (error) { | |
| return orig(error, options); | |
| }); | |
| }; | |
| } | |
| state.registry[name].push({ | |
| hook: hook, | |
| orig: orig, | |
| }); | |
| } | |