dd-trace
Version:
Datadog APM tracing client for JavaScript
37 lines (32 loc) • 902 B
JavaScript
function contains (rangeContainer, rangeContained) {
if (rangeContainer.start > rangeContained.start) {
return false
}
return rangeContainer.end >= rangeContained.end
}
function intersects (rangeA, rangeB) {
return rangeB.start < rangeA.end && rangeB.end > rangeA.start
}
function remove (range, rangeToRemove) {
if (!intersects(range, rangeToRemove)) {
return [range]
} else if (contains(rangeToRemove, range)) {
return []
}
const result = []
if (rangeToRemove.start > range.start) {
const offset = rangeToRemove.start - range.start
result.push({ start: range.start, end: range.start + offset })
}
if (rangeToRemove.end < range.end) {
const offset = range.end - rangeToRemove.end
result.push({ start: rangeToRemove.end, end: rangeToRemove.end + offset })
}
return result
}
module.exports = {
contains,
intersects,
remove,
}