mirror of
				https://kkgithub.com/actions/setup-node.git
				synced 2025-11-04 12:46:16 +08:00 
			
		
		
		
	
		
			
	
	
		
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var register = require('./lib/register')
							 | 
						||
| 
								 | 
							
								var addHook = require('./lib/add')
							 | 
						||
| 
								 | 
							
								var removeHook = require('./lib/remove')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// bind with array of arguments: https://stackoverflow.com/a/21792913
							 | 
						||
| 
								 | 
							
								var bind = Function.bind
							 | 
						||
| 
								 | 
							
								var bindable = bind.bind(bind)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function bindApi (hook, state, name) {
							 | 
						||
| 
								 | 
							
								  var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])
							 | 
						||
| 
								 | 
							
								  hook.api = { remove: removeHookRef }
							 | 
						||
| 
								 | 
							
								  hook.remove = removeHookRef
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ;['before', 'error', 'after', 'wrap'].forEach(function (kind) {
							 | 
						||
| 
								 | 
							
								    var args = name ? [state, kind, name] : [state, kind]
							 | 
						||
| 
								 | 
							
								    hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function HookSingular () {
							 | 
						||
| 
								 | 
							
								  var singularHookName = 'h'
							 | 
						||
| 
								 | 
							
								  var singularHookState = {
							 | 
						||
| 
								 | 
							
								    registry: {}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  var singularHook = register.bind(null, singularHookState, singularHookName)
							 | 
						||
| 
								 | 
							
								  bindApi(singularHook, singularHookState, singularHookName)
							 | 
						||
| 
								 | 
							
								  return singularHook
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function HookCollection () {
							 | 
						||
| 
								 | 
							
								  var state = {
							 | 
						||
| 
								 | 
							
								    registry: {}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var hook = register.bind(null, state)
							 | 
						||
| 
								 | 
							
								  bindApi(hook, state)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return hook
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var collectionHookDeprecationMessageDisplayed = false
							 | 
						||
| 
								 | 
							
								function Hook () {
							 | 
						||
| 
								 | 
							
								  if (!collectionHookDeprecationMessageDisplayed) {
							 | 
						||
| 
								 | 
							
								    console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4')
							 | 
						||
| 
								 | 
							
								    collectionHookDeprecationMessageDisplayed = true
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return HookCollection()
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Hook.Singular = HookSingular.bind()
							 | 
						||
| 
								 | 
							
								Hook.Collection = HookCollection.bind()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = Hook
							 | 
						||
| 
								 | 
							
								// expose constructors as a named property for TypeScript
							 | 
						||
| 
								 | 
							
								module.exports.Hook = Hook
							 | 
						||
| 
								 | 
							
								module.exports.Singular = Hook.Singular
							 | 
						||
| 
								 | 
							
								module.exports.Collection = Hook.Collection
							 |