# core/coordinators/system.coordinator.ts

> 27 lines of code and 6 definitions.

Tree: GovLab Docs
Language: typescript
Layer: application
Canonical: https://banes-lab.com/anatomy/docs#file-docs-core-coordinators-system-coordinator-ts
Source text: https://banes-lab.com/source/docs/core/coordinators/system.coordinator.ts.txt

Listed in [core/coordinators](https://banes-lab.com/api/source/docs/core/coordinators.md), after [core/coordinators/markdown.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/markdown.coordinator.ts.md) and before [core/coordinators/template.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/template.coordinator.ts.md).

## Definitions

- `runSystem` (lexical_declaration, line 22, exported)
- `renderSystem` (lexical_declaration, line 12)
- `doc` (lexical_declaration, line 13)
- `markdown` (lexical_declaration, line 14)
- `[first]` (lexical_declaration, line 15)
- `healed` (lexical_declaration, line 23, exported)

## Contained in

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

## Uses

- [configuration/strings/system.strings.ts](https://banes-lab.com/source/docs/configuration/strings/system.strings.ts.md)
- [core/reporters/base.reporter.ts](https://banes-lab.com/source/docs/core/reporters/base.reporter.ts.md)

## Linked from

- [configuration/strings](https://banes-lab.com/anatomy/docs/folder-docs-configuration-strings.md)
- [core/reporters](https://banes-lab.com/anatomy/docs/folder-docs-core-reporters.md)

## Source

```typescript
import { systemHardening, systemRegenerated, systemUpToDate, systemWrote } from "#configuration/strings/system.strings";
import type { OutputTarget } from "#types/document.output.types";
import { buildSystemModel } from "#core/loaders/system.loader";
import { healFile } from "#core/persistence/document.persistence";
import { mermaidHardening } from "#core/analyzers/diagram.analyzer";
import { print } from "#core/reporters/base.reporter";
import { readTextSafe } from "#core/loaders/base.loader";
import { renderDeclaredDoc } from "#core/formatters/document.formatter";
import { stampGenerated } from "@govlab/canonical-write";
import { systemDoc } from "#core/converters/system.converter";

const renderSystem = function renderSystem(target: OutputTarget): string {
    const doc = systemDoc(buildSystemModel());
    const markdown = stampGenerated(renderDeclaredDoc(doc), readTextSafe(target.path) ?? "", new Date());
    const [first] = mermaidHardening(markdown);
    if (first !== undefined) {
        throw new Error(systemHardening(target.rel, first.code, first.detail, first.line));
    }
    return markdown;
};

export const runSystem = function runSystem(check: boolean, target: OutputTarget): void {
    const healed = healFile(target.path, renderSystem(target));
    if (check) {
        print(healed ? systemRegenerated(target.rel) : systemUpToDate(target.rel));
        return;
    }
    print(systemWrote(target.rel));
};
```
