one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 13.4 kB
Source Map (JSON)
{"version":3,"file":"picker.js","names":[],"sources":["esm/daemon/picker.js"],"sourcesContent":["import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport * as readline from \"node:readline\";\nconst execAsync = promisify(exec);\nlet activePickerContext = null;\nlet rl = null;\nlet stdinDataListener = null;\nasync function getBootedSimulators() {\n try {\n const { stdout } = await execAsync(\"xcrun simctl list devices booted -j\");\n const data = JSON.parse(stdout);\n const simulators = [];\n for (const [runtime, devices] of Object.entries(data.devices || {})) {\n const versionMatch = runtime.match(/iOS-(\\d+)-(\\d+)/);\n const iosVersion = versionMatch ? `${versionMatch[1]}.${versionMatch[2]}` : void 0;\n for (const device of devices) {\n if (device.state === \"Booted\") {\n simulators.push({\n name: device.name,\n udid: device.udid,\n state: device.state,\n iosVersion\n });\n }\n }\n }\n return simulators;\n } catch {\n return [];\n }\n}\nasync function showMacOSDialog(bundleId, servers) {\n if (process.platform !== \"darwin\") {\n return null;\n }\n const simulators = await getBootedSimulators();\n let simInfo = \"\";\n if (simulators.length > 0) {\n const seen = /* @__PURE__ */ new Set();\n const uniqueSims = [];\n for (const sim of simulators) {\n const key = `${sim.name}-${sim.iosVersion || \"\"}`;\n if (!seen.has(key)) {\n seen.add(key);\n uniqueSims.push(sim.iosVersion ? `${sim.name} (iOS ${sim.iosVersion})` : sim.name);\n }\n }\n if (uniqueSims.length === 1) {\n simInfo = `\\\\n\\\\nFrom: ${uniqueSims[0]}`;\n } else {\n simInfo = `\\\\n\\\\nActive simulators: ${uniqueSims.slice(0, 3).join(\", \")}${uniqueSims.length > 3 ? \"...\" : \"\"}`;\n }\n }\n const choices = servers.map((s, i) => {\n const shortRoot = s.root.replace(process.env.HOME || \"\", \"~\");\n return `${i + 1}. ${shortRoot} (port ${s.port})`;\n });\n const choicesStr = choices.map((c) => `\"${c.replace(/\"/g, '\\\\\"')}\"`).join(\", \");\n const prompt = `${bundleId} bundle requested${simInfo}\\\\n\\\\nWhich project should serve it?`;\n const script = `choose from list {${choicesStr}} with title \"one daemon\" with prompt \"${prompt}\" default items {\"${choices[0].replace(/\"/g, '\\\\\"')}\"}`;\n try {\n const { stdout } = await execAsync(`osascript -e '${script}'`);\n const result = stdout.trim();\n if (result === \"false\" || !result) {\n return null;\n }\n const match = result.match(/^(\\d+)\\./);\n if (match) {\n const index = parseInt(match[1], 10) - 1;\n if (index >= 0 && index < servers.length) {\n return { server: servers[index], remember: false };\n }\n }\n return null;\n } catch {\n return null;\n }\n}\nfunction showPicker(context) {\n activePickerContext = context;\n if (process.platform === \"darwin\") {\n showMacOSDialog(context.bundleId, context.servers).then((result) => {\n if (result) {\n cleanupPicker();\n context.onSelect(result.server, result.remember);\n } else if (activePickerContext === context) {\n showTerminalPicker(context);\n }\n });\n return;\n }\n showTerminalPicker(context);\n}\nfunction showTerminalPicker(context) {\n console.log(\"\\n\" + \"\\u2500\".repeat(60));\n console.log(`\\u{1F500} ${context.bundleId} bundle requested`);\n console.log(\"\\u2500\".repeat(60));\n getBootedSimulators().then((sims) => {\n if (sims.length > 0) {\n const seen = /* @__PURE__ */ new Set();\n const uniqueSims = [];\n for (const sim of sims) {\n const key = `${sim.name}-${sim.iosVersion || \"\"}`;\n if (!seen.has(key)) {\n seen.add(key);\n uniqueSims.push(sim);\n }\n }\n if (uniqueSims.length === 1) {\n const sim = uniqueSims[0];\n console.log(\n `\nFrom: ${sim.name}${sim.iosVersion ? ` (iOS ${sim.iosVersion})` : \"\"}`\n );\n } else {\n console.log(\"\\nActive simulators:\");\n for (const sim of uniqueSims.slice(0, 5)) {\n console.log(\n ` \\u2022 ${sim.name}${sim.iosVersion ? ` (iOS ${sim.iosVersion})` : \"\"}`\n );\n }\n }\n }\n });\n console.log(\"\\nWhich project should serve it?\");\n context.servers.forEach((server, i) => {\n const shortRoot = server.root.replace(process.env.HOME || \"\", \"~\");\n console.log(` [${i + 1}] ${shortRoot} (port ${server.port})`);\n });\n console.log(\"\\nPress 1-\" + context.servers.length + \" to select\");\n console.log(\"Or 'r' + number to remember (e.g., 'r1')\");\n console.log(\"Press 'c' to cancel\\n\");\n setupKeyboardInput();\n}\nfunction setupKeyboardInput() {\n if (rl) return;\n rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n if (process.stdin.isTTY) {\n process.stdin.setRawMode(true);\n }\n process.stdin.resume();\n let buffer = \"\";\n stdinDataListener = (key) => {\n const str = key.toString();\n if (str === \"\u0003\") {\n cancelPicker();\n return;\n }\n if (str === \"\\x1B\") {\n cancelPicker();\n return;\n }\n if (str === \"\\x7F\") {\n buffer = buffer.slice(0, -1);\n return;\n }\n if (str === \"\\r\" || str === \"\\n\") {\n processInput(buffer);\n buffer = \"\";\n return;\n }\n buffer += str;\n if (buffer.length === 1 && /^[1-9]$/.test(buffer)) {\n processInput(buffer);\n buffer = \"\";\n } else if (buffer.length === 2 && /^r[1-9]$/i.test(buffer)) {\n processInput(buffer);\n buffer = \"\";\n } else if (buffer.toLowerCase() === \"c\") {\n cancelPicker();\n buffer = \"\";\n }\n };\n process.stdin.on(\"data\", stdinDataListener);\n const signalHandler = () => {\n cleanupPicker();\n process.exit(0);\n };\n process.on(\"SIGINT\", signalHandler);\n process.on(\"SIGTERM\", signalHandler);\n}\nfunction processInput(input) {\n if (!activePickerContext) return;\n const remember = input.toLowerCase().startsWith(\"r\");\n const numStr = remember ? input.slice(1) : input;\n const num = parseInt(numStr, 10);\n if (isNaN(num) || num < 1 || num > activePickerContext.servers.length) {\n console.log(`Invalid selection: ${input}`);\n return;\n }\n const server = activePickerContext.servers[num - 1];\n const context = activePickerContext;\n cleanupPicker();\n context.onSelect(server, remember);\n}\nfunction cancelPicker() {\n const context = activePickerContext;\n cleanupPicker();\n if (context) {\n context.onCancel();\n }\n}\nfunction cleanupPicker() {\n activePickerContext = null;\n if (stdinDataListener) {\n process.stdin.removeListener(\"data\", stdinDataListener);\n stdinDataListener = null;\n }\n if (rl) {\n rl.close();\n rl = null;\n }\n if (process.stdin.isTTY) {\n process.stdin.setRawMode(false);\n }\n}\nlet pendingPickerResolvers = /* @__PURE__ */ new Map();\nfunction resolvePendingPicker(bundleId, serverId) {\n const resolver = pendingPickerResolvers.get(bundleId);\n if (!resolver || !activePickerContext) return false;\n const server = activePickerContext.servers.find((s) => s.id === serverId);\n if (!server) return false;\n pendingPickerResolvers.delete(bundleId);\n cleanupPicker();\n resolver.resolve(server);\n return true;\n}\nfunction pickServer(bundleId, servers) {\n return new Promise((resolve, reject) => {\n pendingPickerResolvers.set(bundleId, {\n resolve: (server) => resolve({ server, remember: false }),\n reject\n });\n showPicker({\n bundleId,\n servers,\n onSelect: (server, remember) => {\n pendingPickerResolvers.delete(bundleId);\n resolve({ server, remember });\n },\n onCancel: () => {\n pendingPickerResolvers.delete(bundleId);\n reject(new Error(\"Selection cancelled\"));\n }\n });\n });\n}\nexport {\n getBootedSimulators,\n pickServer,\n resolvePendingPicker,\n showPicker\n};\n//# sourceMappingURL=picker.js.map\n"],"mappings":"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"}