topological-sort-group
Version:
Topological sorting and cycle detection. Optional grouping for parallel processing
25 lines (24 loc) • 797 B
TypeScript
import type { Cycle, DependencyGraph, GraphOptions, Key, SortModeEnum, SortResult } from './types.js';
export default class Graph<T> {
protected size: number;
static SortMode: {
readonly Group: 1;
readonly Flat: 2;
};
private nodeMap;
private duplicateMap;
private path;
constructor(options?: GraphOptions);
static from<T>(input: DependencyGraph<T>, options?: GraphOptions): Graph<T>;
toGraph(): DependencyGraph<T>;
private key;
keys(): Key[];
value(key: Key): T;
edges(key: Key): Key[];
addNode(value: T): void;
addNode(id: string, value: T): void;
addDependency(dependent: string, dependency: string): void;
degrees(): Record<Key, number>;
cycles(): Cycle[];
sort(mode?: SortModeEnum): SortResult<T>;
}