core/loaders/nginx.loader.ts

core/loaders/nginx.loader.ts is a file in Project Scripts. 17 lines of code and 3 definitions.

import { ROOT, absolutePath } from "@ssot/paths";
import { extname, join, relative } from "node:path";
import { readFileSync, readdirSync } from "node:fs";
import { CONFIG_EXTENSIONS } from "#configuration/constants/nginx.constants";
import type { ConfigFile } from "#types/nginx.types";
import { normalizePath } from "@ssot/govlab/shared/resolvers/anchor.resolver.ts";

const filesUnder = function filesUnder(folder: string): string[] {
    return readdirSync(folder, { withFileTypes: true }).flatMap((entry) => {
        const full = join(folder, entry.name);
        return entry.isDirectory() ? filesUnder(full) : [full];
    });
};

export const serverConfigFiles = function serverConfigFiles(): ConfigFile[] {
    return filesUnder(absolutePath("app.nginx"))
        .filter((file) => CONFIG_EXTENSIONS.has(extname(file)))
        .map((file) => ({ path: normalizePath(relative(ROOT, file)), text: readFileSync(file, "utf8") }));
};