Skip to content

Commit d0346ff

Browse files
committed
better typing
1 parent b7d225a commit d0346ff

File tree

1 file changed

+53
-50
lines changed
  • packages/react-devtools-shared/src/backend

1 file changed

+53
-50
lines changed

packages/react-devtools-shared/src/backend/agent.js

Lines changed: 53 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -58,43 +58,43 @@ const debug = (methodName, ...args) => {
5858

5959
type ElementAndRendererID = {|
6060
id: number,
61-
rendererID: number,
61+
rendererID: RendererID,
6262
|};
6363

6464
type StoreAsGlobalParams = {|
6565
count: number,
6666
id: number,
6767
path: Array<string | number>,
68-
rendererID: number,
68+
rendererID: RendererID,
6969
|};
7070

7171
type CopyElementParams = {|
7272
id: number,
7373
path: Array<string | number>,
74-
rendererID: number,
74+
rendererID: RendererID,
7575
|};
7676

7777
type InspectElementParams = {|
7878
forceFullData: boolean,
7979
id: number,
8080
path: Array<string | number> | null,
81-
rendererID: number,
81+
rendererID: RendererID,
8282
requestID: number,
8383
|};
8484

8585
type OverrideHookParams = {|
8686
id: number,
8787
hookID: number,
8888
path: Array<string | number>,
89-
rendererID: number,
89+
rendererID: RendererID,
9090
wasForwarded?: boolean,
9191
value: any,
9292
|};
9393

9494
type SetInParams = {|
9595
id: number,
9696
path: Array<string | number>,
97-
rendererID: number,
97+
rendererID: RendererID,
9898
wasForwarded?: boolean,
9999
value: any,
100100
|};
@@ -106,7 +106,7 @@ type DeletePathParams = {|
106106
hookID?: ?number,
107107
id: number,
108108
path: Array<string | number>,
109-
rendererID: number,
109+
rendererID: RendererID,
110110
|};
111111

112112
type RenamePathParams = {|
@@ -115,32 +115,32 @@ type RenamePathParams = {|
115115
id: number,
116116
oldPath: Array<string | number>,
117117
newPath: Array<string | number>,
118-
rendererID: number,
118+
rendererID: RendererID,
119119
|};
120120

121121
type OverrideValueAtPathParams = {|
122122
type: PathType,
123123
hookID?: ?number,
124124
id: number,
125125
path: Array<string | number>,
126-
rendererID: number,
126+
rendererID: RendererID,
127127
value: any,
128128
|};
129129

130130
type OverrideErrorParams = {|
131131
id: number,
132-
rendererID: number,
132+
rendererID: RendererID,
133133
forceError: boolean,
134134
|};
135135

136136
type OverrideSuspenseParams = {|
137137
id: number,
138-
rendererID: number,
138+
rendererID: RendererID,
139139
forceFallback: boolean,
140140
|};
141141

142142
type PersistedSelection = {|
143-
rendererID: number,
143+
rendererID: RendererID,
144144
path: Array<PathFrame>,
145145
|};
146146

@@ -153,7 +153,7 @@ export default class Agent extends EventEmitter<{|
153153
_bridge: BackendBridge;
154154
_isProfiling: boolean = false;
155155
_recordChangeDescriptions: boolean = false;
156-
_rendererInterfaces: {[key: RendererID]: RendererInterface, ...} = {};
156+
_rendererInterfaces: Map<RendererID, RendererInterface> = new Map();
157157
_persistedSelection: PersistedSelection | null = null;
158158
_persistedSelectionMatch: PathMatch | null = null;
159159
_traceUpdatesEnabled: boolean = false;
@@ -256,7 +256,7 @@ export default class Agent extends EventEmitter<{|
256256
}
257257

258258
clearErrorsAndWarnings = ({rendererID}: {|rendererID: RendererID|}) => {
259-
const renderer = this._rendererInterfaces[rendererID];
259+
const renderer = this._rendererInterfaces.get(rendererID);
260260
if (renderer == null) {
261261
console.warn(`Invalid renderer id "${rendererID}"`);
262262
} else {
@@ -265,7 +265,7 @@ export default class Agent extends EventEmitter<{|
265265
};
266266

267267
clearErrorsForFiberID = ({id, rendererID}: ElementAndRendererID) => {
268-
const renderer = this._rendererInterfaces[rendererID];
268+
const renderer = this._rendererInterfaces.get(rendererID);
269269
if (renderer == null) {
270270
console.warn(`Invalid renderer id "${rendererID}"`);
271271
} else {
@@ -274,7 +274,7 @@ export default class Agent extends EventEmitter<{|
274274
};
275275

276276
clearWarningsForFiberID = ({id, rendererID}: ElementAndRendererID) => {
277-
const renderer = this._rendererInterfaces[rendererID];
277+
const renderer = this._rendererInterfaces.get(rendererID);
278278
if (renderer == null) {
279279
console.warn(`Invalid renderer id "${rendererID}"`);
280280
} else {
@@ -283,7 +283,7 @@ export default class Agent extends EventEmitter<{|
283283
};
284284

285285
copyElementPath = ({id, path, rendererID}: CopyElementParams) => {
286-
const renderer = this._rendererInterfaces[rendererID];
286+
const renderer = this._rendererInterfaces.get(rendererID);
287287
if (renderer == null) {
288288
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
289289
} else {
@@ -292,7 +292,7 @@ export default class Agent extends EventEmitter<{|
292292
};
293293

294294
deletePath = ({hookID, id, path, rendererID, type}: DeletePathParams) => {
295-
const renderer = this._rendererInterfaces[rendererID];
295+
const renderer = this._rendererInterfaces.get(rendererID);
296296
if (renderer == null) {
297297
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
298298
} else {
@@ -304,7 +304,7 @@ export default class Agent extends EventEmitter<{|
304304
id,
305305
rendererID,
306306
}: ElementAndRendererID): InstanceAndStyle | null {
307-
const renderer = this._rendererInterfaces[rendererID];
307+
const renderer = this._rendererInterfaces.get(rendererID);
308308
if (renderer == null) {
309309
console.warn(`Invalid renderer id "${rendererID}"`);
310310
return null;
@@ -339,20 +339,20 @@ export default class Agent extends EventEmitter<{|
339339
};
340340

341341
getProfilingData = ({rendererID}: {|rendererID: RendererID|}) => {
342-
const renderer = this._rendererInterfaces[rendererID];
342+
const renderer = this._rendererInterfaces.get(rendererID);
343343
if (renderer == null) {
344344
console.warn(`Invalid renderer id "${rendererID}"`);
345+
} else {
346+
this._bridge.send('profilingData', renderer.getProfilingData());
345347
}
346-
347-
this._bridge.send('profilingData', renderer.getProfilingData());
348348
};
349349

350350
getProfilingStatus = () => {
351351
this._bridge.send('profilingStatus', this._isProfiling);
352352
};
353353

354354
getOwnersList = ({id, rendererID}: ElementAndRendererID) => {
355-
const renderer = this._rendererInterfaces[rendererID];
355+
const renderer = this._rendererInterfaces.get(rendererID);
356356
if (renderer == null) {
357357
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
358358
} else {
@@ -368,7 +368,7 @@ export default class Agent extends EventEmitter<{|
368368
rendererID,
369369
requestID,
370370
}: InspectElementParams) => {
371-
const renderer = this._rendererInterfaces[rendererID];
371+
const renderer = this._rendererInterfaces.get(rendererID);
372372
if (renderer == null) {
373373
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
374374
} else {
@@ -398,7 +398,7 @@ export default class Agent extends EventEmitter<{|
398398
};
399399

400400
logElementToConsole = ({id, rendererID}: ElementAndRendererID) => {
401-
const renderer = this._rendererInterfaces[rendererID];
401+
const renderer = this._rendererInterfaces.get(rendererID);
402402
if (renderer == null) {
403403
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
404404
} else {
@@ -407,7 +407,7 @@ export default class Agent extends EventEmitter<{|
407407
};
408408

409409
overrideError = ({id, rendererID, forceError}: OverrideErrorParams) => {
410-
const renderer = this._rendererInterfaces[rendererID];
410+
const renderer = this._rendererInterfaces.get(rendererID);
411411
if (renderer == null) {
412412
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
413413
} else {
@@ -420,7 +420,7 @@ export default class Agent extends EventEmitter<{|
420420
rendererID,
421421
forceFallback,
422422
}: OverrideSuspenseParams) => {
423-
const renderer = this._rendererInterfaces[rendererID];
423+
const renderer = this._rendererInterfaces.get(rendererID);
424424
if (renderer == null) {
425425
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
426426
} else {
@@ -436,7 +436,7 @@ export default class Agent extends EventEmitter<{|
436436
type,
437437
value,
438438
}: OverrideValueAtPathParams) => {
439-
const renderer = this._rendererInterfaces[rendererID];
439+
const renderer = this._rendererInterfaces.get(rendererID);
440440
if (renderer == null) {
441441
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
442442
} else {
@@ -554,7 +554,7 @@ export default class Agent extends EventEmitter<{|
554554
rendererID,
555555
type,
556556
}: RenamePathParams) => {
557-
const renderer = this._rendererInterfaces[rendererID];
557+
const renderer = this._rendererInterfaces.get(rendererID);
558558
if (renderer == null) {
559559
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
560560
} else {
@@ -573,7 +573,7 @@ export default class Agent extends EventEmitter<{|
573573
rendererID: RendererID,
574574
rendererInterface: RendererInterface,
575575
) {
576-
this._rendererInterfaces[rendererID] = rendererInterface;
576+
this._rendererInterfaces.set(rendererID, rendererInterface);
577577

578578
if (this._isProfiling) {
579579
rendererInterface.startProfiling(this._recordChangeDescriptions);
@@ -641,7 +641,7 @@ export default class Agent extends EventEmitter<{|
641641
};
642642

643643
storeAsGlobal = ({count, id, path, rendererID}: StoreAsGlobalParams) => {
644-
const renderer = this._rendererInterfaces[rendererID];
644+
const renderer = this._rendererInterfaces.get(rendererID);
645645
if (renderer == null) {
646646
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
647647
} else {
@@ -685,7 +685,7 @@ export default class Agent extends EventEmitter<{|
685685
};
686686

687687
viewAttributeSource = ({id, path, rendererID}: CopyElementParams) => {
688-
const renderer = this._rendererInterfaces[rendererID];
688+
const renderer = this._rendererInterfaces.get(rendererID);
689689
if (renderer == null) {
690690
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
691691
} else {
@@ -694,7 +694,7 @@ export default class Agent extends EventEmitter<{|
694694
};
695695

696696
viewElementSource = ({id, rendererID}: ElementAndRendererID) => {
697-
const renderer = this._rendererInterfaces[rendererID];
697+
const renderer = this._rendererInterfaces.get(rendererID);
698698
if (renderer == null) {
699699
console.warn(`Invalid renderer id "${rendererID}" for element "${id}"`);
700700
} else {
@@ -748,7 +748,7 @@ export default class Agent extends EventEmitter<{|
748748
const rendererID = operations[0];
749749
if (this._persistedSelection.rendererID === rendererID) {
750750
// Check if we can select a deeper match for the persisted selection.
751-
const renderer = this._rendererInterfaces[rendererID];
751+
const renderer = this._rendererInterfaces.get(rendererID);
752752
if (renderer == null) {
753753
console.warn(`Invalid renderer id "${rendererID}"`);
754754
} else {
@@ -775,23 +775,26 @@ export default class Agent extends EventEmitter<{|
775775
}
776776
};
777777

778-
onUnsupportedRenderer(rendererID: number) {
778+
onUnsupportedRenderer(rendererID: RendererID) {
779779
this._bridge.send('unsupportedRendererVersion', rendererID);
780780
}
781781

782-
_throttledPersistSelection = throttle((rendererID: number, id: number) => {
783-
// This is throttled, so both renderer and selected ID
784-
// might not be available by the time we read them.
785-
// This is why we need the defensive checks here.
786-
const renderer = this._rendererInterfaces[rendererID];
787-
const path = renderer != null ? renderer.getPathForElement(id) : null;
788-
if (path !== null) {
789-
sessionStorageSetItem(
790-
SESSION_STORAGE_LAST_SELECTION_KEY,
791-
JSON.stringify(({rendererID, path}: PersistedSelection)),
792-
);
793-
} else {
794-
sessionStorageRemoveItem(SESSION_STORAGE_LAST_SELECTION_KEY);
795-
}
796-
}, 1000);
782+
_throttledPersistSelection = throttle(
783+
(rendererID: RendererID, id: number) => {
784+
// This is throttled, so both renderer and selected ID
785+
// might not be available by the time we read them.
786+
// This is why we need the defensive checks here.
787+
const renderer = this._rendererInterfaces.get(rendererID);
788+
const path = renderer != null ? renderer.getPathForElement(id) : null;
789+
if (path !== null) {
790+
sessionStorageSetItem(
791+
SESSION_STORAGE_LAST_SELECTION_KEY,
792+
JSON.stringify(({rendererID, path}: PersistedSelection)),
793+
);
794+
} else {
795+
sessionStorageRemoveItem(SESSION_STORAGE_LAST_SELECTION_KEY);
796+
}
797+
},
798+
1000,
799+
);
797800
}

0 commit comments

Comments
 (0)