mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-11 03:48:39 +00:00
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron';
|
|
|
|
(async () => {
|
|
const { appInfo, getAffineAPIs } = await import('./affine-apis');
|
|
const { apis, events } = getAffineAPIs();
|
|
|
|
contextBridge.exposeInMainWorld('appInfo', appInfo);
|
|
contextBridge.exposeInMainWorld('apis', apis);
|
|
contextBridge.exposeInMainWorld('events', events);
|
|
contextBridge.exposeInMainWorld('platform', process.platform);
|
|
|
|
// Credit to microsoft/vscode
|
|
const globals = {
|
|
ipcRenderer: {
|
|
send(channel: string, ...args: any[]) {
|
|
ipcRenderer.send(channel, ...args);
|
|
},
|
|
|
|
invoke(channel: string, ...args: any[]) {
|
|
return ipcRenderer.invoke(channel, ...args);
|
|
},
|
|
|
|
on(
|
|
channel: string,
|
|
listener: (event: Electron.IpcRendererEvent, ...args: any[]) => void
|
|
) {
|
|
ipcRenderer.on(channel, listener);
|
|
return this;
|
|
},
|
|
|
|
once(
|
|
channel: string,
|
|
listener: (event: Electron.IpcRendererEvent, ...args: any[]) => void
|
|
) {
|
|
ipcRenderer.once(channel, listener);
|
|
return this;
|
|
},
|
|
|
|
removeListener(
|
|
channel: string,
|
|
listener: (event: Electron.IpcRendererEvent, ...args: any[]) => void
|
|
) {
|
|
ipcRenderer.removeListener(channel, listener);
|
|
return this;
|
|
},
|
|
},
|
|
};
|
|
|
|
try {
|
|
contextBridge.exposeInMainWorld('affine', globals);
|
|
} catch (error) {
|
|
console.error('Failed to expose affine APIs to window object!', error);
|
|
}
|
|
})().catch(err => {
|
|
console.error('Failed to bootstrap preload script!', err);
|
|
});
|