github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/test/integration/test-fixtures/npm-lock/node_modules/once/once.js (about)

     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  }