narrow-minded
Version:
Easy typeof validations with sophisticated TypeScript inference.
28 lines • 1.35 kB
TypeScript
export type TraversalNode<V = unknown> = {
property: string;
value: V;
level: number;
parent: TraversalNode<V> | undefined;
};
export type TraversalVisit<V = unknown, R = unknown> = (node: TraversalNode<V>) => R;
export type TraversalDequeue<V = unknown> = (q: Array<TraversalNode<V>>) => TraversalNode<V>;
export type TraversalEnqueue<V = unknown, R = unknown> = (node: TraversalNode<V>, q: Array<TraversalNode<V>>, visitResult: R) => void;
export type TraversalOptions<V = unknown, R = unknown> = {
visit: TraversalVisit<V, R>;
dequeue: TraversalDequeue<V>;
enqueue: TraversalEnqueue<V, R>;
};
export declare const makeSubnodes: (node: TraversalNode) => TraversalNode[];
export declare const shouldContinue: (visitResult: unknown) => boolean;
export type TraversalOrder = 'breadth' | 'depth';
export declare const DEFAULT_TRAVERSALS: Record<TraversalOrder, {
dequeue: TraversalDequeue;
enqueue: TraversalEnqueue;
}>;
/**
* Generic tree traversal.
*/
export declare const traverse: <V = unknown, R = unknown>(root: V, { visit, dequeue, enqueue }: TraversalOptions<V, R>) => void;
export declare const traverseObjectDepthFirst: (root: unknown, visit: TraversalVisit) => void;
export declare const traverseObjectBreadthFirst: (root: unknown, visit: TraversalVisit) => void;
//# sourceMappingURL=traverse.d.ts.map