import { exists } from "fs/promises" import { dirname, join } from "path" export namespace Filesystem { export async function findUp(target: string, start: string, stop?: string) { let current = start const result = [] while (true) { const search = join(current, target) if (await exists(search)) result.push(search) if (stop === current) break const parent = dirname(current) if (parent === current) break current = parent } return result } export async function globUp(pattern: string, start: string, stop?: string) { let current = start const result = [] while (true) { try { const glob = new Bun.Glob(pattern) for await (const match of glob.scan({ cwd: current, onlyFiles: true, dot: true, })) { result.push(join(current, match)) } } catch { // Skip invalid glob patterns } if (stop === current) break const parent = dirname(current) if (parent === current) break current = parent } return result } }