FieldProcessingChain class exported ✓ 100.0%
Last updated: 2026-03-01T23:25:47.106Z
Metrics
LOC: 55
Complexity: 3
Params: 0
Coverage: 100.0% (18/18 lines, 0x executed)
Signature
class FieldProcessingChain
Source Code
export class FieldProcessingChain {
private _classifiers: FieldClassifier[] = [];
// ── Classify ─────────────────────────────────────────────────────────────────
/**
* Classifiers to run in order — each one is a named, injectable step.
* The first classifier that returns a confident result wins.
* Chrome AI (detectAsync) is called only in runAsync / stream.
*
* Each call to classify() REPLACES the previous list (no appending).
*/
classify(...classifiers: FieldClassifier[]): this {
this._classifiers = classifiers;
return this;
}
// ── Helper ───────────────────────────────────────────────────────────────────
private applyResult(field: FormField, result: PipelineResult): void {
field.fieldType = result.type;
field.detectionMethod = result.method;
field.detectionConfidence = result.confidence;
field.detectionDurationMs = result.durationMs;
field.timings = result.timings;
field.predictions = result.predictions;
field.decisionTrace = result.decisionTrace;
}
// ── Execution modes ──────────────────────────────────────────────────────────
/**
* Async run — awaits every classifier (including Chrome AI) per field,
* then returns all fields at once.
*/
async runAsync(fields: FormField[]): Promise<FormField[]> {
const pipeline = new DetectionPipeline(this._classifiers);
for (const field of fields) {
this.applyResult(field, await pipeline.runAsync(field));
}
return fields;
}
/**
* Streaming run — yields each FormField immediately after it is classified.
* Enables real-time UI updates while classification is still in progress.
*/
async *stream(fields: FormField[]): AsyncGenerator<FormField> {
const pipeline = new DetectionPipeline(this._classifiers);
for (const field of fields) {
this.applyResult(field, await pipeline.runAsync(field));
yield field;
}
}
}
Members
| Name | Kind | Visibility | Status | Signature |
|---|---|---|---|---|
| classify | method | - | classify(...classifiers: FieldClassifier[]): : this | |
| applyResult | method | private | - | applyResult(field: FormField, result: PipelineResult): : void |
| runAsync | method | - | runAsync(fields: FormField[]): : Promise<FormField[]> | |
| stream | method | - | stream(fields: FormField[]): : AsyncGenerator<FormField> |
Dependencies (Outgoing)
| Target | Type |
|---|---|
| FormField | uses |
| DetectionPipeline | uses |
| FieldClassifier | uses |
| PipelineResult | uses |
Impact (Incoming)
| Source | Type |
|---|---|
| getActiveClassifiers | uses |
| buildClassificationChain | instantiates |
| createField | uses |