| 12345678910111213141516171819202122232425262728293031 | 'use strict';module.exports = function (fn, errMsg) {	if (typeof fn !== 'function') {		throw new TypeError('Expected a function');	}	var ret;	var called = false;	var fnName = fn.displayName || fn.name || (/function ([^\(]+)/.exec(fn.toString()) || [])[1];	var onetime = function () {		if (called) {			if (errMsg === true) {				fnName = fnName ? fnName + '()' : 'Function';				throw new Error(fnName + ' can only be called once.');			}			return ret;		}		called = true;		ret = fn.apply(this, arguments);		fn = null;		return ret;	};	onetime.displayName = fnName;	return onetime;};
 |