core/loaders/folder.loader.ts

core/loaders/folder.loader.ts is a file in GovLab Stats. 18 lines of code and 4 definitions.

import { type Dirent, existsSync, readdirSync, statSync } from "node:fs";
import type { PathExclusion } from "@govlab/quality/config";
import { join } from "node:path";

export const readdirSafe = function readdirSafe(dir: string): Dirent[] {
    return existsSync(dir) && statSync(dir).isDirectory() ? readdirSync(dir, { withFileTypes: true }) : [];
};

export const readdirOrNull = function readdirOrNull(dir: string): Dirent[] | null {
    return existsSync(dir) && statSync(dir).isDirectory() ? readdirSync(dir, { withFileTypes: true }) : null;
};

export const walkFiles = function walkFiles(absDir: string, ignore: PathExclusion): string[] {
    return readdirSafe(absDir).flatMap((entry) => {
        const abs = join(absDir, entry.name);
        if (entry.isDirectory()) {
            return ignore(abs) ? [] : walkFiles(abs, ignore);
        }
        return entry.isFile() ? [abs] : [];
    });
};