{"version":3,"file":"utils.js","names":[],"sources":["esm/daemon/utils.js"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nfunction getBundleIdFromConfig(root) {\n  const appJsonPath = path.join(root, \"app.json\");\n  if (!fs.existsSync(appJsonPath)) {\n    return void 0;\n  }\n  try {\n    const appConfig = JSON.parse(fs.readFileSync(appJsonPath, \"utf-8\"));\n    if (appConfig.expo?.ios?.bundleIdentifier) {\n      return appConfig.expo.ios.bundleIdentifier;\n    }\n    if (appConfig.expo?.android?.package) {\n      return appConfig.expo.android.package;\n    }\n    if (appConfig.expo?.slug) {\n      return appConfig.expo.slug;\n    }\n    if (appConfig.expo?.name) {\n      return appConfig.expo.name.toLowerCase().replace(/\\s+/g, \"-\");\n    }\n    if (appConfig.name) {\n      return appConfig.name.toLowerCase().replace(/\\s+/g, \"-\");\n    }\n    return void 0;\n  } catch {\n    return void 0;\n  }\n}\nconst MAX_PORT = 65535;\nfunction getAvailablePort(preferredPort, excludePort) {\n  return new Promise((resolve, reject) => {\n    import(\"node:net\").then((netModule) => {\n      const tryPort = (port) => {\n        if (port > MAX_PORT) {\n          reject(\n            new Error(`No available port found between ${preferredPort} and ${MAX_PORT}`)\n          );\n          return;\n        }\n        if (port === excludePort) {\n          tryPort(port + 1);\n          return;\n        }\n        const server = netModule.createServer();\n        server.once(\"error\", () => {\n          server.close();\n          tryPort(port + 1);\n        });\n        server.once(\"listening\", () => {\n          server.close(() => {\n            resolve(port);\n          });\n        });\n        server.listen(port, \"0.0.0.0\");\n      };\n      tryPort(preferredPort);\n    });\n  });\n}\nexport {\n  getAvailablePort,\n  getBundleIdFromConfig\n};\n//# sourceMappingURL=utils.js.map\n"],"mappings":";;;;AAEA,SAAS,sBAAsB,MAAM;CACnC,MAAM,cAAc,KAAK,KAAK,MAAM,UAAU;CAC9C,IAAI,CAAC,GAAG,WAAW,WAAW,GAAG;EAC/B,OAAO,KAAK;CACd;CACA,IAAI;EACF,MAAM,YAAY,KAAK,MAAM,GAAG,aAAa,aAAa,OAAO,CAAC;EAClE,IAAI,UAAU,MAAM,KAAK,kBAAkB;GACzC,OAAO,UAAU,KAAK,IAAI;EAC5B;EACA,IAAI,UAAU,MAAM,SAAS,SAAS;GACpC,OAAO,UAAU,KAAK,QAAQ;EAChC;EACA,IAAI,UAAU,MAAM,MAAM;GACxB,OAAO,UAAU,KAAK;EACxB;EACA,IAAI,UAAU,MAAM,MAAM;GACxB,OAAO,UAAU,KAAK,KAAK,YAAY,CAAC,CAAC,QAAQ,QAAQ,GAAG;EAC9D;EACA,IAAI,UAAU,MAAM;GAClB,OAAO,UAAU,KAAK,YAAY,CAAC,CAAC,QAAQ,QAAQ,GAAG;EACzD;EACA,OAAO,KAAK;CACd,QAAQ;EACN,OAAO,KAAK;CACd;AACF;AACA,MAAM,WAAW;AACjB,SAAS,iBAAiB,eAAe,aAAa;CACpD,OAAO,IAAI,SAAS,SAAS,WAAW;EACtC,OAAO,WAAW,CAAC,MAAM,cAAc;GACrC,MAAM,WAAW,SAAS;IACxB,IAAI,OAAO,UAAU;KACnB,OACE,IAAI,MAAM,mCAAmC,cAAc,OAAO,UAAU,CAC9E;KACA;IACF;IACA,IAAI,SAAS,aAAa;KACxB,QAAQ,OAAO,CAAC;KAChB;IACF;IACA,MAAM,SAAS,UAAU,aAAa;IACtC,OAAO,KAAK,eAAe;KACzB,OAAO,MAAM;KACb,QAAQ,OAAO,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,mBAAmB;KAC7B,OAAO,YAAY;MACjB,QAAQ,IAAI;KACd,CAAC;IACH,CAAC;IACD,OAAO,OAAO,MAAM,SAAS;GAC/B;GACA,QAAQ,aAAa;EACvB,CAAC;CACH,CAAC;AACH"}