| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- 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
 
- }
 
 
  |