@wasmsoft/fantastic 1.0.0

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 (456) hide show
  1. package/README.md +65 -0
  2. package/bin/run.js +27 -0
  3. package/bin/supervisor.js +65 -0
  4. package/dist/acquire/central-url.d.ts +9 -0
  5. package/dist/acquire/central-url.d.ts.map +1 -0
  6. package/dist/acquire/central-url.js +74 -0
  7. package/dist/acquire/central-url.js.map +1 -0
  8. package/dist/acquire/code.d.ts +21 -0
  9. package/dist/acquire/code.d.ts.map +1 -0
  10. package/dist/acquire/code.js +66 -0
  11. package/dist/acquire/code.js.map +1 -0
  12. package/dist/acquire/compatibility.d.ts +18 -0
  13. package/dist/acquire/compatibility.d.ts.map +1 -0
  14. package/dist/acquire/compatibility.js +36 -0
  15. package/dist/acquire/compatibility.js.map +1 -0
  16. package/dist/acquire/fetch.d.ts +26 -0
  17. package/dist/acquire/fetch.d.ts.map +1 -0
  18. package/dist/acquire/fetch.js +72 -0
  19. package/dist/acquire/fetch.js.map +1 -0
  20. package/dist/acquire/latest.d.ts +24 -0
  21. package/dist/acquire/latest.d.ts.map +1 -0
  22. package/dist/acquire/latest.js +95 -0
  23. package/dist/acquire/latest.js.map +1 -0
  24. package/dist/backup/archive.d.ts +26 -0
  25. package/dist/backup/archive.d.ts.map +1 -0
  26. package/dist/backup/archive.js +123 -0
  27. package/dist/backup/archive.js.map +1 -0
  28. package/dist/backup/restore.d.ts +46 -0
  29. package/dist/backup/restore.d.ts.map +1 -0
  30. package/dist/backup/restore.js +164 -0
  31. package/dist/backup/restore.js.map +1 -0
  32. package/dist/base-command.d.ts +54 -0
  33. package/dist/base-command.d.ts.map +1 -0
  34. package/dist/base-command.js +120 -0
  35. package/dist/base-command.js.map +1 -0
  36. package/dist/bundle-format/index.d.ts +6 -0
  37. package/dist/bundle-format/index.d.ts.map +1 -0
  38. package/dist/bundle-format/index.js +36 -0
  39. package/dist/bundle-format/index.js.map +1 -0
  40. package/dist/commands/activate.d.ts +15 -0
  41. package/dist/commands/activate.d.ts.map +1 -0
  42. package/dist/commands/activate.js +139 -0
  43. package/dist/commands/activate.js.map +1 -0
  44. package/dist/commands/backup.d.ts +11 -0
  45. package/dist/commands/backup.d.ts.map +1 -0
  46. package/dist/commands/backup.js +75 -0
  47. package/dist/commands/backup.js.map +1 -0
  48. package/dist/commands/config/get.d.ts +10 -0
  49. package/dist/commands/config/get.d.ts.map +1 -0
  50. package/dist/commands/config/get.js +33 -0
  51. package/dist/commands/config/get.js.map +1 -0
  52. package/dist/commands/config/list.d.ts +7 -0
  53. package/dist/commands/config/list.d.ts.map +1 -0
  54. package/dist/commands/config/list.js +43 -0
  55. package/dist/commands/config/list.js.map +1 -0
  56. package/dist/commands/config/set.d.ts +11 -0
  57. package/dist/commands/config/set.d.ts.map +1 -0
  58. package/dist/commands/config/set.js +56 -0
  59. package/dist/commands/config/set.js.map +1 -0
  60. package/dist/commands/db/migrate.d.ts +10 -0
  61. package/dist/commands/db/migrate.d.ts.map +1 -0
  62. package/dist/commands/db/migrate.js +67 -0
  63. package/dist/commands/db/migrate.js.map +1 -0
  64. package/dist/commands/dev.d.ts +19 -0
  65. package/dist/commands/dev.d.ts.map +1 -0
  66. package/dist/commands/dev.js +149 -0
  67. package/dist/commands/dev.js.map +1 -0
  68. package/dist/commands/doctor.d.ts +11 -0
  69. package/dist/commands/doctor.d.ts.map +1 -0
  70. package/dist/commands/doctor.js +75 -0
  71. package/dist/commands/doctor.js.map +1 -0
  72. package/dist/commands/health.d.ts +12 -0
  73. package/dist/commands/health.d.ts.map +1 -0
  74. package/dist/commands/health.js +109 -0
  75. package/dist/commands/health.js.map +1 -0
  76. package/dist/commands/install.d.ts +60 -0
  77. package/dist/commands/install.d.ts.map +1 -0
  78. package/dist/commands/install.js +486 -0
  79. package/dist/commands/install.js.map +1 -0
  80. package/dist/commands/iptv/snapshot.d.ts +10 -0
  81. package/dist/commands/iptv/snapshot.d.ts.map +1 -0
  82. package/dist/commands/iptv/snapshot.js +55 -0
  83. package/dist/commands/iptv/snapshot.js.map +1 -0
  84. package/dist/commands/library/drives.d.ts +7 -0
  85. package/dist/commands/library/drives.d.ts.map +1 -0
  86. package/dist/commands/library/drives.js +71 -0
  87. package/dist/commands/library/drives.js.map +1 -0
  88. package/dist/commands/library/relink.d.ts +10 -0
  89. package/dist/commands/library/relink.d.ts.map +1 -0
  90. package/dist/commands/library/relink.js +72 -0
  91. package/dist/commands/library/relink.js.map +1 -0
  92. package/dist/commands/library/scan.d.ts +16 -0
  93. package/dist/commands/library/scan.d.ts.map +1 -0
  94. package/dist/commands/library/scan.js +87 -0
  95. package/dist/commands/library/scan.js.map +1 -0
  96. package/dist/commands/library/sections.d.ts +7 -0
  97. package/dist/commands/library/sections.d.ts.map +1 -0
  98. package/dist/commands/library/sections.js +33 -0
  99. package/dist/commands/library/sections.js.map +1 -0
  100. package/dist/commands/library/status.d.ts +7 -0
  101. package/dist/commands/library/status.d.ts.map +1 -0
  102. package/dist/commands/library/status.js +37 -0
  103. package/dist/commands/library/status.js.map +1 -0
  104. package/dist/commands/list.d.ts +7 -0
  105. package/dist/commands/list.d.ts.map +1 -0
  106. package/dist/commands/list.js +73 -0
  107. package/dist/commands/list.js.map +1 -0
  108. package/dist/commands/live/channels.d.ts +10 -0
  109. package/dist/commands/live/channels.d.ts.map +1 -0
  110. package/dist/commands/live/channels.js +55 -0
  111. package/dist/commands/live/channels.js.map +1 -0
  112. package/dist/commands/live/test.d.ts +15 -0
  113. package/dist/commands/live/test.d.ts.map +1 -0
  114. package/dist/commands/live/test.js +116 -0
  115. package/dist/commands/live/test.js.map +1 -0
  116. package/dist/commands/logs.d.ts +16 -0
  117. package/dist/commands/logs.d.ts.map +1 -0
  118. package/dist/commands/logs.js +77 -0
  119. package/dist/commands/logs.js.map +1 -0
  120. package/dist/commands/migrate-cli.d.ts +11 -0
  121. package/dist/commands/migrate-cli.d.ts.map +1 -0
  122. package/dist/commands/migrate-cli.js +116 -0
  123. package/dist/commands/migrate-cli.js.map +1 -0
  124. package/dist/commands/owner/reset.d.ts +7 -0
  125. package/dist/commands/owner/reset.d.ts.map +1 -0
  126. package/dist/commands/owner/reset.js +74 -0
  127. package/dist/commands/owner/reset.js.map +1 -0
  128. package/dist/commands/restart.d.ts +11 -0
  129. package/dist/commands/restart.d.ts.map +1 -0
  130. package/dist/commands/restart.js +53 -0
  131. package/dist/commands/restart.js.map +1 -0
  132. package/dist/commands/restore.d.ts +17 -0
  133. package/dist/commands/restore.d.ts.map +1 -0
  134. package/dist/commands/restore.js +148 -0
  135. package/dist/commands/restore.js.map +1 -0
  136. package/dist/commands/self-update.d.ts +10 -0
  137. package/dist/commands/self-update.d.ts.map +1 -0
  138. package/dist/commands/self-update.js +98 -0
  139. package/dist/commands/self-update.js.map +1 -0
  140. package/dist/commands/setup.d.ts +19 -0
  141. package/dist/commands/setup.d.ts.map +1 -0
  142. package/dist/commands/setup.js +111 -0
  143. package/dist/commands/setup.js.map +1 -0
  144. package/dist/commands/shell.d.ts +118 -0
  145. package/dist/commands/shell.d.ts.map +1 -0
  146. package/dist/commands/shell.js +415 -0
  147. package/dist/commands/shell.js.map +1 -0
  148. package/dist/commands/start.d.ts +12 -0
  149. package/dist/commands/start.d.ts.map +1 -0
  150. package/dist/commands/start.js +108 -0
  151. package/dist/commands/start.js.map +1 -0
  152. package/dist/commands/status.d.ts +8 -0
  153. package/dist/commands/status.d.ts.map +1 -0
  154. package/dist/commands/status.js +115 -0
  155. package/dist/commands/status.js.map +1 -0
  156. package/dist/commands/stop.d.ts +11 -0
  157. package/dist/commands/stop.d.ts.map +1 -0
  158. package/dist/commands/stop.js +45 -0
  159. package/dist/commands/stop.js.map +1 -0
  160. package/dist/commands/stream/cancel.d.ts +13 -0
  161. package/dist/commands/stream/cancel.d.ts.map +1 -0
  162. package/dist/commands/stream/cancel.js +31 -0
  163. package/dist/commands/stream/cancel.js.map +1 -0
  164. package/dist/commands/stream/encoders.d.ts +7 -0
  165. package/dist/commands/stream/encoders.d.ts.map +1 -0
  166. package/dist/commands/stream/encoders.js +42 -0
  167. package/dist/commands/stream/encoders.js.map +1 -0
  168. package/dist/commands/stream/queue.d.ts +7 -0
  169. package/dist/commands/stream/queue.d.ts.map +1 -0
  170. package/dist/commands/stream/queue.js +52 -0
  171. package/dist/commands/stream/queue.js.map +1 -0
  172. package/dist/commands/stream/sessions.d.ts +7 -0
  173. package/dist/commands/stream/sessions.d.ts.map +1 -0
  174. package/dist/commands/stream/sessions.js +44 -0
  175. package/dist/commands/stream/sessions.js.map +1 -0
  176. package/dist/commands/uninstall.d.ts +23 -0
  177. package/dist/commands/uninstall.d.ts.map +1 -0
  178. package/dist/commands/uninstall.js +290 -0
  179. package/dist/commands/uninstall.js.map +1 -0
  180. package/dist/commands/update.d.ts +21 -0
  181. package/dist/commands/update.d.ts.map +1 -0
  182. package/dist/commands/update.js +290 -0
  183. package/dist/commands/update.js.map +1 -0
  184. package/dist/commands/watch.d.ts +10 -0
  185. package/dist/commands/watch.d.ts.map +1 -0
  186. package/dist/commands/watch.js +38 -0
  187. package/dist/commands/watch.js.map +1 -0
  188. package/dist/config/local-config.d.ts +22 -0
  189. package/dist/config/local-config.d.ts.map +1 -0
  190. package/dist/config/local-config.js +79 -0
  191. package/dist/config/local-config.js.map +1 -0
  192. package/dist/core-scripts/run.d.ts +22 -0
  193. package/dist/core-scripts/run.d.ts.map +1 -0
  194. package/dist/core-scripts/run.js +65 -0
  195. package/dist/core-scripts/run.js.map +1 -0
  196. package/dist/doctor/check.types.d.ts +51 -0
  197. package/dist/doctor/check.types.d.ts.map +1 -0
  198. package/dist/doctor/check.types.js +14 -0
  199. package/dist/doctor/check.types.js.map +1 -0
  200. package/dist/doctor/checks/core.check.d.ts +11 -0
  201. package/dist/doctor/checks/core.check.d.ts.map +1 -0
  202. package/dist/doctor/checks/core.check.js +104 -0
  203. package/dist/doctor/checks/core.check.js.map +1 -0
  204. package/dist/doctor/checks/data.check.d.ts +11 -0
  205. package/dist/doctor/checks/data.check.d.ts.map +1 -0
  206. package/dist/doctor/checks/data.check.js +70 -0
  207. package/dist/doctor/checks/data.check.js.map +1 -0
  208. package/dist/doctor/checks/environment.check.d.ts +6 -0
  209. package/dist/doctor/checks/environment.check.d.ts.map +1 -0
  210. package/dist/doctor/checks/environment.check.js +70 -0
  211. package/dist/doctor/checks/environment.check.js.map +1 -0
  212. package/dist/doctor/checks/integrity.check.d.ts +4 -0
  213. package/dist/doctor/checks/integrity.check.d.ts.map +1 -0
  214. package/dist/doctor/checks/integrity.check.js +89 -0
  215. package/dist/doctor/checks/integrity.check.js.map +1 -0
  216. package/dist/doctor/checks/isolation.check.d.ts +49 -0
  217. package/dist/doctor/checks/isolation.check.d.ts.map +1 -0
  218. package/dist/doctor/checks/isolation.check.js +220 -0
  219. package/dist/doctor/checks/isolation.check.js.map +1 -0
  220. package/dist/doctor/checks/licence.check.d.ts +8 -0
  221. package/dist/doctor/checks/licence.check.d.ts.map +1 -0
  222. package/dist/doctor/checks/licence.check.js +172 -0
  223. package/dist/doctor/checks/licence.check.js.map +1 -0
  224. package/dist/doctor/checks/ports.check.d.ts +4 -0
  225. package/dist/doctor/checks/ports.check.d.ts.map +1 -0
  226. package/dist/doctor/checks/ports.check.js +52 -0
  227. package/dist/doctor/checks/ports.check.js.map +1 -0
  228. package/dist/doctor/checks/supervisor.check.d.ts +19 -0
  229. package/dist/doctor/checks/supervisor.check.d.ts.map +1 -0
  230. package/dist/doctor/checks/supervisor.check.js +152 -0
  231. package/dist/doctor/checks/supervisor.check.js.map +1 -0
  232. package/dist/doctor/checks/tooling.check.d.ts +3 -0
  233. package/dist/doctor/checks/tooling.check.d.ts.map +1 -0
  234. package/dist/doctor/checks/tooling.check.js +43 -0
  235. package/dist/doctor/checks/tooling.check.js.map +1 -0
  236. package/dist/doctor/registry.d.ts +15 -0
  237. package/dist/doctor/registry.d.ts.map +1 -0
  238. package/dist/doctor/registry.js +53 -0
  239. package/dist/doctor/registry.js.map +1 -0
  240. package/dist/exit-codes.d.ts +18 -0
  241. package/dist/exit-codes.d.ts.map +1 -0
  242. package/dist/exit-codes.js +23 -0
  243. package/dist/exit-codes.js.map +1 -0
  244. package/dist/index.d.ts +2 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +16 -0
  247. package/dist/index.js.map +1 -0
  248. package/dist/logs/sink.d.ts +11 -0
  249. package/dist/logs/sink.d.ts.map +1 -0
  250. package/dist/logs/sink.js +73 -0
  251. package/dist/logs/sink.js.map +1 -0
  252. package/dist/logs/tail.d.ts +17 -0
  253. package/dist/logs/tail.d.ts.map +1 -0
  254. package/dist/logs/tail.js +98 -0
  255. package/dist/logs/tail.js.map +1 -0
  256. package/dist/packaging/boot-task.d.ts +56 -0
  257. package/dist/packaging/boot-task.d.ts.map +1 -0
  258. package/dist/packaging/boot-task.js +151 -0
  259. package/dist/packaging/boot-task.js.map +1 -0
  260. package/dist/packaging/install.d.ts +154 -0
  261. package/dist/packaging/install.d.ts.map +1 -0
  262. package/dist/packaging/install.js +381 -0
  263. package/dist/packaging/install.js.map +1 -0
  264. package/dist/packaging/layout.d.ts +153 -0
  265. package/dist/packaging/layout.d.ts.map +1 -0
  266. package/dist/packaging/layout.js +168 -0
  267. package/dist/packaging/layout.js.map +1 -0
  268. package/dist/packaging/machine-path.d.ts +52 -0
  269. package/dist/packaging/machine-path.d.ts.map +1 -0
  270. package/dist/packaging/machine-path.js +237 -0
  271. package/dist/packaging/machine-path.js.map +1 -0
  272. package/dist/packaging/manifest.d.ts +37 -0
  273. package/dist/packaging/manifest.d.ts.map +1 -0
  274. package/dist/packaging/manifest.js +115 -0
  275. package/dist/packaging/manifest.js.map +1 -0
  276. package/dist/packaging/shims.d.ts +31 -0
  277. package/dist/packaging/shims.d.ts.map +1 -0
  278. package/dist/packaging/shims.js +165 -0
  279. package/dist/packaging/shims.js.map +1 -0
  280. package/dist/probes/internal-paths.d.ts +35 -0
  281. package/dist/probes/internal-paths.d.ts.map +1 -0
  282. package/dist/probes/internal-paths.js +58 -0
  283. package/dist/probes/internal-paths.js.map +1 -0
  284. package/dist/probes/internal.client.d.ts +54 -0
  285. package/dist/probes/internal.client.d.ts.map +1 -0
  286. package/dist/probes/internal.client.js +123 -0
  287. package/dist/probes/internal.client.js.map +1 -0
  288. package/dist/probes/port.probe.d.ts +21 -0
  289. package/dist/probes/port.probe.d.ts.map +1 -0
  290. package/dist/probes/port.probe.js +42 -0
  291. package/dist/probes/port.probe.js.map +1 -0
  292. package/dist/probes/service.probe.d.ts +29 -0
  293. package/dist/probes/service.probe.d.ts.map +1 -0
  294. package/dist/probes/service.probe.js +65 -0
  295. package/dist/probes/service.probe.js.map +1 -0
  296. package/dist/profiles/appliance.profile.d.ts +20 -0
  297. package/dist/profiles/appliance.profile.d.ts.map +1 -0
  298. package/dist/profiles/appliance.profile.js +137 -0
  299. package/dist/profiles/appliance.profile.js.map +1 -0
  300. package/dist/profiles/dev.profile.d.ts +22 -0
  301. package/dist/profiles/dev.profile.d.ts.map +1 -0
  302. package/dist/profiles/dev.profile.js +104 -0
  303. package/dist/profiles/dev.profile.js.map +1 -0
  304. package/dist/profiles/resolve.d.ts +37 -0
  305. package/dist/profiles/resolve.d.ts.map +1 -0
  306. package/dist/profiles/resolve.js +198 -0
  307. package/dist/profiles/resolve.js.map +1 -0
  308. package/dist/profiles/types.d.ts +57 -0
  309. package/dist/profiles/types.d.ts.map +1 -0
  310. package/dist/profiles/types.js +15 -0
  311. package/dist/profiles/types.js.map +1 -0
  312. package/dist/registry/local-registry.d.ts +79 -0
  313. package/dist/registry/local-registry.d.ts.map +1 -0
  314. package/dist/registry/local-registry.js +252 -0
  315. package/dist/registry/local-registry.js.map +1 -0
  316. package/dist/render/banner.d.ts +13 -0
  317. package/dist/render/banner.d.ts.map +1 -0
  318. package/dist/render/banner.js +83 -0
  319. package/dist/render/banner.js.map +1 -0
  320. package/dist/render/boot.render.d.ts +123 -0
  321. package/dist/render/boot.render.d.ts.map +1 -0
  322. package/dist/render/boot.render.js +288 -0
  323. package/dist/render/boot.render.js.map +1 -0
  324. package/dist/render/brand.d.ts +16 -0
  325. package/dist/render/brand.d.ts.map +1 -0
  326. package/dist/render/brand.js +22 -0
  327. package/dist/render/brand.js.map +1 -0
  328. package/dist/render/doctor.render.d.ts +12 -0
  329. package/dist/render/doctor.render.d.ts.map +1 -0
  330. package/dist/render/doctor.render.js +95 -0
  331. package/dist/render/doctor.render.js.map +1 -0
  332. package/dist/render/json.d.ts +29 -0
  333. package/dist/render/json.d.ts.map +1 -0
  334. package/dist/render/json.js +19 -0
  335. package/dist/render/json.js.map +1 -0
  336. package/dist/render/licence.render.d.ts +10 -0
  337. package/dist/render/licence.render.d.ts.map +1 -0
  338. package/dist/render/licence.render.js +167 -0
  339. package/dist/render/licence.render.js.map +1 -0
  340. package/dist/render/status.render.d.ts +6 -0
  341. package/dist/render/status.render.d.ts.map +1 -0
  342. package/dist/render/status.render.js +52 -0
  343. package/dist/render/status.render.js.map +1 -0
  344. package/dist/render/theme.d.ts +66 -0
  345. package/dist/render/theme.d.ts.map +1 -0
  346. package/dist/render/theme.js +89 -0
  347. package/dist/render/theme.js.map +1 -0
  348. package/dist/runtime-guard.d.ts +19 -0
  349. package/dist/runtime-guard.d.ts.map +1 -0
  350. package/dist/runtime-guard.js +57 -0
  351. package/dist/runtime-guard.js.map +1 -0
  352. package/dist/shell/input-mode.d.ts +25 -0
  353. package/dist/shell/input-mode.d.ts.map +1 -0
  354. package/dist/shell/input-mode.js +17 -0
  355. package/dist/shell/input-mode.js.map +1 -0
  356. package/dist/shell/parse-line.d.ts +6 -0
  357. package/dist/shell/parse-line.d.ts.map +1 -0
  358. package/dist/shell/parse-line.js +62 -0
  359. package/dist/shell/parse-line.js.map +1 -0
  360. package/dist/shell/suggestions.d.ts +14 -0
  361. package/dist/shell/suggestions.d.ts.map +1 -0
  362. package/dist/shell/suggestions.js +35 -0
  363. package/dist/shell/suggestions.js.map +1 -0
  364. package/dist/supervisor/dependencies.d.ts +2 -0
  365. package/dist/supervisor/dependencies.d.ts.map +1 -0
  366. package/dist/supervisor/dependencies.js +38 -0
  367. package/dist/supervisor/dependencies.js.map +1 -0
  368. package/dist/supervisor/entry.d.ts +36 -0
  369. package/dist/supervisor/entry.d.ts.map +1 -0
  370. package/dist/supervisor/entry.js +171 -0
  371. package/dist/supervisor/entry.js.map +1 -0
  372. package/dist/supervisor/inspect.d.ts +17 -0
  373. package/dist/supervisor/inspect.d.ts.map +1 -0
  374. package/dist/supervisor/inspect.js +39 -0
  375. package/dist/supervisor/inspect.js.map +1 -0
  376. package/dist/supervisor/invocation.d.ts +27 -0
  377. package/dist/supervisor/invocation.d.ts.map +1 -0
  378. package/dist/supervisor/invocation.js +33 -0
  379. package/dist/supervisor/invocation.js.map +1 -0
  380. package/dist/supervisor/monitor.d.ts +63 -0
  381. package/dist/supervisor/monitor.d.ts.map +1 -0
  382. package/dist/supervisor/monitor.js +141 -0
  383. package/dist/supervisor/monitor.js.map +1 -0
  384. package/dist/supervisor/orchestrator.d.ts +52 -0
  385. package/dist/supervisor/orchestrator.d.ts.map +1 -0
  386. package/dist/supervisor/orchestrator.js +154 -0
  387. package/dist/supervisor/orchestrator.js.map +1 -0
  388. package/dist/supervisor/pidfile.d.ts +21 -0
  389. package/dist/supervisor/pidfile.d.ts.map +1 -0
  390. package/dist/supervisor/pidfile.js +39 -0
  391. package/dist/supervisor/pidfile.js.map +1 -0
  392. package/dist/supervisor/process-identity.d.ts +19 -0
  393. package/dist/supervisor/process-identity.d.ts.map +1 -0
  394. package/dist/supervisor/process-identity.js +51 -0
  395. package/dist/supervisor/process-identity.js.map +1 -0
  396. package/dist/supervisor/readiness.d.ts +17 -0
  397. package/dist/supervisor/readiness.d.ts.map +1 -0
  398. package/dist/supervisor/readiness.js +52 -0
  399. package/dist/supervisor/readiness.js.map +1 -0
  400. package/dist/supervisor/restart-consumer.d.ts +37 -0
  401. package/dist/supervisor/restart-consumer.d.ts.map +1 -0
  402. package/dist/supervisor/restart-consumer.js +119 -0
  403. package/dist/supervisor/restart-consumer.js.map +1 -0
  404. package/dist/supervisor/runner.d.ts +2 -0
  405. package/dist/supervisor/runner.d.ts.map +1 -0
  406. package/dist/supervisor/runner.js +118 -0
  407. package/dist/supervisor/runner.js.map +1 -0
  408. package/dist/supervisor/schedule-timer.d.ts +38 -0
  409. package/dist/supervisor/schedule-timer.d.ts.map +1 -0
  410. package/dist/supervisor/schedule-timer.js +148 -0
  411. package/dist/supervisor/schedule-timer.js.map +1 -0
  412. package/dist/supervisor/spawn.d.ts +18 -0
  413. package/dist/supervisor/spawn.d.ts.map +1 -0
  414. package/dist/supervisor/spawn.js +119 -0
  415. package/dist/supervisor/spawn.js.map +1 -0
  416. package/dist/supervisor/state-files.d.ts +33 -0
  417. package/dist/supervisor/state-files.d.ts.map +1 -0
  418. package/dist/supervisor/state-files.js +110 -0
  419. package/dist/supervisor/state-files.js.map +1 -0
  420. package/dist/supervisor/tree-kill.d.ts +14 -0
  421. package/dist/supervisor/tree-kill.d.ts.map +1 -0
  422. package/dist/supervisor/tree-kill.js +82 -0
  423. package/dist/supervisor/tree-kill.js.map +1 -0
  424. package/dist/ui/health-panel.d.ts +8 -0
  425. package/dist/ui/health-panel.d.ts.map +1 -0
  426. package/dist/ui/health-panel.js +91 -0
  427. package/dist/ui/health-panel.js.map +1 -0
  428. package/dist/updating/apply.d.ts +50 -0
  429. package/dist/updating/apply.d.ts.map +1 -0
  430. package/dist/updating/apply.js +172 -0
  431. package/dist/updating/apply.js.map +1 -0
  432. package/dist/updating/download.d.ts +44 -0
  433. package/dist/updating/download.d.ts.map +1 -0
  434. package/dist/updating/download.js +144 -0
  435. package/dist/updating/download.js.map +1 -0
  436. package/dist/updating/rollback.d.ts +33 -0
  437. package/dist/updating/rollback.d.ts.map +1 -0
  438. package/dist/updating/rollback.js +54 -0
  439. package/dist/updating/rollback.js.map +1 -0
  440. package/dist/updating/self.d.ts +16 -0
  441. package/dist/updating/self.d.ts.map +1 -0
  442. package/dist/updating/self.js +50 -0
  443. package/dist/updating/self.js.map +1 -0
  444. package/dist/updating/verify.d.ts +25 -0
  445. package/dist/updating/verify.d.ts.map +1 -0
  446. package/dist/updating/verify.js +51 -0
  447. package/dist/updating/verify.js.map +1 -0
  448. package/dist/updating/versions.d.ts +31 -0
  449. package/dist/updating/versions.d.ts.map +1 -0
  450. package/dist/updating/versions.js +78 -0
  451. package/dist/updating/versions.js.map +1 -0
  452. package/dist/version.d.ts +4 -0
  453. package/dist/version.d.ts.map +1 -0
  454. package/dist/version.js +29 -0
  455. package/dist/version.js.map +1 -0
  456. package/package.json +106 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,0EAA0E;AAC1E,EAAE;AACF,0FAA0F;AAC1F,yFAAyF;AACzF,qEAAqE;AACrE,EAAE;AACF,4FAA4F;AAC5F,6FAA6F;AAC7F,yFAAyF;AACzF,sCAAsC;AACtC,EAAE;AACF,6FAA6F;AAC7F,EAAE;AACF,kGAAkG;AAClG,mGAAmG;AACnG,kGAAkG;AAClG,kBAAkB;AAClB,EAAE;AACF,kGAAkG;AAClG,kGAAkG;AAClG,gGAAgG;AAChG,mGAAmG;AACnG,2CAA2C;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAmBhH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,WAAW,GAAG,gEAAgE,CAAC;IAEtF,MAAM,CAAC,QAAQ,GAAG;QAChB,kCAAkC;QAClC,gCAAgC;QAChC,iDAAiD;KAClD,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtF,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/F,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;YACtC,OAAO,EAAE,MAAM;SAChB,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;KAC3G,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC;IAE7B,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,yFAAyF;QACzF,yFAAyF;QACzF,4CAA4C;QAC5C,kGAAkG;QAClG,gGAAgG;QAChG,4FAA4F;QAC5F,eAAe;QACf,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,oCAAoC,SAAS,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,6CAA6C;QAC7C,EAAE;QACF,uFAAuF;QACvF,wFAAwF;QACxF,wFAAwF;QACxF,yEAAyE;QACzE,6DAA6D;QAC7D,EAAE;QACF,+FAA+F;QAC/F,8FAA8F;QAC9F,uFAAuF;QACvF,8FAA8F;QAC9F,0DAA0D;QAC1D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,MAAM,WAAW,CAC7B,OAAO,EACP,GAAG,cAAc,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,EACrD,MAAM,CACP,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,WAAW;gBAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QAEzB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,oEAAoE;YACpE,UAAU,CACR,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9F,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,wFAAwF;YACxF,kDAAkD;YAClD,uFAAuF;YACvF,uEAAuE;YACvE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE7E,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,GAAG,CACN,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;YACpD,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAC9D,CAAC;QACF,IAAI,MAAM,CAAC,YAAY;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEb,kCAAkC;QAClC,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO;QAExB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;gBAC5B,OAAO,EAAE,WAAW,SAAS,IAAI,MAAM,CAAC,OAAO,8BAA8B;gBAC7E,OAAO,EAAE,MAAM,CAAC,SAAS;aAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,OAA0C,EAC1C,QAAsD,EACtD,SAAiB,EACjB,OAAe,EACf,MAA2D;QAE3D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,sCAAsC,SAAS,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;gBACpC,GAAG,EAAE,MAAM,CAAC,WAAW;gBACvB,WAAW,EAAE,OAAO;gBACpB,aAAa,EAAE,MAAM,CAAC,SAAS;gBAC/B,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;aAC9D,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvF,OAAO;YACT,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE1B,uDAAuD;YACvD,EAAE;YACF,mFAAmF;YACnF,sFAAsF;YACtF,4DAA4D;YAC5D,kFAAkF;YAClF,EAAE;YACF,yFAAyF;YACzF,4FAA4F;YAC5F,2FAA2F;YAC3F,0FAA0F;YAC1F,kCAAkC;YAClC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAEhF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACrD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEnB,yEAAyE;YACzE,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEnB,IAAI,CAAC;gBACH,eAAe;gBACf,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAEnB,0BAA0B;gBAC1B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAEvE,8EAA8E;gBAC9E,wBAAwB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5E,eAAe,CAAC,MAAM,CAAC,CAAC;gBAExB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,SAAS,IAAI,OAAO,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAE/C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAE3F,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,IAAI,CAAC,GAAG,CACN,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,OAAO,EAAE,CAAC,EAAE;wBACpD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAC7F,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,mEAAmE;oBACnE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;oBACtF,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,gCAAgC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,uFAAuF;YACvF,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAEO,aAAa,GAAG,KAAK,CAAC;IAEtB,YAAY,CAAC,OAAe;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEO,cAAc,CAAC,EAAW;QAChC,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,wEAAwE;IAChE,IAAI,CAAC,KAAa,EAAE,EAAW,EAAE,MAAe;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEO,QAAQ,CAAC,OAAe,EAAE,IAAY;QAC5C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class Watch extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ boot: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAsBjD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,SAAwF;IAE1G,MAAM,CAAC,QAAQ,WAAoE;IAEnF,MAAM,CAAC,KAAK;;MAMV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAM3B"}
@@ -0,0 +1,38 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { BaseCommand } from "../base-command.js";
3
+ import { supervise } from "../supervisor/entry.js";
4
+ // AR: المُشرِف: العملية التي تبقى بعد أن تنصرف الأوامر (٠٢٠/US1).
5
+ //
6
+ // **وهذا الملفّ غلافٌ لا منطق** (٠٢٦). الحلقة كلّها في ‎supervisor/entry.ts‎، وله مُناديان:
7
+ // هذا الأمر من الواجهة العالمية، و‎bin/supervisor.js‎ المشحون داخل الحزمة الذي تناديه مهمّة
8
+ // الإقلاع بمسارٍ مطلق.
9
+ //
10
+ // **ولا مسار إشرافٍ ثانٍ** — نفس القاعدة التي منعت مسارَي إقلاع: ينجح أحدهما حيث يفشل الآخر
11
+ // ولا يعرف أحد لماذا. وما تراه هنا هو قراءة عَلَمٍ واستنتاج ملفّ تشغيل، ثم تسليمُ الحلقة
12
+ // مطبعتها.
13
+ // EN: The supervisor: the process that outlives the commands (020/US1).
14
+ //
15
+ // **And this file is a wrapper, not logic** (026). The whole loop lives in
16
+ // `supervisor/entry.ts`, and it has two callers: this command from the global CLI, and the
17
+ // `bin/supervisor.js` shipped inside the bundle that the boot task calls by an absolute path.
18
+ //
19
+ // **There is no second supervision path** — the rule that forbade two boot paths, for the same
20
+ // reason: one succeeds where the other fails and nobody knows why. What remains here is reading
21
+ // a flag, resolving a profile, and handing the loop somewhere to print.
22
+ export default class Watch extends BaseCommand {
23
+ static description = "Keep the appliance alive: boot the services, revive them, run the restart schedule";
24
+ static examples = ["<%= config.bin %> watch", "<%= config.bin %> watch --no-boot"];
25
+ static flags = {
26
+ boot: Flags.boolean({
27
+ description: "Start the services on entry. Use --no-boot to only supervise what already runs.",
28
+ default: true,
29
+ allowNo: true,
30
+ }),
31
+ };
32
+ async run() {
33
+ const { flags } = await this.parse(Watch);
34
+ const profile = this.loadProfile(flags.profile, true, flags.product);
35
+ await supervise(profile, { boot: flags.boot, log: (line) => this.log(line) });
36
+ }
37
+ }
38
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,kEAAkE;AAClE,EAAE;AACF,gGAAgG;AAChG,gGAAgG;AAChG,2BAA2B;AAC3B,EAAE;AACF,gGAAgG;AAChG,6FAA6F;AAC7F,eAAe;AACf,wEAAwE;AACxE,EAAE;AACF,+EAA+E;AAC/E,+FAA+F;AAC/F,kGAAkG;AAClG,EAAE;AACF,mGAAmG;AACnG,oGAAoG;AACpG,4EAA4E;AAE5E,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,GAAG,oFAAoF,CAAC;IAE1G,MAAM,CAAC,QAAQ,GAAG,CAAC,yBAAyB,EAAE,mCAAmC,CAAC,CAAC;IAEnF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,iFAAiF;YAC9F,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Profile, ProfileKind } from "../profiles/types.js";
2
+ export interface LocalConfig {
3
+ defaultProfile?: ProfileKind;
4
+ corePort?: number;
5
+ livePort?: number;
6
+ portalPort?: number;
7
+ logLevel?: string;
8
+ dataDir?: string;
9
+ }
10
+ export declare const CONFIG_KEYS: readonly ["defaultProfile", "corePort", "livePort", "portalPort", "logLevel", "dataDir"];
11
+ export type ConfigKey = (typeof CONFIG_KEYS)[number];
12
+ export declare function configPath(profile: Profile): string;
13
+ export declare function readLocalConfig(profile: Profile): LocalConfig;
14
+ export declare class ConfigError extends Error {
15
+ }
16
+ /**
17
+ * القيم السارية فعلًا: التجاوز إن وُجد، وإلّا ما قرّره ملفّ التشغيل. هذا ما يجعل ‎config list‎ يجيب
18
+ * عن «ما المنفذ المستعمل الآن» لا «ما الذي كُتب في الملف».
19
+ */
20
+ export declare function effectiveValues(profile: Profile): Record<string, string | number | undefined>;
21
+ export declare function setConfigValue(profile: Profile, key: ConfigKey, raw: string): LocalConfig;
22
+ //# sourceMappingURL=local-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-config.d.ts","sourceRoot":"","sources":["../../src/config/local-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAcjE,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,WAAW,0FAOd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAIrD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAU7D;AAED,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAkBzC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAa7F;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CA0BzF"}
@@ -0,0 +1,79 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ export const CONFIG_KEYS = [
4
+ "defaultProfile",
5
+ "corePort",
6
+ "livePort",
7
+ "portalPort",
8
+ "logLevel",
9
+ "dataDir",
10
+ ];
11
+ const PORT_KEYS = ["corePort", "livePort", "portalPort"];
12
+ export function configPath(profile) {
13
+ return join(profile.stateDir, "config.json");
14
+ }
15
+ export function readLocalConfig(profile) {
16
+ const path = configPath(profile);
17
+ if (!existsSync(path))
18
+ return {};
19
+ try {
20
+ return JSON.parse(readFileSync(path, "utf8"));
21
+ }
22
+ catch {
23
+ // إعدادات تالفة لا يجوز أن تمنع ‎stop‎ أو ‎doctor‎ من العمل. نفس تسامح ‎resolveProfile‎.
24
+ return {};
25
+ }
26
+ }
27
+ export class ConfigError extends Error {
28
+ }
29
+ function parseValue(key, raw) {
30
+ if (PORT_KEYS.includes(key)) {
31
+ const port = Number(raw);
32
+ if (!Number.isInteger(port) || port < 1 || port > 65_535) {
33
+ throw new ConfigError(`"${raw}" is not a valid port. Give a whole number between 1 and 65535.`);
34
+ }
35
+ return port;
36
+ }
37
+ if (key === "defaultProfile" && raw !== "dev" && raw !== "appliance") {
38
+ throw new ConfigError(`"${raw}" is not a profile. Use "dev" or "appliance".`);
39
+ }
40
+ return raw;
41
+ }
42
+ /**
43
+ * القيم السارية فعلًا: التجاوز إن وُجد، وإلّا ما قرّره ملفّ التشغيل. هذا ما يجعل ‎config list‎ يجيب
44
+ * عن «ما المنفذ المستعمل الآن» لا «ما الذي كُتب في الملف».
45
+ */
46
+ export function effectiveValues(profile) {
47
+ const stored = readLocalConfig(profile);
48
+ const port = (name) => profile.services.find((service) => service.name === name)?.port;
49
+ return {
50
+ defaultProfile: stored.defaultProfile ?? profile.kind,
51
+ corePort: port("core"),
52
+ livePort: port("live"),
53
+ portalPort: port("portal"),
54
+ logLevel: stored.logLevel,
55
+ dataDir: profile.dataDir,
56
+ };
57
+ }
58
+ export function setConfigValue(profile, key, raw) {
59
+ const value = parseValue(key, raw);
60
+ const current = readLocalConfig(profile);
61
+ const next = { ...current, [key]: value };
62
+ if (PORT_KEYS.includes(key)) {
63
+ const effective = effectiveValues(profile);
64
+ for (const other of PORT_KEYS) {
65
+ if (other === key)
66
+ continue;
67
+ // نقارن مع القيمة السارية للمنفذ الآخر لا مع المخزَّنة: الاصطدام يقع مع ما يعمل فعلًا.
68
+ const otherValue = next[other] ?? effective[other];
69
+ if (otherValue === value) {
70
+ throw new ConfigError(`Port ${value} is already used by ${other}. Choose another, or change ${other} first.`);
71
+ }
72
+ }
73
+ }
74
+ const path = configPath(profile);
75
+ mkdirSync(dirname(path), { recursive: true });
76
+ writeFileSync(path, `${JSON.stringify(next, null, 2)}\n`, "utf8");
77
+ return next;
78
+ }
79
+ //# sourceMappingURL=local-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-config.js","sourceRoot":"","sources":["../../src/config/local-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type Profile } from "../profiles/types.js";
2
+ export type CoreScript = "db:migrate" | "reset-owner" | "build:iptv-snapshot";
3
+ export interface CoreScriptResult {
4
+ ok: boolean;
5
+ /** المخرَج المدموج، للعرض أو للبحث فيه عن بيانات الاعتماد. */
6
+ output: string;
7
+ exitCode: number;
8
+ }
9
+ export declare function runCoreScript(profile: Profile, script: CoreScript, extraArgs?: string[]): Promise<CoreScriptResult>;
10
+ /**
11
+ * يستخرج كتلة بيانات اعتماد المالك من مخرَج النواة، إن ظهرت.
12
+ *
13
+ * **ملاحظة صدق مهمّة:** كلمة المرور هنا **افتراضية موثّقة وثابتة** (‎apps/core/src/db/seed.ts‎)
14
+ * لا سرًّا يُولَّد مرّة ويضيع. كانت عشوائية ثم غُيّرت عمدًا، لأن نظامًا بلا إنترنت ولا استعادة كلمة
15
+ * مرور لا يحتمل سرًّا يُعرض مرّة واحدة. لذلك نعرضها بوصفها «افتراضية يجب تغييرها» لا «لن تراها
16
+ * ثانيةً» — الصياغة الثانية كانت ستكون كذبًا مريحًا.
17
+ */
18
+ export declare function extractOwnerCredentials(output: string): {
19
+ username: string;
20
+ password: string;
21
+ } | undefined;
22
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/core-scripts/run.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAsBjE,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAS9E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAClB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA8B3B;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAM1G"}
@@ -0,0 +1,65 @@
1
+ import { existsSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { execa } from "execa";
4
+ import { findService } from "../profiles/types.js";
5
+ /** أين يعيش كلّ سكربت بعد الترجمة، نسبةً إلى ‎core/‎ في الجهاز المركّب. */
6
+ const APPLIANCE_ENTRY = {
7
+ "db:migrate": join("db", "migrate.js"),
8
+ "reset-owner": join("cli", "reset-owner.js"),
9
+ "build:iptv-snapshot": join("cli", "build-iptv-snapshot.js"),
10
+ };
11
+ /**
12
+ * ‎npm‎ يُحلّ إلى ‎node npm-cli.js‎ لنفس السبب المقيس في ‎supervisor/spawn.ts‎: ‎spawn‎ الخام يرفض
13
+ * ملفات ‎.cmd‎ بـ ‎EINVAL‎. هنا الاستدعاء مرتبط بالطرفية فلا تضيع المخرجات، لكن يبقى الطريق نفسه
14
+ * أوثق من غلاف ‎cmd.exe‎.
15
+ */
16
+ function npmInvocation(args) {
17
+ const npmCli = join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js");
18
+ if (existsSync(npmCli))
19
+ return { file: process.execPath, argv: [npmCli, ...args] };
20
+ return { file: process.platform === "win32" ? "npm.cmd" : "npm", argv: args };
21
+ }
22
+ export async function runCoreScript(profile, script, extraArgs = []) {
23
+ const core = findService(profile, "core");
24
+ // بيئة النواة نفسها: ‎DATA_DIR‎ و‎NODE_ENV‎ وغيرها من مصدر واحد لا مكتوبة هنا مرّة ثانية.
25
+ const env = { ...process.env, ...(core?.env ?? {}) };
26
+ const invocation = profile.kind === "appliance"
27
+ ? {
28
+ file: join(profile.root, "runtime", "node.exe"),
29
+ argv: [join(profile.root, "core", APPLIANCE_ENTRY[script]), ...extraArgs],
30
+ }
31
+ : npmInvocation(["run", script, "--workspace", "apps/core", ...(extraArgs.length ? ["--", ...extraArgs] : [])]);
32
+ try {
33
+ const result = await execa(invocation.file, invocation.argv, {
34
+ cwd: profile.kind === "appliance" ? profile.root : profile.root,
35
+ env,
36
+ all: true,
37
+ reject: false,
38
+ timeout: 180_000,
39
+ });
40
+ return {
41
+ ok: result.exitCode === 0,
42
+ output: result.all ?? "",
43
+ exitCode: result.exitCode ?? 1,
44
+ };
45
+ }
46
+ catch (error) {
47
+ return { ok: false, output: error instanceof Error ? error.message : String(error), exitCode: 1 };
48
+ }
49
+ }
50
+ /**
51
+ * يستخرج كتلة بيانات اعتماد المالك من مخرَج النواة، إن ظهرت.
52
+ *
53
+ * **ملاحظة صدق مهمّة:** كلمة المرور هنا **افتراضية موثّقة وثابتة** (‎apps/core/src/db/seed.ts‎)
54
+ * لا سرًّا يُولَّد مرّة ويضيع. كانت عشوائية ثم غُيّرت عمدًا، لأن نظامًا بلا إنترنت ولا استعادة كلمة
55
+ * مرور لا يحتمل سرًّا يُعرض مرّة واحدة. لذلك نعرضها بوصفها «افتراضية يجب تغييرها» لا «لن تراها
56
+ * ثانيةً» — الصياغة الثانية كانت ستكون كذبًا مريحًا.
57
+ */
58
+ export function extractOwnerCredentials(output) {
59
+ const username = output.match(/username:\s*(\S+)/)?.[1];
60
+ const password = output.match(/password:\s*(\S+)/)?.[1];
61
+ if (!username || !password)
62
+ return undefined;
63
+ return { username, password };
64
+ }
65
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/core-scripts/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { Profile } from "../profiles/types.js";
2
+ /** فئة الفحص. الترتيب هنا هو ترتيب العرض في التقرير. */
3
+ export type CheckCategory = "environment" | "ports" | "tooling" | "data" | "integrity";
4
+ export declare const CHECK_CATEGORIES: CheckCategory[];
5
+ /** عناوين الفئات كما تُطبع. */
6
+ export declare const CATEGORY_TITLES: Record<CheckCategory, string>;
7
+ export type CheckStatus =
8
+ /** مرّ. */
9
+ "pass"
10
+ /** فشل حاجب — يرفع رمز الخروج إلى 6. */
11
+ | "fail"
12
+ /** ملاحظة غير حاجبة: شيء يستحق الانتباه ولا يمنع التشغيل. لا يؤثّر على رمز الخروج. */
13
+ | "warn"
14
+ /** تعذّر الفحص أصلًا (النواة متوقّفة مثلًا). **ليس فشلًا**: لا ندّعي علمًا لا نملكه. */
15
+ | "unknown";
16
+ export interface CheckResult {
17
+ status: CheckStatus;
18
+ /** القيمة المقيسة للعرض بجانب العنوان: رقم إصدار، مسار، حجم. */
19
+ detail?: string;
20
+ /** سياق إضافي يظهر مع ‎--verbose‎ أو في ‎--json‎. */
21
+ evidence?: string;
22
+ }
23
+ export interface CheckContext {
24
+ profile: Profile;
25
+ }
26
+ export interface DiagnosticCheck {
27
+ /** معرّف ثابت يستهلكه ‎--json‎. لا يتغيّر بتغيّر نصّ العنوان. */
28
+ id: string;
29
+ category: CheckCategory;
30
+ /** ما الذي فُحص. */
31
+ title: string;
32
+ /**
33
+ * ينفّذ الفحص. **يجب ألّا يغيّر شيئًا على النظام** (017/FR-003): ‎doctor‎ يُستدعى وقت العطل،
34
+ * وأداةُ تشخيصٍ تكتب هي آخر ما يحتاجه من يحاول فهم ما جرى.
35
+ */
36
+ run: (context: CheckContext) => Promise<CheckResult>;
37
+ /**
38
+ * الخطوة التالية. **إلزامي.** يأخذ النتيجة ليصوغ علاجًا محدّدًا لا عامًّا: «المنفذ 3000 يحجزه
39
+ * node.exe (21884)» أنفع من «تحقّق من المنافذ».
40
+ */
41
+ remedy: (result: CheckResult, context: CheckContext) => string;
42
+ }
43
+ export interface CheckOutcome {
44
+ check: DiagnosticCheck;
45
+ result: CheckResult;
46
+ /** العلاج المحسوب، أو ‎undefined‎ حين مرّ الفحص. */
47
+ remedy?: string;
48
+ }
49
+ /** هل هذه النتيجة حاجبة؟ ‎warn‎ و‎unknown‎ ليستا كذلك عمدًا. */
50
+ export declare function isBlocking(result: CheckResult): boolean;
51
+ //# sourceMappingURL=check.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.types.d.ts","sourceRoot":"","sources":["../../src/doctor/check.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAkBpD,wDAAwD;AACxD,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAEvF,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAA6D,CAAC;AAE1G,+BAA+B;AAC/B,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAMzD,CAAC;AAEF,MAAM,MAAM,WAAW;AACrB,WAAW;AACT,MAAM;AACR,wCAAwC;GACtC,MAAM;AACR,sFAAsF;GACpF,MAAM;AACR,wFAAwF;GACtF,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,GAAG,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD;;;OAGG;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC;CAChE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEvD"}
@@ -0,0 +1,14 @@
1
+ export const CHECK_CATEGORIES = ["environment", "ports", "tooling", "data", "integrity"];
2
+ /** عناوين الفئات كما تُطبع. */
3
+ export const CATEGORY_TITLES = {
4
+ environment: "Environment",
5
+ ports: "Ports",
6
+ tooling: "Media tooling",
7
+ data: "Data",
8
+ integrity: "Integrity",
9
+ };
10
+ /** هل هذه النتيجة حاجبة؟ ‎warn‎ و‎unknown‎ ليستا كذلك عمدًا. */
11
+ export function isBlocking(result) {
12
+ return result.status === "fail";
13
+ }
14
+ //# sourceMappingURL=check.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.types.js","sourceRoot":"","sources":["../../src/doctor/check.types.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,gBAAgB,GAAoB,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAE1G,+BAA+B;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAkC;IAC5D,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;CACvB,CAAC;AAiDF,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AAClC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DiagnosticCheck } from "../check.types.js";
2
+ /** يُفرَغ بين التشغيلات في الاختبارات. */
3
+ export declare function resetCoreCheckCache(): void;
4
+ export declare const ownerSeededCheck: DiagnosticCheck;
5
+ export declare const sectionDrivesCheck: DiagnosticCheck;
6
+ /**
7
+ * توفّر النواة نفسها. يُعرض أولًا فيقرأ المستخدم السبب الجذري قبل الفحوص المشتقّة منه.
8
+ */
9
+ export declare const coreReachableCheck: DiagnosticCheck;
10
+ export declare const coreChecks: DiagnosticCheck[];
11
+ //# sourceMappingURL=core.check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.check.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/core.check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA6B,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAuCpF,0CAA0C;AAC1C,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,eAAO,MAAM,gBAAgB,EAAE,eAqB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eA4BhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAehC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,EAA+D,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { fetchInternalHealth } from "../../probes/internal.client.js";
2
+ // AR: الفحوص التي تملك النواةُ وحدها جوابها: هل زُرع المالك، وهل أقراص الأقسام متّصلة. كلاهما سؤال
3
+ // **بيانات**، فلا يجوز للـ CLI أن يجيبه بنفسه (017/FR-014).
4
+ //
5
+ // **النواة المتوقّفة ليست فشلًا في هذه الفحوص بل «غير معروف».** ‎doctor‎ يُستدعى وقت العطل،
6
+ // وأغلب الأعطال تعني نواةً لا تعمل؛ فلو صبغنا هذه الفحوص حمراء لأغرقنا التقرير بفشل مشتقّ يخفي
7
+ // السبب الحقيقي. الفشل الوحيد المعروض هو أن النواة لا تعمل، وعلاجه واحد.
8
+ //
9
+ // اللقطة تُجلَب **مرّة واحدة** وتتقاسمها الفحوص: ثلاثة نداءات HTTP لسؤال واحد إسرافٌ يبطّئ أمرًا
10
+ // يُنتظَر جوابه.
11
+ // EN: The checks only the core can answer: is the owner seeded, and are the section drives attached.
12
+ // Both are **data** questions, so the CLI may not answer them itself (017/FR-014).
13
+ //
14
+ // **A stopped core is "unknown" here, not "failed".** `doctor` is called when something is
15
+ // broken, and most breakage means a core that is not running; painting these red would flood the
16
+ // report with derived failures that hide the real cause. The one failure shown is that the core
17
+ // is down, and it has one remedy.
18
+ let cached;
19
+ /**
20
+ * يجلب اللقطة مرّة لكل تشغيل. المخبأ على مستوى الوحدة مقصود وعمره عمر العملية: ‎doctor‎ أمر قصير
21
+ * يبدأ وينتهي، ولا وجود لطلبين متتاليين في عمليّة واحدة.
22
+ */
23
+ function snapshotOnce(context) {
24
+ if (!cached) {
25
+ cached = {
26
+ promise: fetchInternalHealth(context.profile).then((result) => result.ok
27
+ ? { status: "pass", snapshot: result.data }
28
+ : { status: "unknown", detail: "core unreachable", evidence: result.reason }),
29
+ };
30
+ }
31
+ return cached.promise;
32
+ }
33
+ /** يُفرَغ بين التشغيلات في الاختبارات. */
34
+ export function resetCoreCheckCache() {
35
+ cached = undefined;
36
+ }
37
+ export const ownerSeededCheck = {
38
+ id: "core.owner",
39
+ category: "data",
40
+ title: "Owner account",
41
+ async run(context) {
42
+ const base = await snapshotOnce(context);
43
+ if (!base.snapshot)
44
+ return base;
45
+ // النواة تنشر النتيجة في مصفوفة ‎checks‎ نفسها، فلا مسار إضافي ولا شكل ثانٍ.
46
+ const owner = base.snapshot.checks.find((check) => check.name === "owner");
47
+ if (!owner)
48
+ return { status: "unknown", detail: "the core did not report it" };
49
+ if (owner.status === "up")
50
+ return { status: "pass", detail: "seeded" };
51
+ if (owner.status === "degraded")
52
+ return { status: "unknown", detail: "the core could not tell" };
53
+ return { status: "fail", detail: "not seeded" };
54
+ },
55
+ remedy: (result) => result.detail === "not seeded"
56
+ ? "Run: fantastic setup — it seeds the owner and shows the one-time password."
57
+ : "Start the core first: fantastic start",
58
+ };
59
+ export const sectionDrivesCheck = {
60
+ id: "core.drives",
61
+ category: "data",
62
+ title: "Section drives",
63
+ async run(context) {
64
+ const base = await snapshotOnce(context);
65
+ if (!base.snapshot)
66
+ return base;
67
+ const drives = base.snapshot.drives;
68
+ if (!drives)
69
+ return { status: "unknown", detail: "the core did not report drives" };
70
+ // أقراص لا قسم عليها لا تهمّ التشغيل: غياب قرص أرشيف غير مرتبط لا يمنع مشاهدًا من شيء.
71
+ const bound = drives.filter((drive) => drive.sectionCount > 0);
72
+ if (bound.length === 0)
73
+ return { status: "pass", detail: "no sections bound to a drive yet" };
74
+ const missing = bound.filter((drive) => !drive.present);
75
+ if (missing.length === 0)
76
+ return { status: "pass", detail: `${bound.length} attached` };
77
+ const named = missing
78
+ .map((drive) => `${drive.mountPath ?? "?"} ${drive.label || "(no label)"} · ${drive.sectionCount} section(s)`)
79
+ .join("; ");
80
+ return { status: "fail", detail: `${missing.length} missing`, evidence: named };
81
+ },
82
+ remedy: (result) => result.detail?.endsWith("missing")
83
+ ? `Reconnect the drive, then run: fantastic library relink${result.evidence ? ` (${result.evidence})` : ""}`
84
+ : "Start the core first: fantastic start",
85
+ };
86
+ /**
87
+ * توفّر النواة نفسها. يُعرض أولًا فيقرأ المستخدم السبب الجذري قبل الفحوص المشتقّة منه.
88
+ */
89
+ export const coreReachableCheck = {
90
+ id: "core.reachable",
91
+ category: "data",
92
+ title: "Core service",
93
+ async run(context) {
94
+ const base = await snapshotOnce(context);
95
+ if (base.snapshot) {
96
+ return { status: "pass", detail: `responding · v${base.snapshot.version}` };
97
+ }
98
+ // فشل حاجب: بدونه لا جواب لأي سؤال بيانات، والعلاج واحد وواضح.
99
+ return { status: "fail", detail: "not responding", evidence: base.evidence };
100
+ },
101
+ remedy: () => "Start it: fantastic start · then check: fantastic logs core -n 50",
102
+ };
103
+ export const coreChecks = [coreReachableCheck, ownerSeededCheck, sectionDrivesCheck];
104
+ //# sourceMappingURL=core.check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.check.js","sourceRoot":"","sources":["../../../src/doctor/checks/core.check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { DiagnosticCheck } from "../check.types.js";
2
+ export declare const databaseFileCheck: DiagnosticCheck;
3
+ /**
4
+ * انحراف ‎DATA_DIR‎ بين النواة وخدمة البث. هذا الفحص يحرس عطلًا **حدث فعلًا** وموثّق في
5
+ * ‎apps/live/src/config/env.schema.ts‎: خدمة البث فتحت ملف قاعدة غير موجود، فردّت 403 على كل طلب
6
+ * تشغيل بلا أي تلميح للسبب. ملفّ التشغيل يشتقّ الآن مسار البث من النواة فيستحيل الانحراف بنيويًا،
7
+ * وهذا الفحص يتأكّد أن الاشتقاق لم يُنقَض.
8
+ */
9
+ export declare const dataDirAgreementCheck: DiagnosticCheck;
10
+ export declare const dataChecks: DiagnosticCheck[];
11
+ //# sourceMappingURL=data.check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.check.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/data.check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAczD,eAAO,MAAM,iBAAiB,EAAE,eA2B/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,eA4BnC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,EAA+C,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { existsSync, openSync, closeSync, statSync, constants } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { findService } from "../../profiles/types.js";
4
+ // AR: فحوص البيانات المحلّية. الحدّ هنا صارم ومقصود (017/FR-033، والدستور IV): نفحص **وجود** ملف
5
+ // القاعدة و**قابليّة فتحه**، ولا نقرأ منه صفًّا واحدًا. سؤال «هل زُرع المالك؟» بيانات لا ملفات،
6
+ // فتجيبه النواة في ‎core.check.ts‎ لا هذا الملف. لو استوردنا عميل قاعدة هنا لانهار حدّ
7
+ // «الـ CLI يعرض والنواة تقرّر» من أول فحص.
8
+ // EN: Local data checks. The boundary here is strict and deliberate (017/FR-033, constitution IV):
9
+ // we check that the database file **exists** and **can be opened**, and never read a single row
10
+ // from it. "Is the owner seeded?" is a data question, so the core answers it in core.check.ts,
11
+ // not here. Importing a database client into this file would collapse the "CLI displays, core
12
+ // decides" boundary at the very first check.
13
+ const DATABASE_FILE = "fantastic.db";
14
+ export const databaseFileCheck = {
15
+ id: "data.database",
16
+ category: "data",
17
+ title: "Database file",
18
+ async run({ profile }) {
19
+ const path = join(profile.dataDir, DATABASE_FILE);
20
+ if (!existsSync(path)) {
21
+ return { status: "fail", detail: "missing", evidence: path };
22
+ }
23
+ try {
24
+ // فتح للقراءة والكتابة ثم إغلاق فورًا: يثبت أن الملف ليس مقفولًا حصريًا ولا محميًّا،
25
+ // دون قراءة أي محتوى. هذا أقصى ما يجوز لنا هنا.
26
+ const fd = openSync(path, constants.O_RDWR);
27
+ closeSync(fd);
28
+ const size = statSync(path).size;
29
+ return { status: "pass", detail: `${(size / 1024).toFixed(0)} KB`, evidence: path };
30
+ }
31
+ catch {
32
+ return { status: "fail", detail: "cannot be opened", evidence: path };
33
+ }
34
+ },
35
+ remedy: (result, { profile }) => result.detail === "missing"
36
+ ? `Run: fantastic setup — it creates ${join(profile.dataDir, DATABASE_FILE)} and applies migrations.`
37
+ : "Another process holds the database, or permissions deny it. Run: fantastic stop, then retry.",
38
+ };
39
+ /**
40
+ * انحراف ‎DATA_DIR‎ بين النواة وخدمة البث. هذا الفحص يحرس عطلًا **حدث فعلًا** وموثّق في
41
+ * ‎apps/live/src/config/env.schema.ts‎: خدمة البث فتحت ملف قاعدة غير موجود، فردّت 403 على كل طلب
42
+ * تشغيل بلا أي تلميح للسبب. ملفّ التشغيل يشتقّ الآن مسار البث من النواة فيستحيل الانحراف بنيويًا،
43
+ * وهذا الفحص يتأكّد أن الاشتقاق لم يُنقَض.
44
+ */
45
+ export const dataDirAgreementCheck = {
46
+ id: "data.dir-agreement",
47
+ category: "data",
48
+ title: "DATA_DIR agreement (core ↔ live)",
49
+ async run({ profile }) {
50
+ const core = findService(profile, "core");
51
+ const live = findService(profile, "live");
52
+ if (!core || !live) {
53
+ return { status: "unknown", detail: "one of the services is not in this profile" };
54
+ }
55
+ const coreDir = core.env.DATA_DIR;
56
+ const liveDir = live.env.DATA_DIR;
57
+ if (coreDir && liveDir && coreDir === liveDir) {
58
+ return { status: "pass", detail: "identical", evidence: coreDir };
59
+ }
60
+ return {
61
+ status: "fail",
62
+ detail: "diverged",
63
+ evidence: `core=${coreDir ?? "unset"} live=${liveDir ?? "unset"}`,
64
+ };
65
+ },
66
+ remedy: () => "The live service's DATA_DIR must be derived from the core's in the profile, never typed twice. " +
67
+ "Fix apps/cli/src/profiles/ — this divergence made every playback request return 403 once before.",
68
+ };
69
+ export const dataChecks = [databaseFileCheck, dataDirAgreementCheck];
70
+ //# sourceMappingURL=data.check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.check.js","sourceRoot":"","sources":["../../../src/doctor/checks/data.check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DiagnosticCheck } from "../check.types.js";
2
+ export declare const nodeVersionCheck: DiagnosticCheck;
3
+ export declare const profileCheck: DiagnosticCheck;
4
+ export declare const dataDirCheck: DiagnosticCheck;
5
+ export declare const environmentChecks: DiagnosticCheck[];
6
+ //# sourceMappingURL=environment.check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.check.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/environment.check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAgBzD,eAAO,MAAM,gBAAgB,EAAE,eAwB9B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,eAS1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,eAqB1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAAmD,CAAC"}