1 | import { FSWatcher } from 'chokidar';
|
2 | import { Node } from './node';
|
3 | export type SimplePredicate<T = Node> = {
|
4 | (value: T, index: number): boolean;
|
5 | and?: (criteria: SimplePredicate<T>) => SimplePredicate<T>;
|
6 | };
|
7 | export type ComplexPredicate<T = Node, R extends T = T> = SimplePredicate<T> | {
|
8 | (value: T, index: number): value is R;
|
9 | and?: (criteria: ComplexPredicate<T, R>) => ComplexPredicate<T, R>;
|
10 | };
|
11 | export interface Traversable<T> {
|
12 | filter<R extends T = T>(by: ComplexPredicate<T, R>): R[];
|
13 | find<R extends T = T>(by: ComplexPredicate<T, R>): R | undefined;
|
14 | some(by: SimplePredicate<T>): boolean;
|
15 | }
|
16 |
|
17 |
|
18 |
|
19 |
|
20 | export declare class BuildGraph implements Traversable<Node> {
|
21 | private store;
|
22 | watcher?: FSWatcher;
|
23 | put(value: Node | Node[]): this;
|
24 | private insert;
|
25 | get(url: string): Node;
|
26 | has(url: string): boolean;
|
27 | entries(): Node[];
|
28 | some(by: SimplePredicate): boolean;
|
29 | filter<T extends Node = Node>(by: ComplexPredicate<Node, T>): T[];
|
30 | find<T extends Node = Node>(by: ComplexPredicate<Node, T>): T | undefined;
|
31 | get size(): number;
|
32 | }
|