Skip to content

Commit 78f419d

Browse files
committed
Added more typings.
1 parent 0fce6ec commit 78f419d

12 files changed

+315
-0
lines changed

src/FrameQueue.d.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import {ListQueue, Task} from './ListQueue';
2+
3+
/**
4+
* A queue based on [requestAnimationFrame()](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame).
5+
* Used in an animation loop or for drawing updates.
6+
*/
7+
export declare class FrameQueue extends ListQueue {
8+
/**
9+
* The batch size in milliseconds for running tasks.
10+
* If `undefined`, all tasks are run in a single frame.
11+
*/
12+
batch: number | undefined;
13+
14+
/**
15+
* Creates a new frame queue.
16+
* @param paused Whether the queue is starting paused.
17+
* @param batchInMs The batch size in milliseconds.
18+
*/
19+
constructor(paused: boolean = false, batchInMs?: number);
20+
21+
/**
22+
* Enqueues a task.
23+
* @param fn The function to execute.
24+
* @returns The task object.
25+
*/
26+
enqueue(fn: (timeStamp: number, task: Task, queue: FrameQueue) => void): Task;
27+
28+
/**
29+
* Starts the queue.
30+
* It is used internally by `resume()`.
31+
* @returns The function that stops the queue.
32+
*/
33+
startQueue(): (() => void) | null;
34+
}
35+
36+
/**
37+
* The default frame queue usually used as a global queue.
38+
*/
39+
export const frameQueue: FrameQueue;
40+
41+
export default FrameQueue;

src/FrameQueue.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// @ts-self-types="./FrameQueue.d.ts"
2+
13
'use strict';
24

35
import List from 'list-toolkit/list.js';

src/IdleQueue.d.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import {ListQueue, Task} from './ListQueue';
2+
3+
/**
4+
* A queue based on [requestIdleCallback()](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback).
5+
* Used for background tasks.
6+
*/
7+
export declare class IdleQueue extends ListQueue {
8+
/**
9+
* The timeout batch size in milliseconds for running tasks.
10+
* If `undefined`, all tasks are run in a single idle period.
11+
* This timeout is used only when `deadline.didTimeout` passed by `requestIdleCallback()` is `true`.
12+
*/
13+
timeoutBatch: number | undefined;
14+
15+
/**
16+
* The options passed to `requestIdleCallback()`.
17+
*/
18+
options: IdleCallbackOptions | undefined;
19+
20+
/**
21+
* Creates a new idle queue.
22+
* @param paused Whether the queue is starting paused.
23+
* @param timeoutBatchInMs The timeout batch size in milliseconds.
24+
* @param options The options passed to `requestIdleCallback()`.
25+
*/
26+
constructor(paused: boolean = false, timeoutBatchInMs?: number, options?: IdleCallbackOptions);
27+
28+
/**
29+
* Enqueues a task.
30+
* @param fn The function to execute.
31+
* @returns The task object.
32+
*/
33+
enqueue(fn: (deadline: IdleDeadline, task: Task, queue: IdleQueue) => void): Task;
34+
35+
/**
36+
* Starts the queue.
37+
* It is used internally by `resume()`.
38+
* @returns The function that stops the queue.
39+
*/
40+
startQueue(): (() => void) | null;
41+
}
42+
43+
/**
44+
* The default idle queue usually used as a global queue.
45+
*/
46+
export const idleQueue: IdleQueue;
47+
48+
/**
49+
* A function that schedules a task to run in the next idle period.
50+
*/
51+
export const defer: (fn: (deadline: IdleDeadline, task: Task, queue: IdleQueue) => void) => Task;
52+
53+
export default IdleQueue;

src/IdleQueue.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// @ts-self-types="./IdleQueue.d.ts"
2+
13
'use strict';
24

35
import List from 'list-toolkit/list.js';

src/ListQueue.d.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import {MicroTask} from './MicroTask';
2+
import {List} from 'list-toolkit';
3+
4+
/**
5+
* A list-based queue of microtasks that will be executed when scheduled.
6+
* It is a base class for other list-based task queues.
7+
*/
8+
export declare class ListQueue extends MicroTaskQueue {
9+
/**
10+
* The list of tasks.
11+
*/
12+
list: List<MicroTask>;
13+
14+
/**
15+
* The function that stops the queue.
16+
* It is used internally by `pause()` and `resume()`.
17+
*/
18+
stopQueue: (() => void) | null;
19+
20+
/**
21+
* Creates a new list queue.
22+
* @param paused Whether the queue is starting paused.
23+
*/
24+
constructor(paused: boolean);
25+
26+
/**
27+
* Whether the queue is empty.
28+
*/
29+
get isEmpty(): boolean;
30+
31+
/**
32+
* Enqueues a microtask.
33+
* @param fn The function to execute when the microtask is scheduled.
34+
* @returns The enqueued microtask.
35+
*/
36+
enqueue(fn: () => void): MicroTask;
37+
38+
/**
39+
* Dequeues a microtask.
40+
* @param task The microtask to dequeue.
41+
* @returns The queue.
42+
*/
43+
dequeue(task: MicroTask): ListQueue;
44+
45+
/**
46+
* Clears the queue.
47+
* @returns The queue.
48+
*/
49+
clear(): ListQueue;
50+
51+
/**
52+
* Pauses the queue.
53+
* @returns The queue.
54+
*/
55+
pause(): ListQueue;
56+
57+
/**
58+
* Resumes the queue.
59+
* @returns The queue.
60+
*/
61+
resume(): ListQueue;
62+
63+
/**
64+
* Starts the queue.
65+
* It is used internally by `resume()`.
66+
* It is meant to be overridden in subclasses.
67+
* @returns The function that stops the queue.
68+
*/
69+
startQueue(): (() => void) | null;
70+
}
71+
72+
/**
73+
* A task for list queues.
74+
*/
75+
export declare type Task = MicroTask;
76+
77+
export default ListQueue;

src/ListQueue.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// @ts-self-types="./ListQueue.d.ts"
2+
13
'use strict';
24

35
import List from 'list-toolkit/list.js';

src/MicroTask.d.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* A microtask that will be executed when scheduled.
3+
*/
4+
export declare class MicroTask {
5+
/**
6+
* The function to execute when the microtask is scheduled.
7+
*/
8+
fn: () => void;
9+
10+
/**
11+
* Creates a new microtask.
12+
* @param fn The function to execute when the microtask is scheduled.
13+
*/
14+
constructor(fn: () => void);
15+
}
16+
17+
export default MicroTask;

src/MicroTask.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// @ts-self-types="./MicroTask.d.ts"
2+
13
'use strict';
24

35
export class MicroTask {

src/MicroTaskQueue.d.ts

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import {MicroTask} from './MicroTask';
2+
3+
/**
4+
* A queue of microtasks that will be executed when scheduled.
5+
* It is a base class for other task queues.
6+
*/
7+
export declare class MicroTaskQueue {
8+
/**
9+
* Whether the queue is paused.
10+
*/
11+
paused: boolean;
12+
13+
/**
14+
* Creates a new microtask queue.
15+
* @param paused Whether the queue is paused.
16+
*/
17+
constructor(paused: boolean);
18+
19+
/**
20+
* Whether the queue is empty.
21+
* It is meant to be overridden in subclasses.
22+
*/
23+
get isEmpty(): boolean;
24+
25+
/**
26+
* Enqueues a microtask.
27+
* It is meant to be overridden in subclasses.
28+
* @param fn The function to execute when the microtask is scheduled.
29+
* @returns The enqueued microtask.
30+
*/
31+
enqueue(fn: () => void): MicroTask;
32+
33+
/**
34+
* Dequeues a microtask.
35+
* It is meant to be overridden in subclasses.
36+
* @param task The microtask to dequeue.
37+
* @returns The queue.
38+
*/
39+
dequeue(task: MicroTask): MicroTaskQueue;
40+
41+
/**
42+
* Clears the queue.
43+
* It is meant to be overridden in subclasses.
44+
* @returns The queue.
45+
*/
46+
clear(): MicroTaskQueue;
47+
48+
/**
49+
* Pauses the queue.
50+
* It is meant to be overridden in subclasses.
51+
* @returns The queue.
52+
*/
53+
pause(): MicroTaskQueue;
54+
55+
/**
56+
* Resumes the queue.
57+
* It is meant to be overridden in subclasses.
58+
* @returns The queue.
59+
*/
60+
resume(): MicroTaskQueue;
61+
}
62+
63+
export default MicroTaskQueue;

src/MicroTaskQueue.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// @ts-self-types="./MicroTaskQueue.d.ts"
2+
13
'use strict';
24

35
import MicroTask from './MicroTask.js';

0 commit comments

Comments
 (0)