mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-13 05:20:25 +00:00
Merge pull request #33386 from BendingBender/onetime
[onetime] Update types to v3.0
This commit is contained in:
Vendored
+33
-24
@@ -1,36 +1,45 @@
|
||||
// Type definitions for onetime 2.0
|
||||
// Type definitions for onetime 3.0
|
||||
// Project: https://github.com/sindresorhus/onetime#readme
|
||||
// Definitions by: BendingBender <https://github.com/BendingBender>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 3.0
|
||||
|
||||
export = oneTime;
|
||||
|
||||
declare function oneTime<R>(fn: () => R, options?: oneTime.Options): () => R;
|
||||
declare function oneTime<T1, R>(fn: (t1: T1) => R, options?: oneTime.Options): (t1: T1) => R;
|
||||
declare function oneTime<T1, T2, R>(fn: (t1: T1, t2: T2) => R, options?: oneTime.Options): (t1: T1, t2: T2) => R;
|
||||
declare function oneTime<T1, T2, T3, R>(fn: (t1: T1, t2: T2, t3: T3) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, T8, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, T8, T9, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R;
|
||||
declare function oneTime<R>(fn: (...args: any[]) => R, options?: oneTime.Options): (...args: any[]) => R;
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
declare function oneTime<T extends any[], R>(
|
||||
fn: (...args: T) => R,
|
||||
options?: oneTime.Options
|
||||
): (...args: T) => R;
|
||||
|
||||
declare namespace oneTime {
|
||||
/**
|
||||
* 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
|
||||
* const foo = onetime(() => {});
|
||||
* foo();
|
||||
* foo();
|
||||
* foo();
|
||||
*
|
||||
* console.log(onetime.callCount(foo));
|
||||
* //=> 3
|
||||
*/
|
||||
function callCount(fn: (...args: any[]) => any): number | undefined;
|
||||
|
||||
interface Options {
|
||||
/**
|
||||
* Throw an error when called more than once.
|
||||
* @default false
|
||||
*/
|
||||
throw?: boolean;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,29 +3,10 @@ import onetime = require('onetime');
|
||||
const foo = onetime(() => 5);
|
||||
foo(); // $ExpectType number
|
||||
|
||||
const foo2 = onetime(() => true, {throw: true});
|
||||
const foo2 = onetime(() => true, { throw: true });
|
||||
foo2(); // $ExpectType boolean
|
||||
|
||||
onetime((t1: boolean) => 5)(true); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string) => 5)(true, ''); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number) => 5)(true, '', 5); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined) => 5)(true, '', 5, undefined); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined, t5: string) => 5)(true, '', 5, undefined, ''); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number) => 5)(true, '', 5, undefined, '', 6); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean) => 5)(true, '', 5, undefined, '', 6, false); // $ExpectType number
|
||||
|
||||
const t8 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string) => 5);
|
||||
t8(true, '', 5, undefined, '', 6, false, ''); // $ExpectType number
|
||||
|
||||
const t9 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string, t9: number) => 5);
|
||||
t9(true, '', 5, undefined, '', 6, false, '', 1); // $ExpectType number
|
||||
|
||||
const t10 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string, t9: number, t10: boolean) => 5);
|
||||
t10(true, '', 5, undefined, '', 6, false, '', 1, true); // $ExpectType number
|
||||
|
||||
const t11 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string, t9: number, t10: boolean, t11: string) => 5);
|
||||
t11(true, '', 5, undefined, '', 6, false, '', 1, true, 5); // $ExpectType number
|
||||
onetime.callCount((t1: boolean, t2: string) => 5); // $ExpectType number | undefined
|
||||
|
||||
@@ -20,4 +20,4 @@
|
||||
"index.d.ts",
|
||||
"onetime-tests.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+36
@@ -0,0 +1,36 @@
|
||||
// Type definitions for onetime 2.0
|
||||
// Project: https://github.com/sindresorhus/onetime#readme
|
||||
// Definitions by: BendingBender <https://github.com/BendingBender>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
export = oneTime;
|
||||
|
||||
declare function oneTime<R>(fn: () => R, options?: oneTime.Options): () => R;
|
||||
declare function oneTime<T1, R>(fn: (t1: T1) => R, options?: oneTime.Options): (t1: T1) => R;
|
||||
declare function oneTime<T1, T2, R>(fn: (t1: T1, t2: T2) => R, options?: oneTime.Options): (t1: T1, t2: T2) => R;
|
||||
declare function oneTime<T1, T2, T3, R>(fn: (t1: T1, t2: T2, t3: T3) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R, options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, T8, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, T8, T9, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R;
|
||||
declare function oneTime<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R>(
|
||||
fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R,
|
||||
options?: oneTime.Options): (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R;
|
||||
declare function oneTime<R>(fn: (...args: any[]) => R, options?: oneTime.Options): (...args: any[]) => R;
|
||||
|
||||
declare namespace oneTime {
|
||||
interface Options {
|
||||
throw?: boolean;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import onetime = require('onetime');
|
||||
|
||||
const foo = onetime(() => 5);
|
||||
foo(); // $ExpectType number
|
||||
|
||||
const foo2 = onetime(() => true, {throw: true});
|
||||
foo2(); // $ExpectType boolean
|
||||
|
||||
onetime((t1: boolean) => 5)(true); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string) => 5)(true, ''); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number) => 5)(true, '', 5); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined) => 5)(true, '', 5, undefined); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined, t5: string) => 5)(true, '', 5, undefined, ''); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number) => 5)(true, '', 5, undefined, '', 6); // $ExpectType number
|
||||
onetime((t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean) => 5)(true, '', 5, undefined, '', 6, false); // $ExpectType number
|
||||
|
||||
const t8 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string) => 5);
|
||||
t8(true, '', 5, undefined, '', 6, false, ''); // $ExpectType number
|
||||
|
||||
const t9 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string, t9: number) => 5);
|
||||
t9(true, '', 5, undefined, '', 6, false, '', 1); // $ExpectType number
|
||||
|
||||
const t10 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string, t9: number, t10: boolean) => 5);
|
||||
t10(true, '', 5, undefined, '', 6, false, '', 1, true); // $ExpectType number
|
||||
|
||||
const t11 = onetime(
|
||||
(t1: boolean, t2: string, t3: number, t4: undefined, t5: string, t6: number, t7: boolean, t8: string, t9: number, t10: boolean, t11: string) => 5);
|
||||
t11(true, '', 5, undefined, '', 6, false, '', 1, true, 5); // $ExpectType number
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"strictFunctionTypes": true,
|
||||
"baseUrl": "../../",
|
||||
"typeRoots": [
|
||||
"../../"
|
||||
],
|
||||
"paths": {
|
||||
"onetime": [
|
||||
"onetime/v2"
|
||||
]
|
||||
},
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"onetime-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Reference in New Issue
Block a user