Repository navigation
Expand file tree
/
Copy pathpreload.ts
More file actions
75 lines (71 loc) · 2.94 KB
/
Copy pathpreload.ts
File metadata and controls
75 lines (71 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { ipcRenderer, contextBridge, type IpcRendererEvent } from 'electron';
import type { RendererPerformanceSnapshot } from './modules/app-shell/performance-recorder/types';
import {
TrafficAuditEventSchema,
type TrafficAuditEvent,
} from './modules/proxy-gateway/audit/traffic-audit.types';
import { IPC_CHANNELS } from './shared/constants';
window.addEventListener('message', (event) => {
if (event.data === IPC_CHANNELS.START_ORPC_SERVER) {
const [serverPort] = event.ports;
ipcRenderer.postMessage(IPC_CHANNELS.START_ORPC_SERVER, null, [serverPort]);
}
});
const electronBridge = {
getObservabilityConfig: () => {
return ipcRenderer.invoke(IPC_CHANNELS.GET_OBSERVABILITY_CONFIG);
},
changeLanguage: (lang: string) => {
ipcRenderer.send(IPC_CHANNELS.CHANGE_LANGUAGE, lang);
},
onManualUpdateAvailable: (callback: (update: ManualUpdateInfo) => void) => {
const handler = (_event: IpcRendererEvent, update: ManualUpdateInfo) => callback(update);
ipcRenderer.on(IPC_CHANNELS.MANUAL_UPDATE_AVAILABLE, handler);
ipcRenderer.send(IPC_CHANNELS.MANUAL_UPDATE_RENDERER_READY);
return () => ipcRenderer.off(IPC_CHANNELS.MANUAL_UPDATE_AVAILABLE, handler);
},
onTrafficAuditEvent: (callback: (event: TrafficAuditEvent) => void) => {
const handler = (_event: IpcRendererEvent, payload: unknown) => {
// Zod can initialize before the page applies its CSP; event parsing must never compile code.
const parsed = TrafficAuditEventSchema.safeParse(payload, { jitless: true });
if (parsed.success) {
callback(parsed.data);
}
};
ipcRenderer.on(IPC_CHANNELS.TRAFFIC_AUDIT_EVENT, handler);
return () => ipcRenderer.off(IPC_CHANNELS.TRAFFIC_AUDIT_EVENT, handler);
},
checkForUpdates: () => {
return ipcRenderer.invoke(IPC_CHANNELS.CHECK_FOR_UPDATES);
},
downloadUpdate: () => {
return ipcRenderer.invoke(IPC_CHANNELS.DOWNLOAD_UPDATE);
},
installUpdate: () => {
return ipcRenderer.invoke(IPC_CHANNELS.INSTALL_UPDATE);
},
dismissManualUpdate: (version: string) => {
return ipcRenderer.invoke(IPC_CHANNELS.DISMISS_MANUAL_UPDATE, version);
},
openExternalUrl: (url: string) => {
return ipcRenderer.invoke(IPC_CHANNELS.OPEN_EXTERNAL_URL, url);
},
saveTrafficAuditBody: (bodyId: string, suggestedName: string) => {
return ipcRenderer.invoke(IPC_CHANNELS.SAVE_TRAFFIC_AUDIT_BODY, bodyId, suggestedName);
},
...(import.meta.env.ANTIGRAVITY_ENABLE_PERFORMANCE_RECORDER === '1'
? {
startPerformanceRecording: (label: string) => {
return ipcRenderer.invoke(IPC_CHANNELS.START_PERFORMANCE_RECORDING, label);
},
stopPerformanceRecording: (snapshot: RendererPerformanceSnapshot) => {
return ipcRenderer.invoke(IPC_CHANNELS.STOP_PERFORMANCE_RECORDING, snapshot);
},
}
: {}),
};
if (process.contextIsolated) {
contextBridge.exposeInMainWorld('electron', electronBridge);
} else {
window.electron = electronBridge;
}