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,81 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: !0 });
8
+ }, __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from == "object" || typeof from == "function")
10
+ for (let key of __getOwnPropNames(from))
11
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
+ var registry_exports = {};
16
+ __export(registry_exports, {
17
+ clearRoute: () => clearRoute,
18
+ createRegistry: () => createRegistry,
19
+ findServerById: () => findServerById,
20
+ findServersByBundleId: () => findServersByBundleId,
21
+ getAllRoutes: () => getAllRoutes,
22
+ getAllServers: () => getAllServers,
23
+ getRoute: () => getRoute,
24
+ registerServer: () => registerServer,
25
+ setRoute: () => setRoute,
26
+ unregisterServer: () => unregisterServer
27
+ });
28
+ module.exports = __toCommonJS(registry_exports);
29
+ let idCounter = 0;
30
+ function createRegistry() {
31
+ return {
32
+ servers: /* @__PURE__ */ new Map(),
33
+ routes: /* @__PURE__ */ new Map()
34
+ };
35
+ }
36
+ function registerServer(state, opts) {
37
+ const id = `server-${++idCounter}`, registration = {
38
+ id,
39
+ port: opts.port,
40
+ bundleId: opts.bundleId,
41
+ root: opts.root,
42
+ registeredAt: Date.now()
43
+ };
44
+ return state.servers.set(id, registration), registration;
45
+ }
46
+ function unregisterServer(state, id) {
47
+ const deleted = state.servers.delete(id);
48
+ for (const [key, route] of state.routes)
49
+ route.serverId === id && state.routes.delete(key);
50
+ return deleted;
51
+ }
52
+ function findServersByBundleId(state, bundleId) {
53
+ const matches = [];
54
+ for (const server of state.servers.values())
55
+ server.bundleId === bundleId && matches.push(server);
56
+ return matches;
57
+ }
58
+ function findServerById(state, id) {
59
+ return state.servers.get(id);
60
+ }
61
+ function setRoute(state, key, serverId) {
62
+ const binding = {
63
+ key,
64
+ serverId,
65
+ createdAt: Date.now()
66
+ };
67
+ return state.routes.set(key, binding), binding;
68
+ }
69
+ function getRoute(state, key) {
70
+ return state.routes.get(key);
71
+ }
72
+ function clearRoute(state, key) {
73
+ return state.routes.delete(key);
74
+ }
75
+ function getAllServers(state) {
76
+ return Array.from(state.servers.values());
77
+ }
78
+ function getAllRoutes(state) {
79
+ return Array.from(state.routes.values());
80
+ }
81
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/daemon/registry.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAI,YAAY;AAET,SAAS,iBAA8B;AAC5C,SAAO;AAAA,IACL,SAAS,oBAAI,IAAI;AAAA,IACjB,QAAQ,oBAAI,IAAI;AAAA,EAClB;AACF;AAEO,SAAS,eACd,OACA,MACoB;AACpB,QAAM,KAAK,UAAU,EAAE,SAAS,IAC1B,eAAmC;AAAA,IACvC;AAAA,IACA,MAAM,KAAK;AAAA,IACX,UAAU,KAAK;AAAA,IACf,MAAM,KAAK;AAAA,IACX,cAAc,KAAK,IAAI;AAAA,EACzB;AACA,eAAM,QAAQ,IAAI,IAAI,YAAY,GAC3B;AACT;AAEO,SAAS,iBAAiB,OAAoB,IAAqB;AACxE,QAAM,UAAU,MAAM,QAAQ,OAAO,EAAE;AAEvC,aAAW,CAAC,KAAK,KAAK,KAAK,MAAM;AAC/B,IAAI,MAAM,aAAa,MACrB,MAAM,OAAO,OAAO,GAAG;AAG3B,SAAO;AACT;AAEO,SAAS,sBACd,OACA,UACsB;AACtB,QAAM,UAAgC,CAAC;AACvC,aAAW,UAAU,MAAM,QAAQ,OAAO;AACxC,IAAI,OAAO,aAAa,YACtB,QAAQ,KAAK,MAAM;AAGvB,SAAO;AACT;AAEO,SAAS,eACd,OACA,IACgC;AAChC,SAAO,MAAM,QAAQ,IAAI,EAAE;AAC7B;AAEO,SAAS,SACd,OACA,KACA,UACc;AACd,QAAM,UAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,WAAW,KAAK,IAAI;AAAA,EACtB;AACA,eAAM,OAAO,IAAI,KAAK,OAAO,GACtB;AACT;AAEO,SAAS,SAAS,OAAoB,KAAuC;AAClF,SAAO,MAAM,OAAO,IAAI,GAAG;AAC7B;AAEO,SAAS,WAAW,OAAoB,KAAsB;AACnE,SAAO,MAAM,OAAO,OAAO,GAAG;AAChC;AAEO,SAAS,cAAc,OAA0C;AACtE,SAAO,MAAM,KAAK,MAAM,QAAQ,OAAO,CAAC;AAC1C;AAEO,SAAS,aAAa,OAAoC;AAC/D,SAAO,MAAM,KAAK,MAAM,OAAO,OAAO,CAAC;AACzC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __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 __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var registry_exports = {};
24
+ __export(registry_exports, {
25
+ clearRoute: () => clearRoute,
26
+ createRegistry: () => createRegistry,
27
+ findServerById: () => findServerById,
28
+ findServersByBundleId: () => findServersByBundleId,
29
+ getAllRoutes: () => getAllRoutes,
30
+ getAllServers: () => getAllServers,
31
+ getRoute: () => getRoute,
32
+ registerServer: () => registerServer,
33
+ setRoute: () => setRoute,
34
+ unregisterServer: () => unregisterServer
35
+ });
36
+ module.exports = __toCommonJS(registry_exports);
37
+ var idCounter = 0;
38
+ function createRegistry() {
39
+ return {
40
+ servers: /* @__PURE__ */new Map(),
41
+ routes: /* @__PURE__ */new Map()
42
+ };
43
+ }
44
+ function registerServer(state, opts) {
45
+ var id = `server-${++idCounter}`,
46
+ registration = {
47
+ id,
48
+ port: opts.port,
49
+ bundleId: opts.bundleId,
50
+ root: opts.root,
51
+ registeredAt: Date.now()
52
+ };
53
+ return state.servers.set(id, registration), registration;
54
+ }
55
+ function unregisterServer(state, id) {
56
+ var deleted = state.servers.delete(id),
57
+ _iteratorNormalCompletion = !0,
58
+ _didIteratorError = !1,
59
+ _iteratorError = void 0;
60
+ try {
61
+ for (var _iterator = state.routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
62
+ var [key, route] = _step.value;
63
+ route.serverId === id && state.routes.delete(key);
64
+ }
65
+ } catch (err) {
66
+ _didIteratorError = !0, _iteratorError = err;
67
+ } finally {
68
+ try {
69
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
70
+ } finally {
71
+ if (_didIteratorError) throw _iteratorError;
72
+ }
73
+ }
74
+ return deleted;
75
+ }
76
+ function findServersByBundleId(state, bundleId) {
77
+ var matches = [],
78
+ _iteratorNormalCompletion = !0,
79
+ _didIteratorError = !1,
80
+ _iteratorError = void 0;
81
+ try {
82
+ for (var _iterator = state.servers.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
83
+ var server = _step.value;
84
+ server.bundleId === bundleId && matches.push(server);
85
+ }
86
+ } catch (err) {
87
+ _didIteratorError = !0, _iteratorError = err;
88
+ } finally {
89
+ try {
90
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
91
+ } finally {
92
+ if (_didIteratorError) throw _iteratorError;
93
+ }
94
+ }
95
+ return matches;
96
+ }
97
+ function findServerById(state, id) {
98
+ return state.servers.get(id);
99
+ }
100
+ function setRoute(state, key, serverId) {
101
+ var binding = {
102
+ key,
103
+ serverId,
104
+ createdAt: Date.now()
105
+ };
106
+ return state.routes.set(key, binding), binding;
107
+ }
108
+ function getRoute(state, key) {
109
+ return state.routes.get(key);
110
+ }
111
+ function clearRoute(state, key) {
112
+ return state.routes.delete(key);
113
+ }
114
+ function getAllServers(state) {
115
+ return Array.from(state.servers.values());
116
+ }
117
+ function getAllRoutes(state) {
118
+ return Array.from(state.routes.values());
119
+ }
120
+ //# sourceMappingURL=registry.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","registry_exports","__export","clearRoute","createRegistry","findServerById","findServersByBundleId","getAllRoutes","getAllServers","getRoute","registerServer","setRoute","unregisterServer","module","exports","idCounter","servers","Map","routes","state","opts","id","registration","port","bundleId","root","registeredAt","Date","now","set","deleted","delete","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","key","route","serverId","err","return","matches","values","server","push"],"sources":["../../../src/daemon/registry.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,178 @@
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 server_exports = {};
33
+ __export(server_exports, {
34
+ setRouteMode: () => setRouteMode,
35
+ startDaemon: () => startDaemon
36
+ });
37
+ module.exports = __toCommonJS(server_exports);
38
+ var http = __toESM(require("node:http"), 1),
39
+ import_registry = require("./registry.cjs"),
40
+ import_ipc = require("./ipc.cjs"),
41
+ import_proxy = require("./proxy.cjs"),
42
+ import_picker = require("./picker.cjs"),
43
+ import_picocolors = __toESM(require("picocolors"), 1);
44
+ const DEFAULT_PORT = 8081;
45
+ let routeModeOverride = null;
46
+ function setRouteMode(mode) {
47
+ routeModeOverride = mode;
48
+ }
49
+ async function startDaemon(options = {}) {
50
+ const port = options.port || DEFAULT_PORT,
51
+ host = options.host || "0.0.0.0",
52
+ log = options.quiet || !1 ? (..._args) => {} : console.log,
53
+ state = (0, import_registry.createRegistry)(),
54
+ ipcServer = (0, import_ipc.createIPCServer)(state, id => {
55
+ const server = (0, import_registry.findServerById)(state, id);
56
+ if (server) {
57
+ const shortRoot = server.root.replace(process.env.HOME || "", "~");
58
+ log(import_picocolors.default.green(`[daemon] Server registered: ${server.bundleId} \u2192 :${server.port} (${shortRoot})`));
59
+ }
60
+ }, id => {
61
+ log(import_picocolors.default.yellow(`[daemon] Server unregistered: ${id}`));
62
+ }),
63
+ httpServer = http.createServer(async (req, res) => {
64
+ if (req.url?.startsWith("/__daemon")) {
65
+ await handleDaemonEndpoint(req, res, state);
66
+ return;
67
+ }
68
+ const bundleId = new URL(req.url || "/", `http://${req.headers.host}`).searchParams.get("app"),
69
+ servers = bundleId ? (0, import_registry.findServersByBundleId)(state, bundleId) : (0, import_registry.getAllServers)(state);
70
+ if (servers.length === 0) {
71
+ res.writeHead(404), res.end(bundleId ? `No server registered for app: ${bundleId}` : "No servers registered with daemon");
72
+ return;
73
+ }
74
+ if (servers.length === 1) {
75
+ (0, import_proxy.proxyHttpRequest)(req, res, servers[0]);
76
+ return;
77
+ }
78
+ const routeKey = bundleId || "default",
79
+ existingRoute = (0, import_registry.getRoute)(state, routeKey);
80
+ if (existingRoute) {
81
+ const server = (0, import_registry.findServerById)(state, existingRoute.serverId);
82
+ if (server) {
83
+ (0, import_proxy.proxyHttpRequest)(req, res, server);
84
+ return;
85
+ }
86
+ }
87
+ if (routeModeOverride === "most-recent" || !routeModeOverride && (!process.stdin.isTTY || process.env.CI)) {
88
+ const mostRecent = [...servers].sort((a, b) => b.registeredAt - a.registeredAt)[0];
89
+ (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);
90
+ return;
91
+ }
92
+ const PICKER_TIMEOUT = 3e4,
93
+ timeoutPromise = new Promise((_, reject) => {
94
+ setTimeout(() => reject(new Error("Picker timeout")), PICKER_TIMEOUT);
95
+ });
96
+ try {
97
+ const {
98
+ server,
99
+ remember
100
+ } = await Promise.race([(0, import_picker.pickServer)(routeKey, servers), timeoutPromise]);
101
+ remember && ((0, import_registry.setRoute)(state, routeKey, server.id), log(import_picocolors.default.blue(`[daemon] Route saved: ${routeKey} \u2192 ${server.id}`))), (0, import_proxy.proxyHttpRequest)(req, res, server);
102
+ } catch {
103
+ const mostRecent = [...servers].sort((a, b) => b.registeredAt - a.registeredAt)[0];
104
+ log(import_picocolors.default.yellow(`[daemon] Picker timeout/cancelled: routing to most recent (${mostRecent.root})`)), (0, import_proxy.proxyHttpRequest)(req, res, mostRecent);
105
+ }
106
+ });
107
+ httpServer.on("upgrade", async (req, rawSocket, head) => {
108
+ const socket = rawSocket,
109
+ bundleId = new URL(req.url || "/", `http://${req.headers.host}`).searchParams.get("app"),
110
+ servers = bundleId ? (0, import_registry.findServersByBundleId)(state, bundleId) : (0, import_registry.getAllServers)(state);
111
+ if (servers.length === 0) {
112
+ socket.end(`HTTP/1.1 404 Not Found\r
113
+ \r
114
+ `);
115
+ return;
116
+ }
117
+ let target;
118
+ if (servers.length === 1) target = servers[0];else {
119
+ const routeKey = bundleId || "default",
120
+ existingRoute = (0, import_registry.getRoute)(state, routeKey);
121
+ if (existingRoute && (target = (0, import_registry.findServerById)(state, existingRoute.serverId)), !target) {
122
+ const mostRecent = [...servers].sort((a, b) => b.registeredAt - a.registeredAt)[0];
123
+ (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;
124
+ }
125
+ }
126
+ target ? (0, import_proxy.proxyWebSocket)(req, socket, head, target) : socket.end(`HTTP/1.1 404 Not Found\r
127
+ \r
128
+ `);
129
+ }), httpServer.listen(port, host, () => {
130
+ log(import_picocolors.default.cyan(`
131
+ \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(`
132
+ 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("");
133
+ });
134
+ const shutdown = () => {
135
+ log(import_picocolors.default.yellow(`
136
+ [daemon] Shutting down...`)), httpServer.close(), ipcServer.close(), (0, import_ipc.cleanupSocket)(), process.exit(0);
137
+ };
138
+ return process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown), {
139
+ httpServer,
140
+ ipcServer,
141
+ state,
142
+ shutdown
143
+ };
144
+ }
145
+ async function handleDaemonEndpoint(req, res, state) {
146
+ const url = new URL(req.url || "/", `http://${req.headers.host}`);
147
+ if (url.pathname === "/__daemon/status") {
148
+ const servers = (0, import_registry.getAllServers)(state),
149
+ simulators = await (0, import_picker.getBootedSimulators)();
150
+ res.writeHead(200, {
151
+ "Content-Type": "application/json"
152
+ }), res.end(JSON.stringify({
153
+ servers: servers.map(s => ({
154
+ id: s.id,
155
+ port: s.port,
156
+ bundleId: s.bundleId,
157
+ root: s.root
158
+ })),
159
+ simulators
160
+ }, null, 2));
161
+ return;
162
+ }
163
+ if (url.pathname === "/__daemon/route" && req.method === "POST") {
164
+ const bundleId = url.searchParams.get("bundleId"),
165
+ serverId = url.searchParams.get("serverId");
166
+ if (!bundleId || !serverId) {
167
+ res.writeHead(400), res.end("Missing bundleId or serverId");
168
+ return;
169
+ }
170
+ if (!(0, import_registry.findServerById)(state, serverId)) {
171
+ res.writeHead(404), res.end("Server not found");
172
+ return;
173
+ }
174
+ (0, import_registry.setRoute)(state, bundleId, serverId), (0, import_picker.resolvePendingPicker)(bundleId, serverId), res.writeHead(200), res.end("Route set");
175
+ return;
176
+ }
177
+ res.writeHead(404), res.end("Not found");
178
+ }
@@ -0,0 +1,179 @@
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 server_exports = {};
24
+ __export(server_exports, {
25
+ setRouteMode: () => setRouteMode,
26
+ startDaemon: () => startDaemon
27
+ });
28
+ module.exports = __toCommonJS(server_exports);
29
+ var http = __toESM(require("node:http"), 1), import_registry = require("./registry"), import_ipc = require("./ipc"), import_proxy = require("./proxy"), import_picker = require("./picker"), import_picocolors = __toESM(require("picocolors"), 1);
30
+ const DEFAULT_PORT = 8081;
31
+ let routeModeOverride = null;
32
+ function setRouteMode(mode) {
33
+ routeModeOverride = mode;
34
+ }
35
+ async function startDaemon(options = {}) {
36
+ const port = options.port || DEFAULT_PORT, host = options.host || "0.0.0.0", log = options.quiet || !1 ? (..._args) => {
37
+ } : console.log, state = (0, import_registry.createRegistry)(), ipcServer = (0, import_ipc.createIPCServer)(
38
+ state,
39
+ (id) => {
40
+ const server = (0, import_registry.findServerById)(state, id);
41
+ if (server) {
42
+ const shortRoot = server.root.replace(process.env.HOME || "", "~");
43
+ log(
44
+ import_picocolors.default.green(`[daemon] Server registered: ${server.bundleId} \u2192 :${server.port} (${shortRoot})`)
45
+ );
46
+ }
47
+ },
48
+ (id) => {
49
+ log(import_picocolors.default.yellow(`[daemon] Server unregistered: ${id}`));
50
+ }
51
+ ), httpServer = http.createServer(async (req, res) => {
52
+ if (req.url?.startsWith("/__daemon")) {
53
+ await handleDaemonEndpoint(req, res, state);
54
+ return;
55
+ }
56
+ const bundleId = new URL(req.url || "/", `http://${req.headers.host}`).searchParams.get("app"), servers = bundleId ? (0, import_registry.findServersByBundleId)(state, bundleId) : (0, import_registry.getAllServers)(state);
57
+ if (servers.length === 0) {
58
+ res.writeHead(404), res.end(
59
+ bundleId ? `No server registered for app: ${bundleId}` : "No servers registered with daemon"
60
+ );
61
+ return;
62
+ }
63
+ if (servers.length === 1) {
64
+ (0, import_proxy.proxyHttpRequest)(req, res, servers[0]);
65
+ return;
66
+ }
67
+ const routeKey = bundleId || "default", existingRoute = (0, import_registry.getRoute)(state, routeKey);
68
+ if (existingRoute) {
69
+ const server = (0, import_registry.findServerById)(state, existingRoute.serverId);
70
+ if (server) {
71
+ (0, import_proxy.proxyHttpRequest)(req, res, server);
72
+ return;
73
+ }
74
+ }
75
+ if (routeModeOverride === "most-recent" || !routeModeOverride && (!process.stdin.isTTY || process.env.CI)) {
76
+ const mostRecent = [...servers].sort((a, b) => b.registeredAt - a.registeredAt)[0];
77
+ (0, import_registry.setRoute)(state, routeKey, mostRecent.id), log(
78
+ import_picocolors.default.yellow(
79
+ `[daemon] Auto-routing ${bundleId} \u2192 ${mostRecent.root} (most recent, remembered)`
80
+ )
81
+ ), (0, import_proxy.proxyHttpRequest)(req, res, mostRecent);
82
+ return;
83
+ }
84
+ const PICKER_TIMEOUT = 3e4, timeoutPromise = new Promise((_, reject) => {
85
+ setTimeout(() => reject(new Error("Picker timeout")), PICKER_TIMEOUT);
86
+ });
87
+ try {
88
+ const { server, remember } = await Promise.race([
89
+ (0, import_picker.pickServer)(routeKey, servers),
90
+ timeoutPromise
91
+ ]);
92
+ remember && ((0, import_registry.setRoute)(state, routeKey, server.id), log(import_picocolors.default.blue(`[daemon] Route saved: ${routeKey} \u2192 ${server.id}`))), (0, import_proxy.proxyHttpRequest)(req, res, server);
93
+ } catch {
94
+ const mostRecent = [...servers].sort((a, b) => b.registeredAt - a.registeredAt)[0];
95
+ log(
96
+ import_picocolors.default.yellow(
97
+ `[daemon] Picker timeout/cancelled: routing to most recent (${mostRecent.root})`
98
+ )
99
+ ), (0, import_proxy.proxyHttpRequest)(req, res, mostRecent);
100
+ }
101
+ });
102
+ httpServer.on("upgrade", async (req, rawSocket, head) => {
103
+ const socket = rawSocket, bundleId = new URL(req.url || "/", `http://${req.headers.host}`).searchParams.get("app"), servers = bundleId ? (0, import_registry.findServersByBundleId)(state, bundleId) : (0, import_registry.getAllServers)(state);
104
+ if (servers.length === 0) {
105
+ socket.end(`HTTP/1.1 404 Not Found\r
106
+ \r
107
+ `);
108
+ return;
109
+ }
110
+ let target;
111
+ if (servers.length === 1)
112
+ target = servers[0];
113
+ else {
114
+ const routeKey = bundleId || "default", existingRoute = (0, import_registry.getRoute)(state, routeKey);
115
+ if (existingRoute && (target = (0, import_registry.findServerById)(state, existingRoute.serverId)), !target) {
116
+ const mostRecent = [...servers].sort((a, b) => b.registeredAt - a.registeredAt)[0];
117
+ (0, import_registry.setRoute)(state, routeKey, mostRecent.id), log(
118
+ import_picocolors.default.yellow(
119
+ `[daemon] WebSocket: routing ${bundleId} \u2192 ${mostRecent.root} (most recent, remembered)`
120
+ )
121
+ ), target = mostRecent;
122
+ }
123
+ }
124
+ target ? (0, import_proxy.proxyWebSocket)(req, socket, head, target) : socket.end(`HTTP/1.1 404 Not Found\r
125
+ \r
126
+ `);
127
+ }), httpServer.listen(port, host, () => {
128
+ log(import_picocolors.default.cyan(`
129
+ \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(`
130
+ 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("");
131
+ });
132
+ const shutdown = () => {
133
+ log(import_picocolors.default.yellow(`
134
+ [daemon] Shutting down...`)), httpServer.close(), ipcServer.close(), (0, import_ipc.cleanupSocket)(), process.exit(0);
135
+ };
136
+ return process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown), {
137
+ httpServer,
138
+ ipcServer,
139
+ state,
140
+ shutdown
141
+ };
142
+ }
143
+ async function handleDaemonEndpoint(req, res, state) {
144
+ const url = new URL(req.url || "/", `http://${req.headers.host}`);
145
+ if (url.pathname === "/__daemon/status") {
146
+ const servers = (0, import_registry.getAllServers)(state), simulators = await (0, import_picker.getBootedSimulators)();
147
+ res.writeHead(200, { "Content-Type": "application/json" }), res.end(
148
+ JSON.stringify(
149
+ {
150
+ servers: servers.map((s) => ({
151
+ id: s.id,
152
+ port: s.port,
153
+ bundleId: s.bundleId,
154
+ root: s.root
155
+ })),
156
+ simulators
157
+ },
158
+ null,
159
+ 2
160
+ )
161
+ );
162
+ return;
163
+ }
164
+ if (url.pathname === "/__daemon/route" && req.method === "POST") {
165
+ const bundleId = url.searchParams.get("bundleId"), serverId = url.searchParams.get("serverId");
166
+ if (!bundleId || !serverId) {
167
+ res.writeHead(400), res.end("Missing bundleId or serverId");
168
+ return;
169
+ }
170
+ if (!(0, import_registry.findServerById)(state, serverId)) {
171
+ res.writeHead(404), res.end("Server not found");
172
+ return;
173
+ }
174
+ (0, import_registry.setRoute)(state, bundleId, serverId), (0, import_picker.resolvePendingPicker)(bundleId, serverId), res.writeHead(200), res.end("Route set");
175
+ return;
176
+ }
177
+ res.writeHead(404), res.end("Not found");
178
+ }
179
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/daemon/server.ts"],
4
+ "mappings": "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",
5
+ "names": ["colors"]
6
+ }