core/registries/validation.registry.ts

core/registries/validation.registry.ts is a file in GovLab Quality. 13 lines of code and 3 definitions.

import type { ProjectValidator } from "#types/validation.types";
import { duplicateValidator } from "#configuration/strings/validation.strings";

const VALIDATORS = new Map<string, ProjectValidator>();

export const defineValidator = function defineValidator(validator: ProjectValidator): ProjectValidator {
    if (VALIDATORS.has(validator.id)) {
        throw new Error(duplicateValidator(validator.id));
    }
    VALIDATORS.set(validator.id, validator);
    return validator;
};

export const registeredValidators = function registeredValidators(): ProjectValidator[] {
    return [...VALIDATORS.values()].toSorted((a, b) => a.id.localeCompare(b.id));
};