# core/loaders/lexicon.loader.ts

> 16 lines of code and 4 definitions.

Tree: GovLab Context
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/context#file-context-core-loaders-lexicon-loader-ts
Source text: https://banes-lab.com/source/context/core/loaders/lexicon.loader.ts.txt

Listed in [core/loaders](https://banes-lab.com/api/source/context/core/loaders.md), after [core/loaders/layer.loader.ts](https://banes-lab.com/source/context/core/loaders/layer.loader.ts.md) and before [core/loaders/ontology.loader.ts](https://banes-lab.com/source/context/core/loaders/ontology.loader.ts.md).

## Definitions

- `normalize` (lexical_declaration, line 13, exported)
- `loadTerms` (lexical_declaration, line 10, exported)
- `dir` (lexical_declaration, line 11, exported)
- `collectionCheck` (lexical_declaration, line 12, exported)

## Contained in

- [core/loaders](https://banes-lab.com/anatomy/context/folder-context-core-loaders.md)

## Uses

- [core/loaders/ontology.loader.ts](https://banes-lab.com/source/context/core/loaders/ontology.loader.ts.md)

## Used by

- [core/loaders/ontology.loader.ts](https://banes-lab.com/source/context/core/loaders/ontology.loader.ts.md)
- [core/normalizers/grammar.normalizer.ts](https://banes-lab.com/source/context/core/normalizers/grammar.normalizer.ts.md)
- [core/normalizers/reason.normalizer.ts](https://banes-lab.com/source/context/core/normalizers/reason.normalizer.ts.md)
- [core/stores/lexicon.store.ts](https://banes-lab.com/source/context/core/stores/lexicon.store.ts.md)

## Linked from

- [core/loaders](https://banes-lab.com/anatomy/context/folder-context-core-loaders.md)
- [core/normalizers](https://banes-lab.com/anatomy/context/folder-context-core-normalizers.md)
- [core/stores](https://banes-lab.com/anatomy/context/folder-context-core-stores.md)

## Source

```typescript
import type { Term, TermCategory } from "#types/lexicon.types";
import { foldCategories, loadCategories, readJsonFile } from "#core/loaders/ontology.loader";
import { COLLECTION_CHECK_FILE } from "#configuration/constants/lexicon.constants";
import type { ReadAudit } from "#core/observers/record.observer";
import { absolutePath } from "@ssot/paths";
import { asCheck } from "#core/converters/check.converter";
import { join } from "node:path";
import { termNormalizer } from "#core/normalizers/lexicon.normalizer";

export const loadTerms = function loadTerms(audit: ReadAudit, data?: TermCategory[]): Term[] {
    const dir = absolutePath("govlab.context.lexicon");
    const collectionCheck = readJsonFile(join(dir, COLLECTION_CHECK_FILE));
    const normalize = termNormalizer(asCheck(collectionCheck));
    return data
        ? foldCategories(data, normalize, audit)
        : loadCategories(dir, normalize, audit, { exclude: (name) => name === COLLECTION_CHECK_FILE });
};
```
