refactor: factor out task function validation
[poolifier.git] / src / worker / task-functions.ts
... / ...
CommitLineData
1/**
2 * Task synchronous function that can be executed.
3 *
4 * @typeParam Data - Type of data sent to the worker. This can only be structured-cloneable data.
5 * @typeParam Response - Type of execution response. This can only be structured-cloneable data.
6 */
7export type TaskSyncFunction<Data = unknown, Response = unknown> = (
8 data?: Data
9) => Response
10
11/**
12 * Task asynchronous function that can be executed.
13 * This function must return a promise.
14 *
15 * @typeParam Data - Type of data sent to the worker. This can only be structured-cloneable data.
16 * @typeParam Response - Type of execution response. This can only be structured-cloneable data.
17 */
18export type TaskAsyncFunction<Data = unknown, Response = unknown> = (
19 data?: Data
20) => Promise<Response>
21
22/**
23 * Task function that can be executed.
24 * This function can be synchronous or asynchronous.
25 *
26 * @typeParam Data - Type of data sent to the worker. This can only be structured-cloneable data.
27 * @typeParam Response - Type of execution response. This can only be structured-cloneable data.
28 */
29export type TaskFunction<Data = unknown, Response = unknown> =
30 | TaskSyncFunction<Data, Response>
31 | TaskAsyncFunction<Data, Response>
32
33/**
34 * Tasks functions that can be executed.
35 * This object can contain synchronous or asynchronous functions.
36 * The key is the name of the function.
37 * The value is the function itself.
38 *
39 * @typeParam Data - Type of data sent to the worker. This can only be structured-cloneable data.
40 * @typeParam Response - Type of execution response. This can only be structured-cloneable data.
41 */
42export type TaskFunctions<Data = unknown, Response = unknown> = Record<
43string,
44TaskFunction<Data, Response>
45>