forked from op7418/CodePilot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpreload.ts
More file actions
52 lines (51 loc) · 2.21 KB
/
preload.ts
File metadata and controls
52 lines (51 loc) · 2.21 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
// eslint-disable-next-line @typescript-eslint/no-require-imports
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('electronAPI', {
versions: {
electron: process.versions.electron,
node: process.versions.node,
chrome: process.versions.chrome,
platform: process.platform,
},
shell: {
openPath: (folderPath: string) => ipcRenderer.invoke('shell:open-path', folderPath),
},
dialog: {
openFolder: (options?: { defaultPath?: string; title?: string }) =>
ipcRenderer.invoke('dialog:open-folder', options),
},
install: {
checkPrerequisites: () => ipcRenderer.invoke('install:check-prerequisites'),
start: () => ipcRenderer.invoke('install:start'),
cancel: () => ipcRenderer.invoke('install:cancel'),
getLogs: () => ipcRenderer.invoke('install:get-logs'),
onProgress: (callback: (data: unknown) => void) => {
const listener = (_event: unknown, data: unknown) => callback(data);
ipcRenderer.on('install:progress', listener);
return () => { ipcRenderer.removeListener('install:progress', listener); };
},
},
bridge: {
isActive: () => ipcRenderer.invoke('bridge:is-active'),
},
terminal: {
create: (opts: { id: string; cwd: string; cols: number; rows: number }) =>
ipcRenderer.invoke('terminal:create', opts),
write: (id: string, data: string) =>
ipcRenderer.send('terminal:write', { id, data }),
resize: (id: string, cols: number, rows: number) =>
ipcRenderer.invoke('terminal:resize', { id, cols, rows }),
kill: (id: string) =>
ipcRenderer.invoke('terminal:kill', id),
onData: (callback: (data: { id: string; data: string }) => void) => {
const listener = (_event: unknown, data: { id: string; data: string }) => callback(data);
ipcRenderer.on('terminal:data', listener);
return () => { ipcRenderer.removeListener('terminal:data', listener); };
},
onExit: (callback: (data: { id: string; code: number }) => void) => {
const listener = (_event: unknown, data: { id: string; code: number }) => callback(data);
ipcRenderer.on('terminal:exit', listener);
return () => { ipcRenderer.removeListener('terminal:exit', listener); };
},
},
});