UNPKG

@nodesecure/fs-walk

Version:

Modern FileSystem (fs) utilities to lazy walk directories Asynchronously (but also Synchronously)

36 lines 1.19 kB
// Import Node.js Dependencies import * as fs from "node:fs/promises"; import * as path from "node:path"; // Import Internal Dependencies import { EXCLUDED_DIRECTORY } from "./constants.js"; /** * @example * import { walk } from "@nodesecure/fs-walk"; * * for await (const [dirent, location] of walk(__dirname) { * if (dirent.isFile()) { * console.log(location); * } * } */ export async function* walk(directory, options = Object.create(null)) { const extensions = options?.extensions ?? null; const dirents = await fs.opendir(directory); for await (const dirent of dirents) { if (EXCLUDED_DIRECTORY.has(dirent.name)) { continue; } if (dirent.isFile()) { if (extensions !== null && !extensions.has(path.extname(dirent.name))) { continue; } yield [dirent, path.join(directory, dirent.name)]; } else if (dirent.isDirectory()) { const subDirectoryLocation = path.join(directory, dirent.name); yield [dirent, subDirectoryLocation]; yield* walk(subDirectoryLocation, options); } } } //# sourceMappingURL=walk.js.map