diff --git a/src/v2/operation.ts b/src/v2/operation.ts index 431618d..a86268e 100644 --- a/src/v2/operation.ts +++ b/src/v2/operation.ts @@ -235,6 +235,7 @@ export class Operation implements PerformanceEntryLike { } let tracked = false + let shouldAddEvent = true let interrupted = false /** * the maximum time any given tracker has allotted to wait @@ -255,6 +256,9 @@ export class Operation implements PerformanceEntryLike { if (criteriaMatched) { tracked = true + if (trackerDefinition.keep === false) { + shouldAddEvent = false + } if (trackerDefinition.interruptWhenSeen) { interrupted = true } @@ -292,12 +296,14 @@ export class Operation implements PerformanceEntryLike { : this.startTime // TODO: calculate occurrence count during report generation - if (this.definition.keepOnlyExplicitlyTrackedEvents) { - if (tracked) { + if (shouldAddEvent) { + if (this.definition.keepOnlyExplicitlyTrackedEvents) { + if (tracked) { + this.events.push(event) + } + } else { this.events.push(event) } - } else { - this.events.push(event) } if (isOperationStartingEvent) { diff --git a/src/v2/types.ts b/src/v2/types.ts index 0738449..327bad1 100644 --- a/src/v2/types.ts +++ b/src/v2/types.ts @@ -116,6 +116,13 @@ export interface OperationDefinition { * Useful for events like errors. */ interruptWhenSeen?: boolean + + /** + * Indicates if events matching this tracker should be kept in the operation. + * Maybe used to filter out events that are not relevant to the operation. + * @default true + */ + keep?: boolean }[] /**