Skip to content

Commit 6dd966f

Browse files
committed
fix: use the term 'relationSchema' and fix remaining types
1 parent 8b2d8f7 commit 6dd966f

26 files changed

+412
-424
lines changed

src/stories/mockComponentsv3/App.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,26 @@ const ticketOperationTracer = traceManager.createTracer({
3030
requiredSpans: [
3131
{
3232
name: 'TicketView',
33-
withTraceRelations: ['ticketId'],
33+
matchingRelations: ['ticketId'],
3434
type: 'component-render',
3535
isIdle: true,
3636
},
3737
],
38-
relations: 'ticket',
38+
relationSchemaName: 'ticket',
3939
variants: {
4040
click: { timeout: 45_000 },
4141
},
4242
// debounceWindow: 1_000,
4343
debounceOnSpans: [
4444
{
4545
name: 'TicketView',
46-
withTraceRelations: ['ticketId'],
46+
matchingRelations: ['ticketId'],
4747
},
4848
],
4949
interruptOnSpans: [
5050
{
5151
name: 'TicketView',
52-
withTraceRelations: ['ticketId'],
52+
matchingRelations: ['ticketId'],
5353
type: 'component-unmount',
5454
},
5555
],

src/v3/Trace.ts

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,11 @@ export type Transition<RelationSchemasT> = DistributiveOmit<
104104
type FinalizeFn<RelationSchemaT> = (config: FinalState<RelationSchemaT>) => void
105105

106106
export type States<
107-
SelectedRelationKeyT extends keyof RelationSchemasT,
107+
SelectedRelationNameT extends keyof RelationSchemasT,
108108
RelationSchemasT,
109109
VariantsT extends string,
110110
> = TraceStateMachine<
111-
SelectedRelationKeyT,
111+
SelectedRelationNameT,
112112
RelationSchemasT,
113113
VariantsT
114114
>['states']
@@ -129,11 +129,11 @@ type StatesBase<RelationSchemasT> = Record<
129129
>
130130

131131
interface TraceStateMachineSideEffectHandlers<
132-
SelectedRelationKeyT extends keyof RelationSchemasT,
132+
SelectedRelationNameT extends keyof RelationSchemasT,
133133
RelationSchemasT,
134134
> {
135135
readonly storeFinalizeState: FinalizeFn<
136-
RelationSchemasT[SelectedRelationKeyT]
136+
RelationSchemasT[SelectedRelationNameT]
137137
>
138138
readonly addSpanToRecording: (
139139
spanAndAnnotation: SpanAndAnnotation<RelationSchemasT>,
@@ -148,26 +148,30 @@ type EntryType<RelationSchemasT> = PerformanceEntryLike & {
148148
}
149149

150150
interface StateMachineContext<
151-
SelectedRelationKeyT extends keyof RelationSchemasT,
151+
SelectedRelationNameT extends keyof RelationSchemasT,
152152
RelationSchemasT,
153153
VariantsT extends string,
154-
> extends DraftTraceContext<SelectedRelationKeyT, RelationSchemasT, VariantsT> {
154+
> extends DraftTraceContext<
155+
SelectedRelationNameT,
156+
RelationSchemasT,
157+
VariantsT
158+
> {
155159
sideEffectFns: TraceStateMachineSideEffectHandlers<
156-
SelectedRelationKeyT,
160+
SelectedRelationNameT,
157161
RelationSchemasT
158162
>
159163
}
160164

161165
type DeadlineType = 'global' | 'debounce' | 'interactive' | 'next-quiet-window'
162166

163167
export class TraceStateMachine<
164-
SelectedRelationKeyT extends keyof RelationSchemasT,
168+
SelectedRelationNameT extends keyof RelationSchemasT,
165169
RelationSchemasT,
166170
const VariantsT extends string,
167171
> {
168172
constructor(
169173
context: StateMachineContext<
170-
SelectedRelationKeyT,
174+
SelectedRelationNameT,
171175
RelationSchemasT,
172176
VariantsT
173177
>,
@@ -182,7 +186,7 @@ export class TraceStateMachine<
182186
readonly requiredSpansIndexChecklist: Set<number>
183187

184188
readonly context: StateMachineContext<
185-
SelectedRelationKeyT,
189+
SelectedRelationNameT,
186190
RelationSchemasT,
187191
VariantsT
188192
>
@@ -856,21 +860,21 @@ export class TraceStateMachine<
856860
*/
857861
emit<
858862
EventName extends keyof StateHandlerPayloads<
859-
SelectedRelationKeyT,
863+
SelectedRelationNameT,
860864
RelationSchemasT,
861865
VariantsT
862866
>,
863867
>(
864868
event: EventName,
865869
payload: StateHandlerPayloads<
866-
SelectedRelationKeyT,
870+
SelectedRelationNameT,
867871
RelationSchemasT,
868872
VariantsT
869873
>[EventName],
870874
): OnEnterStatePayload<RelationSchemasT> | undefined {
871875
const currentStateHandlers = this.states[this.currentState] as Partial<
872876
MergedStateHandlerMethods<
873-
SelectedRelationKeyT,
877+
SelectedRelationNameT,
874878
RelationSchemasT,
875879
VariantsT
876880
>
@@ -895,42 +899,46 @@ interface PrepareAndEmitRecordingOptions<RelationSchemasT> {
895899
}
896900

897901
export class Trace<
898-
const SelectedRelationKeyT extends keyof RelationSchemasT,
902+
const SelectedRelationNameT extends keyof RelationSchemasT,
899903
const RelationSchemasT,
900904
const VariantsT extends string,
901905
> {
902906
readonly sourceDefinition: CompleteTraceDefinition<
903-
SelectedRelationKeyT,
907+
SelectedRelationNameT,
904908
RelationSchemasT,
905909
VariantsT
906910
>
907911
/** the final, mutable definition of this specific trace */
908912
definition: CompleteTraceDefinition<
909-
SelectedRelationKeyT,
913+
SelectedRelationNameT,
910914
RelationSchemasT,
911915
VariantsT
912916
>
913917
get activeInput(): ActiveTraceConfig<
914-
SelectedRelationKeyT,
918+
SelectedRelationNameT,
915919
RelationSchemasT,
916920
VariantsT
917921
> {
918922
if (!this.input.relatedTo) {
919923
throw new Error("Tried to access active trace's input without relatedTo")
920924
}
921925
return this.input as ActiveTraceConfig<
922-
SelectedRelationKeyT,
926+
SelectedRelationNameT,
923927
RelationSchemasT,
924928
VariantsT
925929
>
926930
}
927931
set activeInput(
928-
value: ActiveTraceConfig<SelectedRelationKeyT, RelationSchemasT, VariantsT>,
932+
value: ActiveTraceConfig<
933+
SelectedRelationNameT,
934+
RelationSchemasT,
935+
VariantsT
936+
>,
929937
) {
930938
this.input = value
931939
}
932940

933-
input: DraftTraceInput<RelationSchemasT[SelectedRelationKeyT], VariantsT>
941+
input: DraftTraceInput<RelationSchemasT[SelectedRelationNameT], VariantsT>
934942
private readonly traceUtilities: TraceManagerUtilities<RelationSchemasT>
935943

936944
get isDraft() {
@@ -939,7 +947,7 @@ export class Trace<
939947

940948
recordedItems: Set<SpanAndAnnotation<RelationSchemasT>> = new Set()
941949
stateMachine: TraceStateMachine<
942-
SelectedRelationKeyT,
950+
SelectedRelationNameT,
943951
RelationSchemasT,
944952
VariantsT
945953
>
@@ -949,15 +957,15 @@ export class Trace<
949957
SpanAndAnnotation<RelationSchemasT>
950958
> = new WeakMap()
951959

952-
finalState: FinalState<RelationSchemasT[SelectedRelationKeyT]> | undefined
960+
finalState: FinalState<RelationSchemasT[SelectedRelationNameT]> | undefined
953961

954962
constructor(
955963
definition: CompleteTraceDefinition<
956-
SelectedRelationKeyT,
964+
SelectedRelationNameT,
957965
RelationSchemasT,
958966
VariantsT
959967
>,
960-
input: DraftTraceInput<RelationSchemasT[SelectedRelationKeyT], VariantsT>,
968+
input: DraftTraceInput<RelationSchemasT[SelectedRelationNameT], VariantsT>,
961969
traceUtilities: TraceManagerUtilities<RelationSchemasT>,
962970
) {
963971
// Verify that the variant value is valid
@@ -976,8 +984,8 @@ export class Trace<
976984
this.definition = {
977985
name: definition.name,
978986
type: definition.type,
979-
relations: definition.relations,
980-
selectedRelationSchema: definition.selectedRelationSchema,
987+
relationSchemaName: definition.relationSchemaName,
988+
relationSchema: definition.relationSchema,
981989

982990
variants: { ...definition.variants },
983991

@@ -1016,7 +1024,7 @@ export class Trace<
10161024
}
10171025

10181026
sideEffectFns: TraceStateMachineSideEffectHandlers<
1019-
SelectedRelationKeyT,
1027+
SelectedRelationNameT,
10201028
RelationSchemasT
10211029
> = {
10221030
storeFinalizeState: (config) => {
@@ -1069,13 +1077,13 @@ export class Trace<
10691077
}
10701078

10711079
onEnd(
1072-
traceRecording: TraceRecording<SelectedRelationKeyT, RelationSchemasT>,
1080+
traceRecording: TraceRecording<SelectedRelationNameT, RelationSchemasT>,
10731081
): void {
10741082
// @ts-expect-error TS isn't smart enough to disambiguate this situation yet; maybe in the future this will work OOTB
10751083
this.traceUtilities.cleanupCurrentTrace(this)
10761084
;(
10771085
this.traceUtilities.reportFn as SingleTraceReportFn<
1078-
SelectedRelationKeyT,
1086+
SelectedRelationNameT,
10791087
RelationSchemasT,
10801088
VariantsT
10811089
>
@@ -1089,7 +1097,7 @@ export class Trace<
10891097

10901098
transitionDraftToActive(
10911099
inputAndDefinitionModifications: TraceModifications<
1092-
SelectedRelationKeyT,
1100+
SelectedRelationNameT,
10931101
RelationSchemasT,
10941102
VariantsT
10951103
>,
@@ -1116,20 +1124,20 @@ export class Trace<
11161124
*/
11171125
private applyDefinitionModifications(
11181126
definitionModifications: TraceModificationsBase<
1119-
SelectedRelationKeyT,
1127+
SelectedRelationNameT,
11201128
RelationSchemasT,
11211129
VariantsT
11221130
>,
11231131
) {
11241132
const { definition } = this
11251133
const additionalRequiredSpans = convertMatchersToFns<
1126-
SelectedRelationKeyT,
1134+
SelectedRelationNameT,
11271135
RelationSchemasT,
11281136
VariantsT
11291137
>(definitionModifications.additionalRequiredSpans)
11301138

11311139
const additionalDebounceOnSpans = convertMatchersToFns<
1132-
SelectedRelationKeyT,
1140+
SelectedRelationNameT,
11331141
RelationSchemasT,
11341142
VariantsT
11351143
>(definitionModifications.additionalDebounceOnSpans)

src/v3/TraceManager.test.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ describe('TraceManager', () => {
5151
const tracer = traceManager.createTracer({
5252
name: 'ticket.basic-operation',
5353
type: 'operation',
54-
relations: 'ticket',
54+
relationSchemaName: 'ticket',
5555
requiredSpans: [{ name: 'end' }],
5656
variants: {
5757
cold_boot: { timeout: DEFAULT_COLDBOOT_TIMEOUT_DURATION },
@@ -98,7 +98,7 @@ describe('TraceManager', () => {
9898
const tracer = traceManager.createTracer({
9999
name: 'ticket.computed-span-operation',
100100
type: 'operation',
101-
relations: 'ticket',
101+
relationSchemaName: 'ticket',
102102
requiredSpans: [{ name: 'end' }],
103103
variants: {
104104
cold_boot: { timeout: DEFAULT_COLDBOOT_TIMEOUT_DURATION },
@@ -158,7 +158,7 @@ describe('TraceManager', () => {
158158
const tracer = traceManager.createTracer({
159159
name: 'ticket.computed-value-operation',
160160
type: 'operation',
161-
relations: 'ticket',
161+
relationSchemaName: 'ticket',
162162
requiredSpans: [{ name: 'end' }],
163163
variants: {
164164
cold_boot: { timeout: DEFAULT_COLDBOOT_TIMEOUT_DURATION },
@@ -218,7 +218,7 @@ describe('TraceManager', () => {
218218
const tracer = traceManager.createTracer({
219219
name: 'ticket.computedRenderBeaconSpans',
220220
type: 'operation',
221-
relations: 'ticket',
221+
relationSchemaName: 'ticket',
222222
requiredSpans: [{ name: 'Component', isIdle: true }],
223223
variants: {
224224
cold_boot: { timeout: DEFAULT_COLDBOOT_TIMEOUT_DURATION },
@@ -278,8 +278,8 @@ describe('TraceManager', () => {
278278
const tracer = traceManager.createTracer({
279279
name: 'ticket.relatedTo-operation',
280280
type: 'operation',
281-
relations: 'ticket',
282-
requiredSpans: [{ name: 'end', withTraceRelations: true }],
281+
relationSchemaName: 'ticket',
282+
requiredSpans: [{ name: 'end', matchingRelations: true }],
283283
variants: {
284284
cold_boot: { timeout: DEFAULT_COLDBOOT_TIMEOUT_DURATION },
285285
},
@@ -330,7 +330,7 @@ describe('TraceManager', () => {
330330
const tracer = traceManager.createTracer({
331331
name: 'ticket.operation',
332332
type: 'operation',
333-
relations: 'ticket',
333+
relationSchemaName: 'ticket',
334334
requiredSpans: [{ name: 'end' }],
335335
debounceOnSpans: [{ name: 'debounce' }],
336336
variants: {
@@ -381,7 +381,7 @@ describe('TraceManager', () => {
381381
const tracer = traceManager.createTracer({
382382
name: 'ticket.debounce-operation',
383383
type: 'operation',
384-
relations: 'ticket',
384+
relationSchemaName: 'ticket',
385385
requiredSpans: [matchSpan.withName('end')],
386386
debounceOnSpans: [
387387
matchSpan.withName((n: string) => n.endsWith('debounce')),
@@ -438,7 +438,7 @@ describe('TraceManager', () => {
438438
const tracer = traceManager.createTracer({
439439
name: 'ticket.interrupt-on-basic-operation',
440440
type: 'operation',
441-
relations: 'ticket',
441+
relationSchemaName: 'ticket',
442442
requiredSpans: [matchSpan.withName('end')],
443443
interruptOnSpans: [matchSpan.withName('interrupt')],
444444
variants: {
@@ -490,7 +490,7 @@ describe('TraceManager', () => {
490490
const tracer = traceManager.createTracer({
491491
name: 'ticket.interrupt-itself-operation',
492492
type: 'operation',
493-
relations: 'ticket',
493+
relationSchemaName: 'ticket',
494494
requiredSpans: [{ name: 'end' }],
495495
debounceOnSpans: [{ name: 'debounce' }],
496496
variants: {
@@ -551,7 +551,7 @@ describe('TraceManager', () => {
551551
const tracer = traceManager.createTracer({
552552
name: 'ticket.interrupt-on-basic-operation',
553553
type: 'operation',
554-
relations: 'ticket',
554+
relationSchemaName: 'ticket',
555555
requiredSpans: [{ name: 'end', isIdle: true }],
556556
debounceOnSpans: [{ name: 'end' }],
557557
variants: {
@@ -605,7 +605,7 @@ describe('TraceManager', () => {
605605
const tracer = traceManager.createTracer({
606606
name: 'ticket.timeout-operation',
607607
type: 'operation',
608-
relations: 'ticket',
608+
relationSchemaName: 'ticket',
609609
requiredSpans: [{ name: 'timed-out-render' }],
610610
variants: { cold_boot: { timeout: 500 } },
611611
})
@@ -664,7 +664,7 @@ describe('TraceManager', () => {
664664
const tracer = traceManager.createTracer({
665665
name: 'ticket.timeout-operation',
666666
type: 'operation',
667-
relations: 'ticket',
667+
relationSchemaName: 'ticket',
668668
requiredSpans: [{ name: 'timed-out-render' }],
669669
variants: {
670670
cold_boot: { timeout: CUSTOM_TIMEOUT_DURATION },
@@ -721,7 +721,7 @@ describe('TraceManager', () => {
721721
const tracer = traceManager.createTracer({
722722
name: 'ticket.timeout-operation',
723723
type: 'operation',
724-
relations: 'ticket',
724+
relationSchemaName: 'ticket',
725725
requiredSpans: [{ name: 'end' }],
726726
debounceOnSpans: [{ name: 'debounce' }],
727727
variants: {

0 commit comments

Comments
 (0)