core/loaders/algorithm.loader.ts
core/loaders/algorithm.loader.ts is a file in GovLab Context. 24 lines of code and 4 definitions.
import type { Contract, ContractCategory, SymbolEntry } from "#types/algorithm.types";
import { foldCategories, loadCategories, readJsonFile } from "#core/loaders/ontology.loader";
import type { ReadAudit } from "#core/observers/record.observer";
import { SYMBOLS_KEY } from "#configuration/constants/algorithm.constants";
import { absolutePath } from "@ssot/paths";
import { isObject } from "#core/predicates/record.predicate";
import { normalizeContract } from "#core/normalizers/algorithm.normalizer";
export const loadContracts = function loadContracts(audit: ReadAudit, data?: ContractCategory[]): Contract[] {
return data
? foldCategories(data, normalizeContract, audit)
: loadCategories(absolutePath("govlab.context.algorithms"), normalizeContract, audit);
};
const asSymbolEntries = function asSymbolEntries(value: unknown): SymbolEntry[] {
if (!isObject(value) || !Array.isArray(value[SYMBOLS_KEY])) {
return [];
}
return value[SYMBOLS_KEY].filter((entry): entry is SymbolEntry => isObject(entry));
};
export const symbolsPath = function symbolsPath(): string {
return absolutePath("govlab.context.symbols");
};
export const loadBundledSymbols = function loadBundledSymbols(): SymbolEntry[] {
return asSymbolEntries(readJsonFile(symbolsPath()));
};