core/pipelines/record.pipeline.ts
core/pipelines/record.pipeline.ts is a file in GovLab Patterns. 17 lines of code and 5 definitions.
import type { AnalyzeOptions, AnalyzeReport, AnalyzeResult } from "#types/record.types";
import { assemble, feed } from "#core/coordinators/field.coordinator";
import { buildAnalyzers } from "#core/factories/field.factory";
import { detectSchema } from "#core/analyzers/schema.analyzer";
import { graphOf } from "#core/factories/graph.factory";
import { inferMapping } from "#core/resolvers/representation.resolver";
import { toReport } from "#core/converters/report.converter";
export const analyze = function analyze(records: readonly unknown[], options: AnalyzeOptions = {}): AnalyzeResult {
const schema = detectSchema(records, options.floatFields);
const analyzers = buildAnalyzers(options.mapping ?? inferMapping(schema));
feed(analyzers, records);
const { nodes, findings } = assemble(analyzers);
return { findings, graph: graphOf(nodes), schema };
};
export const report = function report(records: readonly unknown[], options: AnalyzeOptions = {}): AnalyzeReport {
return toReport(records.length, analyze(records, options));
};