summaryrefslogtreecommitdiffstats
path: root/debian/tests/test_modules/delay/index.d.ts
diff options
context:
space:
mode:
Diffstat (limited to 'debian/tests/test_modules/delay/index.d.ts')
-rw-r--r--debian/tests/test_modules/delay/index.d.ts107
1 files changed, 107 insertions, 0 deletions
diff --git a/debian/tests/test_modules/delay/index.d.ts b/debian/tests/test_modules/delay/index.d.ts
new file mode 100644
index 0000000..d3d404b
--- /dev/null
+++ b/debian/tests/test_modules/delay/index.d.ts
@@ -0,0 +1,107 @@
+declare namespace delay {
+ interface ClearablePromise<T> extends Promise<T> {
+ /**
+ Clears the delay and settles the promise.
+ */
+ clear(): void;
+ }
+
+ /**
+ Minimal subset of `AbortSignal` that delay will use if passed.
+ This avoids a dependency on dom.d.ts.
+ The dom.d.ts `AbortSignal` is compatible with this one.
+ */
+ interface AbortSignal {
+ readonly aborted: boolean;
+ addEventListener(
+ type: 'abort',
+ listener: () => void,
+ options?: {once?: boolean}
+ ): void;
+ removeEventListener(type: 'abort', listener: () => void): void;
+ }
+
+ interface Options {
+ /**
+ An optional AbortSignal to abort the delay.
+ If aborted, the Promise will be rejected with an AbortError.
+ */
+ signal?: AbortSignal;
+ }
+}
+
+type Delay = {
+ /**
+ Create a promise which resolves after the specified `milliseconds`.
+
+ @param milliseconds - Milliseconds to delay the promise.
+ @returns A promise which resolves after the specified `milliseconds`.
+ */
+ (milliseconds: number, options?: delay.Options): delay.ClearablePromise<void>;
+
+ /**
+ Create a promise which resolves after the specified `milliseconds`.
+
+ @param milliseconds - Milliseconds to delay the promise.
+ @returns A promise which resolves after the specified `milliseconds`.
+ */
+ <T>(
+ milliseconds: number,
+ options?: delay.Options & {
+ /**
+ Value to resolve in the returned promise.
+ */
+ value: T;
+ }
+ ): delay.ClearablePromise<T>;
+
+ /**
+ Create a promise which resolves after a random amount of milliseconds between `minimum` and `maximum` has passed.
+
+ Useful for tests and web scraping since they can have unpredictable performance. For example, if you have a test that asserts a method should not take longer than a certain amount of time, and then run it on a CI, it could take longer. So with `.range()`, you could give it a threshold instead.
+
+ @param minimum - Minimum amount of milliseconds to delay the promise.
+ @param maximum - Maximum amount of milliseconds to delay the promise.
+ @returns A promise which resolves after a random amount of milliseconds between `maximum` and `maximum` has passed.
+ */
+ range<T>(
+ minimum: number,
+ maximum: number,
+ options?: delay.Options & {
+ /**
+ Value to resolve in the returned promise.
+ */
+ value: T;
+ }
+ ): delay.ClearablePromise<T>;
+
+ // TODO: Allow providing value type after https://github.com/Microsoft/TypeScript/issues/5413 is resolved.
+ /**
+ Create a promise which rejects after the specified `milliseconds`.
+
+ @param milliseconds - Milliseconds to delay the promise.
+ @returns A promise which rejects after the specified `milliseconds`.
+ */
+ reject(
+ milliseconds: number,
+ options?: delay.Options & {
+ /**
+ Value to reject in the returned promise.
+ */
+ value?: unknown;
+ }
+ ): delay.ClearablePromise<never>;
+};
+
+declare const delay: Delay & {
+ // The types are intentionally loose to make it work with both Node.js and browser versions of these methods.
+ createWithTimers(timers: {
+ clearTimeout: (timeoutId: any) => void;
+ setTimeout: (callback: (...args: any[]) => void, milliseconds: number, ...args: any[]) => unknown;
+ }): Delay;
+
+ // TODO: Remove this for the next major release.
+ default: typeof delay;
+};
+
+export = delay;