github.com/jfrog/frogbot@v1.1.1-0.20231221090046-821a26f50338/action/node_modules/before-after-hook/index.js (about) 1 var register = require('./lib/register') 2 var addHook = require('./lib/add') 3 var removeHook = require('./lib/remove') 4 5 // bind with array of arguments: https://stackoverflow.com/a/21792913 6 var bind = Function.bind 7 var bindable = bind.bind(bind) 8 9 function bindApi (hook, state, name) { 10 var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) 11 hook.api = { remove: removeHookRef } 12 hook.remove = removeHookRef 13 14 ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { 15 var args = name ? [state, kind, name] : [state, kind] 16 hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) 17 }) 18 } 19 20 function HookSingular () { 21 var singularHookName = 'h' 22 var singularHookState = { 23 registry: {} 24 } 25 var singularHook = register.bind(null, singularHookState, singularHookName) 26 bindApi(singularHook, singularHookState, singularHookName) 27 return singularHook 28 } 29 30 function HookCollection () { 31 var state = { 32 registry: {} 33 } 34 35 var hook = register.bind(null, state) 36 bindApi(hook, state) 37 38 return hook 39 } 40 41 var collectionHookDeprecationMessageDisplayed = false 42 function Hook () { 43 if (!collectionHookDeprecationMessageDisplayed) { 44 console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') 45 collectionHookDeprecationMessageDisplayed = true 46 } 47 return HookCollection() 48 } 49 50 Hook.Singular = HookSingular.bind() 51 Hook.Collection = HookCollection.bind() 52 53 module.exports = Hook 54 // expose constructors as a named property for TypeScript 55 module.exports.Hook = Hook 56 module.exports.Singular = Hook.Singular 57 module.exports.Collection = Hook.Collection