core/coordinators/field.coordinator.ts

core/coordinators/field.coordinator.ts is a file in GovLab Patterns. 15 lines of code and 3 definitions.

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)],
    };
};