core/registries/producer.registry.ts

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

import type { CatalogProducer } from "#types/catalog.types";
import { duplicateProducer } from "#configuration/strings/catalog.strings";

const PRODUCERS = new Map<string, CatalogProducer>();

export const defineProducer = function defineProducer(producer: CatalogProducer): CatalogProducer {
    if (PRODUCERS.has(producer.name)) {
        throw new Error(duplicateProducer(producer.name));
    }
    PRODUCERS.set(producer.name, producer);
    return producer;
};

export const registeredProducers = function registeredProducers(): CatalogProducer[] {
    return [...PRODUCERS.values()].toSorted((a, b) => a.name.localeCompare(b.name));
};