function transformPoints()

in packages/opentelemetry-cloud-monitoring-exporter/src/transform.ts [170:227]


function transformPoints(
  metric: MetricData,
  metricPrefix: string
): {point: Point; metric: Metric}[] {
  switch (metric.dataPointType) {
    case DataPointType.SUM:
    case DataPointType.GAUGE:
      return metric.dataPoints.map(dataPoint => ({
        metric: transformMetric(dataPoint, metric.descriptor, metricPrefix),
        point: {
          value: transformNumberValue(
            metric.descriptor.valueType,
            dataPoint.value
          ),
          interval: {
            // Add start time for non-gauge points
            ...(metric.dataPointType === DataPointType.SUM && metric.isMonotonic
              ? {
                  startTime: new PreciseDate(dataPoint.startTime).toISOString(),
                }
              : null),
            endTime: new PreciseDate(dataPoint.endTime).toISOString(),
          },
        },
      }));
    case DataPointType.HISTOGRAM:
      return metric.dataPoints.map(dataPoint => ({
        metric: transformMetric(dataPoint, metric.descriptor, metricPrefix),
        point: {
          value: transformHistogramValue(dataPoint.value),
          interval: {
            startTime: new PreciseDate(dataPoint.startTime).toISOString(),
            endTime: new PreciseDate(dataPoint.endTime).toISOString(),
          },
        },
      }));
    case DataPointType.EXPONENTIAL_HISTOGRAM:
      return metric.dataPoints.map(dataPoint => ({
        metric: transformMetric(dataPoint, metric.descriptor, metricPrefix),
        point: {
          value: transformExponentialHistogramValue(dataPoint.value),
          interval: {
            startTime: new PreciseDate(dataPoint.startTime).toISOString(),
            endTime: new PreciseDate(dataPoint.endTime).toISOString(),
          },
        },
      }));
    default:
      exhaust(metric);
      diag.info(
        'Encountered unexpected dataPointType=%s, dropping %s points',
        (metric as MetricData).dataPointType,
        (metric as MetricData).dataPoints.length
      );
      break;
  }
  return [];
}