asarfuckery/electronasar/canary/renderer/ipc-renderer-internal-utils.js

42 lines
1.5 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ipc_renderer_internal_1 = require("@electron/internal/renderer/ipc-renderer-internal");
const errorUtils = require("@electron/internal/common/error-utils");
exports.handle = function (channel, handler) {
ipc_renderer_internal_1.ipcRendererInternal.on(channel, (event, requestId, ...args) => {
new Promise(resolve => resolve(handler(event, ...args))).then(result => {
return [null, result];
}, error => {
return [errorUtils.serialize(error)];
}).then(responseArgs => {
event.sender.send(`${channel}_RESPONSE_${requestId}`, ...responseArgs);
});
});
};
let nextId = 0;
function invoke(command, ...args) {
return new Promise((resolve, reject) => {
const requestId = ++nextId;
ipc_renderer_internal_1.ipcRendererInternal.once(`${command}_RESPONSE_${requestId}`, (_event, error, result) => {
if (error) {
reject(errorUtils.deserialize(error));
}
else {
resolve(result);
}
});
ipc_renderer_internal_1.ipcRendererInternal.send(command, requestId, ...args);
});
}
exports.invoke = invoke;
function invokeSync(command, ...args) {
const [error, result] = ipc_renderer_internal_1.ipcRendererInternal.sendSync(command, null, ...args);
if (error) {
throw errorUtils.deserialize(error);
}
else {
return result;
}
}
exports.invokeSync = invokeSync;