File: /var/www/tana/frontend/node_modules/onetime/index.js
'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;
};