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
}