github
DocsBlog
fontcolor_theme
package

API @deepkit/topsort

npm install @deepkit/topsort

Classes

ArraySort [source]
export class ArraySort<T = string> extends BaseImplementation<T> {
    set(elements: Map<T, T[]>);
    add(element: T, dependencies: T[] = []);
    reset();
    /**
     * Sorts dependencies and returns internal used data structure.
     *
     * @throws CircularDependencyException if a circular dependency has been found
     * @throws ElementNotFoundException if a dependency can not be found
     */
    sort();
}

A topological sort implementation based on arrays.

GroupArraySort [source]
export class GroupArraySort<T = string, TYPE = string> extends BaseImplementation<T> {
    groups: Group<TYPE>[];
    sameTypeExtraGrouping: boolean;
    throwOnNonExistingDependency: boolean;
    set(elements: Map<{
        item: T;
        type: TYPE;
    }, T[]>);
    add(item: T, type: TYPE, dependencies: T[] = []);
    visit(element: ItemElement<T, TYPE>, parents?: Set<T>): number;
    getGroups();
    /**
     * Sorts dependencies and returns internal used data structure.
     *
     * @throws CircularDependencyException if a circular dependency has been found
     * @throws ElementNotFoundException if a dependency can not be found
     */
    sort();
}
BaseImplementation [source]
export abstract class BaseImplementation<T> {
    circularInterceptor?: (items: T[]) => void;
    constructor(public throwCircularDependency: boolean = true);
}

Errors

CircularDependencyException [source]
export class CircularDependencyException<T> extends Error {
    constructor(public readonly nodes: T[]);
    getStart(): T;
    getEnd(): T;
}
ElementNotFoundException [source]
export class ElementNotFoundException<T> extends Error {
    constructor(public readonly element: T, public readonly dependency: T);
}