@masuidrive/procman 0.1.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 (315) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/src/cli/commands/clear-log.d.ts +10 -0
  4. package/dist/src/cli/commands/clear-log.d.ts.map +1 -0
  5. package/dist/src/cli/commands/clear-log.js +77 -0
  6. package/dist/src/cli/commands/clear-log.js.map +1 -0
  7. package/dist/src/cli/commands/exit.d.ts +10 -0
  8. package/dist/src/cli/commands/exit.d.ts.map +1 -0
  9. package/dist/src/cli/commands/exit.js +65 -0
  10. package/dist/src/cli/commands/exit.js.map +1 -0
  11. package/dist/src/cli/commands/help.d.ts +10 -0
  12. package/dist/src/cli/commands/help.d.ts.map +1 -0
  13. package/dist/src/cli/commands/help.js +340 -0
  14. package/dist/src/cli/commands/help.js.map +1 -0
  15. package/dist/src/cli/commands/list.d.ts +11 -0
  16. package/dist/src/cli/commands/list.d.ts.map +1 -0
  17. package/dist/src/cli/commands/list.js +130 -0
  18. package/dist/src/cli/commands/list.js.map +1 -0
  19. package/dist/src/cli/commands/load.d.ts +11 -0
  20. package/dist/src/cli/commands/load.d.ts.map +1 -0
  21. package/dist/src/cli/commands/load.js +250 -0
  22. package/dist/src/cli/commands/load.js.map +1 -0
  23. package/dist/src/cli/commands/log.d.ts +18 -0
  24. package/dist/src/cli/commands/log.d.ts.map +1 -0
  25. package/dist/src/cli/commands/log.js +282 -0
  26. package/dist/src/cli/commands/log.js.map +1 -0
  27. package/dist/src/cli/commands/restart.d.ts +11 -0
  28. package/dist/src/cli/commands/restart.d.ts.map +1 -0
  29. package/dist/src/cli/commands/restart.js +99 -0
  30. package/dist/src/cli/commands/restart.js.map +1 -0
  31. package/dist/src/cli/commands/start.d.ts +11 -0
  32. package/dist/src/cli/commands/start.d.ts.map +1 -0
  33. package/dist/src/cli/commands/start.js +105 -0
  34. package/dist/src/cli/commands/start.js.map +1 -0
  35. package/dist/src/cli/commands/stop.d.ts +12 -0
  36. package/dist/src/cli/commands/stop.d.ts.map +1 -0
  37. package/dist/src/cli/commands/stop.js +105 -0
  38. package/dist/src/cli/commands/stop.js.map +1 -0
  39. package/dist/src/cli/index.d.ts +3 -0
  40. package/dist/src/cli/index.d.ts.map +1 -0
  41. package/dist/src/cli/index.js +28 -0
  42. package/dist/src/cli/index.js.map +1 -0
  43. package/dist/src/cli/parser.d.ts +14 -0
  44. package/dist/src/cli/parser.d.ts.map +1 -0
  45. package/dist/src/cli/parser.js +131 -0
  46. package/dist/src/cli/parser.js.map +1 -0
  47. package/dist/src/cli/signal-handler.d.ts +51 -0
  48. package/dist/src/cli/signal-handler.d.ts.map +1 -0
  49. package/dist/src/cli/signal-handler.js +129 -0
  50. package/dist/src/cli/signal-handler.js.map +1 -0
  51. package/dist/src/cli/utils/error-handler.d.ts +39 -0
  52. package/dist/src/cli/utils/error-handler.d.ts.map +1 -0
  53. package/dist/src/cli/utils/error-handler.js +200 -0
  54. package/dist/src/cli/utils/error-handler.js.map +1 -0
  55. package/dist/src/cli/utils/error-utils.d.ts +16 -0
  56. package/dist/src/cli/utils/error-utils.d.ts.map +1 -0
  57. package/dist/src/cli/utils/error-utils.js +48 -0
  58. package/dist/src/cli/utils/error-utils.js.map +1 -0
  59. package/dist/src/cli/utils/ipc-client.d.ts +80 -0
  60. package/dist/src/cli/utils/ipc-client.d.ts.map +1 -0
  61. package/dist/src/cli/utils/ipc-client.js +275 -0
  62. package/dist/src/cli/utils/ipc-client.js.map +1 -0
  63. package/dist/src/config/config-loader.d.ts +74 -0
  64. package/dist/src/config/config-loader.d.ts.map +1 -0
  65. package/dist/src/config/config-loader.js +229 -0
  66. package/dist/src/config/config-loader.js.map +1 -0
  67. package/dist/src/config/config-normalizer.d.ts +135 -0
  68. package/dist/src/config/config-normalizer.d.ts.map +1 -0
  69. package/dist/src/config/config-normalizer.js +309 -0
  70. package/dist/src/config/config-normalizer.js.map +1 -0
  71. package/dist/src/config/config-reporter.d.ts +183 -0
  72. package/dist/src/config/config-reporter.d.ts.map +1 -0
  73. package/dist/src/config/config-reporter.js +311 -0
  74. package/dist/src/config/config-reporter.js.map +1 -0
  75. package/dist/src/config/config-validator.d.ts +163 -0
  76. package/dist/src/config/config-validator.d.ts.map +1 -0
  77. package/dist/src/config/config-validator.js +489 -0
  78. package/dist/src/config/config-validator.js.map +1 -0
  79. package/dist/src/config/config-watcher.d.ts +161 -0
  80. package/dist/src/config/config-watcher.d.ts.map +1 -0
  81. package/dist/src/config/config-watcher.js +245 -0
  82. package/dist/src/config/config-watcher.js.map +1 -0
  83. package/dist/src/config/index.d.ts +36 -0
  84. package/dist/src/config/index.d.ts.map +1 -0
  85. package/dist/src/config/index.js +41 -0
  86. package/dist/src/config/index.js.map +1 -0
  87. package/dist/src/config/secure-config-loader.d.ts +77 -0
  88. package/dist/src/config/secure-config-loader.d.ts.map +1 -0
  89. package/dist/src/config/secure-config-loader.js +326 -0
  90. package/dist/src/config/secure-config-loader.js.map +1 -0
  91. package/dist/src/daemon/base-socket-connection.d.ts +66 -0
  92. package/dist/src/daemon/base-socket-connection.d.ts.map +1 -0
  93. package/dist/src/daemon/base-socket-connection.js +192 -0
  94. package/dist/src/daemon/base-socket-connection.js.map +1 -0
  95. package/dist/src/daemon/component-manager.d.ts +180 -0
  96. package/dist/src/daemon/component-manager.d.ts.map +1 -0
  97. package/dist/src/daemon/component-manager.js +794 -0
  98. package/dist/src/daemon/component-manager.js.map +1 -0
  99. package/dist/src/daemon/crash-recovery.d.ts +71 -0
  100. package/dist/src/daemon/crash-recovery.d.ts.map +1 -0
  101. package/dist/src/daemon/crash-recovery.js +282 -0
  102. package/dist/src/daemon/crash-recovery.js.map +1 -0
  103. package/dist/src/daemon/daemon-main.d.ts +18 -0
  104. package/dist/src/daemon/daemon-main.d.ts.map +1 -0
  105. package/dist/src/daemon/daemon-main.js +160 -0
  106. package/dist/src/daemon/daemon-main.js.map +1 -0
  107. package/dist/src/daemon/daemon-state-manager.d.ts +111 -0
  108. package/dist/src/daemon/daemon-state-manager.d.ts.map +1 -0
  109. package/dist/src/daemon/daemon-state-manager.js +194 -0
  110. package/dist/src/daemon/daemon-state-manager.js.map +1 -0
  111. package/dist/src/daemon/data-directory.d.ts +51 -0
  112. package/dist/src/daemon/data-directory.d.ts.map +1 -0
  113. package/dist/src/daemon/data-directory.js +136 -0
  114. package/dist/src/daemon/data-directory.js.map +1 -0
  115. package/dist/src/daemon/index.d.ts +20 -0
  116. package/dist/src/daemon/index.d.ts.map +1 -0
  117. package/dist/src/daemon/index.js +24 -0
  118. package/dist/src/daemon/index.js.map +1 -0
  119. package/dist/src/daemon/ipc-client-base.d.ts +153 -0
  120. package/dist/src/daemon/ipc-client-base.d.ts.map +1 -0
  121. package/dist/src/daemon/ipc-client-base.js +476 -0
  122. package/dist/src/daemon/ipc-client-base.js.map +1 -0
  123. package/dist/src/daemon/ipc-command-handler.d.ts +107 -0
  124. package/dist/src/daemon/ipc-command-handler.d.ts.map +1 -0
  125. package/dist/src/daemon/ipc-command-handler.js +483 -0
  126. package/dist/src/daemon/ipc-command-handler.js.map +1 -0
  127. package/dist/src/daemon/ipc-factory.d.ts +92 -0
  128. package/dist/src/daemon/ipc-factory.d.ts.map +1 -0
  129. package/dist/src/daemon/ipc-factory.js +210 -0
  130. package/dist/src/daemon/ipc-factory.js.map +1 -0
  131. package/dist/src/daemon/ipc-server-base.d.ts +158 -0
  132. package/dist/src/daemon/ipc-server-base.d.ts.map +1 -0
  133. package/dist/src/daemon/ipc-server-base.js +491 -0
  134. package/dist/src/daemon/ipc-server-base.js.map +1 -0
  135. package/dist/src/daemon/message-protocol.d.ts +132 -0
  136. package/dist/src/daemon/message-protocol.d.ts.map +1 -0
  137. package/dist/src/daemon/message-protocol.js +252 -0
  138. package/dist/src/daemon/message-protocol.js.map +1 -0
  139. package/dist/src/daemon/named-pipe-client.d.ts +61 -0
  140. package/dist/src/daemon/named-pipe-client.d.ts.map +1 -0
  141. package/dist/src/daemon/named-pipe-client.js +221 -0
  142. package/dist/src/daemon/named-pipe-client.js.map +1 -0
  143. package/dist/src/daemon/named-pipe-server.d.ts +40 -0
  144. package/dist/src/daemon/named-pipe-server.d.ts.map +1 -0
  145. package/dist/src/daemon/named-pipe-server.js +102 -0
  146. package/dist/src/daemon/named-pipe-server.js.map +1 -0
  147. package/dist/src/daemon/orphan-detector.d.ts +66 -0
  148. package/dist/src/daemon/orphan-detector.d.ts.map +1 -0
  149. package/dist/src/daemon/orphan-detector.js +208 -0
  150. package/dist/src/daemon/orphan-detector.js.map +1 -0
  151. package/dist/src/daemon/pid-manager.d.ts +49 -0
  152. package/dist/src/daemon/pid-manager.d.ts.map +1 -0
  153. package/dist/src/daemon/pid-manager.js +110 -0
  154. package/dist/src/daemon/pid-manager.js.map +1 -0
  155. package/dist/src/daemon/procman-daemon.d.ts +188 -0
  156. package/dist/src/daemon/procman-daemon.d.ts.map +1 -0
  157. package/dist/src/daemon/procman-daemon.js +802 -0
  158. package/dist/src/daemon/procman-daemon.js.map +1 -0
  159. package/dist/src/daemon/reconnection-system.d.ts +113 -0
  160. package/dist/src/daemon/reconnection-system.d.ts.map +1 -0
  161. package/dist/src/daemon/reconnection-system.js +223 -0
  162. package/dist/src/daemon/reconnection-system.js.map +1 -0
  163. package/dist/src/daemon/resource-manager.d.ts +204 -0
  164. package/dist/src/daemon/resource-manager.d.ts.map +1 -0
  165. package/dist/src/daemon/resource-manager.js +423 -0
  166. package/dist/src/daemon/resource-manager.js.map +1 -0
  167. package/dist/src/daemon/signal-handler.d.ts +58 -0
  168. package/dist/src/daemon/signal-handler.d.ts.map +1 -0
  169. package/dist/src/daemon/signal-handler.js +142 -0
  170. package/dist/src/daemon/signal-handler.js.map +1 -0
  171. package/dist/src/daemon/simple-resource-manager.d.ts +95 -0
  172. package/dist/src/daemon/simple-resource-manager.d.ts.map +1 -0
  173. package/dist/src/daemon/simple-resource-manager.js +180 -0
  174. package/dist/src/daemon/simple-resource-manager.js.map +1 -0
  175. package/dist/src/daemon/unix-socket-client.d.ts +69 -0
  176. package/dist/src/daemon/unix-socket-client.d.ts.map +1 -0
  177. package/dist/src/daemon/unix-socket-client.js +313 -0
  178. package/dist/src/daemon/unix-socket-client.js.map +1 -0
  179. package/dist/src/daemon/unix-socket-server.d.ts +61 -0
  180. package/dist/src/daemon/unix-socket-server.d.ts.map +1 -0
  181. package/dist/src/daemon/unix-socket-server.js +262 -0
  182. package/dist/src/daemon/unix-socket-server.js.map +1 -0
  183. package/dist/src/daemon/zombie-reaper.d.ts +83 -0
  184. package/dist/src/daemon/zombie-reaper.d.ts.map +1 -0
  185. package/dist/src/daemon/zombie-reaper.js +278 -0
  186. package/dist/src/daemon/zombie-reaper.js.map +1 -0
  187. package/dist/src/process-manager/index.d.ts +13 -0
  188. package/dist/src/process-manager/index.d.ts.map +1 -0
  189. package/dist/src/process-manager/index.js +11 -0
  190. package/dist/src/process-manager/index.js.map +1 -0
  191. package/dist/src/process-manager/interfaces/index.d.ts +31 -0
  192. package/dist/src/process-manager/interfaces/index.d.ts.map +1 -0
  193. package/dist/src/process-manager/interfaces/index.js +14 -0
  194. package/dist/src/process-manager/interfaces/index.js.map +1 -0
  195. package/dist/src/process-manager/interfaces/process-group.d.ts +200 -0
  196. package/dist/src/process-manager/interfaces/process-group.d.ts.map +1 -0
  197. package/dist/src/process-manager/interfaces/process-group.js +10 -0
  198. package/dist/src/process-manager/interfaces/process-group.js.map +1 -0
  199. package/dist/src/process-manager/interfaces/process-lifecycle.d.ts +97 -0
  200. package/dist/src/process-manager/interfaces/process-lifecycle.d.ts.map +1 -0
  201. package/dist/src/process-manager/interfaces/process-lifecycle.js +10 -0
  202. package/dist/src/process-manager/interfaces/process-lifecycle.js.map +1 -0
  203. package/dist/src/process-manager/interfaces/process-monitor.d.ts +118 -0
  204. package/dist/src/process-manager/interfaces/process-monitor.d.ts.map +1 -0
  205. package/dist/src/process-manager/interfaces/process-monitor.js +10 -0
  206. package/dist/src/process-manager/interfaces/process-monitor.js.map +1 -0
  207. package/dist/src/process-manager/interfaces/process-persistence.d.ts +125 -0
  208. package/dist/src/process-manager/interfaces/process-persistence.d.ts.map +1 -0
  209. package/dist/src/process-manager/interfaces/process-persistence.js +10 -0
  210. package/dist/src/process-manager/interfaces/process-persistence.js.map +1 -0
  211. package/dist/src/process-manager/managed-process-info.d.ts +307 -0
  212. package/dist/src/process-manager/managed-process-info.d.ts.map +1 -0
  213. package/dist/src/process-manager/managed-process-info.js +650 -0
  214. package/dist/src/process-manager/managed-process-info.js.map +1 -0
  215. package/dist/src/process-manager/process-group-manager.d.ts +103 -0
  216. package/dist/src/process-manager/process-group-manager.d.ts.map +1 -0
  217. package/dist/src/process-manager/process-group-manager.js +400 -0
  218. package/dist/src/process-manager/process-group-manager.js.map +1 -0
  219. package/dist/src/process-manager/process-lifecycle-manager.d.ts +68 -0
  220. package/dist/src/process-manager/process-lifecycle-manager.d.ts.map +1 -0
  221. package/dist/src/process-manager/process-lifecycle-manager.js +372 -0
  222. package/dist/src/process-manager/process-lifecycle-manager.js.map +1 -0
  223. package/dist/src/process-manager/process-manager.d.ts +296 -0
  224. package/dist/src/process-manager/process-manager.d.ts.map +1 -0
  225. package/dist/src/process-manager/process-manager.js +659 -0
  226. package/dist/src/process-manager/process-manager.js.map +1 -0
  227. package/dist/src/process-manager/process-monitor.d.ts +95 -0
  228. package/dist/src/process-manager/process-monitor.d.ts.map +1 -0
  229. package/dist/src/process-manager/process-monitor.js +357 -0
  230. package/dist/src/process-manager/process-monitor.js.map +1 -0
  231. package/dist/src/process-manager/process-persistence.d.ts +68 -0
  232. package/dist/src/process-manager/process-persistence.d.ts.map +1 -0
  233. package/dist/src/process-manager/process-persistence.js +364 -0
  234. package/dist/src/process-manager/process-persistence.js.map +1 -0
  235. package/dist/src/process-manager/utils/mutex.d.ts +82 -0
  236. package/dist/src/process-manager/utils/mutex.d.ts.map +1 -0
  237. package/dist/src/process-manager/utils/mutex.js +172 -0
  238. package/dist/src/process-manager/utils/mutex.js.map +1 -0
  239. package/dist/src/services/index.d.ts +8 -0
  240. package/dist/src/services/index.d.ts.map +1 -0
  241. package/dist/src/services/index.js +8 -0
  242. package/dist/src/services/index.js.map +1 -0
  243. package/dist/src/services/log-manager-config.d.ts +65 -0
  244. package/dist/src/services/log-manager-config.d.ts.map +1 -0
  245. package/dist/src/services/log-manager-config.js +145 -0
  246. package/dist/src/services/log-manager-config.js.map +1 -0
  247. package/dist/src/services/log-manager-factory.d.ts +134 -0
  248. package/dist/src/services/log-manager-factory.d.ts.map +1 -0
  249. package/dist/src/services/log-manager-factory.js +203 -0
  250. package/dist/src/services/log-manager-factory.js.map +1 -0
  251. package/dist/src/services/log-manager.d.ts +170 -0
  252. package/dist/src/services/log-manager.d.ts.map +1 -0
  253. package/dist/src/services/log-manager.js +1199 -0
  254. package/dist/src/services/log-manager.js.map +1 -0
  255. package/dist/src/services/log-path-validator.d.ts +121 -0
  256. package/dist/src/services/log-path-validator.d.ts.map +1 -0
  257. package/dist/src/services/log-path-validator.js +302 -0
  258. package/dist/src/services/log-path-validator.js.map +1 -0
  259. package/dist/src/services/process-log-integration.d.ts +62 -0
  260. package/dist/src/services/process-log-integration.d.ts.map +1 -0
  261. package/dist/src/services/process-log-integration.js +157 -0
  262. package/dist/src/services/process-log-integration.js.map +1 -0
  263. package/dist/src/shared/config.d.ts +67 -0
  264. package/dist/src/shared/config.d.ts.map +1 -0
  265. package/dist/src/shared/config.js +92 -0
  266. package/dist/src/shared/config.js.map +1 -0
  267. package/dist/src/shared/constants-streaming.d.ts +39 -0
  268. package/dist/src/shared/constants-streaming.d.ts.map +1 -0
  269. package/dist/src/shared/constants-streaming.js +39 -0
  270. package/dist/src/shared/constants-streaming.js.map +1 -0
  271. package/dist/src/shared/constants.d.ts +60 -0
  272. package/dist/src/shared/constants.d.ts.map +1 -0
  273. package/dist/src/shared/constants.js +71 -0
  274. package/dist/src/shared/constants.js.map +1 -0
  275. package/dist/src/shared/errors.d.ts +70 -0
  276. package/dist/src/shared/errors.d.ts.map +1 -0
  277. package/dist/src/shared/errors.js +101 -0
  278. package/dist/src/shared/errors.js.map +1 -0
  279. package/dist/src/shared/index.d.ts +14 -0
  280. package/dist/src/shared/index.d.ts.map +1 -0
  281. package/dist/src/shared/index.js +22 -0
  282. package/dist/src/shared/index.js.map +1 -0
  283. package/dist/src/shared/ipc.d.ts +402 -0
  284. package/dist/src/shared/ipc.d.ts.map +1 -0
  285. package/dist/src/shared/ipc.js +85 -0
  286. package/dist/src/shared/ipc.js.map +1 -0
  287. package/dist/src/shared/logger.d.ts +38 -0
  288. package/dist/src/shared/logger.d.ts.map +1 -0
  289. package/dist/src/shared/logger.js +139 -0
  290. package/dist/src/shared/logger.js.map +1 -0
  291. package/dist/src/shared/logs.d.ts +53 -0
  292. package/dist/src/shared/logs.d.ts.map +1 -0
  293. package/dist/src/shared/logs.js +26 -0
  294. package/dist/src/shared/logs.js.map +1 -0
  295. package/dist/src/shared/process.d.ts +102 -0
  296. package/dist/src/shared/process.d.ts.map +1 -0
  297. package/dist/src/shared/process.js +55 -0
  298. package/dist/src/shared/process.js.map +1 -0
  299. package/dist/src/shared/types.d.ts +15 -0
  300. package/dist/src/shared/types.d.ts.map +1 -0
  301. package/dist/src/shared/types.js +8 -0
  302. package/dist/src/shared/types.js.map +1 -0
  303. package/dist/src/types/index.d.ts +19 -0
  304. package/dist/src/types/index.d.ts.map +1 -0
  305. package/dist/src/types/index.js +5 -0
  306. package/dist/src/types/index.js.map +1 -0
  307. package/dist/src/utils/event-cleanup.d.ts +30 -0
  308. package/dist/src/utils/event-cleanup.d.ts.map +1 -0
  309. package/dist/src/utils/event-cleanup.js +32 -0
  310. package/dist/src/utils/event-cleanup.js.map +1 -0
  311. package/dist/src/utils/memory/memory-monitor.d.ts +126 -0
  312. package/dist/src/utils/memory/memory-monitor.d.ts.map +1 -0
  313. package/dist/src/utils/memory/memory-monitor.js +246 -0
  314. package/dist/src/utils/memory/memory-monitor.js.map +1 -0
  315. package/package.json +74 -0
@@ -0,0 +1,129 @@
1
+ /**
2
+ * CLI Signal Handler - CLIプロセスのシグナル処理専門クラス
3
+ *
4
+ * t_wadaとUncle Bobの教えに従い、Single Responsibility Principleを適用。
5
+ * CLIプロセスのグレースフルシャットダウンを管理する。
6
+ */
7
+ /**
8
+ * CLI Signal Handler
9
+ *
10
+ * CLIプロセスのシグナル処理を管理し、適切なクリーンアップを実行する。
11
+ * デーモンのSignalHandlerとは異なり、CLIの短期実行プロセスに特化。
12
+ */
13
+ export class CLISignalHandler {
14
+ isShuttingDown = false;
15
+ forceExitTimeout;
16
+ asyncCleanupFn;
17
+ sigintHandler;
18
+ sigtermHandler;
19
+ /**
20
+ * Setup signal handlers with optional cleanup function
21
+ * @param asyncCleanup - Optional async cleanup function to call before exit
22
+ */
23
+ setup(asyncCleanup) {
24
+ this.asyncCleanupFn = asyncCleanup;
25
+ this.setupSignalHandlers();
26
+ }
27
+ /**
28
+ * Clean up signal handlers and timeouts
29
+ */
30
+ cleanup() {
31
+ // Remove signal listeners
32
+ if (this.sigintHandler) {
33
+ process.removeListener('SIGINT', this.sigintHandler);
34
+ this.sigintHandler = undefined;
35
+ }
36
+ if (this.sigtermHandler) {
37
+ process.removeListener('SIGTERM', this.sigtermHandler);
38
+ this.sigtermHandler = undefined;
39
+ }
40
+ // Clear timeout
41
+ if (this.forceExitTimeout) {
42
+ clearTimeout(this.forceExitTimeout);
43
+ this.forceExitTimeout = undefined;
44
+ }
45
+ }
46
+ /**
47
+ * Check if currently shutting down
48
+ */
49
+ isShutdownInProgress() {
50
+ return this.isShuttingDown;
51
+ }
52
+ /**
53
+ * Setup SIGINT and SIGTERM handlers
54
+ */
55
+ setupSignalHandlers() {
56
+ const handleSignal = async (signal) => {
57
+ if (this.isShuttingDown) {
58
+ // Already shutting down, ignore subsequent signals
59
+ return;
60
+ }
61
+ this.isShuttingDown = true;
62
+ console.log(`\\nReceived ${signal}, shutting down...`);
63
+ // Set force exit timeout (CLI should exit quickly)
64
+ this.forceExitTimeout = setTimeout(() => {
65
+ console.error('CLI cleanup timeout exceeded, forcing exit...');
66
+ process.exit(1);
67
+ }, 2000); // 2 seconds timeout for CLI
68
+ try {
69
+ // Execute async cleanup if provided
70
+ if (this.asyncCleanupFn) {
71
+ await this.asyncCleanupFn();
72
+ }
73
+ // Clean up signal handlers
74
+ this.cleanup();
75
+ // Exit successfully
76
+ process.exit(0);
77
+ }
78
+ catch (error) {
79
+ console.error('Error during cleanup:', error);
80
+ this.cleanup();
81
+ process.exit(1);
82
+ }
83
+ };
84
+ // Setup SIGINT handler (Ctrl+C)
85
+ this.sigintHandler = () => {
86
+ handleSignal('SIGINT').catch((error) => {
87
+ console.error('Error in SIGINT handler:', error);
88
+ process.exit(1);
89
+ });
90
+ };
91
+ process.on('SIGINT', this.sigintHandler);
92
+ // Setup SIGTERM handler
93
+ this.sigtermHandler = () => {
94
+ handleSignal('SIGTERM').catch((error) => {
95
+ console.error('Error in SIGTERM handler:', error);
96
+ process.exit(1);
97
+ });
98
+ };
99
+ process.on('SIGTERM', this.sigtermHandler);
100
+ }
101
+ }
102
+ // Global instance for CLI signal handling
103
+ let globalCliSignalHandler = null;
104
+ /**
105
+ * Setup global CLI signal handling
106
+ * @param asyncCleanup - Optional async cleanup function
107
+ */
108
+ export function setupGlobalCLISignalHandling(asyncCleanup) {
109
+ if (!globalCliSignalHandler) {
110
+ globalCliSignalHandler = new CLISignalHandler();
111
+ }
112
+ globalCliSignalHandler.setup(asyncCleanup);
113
+ }
114
+ /**
115
+ * Cleanup global CLI signal handling
116
+ */
117
+ export function cleanupGlobalCLISignalHandling() {
118
+ if (globalCliSignalHandler) {
119
+ globalCliSignalHandler.cleanup();
120
+ globalCliSignalHandler = null;
121
+ }
122
+ }
123
+ /**
124
+ * Check if global CLI signal handler is shutting down
125
+ */
126
+ export function isGlobalCLIShuttingDown() {
127
+ return globalCliSignalHandler?.isShutdownInProgress() ?? false;
128
+ }
129
+ //# sourceMappingURL=signal-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-handler.js","sourceRoot":"","sources":["../../../src/cli/signal-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Error handler utilities for CLI
3
+ *
4
+ * Provides enhanced error handling with verbose debugging support
5
+ */
6
+ import { ProcmanError } from '../../shared/errors.js';
7
+ /**
8
+ * Set verbose mode
9
+ */
10
+ export declare function setVerboseMode(enabled: boolean): void;
11
+ /**
12
+ * Get verbose mode status
13
+ */
14
+ export declare function isVerboseMode(): boolean;
15
+ /**
16
+ * Format error message with appropriate styling
17
+ */
18
+ export declare function formatError(error: Error | ProcmanError | unknown): string;
19
+ /**
20
+ * Get helpful suggestions based on error code
21
+ */
22
+ export declare function getErrorSuggestion(error: Error | ProcmanError | unknown): string | null;
23
+ /**
24
+ * Display verbose debug information
25
+ */
26
+ export declare function displayDebugInfo(context: string, data: unknown): void;
27
+ /**
28
+ * Handle CLI error and exit
29
+ */
30
+ export declare function handleCLIError(error: Error | ProcmanError | unknown, context?: string, exitCode?: number): void;
31
+ /**
32
+ * Check daemon connectivity and provide helpful message
33
+ */
34
+ export declare function checkDaemonConnectivity(): Promise<boolean>;
35
+ /**
36
+ * Wrap async function with error handling
37
+ */
38
+ export declare function wrapWithErrorHandler<T extends Array<unknown>>(fn: (...args: T) => Promise<void>, context: string): (...args: T) => Promise<void>;
39
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,YAAY,EAGb,MAAM,wBAAwB,CAAC;AAShC;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAErD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CASzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,OAAO,GACpC,MAAM,GAAG,IAAI,CAgEf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CA4CrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,OAAO,EACrC,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,SAAI,GACX,IAAI,CA0BN;AAED;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAkBhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EAC3D,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACjC,OAAO,EAAE,MAAM,GACd,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAQ/B"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Error handler utilities for CLI
3
+ *
4
+ * Provides enhanced error handling with verbose debugging support
5
+ */
6
+ import chalk from 'chalk';
7
+ import { ProcmanError, ERROR_MESSAGES, } from '../../shared/errors.js';
8
+ import * as fs from 'fs';
9
+ import * as os from 'os';
10
+ /**
11
+ * Global verbose flag
12
+ */
13
+ let verboseMode = false;
14
+ /**
15
+ * Set verbose mode
16
+ */
17
+ export function setVerboseMode(enabled) {
18
+ verboseMode = enabled;
19
+ }
20
+ /**
21
+ * Get verbose mode status
22
+ */
23
+ export function isVerboseMode() {
24
+ return verboseMode;
25
+ }
26
+ /**
27
+ * Format error message with appropriate styling
28
+ */
29
+ export function formatError(error) {
30
+ if (error instanceof ProcmanError) {
31
+ const message = ERROR_MESSAGES[error.code] || error.message;
32
+ return `${chalk.red('Error:')} [${error.code}] ${message}`;
33
+ }
34
+ else if (error instanceof Error) {
35
+ return `${chalk.red('Error:')} ${error.message}`;
36
+ }
37
+ else {
38
+ return `${chalk.red('Error:')} ${String(error)}`;
39
+ }
40
+ }
41
+ /**
42
+ * Get helpful suggestions based on error code
43
+ */
44
+ export function getErrorSuggestion(error) {
45
+ if (!(error instanceof ProcmanError)) {
46
+ if (error instanceof Error) {
47
+ // Check for common Node.js errors
48
+ if (error.message.includes('ENOENT')) {
49
+ return 'File or directory not found. Check the path and try again.';
50
+ }
51
+ else if (error.message.includes('EACCES') ||
52
+ error.message.includes('EPERM')) {
53
+ return 'Permission denied. Try running with appropriate permissions or check file ownership.';
54
+ }
55
+ else if (error.message.includes('EADDRINUSE')) {
56
+ return 'Port or socket already in use. Check if another instance is running.';
57
+ }
58
+ else if (error.message.includes('ECONNREFUSED')) {
59
+ return 'Connection refused. Make sure the daemon is running: procman load <config>';
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ switch (error.code) {
65
+ case 'DAEMON_NOT_RUNNING':
66
+ return `The daemon is not running. Start it with: ${chalk.cyan('procman load <config-file>')}`;
67
+ case 'DAEMON_ALREADY_RUNNING':
68
+ return `A daemon is already running. Stop it first with: ${chalk.cyan('procman exit')}`;
69
+ case 'CONFIG_NOT_FOUND':
70
+ return 'Configuration file not found. Check the file path and ensure it exists.';
71
+ case 'CONFIG_INVALID':
72
+ return 'Invalid configuration format. Check the configuration syntax and required fields.';
73
+ case 'PROCESS_NOT_FOUND':
74
+ return `Process not found. List available processes with: ${chalk.cyan('procman list')}`;
75
+ case 'PROCESS_ALREADY_RUNNING':
76
+ return 'Process is already running. No action needed.';
77
+ case 'PROCESS_NOT_RUNNING':
78
+ return 'Process is not running. Start it first before attempting this operation.';
79
+ case 'PERMISSION_DENIED':
80
+ if (os.platform() === 'win32') {
81
+ return 'Permission denied. Check Named Pipe permissions in Windows.';
82
+ }
83
+ else {
84
+ return `Permission denied. Check socket permissions at ${chalk.yellow('/tmp/.procman.sock')}`;
85
+ }
86
+ case 'IPC_CONNECTION_FAILED':
87
+ return 'Failed to connect to daemon. Ensure the daemon is running and accessible.';
88
+ case 'IPC_TIMEOUT':
89
+ return 'Connection timed out. The daemon might be overloaded or not responding.';
90
+ case 'MEMORY_LIMIT_EXCEEDED':
91
+ return 'Process exceeded memory limit. Increase max_memory_restart in config or optimize the application.';
92
+ case 'VALIDATION_ERROR':
93
+ return 'Invalid input. Check command syntax and required parameters.';
94
+ default:
95
+ return null;
96
+ }
97
+ }
98
+ /**
99
+ * Display verbose debug information
100
+ */
101
+ export function displayDebugInfo(context, data) {
102
+ if (!verboseMode)
103
+ return;
104
+ console.log(chalk.gray('\n--- Debug Information ---'));
105
+ console.log(chalk.gray(`Context: ${context}`));
106
+ console.log(chalk.gray(`Timestamp: ${new Date().toISOString()}`));
107
+ if (data instanceof Error) {
108
+ console.log(chalk.gray('Error Type:'), data.constructor.name);
109
+ console.log(chalk.gray('Message:'), data.message);
110
+ if (data.stack) {
111
+ console.log(chalk.gray('Stack Trace:'));
112
+ const stackLines = data.stack.split('\n').slice(1, 6); // Show first 5 stack frames
113
+ for (const line of stackLines) {
114
+ console.log(chalk.gray(line));
115
+ }
116
+ }
117
+ }
118
+ else if (typeof data === 'object' && data !== null) {
119
+ console.log(chalk.gray('Data:'), JSON.stringify(data, null, 2));
120
+ }
121
+ else {
122
+ console.log(chalk.gray('Data:'), data);
123
+ }
124
+ // System information
125
+ console.log(chalk.gray('\n--- System Information ---'));
126
+ console.log(chalk.gray('Platform:'), os.platform());
127
+ console.log(chalk.gray('Node Version:'), process.version);
128
+ console.log(chalk.gray('Working Directory:'), process.cwd());
129
+ // Check daemon status
130
+ const socketPath = os.platform() === 'win32' ? '\\\\.\\pipe\\procman' : '/tmp/.procman.sock';
131
+ if (os.platform() !== 'win32') {
132
+ try {
133
+ const stats = fs.statSync(socketPath);
134
+ console.log(chalk.gray('Socket Exists:'), 'Yes');
135
+ console.log(chalk.gray('Socket Mode:'), stats.mode.toString(8));
136
+ }
137
+ catch {
138
+ console.log(chalk.gray('Socket Exists:'), 'No');
139
+ }
140
+ }
141
+ console.log(chalk.gray('-------------------------\n'));
142
+ }
143
+ /**
144
+ * Handle CLI error and exit
145
+ */
146
+ export function handleCLIError(error, context, exitCode = 1) {
147
+ // Display main error
148
+ console.error(formatError(error));
149
+ // Display suggestion if available
150
+ const suggestion = getErrorSuggestion(error);
151
+ if (suggestion) {
152
+ console.log(chalk.yellow('\n💡 Suggestion:'), suggestion);
153
+ }
154
+ // Display debug information in verbose mode
155
+ if (verboseMode && context) {
156
+ displayDebugInfo(context, error);
157
+ }
158
+ else if (verboseMode) {
159
+ displayDebugInfo('Unknown Context', error);
160
+ }
161
+ // Suggest using verbose mode if not enabled
162
+ if (!verboseMode) {
163
+ console.log(chalk.gray('\nFor more details, run the command with'), chalk.cyan('--verbose'));
164
+ }
165
+ process.exit(exitCode);
166
+ }
167
+ /**
168
+ * Check daemon connectivity and provide helpful message
169
+ */
170
+ export async function checkDaemonConnectivity() {
171
+ const socketPath = os.platform() === 'win32' ? '\\\\.\\pipe\\procman' : '/tmp/.procman.sock';
172
+ if (os.platform() !== 'win32') {
173
+ try {
174
+ fs.accessSync(socketPath, fs.constants.R_OK | fs.constants.W_OK);
175
+ return true;
176
+ }
177
+ catch (error) {
178
+ if (verboseMode) {
179
+ displayDebugInfo('Daemon Connectivity Check', error);
180
+ }
181
+ return false;
182
+ }
183
+ }
184
+ // For Windows, we'll assume it's accessible if we can't check
185
+ return true;
186
+ }
187
+ /**
188
+ * Wrap async function with error handling
189
+ */
190
+ export function wrapWithErrorHandler(fn, context) {
191
+ return async (...args) => {
192
+ try {
193
+ await fn(...args);
194
+ }
195
+ catch (error) {
196
+ handleCLIError(error, context);
197
+ }
198
+ };
199
+ }
200
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../../src/cli/utils/error-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Error utilities for CLI commands
3
+ */
4
+ /**
5
+ * Handle CLI errors with proper type safety
6
+ */
7
+ export declare function handleCLIError(error: unknown, defaultMessage?: string): never;
8
+ /**
9
+ * Extract error message from unknown error
10
+ */
11
+ export declare function getErrorMessage(error: unknown): string;
12
+ /**
13
+ * Type guard for Error objects
14
+ */
15
+ export declare function isError(error: unknown): error is Error;
16
+ //# sourceMappingURL=error-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/error-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,cAAc,SAAsB,GACnC,KAAK,CAeP;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUtD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEtD"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Error utilities for CLI commands
3
+ */
4
+ import chalk from 'chalk';
5
+ /**
6
+ * Handle CLI errors with proper type safety
7
+ */
8
+ export function handleCLIError(error, defaultMessage = 'An error occurred') {
9
+ let errorMessage;
10
+ if (error instanceof Error) {
11
+ errorMessage = error.message;
12
+ }
13
+ else if (typeof error === 'string') {
14
+ errorMessage = error;
15
+ }
16
+ else if (error && typeof error === 'object' && 'message' in error) {
17
+ errorMessage = String(error.message);
18
+ }
19
+ else {
20
+ errorMessage = defaultMessage;
21
+ }
22
+ console.error(chalk.red('Error:'), errorMessage);
23
+ process.exit(1);
24
+ }
25
+ /**
26
+ * Extract error message from unknown error
27
+ */
28
+ export function getErrorMessage(error) {
29
+ if (error instanceof Error) {
30
+ return error.message;
31
+ }
32
+ else if (typeof error === 'string') {
33
+ return error;
34
+ }
35
+ else if (error && typeof error === 'object' && 'message' in error) {
36
+ return String(error.message);
37
+ }
38
+ else {
39
+ return 'Unknown error';
40
+ }
41
+ }
42
+ /**
43
+ * Type guard for Error objects
44
+ */
45
+ export function isError(error) {
46
+ return error instanceof Error;
47
+ }
48
+ //# sourceMappingURL=error-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../../../../src/cli/utils/error-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAc,EACd,cAAc,GAAG,mBAAmB;IAEpC,IAAI,YAAoB,CAAC;IAEzB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACpE,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACpE,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * IPC Client Utility for CLI Commands
3
+ *
4
+ * Provides a unified interface for CLI commands to communicate with the daemon
5
+ * through IPC (Inter-Process Communication).
6
+ */
7
+ import { IPCClientBase } from '../../daemon/ipc-client-base.js';
8
+ import { CommandType, IPCResponse, IPCCommandPayloadMap, ResponseData } from '../../shared/ipc.js';
9
+ /**
10
+ * CLI IPC Client
11
+ * Manages IPC connection and communication with the daemon
12
+ */
13
+ export declare class CLIIPCClient {
14
+ private client;
15
+ private isConnected;
16
+ /**
17
+ * Connect to the daemon
18
+ * @param timeout Connection timeout in milliseconds (default: 5000)
19
+ */
20
+ connect(timeout?: number): Promise<void>;
21
+ /**
22
+ * Send a command to the daemon and wait for response
23
+ * @param command The command type to send
24
+ * @param payload The command payload
25
+ * @returns The response from the daemon
26
+ */
27
+ sendCommand<T extends CommandType>(command: T, payload?: IPCCommandPayloadMap[T]): Promise<IPCResponse<ResponseData>>;
28
+ /**
29
+ * Disconnect from the daemon
30
+ */
31
+ disconnect(): Promise<void>;
32
+ /**
33
+ * Check if client is connected
34
+ */
35
+ isClientConnected(): boolean;
36
+ /**
37
+ * Get the underlying IPC client for event handling
38
+ * Used for streaming operations that need direct event access
39
+ */
40
+ getInternalClient(): IPCClientBase | null;
41
+ /**
42
+ * Handle connection errors
43
+ */
44
+ private handleConnectionError;
45
+ /**
46
+ * Handle command execution errors
47
+ */
48
+ private handleCommandError;
49
+ /**
50
+ * Handle error response from daemon
51
+ */
52
+ private handleErrorResponse;
53
+ }
54
+ /**
55
+ * Create a new CLI IPC client instance
56
+ */
57
+ export declare function createCLIClient(): CLIIPCClient;
58
+ /**
59
+ * Execute a command with automatic connection management
60
+ * @param command The command type
61
+ * @param payload The command payload
62
+ * @param options Execution options
63
+ */
64
+ export declare function executeCommand<T extends CommandType>(command: T, payload?: IPCCommandPayloadMap[T], options?: {
65
+ timeout?: number;
66
+ }): Promise<IPCResponse<ResponseData>>;
67
+ /**
68
+ * Parse namespace:target format
69
+ * @param target Target string (e.g., "app:worker")
70
+ * @returns Parsed namespace and name
71
+ */
72
+ export declare function parseTarget(target: string): {
73
+ namespace?: string;
74
+ name: string;
75
+ };
76
+ /**
77
+ * Format process info for display
78
+ */
79
+ export declare function formatProcessInfo(info: any): string;
80
+ //# sourceMappingURL=ipc-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-client.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/ipc-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAS7B;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAS;IAE5B;;;OAGG;IACG,OAAO,CAAC,OAAO,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA4F5C;;;;;OAKG;IACG,WAAW,CAAC,CAAC,SAAS,WAAW,EACrC,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IA8BrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;;OAGG;IACH,iBAAiB,IAAI,aAAa,GAAG,IAAI;IAIzC;;OAEG;IAEH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;IAEH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAa5B;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,WAAW,EACxD,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EACjC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAmCpC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAMA;AAED;;GAEG;AAEH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CASnD"}