Переосмысленный подход к модулю hooks, предназначенный для обеспечения дополнительной гибкости, позволяя вам выполнять хуки всякий раз, когда это необходимо, а не просто обертывать одну функцию.

Этот пакет интенсивно используется внутри мангуста.

Этот модуль npm предлагает кое-что аккуратное из коробки:

Выполняется без указания хуков

hooks.execPre('cook', null, function() {
done();
});

Он запускает базовые последовательные прехуки

Функции предварительной обработки принимают один параметр, функцию «готово», которую вы выполняете, когда ваша предварительная ловушка завершена.

var count = 0;
hooks.pre('cook', function(done) {
++count;
done();
});
hooks.execPre('cook', null, function() {
assert.equal(1, count);
done();
});

Он также может запускать несколько пре- и пост-хуков для одной и той же функции:

var count1 = 0;
var count2 = 0;
hooks.pre('cook', function() {
++count1;
});
hooks.pre('cook', function() {
++count2;
});
hooks.execPre('cook', null, function(error) {
assert.equal(null, error);
assert.equal(1, count1);
assert.equal(1, count2);
done();
});

Он правильно прикрепляет контекст к прехукам

Назван в честь лучшего бомбардира НБА Карима Абдул-Джаббара, известного своим мастерством броска с крючка.