# core/converters/reason.index.converter.ts

> 50 lines of code and 3 definitions.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-reason-index-converter-ts
Source text: https://banes-lab.com/source/build-scripts/core/converters/reason.index.converter.ts.txt

Listed in [core/converters](https://banes-lab.com/api/source/build-scripts/core/converters.md), after [core/converters/reason.converter.ts](https://banes-lab.com/source/build-scripts/core/converters/reason.converter.ts.md) and before [core/converters/reason.loop.converter.ts](https://banes-lab.com/source/build-scripts/core/converters/reason.loop.converter.ts.md).

## Definitions

- `reasonIndexOf` (lexical_declaration, line 22, exported)
- `{ reason }` (lexical_declaration, line 25, exported)
- `collections` (lexical_declaration, line 26, exported)

## Contained in

- [core/converters](https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-converters.md)

## Source

```typescript
import {
    AXIS_KIND,
    DIMENSION_KIND,
    INVARIANT_KIND,
    LENS_KIND,
    LOOP_KIND,
    MATH_DOMAIN_KIND,
    MATH_TYPE_KIND,
    MODEL_KIND,
    MODE_KIND,
    NODE_KIND,
    PATTERN_TYPE_KIND,
    REASON_LAYER_KIND,
    REPRESENTATION_KIND,
    SUBSTRATE_NODE_KIND,
    TECHNIQUE_KIND,
    TEST_SURFACE_KIND,
    UNIVERSAL_AXIS_KIND,
} from "#configuration/constants/ontology.constants";
import type { GovlabContext } from "@govlab/context";

export const reasonIndexOf = function reasonIndexOf(
    context: GovlabContext,
): ReadonlyMap<string, ReadonlyMap<string, string>> {
    const { reason } = context;
    const collections: readonly [string, readonly { readonly id: string; readonly label?: string }[]][] = [
        [LOOP_KIND, [reason.derivationLoop()]],
        [NODE_KIND, reason.nodes()],
        [AXIS_KIND, reason.axes()],
        [REASON_LAYER_KIND, reason.layers()],
        [MATH_TYPE_KIND, reason.mathTypes()],
        [SUBSTRATE_NODE_KIND, reason.substrate().nodes],
        [DIMENSION_KIND, reason.dimensions()],
        [LENS_KIND, reason.lenses()],
        [MODE_KIND, reason.modes()],
        [REPRESENTATION_KIND, reason.representations()],
        [MATH_DOMAIN_KIND, reason.mathDomains()],
        [PATTERN_TYPE_KIND, reason.patternTypes()],
        [MODEL_KIND, reason.models()],
        [UNIVERSAL_AXIS_KIND, reason.universalAxes()],
        [TEST_SURFACE_KIND, reason.testSurfaces()],
        [TECHNIQUE_KIND, reason.techniques()],
        [INVARIANT_KIND, reason.invariants()],
    ];
    return new Map(
        collections.map(([kind, records]) => [
            kind,
            new Map(records.map((record) => [record.id, record.label ?? record.id])),
        ]),
    );
};
```
