| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 'use strict';const mimicFn = require('mimic-fn');const calledFunctions = new WeakMap();const onetime = (function_, options = {}) => {	if (typeof function_ !== 'function') {		throw new TypeError('Expected a function');	}	let returnValue;	let callCount = 0;	const functionName = function_.displayName || function_.name || '<anonymous>';	const onetime = function (...arguments_) {		calledFunctions.set(onetime, ++callCount);		if (callCount === 1) {			returnValue = function_.apply(this, arguments_);			function_ = null;		} else if (options.throw === true) {			throw new Error(`Function \`${functionName}\` can only be called once`);		}		return returnValue;	};	mimicFn(onetime, function_);	calledFunctions.set(onetime, callCount);	return onetime;};module.exports = onetime;// TODO: Remove this for the next major releasemodule.exports.default = onetime;module.exports.callCount = function_ => {	if (!calledFunctions.has(function_)) {		throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);	}	return calledFunctions.get(function_);};
 |