function groupSpans()

in packages/rum-core/src/performance-monitoring/breakdown.js [97:134]


function groupSpans(transaction) {
  const spanMap = {}
  const transactionSelfTime = calculateSelfTime(transaction)
  /**
   * Add transaction self time as `app` in the breakdown
   */
  spanMap['app'] = {
    count: 1,
    duration: transactionSelfTime
  }

  const spans = transaction.spans
  for (let i = 0; i < spans.length; i++) {
    const span = spans[i]
    const duration = span.duration()
    if (duration === 0 || duration == null) {
      continue
    }
    const { type, subtype } = span
    /**
     * Ignore calculating truncated spans as separate types in breakdown
     */
    let key = type.replace(TRUNCATED_TYPE, '')
    if (subtype) {
      key += '.' + subtype
    }
    if (!spanMap[key]) {
      spanMap[key] = {
        duration: 0,
        count: 0
      }
    }
    spanMap[key].count++
    spanMap[key].duration += duration
  }

  return spanMap
}