| 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;
 
- };
 
 
  |