# core/coordinators/field.coordinator.ts

> 15 lines of code and 3 definitions.

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

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

## Definitions

- `feed` (lexical_declaration, line 5, exported)
- `assemble` (lexical_declaration, line 11, exported)
- `outputs` (lexical_declaration, line 12, exported)

## Contained in

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

## Uses

- [core/factories/node.factory.ts](https://banes-lab.com/source/patterns/core/factories/node.factory.ts.md)

## Used by

- [core/pipelines/record.pipeline.ts](https://banes-lab.com/source/patterns/core/pipelines/record.pipeline.ts.md)
- [core/pipelines/snapshot.pipeline.ts](https://banes-lab.com/source/patterns/core/pipelines/snapshot.pipeline.ts.md)

## Linked from

- [core/factories](https://banes-lab.com/anatomy/patterns/folder-patterns-core-factories.md)
- [core/pipelines](https://banes-lab.com/anatomy/patterns/folder-patterns-core-pipelines.md)

## Source

```typescript
import type { FieldAnalyzer } from "#core/analyzers/field.analyzer";
import type { FieldOutput } from "#types/record.types";
import { sourceNode } from "#core/factories/node.factory";

export const feed = function feed(analyzers: ReadonlyMap<string, FieldAnalyzer>, chunk: readonly unknown[]): void {
    for (const analyzer of analyzers.values()) {
        analyzer.update(chunk);
    }
};

export const assemble = function assemble(analyzers: ReadonlyMap<string, FieldAnalyzer>): FieldOutput {
    const outputs = [...analyzers.values()].map((analyzer) => analyzer.produce());
    return {
        findings: outputs.flatMap((output) => output.findings),
        nodes: [sourceNode(), ...outputs.flatMap((output) => output.nodes)],
    };
};
```
