This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
'use strict';
|
||||
|
||||
const { contextBridge, ipcRenderer } = require('electron');
|
||||
|
||||
/**
|
||||
* The complete privileged API exposed to the sandboxed renderer. Every call
|
||||
* is an explicit invoke; no raw ipcRenderer or Node access leaks through.
|
||||
*/
|
||||
|
||||
const invoke = (channel) => (args) => ipcRenderer.invoke(channel, args);
|
||||
|
||||
const api = {
|
||||
library: {
|
||||
list: invoke('library:list'),
|
||||
create: invoke('library:create'),
|
||||
duplicate: invoke('library:duplicate'),
|
||||
delete: invoke('library:delete'),
|
||||
setFavorite: invoke('library:setFavorite'),
|
||||
trashList: invoke('library:trash:list'),
|
||||
trashRestore: invoke('library:trash:restore'),
|
||||
trashPurge: invoke('library:trash:purge'),
|
||||
},
|
||||
folders: {
|
||||
create: invoke('folders:create'),
|
||||
rename: invoke('folders:rename'),
|
||||
delete: invoke('folders:delete'),
|
||||
moveGuide: invoke('folders:moveGuide'),
|
||||
},
|
||||
guide: {
|
||||
get: invoke('guide:get'),
|
||||
save: invoke('guide:save'),
|
||||
},
|
||||
step: {
|
||||
add: invoke('step:add'),
|
||||
save: invoke('step:save'),
|
||||
delete: invoke('step:delete'),
|
||||
reorder: invoke('steps:reorder'),
|
||||
imagePath: invoke('step:imagePath'),
|
||||
setWorkingImage: invoke('step:setWorkingImage'),
|
||||
resetWorkingImage: invoke('step:resetWorkingImage'),
|
||||
fromClipboard: invoke('step:fromClipboard'),
|
||||
importImage: invoke('step:importImage'),
|
||||
},
|
||||
search: {
|
||||
query: invoke('search:query'),
|
||||
titles: invoke('search:titles'),
|
||||
},
|
||||
settings: {
|
||||
all: invoke('settings:all'),
|
||||
set: invoke('settings:set'),
|
||||
globalPlaceholders: invoke('placeholders:globals:get'),
|
||||
setGlobalPlaceholders: invoke('placeholders:globals:set'),
|
||||
},
|
||||
capture: {
|
||||
shoot: invoke('capture:shoot'),
|
||||
region: invoke('capture:region'),
|
||||
session: invoke('capture:session'),
|
||||
state: invoke('capture:state'),
|
||||
onAdded: (fn) => ipcRenderer.on('capture:added', (e, payload) => fn(payload)),
|
||||
onState: (fn) => ipcRenderer.on('capture:state', (e, payload) => fn(payload)),
|
||||
},
|
||||
archive: {
|
||||
export: invoke('archive:export'),
|
||||
open: invoke('archive:open'),
|
||||
saveLinked: invoke('archive:saveLinked'),
|
||||
},
|
||||
snapshots: {
|
||||
list: invoke('snapshots:list'),
|
||||
create: invoke('snapshots:create'),
|
||||
restore: invoke('snapshots:restore'),
|
||||
},
|
||||
templates: {
|
||||
list: invoke('templates:list'),
|
||||
load: invoke('templates:load'),
|
||||
save: invoke('templates:save'),
|
||||
delete: invoke('templates:delete'),
|
||||
rename: invoke('templates:rename'),
|
||||
duplicate: invoke('templates:duplicate'),
|
||||
export: invoke('templates:export'),
|
||||
import: invoke('templates:import'),
|
||||
},
|
||||
export: {
|
||||
formats: invoke('export:formats'),
|
||||
run: invoke('export:run'),
|
||||
chooseDir: invoke('export:chooseDir'),
|
||||
preview: invoke('export:preview'),
|
||||
cleanupPreviews: invoke('preview:cleanup'),
|
||||
},
|
||||
shell: {
|
||||
openPath: invoke('shell:openPath'),
|
||||
showItemInFolder: invoke('shell:showItemInFolder'),
|
||||
},
|
||||
app: {
|
||||
info: invoke('app:info'),
|
||||
},
|
||||
};
|
||||
|
||||
contextBridge.exposeInMainWorld('stepforge', api);
|
||||
Reference in New Issue
Block a user