mirror of
https://github.com/diligencia/semantic-branch-version.git
synced 2024-11-27 14:43:50 +08:00
47 lines
989 B
JavaScript
47 lines
989 B
JavaScript
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
|
|
})
|
|
}
|