next.js/packages/next/src/trace/report/index.ts
index.ts29 lines760 B
import type { TraceEvent } from '../types'
import reportToTelemetry from './to-telemetry'
import reportToJson from './to-json'
import reportToJsonBuild from './to-json-build'
import type { Reporter } from './types'

class MultiReporter implements Reporter {
  private reporters: Reporter[] = []

  constructor(reporters: Reporter[]) {
    this.reporters = reporters
  }

  async flushAll(opts?: { end: boolean }) {
    await Promise.all(this.reporters.map((reporter) => reporter.flushAll(opts)))
  }

  report(event: TraceEvent) {
    this.reporters.forEach((reporter) => reporter.report(event))
  }
}

// JSON is always reported to allow for diagnostics
export const reporter = new MultiReporter([
  reportToJson,
  reportToJsonBuild,
  reportToTelemetry,
])
Quest for Codev2.0.0
/
SIGN IN