Initial commit
[yaffs-website] / node_modules / once / once.js
1 var wrappy = require('wrappy')
2 module.exports = wrappy(once)
3 module.exports.strict = wrappy(onceStrict)
4
5 once.proto = once(function () {
6   Object.defineProperty(Function.prototype, 'once', {
7     value: function () {
8       return once(this)
9     },
10     configurable: true
11   })
12
13   Object.defineProperty(Function.prototype, 'onceStrict', {
14     value: function () {
15       return onceStrict(this)
16     },
17     configurable: true
18   })
19 })
20
21 function once (fn) {
22   var f = function () {
23     if (f.called) return f.value
24     f.called = true
25     return f.value = fn.apply(this, arguments)
26   }
27   f.called = false
28   return f
29 }
30
31 function onceStrict (fn) {
32   var f = function () {
33     if (f.called)
34       throw new Error(f.onceError)
35     f.called = true
36     return f.value = fn.apply(this, arguments)
37   }
38   var name = fn.name || 'Function wrapped with `once`'
39   f.onceError = name + " shouldn't be called more than once"
40   f.called = false
41   return f
42 }