{"version":3,"sources":["../src/runtime-detection.ts"],"names":[],"mappings":";;;;;;;;;;AAiBO,SAAS,aAAA,GAA6B;AAC3C,EAAA,MAAM,IAAA,GAAoB;AAAA,IACxB,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,KAAA;AAAA,IACR,MAAA,EAAQ,KAAA;AAAA,IACR,KAAA,EAAO,KAAA;AAAA,IACP,SAAA,EAAW,KAAA;AAAA,IACX,WAAA,EAAa;AAAA,GACf;AAGA,EAAA,IAAI,OAAQ,UAAA,CAAmB,IAAA,KAAS,WAAA,EAAa;AACnD,IAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,IAAA,IAAA,CAAK,OAAA,GAAW,UAAA,CAAmB,IAAA,CAAK,OAAA,EAAS,IAAA;AACjD,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAQ,UAAA,CAAmB,GAAA,KAAQ,WAAA,EAAa;AAClD,IAAA,IAAA,CAAK,IAAA,GAAO,KAAA;AACZ,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,IAAA,IAAA,CAAK,OAAA,GAAW,WAAmB,GAAA,CAAI,OAAA;AACvC,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,QAAQ,QAAA,IAAY,OAAA,CAAQ,SAAS,IAAA,EAAM;AAC/E,IAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,IAAA,IAAA,CAAK,OAAA,GAAU,QAAQ,QAAA,CAAS,IAAA;AAChC,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAQ,UAAA,CAAmB,aAAA,KAAkB,cAAc,OAAQ,UAAA,CAAmB,sBAAsB,WAAA,EAAa;AAC3H,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,IAAA,CAAK,IAAA,GAAO,SAAA;AACZ,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAKO,SAAS,QAAA,GAAyB;AACvC,EAAA,MAAM,UAAU,aAAA,EAAc;AAE9B,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,SAAA,IAAa,QAAQ,WAAA,EAAa;AAC9D,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AAEA,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,KAAA,EAAO;AACnC,IAAA,IAAI;AAEF,MAAA,IAAI,OAAO,UAAA,CAAW,KAAA,KAAU,WAAA,EAAa;AAC3C,QAAA,OAAO,UAAA,CAAW,KAAA;AAAA,MACpB;AAEA,MAAA,OAAO,UAAQ,aAAa,CAAA;AAAA,IAC9B,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,IAAI,MAAM,gEAAgE,CAAA;AAAA,IAClF;AAAA,EACF;AAEA,EAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AACnD;AAKO,SAAS,YAAA,GAAoB;AAClC,EAAA,MAAM,UAAU,aAAA,EAAc;AAE9B,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,SAAA,IAAa,QAAQ,WAAA,EAAa;AAC9D,IAAA,OAAO,UAAA,CAAW,SAAA;AAAA,EACpB;AAEA,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,KAAA,EAAO;AACnC,IAAA,IAAI;AACF,MAAA,OAAO,UAAQ,eAAe,CAAA;AAAA,IAChC,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,IAAI,MAAM,sEAAsE,CAAA;AAAA,IACxF;AAAA,EACF;AAEA,EAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AACnD;AAMO,SAAS,SAAA,GAAoB;AAClC,EAAA,MAAM,UAAU,aAAA,EAAc;AAE9B,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,SAAA,IAAa,QAAQ,WAAA,EAAa;AAC9D,IAAA,OAAO,UAAA,CAAW,MAAA;AAAA,EACpB;AAEA,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,KAAA,EAAO;AAEnC,IAAA,IAAI,OAAO,UAAA,CAAW,MAAA,KAAW,WAAA,EAAa;AAC5C,MAAA,OAAO,UAAA,CAAW,MAAA;AAAA,IACpB;AACA,IAAA,MAAM,IAAI,MAAM,uEAAuE,CAAA;AAAA,EACzF;AAEA,EAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AACnD","file":"runtime-detection.cjs","sourcesContent":["/**\r\n * Runtime detection utilities for cross-platform compatibility\r\n */\r\n\r\nexport interface RuntimeInfo {\r\n  name: 'node' | 'deno' | 'bun' | 'browser' | 'webworker' | 'unknown';\r\n  version?: string;\r\n  isNode: boolean;\r\n  isDeno: boolean;\r\n  isBun: boolean;\r\n  isBrowser: boolean;\r\n  isWebWorker: boolean;\r\n}\r\n\r\n/**\r\n * Detect the current JavaScript runtime environment\r\n */\r\nexport function detectRuntime(): RuntimeInfo {\r\n  const info: RuntimeInfo = {\r\n    name: 'unknown',\r\n    isNode: false,\r\n    isDeno: false,\r\n    isBun: false,\r\n    isBrowser: false,\r\n    isWebWorker: false,\r\n  };\r\n\r\n  // Check for Deno\r\n  if (typeof (globalThis as any).Deno !== 'undefined') {\r\n    info.name = 'deno';\r\n    info.isDeno = true;\r\n    info.version = (globalThis as any).Deno.version?.deno;\r\n    return info;\r\n  }\r\n\r\n  // Check for Bun\r\n  if (typeof (globalThis as any).Bun !== 'undefined') {\r\n    info.name = 'bun';\r\n    info.isBun = true;\r\n    info.version = (globalThis as any).Bun.version;\r\n    return info;\r\n  }\r\n\r\n  // Check for Node.js\r\n  if (typeof process !== 'undefined' && process.versions && process.versions.node) {\r\n    info.name = 'node';\r\n    info.isNode = true;\r\n    info.version = process.versions.node;\r\n    return info;\r\n  }\r\n\r\n  // Check for Web Worker\r\n  if (typeof (globalThis as any).importScripts === 'function' && typeof (globalThis as any).WorkerGlobalScope !== 'undefined') {\r\n    info.name = 'webworker';\r\n    info.isWebWorker = true;\r\n    return info;\r\n  }\r\n\r\n  // Check for Browser\r\n  if (typeof window !== 'undefined') {\r\n    info.name = 'browser';\r\n    info.isBrowser = true;\r\n    return info;\r\n  }\r\n\r\n  return info;\r\n}\r\n\r\n/**\r\n * Get the appropriate fetch implementation for the current runtime\r\n */\r\nexport function getFetch(): typeof fetch {\r\n  const runtime = detectRuntime();\r\n\r\n  if (runtime.isDeno || runtime.isBrowser || runtime.isWebWorker) {\r\n    return globalThis.fetch;\r\n  }\r\n\r\n  if (runtime.isNode || runtime.isBun) {\r\n    try {\r\n      // Try using built-in fetch first (Node 18+, Bun)\r\n      if (typeof globalThis.fetch !== 'undefined') {\r\n        return globalThis.fetch;\r\n      }\r\n      // Fallback to cross-fetch for older Node versions\r\n      return require('cross-fetch');\r\n    } catch {\r\n      throw new Error('No fetch implementation available. Please install cross-fetch.');\r\n    }\r\n  }\r\n\r\n  throw new Error('Unsupported runtime environment');\r\n}\r\n\r\n/**\r\n * Get the appropriate WebSocket implementation for the current runtime\r\n */\r\nexport function getWebSocket(): any {\r\n  const runtime = detectRuntime();\r\n\r\n  if (runtime.isDeno || runtime.isBrowser || runtime.isWebWorker) {\r\n    return globalThis.WebSocket;\r\n  }\r\n\r\n  if (runtime.isNode || runtime.isBun) {\r\n    try {\r\n      return require('isomorphic-ws');\r\n    } catch {\r\n      throw new Error('No WebSocket implementation available. Please install isomorphic-ws.');\r\n    }\r\n  }\r\n\r\n  throw new Error('Unsupported runtime environment');\r\n}\r\n\r\n/**\r\n * Get runtime-specific crypto implementation\r\n * Note: Node.js 16+ (and our minimum version of 18.17+) has native globalThis.crypto support\r\n */\r\nexport function getCrypto(): Crypto {\r\n  const runtime = detectRuntime();\r\n\r\n  if (runtime.isDeno || runtime.isBrowser || runtime.isWebWorker) {\r\n    return globalThis.crypto;\r\n  }\r\n\r\n  if (runtime.isNode || runtime.isBun) {\r\n    // Node.js 18.17+ and Bun have built-in crypto\r\n    if (typeof globalThis.crypto !== 'undefined') {\r\n      return globalThis.crypto;\r\n    }\r\n    throw new Error('No crypto implementation available. Please upgrade to Node.js 18.17+.');\r\n  }\r\n\r\n  throw new Error('Unsupported runtime environment');\r\n} "]}