import { FileSystem } from '../fs' import { path } from '../path' export function traverseDirectory( fs: FileSystem, dir: string, options: { extensions?: string[] ignore_extensions?: string[] | undefined visitor: (filePath: string) => void } ) { if (!FileSystem.existsSync(fs, dir)) { return } const files = fs.readdirSync(dir, { withFileTypes: true }) const { extensions, ignore_extensions, visitor } = options || {} for (const file of files) { const filePath = path.resolve(dir, file.name) if (file.isDirectory()) { traverseDirectory(fs, filePath, options) } else if ( ignore_extensions && ignore_extensions.find((e) => filePath.toLocaleLowerCase().endsWith(e.toLocaleLowerCase())) ) { //skip } else if ( !extensions || extensions.length === 0 || extensions.some((e) => filePath.toLocaleLowerCase().endsWith(e.toLocaleLowerCase())) ) { visitor(filePath) } } }