@lifaon/rx-js-light
Version:
Blazing fast Observables
39 lines (38 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getRegisterImmediateImplementation = void 0;
var message_channel_implementation_1 = require("./message-channel-implementation.cjs");
var next_tick_implementation_1 = require("./next-tick-implementation.cjs");
var post_message_implementation_1 = require("./post-message-implementation.cjs");
var ready_state_change_implementation_1 = require("./ready-state-change-implementation.cjs");
var set_timeout_implementation_1 = require("./set-timeout-implementation.cjs");
function canUsePostMessage(global) {
if (global.postMessage && !global.importScripts) {
var postMessageIsAsynchronous_1 = true;
var oldOnMessage = global.onmessage;
global.onmessage = function () {
postMessageIsAsynchronous_1 = false;
};
global.postMessage('', '*');
global.onmessage = oldOnMessage;
return postMessageIsAsynchronous_1;
} else {
return false;
}
}
function getRegisterImmediateImplementation(global) {
if (({}).toString.call(global.process) === '[object process]') {
return (0, next_tick_implementation_1.nextTickImplementation)(global.process);
} else if (canUsePostMessage(global)) {
return (0, post_message_implementation_1.postMessageImplementation)(global);
} else if (global.MessageChannel) {
return (0, message_channel_implementation_1.messageChannelImplementation)();
} else if (global.document && ('onreadystatechange' in global.document.createElement('script'))) {
return (0, ready_state_change_implementation_1.readyStateChangeImplementation)(global);
} else {
return (0, set_timeout_implementation_1.setTimeoutImplementation)();
}
}
exports.getRegisterImmediateImplementation = getRegisterImmediateImplementation;