core/loaders/metric.loader.ts
core/loaders/metric.loader.ts is a file in Bane's Lab Build Scripts. 19 lines of code and 7 definitions.
import type { MetricSnapshot } from "#types/metric.types";
import { NO_METRIC_GROUPS } from "#configuration/strings/metric.strings";
import { isRecord } from "#core/selectors/base.selector";
const ONTOLOGY_MODULE = "@banes-lab/web/core/generated/ontology.generated.ts";
const ONTOLOGY_EXPORT = "ONTOLOGY";
const isGroupList = function isGroupList(value: unknown): boolean {
return Array.isArray(value) && value.every(isRecord);
};
const isMetricSnapshot = function isMetricSnapshot(value: unknown): value is MetricSnapshot {
return isRecord(value) && isGroupList(value["principles"]) && isGroupList(value["terms"]);
};
export const loadMetricSnapshot = async function loadMetricSnapshot(): Promise<MetricSnapshot> {
const loaded: unknown = await import(ONTOLOGY_MODULE);
const ontology = isRecord(loaded) ? loaded[ONTOLOGY_EXPORT] : null;
if (!isMetricSnapshot(ontology)) {
throw new TypeError(NO_METRIC_GROUPS);
}
return ontology;
};