configuration/constants/filter.constants.ts
configuration/constants/filter.constants.ts is a file in Bane's Lab Build Scripts. 70 lines of code and 5 definitions.
import { ALGO_FACE, ARCH_FACE, LEX_FACE } from "@govlab/constants";
import type { FacetField } from "#types/filter.types";
const TRUE = "true";
const FALSE = "false";
const idsOf = function idsOf(records: readonly { readonly id: string }[]): readonly string[] {
return records.map((record) => record.id);
};
export const KIND_FIELD = "kind";
export const FACET_FIELDS: readonly FacetField[] = [
{
collection: ARCH_FACE,
field: "type",
members: (context, value) => idsOf(context.arch.query({ type: value })),
values: (context) => context.arch.all().map((principle) => principle.type),
},
{
collection: ARCH_FACE,
field: "category",
members: (context, value) => idsOf(context.arch.query({ category: value })),
values: (context) => context.arch.all().map((principle) => principle.category),
},
{
collection: ARCH_FACE,
field: "severity",
members: (context, value) => idsOf(context.arch.query({ severity: value })),
values: (context) => context.arch.all().map((principle) => principle.severity),
},
{
collection: ARCH_FACE,
field: "scope",
members: (context, value) => idsOf(context.arch.query({ scope: value })),
values: (context) => context.arch.all().flatMap((principle) => principle.scope),
},
{
collection: LEX_FACE,
field: "kind",
members: (context, value) => idsOf(context.lex.query({ kind: value })),
values: (context) => context.lex.all().map((term) => term.kind),
},
{
collection: LEX_FACE,
field: "category",
members: (context, value) => idsOf(context.lex.query({ category: value })),
values: (context) => context.lex.all().map((term) => term.category),
},
{
collection: LEX_FACE,
field: "enforcedBy",
members: (context, value) => idsOf(context.lex.query({ enforcedBy: value })),
values: (context) => context.lex.all().flatMap((term) => term.enforcedBy),
},
{
collection: ALGO_FACE,
field: "domain",
members: (context, value) => idsOf(context.algo.query({ domain: value })),
values: (context) => context.algo.all().map((contract) => contract.domain),
},
{
collection: ALGO_FACE,
field: "force",
members: (context, value) => idsOf(context.algo.query({ force: value })),
values: (context) => context.algo.all().flatMap((contract) => contract.force),
},
{
collection: ALGO_FACE,
field: "meta",
members: (context, value) => idsOf(context.algo.query({ meta: value === TRUE })),
values: (context) => context.algo.all().map((contract) => (contract.meta === true ? TRUE : FALSE)),
},
];