# core/loaders/catalog.loader.ts

> 58 lines of code and 5 definitions.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-loaders-catalog-loader-ts
Source text: https://banes-lab.com/source/build-scripts/core/loaders/catalog.loader.ts.txt

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

## Definitions

- `load` (lexical_declaration, line 4)
- `loadWebModules` (lexical_declaration, line 11, exported)
- `[analyzer, anatomy, company, corpus, evidence, folder, learning, links]` (lexical_declaration, line 12, exported)
- `[markup, matcher, ontology, reference, search, searchConstants, source, vocabulary]` (lexical_declaration, line 22, exported)
- `[anatomyConstants, anatomyIds, definition, evidenceConstants]` (lexical_declaration, line 32, exported)

## Contained in

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

## Source

```typescript
import type { ModuleImporter, WebModules } from "#types/loader.types";
import { RUNNER_MODULES } from "#configuration/constants/loader.constants";

const load = async function load<Key extends keyof WebModules>(
    runner: ModuleImporter,
    key: Key,
): Promise<WebModules[Key]> {
    return runner.import<WebModules[Key]>(RUNNER_MODULES[key].path);
};

export const loadWebModules = async function loadWebModules(runner: ModuleImporter): Promise<WebModules> {
    const [analyzer, anatomy, company, corpus, evidence, folder, learning, links] = await Promise.all([
        load(runner, "analyzer"),
        load(runner, "anatomy"),
        load(runner, "company"),
        load(runner, "corpus"),
        load(runner, "evidence"),
        load(runner, "folder"),
        load(runner, "learning"),
        load(runner, "links"),
    ]);
    const [markup, matcher, ontology, reference, search, searchConstants, source, vocabulary] = await Promise.all([
        load(runner, "markup"),
        load(runner, "matcher"),
        load(runner, "ontology"),
        load(runner, "reference"),
        load(runner, "search"),
        load(runner, "searchConstants"),
        load(runner, "source"),
        load(runner, "vocabulary"),
    ]);
    const [anatomyConstants, anatomyIds, definition, evidenceConstants] = await Promise.all([
        load(runner, "anatomyConstants"),
        load(runner, "anatomyIds"),
        load(runner, "definition"),
        load(runner, "evidenceConstants"),
    ]);
    return {
        analyzer,
        anatomy,
        anatomyConstants,
        anatomyIds,
        company,
        corpus,
        definition,
        evidence,
        evidenceConstants,
        folder,
        learning,
        links,
        markup,
        matcher,
        ontology,
        reference,
        search,
        searchConstants,
        source,
        vocabulary,
    };
};
```
