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