UNPKG

@zendesk/react-measure-timing-hooks

Version:

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

70 lines (69 loc) 6.82 kB
import type { SpanAndAnnotation } from './spanAnnotationTypes'; import type { Attributes, SpanStatus, SpanType } from './spanTypes'; import type { DraftTraceContext, MapSchemaToTypes } from './types'; import type { UnionToIntersection } from './typeUtils'; export interface SpanMatcherTags { idleCheck?: boolean; continueWithErrorStatus?: boolean; requiredSpan?: boolean; } /** * Function type for matching performance entries. */ export interface SpanMatcherFn<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT, VariantsT extends string> extends SpanMatcherTags { (spanAndAnnotation: SpanAndAnnotation<RelationSchemasT>, context: DraftTraceContext<SelectedRelationNameT, RelationSchemasT, VariantsT>): boolean; } export type NameMatcher<RelationSchemaT> = string | RegExp | ((name: string, inputRelation: MapSchemaToTypes<RelationSchemaT> | undefined) => boolean); export interface SpanMatchDefinitionCombinator<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT, VariantsT extends string> { name?: NameMatcher<RelationSchemasT[SelectedRelationNameT]>; performanceEntryName?: NameMatcher<RelationSchemasT[SelectedRelationNameT]>; type?: SpanType; status?: SpanStatus; attributes?: Attributes; matchingRelations?: (keyof UnionToIntersection<RelationSchemasT[SelectedRelationNameT]>)[] | boolean; occurrence?: number | ((occurrence: number) => boolean); isIdle?: boolean; label?: string; fn?: SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; } export type SpanMatchDefinition<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT, VariantsT extends string> = SpanMatchDefinitionCombinator<SelectedRelationNameT, RelationSchemasT, VariantsT> | { oneOf: SpanMatchDefinition<SelectedRelationNameT, RelationSchemasT, VariantsT>[]; }; export type SpanMatch<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT, VariantsT extends string> = SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT> | SpanMatchDefinition<SelectedRelationNameT, RelationSchemasT, VariantsT>; /** * The common name of the span to match. Can be a string, RegExp, or function. */ export declare function withName<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(value: NameMatcher<RelationSchemasT[SelectedRelationNameT]>): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function withLabel<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(value: string): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; /** * The PerformanceEntry.name of the entry to match. Can be a string, RegExp, or function. */ export declare function withPerformanceEntryName<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(value: NameMatcher<RelationSchemasT[SelectedRelationNameT]>): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function withType<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(value: SpanType): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function withStatus<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(value: SpanStatus): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; /** * The subset of attributes (metadata) to match against the span. */ export declare function withAttributes<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT, const VariantsT extends string>(attrs: Attributes): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; /** * A list of keys of trace's relations to match against the span's. */ export declare function withMatchingRelations<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(keys?: NoInfer<keyof UnionToIntersection<RelationSchemasT[SelectedRelationNameT]>>[] | true): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; /** * The occurrence of the span with the same name within the operation. */ export declare function withOccurrence<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(value: number | ((occurrence: number) => boolean)): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function withComponentRenderCount<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(name: string, renderCount: number): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; /** * only applicable for component-lifecycle entries */ export declare function whenIdle<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(value?: boolean): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; /** * Only applicable for 'requiredSpans' list: it will opt-out of the default behavior, * which interrupts the trace if the requiredSpan has an error status. */ export declare function continueWithErrorStatus<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function withAllConditions<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(...matchers: SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>[]): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function withOneOfConditions<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(...matchers: SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>[]): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function not<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(matcher: SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; export declare function fromDefinition<const SelectedRelationNameT extends keyof RelationSchemasT, const RelationSchemasT, const VariantsT extends string>(definition: SpanMatchDefinition<SelectedRelationNameT, RelationSchemasT, VariantsT>): SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>;