core/loaders/concern.loader.ts

core/loaders/concern.loader.ts is a file in GovLab Quality. 18 lines of code and 6 definitions.

import type { EmitInputs } from "#types/config.types";
import { loadCanonicalData } from "#core/loaders/canon.loader";
import { loadGovlabConfig } from "#core/loaders/config.loader";
import { ownersInvalid } from "#configuration/strings/quality.strings";
import { validConcepts } from "#core/selectors/concept.selector";
import { validateConcerns } from "#core/validators/concern.validator";
import { validateOwnerOverride } from "#core/validators/surface.validator";

export const loadEmitInputs = async function loadEmitInputs(consumerRoot: string): Promise<EmitInputs> {
    const config = await loadGovlabConfig(consumerRoot);
    const concerns = validateConcerns(config.qualityMaster?.concerns ?? {}, validConcepts());
    const owners = config.qualityMaster?.owners;
    const conflicts = validateOwnerOverride(owners, loadCanonicalData());
    if (conflicts.length > 0) {
        const detail = conflicts.map((conflict) => `  - ${conflict.detail}`).join("\n");
        throw new Error(ownersInvalid(detail));
    }
    return { concerns, config, owners };
};