@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,55 @@
1
+ import { Flags } from "@oclif/core";
2
+ import ora from "ora";
3
+ import { BaseCommand } from "../../base-command.js";
4
+ import { runCoreScript } from "../../core-scripts/run.js";
5
+ import { buildEnvelope, renderJson } from "../../render/json.js";
6
+ import { c, glyph, isTty } from "../../render/theme.js";
7
+ import { EXIT } from "../../exit-codes.js";
8
+ // AR: يبني لقطة قنوات IPTV من أي مجلد، بديلًا عن ‎npm run build:iptv-snapshot -w @fantastic/core‎.
9
+ // الموضوع ‎iptv‎ مُعلَن في ‎package.json‎ منذ 009 بلا أمر تحته؛ هذا هو الأمر الذي يفي بالوعد.
10
+ // EN: Builds the IPTV channel snapshot from any directory, replacing
11
+ // `npm run build:iptv-snapshot -w @fantastic/core`. The `iptv` topic has been advertised in
12
+ // package.json since 009 with no command under it; this is the command that keeps that promise.
13
+ export default class IptvSnapshot extends BaseCommand {
14
+ static description = "Rebuild the IPTV channel snapshot";
15
+ static examples = ["<%= config.bin %> iptv snapshot"];
16
+ static flags = {
17
+ provider: Flags.string({ description: "Limit the rebuild to one provider." }),
18
+ };
19
+ async run() {
20
+ const { flags } = await this.parse(IptvSnapshot);
21
+ const profile = this.loadProfile(flags.profile, true, flags.product);
22
+ const spinner = ora({ isEnabled: isTty && !flags.json, discardStdin: false });
23
+ spinner.start("building the channel snapshot…");
24
+ const result = await runCoreScript(profile, "build:iptv-snapshot", flags.provider ? [flags.provider] : []);
25
+ spinner.stop();
26
+ if (flags.json) {
27
+ this.log(renderJson(buildEnvelope({
28
+ command: "iptv snapshot",
29
+ profile,
30
+ data: { built: result.ok, output: result.output.trim() },
31
+ problems: result.ok
32
+ ? []
33
+ : [
34
+ {
35
+ id: "iptv.snapshot",
36
+ severity: "fail",
37
+ message: "the snapshot build failed",
38
+ remedy: "Check the provider credentials in the admin panel, then retry.",
39
+ },
40
+ ],
41
+ })));
42
+ if (!result.ok)
43
+ this.exit(EXIT.FAILURE);
44
+ return;
45
+ }
46
+ if (!result.ok) {
47
+ this.log(c.bad("The snapshot build failed."));
48
+ this.log(result.output.split("\n").slice(-15).join("\n"));
49
+ this.exit(EXIT.FAILURE);
50
+ }
51
+ this.log(result.output.trim());
52
+ this.log(`${c.ok(glyph.pass)} Snapshot rebuilt.`);
53
+ }
54
+ }
55
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/commands/iptv/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,mGAAmG;AACnG,kGAAkG;AAClG,qEAAqE;AACrE,gGAAgG;AAChG,oGAAoG;AAEpG,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,WAAW,GAAG,mCAAmC,CAAC;IAEzD,MAAM,CAAC,QAAQ,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAEtD,MAAM,CAAC,KAAK,GAAG;QACb,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;KAC9E,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3G,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CACN,UAAU,CACR,aAAa,CAAC;gBACZ,OAAO,EAAE,eAAe;gBACxB,OAAO;gBACP,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;gBACxD,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACjB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE;4BACE,EAAE,EAAE,eAAe;4BACnB,QAAQ,EAAE,MAAM;4BAChB,OAAO,EAAE,2BAA2B;4BACpC,MAAM,EAAE,gEAAgE;yBACzE;qBACF;aACN,CAAC,CACH,CACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ export default class LibraryDrives extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=drives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drives.d.ts","sourceRoot":"","sources":["../../../src/commands/library/drives.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAkBpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,SAA+E;IAEjG,MAAM,CAAC,QAAQ,WAAmF;IAE5F,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4D3B"}
@@ -0,0 +1,71 @@
1
+ import Table from "cli-table3";
2
+ import { BaseCommand } from "../../base-command.js";
3
+ import { getInternal } from "../../probes/internal.client.js";
4
+ import { INTERNAL_PATHS } from "../../probes/internal-paths.js";
5
+ import { buildEnvelope, renderJson } from "../../render/json.js";
6
+ import { NOT_REPORTED, c, formatBytes, glyph } from "../../render/theme.js";
7
+ // AR: الأقراص وما يعتمد عليها من أقسام.
8
+ //
9
+ // **هذا ردّنا المباشر على «صندوق الهاردات الأحمر» عند المنافس** (المعمارية v3 §13): ذاك يعرض
10
+ // حروف أقراص ويترك الحلّ للمستخدم. هنا يُسمّى القرص المفقود، وتُسمّى الأقسام التي يأخذها معه،
11
+ // ويُقال الأمر الذي يعيد الربط. **لا نعرض المشكلة، نعرض الخطوة التالية.**
12
+ // EN: Drives and the sections that depend on them.
13
+ //
14
+ // **This is our direct answer to the competitor's red "check your drives" box** (architecture v3
15
+ // §13): that one lists drive letters and leaves the fix to the user. Here the missing drive is
16
+ // named, the sections it takes with it are named, and the command that reconnects it is given.
17
+ // **We do not show the problem, we show the next step.**
18
+ export default class LibraryDrives extends BaseCommand {
19
+ static description = "Show every drive a section points at: present or missing, with free space";
20
+ static examples = ["<%= config.bin %> library drives", "<%= config.bin %> library drives --json"];
21
+ async run() {
22
+ const { flags } = await this.parse(LibraryDrives);
23
+ const profile = this.loadProfile(flags.profile, false, flags.product);
24
+ const result = await getInternal(profile, INTERNAL_PATHS.DRIVES);
25
+ if (!result.ok)
26
+ this.coreUnreachable("library drives", profile, result.reason, flags.json);
27
+ const missing = result.data.filter((drive) => drive.status !== "connected" && drive.sectionCount > 0);
28
+ if (flags.json) {
29
+ this.log(renderJson(buildEnvelope({
30
+ command: "library drives",
31
+ profile,
32
+ data: { drives: result.data },
33
+ problems: missing.map((drive) => ({
34
+ id: `drive.${drive.serial}`,
35
+ severity: "fail",
36
+ message: `${drive.label || drive.letter || drive.serial} is missing and ${drive.sectionCount} section(s) depend on it`,
37
+ remedy: "Reconnect it, then run: fantastic library relink",
38
+ })),
39
+ })));
40
+ return;
41
+ }
42
+ const table = new Table({
43
+ head: ["", "Drive", "Label", "Free", "Sections", "Last seen"].map((header) => c.dim(header)),
44
+ style: { head: [], border: [], "padding-left": 1, "padding-right": 1 },
45
+ });
46
+ for (const drive of result.data) {
47
+ const present = drive.status === "connected";
48
+ table.push([
49
+ present ? c.ok(glyph.ok) : c.bad(glyph.bad),
50
+ drive.letter ?? c.dim(NOT_REPORTED),
51
+ drive.label || c.dim("(no label)"),
52
+ // المفقود مساحته مجهولة لا صفر: الصفر يُقرأ «ممتلئ» فيقلب المعنى.
53
+ present ? formatBytes(drive.freeBytes) : c.dim(NOT_REPORTED),
54
+ String(drive.sectionCount),
55
+ c.dim(drive.lastSeen),
56
+ ]);
57
+ }
58
+ this.log("");
59
+ this.log(table.toString());
60
+ if (missing.length > 0) {
61
+ this.log("");
62
+ for (const drive of missing) {
63
+ const names = drive.sections.map((section) => section.name).join("، ");
64
+ this.log(c.bad(`${drive.label || drive.letter || drive.serial} is missing — ${drive.sectionCount} section(s): ${names}`));
65
+ }
66
+ this.log(`${c.accent(glyph.arrow)} Reconnect the drive, then run: fantastic library relink`);
67
+ }
68
+ this.log("");
69
+ }
70
+ }
71
+ //# sourceMappingURL=drives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drives.js","sourceRoot":"","sources":["../../../src/commands/library/drives.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ export default class LibraryRelink extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "dry-run": import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=relink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relink.d.ts","sourceRoot":"","sources":["../../../src/commands/library/relink.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAkBpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,SAAuE;IAEzF,MAAM,CAAC,QAAQ,WAAsF;IAErG,MAAM,CAAC,KAAK;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8D3B"}
@@ -0,0 +1,72 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { BaseCommand } from "../../base-command.js";
3
+ import { getInternal, postInternal } from "../../probes/internal.client.js";
4
+ import { INTERNAL_PATHS } from "../../probes/internal-paths.js";
5
+ import { buildEnvelope, renderJson } from "../../render/json.js";
6
+ import { c, glyph } from "../../render/theme.js";
7
+ // AR: يعيد ربط الأقسام بأقراصها بعد أن يبدّل ويندوز حرف السواقة.
8
+ //
9
+ // الربط بهويّة المجلَّد لا بالحرف (الدستور II): ‎E:‎ تصير ‎F:‎ بين إقلاعين، وقسمٌ مربوط بالحرف
10
+ // يصير مسارًا خطأً. النواة تستطلع الأقراص فتُعاد بناء المسارات من الهويّة — ولا يُعدَّل صفّ قسم
11
+ // واحد. هذا هو الفرق العملي بيننا وبين صندوق أحمر يقول «تأكّد من توصيل الهاردات».
12
+ // EN: Reconnects sections to their drives after Windows changes a drive letter.
13
+ //
14
+ // Binding is by volume identity, not by letter (constitution II): E: becomes F: between boots,
15
+ // and a section bound to a letter becomes a wrong path. The core polls the drives and section
16
+ // paths are rebuilt from identity — no section row is edited. This is the practical difference
17
+ // between us and a red box that says "check your drives".
18
+ export default class LibraryRelink extends BaseCommand {
19
+ static description = "Reconnect sections whose drive letter changed, by volume identity";
20
+ static examples = ["<%= config.bin %> library relink", "<%= config.bin %> library relink --dry-run"];
21
+ static flags = {
22
+ "dry-run": Flags.boolean({ description: "Report what is disconnected and change nothing.", default: false }),
23
+ };
24
+ async run() {
25
+ const { flags } = await this.parse(LibraryRelink);
26
+ const profile = this.loadProfile(flags.profile, false, flags.product);
27
+ const before = await getInternal(profile, INTERNAL_PATHS.SCAN_DISCONNECTED);
28
+ if (!before.ok)
29
+ this.coreUnreachable("library relink", profile, before.reason, flags.json);
30
+ if (flags["dry-run"]) {
31
+ if (flags.json) {
32
+ this.log(renderJson(buildEnvelope({ command: "library relink", profile, data: { dryRun: true, disconnected: before.data } })));
33
+ return;
34
+ }
35
+ this.log("");
36
+ this.log(before.data ? c.warn(`disconnected: ${JSON.stringify(before.data)}`) : c.ok("nothing is disconnected."));
37
+ this.log(c.dim("dry run — nothing was changed."));
38
+ this.log("");
39
+ return;
40
+ }
41
+ const relinked = await postInternal(profile, INTERNAL_PATHS.SCAN_RELINK, {});
42
+ if (!relinked.ok)
43
+ this.coreUnreachable("library relink", profile, relinked.reason, flags.json);
44
+ const after = await getInternal(profile, INTERNAL_PATHS.DRIVES);
45
+ const stillMissing = after.ok ? after.data.filter((drive) => drive.status !== "connected" && drive.sectionCount > 0) : [];
46
+ if (flags.json) {
47
+ this.log(renderJson(buildEnvelope({
48
+ command: "library relink",
49
+ profile,
50
+ data: { relinked: true, stillMissing },
51
+ problems: stillMissing.map((drive) => ({
52
+ id: `drive.${drive.serial}`,
53
+ severity: "fail",
54
+ message: `${drive.label || drive.serial} is still missing`,
55
+ remedy: "Connect the drive physically, then run this again.",
56
+ })),
57
+ })));
58
+ return;
59
+ }
60
+ this.log("");
61
+ this.log(`${c.ok(glyph.pass)} Drives re-polled; section paths rebuilt from volume identity.`);
62
+ if (stillMissing.length > 0) {
63
+ for (const drive of stillMissing) {
64
+ this.log(c.bad(` ${drive.label || drive.serial} is still missing — ${drive.sectionCount} section(s)`));
65
+ }
66
+ // السبب الباقي مادّي لا برمجي، فنقوله بدل أن نكرّر الأمر نفسه.
67
+ this.log(`${c.accent(glyph.arrow)} The drive is not attached. Connect it, then run this again.`);
68
+ }
69
+ this.log("");
70
+ }
71
+ }
72
+ //# sourceMappingURL=relink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relink.js","sourceRoot":"","sources":["../../../src/commands/library/relink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ export default class LibraryScan extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ section: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ deep: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ detach: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ /** يستطلع حتى ينتهي الفحص. يُعيد آخر حالة معروفة. */
12
+ private follow;
13
+ /** ملخّص من الحقول التي تُبلِغ عنها النواة فعلًا؛ ما يغيب لا يُخترَع. */
14
+ private summarise;
15
+ }
16
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/commands/library/scan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAkBpD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,WAAW,SAA4C;IAE9D,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;MAIV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC1B,qDAAqD;YACvC,MAAM;IAuBpB,yEAAyE;IACzE,OAAO,CAAC,SAAS;CAYlB"}
@@ -0,0 +1,87 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { BaseCommand } from "../../base-command.js";
3
+ import { getInternal, postInternal } from "../../probes/internal.client.js";
4
+ import { INTERNAL_PATHS } from "../../probes/internal-paths.js";
5
+ import { buildEnvelope, renderJson } from "../../render/json.js";
6
+ import { c, glyph, isTty } from "../../render/theme.js";
7
+ // AR: يبدأ فحص قسم ويتابع تقدّمه.
8
+ //
9
+ // **الفحص يعمل في النواة لا هنا.** إغلاق الطرفية لا يوقفه: هذا الأمر يشاهد فحصًا جاريًا،
10
+ // و‎--detach‎ يقول ذلك صراحةً بدل أن يوهم أن الخروج إلغاء.
11
+ // EN: Starts a section scan and follows its progress.
12
+ //
13
+ // **The scan runs in the core, not here.** Closing the terminal does not stop it: this command
14
+ // watches a scan that is already running, and --detach says so explicitly rather than implying
15
+ // that quitting cancels.
16
+ const POLL_MS = 1_000;
17
+ export default class LibraryScan extends BaseCommand {
18
+ static description = "Scan a section and follow the progress";
19
+ static examples = [
20
+ '<%= config.bin %> library scan --section "E:\\Media\\Series"',
21
+ "<%= config.bin %> library scan --section <path> --deep",
22
+ ];
23
+ static flags = {
24
+ section: Flags.string({ description: "Section path to scan", required: true }),
25
+ deep: Flags.boolean({ description: "Re-probe every file instead of trusting the index.", default: false }),
26
+ detach: Flags.boolean({ description: "Start it and return; the core keeps scanning.", default: false }),
27
+ };
28
+ async run() {
29
+ const { flags } = await this.parse(LibraryScan);
30
+ const profile = this.loadProfile(flags.profile, false, flags.product);
31
+ const started = await postInternal(profile, INTERNAL_PATHS.SCAN_START, {
32
+ path: flags.section,
33
+ deep: flags.deep,
34
+ });
35
+ if (!started.ok)
36
+ this.coreUnreachable("library scan", profile, started.reason, flags.json);
37
+ if (flags.detach || flags.json) {
38
+ const status = flags.detach ? started.data : await this.follow(profile, false);
39
+ if (flags.json) {
40
+ this.log(renderJson(buildEnvelope({ command: "library scan", profile, data: { status } })));
41
+ return;
42
+ }
43
+ this.log(`${c.ok(glyph.pass)} Scan started. It runs in the core; this terminal is not holding it.`);
44
+ this.log(c.dim(" watch it: fantastic library status"));
45
+ return;
46
+ }
47
+ this.log("");
48
+ this.log(`${c.dim("scanning:")} ${c.value(flags.section)}`);
49
+ const final = await this.follow(profile, true);
50
+ this.log("");
51
+ this.log(`${c.ok(glyph.pass)} ${this.summarise(final)}`);
52
+ this.log("");
53
+ }
54
+ /** يستطلع حتى ينتهي الفحص. يُعيد آخر حالة معروفة. */
55
+ async follow(profile, draw) {
56
+ let last = null;
57
+ for (;;) {
58
+ const result = await getInternal(profile, INTERNAL_PATHS.SCAN_RESULTS);
59
+ if (!result.ok)
60
+ break;
61
+ last = result.data;
62
+ if (draw && isTty) {
63
+ process.stdout.write(`\r ${c.dim(this.summarise(last))} `);
64
+ }
65
+ const running = last?.status === "running";
66
+ if (!running)
67
+ break;
68
+ await new Promise((resolvePromise) => setTimeout(resolvePromise, POLL_MS));
69
+ }
70
+ if (draw && isTty)
71
+ process.stdout.write("\r");
72
+ return last;
73
+ }
74
+ /** ملخّص من الحقول التي تُبلِغ عنها النواة فعلًا؛ ما يغيب لا يُخترَع. */
75
+ summarise(status) {
76
+ if (!status)
77
+ return "no scan status reported";
78
+ const record = status;
79
+ const parts = [];
80
+ for (const key of ["status", "added", "updated", "unchanged", "failed", "total", "processed"]) {
81
+ if (record[key] !== undefined && record[key] !== null)
82
+ parts.push(`${key} ${String(record[key])}`);
83
+ }
84
+ return parts.length > 0 ? parts.join(" · ") : "scan finished";
85
+ }
86
+ }
87
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/commands/library/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ export default class LibrarySections extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../../src/commands/library/sections.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAcpD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,WAAW,SAAkD;IAEpE,MAAM,CAAC,QAAQ,WAAuF;IAEhG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B3B"}
@@ -0,0 +1,33 @@
1
+ import Table from "cli-table3";
2
+ import { BaseCommand } from "../../base-command.js";
3
+ import { getInternal } from "../../probes/internal.client.js";
4
+ import { INTERNAL_PATHS } from "../../probes/internal-paths.js";
5
+ import { buildEnvelope, renderJson } from "../../render/json.js";
6
+ import { NOT_REPORTED, c } from "../../render/theme.js";
7
+ export default class LibrarySections extends BaseCommand {
8
+ static description = "List the library's sections with their paths";
9
+ static examples = ["<%= config.bin %> library sections", "<%= config.bin %> library sections --json"];
10
+ async run() {
11
+ const { flags } = await this.parse(LibrarySections);
12
+ const profile = this.loadProfile(flags.profile, false, flags.product);
13
+ const result = await getInternal(profile, INTERNAL_PATHS.SECTIONS);
14
+ if (!result.ok)
15
+ this.coreUnreachable("library sections", profile, result.reason, flags.json);
16
+ if (flags.json) {
17
+ this.log(renderJson(buildEnvelope({ command: "library sections", profile, data: { sections: result.data } })));
18
+ return;
19
+ }
20
+ const table = new Table({
21
+ head: ["#", "Section", "Kind", "Path"].map((header) => c.dim(header)),
22
+ style: { head: [], border: [], "padding-left": 1, "padding-right": 1 },
23
+ });
24
+ for (const section of result.data) {
25
+ table.push([String(section.id), section.name, section.kind ?? NOT_REPORTED, section.path ?? c.dim(NOT_REPORTED)]);
26
+ }
27
+ this.log("");
28
+ this.log(table.toString());
29
+ this.log(c.dim(`${result.data.length} section(s)`));
30
+ this.log("");
31
+ }
32
+ }
33
+ //# sourceMappingURL=sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../../src/commands/library/sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAUxD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,WAAW,GAAG,8CAA8C,CAAC;IAEpE,MAAM,CAAC,QAAQ,GAAG,CAAC,oCAAoC,EAAE,2CAA2C,CAAC,CAAC;IAEtG,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAY,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7F,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/G,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;SACvE,CAAC,CAAC;QAEH,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ export default class LibraryStatus extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/library/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,SAA+D;IAEjF,MAAM,CAAC,QAAQ,WAAmF;IAE5F,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgC3B"}
@@ -0,0 +1,37 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ import { fetchInternalHealth } from "../../probes/internal.client.js";
3
+ import { buildEnvelope, renderJson } from "../../render/json.js";
4
+ import { NOT_REPORTED, c } from "../../render/theme.js";
5
+ // AR: عدّادات الفهرس. تُقرأ من لقطة الصحة لا من مسار خاص: العدّادات موجودة فيها أصلًا، وفتح مسار
6
+ // ثانٍ لنفس الرقم يخلق مصدرين قد يتباعدان.
7
+ // EN: Index counters. Read from the health snapshot rather than a dedicated route: the counters are
8
+ // already there, and a second route for the same number creates two sources that can drift.
9
+ export default class LibraryStatus extends BaseCommand {
10
+ static description = "Show index counters and when the library was last scanned";
11
+ static examples = ["<%= config.bin %> library status", "<%= config.bin %> library status --json"];
12
+ async run() {
13
+ const { flags } = await this.parse(LibraryStatus);
14
+ const profile = this.loadProfile(flags.profile, false, flags.product);
15
+ const result = await fetchInternalHealth(profile);
16
+ if (!result.ok)
17
+ this.coreUnreachable("library status", profile, result.reason, flags.json);
18
+ const snapshot = result.data;
19
+ if (flags.json) {
20
+ this.log(renderJson(buildEnvelope({
21
+ command: "library status",
22
+ profile,
23
+ data: { library: snapshot.library ?? null, drives: snapshot.drives ?? null },
24
+ })));
25
+ return;
26
+ }
27
+ const library = snapshot.library;
28
+ this.log("");
29
+ this.log(` ${c.dim("Titles".padEnd(16))} ${library ? library.titles : c.dim(NOT_REPORTED)}`);
30
+ this.log(` ${c.dim("Sections".padEnd(16))} ${library ? library.sections : c.dim(NOT_REPORTED)}`);
31
+ this.log(` ${c.dim("Last scan".padEnd(16))} ${library?.lastScanAt ?? c.dim(NOT_REPORTED)}`);
32
+ this.log("");
33
+ this.log(c.dim("scan a section: fantastic library scan --section <path>"));
34
+ this.log("");
35
+ }
36
+ }
37
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/library/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAExD,iGAAiG;AACjG,+CAA+C;AAC/C,oGAAoG;AACpG,gGAAgG;AAEhG,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,GAAG,2DAA2D,CAAC;IAEjF,MAAM,CAAC,QAAQ,GAAG,CAAC,kCAAkC,EAAE,yCAAyC,CAAC,CAAC;IAElG,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE3F,MAAM,QAAQ,GAAmB,MAAM,CAAC,IAAI,CAAC;QAE7C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CACN,UAAU,CACR,aAAa,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,OAAO;gBACP,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;aAC7E,CAAC,CACH,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class List extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuBjD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,MAAM,CAAC,WAAW,SAA2D;IAE7E,MAAM,CAAC,QAAQ,WAA+D;IAExE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqD3B"}
@@ -0,0 +1,73 @@
1
+ import Table from "cli-table3";
2
+ import { BaseCommand } from "../base-command.js";
3
+ import { readRegistry } from "../registry/local-registry.js";
4
+ import { buildEnvelope, renderJson } from "../render/json.js";
5
+ import { c, glyph } from "../render/theme.js";
6
+ // AR: **ماذا على هذه الآلة؟** — السؤال الذي لم يكن للواجهة جوابٌ عنه (٠٢٦/US3).
7
+ //
8
+ // قبل هذه الميزة كانت الواجهة تستنتج جذرًا واحدًا وتعمل عليه؛ فإن سُئلت «ماذا مثبَّت هنا؟»
9
+ // لم يكن لها ما تقوله. ومدير الحزمٍ يبدأ من هذا السؤال: من يدير شيئًا يحتاج أوّلًا أن يرى ما
10
+ // يديره.
11
+ //
12
+ // **ولا يشترط تثبيتًا.** بقيّة الأوامر تفشل بلا نظامٍ مثبَّت (‎NO_PROFILE‎)، وهذا يجيب «لا شيء»
13
+ // ويخرج بنجاح: «لا شيء مثبَّت» جوابٌ صحيح لسؤالٍ صحيح، لا خطأ.
14
+ // EN: **What is on this machine?** — the question the CLI had no answer to (026/US3).
15
+ //
16
+ // Before this feature the CLI inferred a single root and worked on it; asked "what is installed
17
+ // here?", it had nothing to say. A package manager begins with that question: whoever manages
18
+ // something needs first to see what they are managing.
19
+ //
20
+ // **And it requires no installation.** Every other command fails without one (`NO_PROFILE`);
21
+ // this answers "nothing" and exits successfully: "nothing is installed" is a correct answer to a
22
+ // correct question, not an error.
23
+ export default class List extends BaseCommand {
24
+ static description = "List the Fantastic products installed on this machine";
25
+ static examples = ["<%= config.bin %> list", "<%= config.bin %> list --json"];
26
+ async run() {
27
+ const { flags } = await this.parse(List);
28
+ const { products, rebuilt, newerSchema } = readRegistry();
29
+ if (newerSchema) {
30
+ this.log("");
31
+ this.log(c.bad("سجلّ المنتجات على هذه الآلة كتبته واجهةٌ أحدث من هذه."));
32
+ this.log(`${c.accent(glyph.arrow)} حدّثها ثم أعِد المحاولة: npm i -g @wasmsoft/fantastic@latest`);
33
+ this.log("");
34
+ return;
35
+ }
36
+ if (flags.json) {
37
+ this.log(renderJson(buildEnvelope({ command: "list", data: { products, rebuilt } })));
38
+ return;
39
+ }
40
+ if (products.length === 0) {
41
+ this.log("");
42
+ this.log(c.dim("لا يوجد منتج Fantastic مثبَّت على هذه الآلة."));
43
+ this.log(`${c.accent(glyph.arrow)} ثبّت واحدًا: fantastic install estraha`);
44
+ this.log("");
45
+ return;
46
+ }
47
+ const table = new Table({
48
+ head: ["product", "version", "root", "ports", "installed"].map((title) => c.label(title)),
49
+ style: { head: [], border: [] },
50
+ });
51
+ for (const product of products) {
52
+ table.push([
53
+ c.value(product.id),
54
+ product.version,
55
+ c.dim(product.root),
56
+ `${product.ports.core} · ${product.ports.live}`,
57
+ c.dim(product.installedAt.slice(0, 10)),
58
+ ]);
59
+ }
60
+ this.log("");
61
+ this.log(table.toString());
62
+ // AR: يُعلَن إعادة البناء ولا تُخفى: من فقد سجلّه يستحقّ أن يعرف — قد يكون فقد معه أشياء أخرى
63
+ // على القرص نفسه، وصمتُنا يجعله يظنّ أن كل شيء بخير.
64
+ // EN: A rebuild is announced rather than hidden: whoever lost their registry deserves to know —
65
+ // they may have lost other things on the same disk, and our silence lets them believe all is
66
+ // well.
67
+ if (rebuilt) {
68
+ this.log(c.dim(" (السجلّ لم يكن موجودًا أو تعذّرت قراءته، فأُعيد بناؤه بالمسح.)"));
69
+ }
70
+ this.log("");
71
+ }
72
+ }
73
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ export default class LiveChannels extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ provider: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=channels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../../src/commands/live/channels.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAYpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,WAAW,SAAiD;IAEnE,MAAM,CAAC,QAAQ,WAAiF;IAEhG,MAAM,CAAC,KAAK;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8C3B"}