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