send-channel-message
Version:
Simple function that allow to pass messages to separate script in different browsing context and get back result data as a Promise.
41 lines (31 loc) • 972 B
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var checkInputsIsInvalid = function checkInputsIsInvalid(message, target) {
if (!(target && typeof target.postMessage === 'function')) {
return new Error('Error! Invalid target.');
}
if (!message) {
return new Error('Error! Invalid message.');
}
return null;
};
var sendChannelMessage = function sendChannelMessage(message, target) {
var origin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '*';
return new Promise(function (resolve, reject) {
var error = checkInputsIsInvalid(message, target);
if (error) {
reject(error);
}
var _ref = new MessageChannel(),
port1 = _ref.port1,
port2 = _ref.port2;
port1.onmessage = function (evt) {
port1.close();
resolve(evt.data);
};
target.postMessage(message, origin, [port2]);
});
};
var _default = sendChannelMessage;
exports.default = _default;