UNPKG

@akala/core

Version:
30 lines (29 loc) 918 B
/** Map of tasks where keys are task names */ export type Tasks = Record<string, Task>; /** * Task definition for sequencify operations * @property dep - Array of task dependencies */ export interface Task { dep: string[]; } /** * Creates an execution sequence for tasks with dependencies * @param tasks - Map of tasks where keys are task names * @param names - Array of task names to sequence * @returns Object containing: * - sequence: Ordered execution plan * - missingTasks: Tasks not found in the tasks map * - recursiveDependencies: Detected circular dependencies * @example * const tasks = { * build: { dep: ['lint'] }, * lint: { dep: [] } * }; * sequencify(tasks, ['build']); // Returns { sequence: ['lint', 'build'] } */ export default function sequencify(tasks: Tasks, names: string[]): { sequence: string[]; missingTasks: string[]; recursiveDependencies: string[][]; };