@nodesecure/fs-walk
Version:
Modern FileSystem (fs) utilities to lazy walk directories Asynchronously (but also Synchronously)
36 lines • 1.19 kB
JavaScript
// 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