core/loaders/coordination.loader.ts

core/loaders/coordination.loader.ts is a file in Bane's Lab Build Scripts. 19 lines of code and 7 definitions.

import { existsSync, readFileSync } from "node:fs";
import { join } from "node:path";

const MANIFEST = "package.json";
const FILES_KEY = "files";

const listedFiles = function listedFiles(parsed: unknown): string[] {
    if (typeof parsed !== "object" || parsed === null || !(FILES_KEY in parsed)) {
        return [];
    }
    const listed: unknown = parsed[FILES_KEY];
    return Array.isArray(listed) ? listed.filter((entry): entry is string => typeof entry === "string") : [];
};

export const shippedEntries = function shippedEntries(member: string): string[] {
    const manifest = join(member, MANIFEST);
    if (!existsSync(manifest)) {
        return [];
    }
    const parsed: unknown = JSON.parse(readFileSync(manifest, "utf8"));
    return [MANIFEST, ...listedFiles(parsed)];
};