@ui-tars/electron-ipc
Version:
Type-safe Electron inter-process communication for UI-TARS
50 lines (47 loc) • 1 kB
JavaScript
// src/main/initIpc.ts
var createChainProdure = () => {
const chain = {
input(_schema) {
return createChainProdure();
},
handle: (handle) => {
return { handle };
}
};
return chain;
};
var initIpc = {
create() {
return {
procedure: createChainProdure(),
router: (router) => {
return router;
}
};
}
};
// src/main/registerIpcMain.ts
import { ipcMain } from "electron";
var registerIpcMain = (router) => {
for (const [name, route] of Object.entries(router)) {
ipcMain.handle(name, (e, payload) => {
return route.handle({ context: { sender: e.sender }, input: payload });
});
}
};
// src/main/createServer.ts
var createServer = (router) => {
return new Proxy({}, {
get: (_, prop) => {
const route = router[prop];
return (input, sender) => {
return route.handle({ context: { sender: sender || null }, input });
};
}
});
};
export {
createServer,
initIpc,
registerIpcMain
};