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