You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					65 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					65 lines
				
				1.2 KiB
			| 
											3 years ago
										 | 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; |