core/matchers/algorithm.matcher.ts
core/matchers/algorithm.matcher.ts is a file in GovLab Context. 27 lines of code and 9 definitions.
import type { Contract, ContractFilter } from "#types/algorithm.types";
const wanted = function wanted(value: string | undefined): string | null {
return typeof value === "string" && value.length > 0 ? value : null;
};
const matchesDomain = function matchesDomain(contract: Contract, filter: ContractFilter): boolean {
const domain = wanted(filter.domain);
return domain === null || contract.domain === domain;
};
const matchesForce = function matchesForce(contract: Contract, filter: ContractFilter): boolean {
const force = wanted(filter.force);
return force === null || contract.force.includes(force);
};
const matchesComposes = function matchesComposes(contract: Contract, filter: ContractFilter): boolean {
const composes = wanted(filter.composes);
return composes === null || contract.composes.includes(composes);
};
const matchesMeta = function matchesMeta(contract: Contract, filter: ContractFilter): boolean {
return typeof filter.meta !== "boolean" || Boolean(contract.meta) === filter.meta;
};
export const matchesContract = function matchesContract(contract: Contract, filter: ContractFilter): boolean {
return (
matchesDomain(contract, filter) &&
matchesForce(contract, filter) &&
matchesComposes(contract, filter) &&
matchesMeta(contract, filter)
);
};