Sha256: 21b18eefead9f56c160841b5ead08f4aeb29b792b500f6990f65d4e7eb0993ac
Contents?: true
Size: 709 Bytes
Versions: 48
Compression:
Stored size: 709 Bytes
Contents
'use strict'; const mimicFn = require('mimic-fn'); module.exports = (fn, opts) => { // TODO: Remove this in v3 if (opts === true) { throw new TypeError('The second argument is now an options object'); } if (typeof fn !== 'function') { throw new TypeError('Expected a function'); } opts = opts || {}; let ret; let called = false; const fnName = fn.displayName || fn.name || '<anonymous>'; const onetime = function () { if (called) { if (opts.throw === true) { throw new Error(`Function \`${fnName}\` can only be called once`); } return ret; } called = true; ret = fn.apply(this, arguments); fn = null; return ret; }; mimicFn(onetime, fn); return onetime; };
Version data entries
48 entries across 46 versions & 3 rubygems