rsnext/packages/next/lib/flat-readdir.ts

27 lines
691 B
TypeScript
Raw Normal View History

import { join } from 'path'
import { nonNullable } from './non-nullable'
import { promises } from 'fs'
export async function flatReaddir(dir: string, include: RegExp) {
const dirents = await promises.readdir(dir, { withFileTypes: true })
const result = await Promise.all(
dirents.map(async (part) => {
const absolutePath = join(dir, part.name)
if (part.isSymbolicLink()) {
const stats = await promises.stat(absolutePath)
if (stats.isDirectory()) {
return null
}
}
if (part.isDirectory() || !include.test(part.name)) {
return null
}
return absolutePath
})
)
return result.filter(nonNullable)
}