one
Version:
One is a new React Framework that makes Vite serve both native and web.
294 lines (292 loc) • 11.1 kB
JavaScript
;
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