{"version":3,"file":"os.cjs","names":[],"sources":["../../../src/components/connect/os.ts"],"sourcesContent":["export async function retrieveSystemAttributes() {\n  return {\n    cpuCores: await retrieveCpuCores(),\n    memBytes: await retrieveMemBytes(),\n    os: await retrieveOs(),\n  };\n}\n\n/**\n * The Deno environment, which is not always available.\n */\ndeclare const Deno: {\n  systemMemoryInfo: () => {\n    total: number;\n  };\n  addSignalListener: (signal: string, fn: () => void) => void;\n  removeSignalListener: (signal: string, fn: () => void) => void;\n  hostname: () => string;\n};\n\nasync function retrieveCpuCores() {\n  // Works for Deno, Node, Bun\n  try {\n    const os = await import(\"node:os\");\n    return os.cpus().length;\n  } catch (_err) {\n    // no-op\n  }\n\n  // Browser\n  try {\n    if (navigator && navigator.hardwareConcurrency) {\n      return navigator.hardwareConcurrency;\n    }\n  } catch (_err) {\n    // no-op\n  }\n\n  return 0;\n}\n\nasync function retrieveMemBytes() {\n  // Deno\n  try {\n    if (Deno) {\n      return Deno.systemMemoryInfo().total;\n    }\n  } catch (_err) {\n    // no-op\n  }\n\n  // Node, Bun\n  try {\n    const os = await import(\"node:os\");\n    return os.totalmem();\n  } catch (_err) {\n    // no-op\n  }\n\n  return 0;\n}\n\nasync function retrieveOs() {\n  // Deno, Node, Bun\n  try {\n    const os = await import(\"node:os\");\n    return os.platform();\n  } catch (_err) {\n    // no-op\n  }\n\n  // Browser\n  try {\n    if (navigator && navigator.platform) {\n      return navigator.platform;\n    }\n  } catch (_err) {\n    // no-op\n  }\n\n  return \"unknown\";\n}\n\nexport function onShutdown(signals: string[], fn: () => void) {\n  // Deno\n  try {\n    if (Deno) {\n      // biome-ignore lint/complexity/noForEach: intentional\n      signals.forEach((signal) => {\n        Deno.addSignalListener(signal, fn);\n      });\n      return () => {\n        // biome-ignore lint/complexity/noForEach: intentional\n        signals.forEach((signal) => {\n          Deno.removeSignalListener(signal, fn);\n        });\n      };\n    }\n  } catch (_err) {\n    // no-op\n  }\n\n  // Node, Bun\n  try {\n    if (process) {\n      // biome-ignore lint/complexity/noForEach: intentional\n      signals.forEach((signal) => {\n        process.on(signal, fn);\n      });\n      return () => {\n        // biome-ignore lint/complexity/noForEach: intentional\n        signals.forEach((signal) => {\n          process.removeListener(signal, fn);\n        });\n      };\n    }\n  } catch (_err) {\n    // no-op\n  }\n\n  return () => {};\n}\n\nexport async function getHostname() {\n  // Deno\n  try {\n    if (Deno) {\n      return Deno.hostname();\n    }\n  } catch (_err) {\n    // no-op\n  }\n\n  // Node, Bun\n  try {\n    const os = await import(\"node:os\");\n    return os.hostname();\n  } catch (_err) {\n    // no-op\n  }\n\n  return \"unknown\";\n}\n"],"mappings":";;AAAA,eAAsB,2BAA2B;AAC/C,QAAO;EACL,UAAU,MAAM,kBAAkB;EAClC,UAAU,MAAM,kBAAkB;EAClC,IAAI,MAAM,YAAY;EACvB;;AAeH,eAAe,mBAAmB;AAEhC,KAAI;AAEF,UADW,MAAM,OAAO,YACd,MAAM,CAAC;UACV,MAAM;AAKf,KAAI;AACF,MAAI,aAAa,UAAU,oBACzB,QAAO,UAAU;UAEZ,MAAM;AAIf,QAAO;;AAGT,eAAe,mBAAmB;AAEhC,KAAI;AACF,MAAI,KACF,QAAO,KAAK,kBAAkB,CAAC;UAE1B,MAAM;AAKf,KAAI;AAEF,UADW,MAAM,OAAO,YACd,UAAU;UACb,MAAM;AAIf,QAAO;;AAGT,eAAe,aAAa;AAE1B,KAAI;AAEF,UADW,MAAM,OAAO,YACd,UAAU;UACb,MAAM;AAKf,KAAI;AACF,MAAI,aAAa,UAAU,SACzB,QAAO,UAAU;UAEZ,MAAM;AAIf,QAAO;;AAGT,SAAgB,WAAW,SAAmB,IAAgB;AAE5D,KAAI;AACF,MAAI,MAAM;AAER,WAAQ,SAAS,WAAW;AAC1B,SAAK,kBAAkB,QAAQ,GAAG;KAClC;AACF,gBAAa;AAEX,YAAQ,SAAS,WAAW;AAC1B,UAAK,qBAAqB,QAAQ,GAAG;MACrC;;;UAGC,MAAM;AAKf,KAAI;AACF,MAAI,SAAS;AAEX,WAAQ,SAAS,WAAW;AAC1B,YAAQ,GAAG,QAAQ,GAAG;KACtB;AACF,gBAAa;AAEX,YAAQ,SAAS,WAAW;AAC1B,aAAQ,eAAe,QAAQ,GAAG;MAClC;;;UAGC,MAAM;AAIf,cAAa;;AAGf,eAAsB,cAAc;AAElC,KAAI;AACF,MAAI,KACF,QAAO,KAAK,UAAU;UAEjB,MAAM;AAKf,KAAI;AAEF,UADW,MAAM,OAAO,YACd,UAAU;UACb,MAAM;AAIf,QAAO"}