UNPKG

@zendesk/react-measure-timing-hooks

Version:

react hooks for measuring time to interactive and time to render of components

57 lines (53 loc) 1.83 kB
/* eslint-disable @typescript-eslint/consistent-indexed-object-style */ import type { Span } from './spanTypes' import type { NonTerminalTraceStates } from './Trace' export interface SpanAnnotation { /** * The ID of the operation the event belongs to. */ id: string /** * The occurrence of the span with the same name within the operation. * Usually 1 (first span) */ occurrence: number /** * Offset from the start of the operation to the start of the event. * aka operationStartOffset or operationStartToEventStart */ operationRelativeStartTime: number /** * Relative end time of the event within the operation. */ operationRelativeEndTime: number /** * The state the event was recorded in. */ recordedInState: NonTerminalTraceStates /** * If true, this is the first required span after having met all the required span criteria of the operation. * e.g. if the operation requires 3 spans, this will be true for that 3rd span. */ markedRequirementsMet?: boolean /** * After all the required span criteria are met, and we completed debouncing. * If true, this is the last span of the operation (before page interactive capturing). * This span is used to calculate the duration of the entire trace. */ markedComplete?: boolean /** * If true, this is the span was used to calculate the point at which the page became interactive. */ markedPageInteractive?: boolean /** * Labels for the span based on label definitions from the Tracer. Empty if the span didn't match any of the label match definitions. */ labels: string[] } export interface SpanAnnotationRecord { [operationName: string]: SpanAnnotation } export interface SpanAndAnnotation<RelationSchemasT> { span: Span<RelationSchemasT> annotation: SpanAnnotation }