var requireFoolWebpack = require('./requireFoolWebpack'); // source: https://github.com/flexdinesh/browser-or-node var isNode = function (nodeProcess) { return ( typeof nodeProcess !== 'undefined' && nodeProcess.versions != null && nodeProcess.versions.node != null ); } module.exports.isNode = isNode // determines the JavaScript platform: browser or node module.exports.platform = typeof process !== 'undefined' && isNode(process) ? 'node' : 'browser'; // determines whether the code is running in main thread or not // note that in node.js we have to check both worker_thread and child_process var worker_threads = tryRequireFoolWebpack('worker_threads'); module.exports.isMainThread = module.exports.platform === 'node' ? ((!worker_threads || worker_threads.isMainThread) && !process.connected) : typeof Window !== 'undefined'; // determines the number of cpus available module.exports.cpus = module.exports.platform === 'browser' ? self.navigator.hardwareConcurrency : requireFoolWebpack('os').cpus().length; function tryRequireFoolWebpack (module) { try { return requireFoolWebpack(module); } catch(err) { return null } }