core/resolvers/canon.resolver.ts

core/resolvers/canon.resolver.ts is a file in GovLab Quality. 16 lines of code and 5 definitions.

import { CONCEPT_PREFIX } from "#configuration/constants/canon.constants";
import { loadQualityData } from "#core/loaders/quality.loader";

export const buildCanonIndex = function buildCanonIndex(): Map<string, string[]> {
    const index = new Map<string, string[]>();
    for (const rule of loadQualityData().rules) {
        const refs = (rule.canonical ?? []).map((concept) => `${CONCEPT_PREFIX}${concept}`);
        if (refs.length > 0) {
            index.set(rule.ruleId, [...new Set([...(index.get(rule.ruleId) ?? []), ...refs])]);
        }
    }
    return index;
};

export const canonFor = function canonFor(ruleId: string, index: ReadonlyMap<string, string[]>): string[] {
    const bare = ruleId.slice(ruleId.lastIndexOf("/") + 1);
    return index.get(ruleId) ?? index.get(bare) ?? [];
};