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