# core/loaders/architecture.loader.ts

> 10 lines of code and 1 definition.

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

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

## Definitions

- `loadPrinciples` (lexical_declaration, line 7, exported)

## Contained in

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

## Uses

- [core/loaders/ontology.loader.ts](https://banes-lab.com/source/context/core/loaders/ontology.loader.ts.md)

## Used by

- [core/stores/architecture.store.ts](https://banes-lab.com/source/context/core/stores/architecture.store.ts.md)

## Linked from

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

## Source

```typescript
import type { Principle, PrincipleCategory } from "#types/architecture.types";
import { foldCategories, loadCategories } from "#core/loaders/ontology.loader";
import type { ReadAudit } from "#core/observers/record.observer";
import { absolutePath } from "@ssot/paths";
import { normalizePrinciple } from "#core/normalizers/architecture.normalizer";

export const loadPrinciples = function loadPrinciples(audit: ReadAudit, data?: PrincipleCategory[]): Principle[] {
    return data
        ? foldCategories(data, normalizePrinciple, audit)
        : loadCategories(absolutePath("govlab.context.principles"), normalizePrinciple, audit);
};
```
