UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

17 lines (16 loc) 1.11 kB
/** * @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;