( arr: TNode[], getChildren: (item: TNode) => TNode[] )
| 113 | } |
| 114 | |
| 115 | export function flattenBy<TNode>( |
| 116 | arr: TNode[], |
| 117 | getChildren: (item: TNode) => TNode[] |
| 118 | ) { |
| 119 | const flat: TNode[] = [] |
| 120 | |
| 121 | const recurse = (subArr: TNode[]) => { |
| 122 | subArr.forEach(item => { |
| 123 | flat.push(item) |
| 124 | const children = getChildren(item) |
| 125 | if (children?.length) { |
| 126 | recurse(children) |
| 127 | } |
| 128 | }) |
| 129 | } |
| 130 | |
| 131 | recurse(arr) |
| 132 | |
| 133 | return flat |
| 134 | } |
| 135 | |
| 136 | export function memo<TDeps extends readonly any[], TDepArgs, TResult>( |
| 137 | getDeps: (depArgs?: TDepArgs) => [...TDeps], |
no test coverage detected
searching dependent graphs…