65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| declare namespace onetime {
 | |
| 	interface Options {
 | |
| 		/**
 | |
| 		Throw an error when called more than once.
 | |
| 
 | |
| 		@default false
 | |
| 		*/
 | |
| 		throw?: boolean;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| declare const onetime: {
 | |
| 	/**
 | |
| 	Ensure a function is only called once. When called multiple times it will return the return value from the first call.
 | |
| 
 | |
| 	@param fn - Function that should only be called once.
 | |
| 	@returns A function that only calls `fn` once.
 | |
| 
 | |
| 	@example
 | |
| 	```
 | |
| 	import onetime = require('onetime');
 | |
| 
 | |
| 	let i = 0;
 | |
| 
 | |
| 	const foo = onetime(() => ++i);
 | |
| 
 | |
| 	foo(); //=> 1
 | |
| 	foo(); //=> 1
 | |
| 	foo(); //=> 1
 | |
| 
 | |
| 	onetime.callCount(foo); //=> 3
 | |
| 	```
 | |
| 	*/
 | |
| 	<ArgumentsType extends unknown[], ReturnType>(
 | |
| 		fn: (...arguments: ArgumentsType) => ReturnType,
 | |
| 		options?: onetime.Options
 | |
| 	): (...arguments: ArgumentsType) => ReturnType;
 | |
| 
 | |
| 	/**
 | |
| 	Get the number of times `fn` has been called.
 | |
| 
 | |
| 	@param fn - Function to get call count from.
 | |
| 	@returns A number representing how many times `fn` has been called.
 | |
| 
 | |
| 	@example
 | |
| 	```
 | |
| 	import onetime = require('onetime');
 | |
| 
 | |
| 	const foo = onetime(() => {});
 | |
| 	foo();
 | |
| 	foo();
 | |
| 	foo();
 | |
| 
 | |
| 	console.log(onetime.callCount(foo));
 | |
| 	//=> 3
 | |
| 	```
 | |
| 	*/
 | |
| 	callCount(fn: (...arguments: any[]) => unknown): number;
 | |
| 
 | |
| 	// TODO: Remove this for the next major release
 | |
| 	default: typeof onetime;
 | |
| };
 | |
| 
 | |
| export = onetime;
 |