# core/loaders/knob.loader.ts

> 35 lines of code and 8 definitions.

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

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

## Definitions

- `toKnobConcept` (lexical_declaration, line 22)
- `loadKnobConcepts` (lexical_declaration, line 34, exported)
- `CONCEPT_KNOB_FILE` (lexical_declaration, line 7)
- `toKnob` (lexical_declaration, line 9)
- `{ fidelity, fixed, knob, provenance, variant }` (lexical_declaration, line 11)
- `record` (lexical_declaration, line 23)
- `tools` (lexical_declaration, line 24)
- `parsed` (lexical_declaration, line 35, exported)

## Contained in

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

## Uses

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

## Linked from

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

## Source

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

const CONCEPT_KNOB_FILE = "knob.concept.data.json";

const toKnob = function toKnob(value: unknown): ConceptKnob {
    const record = isRecord(value) ? value : {};
    const { fidelity, fixed, knob, provenance, variant } = record;
    return {
        default: record["default"],
        fidelity: typeof fidelity === "string" ? fidelity : null,
        knob: typeof knob === "string" ? knob : null,
        ...(typeof provenance === "string" ? { provenance } : {}),
        ...(typeof fixed === "boolean" ? { fixed } : {}),
        ...(typeof variant === "string" ? { variant } : {}),
    };
};

const toKnobConcept = function toKnobConcept(value: unknown): KnobConcept {
    const record = isRecord(value) ? value : {};
    const tools = Object.fromEntries(
        Object.entries(recordAt(record, "tools")).map(([tool, knob]) => [tool, toKnob(knob)]),
    );
    return {
        tools,
        valueType: stringField(record, "valueType"),
        ...(record["enum"] === undefined ? {} : { enum: record["enum"] }),
    };
};

export const loadKnobConcepts = function loadKnobConcepts(): Record<string, KnobConcept> {
    const parsed = jsonRecord(readFileSync(absolutePath("govlab.quality.data", CONCEPT_KNOB_FILE), "utf8"));
    return Object.fromEntries(
        Object.entries(recordAt(parsed, "concepts")).map(([id, value]) => [id, toKnobConcept(value)]),
    );
};
```
