blob: 6302921477c94c7f0c2a5fc03872e1567cab6925 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import type { MetricsEventRecorder } from '@jet/engine';
import type { LintedMetricsEvent } from '@jet/environment/types/metrics';
import type { Opt } from '@jet/environment/types/optional';
export class CompositeEventRecorder implements MetricsEventRecorder {
constructor(private readonly eventRecorders: MetricsEventRecorder[]) {}
record(event: LintedMetricsEvent, topic: Opt<string>): void {
for (const eventRecorder of this.eventRecorders) {
eventRecorder.record(event, topic);
}
}
async flush(): Promise<number> {
const flushed: number[] = await Promise.all(
this.eventRecorders.map((recorder) => recorder.flush()),
);
return Math.max(...flushed);
}
}
|