@alauda-fe/common
Version:
Alauda frontend team common codes.
17 lines (16 loc) • 1.11 kB
TypeScript
/**
* @packageDocumentation
* @module utils
*/
export declare const reduceTrees: (subtreeKey: string) => <T extends Tree, R>(fn: TreeReducer<T, R>) => (seed: R) => (trees: T[]) => R;
export declare const mapTrees: (subtreeKey: string) => <T extends Tree, R extends Tree>(fn: TreeMapper<T, R>) => (trees: T[]) => R[];
export declare const filterTrees: (subtreeKey: string) => <T extends Tree>(fn: TreeFilter<T>) => (trees: T[]) => T[];
export declare const findPath: (subtreeKey: string) => <T extends Tree>(fn: TreeFilter<T>) => (trees: T[]) => T[];
export declare const firstPath: (subtreeKey: string) => <T extends Tree>(trees: T[]) => T[];
export declare function setNode<T extends Tree>(subtreeKey: string, path: number[], source: T[], target: T): T[];
export interface Tree {
[key: string]: Tree[];
}
export type TreeReducer<T extends Tree, R> = (acc: R, currentNode: T, parents: T[], path: number[]) => R;
export type TreeMapper<T extends Tree, R extends Tree> = (tree: T, parents: T[], path: number[]) => R;
export type TreeFilter<T extends Tree> = (tree: T, parents: T[], path: number[]) => boolean;