# core/loaders/concept.loader.ts

> 32 lines of code and 7 definitions.

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

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

## Definitions

- `loadExemplars` (lexical_declaration, line 35, exported)
- `CONCEPT_FILE` (lexical_declaration, line 7)
- `EXEMPLAR_FILE` (lexical_declaration, line 8)
- `readData` (lexical_declaration, line 10)
- `toDefinition` (lexical_declaration, line 14)
- `loadConceptDefinitions` (lexical_declaration, line 30, exported)
- `raw` (lexical_declaration, line 31, exported)

## Contained in

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

## Uses

- [core/parsers/record.parser.ts](https://banes-lab.com/source/quality/core/parsers/record.parser.ts.md)

## Linked from

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

## Source

```typescript
import { isRecord, stringArrayField, stringField } from "#core/selectors/record.selector";
import type { ConceptDefinition } from "#types/concept.types";
import { absolutePath } from "@ssot/paths";
import { jsonRecord } from "#core/parsers/record.parser";
import { readFileSync } from "node:fs";

const CONCEPT_FILE = "concept.data.json";
const EXEMPLAR_FILE = "exemplar.data.json";

const readData = function readData(file: string): unknown {
    return JSON.parse(readFileSync(absolutePath("govlab.quality.data", file), "utf8"));
};

const toDefinition = function toDefinition(value: unknown): ConceptDefinition[] {
    if (!isRecord(value)) {
        return [];
    }
    return [
        {
            cwe: stringArrayField(value, "cwe"),
            dimension: stringField(value, "dimension"),
            exclude: stringArrayField(value, "exclude"),
            id: stringField(value, "id"),
            phrases: stringArrayField(value, "phrases"),
            words: stringArrayField(value, "words"),
        },
    ];
};

export const loadConceptDefinitions = function loadConceptDefinitions(): ConceptDefinition[] {
    const raw = readData(CONCEPT_FILE);
    return Array.isArray(raw) ? raw.flatMap(toDefinition) : [];
};

export const loadExemplars = function loadExemplars(): Record<string, unknown> {
    return jsonRecord(readFileSync(absolutePath("govlab.quality.data", EXEMPLAR_FILE), "utf8"));
};
```
