/** * Pass #32: serial-await (category: performance) * * Detects sequential `await` expressions in JavaScript/TypeScript where the * two awaited operations have no data dependency — they could be parallelised * with `Promise.all()`. * * Detection strategy: * 1. Per function (group lines by enclosing method via `graph.methodAtLine()`), * scan lines in order for `await` patterns. * 2. For consecutive pairs `(line1, line2)`: * a. Find the DFG def created at `line1` (if any) — this is the result * variable bound to the first await. * b. Check whether that variable name appears verbatim in the source * line at `line2`. * c. Also check whether any def on `line2` appears in `line1`'s source. * d. If neither direction has a textual dependency: the two awaits are * independent. * 3. If a function has ≥ 2 independent consecutive awaits: emit one finding * per function at the first independent pair's line. * * Languages: JavaScript and TypeScript only. */ import type { AnalysisPass, PassContext } from '../../graph/analysis-pass.js'; export interface SerialAwaitResult { serialAwaits: Array<{ functionLine: number; firstAwaitLine: number; secondAwaitLine: number; }>; } export declare class SerialAwaitPass implements AnalysisPass { readonly name = "serial-await"; readonly category: "performance"; run(ctx: PassContext): SerialAwaitResult; } //# sourceMappingURL=serial-await-pass.d.ts.map