# core/pipelines/record.pipeline.ts

> 17 lines of code and 5 definitions.

Tree: GovLab Patterns
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/patterns#file-patterns-core-pipelines-record-pipeline-ts
Source text: https://banes-lab.com/source/patterns/core/pipelines/record.pipeline.ts.txt

Listed in [core/pipelines](https://banes-lab.com/api/source/patterns/core/pipelines.md), before [core/pipelines/snapshot.pipeline.ts](https://banes-lab.com/source/patterns/core/pipelines/snapshot.pipeline.ts.md).

## Definitions

- `analyze` (lexical_declaration, line 9, exported)
- `report` (lexical_declaration, line 17, exported)
- `schema` (lexical_declaration, line 10, exported)
- `analyzers` (lexical_declaration, line 11, exported)
- `{ nodes, findings }` (lexical_declaration, line 13, exported)

## Contained in

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

## Uses

- [core/converters/report.converter.ts](https://banes-lab.com/source/patterns/core/converters/report.converter.ts.md)
- [core/coordinators/field.coordinator.ts](https://banes-lab.com/source/patterns/core/coordinators/field.coordinator.ts.md)
- [core/factories/graph.factory.ts](https://banes-lab.com/source/patterns/core/factories/graph.factory.ts.md)

## Linked from

- [core/converters](https://banes-lab.com/anatomy/patterns/folder-patterns-core-converters.md)
- [core/coordinators](https://banes-lab.com/anatomy/patterns/folder-patterns-core-coordinators.md)
- [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 { 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));
};
```
