Files
apps.apple.com/shared/metrics-8/src/recorder/composite.ts
2025-11-04 05:03:50 +08:00

21 lines
744 B
TypeScript

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);
}
}