Skip to content

Commit 9407330

Browse files
committed
Use JSONBigUtils of tsp-typescript-client for vscode messages
Take advantage of Normalizer concept to take care of bigint values in data structures. Re-use of Normalizer implementations of the tsp-typescript-client, e.g. Experiment. Remove of vscode-signal-converter.ts since it's obsolete. Signed-off-by: Bernd Hufmann <[email protected]>
1 parent 13307a1 commit 9407330

14 files changed

+96
-171
lines changed

vscode-trace-common/package.json

-2
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@
99
"src"
1010
],
1111
"dependencies": {
12-
"json-bigint": "sidorares/json-bigint#2c0a5f896d7888e68e5f4ae3c7ea5cd42fd54473",
1312
"traceviewer-base": "^0.7.2",
1413
"tsp-typescript-client": "^0.6.0",
1514
"vscode-messenger": "^0.5.0"
1615
},
1716
"devDependencies": {
1817
"@types/jest": "^23.3.13",
19-
"@types/json-bigint": "^1.0.1",
2018
"@types/node": "^10.1.2",
2119
"@typescript-eslint/eslint-plugin": "^6.0.0",
2220
"@typescript-eslint/parser": "^6.0.0",

vscode-trace-common/src/signals/vscode-signal-converter.ts

-34
This file was deleted.

vscode-trace-extension/package.json

-2
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,6 @@
298298
"@vscode/vsce": "2.25.0",
299299
"vscode-messenger": "^0.5.0",
300300
"chart.js": "^2.8.0",
301-
"json-bigint": "sidorares/json-bigint#2c0a5f896d7888e68e5f4ae3c7ea5cd42fd54473",
302301
"lodash": "^4.17.15",
303302
"terser": "4.8.1",
304303
"traceviewer-base": "^0.7.2",
@@ -308,7 +307,6 @@
308307
"devDependencies": {
309308
"@playwright/test": "^1.32.3",
310309
"@types/jest": "^23.3.13",
311-
"@types/json-bigint": "^1.0.1",
312310
"@types/node": "^10.1.2",
313311
"@types/vscode": "^1.52.0",
314312
"@typescript-eslint/eslint-plugin": "^6.0.0",

vscode-trace-extension/src/trace-explorer/available-views/trace-explorer-available-views-webview-provider.ts

+5-13
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
2-
import JSONBigConfig from 'json-bigint';
32
import { signalManager } from 'traceviewer-base/lib/signals/signal-manager';
43
import { Experiment } from 'tsp-typescript-client/lib/models/experiment';
54
import { OutputDescriptor } from 'tsp-typescript-client/lib/models/output-descriptor';
5+
import { JSONBigUtils } from 'tsp-typescript-client/lib/utils/jsonbig-utils';
66
import * as vscode from 'vscode';
77
import {
88
webviewReady,
@@ -11,15 +11,9 @@ import {
1111
experimentSelected,
1212
setTspClient
1313
} from 'vscode-trace-common/lib/messages/vscode-messages';
14-
import { convertSignalExperiment } from 'vscode-trace-common/lib/signals/vscode-signal-converter';
14+
import { ClientType, getTspClientUrl } from 'vscode-trace-extension/src/utils/backend-tsp-client-provider';
1515
import { TraceViewerPanel } from '../../trace-viewer-panel/trace-viewer-webview-panel';
1616
import { AbstractTraceExplorerProvider } from '../abstract-trace-explorer-provider';
17-
import { ClientType, getTspClientUrl } from 'vscode-trace-extension/src/utils/backend-tsp-client-provider';
18-
19-
const JSONBig = JSONBigConfig({
20-
useNativeBigInt: true
21-
});
22-
2317
export class TraceExplorerAvailableViewsProvider extends AbstractTraceExplorerProvider {
2418
public static readonly viewType = 'traceExplorer.availableViews';
2519
public readonly _webviewScript = 'analysisPanel.js';
@@ -52,9 +46,7 @@ export class TraceExplorerAvailableViewsProvider extends AbstractTraceExplorerPr
5246

5347
private _onVscodeOutputAdded = (data: any): void => {
5448
if (data?.descriptor) {
55-
// FIXME: JSONBig.parse() created bigint if numbers are small.
56-
// Not an issue right now for output descriptors.
57-
const descriptor = JSONBig.parse(data.descriptor) as OutputDescriptor;
49+
const descriptor: OutputDescriptor = JSONBigUtils.parse(data.descriptor, OutputDescriptor);
5850
TraceViewerPanel.addOutputToCurrent(descriptor);
5951
}
6052
};
@@ -64,7 +56,7 @@ export class TraceExplorerAvailableViewsProvider extends AbstractTraceExplorerPr
6456
this._selectionOngoing = true;
6557
if (data?.wrapper) {
6658
// Avoid endless forwarding of signal
67-
this._selectedExperiment = convertSignalExperiment(JSONBig.parse(data.wrapper));
59+
this._selectedExperiment = JSONBigUtils.parse(data.wrapper, Experiment);
6860
} else {
6961
this._selectedExperiment = undefined;
7062
}
@@ -105,7 +97,7 @@ export class TraceExplorerAvailableViewsProvider extends AbstractTraceExplorerPr
10597
protected doHandleExperimentSelectedSignal(experiment: Experiment | undefined): void {
10698
if (!this._selectionOngoing && this._view) {
10799
this._selectedExperiment = experiment;
108-
const wrapper = experiment ? JSONBig.stringify(experiment) : undefined;
100+
const wrapper = experiment ? JSONBigUtils.stringify(experiment) : undefined;
109101
this._messenger.sendNotification(experimentSelected, this._webviewParticipant, { wrapper });
110102
}
111103
}

vscode-trace-extension/src/trace-explorer/opened-traces/trace-explorer-opened-traces-webview-provider.ts

+7-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
2-
import JSONBigConfig from 'json-bigint';
32
import { signalManager } from 'traceviewer-base/lib/signals/signal-manager';
43
import { Experiment } from 'tsp-typescript-client/lib/models/experiment';
4+
import { JSONBigUtils } from 'tsp-typescript-client/lib/utils/jsonbig-utils';
55
import * as vscode from 'vscode';
6-
import { convertSignalExperiment } from 'vscode-trace-common/lib/signals/vscode-signal-converter';
76
import { TraceViewerPanel } from '../../trace-viewer-panel/trace-viewer-webview-panel';
87
import { ClientType, getTspClientUrl, updateNoExperimentsContext } from '../../utils/backend-tsp-client-provider';
98
import {
@@ -21,10 +20,6 @@ import {
2120
} from 'vscode-trace-common/lib/messages/vscode-messages';
2221
import { AbstractTraceExplorerProvider } from '../abstract-trace-explorer-provider';
2322

24-
const JSONBig = JSONBigConfig({
25-
useNativeBigInt: true
26-
});
27-
2823
export class TraceExplorerOpenedTracesViewProvider extends AbstractTraceExplorerProvider {
2924
public static readonly viewType = 'traceExplorer.openedTracesView';
3025
protected readonly _webviewScript = 'openedTracesPanel.js';
@@ -67,7 +62,7 @@ export class TraceExplorerOpenedTracesViewProvider extends AbstractTraceExplorer
6762

6863
private _onVscodeReOpenTrace = (data: any): void => {
6964
if (data?.wrapper) {
70-
const experiment = convertSignalExperiment(JSONBig.parse(data.wrapper));
65+
const experiment: Experiment = JSONBigUtils.parse(data.wrapper, Experiment);
7166
const existingPanel = TraceViewerPanel.getExistingPanel(experiment.name);
7267
const panel = TraceViewerPanel.createOrShow(
7368
this._extensionUri,
@@ -85,7 +80,8 @@ export class TraceExplorerOpenedTracesViewProvider extends AbstractTraceExplorer
8580
private _onVscodeCloseTrace = (data: any): void => {
8681
if (data?.wrapper) {
8782
// just remove the panel here
88-
TraceViewerPanel.disposePanel(this._extensionUri, JSONBig.parse(data.wrapper).name);
83+
const experiment: Experiment = JSONBigUtils.parse(data.wrapper, Experiment);
84+
TraceViewerPanel.disposePanel(this._extensionUri, experiment.name);
8985
signalManager().emit('EXPERIMENT_SELECTED', undefined);
9086
}
9187
};
@@ -97,7 +93,7 @@ export class TraceExplorerOpenedTracesViewProvider extends AbstractTraceExplorer
9793
private _onVscodeExperimentSelected = (data: any): void => {
9894
let experiment: Experiment | undefined;
9995
if (data?.wrapper) {
100-
experiment = convertSignalExperiment(JSONBig.parse(data.wrapper));
96+
experiment = JSONBigUtils.parse(data.wrapper, Experiment);
10197
} else {
10298
experiment = undefined;
10399
}
@@ -106,7 +102,7 @@ export class TraceExplorerOpenedTracesViewProvider extends AbstractTraceExplorer
106102

107103
protected doHandleExperimentOpenedSignal(experiment: Experiment): void {
108104
if (this._view && experiment) {
109-
const wrapper: string = JSONBig.stringify(experiment);
105+
const wrapper = JSONBigUtils.stringify(experiment);
110106
this._messenger.sendNotification(experimentOpened, this._webviewParticipant, wrapper);
111107
}
112108
}
@@ -117,7 +113,7 @@ export class TraceExplorerOpenedTracesViewProvider extends AbstractTraceExplorer
117113
}
118114
if (this._view) {
119115
this._selectedExperiment = experiment;
120-
const wrapper: string = JSONBig.stringify(experiment);
116+
const wrapper = JSONBigUtils.stringify(experiment);
121117
this._messenger.sendNotification(traceViewerTabActivated, this._webviewParticipant, wrapper);
122118

123119
if (!this._view.visible) {

vscode-trace-extension/src/trace-explorer/time-range/trace-explorer-time-range-data-webview-provider.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
22
import * as vscode from 'vscode';
3-
import JSONBigConfig from 'json-bigint';
43
import { signalManager } from 'traceviewer-base/lib/signals/signal-manager';
54
import { TimeRangeUpdatePayload } from 'traceviewer-base/lib/signals/time-range-data-signal-payloads';
65
import { TimeRangeDataMap } from 'traceviewer-react-components/lib/components/utils/time-range-data-map';
@@ -15,12 +14,9 @@ import {
1514
viewRangeUpdated,
1615
restoreView
1716
} from 'vscode-trace-common/lib/messages/vscode-messages';
17+
import { JSONBigUtils } from 'tsp-typescript-client/lib/utils/jsonbig-utils';
1818
import { AbstractTraceExplorerProvider } from '../abstract-trace-explorer-provider';
1919

20-
const JSONBig = JSONBigConfig({
21-
useNativeBigInt: true
22-
});
23-
2420
export class TraceExplorerTimeRangeDataProvider extends AbstractTraceExplorerProvider {
2521
public static readonly viewType = 'traceExplorer.timeRangeDataView';
2622
protected readonly _webviewScript = 'timeRangePanel.js';
@@ -35,8 +31,10 @@ export class TraceExplorerTimeRangeDataProvider extends AbstractTraceExplorerPro
3531

3632
// VSCODE message handlers
3733
private _onVscodeRequestSelectionRangeChange = (data: any): void => {
38-
const parsedData = data ? JSONBig.parse(data) : undefined;
39-
signalManager().emit('REQUEST_SELECTION_RANGE_CHANGE', parsedData);
34+
if (data) {
35+
const result = JSONBigUtils.parse<TimeRangeUpdatePayload>(data);
36+
signalManager().emit('REQUEST_SELECTION_RANGE_CHANGE', result);
37+
}
4038
};
4139

4240
protected init(
@@ -62,9 +60,7 @@ export class TraceExplorerTimeRangeDataProvider extends AbstractTraceExplorerPro
6260
mapArray: Array.from(this._experimentDataMap.experimentDataMap.values()),
6361
activeData: this._experimentDataMap.activeData
6462
};
65-
this._messenger.sendNotification(restoreView, this._webviewParticipant, {
66-
data: JSONBig.stringify(data)
67-
});
63+
this._messenger.sendNotification(restoreView, this._webviewParticipant, JSONBigUtils.stringify(data));
6864
}
6965
});
7066

@@ -88,17 +84,21 @@ export class TraceExplorerTimeRangeDataProvider extends AbstractTraceExplorerPro
8884
}
8985

9086
private onViewRangeUpdated = (update: TimeRangeUpdatePayload) => {
91-
this._messenger.sendNotification(viewRangeUpdated, this._webviewParticipant, JSONBig.stringify(update));
87+
this._messenger.sendNotification(viewRangeUpdated, this._webviewParticipant, JSONBigUtils.stringify(update));
9288
this._experimentDataMap.updateViewRange(update);
9389
};
9490

9591
private onSelectionRangeUpdated = (update: TimeRangeUpdatePayload) => {
96-
this._messenger.sendNotification(selectionRangeUpdated, this._webviewParticipant, JSONBig.stringify(update));
92+
this._messenger.sendNotification(
93+
selectionRangeUpdated,
94+
this._webviewParticipant,
95+
JSONBigUtils.stringify(update)
96+
);
9797
this._experimentDataMap.updateSelectionRange(update);
9898
};
9999

100100
private onExperimentSelected = (experiment: Experiment | undefined) => {
101-
const data = { wrapper: experiment ? JSONBig.stringify(experiment) : undefined };
101+
const data = { wrapper: experiment ? JSONBigUtils.stringify(experiment) : undefined };
102102
this._messenger.sendNotification(experimentSelected, this._webviewParticipant, data);
103103
if (experiment) {
104104
this._experimentDataMap.updateAbsoluteRange(experiment);
@@ -107,13 +107,13 @@ export class TraceExplorerTimeRangeDataProvider extends AbstractTraceExplorerPro
107107
};
108108

109109
private onExperimentUpdated = (experiment: Experiment) => {
110-
const data = { wrapper: JSONBig.stringify(experiment) };
110+
const data = { wrapper: JSONBigUtils.stringify(experiment) };
111111
this._messenger.sendNotification(experimentUpdated, this._webviewParticipant, data);
112112
this._experimentDataMap.updateAbsoluteRange(experiment);
113113
};
114114

115115
private onExperimentClosed = (experiment: Experiment) => {
116-
const data = { wrapper: JSONBig.stringify(experiment) };
116+
const data = { wrapper: JSONBigUtils.stringify(experiment) };
117117
this._messenger.sendNotification(experimentClosed, this._webviewParticipant, data);
118118
this._experimentDataMap.delete(experiment);
119119
};

vscode-trace-extension/src/trace-viewer-panel/trace-viewer-webview-panel.ts

+13-18
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
22
import * as fs from 'fs';
3-
import JSONBigConfig from 'json-bigint';
43
import * as path from 'path';
54
import { ItemPropertiesSignalPayload } from 'traceviewer-base/lib/signals/item-properties-signal-payload';
65
import { signalManager } from 'traceviewer-base/lib/signals/signal-manager';
76
import { TimeRangeUpdatePayload } from 'traceviewer-base/lib/signals/time-range-data-signal-payloads';
8-
import { Experiment } from 'tsp-typescript-client/lib/models/experiment';
9-
import { MarkerSet } from 'tsp-typescript-client/lib/models/markerset';
10-
import { OutputDescriptor } from 'tsp-typescript-client/lib/models/output-descriptor';
117
import * as vscode from 'vscode';
128
import type { Messenger } from 'vscode-messenger';
139
import { NotificationType, WebviewIdMessageParticipant } from 'vscode-messenger-common';
@@ -42,16 +38,15 @@ import {
4238
updateMarkerCategoryState,
4339
updateMarkerSetState
4440
} from 'vscode-trace-common/lib/messages/vscode-messages';
45-
import { convertSignalExperiment } from 'vscode-trace-common/lib/signals/vscode-signal-converter';
41+
import { Experiment } from 'tsp-typescript-client/lib/models/experiment';
42+
import { MarkerSet } from 'tsp-typescript-client/lib/models/markerset';
43+
import { OutputDescriptor } from 'tsp-typescript-client/lib/models/output-descriptor';
44+
import { JSONBigUtils } from 'tsp-typescript-client/lib/utils/jsonbig-utils';
4645
import { handleRemoveMessage, handleStatusMessage, setStatusFromPanel } from '../common/trace-message';
4746
import { traceExtensionWebviewManager } from '../extension';
4847
import { ClientType, getTraceServerUrl, getTspClientUrl } from '../utils/backend-tsp-client-provider';
4948
import { TraceServerConnectionStatusService } from '../utils/trace-server-status';
5049

51-
const JSONBig = JSONBigConfig({
52-
useNativeBigInt: true
53-
});
54-
5550
interface QuickPickItem extends vscode.QuickPickItem {
5651
id: string;
5752
}
@@ -415,7 +410,7 @@ export class TraceViewerPanel {
415410

416411
protected doHandleExperimentSelectedSignal(experiment: Experiment | undefined): void {
417412
if (this._experiment && experiment && this._experiment.UUID === experiment.UUID) {
418-
const wrapper: string = JSONBig.stringify(experiment);
413+
const wrapper = JSONBigUtils.stringify(experiment);
419414
const data = { wrapper };
420415
this._messenger.sendNotification(experimentSelected, this._webviewParticipant, data);
421416
}
@@ -426,19 +421,19 @@ export class TraceViewerPanel {
426421
}
427422

428423
protected doHandleRequestSelectionRangeChange(payload: TimeRangeUpdatePayload): void {
429-
this._messenger.sendNotification(experimentSelected, this._webviewParticipant, JSONBig.stringify(payload));
424+
this._messenger.sendNotification(experimentSelected, this._webviewParticipant, JSONBigUtils.stringify(payload));
430425
}
431426
setExperiment(experiment: Experiment): void {
432427
this._experiment = experiment;
433-
const wrapper: string = JSONBig.stringify(experiment);
428+
const wrapper = JSONBigUtils.stringify(experiment);
434429
const data = { wrapper };
435430
this._messenger.sendNotification(setExperiment, this._webviewParticipant, data);
436431
signalManager().emit('EXPERIMENT_OPENED', experiment);
437432
signalManager().emit('TRACEVIEWERTAB_ACTIVATED', experiment);
438433
}
439434

440435
addOutput(descriptor: OutputDescriptor): void {
441-
const wrapper: string = JSONBig.stringify(descriptor);
436+
const wrapper = JSONBigUtils.stringify(descriptor);
442437
const data = { wrapper };
443438
this._messenger.sendNotification(addOutput, this._webviewParticipant, data);
444439
}
@@ -550,7 +545,7 @@ export class TraceViewerPanel {
550545
private doHandleVscodeWebViewReady(): void {
551546
// Post the tspTypescriptClient
552547
if (this._experiment) {
553-
const wrapper: string = JSONBig.stringify(this._experiment);
548+
const wrapper = JSONBigUtils.stringify(this._experiment);
554549
const data = { data: getTspClientUrl(ClientType.FRONTEND), experiment: wrapper };
555550
this._messenger.sendNotification(setTspClient, this._webviewParticipant, data);
556551
} else {
@@ -628,20 +623,20 @@ export class TraceViewerPanel {
628623

629624
private doHandleVscodeViewRangeUpdated(data: any): void {
630625
if (data) {
631-
signalManager().emit('VIEW_RANGE_UPDATED', JSONBig.parse(data));
626+
const result = JSONBigUtils.parse<TimeRangeUpdatePayload>(data);
627+
signalManager().emit('VIEW_RANGE_UPDATED', result);
632628
}
633629
}
634630

635631
private doHandleVscodeSelectionRangeUpdated(data: any): void {
636632
if (data) {
637-
signalManager().emit('SELECTION_RANGE_UPDATED', JSONBig.parse(data));
633+
signalManager().emit('SELECTION_RANGE_UPDATED', JSONBigUtils.parse<TimeRangeUpdatePayload>(data));
638634
}
639635
}
640636

641637
private doHandleExperimentUpdated(data: any): void {
642638
if (data) {
643-
const experiment = convertSignalExperiment(JSONBig.parse(data));
644-
signalManager().emit('EXPERIMENT_UPDATED', experiment);
639+
signalManager().emit('EXPERIMENT_UPDATED', JSONBigUtils.parse(data, Experiment));
645640
}
646641
}
647642

vscode-trace-webviews/package.json

-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
"@fortawesome/free-solid-svg-icons": "^5.8.1",
1111
"@fortawesome/react-fontawesome": "^0.1.4",
1212
"@mui/material": "^5.10.14",
13-
"json-bigint": "sidorares/json-bigint#2c0a5f896d7888e68e5f4ae3c7ea5cd42fd54473",
1413
"lodash": "^4.17.15",
1514
"lodash.debounce": "^4.0.8",
1615
"react": "^18.0.0",
@@ -27,14 +26,12 @@
2726
},
2827
"devDependencies": {
2928
"@types/jest": "^23.3.13",
30-
"@types/json-bigint": "^1.0.1",
3129
"@types/node": "^10.1.2",
3230
"@types/react": "^18.0.0",
3331
"@types/react-dom": "^18.0.0",
3432
"@typescript-eslint/eslint-plugin": "^6.0.0",
3533
"@typescript-eslint/parser": "^6.0.0",
3634
"css-loader": "^5.0.1",
37-
3835
"style-loader": "^2.0.0",
3936
"svg-url-loader": "^7.1.1",
4037
"ts-loader": "^8.0.14",

0 commit comments

Comments
 (0)