UNPKG

@zendesk/retrace

Version:

define and capture Product Operation Traces along with computed metrics with an optional friendly React beacon API

41 lines (40 loc) 3.48 kB
import type { SpanMatcherFn } from './matchSpan'; import type { SpanAndAnnotation } from './spanAnnotationTypes'; import type { OnEnterStatePayload } from './Trace'; import type { DraftTraceContext, RelationSchemasBase, TraceDefinitionModifications } from './types'; export interface AddSpanToRecordingEvent<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT extends RelationSchemasBase<RelationSchemasT>, VariantsT extends string> { spanAndAnnotation: SpanAndAnnotation<RelationSchemasT>; traceContext: DraftTraceContext<SelectedRelationNameT, RelationSchemasT, VariantsT>; } export interface DefinitionModifiedEvent<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT extends RelationSchemasBase<RelationSchemasT>, VariantsT extends string> { modifications: TraceDefinitionModifications<SelectedRelationNameT, RelationSchemasT, VariantsT>; traceContext: DraftTraceContext<SelectedRelationNameT, RelationSchemasT, VariantsT>; } export interface TraceStartEvent<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT extends RelationSchemasBase<RelationSchemasT>, VariantsT extends string> { traceContext: DraftTraceContext<SelectedRelationNameT, RelationSchemasT, VariantsT>; } export interface StateTransitionEvent<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT extends RelationSchemasBase<RelationSchemasT>, VariantsT extends string> { traceContext: DraftTraceContext<SelectedRelationNameT, RelationSchemasT, VariantsT>; stateTransition: OnEnterStatePayload<RelationSchemasT>; } export interface RequiredSpanSeenEvent<SelectedRelationNameT extends keyof RelationSchemasT, RelationSchemasT extends RelationSchemasBase<RelationSchemasT>, VariantsT extends string> { traceContext: DraftTraceContext<SelectedRelationNameT, RelationSchemasT, VariantsT>; spanAndAnnotation: SpanAndAnnotation<RelationSchemasT>; matcher: SpanMatcherFn<SelectedRelationNameT, RelationSchemasT, VariantsT>; } export type AllPossibleTraceStartEvents<RelationSchemasT extends RelationSchemasBase<RelationSchemasT>> = { [SelectedRelationNameT in keyof RelationSchemasT]: TraceStartEvent<SelectedRelationNameT, RelationSchemasT, string>; }[keyof RelationSchemasT]; export type AllPossibleStateTransitionEvents<RelationSchemasT extends RelationSchemasBase<RelationSchemasT>> = { [SelectedRelationNameT in keyof RelationSchemasT]: StateTransitionEvent<SelectedRelationNameT, RelationSchemasT, string>; }[keyof RelationSchemasT]; export type AllPossibleRequiredSpanSeenEvents<RelationSchemasT extends RelationSchemasBase<RelationSchemasT>> = { [SelectedRelationNameT in keyof RelationSchemasT]: RequiredSpanSeenEvent<SelectedRelationNameT, RelationSchemasT, string>; }[keyof RelationSchemasT]; export type AllPossibleAddSpanToRecordingEvents<RelationSchemasT extends RelationSchemasBase<RelationSchemasT>> = { [SelectedRelationNameT in keyof RelationSchemasT]: AddSpanToRecordingEvent<SelectedRelationNameT, RelationSchemasT, string>; }[keyof RelationSchemasT]; export type AllPossibleDefinitionModifiedEvents<RelationSchemasT extends RelationSchemasBase<RelationSchemasT>> = { [SelectedRelationNameT in keyof RelationSchemasT]: DefinitionModifiedEvent<SelectedRelationNameT, RelationSchemasT, string>; }[keyof RelationSchemasT]; export type DebugEventType = 'trace-start' | 'state-transition' | 'required-span-seen' | 'add-span-to-recording' | 'definition-modified';