/** * Utility functions for environment detection */ /** * Check if code is running in a browser environment */ export function isBrowser(): boolean { return typeof window !== 'undefined' && typeof document !== 'undefined'; } /** * Check if code is running in a Node.js environment */ export function isNode(): boolean { return typeof process !== 'undefined' && process.versions != null && process.versions.node != null; } /** * Check if code is running in a Web Worker environment */ export function isWebWorker(): boolean { return typeof self === 'object' && self.constructor && self.constructor.name === 'DedicatedWorkerGlobalScope'; } /** * Check if Web Workers are available in the current environment */ export function areWebWorkersAvailable(): boolean { return isBrowser() && typeof Worker !== 'undefined'; } /** * Check if Worker Threads are available in the current environment (Node.js) */ export function areWorkerThreadsAvailable(): boolean { if (!isNode()) return false; try { // Dynamic import to avoid errors in browser environments require('worker_threads'); return true; } catch (e) { return false; } } /** * Determine if threading is available in the current environment * Returns true if either Web Workers (browser) or Worker Threads (Node.js) are available */ export function isThreadingAvailable(): boolean { return areWebWorkersAvailable() || areWorkerThreadsAvailable(); }