mirror of
https://github.com/diligencia/semantic-branch-version.git
synced 2024-11-27 16:23: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
|
||
|
})
|
||
|
}
|