# runtime/entrypoints/seed.entrypoint.ts

> 38 lines of code and 6 definitions.

Tree: Build tree
Language: typescript
Layer: runtime
Canonical: https://banes-lab.com/anatomy/build#file-build-runtime-entrypoints-seed-entrypoint-ts
Source text: https://banes-lab.com/assets/sources/source.8cc98a301f3e462e8dd249e61805f2ec1649abeb41486354d13d6d6356990ee4.generated.txt

## Definitions

- `words` (lexical_declaration, line 22)
- `faces` (lexical_declaration, line 27)
- `seeds` (lexical_declaration, line 28)
- `duplicates` (lexical_declaration, line 29)
- `report` (lexical_declaration, line 34)
- `target` (lexical_declaration, line 38)

## Source

```typescript
import {
    DUPLICATE_SEED_IDS,
    INCOMPLETE_SEED,
    INCOMPLETE_SUFFIX,
    MISSING_FIELDS,
    SEEDS_SUFFIX,
    SLOT_WORDS_MISSING,
    WROTE,
} from "#configuration/strings/derivation.strings";
import { algoSeeds, reportOf } from "#core/converters/lesson.converter";
import { loadFaces, readModelTemplate, readModels, readOperatorProfile, seedsTarget } from "#core/loaders/seed.loader";
import { modelSeeds, slotWordsOf } from "#core/converters/invariant.converter";
import { refuse, say } from "#core/reporters/derivation.reporter";
import { SEED_COMMAND } from "#configuration/constants/contract.constants";
import { SEED_SUMMARY } from "#configuration/strings/contract.strings";
import { persistJson } from "#core/persistence/report.persistence";
import { profileSeeds } from "#core/converters/principle.converter";
import { resolveArgv } from "@govlab/argv";

resolveArgv({ command: SEED_COMMAND, flags: [], summary: SEED_SUMMARY });

const words = slotWordsOf(readModelTemplate());
if (words === null) {
    refuse(SLOT_WORDS_MISSING);
}

const faces = loadFaces();
const seeds = [...algoSeeds(faces), ...modelSeeds(readModels(), words), ...profileSeeds(readOperatorProfile().text)];
const duplicates = seeds.map((seed) => seed.id).filter((id, index, ids) => ids.indexOf(id) !== index);
if (duplicates.length > 0) {
    refuse(`${DUPLICATE_SEED_IDS}${duplicates.join(", ")}`);
}

const report = reportOf(seeds);
for (const incomplete of report.incomplete) {
    say(`${INCOMPLETE_SEED}${incomplete.id}${MISSING_FIELDS}${incomplete.missing.join(", ")}`);
}
const target = seedsTarget();
await persistJson(target, report);
say(
    `${WROTE}${target}: ${String(report.seeds.length)}${SEEDS_SUFFIX}${String(report.incomplete.length)}${INCOMPLETE_SUFFIX}`,
);
```
