|
module.exports = Hook
|
|
|
|
var register = require('./lib/register')
|
|
var addHook = require('./lib/add')
|
|
var removeHook = require('./lib/remove')
|
|
|
|
function Hook () {
|
|
var state = {
|
|
registry: {}
|
|
}
|
|
|
|
var hook = register.bind(null, state)
|
|
hook.api = { remove: removeHook.bind(null, state, null) }
|
|
hook.remove = removeHook.bind(null, state, null)
|
|
|
|
;['before', 'error', 'after', 'wrap'].forEach(function (kind) {
|
|
hook[kind] = hook.api[kind] = addHook.bind(null, state, kind)
|
|
hook.remove[kind] = hook.api.remove[kind] = removeHook.bind(null, state, kind)
|
|
})
|
|
|
|
return hook
|
|
}
|