mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-26 07:16:44 +08: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
 | |
| }
 |