{"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 */\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    try {\n      // Node.js 16+ has built-in crypto.webcrypto\n      if (typeof globalThis.crypto !== 'undefined') {\n        return globalThis.crypto;\n      }\n      // Fallback for older Node versions\n      return require('isomorphic-webcrypto');\n    } catch {\n      throw new Error('No crypto implementation available. Please install isomorphic-webcrypto.');\n    }\n  }\n\n  throw new Error('Unsupported runtime environment');\n} "]}