mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-03 20:40:28 -05:00 
			
		
		
		
	
		
			
	
	
		
			43 lines
		
	
	
		
			935 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			935 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var wrappy = require('wrappy')
							 | 
						||
| 
								 | 
							
								module.exports = wrappy(once)
							 | 
						||
| 
								 | 
							
								module.exports.strict = wrappy(onceStrict)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								once.proto = once(function () {
							 | 
						||
| 
								 | 
							
								  Object.defineProperty(Function.prototype, 'once', {
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      return once(this)
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    configurable: true
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Object.defineProperty(Function.prototype, 'onceStrict', {
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      return onceStrict(this)
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    configurable: true
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function once (fn) {
							 | 
						||
| 
								 | 
							
								  var f = function () {
							 | 
						||
| 
								 | 
							
								    if (f.called) return f.value
							 | 
						||
| 
								 | 
							
								    f.called = true
							 | 
						||
| 
								 | 
							
								    return f.value = fn.apply(this, arguments)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  f.called = false
							 | 
						||
| 
								 | 
							
								  return f
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onceStrict (fn) {
							 | 
						||
| 
								 | 
							
								  var f = function () {
							 | 
						||
| 
								 | 
							
								    if (f.called)
							 | 
						||
| 
								 | 
							
								      throw new Error(f.onceError)
							 | 
						||
| 
								 | 
							
								    f.called = true
							 | 
						||
| 
								 | 
							
								    return f.value = fn.apply(this, arguments)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  var name = fn.name || 'Function wrapped with `once`'
							 | 
						||
| 
								 | 
							
								  f.onceError = name + " shouldn't be called more than once"
							 | 
						||
| 
								 | 
							
								  f.called = false
							 | 
						||
| 
								 | 
							
								  return f
							 | 
						||
| 
								 | 
							
								}
							 |