edge-tts-universal
Version:
Universal text-to-speech library using Microsoft Edge's online TTS service. Works in Node.js and browsers WITHOUT needing Microsoft Edge, Windows, or an API key
1 lines • 6.25 kB
Source Map (JSON)
{"version":3,"sources":["../src/runtime-detection.ts"],"names":[],"mappings":"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","file":"runtime-detection.cjs","sourcesContent":["/**\n * Runtime detection utilities for cross-platform compatibility\n */\n\nexport interface RuntimeInfo {\n name: 'node' | 'deno' | 'bun' | 'browser' | 'webworker' | 'unknown';\n version?: string;\n isNode: boolean;\n isDeno: boolean;\n isBun: boolean;\n isBrowser: boolean;\n isWebWorker: boolean;\n}\n\n/**\n * Detect the current JavaScript runtime environment\n */\nexport function detectRuntime(): RuntimeInfo {\n const info: RuntimeInfo = {\n name: 'unknown',\n isNode: false,\n isDeno: false,\n isBun: false,\n isBrowser: false,\n isWebWorker: false,\n };\n\n // Check for Deno\n if (typeof (globalThis as any).Deno !== 'undefined') {\n info.name = 'deno';\n info.isDeno = true;\n info.version = (globalThis as any).Deno.version?.deno;\n return info;\n }\n\n // Check for Bun\n if (typeof (globalThis as any).Bun !== 'undefined') {\n info.name = 'bun';\n info.isBun = true;\n info.version = (globalThis as any).Bun.version;\n return info;\n }\n\n // Check for Node.js\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n info.name = 'node';\n info.isNode = true;\n info.version = process.versions.node;\n return info;\n }\n\n // Check for Web Worker\n if (typeof (globalThis as any).importScripts === 'function' && typeof (globalThis as any).WorkerGlobalScope !== 'undefined') {\n info.name = 'webworker';\n info.isWebWorker = true;\n return info;\n }\n\n // Check for Browser\n if (typeof window !== 'undefined') {\n info.name = 'browser';\n info.isBrowser = true;\n return info;\n }\n\n return info;\n}\n\n/**\n * Get the appropriate fetch implementation for the current runtime\n */\nexport function getFetch(): typeof fetch {\n const runtime = detectRuntime();\n\n if (runtime.isDeno || runtime.isBrowser || runtime.isWebWorker) {\n return globalThis.fetch;\n }\n\n if (runtime.isNode || runtime.isBun) {\n try {\n // Try using built-in fetch first (Node 18+, Bun)\n if (typeof globalThis.fetch !== 'undefined') {\n return globalThis.fetch;\n }\n // Fallback to cross-fetch for older Node versions\n return require('cross-fetch');\n } catch {\n throw new Error('No fetch implementation available. Please install cross-fetch.');\n }\n }\n\n throw new Error('Unsupported runtime environment');\n}\n\n/**\n * Get the appropriate WebSocket implementation for the current runtime\n */\nexport function getWebSocket(): any {\n const runtime = detectRuntime();\n\n if (runtime.isDeno || runtime.isBrowser || runtime.isWebWorker) {\n return globalThis.WebSocket;\n }\n\n if (runtime.isNode || runtime.isBun) {\n try {\n return require('isomorphic-ws');\n } catch {\n throw new Error('No WebSocket implementation available. Please install isomorphic-ws.');\n }\n }\n\n throw new Error('Unsupported runtime environment');\n}\n\n/**\n * Get runtime-specific crypto implementation\n * Note: Node.js 16+ (and our minimum version of 18.17+) has native globalThis.crypto support\n */\nexport function getCrypto(): Crypto {\n const runtime = detectRuntime();\n\n if (runtime.isDeno || runtime.isBrowser || runtime.isWebWorker) {\n return globalThis.crypto;\n }\n\n if (runtime.isNode || runtime.isBun) {\n // Node.js 18.17+ and Bun have built-in crypto\n if (typeof globalThis.crypto !== 'undefined') {\n return globalThis.crypto;\n }\n throw new Error('No crypto implementation available. Please upgrade to Node.js 18.17+.');\n }\n\n throw new Error('Unsupported runtime environment');\n} "]}