core/loaders/registry.loader.ts
core/loaders/registry.loader.ts is a file in GovLab Stats. 24 lines of code and 5 definitions.
import { arrayField, field, stringField } from "#core/selectors/field.selector";
import { DISPOSITION } from "#configuration/constants/rule.constants";
import type { RegistryCounts } from "#types/rule.types";
import path from "node:path";
import { readJson } from "#core/loaders/data.loader";
import { relativePath } from "@ssot/paths";
export const readRegistry = function readRegistry(root: string): RegistryCounts {
const registry = readJson(path.join(root, relativePath("govlab.quality.data.registry")));
const records = arrayField(registry, "records");
const nonPlugin = records.filter((record) => field(record, "isPlugin") !== true);
const withDisposition = function withDisposition(name: string): unknown[] {
return nonPlugin.filter((record) => stringField(record, "disposition") === name);
};
return {
advisory: withDisposition(DISPOSITION.advisory).length,
excluded: withDisposition(DISPOSITION.excluded).length,
fullGate: withDisposition(DISPOSITION.fullGate).map((record) => ({
ecosystem: stringField(record, "ecosystem"),
tool: stringField(record, "tool"),
})),
plugins: records.length - nonPlugin.length,
selectable: withDisposition(DISPOSITION.selectable).length,
};
};