UNPKG

@lou.codes/test

Version:

✅ Equality test with enforced readability

33 lines (32 loc) 1.27 kB
import { readdir, stat } from "node:fs/promises"; /** * Recursively search for files in the given directory and yields every file. If * a file path is passed initially, that file is shielded directly. * * @category File System * @example * ```typescript * getFiles("./tests/"); // ["./tests/lou.test.ts"] * ``` * @param fileOrDirectory Directory to get files from. * @yields Files recursively found in the given directory. */ export const getFilePaths = async function* (fileOrDirectory) { const fileOrDirectoryURL = new URL(fileOrDirectory.href); // eslint-disable-next-line functional/no-conditional-statements if ((await stat(fileOrDirectoryURL)).isDirectory()) { // eslint-disable-next-line functional/no-loop-statements for (const dirent of await readdir(fileOrDirectoryURL, { withFileTypes: true, })) { // eslint-disable-next-line @typescript-eslint/no-unused-expressions dirent.isDirectory() ? yield* getFilePaths(new URL(`${dirent.name}/`, fileOrDirectoryURL)) : yield new URL(dirent.name, fileOrDirectoryURL); } // eslint-disable-next-line functional/no-conditional-statements } else { yield fileOrDirectory; } };