one 1.2.83 → 1.2.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/devtools/dev.mjs +44 -0
- package/devtools/devtools.mjs +540 -0
- package/devtools/source-inspector.mjs +201 -0
- package/dist/cjs/cli/daemon.cjs +136 -0
- package/dist/cjs/cli/daemon.js +112 -0
- package/dist/cjs/cli/daemon.js.map +6 -0
- package/dist/cjs/cli/daemon.native.js +173 -0
- package/dist/cjs/cli/daemon.native.js.map +1 -0
- package/dist/cjs/createHandleRequest.cjs +15 -8
- package/dist/cjs/createHandleRequest.js +10 -6
- package/dist/cjs/createHandleRequest.js.map +1 -1
- package/dist/cjs/createHandleRequest.native.js +8 -3
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/daemon/index.cjs +24 -0
- package/dist/cjs/daemon/index.js +21 -0
- package/dist/cjs/daemon/index.js.map +6 -0
- package/dist/cjs/daemon/index.native.js +27 -0
- package/dist/cjs/daemon/index.native.js.map +1 -0
- package/dist/cjs/daemon/ipc.cjs +235 -0
- package/dist/cjs/daemon/ipc.js +204 -0
- package/dist/cjs/daemon/ipc.js.map +6 -0
- package/dist/cjs/daemon/ipc.native.js +276 -0
- package/dist/cjs/daemon/ipc.native.js.map +1 -0
- package/dist/cjs/daemon/picker.cjs +223 -0
- package/dist/cjs/daemon/picker.js +191 -0
- package/dist/cjs/daemon/picker.js.map +6 -0
- package/dist/cjs/daemon/picker.native.js +308 -0
- package/dist/cjs/daemon/picker.native.js.map +1 -0
- package/dist/cjs/daemon/proxy.cjs +75 -0
- package/dist/cjs/daemon/proxy.js +70 -0
- package/dist/cjs/daemon/proxy.js.map +6 -0
- package/dist/cjs/daemon/proxy.native.js +81 -0
- package/dist/cjs/daemon/proxy.native.js.map +1 -0
- package/dist/cjs/daemon/registry.cjs +85 -0
- package/dist/cjs/daemon/registry.js +81 -0
- package/dist/cjs/daemon/registry.js.map +6 -0
- package/dist/cjs/daemon/registry.native.js +120 -0
- package/dist/cjs/daemon/registry.native.js.map +1 -0
- package/dist/cjs/daemon/server.cjs +178 -0
- package/dist/cjs/daemon/server.js +179 -0
- package/dist/cjs/daemon/server.js.map +6 -0
- package/dist/cjs/daemon/server.native.js +200 -0
- package/dist/cjs/daemon/server.native.js.map +1 -0
- package/dist/cjs/daemon/tui.cjs +223 -0
- package/dist/cjs/daemon/tui.js +192 -0
- package/dist/cjs/daemon/tui.js.map +6 -0
- package/dist/cjs/daemon/tui.native.js +234 -0
- package/dist/cjs/daemon/tui.native.js.map +1 -0
- package/dist/cjs/daemon/types.cjs +16 -0
- package/dist/cjs/daemon/types.js +14 -0
- package/dist/cjs/daemon/types.js.map +6 -0
- package/dist/cjs/daemon/types.native.js +19 -0
- package/dist/cjs/daemon/types.native.js.map +1 -0
- package/dist/cjs/daemon/utils.cjs +74 -0
- package/dist/cjs/daemon/utils.js +65 -0
- package/dist/cjs/daemon/utils.js.map +6 -0
- package/dist/cjs/daemon/utils.native.js +83 -0
- package/dist/cjs/daemon/utils.native.js.map +1 -0
- package/dist/cjs/fork/createMemoryHistory.cjs +22 -8
- package/dist/cjs/fork/createMemoryHistory.js +20 -6
- package/dist/cjs/fork/createMemoryHistory.js.map +1 -1
- package/dist/cjs/fork/createMemoryHistory.native.js +22 -8
- package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
- package/dist/cjs/fork/useLinking.cjs +52 -13
- package/dist/cjs/fork/useLinking.js +35 -10
- package/dist/cjs/fork/useLinking.js.map +1 -1
- package/dist/cjs/index.cjs +6 -2
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/index.native.js +6 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/router/linkingConfig.cjs +13 -2
- package/dist/cjs/router/linkingConfig.js +14 -5
- package/dist/cjs/router/linkingConfig.js.map +1 -1
- package/dist/cjs/router/linkingConfig.native.js +10 -1
- package/dist/cjs/router/linkingConfig.native.js.map +1 -1
- package/dist/cjs/router/routeMask.cjs +137 -0
- package/dist/cjs/router/routeMask.js +127 -0
- package/dist/cjs/router/routeMask.js.map +6 -0
- package/dist/cjs/router/routeMask.native.js +160 -0
- package/dist/cjs/router/routeMask.native.js.map +1 -0
- package/dist/cjs/router/router.cjs +26 -3
- package/dist/cjs/router/router.js +23 -3
- package/dist/cjs/router/router.js.map +1 -1
- package/dist/cjs/router/router.native.js +26 -3
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/server/PreloadScripts.native.js +45 -39
- package/dist/cjs/server/PreloadScripts.native.js.map +1 -6
- package/dist/cjs/vite/DevHead.cjs +2 -909
- package/dist/cjs/vite/DevHead.js +1 -917
- package/dist/cjs/vite/DevHead.js.map +1 -1
- package/dist/cjs/vite/DevHead.native.js +1 -882
- package/dist/cjs/vite/DevHead.native.js.map +1 -1
- package/dist/cjs/vite/one.cjs +4 -1
- package/dist/cjs/vite/one.js +4 -2
- package/dist/cjs/vite/one.js.map +1 -1
- package/dist/cjs/vite/one.native.js +4 -1
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/cjs/vite/plugins/devtoolsPlugin.cjs +55 -0
- package/dist/cjs/vite/plugins/devtoolsPlugin.js +49 -0
- package/dist/cjs/vite/plugins/devtoolsPlugin.js.map +6 -0
- package/dist/cjs/vite/plugins/devtoolsPlugin.native.js +58 -0
- package/dist/cjs/vite/plugins/devtoolsPlugin.native.js.map +1 -0
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +1 -6
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +1 -6
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +1 -6
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +7 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.js +5 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +8 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/esm/cli/daemon.js +89 -0
- package/dist/esm/cli/daemon.js.map +6 -0
- package/dist/esm/cli/daemon.mjs +102 -0
- package/dist/esm/cli/daemon.mjs.map +1 -0
- package/dist/esm/cli/daemon.native.js +136 -0
- package/dist/esm/cli/daemon.native.js.map +1 -0
- package/dist/esm/createHandleRequest.js +10 -5
- package/dist/esm/createHandleRequest.js.map +1 -1
- package/dist/esm/createHandleRequest.mjs +15 -8
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +8 -3
- package/dist/esm/createHandleRequest.native.js.map +1 -1
- package/dist/esm/daemon/index.js +8 -0
- package/dist/esm/daemon/index.js.map +6 -0
- package/dist/esm/daemon/index.mjs +8 -0
- package/dist/esm/daemon/index.mjs.map +1 -0
- package/dist/esm/daemon/index.native.js +8 -0
- package/dist/esm/daemon/index.native.js.map +1 -0
- package/dist/esm/daemon/ipc.js +192 -0
- package/dist/esm/daemon/ipc.js.map +6 -0
- package/dist/esm/daemon/ipc.mjs +191 -0
- package/dist/esm/daemon/ipc.mjs.map +1 -0
- package/dist/esm/daemon/ipc.native.js +229 -0
- package/dist/esm/daemon/ipc.native.js.map +1 -0
- package/dist/esm/daemon/picker.js +169 -0
- package/dist/esm/daemon/picker.js.map +6 -0
- package/dist/esm/daemon/picker.mjs +186 -0
- package/dist/esm/daemon/picker.mjs.map +1 -0
- package/dist/esm/daemon/picker.native.js +268 -0
- package/dist/esm/daemon/picker.native.js.map +1 -0
- package/dist/esm/daemon/proxy.js +47 -0
- package/dist/esm/daemon/proxy.js.map +6 -0
- package/dist/esm/daemon/proxy.mjs +40 -0
- package/dist/esm/daemon/proxy.mjs.map +1 -0
- package/dist/esm/daemon/proxy.native.js +43 -0
- package/dist/esm/daemon/proxy.native.js.map +1 -0
- package/dist/esm/daemon/registry.js +65 -0
- package/dist/esm/daemon/registry.js.map +6 -0
- package/dist/esm/daemon/registry.mjs +53 -0
- package/dist/esm/daemon/registry.mjs.map +1 -0
- package/dist/esm/daemon/registry.native.js +85 -0
- package/dist/esm/daemon/registry.native.js.map +1 -0
- package/dist/esm/daemon/server.js +167 -0
- package/dist/esm/daemon/server.js.map +6 -0
- package/dist/esm/daemon/server.mjs +143 -0
- package/dist/esm/daemon/server.mjs.map +1 -0
- package/dist/esm/daemon/server.native.js +162 -0
- package/dist/esm/daemon/server.native.js.map +1 -0
- package/dist/esm/daemon/tui.js +171 -0
- package/dist/esm/daemon/tui.js.map +6 -0
- package/dist/esm/daemon/tui.mjs +187 -0
- package/dist/esm/daemon/tui.mjs.map +1 -0
- package/dist/esm/daemon/tui.native.js +195 -0
- package/dist/esm/daemon/tui.native.js.map +1 -0
- package/dist/esm/daemon/types.js +1 -0
- package/dist/esm/daemon/types.js.map +6 -0
- package/dist/esm/daemon/types.mjs +2 -0
- package/dist/esm/daemon/types.mjs.map +1 -0
- package/dist/esm/daemon/types.native.js +2 -0
- package/dist/esm/daemon/types.native.js.map +1 -0
- package/dist/esm/daemon/utils.js +42 -0
- package/dist/esm/daemon/utils.js.map +6 -0
- package/dist/esm/daemon/utils.mjs +39 -0
- package/dist/esm/daemon/utils.mjs.map +1 -0
- package/dist/esm/daemon/utils.native.js +45 -0
- package/dist/esm/daemon/utils.native.js.map +1 -0
- package/dist/esm/fork/createMemoryHistory.js +20 -6
- package/dist/esm/fork/createMemoryHistory.js.map +1 -1
- package/dist/esm/fork/createMemoryHistory.mjs +22 -8
- package/dist/esm/fork/createMemoryHistory.mjs.map +1 -1
- package/dist/esm/fork/createMemoryHistory.native.js +22 -8
- package/dist/esm/fork/createMemoryHistory.native.js.map +1 -1
- package/dist/esm/fork/useLinking.js +35 -9
- package/dist/esm/fork/useLinking.js.map +1 -1
- package/dist/esm/fork/useLinking.mjs +52 -13
- package/dist/esm/fork/useLinking.mjs.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/router/linkingConfig.js +14 -4
- package/dist/esm/router/linkingConfig.js.map +1 -1
- package/dist/esm/router/linkingConfig.mjs +12 -1
- package/dist/esm/router/linkingConfig.mjs.map +1 -1
- package/dist/esm/router/linkingConfig.native.js +10 -1
- package/dist/esm/router/linkingConfig.native.js.map +1 -1
- package/dist/esm/router/routeMask.js +111 -0
- package/dist/esm/router/routeMask.js.map +6 -0
- package/dist/esm/router/routeMask.mjs +108 -0
- package/dist/esm/router/routeMask.mjs.map +1 -0
- package/dist/esm/router/routeMask.native.js +128 -0
- package/dist/esm/router/routeMask.native.js.map +1 -0
- package/dist/esm/router/router.js +23 -2
- package/dist/esm/router/router.js.map +1 -1
- package/dist/esm/router/router.mjs +24 -3
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +24 -3
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/server/PreloadScripts.native.js +29 -33
- package/dist/esm/server/PreloadScripts.native.js.map +1 -6
- package/dist/esm/vite/DevHead.js +1 -917
- package/dist/esm/vite/DevHead.js.map +1 -1
- package/dist/esm/vite/DevHead.mjs +2 -909
- package/dist/esm/vite/DevHead.mjs.map +1 -1
- package/dist/esm/vite/DevHead.native.js +0 -881
- package/dist/esm/vite/DevHead.native.js.map +1 -1
- package/dist/esm/vite/one.js +4 -1
- package/dist/esm/vite/one.js.map +1 -1
- package/dist/esm/vite/one.mjs +4 -1
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +4 -1
- package/dist/esm/vite/one.native.js.map +1 -1
- package/dist/esm/vite/plugins/devtoolsPlugin.js +33 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.js.map +6 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.mjs +31 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.mjs.map +1 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.native.js +31 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.native.js.map +1 -0
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +1 -6
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +1 -6
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +1 -6
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.js +5 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +7 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +8 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/package.json +12 -10
- package/src/createHandleRequest.ts +16 -3
- package/src/fork/createMemoryHistory.tsx +39 -4
- package/src/fork/useLinking.ts +83 -12
- package/src/index.ts +3 -0
- package/src/router/linkingConfig.ts +21 -4
- package/src/router/routeMask.ts +293 -0
- package/src/router/router.ts +53 -1
- package/src/vite/DevHead.tsx +1 -924
- package/src/vite/one.ts +4 -0
- package/src/vite/plugins/devtoolsPlugin.ts +45 -0
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +2 -7
- package/src/vite/plugins/virtualEntryPlugin.ts +12 -3
- package/src/vite/types.ts +1 -0
- package/types/cli/daemon.d.ts.map +1 -0
- package/types/createHandleRequest.d.ts.map +1 -1
- package/types/daemon/index.d.ts.map +1 -0
- package/types/daemon/ipc.d.ts.map +1 -0
- package/types/daemon/picker.d.ts.map +1 -0
- package/types/daemon/proxy.d.ts.map +1 -0
- package/types/daemon/registry.d.ts.map +1 -0
- package/types/daemon/server.d.ts.map +1 -0
- package/types/daemon/tui.d.ts.map +1 -0
- package/types/daemon/types.d.ts.map +1 -0
- package/types/daemon/utils.d.ts.map +1 -0
- package/types/fork/createMemoryHistory.d.ts +6 -2
- package/types/fork/createMemoryHistory.d.ts.map +1 -1
- package/types/fork/useLinking.d.ts.map +1 -1
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -1
- package/types/router/linkingConfig.d.ts.map +1 -1
- package/types/router/routeMask.d.ts +130 -0
- package/types/router/routeMask.d.ts.map +1 -0
- package/types/router/router.d.ts +23 -0
- package/types/router/router.d.ts.map +1 -1
- package/types/vite/DevHead.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/plugins/devtoolsPlugin.d.ts +5 -0
- package/types/vite/plugins/devtoolsPlugin.d.ts.map +1 -0
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
- package/types/vite/plugins/virtualEntryPlugin.d.ts +1 -3
- package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts.map +1 -1
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf,
|
|
8
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: !0
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
__copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
17
|
+
get: () => from[key],
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: !0
|
|
30
|
+
}) : target, mod)),
|
|
31
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
+
value: !0
|
|
33
|
+
}), mod);
|
|
34
|
+
var server_exports = {};
|
|
35
|
+
__export(server_exports, {
|
|
36
|
+
setRouteMode: () => setRouteMode,
|
|
37
|
+
startDaemon: () => startDaemon
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(server_exports);
|
|
40
|
+
var http = __toESM(require("http"), 1),
|
|
41
|
+
import_registry = require("./registry.native.js"),
|
|
42
|
+
import_ipc = require("./ipc.native.js"),
|
|
43
|
+
import_proxy = require("./proxy.native.js"),
|
|
44
|
+
import_picker = require("./picker.native.js"),
|
|
45
|
+
import_picocolors = __toESM(require("picocolors"), 1),
|
|
46
|
+
DEFAULT_PORT = 8081,
|
|
47
|
+
routeModeOverride = null;
|
|
48
|
+
function setRouteMode(mode) {
|
|
49
|
+
routeModeOverride = mode;
|
|
50
|
+
}
|
|
51
|
+
async function startDaemon() {
|
|
52
|
+
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
|
|
53
|
+
port = options.port || DEFAULT_PORT,
|
|
54
|
+
host = options.host || "0.0.0.0",
|
|
55
|
+
quiet = options.quiet || !1,
|
|
56
|
+
log = quiet ? function () {
|
|
57
|
+
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) _args[_key] = arguments[_key];
|
|
58
|
+
} : console.log,
|
|
59
|
+
state = (0, import_registry.createRegistry)(),
|
|
60
|
+
ipcServer = (0, import_ipc.createIPCServer)(state, function (id) {
|
|
61
|
+
var server = (0, import_registry.findServerById)(state, id);
|
|
62
|
+
if (server) {
|
|
63
|
+
var shortRoot = server.root.replace(process.env.HOME || "", "~");
|
|
64
|
+
log(import_picocolors.default.green(`[daemon] Server registered: ${server.bundleId} \u2192 :${server.port} (${shortRoot})`));
|
|
65
|
+
}
|
|
66
|
+
}, function (id) {
|
|
67
|
+
log(import_picocolors.default.yellow(`[daemon] Server unregistered: ${id}`));
|
|
68
|
+
}),
|
|
69
|
+
httpServer = http.createServer(async function (req, res) {
|
|
70
|
+
var _req_url;
|
|
71
|
+
if (!((_req_url = req.url) === null || _req_url === void 0) && _req_url.startsWith("/__daemon")) {
|
|
72
|
+
await handleDaemonEndpoint(req, res, state);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
var url = new URL(req.url || "/", `http://${req.headers.host}`),
|
|
76
|
+
bundleId = url.searchParams.get("app"),
|
|
77
|
+
servers = bundleId ? (0, import_registry.findServersByBundleId)(state, bundleId) : (0, import_registry.getAllServers)(state);
|
|
78
|
+
if (servers.length === 0) {
|
|
79
|
+
res.writeHead(404), res.end(bundleId ? `No server registered for app: ${bundleId}` : "No servers registered with daemon");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (servers.length === 1) {
|
|
83
|
+
(0, import_proxy.proxyHttpRequest)(req, res, servers[0]);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
var routeKey = bundleId || "default",
|
|
87
|
+
existingRoute = (0, import_registry.getRoute)(state, routeKey);
|
|
88
|
+
if (existingRoute) {
|
|
89
|
+
var server = (0, import_registry.findServerById)(state, existingRoute.serverId);
|
|
90
|
+
if (server) {
|
|
91
|
+
(0, import_proxy.proxyHttpRequest)(req, res, server);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
var useAutoRoute = routeModeOverride === "most-recent" || !routeModeOverride && (!process.stdin.isTTY || process.env.CI);
|
|
96
|
+
if (useAutoRoute) {
|
|
97
|
+
var mostRecent = [...servers].sort(function (a, b) {
|
|
98
|
+
return b.registeredAt - a.registeredAt;
|
|
99
|
+
})[0];
|
|
100
|
+
(0, import_registry.setRoute)(state, routeKey, mostRecent.id), log(import_picocolors.default.yellow(`[daemon] Auto-routing ${bundleId} \u2192 ${mostRecent.root} (most recent, remembered)`)), (0, import_proxy.proxyHttpRequest)(req, res, mostRecent);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
var PICKER_TIMEOUT = 3e4,
|
|
104
|
+
timeoutPromise = new Promise(function (_, reject) {
|
|
105
|
+
setTimeout(function () {
|
|
106
|
+
return reject(new Error("Picker timeout"));
|
|
107
|
+
}, PICKER_TIMEOUT);
|
|
108
|
+
});
|
|
109
|
+
try {
|
|
110
|
+
var {
|
|
111
|
+
server: server1,
|
|
112
|
+
remember
|
|
113
|
+
} = await Promise.race([(0, import_picker.pickServer)(routeKey, servers), timeoutPromise]);
|
|
114
|
+
remember && ((0, import_registry.setRoute)(state, routeKey, server1.id), log(import_picocolors.default.blue(`[daemon] Route saved: ${routeKey} \u2192 ${server1.id}`))), (0, import_proxy.proxyHttpRequest)(req, res, server1);
|
|
115
|
+
} catch {
|
|
116
|
+
var mostRecent1 = [...servers].sort(function (a, b) {
|
|
117
|
+
return b.registeredAt - a.registeredAt;
|
|
118
|
+
})[0];
|
|
119
|
+
log(import_picocolors.default.yellow(`[daemon] Picker timeout/cancelled: routing to most recent (${mostRecent1.root})`)), (0, import_proxy.proxyHttpRequest)(req, res, mostRecent1);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
httpServer.on("upgrade", async function (req, rawSocket, head) {
|
|
123
|
+
var socket = rawSocket,
|
|
124
|
+
url = new URL(req.url || "/", `http://${req.headers.host}`),
|
|
125
|
+
bundleId = url.searchParams.get("app"),
|
|
126
|
+
servers = bundleId ? (0, import_registry.findServersByBundleId)(state, bundleId) : (0, import_registry.getAllServers)(state);
|
|
127
|
+
if (servers.length === 0) {
|
|
128
|
+
socket.end(`HTTP/1.1 404 Not Found\r
|
|
129
|
+
\r
|
|
130
|
+
`);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
var target;
|
|
134
|
+
if (servers.length === 1) target = servers[0];else {
|
|
135
|
+
var routeKey = bundleId || "default",
|
|
136
|
+
existingRoute = (0, import_registry.getRoute)(state, routeKey);
|
|
137
|
+
if (existingRoute && (target = (0, import_registry.findServerById)(state, existingRoute.serverId)), !target) {
|
|
138
|
+
var mostRecent = [...servers].sort(function (a, b) {
|
|
139
|
+
return b.registeredAt - a.registeredAt;
|
|
140
|
+
})[0];
|
|
141
|
+
(0, import_registry.setRoute)(state, routeKey, mostRecent.id), log(import_picocolors.default.yellow(`[daemon] WebSocket: routing ${bundleId} \u2192 ${mostRecent.root} (most recent, remembered)`)), target = mostRecent;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
target ? (0, import_proxy.proxyWebSocket)(req, socket, head, target) : socket.end(`HTTP/1.1 404 Not Found\r
|
|
145
|
+
\r
|
|
146
|
+
`);
|
|
147
|
+
}), httpServer.listen(port, host, function () {
|
|
148
|
+
log(import_picocolors.default.cyan(`
|
|
149
|
+
\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`)), log(import_picocolors.default.cyan(" one daemon")), 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")), log(`
|
|
150
|
+
Listening on ${import_picocolors.default.green(`http://${host === "0.0.0.0" ? "localhost" : host}:${port}`)}`), log(` IPC socket: ${import_picocolors.default.dim((0, import_ipc.getSocketPath)())}`), log(""), log(import_picocolors.default.dim(" Waiting for dev servers to register...")), log(import_picocolors.default.dim(" Run 'one dev' in your project directories")), log("");
|
|
151
|
+
});
|
|
152
|
+
var shutdown = function () {
|
|
153
|
+
log(import_picocolors.default.yellow(`
|
|
154
|
+
[daemon] Shutting down...`)), httpServer.close(), ipcServer.close(), (0, import_ipc.cleanupSocket)(), process.exit(0);
|
|
155
|
+
};
|
|
156
|
+
return process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown), {
|
|
157
|
+
httpServer,
|
|
158
|
+
ipcServer,
|
|
159
|
+
state,
|
|
160
|
+
shutdown
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
async function handleDaemonEndpoint(req, res, state) {
|
|
164
|
+
var url = new URL(req.url || "/", `http://${req.headers.host}`);
|
|
165
|
+
if (url.pathname === "/__daemon/status") {
|
|
166
|
+
var servers = (0, import_registry.getAllServers)(state),
|
|
167
|
+
simulators = await (0, import_picker.getBootedSimulators)();
|
|
168
|
+
res.writeHead(200, {
|
|
169
|
+
"Content-Type": "application/json"
|
|
170
|
+
}), res.end(JSON.stringify({
|
|
171
|
+
servers: servers.map(function (s) {
|
|
172
|
+
return {
|
|
173
|
+
id: s.id,
|
|
174
|
+
port: s.port,
|
|
175
|
+
bundleId: s.bundleId,
|
|
176
|
+
root: s.root
|
|
177
|
+
};
|
|
178
|
+
}),
|
|
179
|
+
simulators
|
|
180
|
+
}, null, 2));
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (url.pathname === "/__daemon/route" && req.method === "POST") {
|
|
184
|
+
var bundleId = url.searchParams.get("bundleId"),
|
|
185
|
+
serverId = url.searchParams.get("serverId");
|
|
186
|
+
if (!bundleId || !serverId) {
|
|
187
|
+
res.writeHead(400), res.end("Missing bundleId or serverId");
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
var server = (0, import_registry.findServerById)(state, serverId);
|
|
191
|
+
if (!server) {
|
|
192
|
+
res.writeHead(404), res.end("Server not found");
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
(0, import_registry.setRoute)(state, bundleId, serverId), (0, import_picker.resolvePendingPicker)(bundleId, serverId), res.writeHead(200), res.end("Route set");
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
res.writeHead(404), res.end("Not found");
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=server.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","server_exports","__export","setRouteMode","startDaemon","module","exports","http","__toESM","require","import_registry","import_ipc","import_proxy","import_picker","import_picocolors","DEFAULT_PORT","routeModeOverride","mode","options","arguments","length","port","host","quiet","log","_len","_args","Array","_key","console","state","createRegistry","ipcServer","createIPCServer","id","server","findServerById","shortRoot","root","replace","process","env","HOME","default","green","bundleId","yellow","httpServer","createServer","req","res","_req_url","url","startsWith","handleDaemonEndpoint","URL","headers","searchParams","get","servers","findServersByBundleId","getAllServers","writeHead","end","proxyHttpRequest","routeKey","existingRoute","getRoute","serverId","useAutoRoute","stdin","isTTY","CI","mostRecent","sort","a","b","registeredAt","setRoute","PICKER_TIMEOUT","timeoutPromise","Promise","_","reject","setTimeout","Error","server1","remember","race","pickServer","blue","mostRecent1","on","rawSocket","head","socket","target","proxyWebSocket","listen","cyan","dim","getSocketPath","shutdown","close","cleanupSocket","exit","pathname","simulators","getBootedSimulators","JSON","stringify","map","s","method","resolvePendingPicker"],"sources":["../../../src/daemon/server.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAA;EAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;IAAAC,KAAA;EAAA,IAAAH,GAAA;AAAA,IAAAI,cAAA;AAAAC,QAAA,CAAAD,cAAA;EAAAE,YAAA,EAAAA,CAAA,KAAAA,YAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAA;AAAA;AAEAC,MAAA,CAAAC,OAAsB,GAAAV,YAAA,CAAAK,cAAA,CAEtB;AAaA,IAAAM,IAAM,GAAAC,OAAA,CAAAC,OAAe;EAAAC,eAAA,GAAAD,OAAA;EAAAE,UAAA,GAAAF,OAAA;EAAAG,YAAA,GAAAH,OAAA;EAAAI,aAAA,GAAAJ,OAAA;EAAAK,iBAAA,GAAAN,OAAA,CAAAC,OAAA;EAAAM,YAAA;EAAAC,iBAAA;AASrB,SAAIb,aAAAc,IAAkD;EAE/CD,iBAAS,GAAaC,IAAA;AAC3B;AACF,eAAAb,YAAA;EAEA,IAAAc,OAAA,GAAsBC,SAAA,CAAAC,MAAY,QAA0BD,SAAG,iBAAAA,SAAA;IAAAE,IAAA,GAAAH,OAAA,CAAAG,IAAA,IAAAN,YAAA;IAAAO,IAAA,GAAAJ,OAAA,CAAAI,IAAA;IAAAC,KAAA,GAAAL,OAAA,CAAAK,KAAA;IAAAC,GAAA,GAAAD,KAAA;MAC7D,KAAM,IAAAE,IAAO,GAAAN,SAAQ,CAAAC,MAAQ,EAAAM,KAAA,GACvB,IAAAC,KAAO,CAAAF,IAAQ,GAAAG,IAAA,GAAQ,GAAAA,IAAA,GAGvBH,IAAA,EAFQG,IAAA,IAEgCF,KAAA,CAAAE,IAAQ,IAEhDT,SAAA,CAAAS,IAAQ;IAGI,IAChBC,OAAA,CAAAL,GAAA;IAAAM,KAAA,OAAApB,eAAA,CAAAqB,cAAA;IAAAC,SAAA,OAAArB,UAAA,CAAAsB,eAAA,EAAAH,KAAA,YAAAI,EAAA;MACA,IAACC,MAAO,OAAAzB,eAAA,CAAA0B,cAAA,EAAAN,KAAA,EAAAI,EAAA;MACN,IAAAC,MAAM;QACN,IAAIE,SAAQ,GAAAF,MAAA,CAAAG,IAAA,CAAAC,OAAA,CAAAC,OAAA,CAAAC,GAAA,CAAAC,IAAA;QACVlB,GAAA,CAAAV,iBAAkB,CAAA6B,OAAO,CAAAC,KAAK,gCAAmCT,MAAA,CAAAU,QAAA,YAAAV,MAAA,CAAAd,IAAA,KAAAgB,SAAA;MACjE;IAAA,aACEH,EAAA;MAA8FV,GAAA,CAChGV,iBAAA,CAAA6B,OAAA,CAAAG,MAAA,kCAAAZ,EAAA;IAAA;IACFa,UAAA,GAAAxC,IAAA,CAAAyC,YAAA,iBAAAC,GAAA,EAAAC,GAAA;MACF,IAAAC,QAAA;MACA,IAAC,GAAAA,QAAO,GAAAF,GAAA,CAAAG,GAAA,cAAAD,QAAA,gBAAAA,QAAA,CAAAE,UAAA;QACN,MAAIC,oBAAA,CAAAL,GAAO,EAAAC,GAAA,EAAOpB,KAAA;QACpB;MACF;MAKE,IAAIsB,GAAA,GAAI,IAAKG,GAAA,CAAAN,GAAA,CAAAG,GAAW,mBAAcH,GAAA,CAAAO,OAAA,CAAAlC,IAAA;QAAAuB,QAAA,GAAAO,GAAA,CAAAK,YAAA,CAAAC,GAAA;QAAAC,OAAA,GAAAd,QAAA,OAAAnC,eAAA,CAAAkD,qBAAA,EAAA9B,KAAA,EAAAe,QAAA,QAAAnC,eAAA,CAAAmD,aAAA,EAAA/B,KAAA;MACpC,IAAA6B,OAAM,CAAAvC,MAAA;QACN8B,GAAA,CAAAY,SAAA,OAAAZ,GAAA,CAAAa,GAAA,CAAAlB,QAAA,oCAAAA,QAAA;QACF;MAIA;MAOA,IAAIc,OAAA,CAAQvC,MAAA,KAAW,GAAG;QACxB,IAAIR,YAAU,CAAGoD,gBACb,EAAAf,GAAA,EAAAC,GAAA,EAAAS,OAAA;QAAA;MAGE;MAEN,IAAAM,QAAA,GAAApB,QAAA;QAAAqB,aAAA,OAAAxD,eAAA,CAAAyD,QAAA,EAAArC,KAAA,EAAAmC,QAAA;MACF,IAAAC,aAAA;QAEA,IAAI/B,MAAQ,OAAAzB,eAAc,CAAA0B,cAAA,EAAAN,KAAA,EAAAoC,aAAA,CAAAE,QAAA;QAExB,IAAAjC,MAAA;UACA,IAAAvB,YAAA,CAAAoD,gBAAA,EAAAf,GAAA,EAAAC,GAAA,EAAAf,MAAA;UACF;QAGA;MAGA;MACE,IAAAkC,YAAM,GAAArD,iBAAS,kBAAe,KAAAA,iBAAqB,MAAQwB,OAAA,CAAA8B,KAAA,CAAAC,KAAA,IAAA/B,OAAA,CAAAC,GAAA,CAAA+B,EAAA;MAC3D,IAAAH,YAAY;QACV,IAAAI,UAAA,IACA,GAAAd,OAAA,CACF,CAAAe,IAAA,WAAAC,CAAA,EAAAC,CAAA;UAEF,OAAAA,CAAA,CAAAC,YAAA,GAAAF,CAAA,CAAAE,YAAA;QAMA,EAHqB;QAKnB,IAAAnE,eAAmB,CAACoE,QAAG,EAAOhD,KAAE,EAAKmC,QAAI,EAAMQ,UAAE,CAAAvC,EAAA,GAAAV,GAAiB,CAAAV,iBAAe,CAAA6B,OAAA,CAAAG,MAAA,0BAAAD,QAAA,WAAA4B,UAAA,CAAAnC,IAAA,oCAAA1B,YAAA,CAAAoD,gBAAA,EAAAf,GAAA,EAAAC,GAAA,EAAAuB,UAAA;QAEjF;MACA;MACS,IAAAM,cACL;QAAAC,cAAiC,OAAAC,OAAM,WAAWC,CAAI,EAAAC,MAAA;UAAAC,UACxD;YACF,OACAD,MAAA,KAAAE,KAAA,iBAAiB,CAAK;UACtB,GAAAN,cAAA;QACF;MAGA;QAGE;UAAA5C,MAAW,EAAAmD,OAAM;UAAAC;QAAW,IAAM,MAAAN,OAAA,CAAgBO,IAAI,EACvD,IAAA3E,aAAA,CAAA4E,UAAA,EAAAxB,QAAA,EAAAN,OAAA,GAEGqB,cAAA,CACF;QAAgDO,QAC9C,SAAA7E,eAAW,CAAAoE,QAAA,EAAUhD,KAAA,EAAOmC,QAAA,EAAAqB,OAAA,CAAApD,EAAA,GAAAV,GAAA,CAAAV,iBAAA,CAAA6B,OAAA,CAAA+C,IAAA,0BAAAzB,QAAA,WAAAqB,OAAA,CAAApD,EAAA,WAAAtB,YAAA,CAAAoD,gBAAA,EAAAf,GAAA,EAAAC,GAAA,EAAAoC,OAAA;MAAA,QAC5B;QACF,IAACK,WAAA,IAEG,GAAAhC,OAAA,CAMN,CAAAe,IAAc,WAAAC,CAAA,EAAAC,CAAA;UAEZ,OAAMA,CAAA,CAAAC,YAAiB,GAAAF,CAAA,CAAAE,YAAe;QACtC;QAAArD,GACE,CAAAV,iBAAA,CAAA6B,OAAO,CAAAG,MAAA,+DAAA6C,WAAA,CAAArD,IAAA,WAAA1B,YAAA,CAAAoD,gBAAA,EAAAf,GAAA,EAAAC,GAAA,EAAAyC,WAAA;MAAA;IACwE;EAC/E5C,UACF,CACA6C,EAAA,4BAAA3C,GAAiB,EAAA4C,SAAU,EAAAC,IAAA,EAAU;IACvC,IAAAC,MAAA,GAAAF,SAAA;MAAAzC,GAAA,OAAAG,GAAA,CAAAN,GAAA,CAAAG,GAAA,mBAAAH,GAAA,CAAAO,OAAA,CAAAlC,IAAA;MAAAuB,QAAA,GAAAO,GAAA,CAAAK,YAAA,CAAAC,GAAA;MAAAC,OAAA,GAAAd,QAAA,OAAAnC,eAAA,CAAAkD,qBAAA,EAAA9B,KAAA,EAAAe,QAAA,QAAAnC,eAAA,CAAAmD,aAAA,EAAA/B,KAAA;IACD,IAAA6B,OAAA,CAAAvC,MAAA;MAGD2E,MAAA,CAAWhC,GAAG;AACZ;AAQA;MACE;IAAW;IAAgC,IAAAiC,MAAA;IAC3C,IAAArC,OAAA,CAAAvC,MAAA,QACF4E,MAAA,GAAArC,OAAA,SAEI;MAEJ,IAAIM,QAAQ,GAAApB,QAAW;QAAAqB,aAAA,OAAAxD,eAAA,CAAAyD,QAAA,EAAArC,KAAA,EAAAmC,QAAA;MACrB,IAAAC,aAAiB,KAAC8B,MAAA,OAAAtF,eAAA,CAAA0B,cAAA,EAAAN,KAAA,EAAAoC,aAAA,CAAAE,QAAA,KAAA4B,MAAA;QAAA,IACbvB,UAAA,IAEL,GAAMd,OAAA,CAON,CAJIe,IAAA,WAAAC,CAAA,EAAAC,CACF;UAKA,OAAMA,CAAA,CAAAC,YAAiB,GAAAF,CAAA,CAAAE,YAAe;QAEtC;QACA,EACE,EAAAnE,eAAA,CAAAoE,QAAO,EAAAhD,KAAA,EAAAmC,QAAA,EAAAQ,UAAA,CAAAvC,EAAA,GAAAV,GAAA,CAAAV,iBAAA,CAAA6B,OAAA,CAAAG,MAAA,gCAAAD,QAAA,WAAA4B,UAAA,CAAAnC,IAAA,gCAAA0D,MAAA,GAAAvB,UAAA;MAAA;IACuD;IAC9DuB,MACF,GACA,IAAApF,YAAS,CAAAqF,cAAA,EAAAhD,GAAA,EAAA8C,MAAA,EAAAD,IAAA,EAAAE,MAAA,IAAAD,MAAA,CAAAhC,GAAA;AAAA;AACX;EAGF,EAAI,EAAAhB,UAAA,CACFmD,MAAA,CAAA7E,IAAA,EAAAC,IAAA,cAAe;IAEJE,GAAA,CAAAV,iBAAA,CAAA6B,OAAA,CAAAwD,IAAA;AAAA,mTAAgC,IAAA3E,GAAA,CAAAV,iBAAA,CAAA6B,OAAA,CAAAwD,IAAA,mBAAA3E,GAAA,CAAAV,iBAAA,CAAA6B,OAAA,CAAAwD,IAAA,yTAAA3E,GAAA;AAAA,iBAKpCV,iBAAa,CAAA6B,OAAY,CAAAC,KAAA,WAAAtB,IAAA,+BAAAA,IAAA,IAAAD,IAAA,QAAAG,GAAA,mBAAAV,iBAAA,CAAA6B,OAAA,CAAAyD,GAAA,KAAAzF,UAAA,CAAA0F,aAAA,SAAA7E,GAAA,MAAAA,GAAA,CAAAV,iBAAA,CAAA6B,OAAA,CAAAyD,GAAA,+CAAA5E,GAAA,CAAAV,iBAAA,CAAA6B,OAAA,CAAAyD,GAAA,kDAAA5E,GAAA;EAClC;EAAgB,IAAA8E,QAAA,YAAAA,CAAA;IAGZ9E,GAAA,CAAAV,iBAAoB,CAAA6B,OAAA,CAAAG,MAAA;AAKlB,0BACP,IAAAC,UAAA,CAAAwD,KAAA,IAAAvE,SAAA,CAAAuE,KAAA,QAAA5F,UAAA,CAAA6F,aAAA,KAAAhE,OAAA,CAAAiE,IAAA;EAGD;EACE,OAAIjE,OAAA,CAAAoD,EAAA,WAAAU,QAAO,GAAO9D,OAAA,CAAAoD,EAAA,YAAAU,QAAA;IAAAvD,UAAA;IAKpBf,SAAA;IAEAF,KAAA;IAIEwE;EAAA;AACA;AACA,eACAhD,qBAAAL,GAAA,EAAAC,GAAA,EAAApB,KAAA;EACF,IAAAsB,GAAA,OAAAG,GAAA,CAAAN,GAAA,CAAAG,GAAA,mBAAAH,GAAA,CAAAO,OAAA,CAAAlC,IAAA;EACF,IAAA8B,GAAA,CAAAsD,QAAA;IAEA,IAAA/C,OAAe,OAAAjD,eACb,CAAAmD,aAEA,EACA/B,KAAA;MAAA6E,UAAA,aAAA9F,aAAA,CAAA+F,mBAAA;IACA1D,GAAA,CAAMY,SAAM,CAAI,KAAI;MAGhB,cAAI;IACN,IAAAZ,GAAM,CAAAa,GAAA,CAAA8C,IAAA,CAAAC,SAAU;MAGhBnD,OAAI,EAAAA,OAAU,CAAKoD,GAAE,WAAAC,CAAA;QAEnB,OAAK;UACH9E,EAAA,EAAA8E,CAAA,CAAA9E,EAAA;UACEb,IAAA,EAAA2F,CAAA,CAAA3F,IAAS;UAAoBwB,QACrB,EAAAmE,CAAA,CAAAnE,QAAA;UAAAP,IACN,EAAA0E,CAAA,CAAM1E;QAAE;MACI;MACJqE;IACR,OACF;IAAA;EACF;EACA,IAAAvD,GACA,CAAAsD,QAAA,0BAAAzD,GAAA,CAAAgE,MAAA;IAAA,IACFpE,QAAA,GAAAO,GAAA,CAAAK,YAAA,CAAAC,GAAA;MAAAU,QAAA,GAAAhB,GAAA,CAAAK,YAAA,CAAAC,GAAA;IACF,KAAAb,QAAA,KAAAuB,QAAA;MACAlB,GAAA,CAAAY,SAAA,OAAAZ,GAAA,CAAAa,GAAA;MACF;IAGA;IACE,IAAA5B,MAAM,OAAWzB,eAAI,CAAA0B,cAAiB,EAAUN,KAC1C,EAAAsC,QAAW;IAEjB,IAAI,CAACjC,MAAA;MACHe,GAAA,CAAIY,SAAA,CAAU,GAAG,GACjBZ,GAAA,CAAIa,GAAA,CAAI;MACR;IACF;IAGA,IAAIrD,eADW,CAAAoE,QAAA,EAAAhD,KAAA,EAAAe,QAAe,EAAAuB,QAAO,CAAQ,GAChC,GAAAvD,aAAA,CAAAqG,oBAAA,EAAArE,QAAA,EAAAuB,QAAA,GAAAlB,GAAA,CAAAY,SAAA,OAAAZ,GAAA,CAAAa,GAAA;IACX;EAEA;EAAAb,GACF,CAAAY,SAAA,OAAAZ,GAAA,CAAAa,GAAA;AAEA","ignoreList":[]}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf,
|
|
6
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
+
value: mod,
|
|
27
|
+
enumerable: !0
|
|
28
|
+
}) : target, mod)),
|
|
29
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
+
value: !0
|
|
31
|
+
}), mod);
|
|
32
|
+
var tui_exports = {};
|
|
33
|
+
__export(tui_exports, {
|
|
34
|
+
getRouteMode: () => getRouteMode,
|
|
35
|
+
startTUI: () => startTUI,
|
|
36
|
+
stopTUI: () => stopTUI
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(tui_exports);
|
|
39
|
+
var import_registry = require("./registry.cjs"),
|
|
40
|
+
import_picker = require("./picker.cjs"),
|
|
41
|
+
import_server = require("./server.cjs"),
|
|
42
|
+
import_picocolors = __toESM(require("picocolors"), 1);
|
|
43
|
+
const ESC = "\x1B",
|
|
44
|
+
CSI = `${ESC}[`,
|
|
45
|
+
cursor = {
|
|
46
|
+
hide: () => process.stdout.write(`${CSI}?25l`),
|
|
47
|
+
show: () => process.stdout.write(`${CSI}?25h`),
|
|
48
|
+
to: (x, y) => process.stdout.write(`${CSI}${y};${x}H`),
|
|
49
|
+
clear: () => process.stdout.write(`${CSI}2J`)
|
|
50
|
+
},
|
|
51
|
+
box = {
|
|
52
|
+
tl: "\u250C",
|
|
53
|
+
tr: "\u2510",
|
|
54
|
+
bl: "\u2514",
|
|
55
|
+
br: "\u2518",
|
|
56
|
+
h: "\u2500",
|
|
57
|
+
v: "\u2502",
|
|
58
|
+
arrow: "\u25BA",
|
|
59
|
+
dot: "\u25CF",
|
|
60
|
+
circle: "\u25CB",
|
|
61
|
+
line: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"
|
|
62
|
+
};
|
|
63
|
+
let tuiState = null,
|
|
64
|
+
daemonState = null,
|
|
65
|
+
refreshInterval = null,
|
|
66
|
+
stdinListener = null;
|
|
67
|
+
function getRouteMode() {
|
|
68
|
+
return tuiState?.routeMode || "ask";
|
|
69
|
+
}
|
|
70
|
+
function startTUI(state) {
|
|
71
|
+
daemonState = state, tuiState = {
|
|
72
|
+
simulators: [],
|
|
73
|
+
servers: [],
|
|
74
|
+
routes: /* @__PURE__ */new Map(),
|
|
75
|
+
selectedCol: 0,
|
|
76
|
+
selectedRow: 0,
|
|
77
|
+
connectingFrom: null,
|
|
78
|
+
routeMode: "most-recent"
|
|
79
|
+
}, cursor.hide(), cursor.clear(), process.stdin.isTTY && process.stdin.setRawMode(!0), process.stdin.resume(), stdinListener = key => {
|
|
80
|
+
const str = key.toString();
|
|
81
|
+
if ((str === "" || str === "q") && (stopTUI(), process.exit(0)), !!tuiState) {
|
|
82
|
+
if (str === "\x1B[A") tuiState.selectedRow = Math.max(0, tuiState.selectedRow - 1);else if (str === "\x1B[B") {
|
|
83
|
+
const max = tuiState.selectedCol === 0 ? tuiState.simulators.length - 1 : tuiState.servers.length - 1;
|
|
84
|
+
tuiState.selectedRow = Math.min(max, tuiState.selectedRow + 1);
|
|
85
|
+
} else if (str === "\x1B[C" || str === "\x1B[D") tuiState.selectedCol = tuiState.selectedCol === 0 ? 1 : 0, tuiState.selectedRow = 0, tuiState.connectingFrom = null;else if (str === " " || str === "\r") handleConnect();else if (str === "d") handleDisconnect();else if (str === "m") tuiState.routeMode = tuiState.routeMode === "most-recent" ? "ask" : "most-recent", (0, import_server.setRouteMode)(tuiState.routeMode);else if (str === "b") {
|
|
86
|
+
stopTUI(), console.log(import_picocolors.default.dim("\nDaemon running in background. Use `one daemon status` to check."));
|
|
87
|
+
return;
|
|
88
|
+
} else str === "i" && installLoginItem();
|
|
89
|
+
render();
|
|
90
|
+
}
|
|
91
|
+
}, process.stdin.on("data", stdinListener), refreshInterval = setInterval(refreshData, 500), refreshData();
|
|
92
|
+
}
|
|
93
|
+
function handleConnect() {
|
|
94
|
+
if (!(!tuiState || !daemonState)) {
|
|
95
|
+
if (tuiState.selectedCol === 0) {
|
|
96
|
+
const sim = tuiState.simulators[tuiState.selectedRow];
|
|
97
|
+
sim && (tuiState.connectingFrom = sim.udid, tuiState.selectedCol = 1, tuiState.selectedRow = 0);
|
|
98
|
+
} else if (tuiState.connectingFrom) {
|
|
99
|
+
const server = tuiState.servers[tuiState.selectedRow];
|
|
100
|
+
server && (tuiState.routes.set(tuiState.connectingFrom, server.id), (0, import_registry.setRoute)(daemonState, server.bundleId, server.id), tuiState.connectingFrom = null);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function handleDisconnect() {
|
|
105
|
+
if (tuiState && tuiState.selectedCol === 0) {
|
|
106
|
+
const sim = tuiState.simulators[tuiState.selectedRow];
|
|
107
|
+
sim && tuiState.routes.delete(sim.udid);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function refreshData() {
|
|
111
|
+
!tuiState || !daemonState || (tuiState.simulators = await (0, import_picker.getBootedSimulators)(), tuiState.servers = (0, import_registry.getAllServers)(daemonState), render());
|
|
112
|
+
}
|
|
113
|
+
function render() {
|
|
114
|
+
if (!tuiState) return;
|
|
115
|
+
const width = process.stdout.columns || 80,
|
|
116
|
+
height = process.stdout.rows || 24;
|
|
117
|
+
cursor.to(1, 1);
|
|
118
|
+
const lines = [],
|
|
119
|
+
title = " one daemon ",
|
|
120
|
+
port = ":8081",
|
|
121
|
+
modeRecent = tuiState.routeMode === "most-recent",
|
|
122
|
+
modeSwitch = ` [m] ${modeRecent ? import_picocolors.default.green("\u25CF") : import_picocolors.default.dim("\u25CB")} recent ${modeRecent ? import_picocolors.default.dim("\u25CB") : import_picocolors.default.green("\u25CF")} ask `,
|
|
123
|
+
headerPad = width - title.length - port.length - 22 - 4;
|
|
124
|
+
lines.push(import_picocolors.default.cyan(`${box.tl}${box.h}${title}${box.h.repeat(Math.max(0, headerPad))}`) + modeSwitch + import_picocolors.default.cyan(`${port}${box.h}${box.tr}`)), lines.push(import_picocolors.default.cyan(box.v) + " ".repeat(width - 4) + import_picocolors.default.cyan(box.v));
|
|
125
|
+
const col1 = " SIMULATORS",
|
|
126
|
+
col2 = "SERVERS",
|
|
127
|
+
mid = Math.floor(width / 2);
|
|
128
|
+
lines.push(import_picocolors.default.cyan(box.v) + import_picocolors.default.bold(import_picocolors.default.dim(col1)) + " ".repeat(mid - col1.length - 2) + import_picocolors.default.bold(import_picocolors.default.dim(col2)) + " ".repeat(width - mid - col2.length - 4) + import_picocolors.default.cyan(box.v)), lines.push(import_picocolors.default.cyan(box.v) + import_picocolors.default.dim(" " + "\u2500".repeat(mid - 4)) + " " + import_picocolors.default.dim("\u2500".repeat(width - mid - 4)) + import_picocolors.default.cyan(box.v));
|
|
129
|
+
const maxRows = Math.max(tuiState.simulators.length, tuiState.servers.length, 3);
|
|
130
|
+
for (let i = 0; i < maxRows; i++) {
|
|
131
|
+
const sim = tuiState.simulators[i],
|
|
132
|
+
server = tuiState.servers[i];
|
|
133
|
+
let simStr = "";
|
|
134
|
+
if (sim) {
|
|
135
|
+
const isSelected = tuiState.selectedCol === 0 && tuiState.selectedRow === i,
|
|
136
|
+
isConnecting = tuiState.connectingFrom === sim.udid,
|
|
137
|
+
hasRoute = tuiState.routes.has(sim.udid),
|
|
138
|
+
dot = hasRoute ? box.dot : box.circle,
|
|
139
|
+
name = sim.name.slice(0, 16),
|
|
140
|
+
ver = sim.iosVersion ? ` (${sim.iosVersion})` : "";
|
|
141
|
+
let text = ` ${dot} ${name}${ver}`;
|
|
142
|
+
isSelected && (text = import_picocolors.default.inverse(text)), isConnecting && (text = import_picocolors.default.yellow(text)), hasRoute && (text = import_picocolors.default.green(text)), simStr = text;
|
|
143
|
+
}
|
|
144
|
+
let connStr = " ";
|
|
145
|
+
const simUdid = sim?.udid,
|
|
146
|
+
connectedServerId = simUdid ? tuiState.routes.get(simUdid) : null;
|
|
147
|
+
connectedServerId && server?.id === connectedServerId ? connStr = import_picocolors.default.green(` ${box.line}${box.arrow} `) : tuiState.connectingFrom === simUdid && (connStr = import_picocolors.default.yellow(` ${box.line}${box.arrow} `));
|
|
148
|
+
let serverStr = "";
|
|
149
|
+
if (server) {
|
|
150
|
+
const isSelected = tuiState.selectedCol === 1 && tuiState.selectedRow === i,
|
|
151
|
+
hasConnection = [...tuiState.routes.values()].includes(server.id),
|
|
152
|
+
dot = hasConnection ? box.dot : box.circle,
|
|
153
|
+
shortRoot = server.root.replace(process.env.HOME || "", "~").slice(0, 18),
|
|
154
|
+
port2 = `:${server.port}`;
|
|
155
|
+
let text = `${dot} ${shortRoot.padEnd(18)} ${import_picocolors.default.dim(port2)}`;
|
|
156
|
+
isSelected && (text = import_picocolors.default.inverse(text)), hasConnection && (text = import_picocolors.default.green(text)), serverStr = text;
|
|
157
|
+
}
|
|
158
|
+
const simWidth = mid - 6,
|
|
159
|
+
padSim = Math.max(0, simWidth - stripAnsi(simStr).length),
|
|
160
|
+
serverWidth = width - mid - 6,
|
|
161
|
+
padServer = Math.max(0, serverWidth - stripAnsi(serverStr).length);
|
|
162
|
+
lines.push(import_picocolors.default.cyan(box.v) + simStr + " ".repeat(padSim) + connStr + serverStr + " ".repeat(padServer) + import_picocolors.default.cyan(box.v));
|
|
163
|
+
}
|
|
164
|
+
const contentHeight = 4 + maxRows,
|
|
165
|
+
padRows = Math.max(0, height - contentHeight - 4);
|
|
166
|
+
for (let i = 0; i < padRows; i++) lines.push(import_picocolors.default.cyan(box.v) + " ".repeat(width - 4) + import_picocolors.default.cyan(box.v));
|
|
167
|
+
lines.push(import_picocolors.default.cyan(box.v) + " ".repeat(width - 4) + import_picocolors.default.cyan(box.v));
|
|
168
|
+
const help1 = " [\u2191\u2193] select [\u2190\u2192] switch [space] connect [d] disconnect",
|
|
169
|
+
help2 = " [m] mode [b] background [i] install [q] quit";
|
|
170
|
+
lines.push(import_picocolors.default.cyan(box.v) + import_picocolors.default.dim(help1) + " ".repeat(Math.max(0, width - help1.length - 4)) + import_picocolors.default.cyan(box.v)), lines.push(import_picocolors.default.cyan(box.v) + import_picocolors.default.dim(help2) + " ".repeat(Math.max(0, width - help2.length - 4)) + import_picocolors.default.cyan(box.v)), lines.push(import_picocolors.default.cyan(`${box.bl}${box.h.repeat(width - 4)}${box.br}`)), process.stdout.write(lines.join(`
|
|
171
|
+
`));
|
|
172
|
+
}
|
|
173
|
+
function stripAnsi(str) {
|
|
174
|
+
return str.replace(/\x1b\[[0-9;]*m/g, "");
|
|
175
|
+
}
|
|
176
|
+
async function installLoginItem() {
|
|
177
|
+
if (process.platform !== "darwin") return;
|
|
178
|
+
const {
|
|
179
|
+
exec
|
|
180
|
+
} = await import("node:child_process"),
|
|
181
|
+
{
|
|
182
|
+
promisify
|
|
183
|
+
} = await import("node:util"),
|
|
184
|
+
execAsync = promisify(exec),
|
|
185
|
+
onePath = process.argv[1] || "npx one",
|
|
186
|
+
script = `
|
|
187
|
+
tell application "System Events"
|
|
188
|
+
make login item at end with properties {path:"${onePath}", name:"one daemon", hidden:true}
|
|
189
|
+
end tell
|
|
190
|
+
`;
|
|
191
|
+
try {
|
|
192
|
+
await execAsync(`osascript -e '${script}'`), console.log(import_picocolors.default.green(`
|
|
193
|
+
\u2713 Added to login items`));
|
|
194
|
+
} catch {
|
|
195
|
+
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
196
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
197
|
+
<plist version="1.0">
|
|
198
|
+
<dict>
|
|
199
|
+
<key>Label</key>
|
|
200
|
+
<string>com.one.daemon</string>
|
|
201
|
+
<key>ProgramArguments</key>
|
|
202
|
+
<array>
|
|
203
|
+
<string>${onePath}</string>
|
|
204
|
+
<string>daemon</string>
|
|
205
|
+
<string>--tui=false</string>
|
|
206
|
+
</array>
|
|
207
|
+
<key>RunAtLoad</key>
|
|
208
|
+
<true/>
|
|
209
|
+
<key>KeepAlive</key>
|
|
210
|
+
<false/>
|
|
211
|
+
</dict>
|
|
212
|
+
</plist>`,
|
|
213
|
+
fs = await import("node:fs"),
|
|
214
|
+
path = await import("node:path"),
|
|
215
|
+
os = await import("node:os"),
|
|
216
|
+
plistPath = path.join(os.homedir(), "Library", "LaunchAgents", "com.one.daemon.plist");
|
|
217
|
+
fs.writeFileSync(plistPath, plist), await execAsync(`launchctl load ${plistPath}`), console.log(import_picocolors.default.green(`
|
|
218
|
+
\u2713 Installed as launchd agent`));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function stopTUI() {
|
|
222
|
+
refreshInterval && (clearInterval(refreshInterval), refreshInterval = null), stdinListener && (process.stdin.removeListener("data", stdinListener), stdinListener = null), cursor.show(), cursor.clear(), cursor.to(1, 1), process.stdin.isTTY && process.stdin.setRawMode(!1), tuiState = null, daemonState = null;
|
|
223
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
9
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
16
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
17
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
18
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
19
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
|
|
21
|
+
mod
|
|
22
|
+
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
23
|
+
var tui_exports = {};
|
|
24
|
+
__export(tui_exports, {
|
|
25
|
+
getRouteMode: () => getRouteMode,
|
|
26
|
+
startTUI: () => startTUI,
|
|
27
|
+
stopTUI: () => stopTUI
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(tui_exports);
|
|
30
|
+
var import_registry = require("./registry"), import_picker = require("./picker"), import_server = require("./server"), import_picocolors = __toESM(require("picocolors"), 1);
|
|
31
|
+
const ESC = "\x1B", CSI = `${ESC}[`, cursor = {
|
|
32
|
+
hide: () => process.stdout.write(`${CSI}?25l`),
|
|
33
|
+
show: () => process.stdout.write(`${CSI}?25h`),
|
|
34
|
+
to: (x, y) => process.stdout.write(`${CSI}${y};${x}H`),
|
|
35
|
+
clear: () => process.stdout.write(`${CSI}2J`)
|
|
36
|
+
}, box = {
|
|
37
|
+
tl: "\u250C",
|
|
38
|
+
tr: "\u2510",
|
|
39
|
+
bl: "\u2514",
|
|
40
|
+
br: "\u2518",
|
|
41
|
+
h: "\u2500",
|
|
42
|
+
v: "\u2502",
|
|
43
|
+
arrow: "\u25BA",
|
|
44
|
+
dot: "\u25CF",
|
|
45
|
+
circle: "\u25CB",
|
|
46
|
+
line: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"
|
|
47
|
+
};
|
|
48
|
+
let tuiState = null, daemonState = null, refreshInterval = null, stdinListener = null;
|
|
49
|
+
function getRouteMode() {
|
|
50
|
+
return tuiState?.routeMode || "ask";
|
|
51
|
+
}
|
|
52
|
+
function startTUI(state) {
|
|
53
|
+
daemonState = state, tuiState = {
|
|
54
|
+
simulators: [],
|
|
55
|
+
servers: [],
|
|
56
|
+
routes: /* @__PURE__ */ new Map(),
|
|
57
|
+
selectedCol: 0,
|
|
58
|
+
selectedRow: 0,
|
|
59
|
+
connectingFrom: null,
|
|
60
|
+
routeMode: "most-recent"
|
|
61
|
+
}, cursor.hide(), cursor.clear(), process.stdin.isTTY && process.stdin.setRawMode(!0), process.stdin.resume(), stdinListener = (key) => {
|
|
62
|
+
const str = key.toString();
|
|
63
|
+
if ((str === "" || str === "q") && (stopTUI(), process.exit(0)), !!tuiState) {
|
|
64
|
+
if (str === "\x1B[A")
|
|
65
|
+
tuiState.selectedRow = Math.max(0, tuiState.selectedRow - 1);
|
|
66
|
+
else if (str === "\x1B[B") {
|
|
67
|
+
const max = tuiState.selectedCol === 0 ? tuiState.simulators.length - 1 : tuiState.servers.length - 1;
|
|
68
|
+
tuiState.selectedRow = Math.min(max, tuiState.selectedRow + 1);
|
|
69
|
+
} else if (str === "\x1B[C" || str === "\x1B[D")
|
|
70
|
+
tuiState.selectedCol = tuiState.selectedCol === 0 ? 1 : 0, tuiState.selectedRow = 0, tuiState.connectingFrom = null;
|
|
71
|
+
else if (str === " " || str === "\r")
|
|
72
|
+
handleConnect();
|
|
73
|
+
else if (str === "d")
|
|
74
|
+
handleDisconnect();
|
|
75
|
+
else if (str === "m")
|
|
76
|
+
tuiState.routeMode = tuiState.routeMode === "most-recent" ? "ask" : "most-recent", (0, import_server.setRouteMode)(tuiState.routeMode);
|
|
77
|
+
else if (str === "b") {
|
|
78
|
+
stopTUI(), console.log(import_picocolors.default.dim("\nDaemon running in background. Use `one daemon status` to check."));
|
|
79
|
+
return;
|
|
80
|
+
} else str === "i" && installLoginItem();
|
|
81
|
+
render();
|
|
82
|
+
}
|
|
83
|
+
}, process.stdin.on("data", stdinListener), refreshInterval = setInterval(refreshData, 500), refreshData();
|
|
84
|
+
}
|
|
85
|
+
function handleConnect() {
|
|
86
|
+
if (!(!tuiState || !daemonState)) {
|
|
87
|
+
if (tuiState.selectedCol === 0) {
|
|
88
|
+
const sim = tuiState.simulators[tuiState.selectedRow];
|
|
89
|
+
sim && (tuiState.connectingFrom = sim.udid, tuiState.selectedCol = 1, tuiState.selectedRow = 0);
|
|
90
|
+
} else if (tuiState.connectingFrom) {
|
|
91
|
+
const server = tuiState.servers[tuiState.selectedRow];
|
|
92
|
+
server && (tuiState.routes.set(tuiState.connectingFrom, server.id), (0, import_registry.setRoute)(daemonState, server.bundleId, server.id), tuiState.connectingFrom = null);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function handleDisconnect() {
|
|
97
|
+
if (tuiState && tuiState.selectedCol === 0) {
|
|
98
|
+
const sim = tuiState.simulators[tuiState.selectedRow];
|
|
99
|
+
sim && tuiState.routes.delete(sim.udid);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async function refreshData() {
|
|
103
|
+
!tuiState || !daemonState || (tuiState.simulators = await (0, import_picker.getBootedSimulators)(), tuiState.servers = (0, import_registry.getAllServers)(daemonState), render());
|
|
104
|
+
}
|
|
105
|
+
function render() {
|
|
106
|
+
if (!tuiState) return;
|
|
107
|
+
const width = process.stdout.columns || 80, height = process.stdout.rows || 24;
|
|
108
|
+
cursor.to(1, 1);
|
|
109
|
+
const lines = [], title = " one daemon ", port = ":8081", modeRecent = tuiState.routeMode === "most-recent", modeSwitch = ` [m] ${modeRecent ? import_picocolors.default.green("\u25CF") : import_picocolors.default.dim("\u25CB")} recent ${modeRecent ? import_picocolors.default.dim("\u25CB") : import_picocolors.default.green("\u25CF")} ask `, headerPad = width - title.length - port.length - 22 - 4;
|
|
110
|
+
lines.push(import_picocolors.default.cyan(`${box.tl}${box.h}${title}${box.h.repeat(Math.max(0, headerPad))}`) + modeSwitch + import_picocolors.default.cyan(`${port}${box.h}${box.tr}`)), lines.push(import_picocolors.default.cyan(box.v) + " ".repeat(width - 4) + import_picocolors.default.cyan(box.v));
|
|
111
|
+
const col1 = " SIMULATORS", col2 = "SERVERS", mid = Math.floor(width / 2);
|
|
112
|
+
lines.push(
|
|
113
|
+
import_picocolors.default.cyan(box.v) + import_picocolors.default.bold(import_picocolors.default.dim(col1)) + " ".repeat(mid - col1.length - 2) + import_picocolors.default.bold(import_picocolors.default.dim(col2)) + " ".repeat(width - mid - col2.length - 4) + import_picocolors.default.cyan(box.v)
|
|
114
|
+
), lines.push(
|
|
115
|
+
import_picocolors.default.cyan(box.v) + import_picocolors.default.dim(" " + "\u2500".repeat(mid - 4)) + " " + import_picocolors.default.dim("\u2500".repeat(width - mid - 4)) + import_picocolors.default.cyan(box.v)
|
|
116
|
+
);
|
|
117
|
+
const maxRows = Math.max(tuiState.simulators.length, tuiState.servers.length, 3);
|
|
118
|
+
for (let i = 0; i < maxRows; i++) {
|
|
119
|
+
const sim = tuiState.simulators[i], server = tuiState.servers[i];
|
|
120
|
+
let simStr = "";
|
|
121
|
+
if (sim) {
|
|
122
|
+
const isSelected = tuiState.selectedCol === 0 && tuiState.selectedRow === i, isConnecting = tuiState.connectingFrom === sim.udid, hasRoute = tuiState.routes.has(sim.udid), dot = hasRoute ? box.dot : box.circle, name = sim.name.slice(0, 16), ver = sim.iosVersion ? ` (${sim.iosVersion})` : "";
|
|
123
|
+
let text = ` ${dot} ${name}${ver}`;
|
|
124
|
+
isSelected && (text = import_picocolors.default.inverse(text)), isConnecting && (text = import_picocolors.default.yellow(text)), hasRoute && (text = import_picocolors.default.green(text)), simStr = text;
|
|
125
|
+
}
|
|
126
|
+
let connStr = " ";
|
|
127
|
+
const simUdid = sim?.udid, connectedServerId = simUdid ? tuiState.routes.get(simUdid) : null;
|
|
128
|
+
connectedServerId && server?.id === connectedServerId ? connStr = import_picocolors.default.green(` ${box.line}${box.arrow} `) : tuiState.connectingFrom === simUdid && (connStr = import_picocolors.default.yellow(` ${box.line}${box.arrow} `));
|
|
129
|
+
let serverStr = "";
|
|
130
|
+
if (server) {
|
|
131
|
+
const isSelected = tuiState.selectedCol === 1 && tuiState.selectedRow === i, hasConnection = [...tuiState.routes.values()].includes(server.id), dot = hasConnection ? box.dot : box.circle, shortRoot = server.root.replace(process.env.HOME || "", "~").slice(0, 18), port2 = `:${server.port}`;
|
|
132
|
+
let text = `${dot} ${shortRoot.padEnd(18)} ${import_picocolors.default.dim(port2)}`;
|
|
133
|
+
isSelected && (text = import_picocolors.default.inverse(text)), hasConnection && (text = import_picocolors.default.green(text)), serverStr = text;
|
|
134
|
+
}
|
|
135
|
+
const simWidth = mid - 6, padSim = Math.max(0, simWidth - stripAnsi(simStr).length), serverWidth = width - mid - 6, padServer = Math.max(0, serverWidth - stripAnsi(serverStr).length);
|
|
136
|
+
lines.push(
|
|
137
|
+
import_picocolors.default.cyan(box.v) + simStr + " ".repeat(padSim) + connStr + serverStr + " ".repeat(padServer) + import_picocolors.default.cyan(box.v)
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
const contentHeight = 4 + maxRows, padRows = Math.max(0, height - contentHeight - 4);
|
|
141
|
+
for (let i = 0; i < padRows; i++)
|
|
142
|
+
lines.push(import_picocolors.default.cyan(box.v) + " ".repeat(width - 4) + import_picocolors.default.cyan(box.v));
|
|
143
|
+
lines.push(import_picocolors.default.cyan(box.v) + " ".repeat(width - 4) + import_picocolors.default.cyan(box.v));
|
|
144
|
+
const help1 = " [\u2191\u2193] select [\u2190\u2192] switch [space] connect [d] disconnect", help2 = " [m] mode [b] background [i] install [q] quit";
|
|
145
|
+
lines.push(
|
|
146
|
+
import_picocolors.default.cyan(box.v) + import_picocolors.default.dim(help1) + " ".repeat(Math.max(0, width - help1.length - 4)) + import_picocolors.default.cyan(box.v)
|
|
147
|
+
), lines.push(
|
|
148
|
+
import_picocolors.default.cyan(box.v) + import_picocolors.default.dim(help2) + " ".repeat(Math.max(0, width - help2.length - 4)) + import_picocolors.default.cyan(box.v)
|
|
149
|
+
), lines.push(import_picocolors.default.cyan(`${box.bl}${box.h.repeat(width - 4)}${box.br}`)), process.stdout.write(lines.join(`
|
|
150
|
+
`));
|
|
151
|
+
}
|
|
152
|
+
function stripAnsi(str) {
|
|
153
|
+
return str.replace(/\x1b\[[0-9;]*m/g, "");
|
|
154
|
+
}
|
|
155
|
+
async function installLoginItem() {
|
|
156
|
+
if (process.platform !== "darwin")
|
|
157
|
+
return;
|
|
158
|
+
const { exec } = await import("node:child_process"), { promisify } = await import("node:util"), execAsync = promisify(exec), onePath = process.argv[1] || "npx one", script = `
|
|
159
|
+
tell application "System Events"
|
|
160
|
+
make login item at end with properties {path:"${onePath}", name:"one daemon", hidden:true}
|
|
161
|
+
end tell
|
|
162
|
+
`;
|
|
163
|
+
try {
|
|
164
|
+
await execAsync(`osascript -e '${script}'`), console.log(import_picocolors.default.green(`
|
|
165
|
+
\u2713 Added to login items`));
|
|
166
|
+
} catch {
|
|
167
|
+
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
168
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
169
|
+
<plist version="1.0">
|
|
170
|
+
<dict>
|
|
171
|
+
<key>Label</key>
|
|
172
|
+
<string>com.one.daemon</string>
|
|
173
|
+
<key>ProgramArguments</key>
|
|
174
|
+
<array>
|
|
175
|
+
<string>${onePath}</string>
|
|
176
|
+
<string>daemon</string>
|
|
177
|
+
<string>--tui=false</string>
|
|
178
|
+
</array>
|
|
179
|
+
<key>RunAtLoad</key>
|
|
180
|
+
<true/>
|
|
181
|
+
<key>KeepAlive</key>
|
|
182
|
+
<false/>
|
|
183
|
+
</dict>
|
|
184
|
+
</plist>`, fs = await import("node:fs"), path = await import("node:path"), os = await import("node:os"), plistPath = path.join(os.homedir(), "Library", "LaunchAgents", "com.one.daemon.plist");
|
|
185
|
+
fs.writeFileSync(plistPath, plist), await execAsync(`launchctl load ${plistPath}`), console.log(import_picocolors.default.green(`
|
|
186
|
+
\u2713 Installed as launchd agent`));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
function stopTUI() {
|
|
190
|
+
refreshInterval && (clearInterval(refreshInterval), refreshInterval = null), stdinListener && (process.stdin.removeListener("data", stdinListener), stdinListener = null), cursor.show(), cursor.clear(), cursor.to(1, 1), process.stdin.isTTY && process.stdin.setRawMode(!1), tuiState = null, daemonState = null;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=tui.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/daemon/tui.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAAkD,uBAClD,gBAAoC,qBACpC,gBAA6B,qBAC7B,oBAAmB;AAoBnB,MAAM,MAAM,QACN,MAAM,GAAG,GAAG,KAGZ,SAAS;AAAA,EACb,MAAM,MAAM,QAAQ,OAAO,MAAM,GAAG,GAAG,MAAM;AAAA,EAC7C,MAAM,MAAM,QAAQ,OAAO,MAAM,GAAG,GAAG,MAAM;AAAA,EAC7C,IAAI,CAAC,GAAW,MAAc,QAAQ,OAAO,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG;AAAA,EACrE,OAAO,MAAM,QAAQ,OAAO,MAAM,GAAG,GAAG,IAAI;AAC9C,GAEM,MAAM;AAAA,EACV,IAAI;AAAA,EAAK,IAAI;AAAA,EAAK,IAAI;AAAA,EAAK,IAAI;AAAA,EAC/B,GAAG;AAAA,EAAK,GAAG;AAAA,EACX,OAAO;AAAA,EAAK,KAAK;AAAA,EAAK,QAAQ;AAAA,EAC9B,MAAM;AACR;AAEA,IAAI,WAA4B,MAC5B,cAAkC,MAClC,kBAAyC,MACzC,gBAAgD;AAG7C,SAAS,eAA0B;AACxC,SAAO,UAAU,aAAa;AAChC;AAEO,SAAS,SAAS,OAA0B;AACjD,gBAAc,OACd,WAAW;AAAA,IACT,YAAY,CAAC;AAAA,IACb,SAAS,CAAC;AAAA,IACV,QAAQ,oBAAI,IAAI;AAAA,IAChB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,WAAW;AAAA,EACb,GAGA,OAAO,KAAK,GACZ,OAAO,MAAM,GAET,QAAQ,MAAM,SAChB,QAAQ,MAAM,WAAW,EAAI,GAE/B,QAAQ,MAAM,OAAO,GAGrB,gBAAgB,CAAC,QAAgB;AAC/B,UAAM,MAAM,IAAI,SAAS;AAQzB,SALI,QAAQ,OAAY,QAAQ,SAC9B,QAAQ,GACR,QAAQ,KAAK,CAAC,IAGZ,EAAC,UAGL;AAAA,UAAI,QAAQ;AACV,iBAAS,cAAc,KAAK,IAAI,GAAG,SAAS,cAAc,CAAC;AAAA,eAClD,QAAQ,UAAY;AAC7B,cAAM,MAAM,SAAS,gBAAgB,IACjC,SAAS,WAAW,SAAS,IAC7B,SAAS,QAAQ,SAAS;AAC9B,iBAAS,cAAc,KAAK,IAAI,KAAK,SAAS,cAAc,CAAC;AAAA,MAC/D,WAAW,QAAQ,YAAc,QAAQ;AACvC,iBAAS,cAAc,SAAS,gBAAgB,IAAI,IAAI,GACxD,SAAS,cAAc,GACvB,SAAS,iBAAiB;AAAA,eACjB,QAAQ,OAAO,QAAQ;AAChC,sBAAc;AAAA,eACL,QAAQ;AACjB,yBAAiB;AAAA,eACR,QAAQ;AACjB,iBAAS,YAAY,SAAS,cAAc,gBAAgB,QAAQ,mBACpE,4BAAa,SAAS,SAAS;AAAA,eACtB,QAAQ,KAAK;AACtB,gBAAQ,GACR,QAAQ,IAAI,kBAAAA,QAAO,IAAI,mEAAmE,CAAC;AAC3F;AAAA,MACF,MAAO,CAAI,QAAQ,OACjB,iBAAiB;AAKnB,aAAO;AAAA;AAAA,EACT,GAEA,QAAQ,MAAM,GAAG,QAAQ,aAAa,GAGtC,kBAAkB,YAAY,aAAa,GAAG,GAC9C,YAAY;AACd;AAEA,SAAS,gBAAsB;AAC7B,MAAI,GAAC,YAAY,CAAC;AAElB,QAAI,SAAS,gBAAgB,GAAG;AAE9B,YAAM,MAAM,SAAS,WAAW,SAAS,WAAW;AACpD,MAAI,QACF,SAAS,iBAAiB,IAAI,MAC9B,SAAS,cAAc,GACvB,SAAS,cAAc;AAAA,IAE3B,WAAW,SAAS,gBAAgB;AAElC,YAAM,SAAS,SAAS,QAAQ,SAAS,WAAW;AACpD,MAAI,WACF,SAAS,OAAO,IAAI,SAAS,gBAAgB,OAAO,EAAE,OAEtD,0BAAS,aAAa,OAAO,UAAU,OAAO,EAAE,GAChD,SAAS,iBAAiB;AAAA,IAE9B;AAAA;AACF;AAEA,SAAS,mBAAyB;AAChC,MAAK,YAED,SAAS,gBAAgB,GAAG;AAC9B,UAAM,MAAM,SAAS,WAAW,SAAS,WAAW;AACpD,IAAI,OACF,SAAS,OAAO,OAAO,IAAI,IAAI;AAAA,EAEnC;AACF;AAEA,eAAe,cAA6B;AAC1C,EAAI,CAAC,YAAY,CAAC,gBAElB,SAAS,aAAa,UAAM,mCAAoB,GAChD,SAAS,cAAU,+BAAc,WAAW,GAE5C,OAAO;AACT;AAEA,SAAS,SAAe;AACtB,MAAI,CAAC,SAAU;AAEf,QAAM,QAAQ,QAAQ,OAAO,WAAW,IAClC,SAAS,QAAQ,OAAO,QAAQ;AAEtC,SAAO,GAAG,GAAG,CAAC;AAEd,QAAM,QAAkB,CAAC,GAGnB,QAAQ,gBACR,OAAO,SACP,aAAa,SAAS,cAAc,eACpC,aAAa,SAAS,aAAa,kBAAAA,QAAO,MAAM,QAAG,IAAI,kBAAAA,QAAO,IAAI,QAAG,CAAC,YAAa,aAAiC,kBAAAA,QAAO,IAAI,QAAG,IAAlC,kBAAAA,QAAO,MAAM,QAAG,CAAmB,UAEnI,YAAY,QAAQ,MAAM,SAAS,KAAK,SADxB,KACiD;AACvE,QAAM,KAAK,kBAAAA,QAAO,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,aAAa,kBAAAA,QAAO,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAGjJ,MAAM,KAAK,kBAAAA,QAAO,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,kBAAAA,QAAO,KAAK,IAAI,CAAC,CAAC;AAG1E,QAAM,OAAO,gBACP,OAAO,WACP,MAAM,KAAK,MAAM,QAAQ,CAAC;AAChC,QAAM;AAAA,IACJ,kBAAAA,QAAO,KAAK,IAAI,CAAC,IACjB,kBAAAA,QAAO,KAAK,kBAAAA,QAAO,IAAI,IAAI,CAAC,IAC5B,IAAI,OAAO,MAAM,KAAK,SAAS,CAAC,IAChC,kBAAAA,QAAO,KAAK,kBAAAA,QAAO,IAAI,IAAI,CAAC,IAC5B,IAAI,OAAO,QAAQ,MAAM,KAAK,SAAS,CAAC,IACxC,kBAAAA,QAAO,KAAK,IAAI,CAAC;AAAA,EACnB,GAGA,MAAM;AAAA,IACJ,kBAAAA,QAAO,KAAK,IAAI,CAAC,IACjB,kBAAAA,QAAO,IAAI,OAAO,SAAI,OAAO,MAAM,CAAC,CAAC,IACrC,OACA,kBAAAA,QAAO,IAAI,SAAI,OAAO,QAAQ,MAAM,CAAC,CAAC,IACtC,kBAAAA,QAAO,KAAK,IAAI,CAAC;AAAA,EACnB;AAGA,QAAM,UAAU,KAAK,IAAI,SAAS,WAAW,QAAQ,SAAS,QAAQ,QAAQ,CAAC;AAE/E,WAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,UAAM,MAAM,SAAS,WAAW,CAAC,GAC3B,SAAS,SAAS,QAAQ,CAAC;AAGjC,QAAI,SAAS;AACb,QAAI,KAAK;AACP,YAAM,aAAa,SAAS,gBAAgB,KAAK,SAAS,gBAAgB,GACpE,eAAe,SAAS,mBAAmB,IAAI,MAC/C,WAAW,SAAS,OAAO,IAAI,IAAI,IAAI,GAEvC,MAAM,WAAW,IAAI,MAAM,IAAI,QAC/B,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE,GAC3B,MAAM,IAAI,aAAa,KAAK,IAAI,UAAU,MAAM;AAEtD,UAAI,OAAO,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG;AACjC,MAAI,eAAY,OAAO,kBAAAA,QAAO,QAAQ,IAAI,IACtC,iBAAc,OAAO,kBAAAA,QAAO,OAAO,IAAI,IACvC,aAAU,OAAO,kBAAAA,QAAO,MAAM,IAAI,IAEtC,SAAS;AAAA,IACX;AAGA,QAAI,UAAU;AACd,UAAM,UAAU,KAAK,MACf,oBAAoB,UAAU,SAAS,OAAO,IAAI,OAAO,IAAI;AACnE,IAAI,qBAAqB,QAAQ,OAAO,oBACtC,UAAU,kBAAAA,QAAO,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,IACzC,SAAS,mBAAmB,YACrC,UAAU,kBAAAA,QAAO,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG;AAIrD,QAAI,YAAY;AAChB,QAAI,QAAQ;AACV,YAAM,aAAa,SAAS,gBAAgB,KAAK,SAAS,gBAAgB,GACpE,gBAAgB,CAAC,GAAG,SAAS,OAAO,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,GAEhE,MAAM,gBAAgB,IAAI,MAAM,IAAI,QACpC,YAAY,OAAO,KAAK,QAAQ,QAAQ,IAAI,QAAQ,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,GACxEC,QAAO,IAAI,OAAO,IAAI;AAE5B,UAAI,OAAO,GAAG,GAAG,IAAI,UAAU,OAAO,EAAE,CAAC,IAAI,kBAAAD,QAAO,IAAIC,KAAI,CAAC;AAC7D,MAAI,eAAY,OAAO,kBAAAD,QAAO,QAAQ,IAAI,IACtC,kBAAe,OAAO,kBAAAA,QAAO,MAAM,IAAI,IAE3C,YAAY;AAAA,IACd;AAGA,UAAM,WAAW,MAAM,GACjB,SAAS,KAAK,IAAI,GAAG,WAAW,UAAU,MAAM,EAAE,MAAM,GACxD,cAAc,QAAQ,MAAM,GAC5B,YAAY,KAAK,IAAI,GAAG,cAAc,UAAU,SAAS,EAAE,MAAM;AAEvE,UAAM;AAAA,MACJ,kBAAAA,QAAO,KAAK,IAAI,CAAC,IACjB,SAAS,IAAI,OAAO,MAAM,IAC1B,UACA,YAAY,IAAI,OAAO,SAAS,IAChC,kBAAAA,QAAO,KAAK,IAAI,CAAC;AAAA,IACnB;AAAA,EACF;AAGA,QAAM,gBAAgB,IAAI,SACpB,UAAU,KAAK,IAAI,GAAG,SAAS,gBAAgB,CAAC;AACtD,WAAS,IAAI,GAAG,IAAI,SAAS;AAC3B,UAAM,KAAK,kBAAAA,QAAO,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,kBAAAA,QAAO,KAAK,IAAI,CAAC,CAAC;AAI5E,QAAM,KAAK,kBAAAA,QAAO,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,kBAAAA,QAAO,KAAK,IAAI,CAAC,CAAC;AAC1E,QAAM,QAAQ,mFACR,QAAQ;AACd,QAAM;AAAA,IACJ,kBAAAA,QAAO,KAAK,IAAI,CAAC,IACjB,kBAAAA,QAAO,IAAI,KAAK,IAChB,IAAI,OAAO,KAAK,IAAI,GAAG,QAAQ,MAAM,SAAS,CAAC,CAAC,IAChD,kBAAAA,QAAO,KAAK,IAAI,CAAC;AAAA,EACnB,GACA,MAAM;AAAA,IACJ,kBAAAA,QAAO,KAAK,IAAI,CAAC,IACjB,kBAAAA,QAAO,IAAI,KAAK,IAChB,IAAI,OAAO,KAAK,IAAI,GAAG,QAAQ,MAAM,SAAS,CAAC,CAAC,IAChD,kBAAAA,QAAO,KAAK,IAAI,CAAC;AAAA,EACnB,GAGA,MAAM,KAAK,kBAAAA,QAAO,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,OAAO,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAGtE,QAAQ,OAAO,MAAM,MAAM,KAAK;AAAA,CAAI,CAAC;AACvC;AAEA,SAAS,UAAU,KAAqB;AACtC,SAAO,IAAI,QAAQ,mBAAmB,EAAE;AAC1C;AAEA,eAAe,mBAAkC;AAC/C,MAAI,QAAQ,aAAa;AACvB;AAGF,QAAM,EAAE,KAAK,IAAI,MAAM,OAAO,oBAAoB,GAC5C,EAAE,UAAU,IAAI,MAAM,OAAO,WAAW,GACxC,YAAY,UAAU,IAAI,GAG1B,UAAU,QAAQ,KAAK,CAAC,KAAK,WAG7B,SAAS;AAAA;AAAA,sDAEqC,OAAO;AAAA;AAAA;AAI3D,MAAI;AACF,UAAM,UAAU,iBAAiB,MAAM,GAAG,GAC1C,QAAQ,IAAI,kBAAAA,QAAO,MAAM;AAAA,4BAA0B,CAAC;AAAA,EACtD,QAAc;AAEZ,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQJ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAWX,KAAK,MAAM,OAAO,SAAS,GAC3B,OAAO,MAAM,OAAO,WAAW,GAC/B,KAAK,MAAM,OAAO,SAAS,GAE3B,YAAY,KAAK,KAAK,GAAG,QAAQ,GAAG,WAAW,gBAAgB,sBAAsB;AAC3F,OAAG,cAAc,WAAW,KAAK,GAEjC,MAAM,UAAU,kBAAkB,SAAS,EAAE,GAC7C,QAAQ,IAAI,kBAAAA,QAAO,MAAM;AAAA,kCAAgC,CAAC;AAAA,EAC5D;AACF;AAEO,SAAS,UAAgB;AAC9B,EAAI,oBACF,cAAc,eAAe,GAC7B,kBAAkB,OAEhB,kBACF,QAAQ,MAAM,eAAe,QAAQ,aAAa,GAClD,gBAAgB,OAElB,OAAO,KAAK,GACZ,OAAO,MAAM,GACb,OAAO,GAAG,GAAG,CAAC,GACV,QAAQ,MAAM,SAChB,QAAQ,MAAM,WAAW,EAAK,GAEhC,WAAW,MACX,cAAc;AAChB;",
|
|
5
|
+
"names": ["colors", "port"]
|
|
6
|
+
}
|