@akala/core
Version:
30 lines (29 loc) • 918 B
TypeScript
/** 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[][];
};