Merge branch 'master' into feature/task-functions
[poolifier.git] / src / worker / task-functions.ts
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 */
7 export 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 */
18 export 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 */
29 export 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 */
42 export type TaskFunctions<Data = unknown, Response = unknown> = Record<
43 string,
44 TaskFunction<Data, Response>
45 >
46
47 /**
48 * Task function operation return type.
49 */
50 export interface TaskFunctionOperationReturnType {
51 status: boolean
52 error?: Error
53 }