forked from distok/asarfuckery
53 lines
1.9 KiB
JavaScript
53 lines
1.9 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const ipc_main_internal_1 = require("@electron/internal/browser/ipc-main-internal");
|
||
|
const errorUtils = require("@electron/internal/common/error-utils");
|
||
|
const callHandler = async function (handler, event, args, reply) {
|
||
|
try {
|
||
|
const result = await handler(event, ...args);
|
||
|
reply([null, result]);
|
||
|
}
|
||
|
catch (error) {
|
||
|
reply([errorUtils.serialize(error)]);
|
||
|
}
|
||
|
};
|
||
|
exports.handle = function (channel, handler) {
|
||
|
ipc_main_internal_1.ipcMainInternal.on(channel, (event, requestId, ...args) => {
|
||
|
callHandler(handler, event, args, responseArgs => {
|
||
|
if (requestId) {
|
||
|
event._replyInternal(`${channel}_RESPONSE_${requestId}`, ...responseArgs);
|
||
|
}
|
||
|
else {
|
||
|
event.returnValue = responseArgs;
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
let nextId = 0;
|
||
|
function invokeInWebContents(sender, sendToAll, command, ...args) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const requestId = ++nextId;
|
||
|
const channel = `${command}_RESPONSE_${requestId}`;
|
||
|
ipc_main_internal_1.ipcMainInternal.on(channel, function handler(event, error, result) {
|
||
|
if (event.sender !== sender) {
|
||
|
console.error(`Reply to ${command} sent by unexpected WebContents (${event.sender.id})`);
|
||
|
return;
|
||
|
}
|
||
|
ipc_main_internal_1.ipcMainInternal.removeListener(channel, handler);
|
||
|
if (error) {
|
||
|
reject(errorUtils.deserialize(error));
|
||
|
}
|
||
|
else {
|
||
|
resolve(result);
|
||
|
}
|
||
|
});
|
||
|
if (sendToAll) {
|
||
|
sender._sendInternalToAll(command, requestId, ...args);
|
||
|
}
|
||
|
else {
|
||
|
sender._sendInternal(command, requestId, ...args);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
exports.invokeInWebContents = invokeInWebContents;
|
||
|
//# sourceMappingURL=ipc-main-internal-utils.js.map
|