UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

294 lines (292 loc) 11.1 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var daemon_exports = {}; __export(daemon_exports, { daemon: () => daemon, openPlatform: () => openPlatform }); module.exports = __toCommonJS(daemon_exports); var import_picocolors = __toESM(require("picocolors"), 1); var import_label_process = require("./label-process.native.js"); async function daemon(args) { var subcommand = args.subcommand || "run"; switch (subcommand) { case "run": case "start": return daemonStart(args); case "stop": return daemonStop(); case "status": return daemonStatus(); case "route": return daemonRoute(args); default: console.log(`Unknown daemon subcommand: ${subcommand}`); console.log("Available: start, stop, status, route"); process.exit(1); } } async function daemonStart(args) { var _args_tui; (0, import_label_process.labelProcess)("daemon"); var { isDaemonRunning } = await import("../daemon/ipc"); if (await isDaemonRunning()) { console.log(import_picocolors.default.yellow("Daemon is already running")); console.log("Use 'one daemon status' to see registered servers"); process.exit(1); } await suggestTrayApp(); var { startDaemon } = await import("../daemon/server"); var useTUI = (_args_tui = args.tui) !== null && _args_tui !== void 0 ? _args_tui : process.stdin.isTTY; var { state } = await startDaemon({ port: args.port ? parseInt(args.port, 10) : void 0, host: args.host, quiet: useTUI }); if (useTUI) { var { startTUI } = await import("../daemon/tui"); startTUI(state); } } async function daemonStop() { var { isDaemonRunning, getSocketPath } = await import("../daemon/ipc"); if (!(await isDaemonRunning())) { console.log(import_picocolors.default.yellow("Daemon is not running")); process.exit(1); } console.log(import_picocolors.default.yellow("Note: daemon runs in foreground. Press Ctrl+C in the daemon terminal to stop.")); console.log(import_picocolors.default.dim(`Socket path: ${getSocketPath()}`)); } async function daemonStatus() { var { isDaemonRunning, getDaemonStatus, getLastActiveDaemonServer } = await import("../daemon/ipc"); if (!(await isDaemonRunning())) { console.log(import_picocolors.default.yellow("Daemon is not running")); console.log(import_picocolors.default.dim("Start with 'one daemon'")); process.exit(1); } try { var status = await getDaemonStatus(); var lastActive = await getLastActiveDaemonServer(); console.log(import_picocolors.default.cyan("\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")); console.log(import_picocolors.default.cyan(" one daemon status")); console.log(import_picocolors.default.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n")); if (status.servers.length === 0) { console.log(import_picocolors.default.dim(" No servers registered")); } else { console.log(" Registered servers:"); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = status.servers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var server = _step.value; var shortRoot = server.root.replace(process.env.HOME || "", "~"); var isActive = (lastActive === null || lastActive === void 0 ? void 0 : lastActive.id) === server.id; var activeMarker = isActive ? import_picocolors.default.yellow(" \u2605") : ""; console.log(` ${import_picocolors.default.green(server.id)} ${server.bundleId} \u2192 :${server.port} (${shortRoot})${activeMarker}`); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } if (lastActive) { console.log(import_picocolors.default.dim("\n \u2605 = last active (used by oi/oa)")); } } if (status.routes.length > 0) { console.log("\n Active routes:"); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0; try { for (var _iterator1 = status.routes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { var route = _step1.value; console.log(` ${route.key} \u2192 ${route.serverId}`); } } catch (err) { _didIteratorError1 = true; _iteratorError1 = err; } finally { try { if (!_iteratorNormalCompletion1 && _iterator1.return != null) { _iterator1.return(); } } finally { if (_didIteratorError1) { throw _iteratorError1; } } } } console.log(""); } catch (err) { console.log(import_picocolors.default.red("Failed to get daemon status")); console.error(err); process.exit(1); } } async function openPlatform(platform) { var { isDaemonRunning, getDaemonStatus, setDaemonRoute, touchDaemonServer } = await import("../daemon/ipc"); var { getBundleIdFromConfig } = await import("../daemon/utils"); var cwd = process.cwd(); var bundleId = getBundleIdFromConfig(cwd); if (!bundleId) { console.log(import_picocolors.default.yellow("No app.json found in current directory")); console.log(import_picocolors.default.dim("Run this command from a One project directory")); process.exit(1); } if (await isDaemonRunning()) { try { var status = await getDaemonStatus(); var server = status.servers.find(function (s) { return s.root === cwd; }); if (server) { await setDaemonRoute(bundleId, server.id); await touchDaemonServer(server.id); console.log(import_picocolors.default.cyan(`[daemon] Route set: ${bundleId} \u2192 this project`)); } else { console.log(import_picocolors.default.yellow(`[daemon] No server registered for this project`)); console.log(import_picocolors.default.dim(`Run 'one dev' first, or the simulator will connect directly`)); } } catch (err) { console.log(import_picocolors.default.dim(`[daemon] Could not set route: ${err}`)); } } if (platform === "ios") { var { run } = await import("./runIos"); await run({}); } else { var { run: run1 } = await import("./runAndroid"); await run1({}); } } async function daemonRoute(args) { var { isDaemonRunning, getDaemonStatus, setDaemonRoute } = await import("../daemon/ipc"); if (!(await isDaemonRunning())) { console.log(import_picocolors.default.yellow("Daemon is not running")); process.exit(1); } if (!args.app) { console.log(import_picocolors.default.red("Missing --app parameter")); console.log("Usage: one daemon route --app=com.example.app --slot=0"); console.log(" or: one daemon route --app=com.example.app --project=~/myapp"); process.exit(1); } var status = await getDaemonStatus(); var targetServer; if (args.slot !== void 0) { var slotIndex = parseInt(args.slot, 10); var matchingServers = status.servers.filter(function (s) { return s.bundleId === args.app; }); if (slotIndex < 0 || slotIndex >= matchingServers.length) { console.log(import_picocolors.default.red(`Invalid slot: ${args.slot}`)); console.log(`Available slots for ${args.app}: 0-${matchingServers.length - 1}`); process.exit(1); } targetServer = matchingServers[slotIndex]; } else if (args.project) { var normalizedProject = args.project.replace(/^~/, process.env.HOME || ""); targetServer = status.servers.find(function (s) { return s.bundleId === args.app && s.root === normalizedProject; }); if (!targetServer) { console.log(import_picocolors.default.red(`No server found for ${args.app} at ${args.project}`)); process.exit(1); } } else { console.log(import_picocolors.default.red("Missing --slot or --project parameter")); process.exit(1); } await setDaemonRoute(args.app, targetServer.id); var shortRoot = targetServer.root.replace(process.env.HOME || "", "~"); console.log(import_picocolors.default.green(`Route set: ${args.app} \u2192 ${targetServer.id} (${shortRoot})`)); } async function suggestTrayApp() { var { existsSync } = await import("fs"); var trayPaths = ["/Applications/OneTray.app", `${process.env.HOME}/Applications/OneTray.app`]; var installed = trayPaths.some(function (p) { return existsSync(p); }); if (!installed) { console.log(import_picocolors.default.dim(" Tip: install OneTray.app for a native macOS cable interface")); console.log(import_picocolors.default.dim(" https://github.com/onejs/one/releases?q=one-tray")); console.log(""); } } //# sourceMappingURL=daemon.native.js.map