feat(lib/utils/trees): extract predicate type from filter in findInTree

This commit is contained in:
PalmDevs 2025-06-09 19:40:32 +07:00
parent f2d0602949
commit 17307bb90a
No known key found for this signature in database
GPG key ID: 6FAE8F8677ACA8BA

View file

@ -1,3 +1,5 @@
import type { ExtractPredicate } from './types'
export type SearchTree = Record<string, any>
export type SearchFilter = (tree: SearchTree) => boolean
@ -18,11 +20,11 @@ export interface FindInTreeOptions {
maxDepth?: number
}
export function findInTree(
export function findInTree<F extends SearchFilter>(
tree: SearchTree,
filter: SearchFilter,
filter: F,
opts?: FindInTreeOptions,
): any | undefined {
): ExtractPredicate<F> | undefined {
type StackItem = [node: any, depth: number]
const stack: StackItem[] = [[tree, 0]]
const maxDepth = opts?.maxDepth ?? 100