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.
Files changed (288) hide show
  1. package/devtools/dev.mjs +44 -0
  2. package/devtools/devtools.mjs +540 -0
  3. package/devtools/source-inspector.mjs +201 -0
  4. package/dist/cjs/cli/daemon.cjs +136 -0
  5. package/dist/cjs/cli/daemon.js +112 -0
  6. package/dist/cjs/cli/daemon.js.map +6 -0
  7. package/dist/cjs/cli/daemon.native.js +173 -0
  8. package/dist/cjs/cli/daemon.native.js.map +1 -0
  9. package/dist/cjs/createHandleRequest.cjs +15 -8
  10. package/dist/cjs/createHandleRequest.js +10 -6
  11. package/dist/cjs/createHandleRequest.js.map +1 -1
  12. package/dist/cjs/createHandleRequest.native.js +8 -3
  13. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  14. package/dist/cjs/daemon/index.cjs +24 -0
  15. package/dist/cjs/daemon/index.js +21 -0
  16. package/dist/cjs/daemon/index.js.map +6 -0
  17. package/dist/cjs/daemon/index.native.js +27 -0
  18. package/dist/cjs/daemon/index.native.js.map +1 -0
  19. package/dist/cjs/daemon/ipc.cjs +235 -0
  20. package/dist/cjs/daemon/ipc.js +204 -0
  21. package/dist/cjs/daemon/ipc.js.map +6 -0
  22. package/dist/cjs/daemon/ipc.native.js +276 -0
  23. package/dist/cjs/daemon/ipc.native.js.map +1 -0
  24. package/dist/cjs/daemon/picker.cjs +223 -0
  25. package/dist/cjs/daemon/picker.js +191 -0
  26. package/dist/cjs/daemon/picker.js.map +6 -0
  27. package/dist/cjs/daemon/picker.native.js +308 -0
  28. package/dist/cjs/daemon/picker.native.js.map +1 -0
  29. package/dist/cjs/daemon/proxy.cjs +75 -0
  30. package/dist/cjs/daemon/proxy.js +70 -0
  31. package/dist/cjs/daemon/proxy.js.map +6 -0
  32. package/dist/cjs/daemon/proxy.native.js +81 -0
  33. package/dist/cjs/daemon/proxy.native.js.map +1 -0
  34. package/dist/cjs/daemon/registry.cjs +85 -0
  35. package/dist/cjs/daemon/registry.js +81 -0
  36. package/dist/cjs/daemon/registry.js.map +6 -0
  37. package/dist/cjs/daemon/registry.native.js +120 -0
  38. package/dist/cjs/daemon/registry.native.js.map +1 -0
  39. package/dist/cjs/daemon/server.cjs +178 -0
  40. package/dist/cjs/daemon/server.js +179 -0
  41. package/dist/cjs/daemon/server.js.map +6 -0
  42. package/dist/cjs/daemon/server.native.js +200 -0
  43. package/dist/cjs/daemon/server.native.js.map +1 -0
  44. package/dist/cjs/daemon/tui.cjs +223 -0
  45. package/dist/cjs/daemon/tui.js +192 -0
  46. package/dist/cjs/daemon/tui.js.map +6 -0
  47. package/dist/cjs/daemon/tui.native.js +234 -0
  48. package/dist/cjs/daemon/tui.native.js.map +1 -0
  49. package/dist/cjs/daemon/types.cjs +16 -0
  50. package/dist/cjs/daemon/types.js +14 -0
  51. package/dist/cjs/daemon/types.js.map +6 -0
  52. package/dist/cjs/daemon/types.native.js +19 -0
  53. package/dist/cjs/daemon/types.native.js.map +1 -0
  54. package/dist/cjs/daemon/utils.cjs +74 -0
  55. package/dist/cjs/daemon/utils.js +65 -0
  56. package/dist/cjs/daemon/utils.js.map +6 -0
  57. package/dist/cjs/daemon/utils.native.js +83 -0
  58. package/dist/cjs/daemon/utils.native.js.map +1 -0
  59. package/dist/cjs/fork/createMemoryHistory.cjs +22 -8
  60. package/dist/cjs/fork/createMemoryHistory.js +20 -6
  61. package/dist/cjs/fork/createMemoryHistory.js.map +1 -1
  62. package/dist/cjs/fork/createMemoryHistory.native.js +22 -8
  63. package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
  64. package/dist/cjs/fork/useLinking.cjs +52 -13
  65. package/dist/cjs/fork/useLinking.js +35 -10
  66. package/dist/cjs/fork/useLinking.js.map +1 -1
  67. package/dist/cjs/index.cjs +6 -2
  68. package/dist/cjs/index.js +4 -2
  69. package/dist/cjs/index.js.map +2 -2
  70. package/dist/cjs/index.native.js +6 -2
  71. package/dist/cjs/index.native.js.map +1 -1
  72. package/dist/cjs/router/linkingConfig.cjs +13 -2
  73. package/dist/cjs/router/linkingConfig.js +14 -5
  74. package/dist/cjs/router/linkingConfig.js.map +1 -1
  75. package/dist/cjs/router/linkingConfig.native.js +10 -1
  76. package/dist/cjs/router/linkingConfig.native.js.map +1 -1
  77. package/dist/cjs/router/routeMask.cjs +137 -0
  78. package/dist/cjs/router/routeMask.js +127 -0
  79. package/dist/cjs/router/routeMask.js.map +6 -0
  80. package/dist/cjs/router/routeMask.native.js +160 -0
  81. package/dist/cjs/router/routeMask.native.js.map +1 -0
  82. package/dist/cjs/router/router.cjs +26 -3
  83. package/dist/cjs/router/router.js +23 -3
  84. package/dist/cjs/router/router.js.map +1 -1
  85. package/dist/cjs/router/router.native.js +26 -3
  86. package/dist/cjs/router/router.native.js.map +1 -1
  87. package/dist/cjs/server/PreloadScripts.native.js +45 -39
  88. package/dist/cjs/server/PreloadScripts.native.js.map +1 -6
  89. package/dist/cjs/vite/DevHead.cjs +2 -909
  90. package/dist/cjs/vite/DevHead.js +1 -917
  91. package/dist/cjs/vite/DevHead.js.map +1 -1
  92. package/dist/cjs/vite/DevHead.native.js +1 -882
  93. package/dist/cjs/vite/DevHead.native.js.map +1 -1
  94. package/dist/cjs/vite/one.cjs +4 -1
  95. package/dist/cjs/vite/one.js +4 -2
  96. package/dist/cjs/vite/one.js.map +1 -1
  97. package/dist/cjs/vite/one.native.js +4 -1
  98. package/dist/cjs/vite/one.native.js.map +1 -1
  99. package/dist/cjs/vite/plugins/devtoolsPlugin.cjs +55 -0
  100. package/dist/cjs/vite/plugins/devtoolsPlugin.js +49 -0
  101. package/dist/cjs/vite/plugins/devtoolsPlugin.js.map +6 -0
  102. package/dist/cjs/vite/plugins/devtoolsPlugin.native.js +58 -0
  103. package/dist/cjs/vite/plugins/devtoolsPlugin.native.js.map +1 -0
  104. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +1 -6
  105. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +1 -6
  106. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  107. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +1 -6
  108. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  109. package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +7 -1
  110. package/dist/cjs/vite/plugins/virtualEntryPlugin.js +5 -1
  111. package/dist/cjs/vite/plugins/virtualEntryPlugin.js.map +1 -1
  112. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +8 -1
  113. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  114. package/dist/esm/cli/daemon.js +89 -0
  115. package/dist/esm/cli/daemon.js.map +6 -0
  116. package/dist/esm/cli/daemon.mjs +102 -0
  117. package/dist/esm/cli/daemon.mjs.map +1 -0
  118. package/dist/esm/cli/daemon.native.js +136 -0
  119. package/dist/esm/cli/daemon.native.js.map +1 -0
  120. package/dist/esm/createHandleRequest.js +10 -5
  121. package/dist/esm/createHandleRequest.js.map +1 -1
  122. package/dist/esm/createHandleRequest.mjs +15 -8
  123. package/dist/esm/createHandleRequest.mjs.map +1 -1
  124. package/dist/esm/createHandleRequest.native.js +8 -3
  125. package/dist/esm/createHandleRequest.native.js.map +1 -1
  126. package/dist/esm/daemon/index.js +8 -0
  127. package/dist/esm/daemon/index.js.map +6 -0
  128. package/dist/esm/daemon/index.mjs +8 -0
  129. package/dist/esm/daemon/index.mjs.map +1 -0
  130. package/dist/esm/daemon/index.native.js +8 -0
  131. package/dist/esm/daemon/index.native.js.map +1 -0
  132. package/dist/esm/daemon/ipc.js +192 -0
  133. package/dist/esm/daemon/ipc.js.map +6 -0
  134. package/dist/esm/daemon/ipc.mjs +191 -0
  135. package/dist/esm/daemon/ipc.mjs.map +1 -0
  136. package/dist/esm/daemon/ipc.native.js +229 -0
  137. package/dist/esm/daemon/ipc.native.js.map +1 -0
  138. package/dist/esm/daemon/picker.js +169 -0
  139. package/dist/esm/daemon/picker.js.map +6 -0
  140. package/dist/esm/daemon/picker.mjs +186 -0
  141. package/dist/esm/daemon/picker.mjs.map +1 -0
  142. package/dist/esm/daemon/picker.native.js +268 -0
  143. package/dist/esm/daemon/picker.native.js.map +1 -0
  144. package/dist/esm/daemon/proxy.js +47 -0
  145. package/dist/esm/daemon/proxy.js.map +6 -0
  146. package/dist/esm/daemon/proxy.mjs +40 -0
  147. package/dist/esm/daemon/proxy.mjs.map +1 -0
  148. package/dist/esm/daemon/proxy.native.js +43 -0
  149. package/dist/esm/daemon/proxy.native.js.map +1 -0
  150. package/dist/esm/daemon/registry.js +65 -0
  151. package/dist/esm/daemon/registry.js.map +6 -0
  152. package/dist/esm/daemon/registry.mjs +53 -0
  153. package/dist/esm/daemon/registry.mjs.map +1 -0
  154. package/dist/esm/daemon/registry.native.js +85 -0
  155. package/dist/esm/daemon/registry.native.js.map +1 -0
  156. package/dist/esm/daemon/server.js +167 -0
  157. package/dist/esm/daemon/server.js.map +6 -0
  158. package/dist/esm/daemon/server.mjs +143 -0
  159. package/dist/esm/daemon/server.mjs.map +1 -0
  160. package/dist/esm/daemon/server.native.js +162 -0
  161. package/dist/esm/daemon/server.native.js.map +1 -0
  162. package/dist/esm/daemon/tui.js +171 -0
  163. package/dist/esm/daemon/tui.js.map +6 -0
  164. package/dist/esm/daemon/tui.mjs +187 -0
  165. package/dist/esm/daemon/tui.mjs.map +1 -0
  166. package/dist/esm/daemon/tui.native.js +195 -0
  167. package/dist/esm/daemon/tui.native.js.map +1 -0
  168. package/dist/esm/daemon/types.js +1 -0
  169. package/dist/esm/daemon/types.js.map +6 -0
  170. package/dist/esm/daemon/types.mjs +2 -0
  171. package/dist/esm/daemon/types.mjs.map +1 -0
  172. package/dist/esm/daemon/types.native.js +2 -0
  173. package/dist/esm/daemon/types.native.js.map +1 -0
  174. package/dist/esm/daemon/utils.js +42 -0
  175. package/dist/esm/daemon/utils.js.map +6 -0
  176. package/dist/esm/daemon/utils.mjs +39 -0
  177. package/dist/esm/daemon/utils.mjs.map +1 -0
  178. package/dist/esm/daemon/utils.native.js +45 -0
  179. package/dist/esm/daemon/utils.native.js.map +1 -0
  180. package/dist/esm/fork/createMemoryHistory.js +20 -6
  181. package/dist/esm/fork/createMemoryHistory.js.map +1 -1
  182. package/dist/esm/fork/createMemoryHistory.mjs +22 -8
  183. package/dist/esm/fork/createMemoryHistory.mjs.map +1 -1
  184. package/dist/esm/fork/createMemoryHistory.native.js +22 -8
  185. package/dist/esm/fork/createMemoryHistory.native.js.map +1 -1
  186. package/dist/esm/fork/useLinking.js +35 -9
  187. package/dist/esm/fork/useLinking.js.map +1 -1
  188. package/dist/esm/fork/useLinking.mjs +52 -13
  189. package/dist/esm/fork/useLinking.mjs.map +1 -1
  190. package/dist/esm/index.js +4 -0
  191. package/dist/esm/index.js.map +1 -1
  192. package/dist/esm/index.mjs +3 -1
  193. package/dist/esm/index.mjs.map +1 -1
  194. package/dist/esm/index.native.js +3 -1
  195. package/dist/esm/index.native.js.map +1 -1
  196. package/dist/esm/router/linkingConfig.js +14 -4
  197. package/dist/esm/router/linkingConfig.js.map +1 -1
  198. package/dist/esm/router/linkingConfig.mjs +12 -1
  199. package/dist/esm/router/linkingConfig.mjs.map +1 -1
  200. package/dist/esm/router/linkingConfig.native.js +10 -1
  201. package/dist/esm/router/linkingConfig.native.js.map +1 -1
  202. package/dist/esm/router/routeMask.js +111 -0
  203. package/dist/esm/router/routeMask.js.map +6 -0
  204. package/dist/esm/router/routeMask.mjs +108 -0
  205. package/dist/esm/router/routeMask.mjs.map +1 -0
  206. package/dist/esm/router/routeMask.native.js +128 -0
  207. package/dist/esm/router/routeMask.native.js.map +1 -0
  208. package/dist/esm/router/router.js +23 -2
  209. package/dist/esm/router/router.js.map +1 -1
  210. package/dist/esm/router/router.mjs +24 -3
  211. package/dist/esm/router/router.mjs.map +1 -1
  212. package/dist/esm/router/router.native.js +24 -3
  213. package/dist/esm/router/router.native.js.map +1 -1
  214. package/dist/esm/server/PreloadScripts.native.js +29 -33
  215. package/dist/esm/server/PreloadScripts.native.js.map +1 -6
  216. package/dist/esm/vite/DevHead.js +1 -917
  217. package/dist/esm/vite/DevHead.js.map +1 -1
  218. package/dist/esm/vite/DevHead.mjs +2 -909
  219. package/dist/esm/vite/DevHead.mjs.map +1 -1
  220. package/dist/esm/vite/DevHead.native.js +0 -881
  221. package/dist/esm/vite/DevHead.native.js.map +1 -1
  222. package/dist/esm/vite/one.js +4 -1
  223. package/dist/esm/vite/one.js.map +1 -1
  224. package/dist/esm/vite/one.mjs +4 -1
  225. package/dist/esm/vite/one.mjs.map +1 -1
  226. package/dist/esm/vite/one.native.js +4 -1
  227. package/dist/esm/vite/one.native.js.map +1 -1
  228. package/dist/esm/vite/plugins/devtoolsPlugin.js +33 -0
  229. package/dist/esm/vite/plugins/devtoolsPlugin.js.map +6 -0
  230. package/dist/esm/vite/plugins/devtoolsPlugin.mjs +31 -0
  231. package/dist/esm/vite/plugins/devtoolsPlugin.mjs.map +1 -0
  232. package/dist/esm/vite/plugins/devtoolsPlugin.native.js +31 -0
  233. package/dist/esm/vite/plugins/devtoolsPlugin.native.js.map +1 -0
  234. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +1 -6
  235. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  236. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +1 -6
  237. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  238. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +1 -6
  239. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  240. package/dist/esm/vite/plugins/virtualEntryPlugin.js +5 -1
  241. package/dist/esm/vite/plugins/virtualEntryPlugin.js.map +1 -1
  242. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +7 -1
  243. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
  244. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +8 -1
  245. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  246. package/package.json +12 -10
  247. package/src/createHandleRequest.ts +16 -3
  248. package/src/fork/createMemoryHistory.tsx +39 -4
  249. package/src/fork/useLinking.ts +83 -12
  250. package/src/index.ts +3 -0
  251. package/src/router/linkingConfig.ts +21 -4
  252. package/src/router/routeMask.ts +293 -0
  253. package/src/router/router.ts +53 -1
  254. package/src/vite/DevHead.tsx +1 -924
  255. package/src/vite/one.ts +4 -0
  256. package/src/vite/plugins/devtoolsPlugin.ts +45 -0
  257. package/src/vite/plugins/fileSystemRouterPlugin.tsx +2 -7
  258. package/src/vite/plugins/virtualEntryPlugin.ts +12 -3
  259. package/src/vite/types.ts +1 -0
  260. package/types/cli/daemon.d.ts.map +1 -0
  261. package/types/createHandleRequest.d.ts.map +1 -1
  262. package/types/daemon/index.d.ts.map +1 -0
  263. package/types/daemon/ipc.d.ts.map +1 -0
  264. package/types/daemon/picker.d.ts.map +1 -0
  265. package/types/daemon/proxy.d.ts.map +1 -0
  266. package/types/daemon/registry.d.ts.map +1 -0
  267. package/types/daemon/server.d.ts.map +1 -0
  268. package/types/daemon/tui.d.ts.map +1 -0
  269. package/types/daemon/types.d.ts.map +1 -0
  270. package/types/daemon/utils.d.ts.map +1 -0
  271. package/types/fork/createMemoryHistory.d.ts +6 -2
  272. package/types/fork/createMemoryHistory.d.ts.map +1 -1
  273. package/types/fork/useLinking.d.ts.map +1 -1
  274. package/types/index.d.ts +2 -0
  275. package/types/index.d.ts.map +1 -1
  276. package/types/router/linkingConfig.d.ts.map +1 -1
  277. package/types/router/routeMask.d.ts +130 -0
  278. package/types/router/routeMask.d.ts.map +1 -0
  279. package/types/router/router.d.ts +23 -0
  280. package/types/router/router.d.ts.map +1 -1
  281. package/types/vite/DevHead.d.ts.map +1 -1
  282. package/types/vite/one.d.ts.map +1 -1
  283. package/types/vite/plugins/devtoolsPlugin.d.ts +5 -0
  284. package/types/vite/plugins/devtoolsPlugin.d.ts.map +1 -0
  285. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  286. package/types/vite/plugins/virtualEntryPlugin.d.ts +1 -3
  287. package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
  288. 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":"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","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": "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",
5
+ "names": ["colors", "port"]
6
+ }