# core/loaders/kind.loader.ts

> 14 lines of code and 4 definitions.

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

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

## Definitions

- `KIND_FILE` (lexical_declaration, line 6)
- `loadKindMap` (lexical_declaration, line 8, exported)
- `text` (lexical_declaration, line 9, exported)
- `kinds` (lexical_declaration, line 10, exported)

## Contained in

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

## Source

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

const KIND_FILE = "kind.data.json";

export const loadKindMap = function loadKindMap(): ReadonlyMap<string, string> {
    const text = readFileSync(absolutePath("govlab.quality.data", KIND_FILE), "utf8");
    const kinds = recordAt(jsonRecord(text), "kinds");
    return new Map(
        Object.keys(kinds).flatMap((kind) =>
            stringArrayField(kinds, kind).map((label): [string, string] => [label, kind]),
        ),
    );
};
```
