UNPKG

1.21 kBPlain TextView Raw
1import { TaskStatus } from './types';
2
3export const getTaskError = (task: TaskStatus): string | undefined =>
4 task.subtasks !== undefined ? getTasksError(task.subtasks) : task.error;
5
6export const getTasksError = (tasks: ReadonlyArray<TaskStatus>): string | undefined =>
7 tasks.map(getTaskError).filter((value) => value !== undefined)[0];
8
9export const isTaskDone = (task: TaskStatus): boolean =>
10 getTaskError(task) !== undefined || task.skipped !== undefined || task.complete === true;
11
12export const areTasksDone = (tasks: ReadonlyArray<TaskStatus>): boolean =>
13 getTasksError(tasks) !== undefined || tasks.every((task) => task.skipped !== undefined || task.complete === true);
14
15export const skipAllTasks = (tasks: ReadonlyArray<TaskStatus>, reason: string): ReadonlyArray<TaskStatus> =>
16 tasks.map((task) => {
17 if (isTaskDone(task)) {
18 return task;
19 }
20
21 return {
22 id: task.id,
23 title: task.title,
24 message: task.message,
25 pending: task.pending,
26 complete: task.complete,
27 error: task.error,
28 subtasks: task.subtasks === undefined ? undefined : skipAllTasks(task.subtasks, reason),
29 skipped: reason,
30 collapse: task.collapse,
31 };
32 });