export function createTelemetryCounterHelper()

in src/shippers/elastic_v3/common/src/report_telemetry_counters.ts [17:48]


export function createTelemetryCounterHelper(telemetryCounter$: Subject<TelemetryCounter>, source: string) {
  /**
   * Triggers a telemetry counter for each event type.
   * @param events The events to trigger the telemetry counter for.
   * @param type The type of telemetry counter to trigger.
   * @param code The success or error code for additional detail about the result.
   * @param error The error that occurred, if any.
   */
  return (
    events: Event[],
    {
      type,
      code,
      error,
    }: {
      type?: TelemetryCounterType;
      code?: string;
      error?: Error;
    } = {}
  ) => {
    const eventTypeCounts = countEventTypes(events);
    Object.entries(eventTypeCounts).forEach(([eventType, count]) => {
      telemetryCounter$.next({
        source,
        type: type ?? (error ? 'failed' : 'succeeded'),
        code: code ?? error?.message ?? 'OK',
        count,
        event_type: eventType,
      });
    });
  };
}