register.js 691 B

12345678910111213141516171819202122232425262728
  1. module.exports = register
  2. function register (state, name, method, options) {
  3. if (typeof method !== 'function') {
  4. throw new Error('method for before hook must be a function')
  5. }
  6. if (!options) {
  7. options = {}
  8. }
  9. if (Array.isArray(name)) {
  10. return name.reverse().reduce(function (callback, name) {
  11. return register.bind(null, state, name, callback, options)
  12. }, method)()
  13. }
  14. return Promise.resolve()
  15. .then(function () {
  16. if (!state.registry[name]) {
  17. return method(options)
  18. }
  19. return (state.registry[name]).reduce(function (method, registered) {
  20. return registered.hook.bind(null, method, options)
  21. }, method)()
  22. })
  23. }