@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,92 @@
1
+ /**
2
+ * IPC Factory
3
+ *
4
+ * Factory class for creating appropriate IPC server/client instances
5
+ * based on the current platform (Unix Domain Socket for Unix-like systems,
6
+ * Named Pipe for Windows).
7
+ */
8
+ import { IPCServerBase } from './ipc-server-base.js';
9
+ import { IPCClientBase } from './ipc-client-base.js';
10
+ import type { IPCServerConfig, IPCClientConfig } from '../shared/ipc.js';
11
+ import { PLATFORM_CONSTANTS } from '../shared/constants.js';
12
+ /**
13
+ * Platform types
14
+ */
15
+ export type Platform = 'unix' | 'windows';
16
+ /**
17
+ * IPC Factory class
18
+ */
19
+ export declare class IPCFactory {
20
+ /**
21
+ * Get current platform
22
+ */
23
+ static getCurrentPlatform(): Platform;
24
+ /**
25
+ * Create an IPC server for the current platform
26
+ */
27
+ static createServer(config?: IPCServerConfig): IPCServerBase;
28
+ /**
29
+ * Create an IPC client for the current platform
30
+ */
31
+ static createClient(config?: IPCClientConfig): IPCClientBase;
32
+ /**
33
+ * Create an IPC server for a specific platform
34
+ */
35
+ static createServerForPlatform(platform: Platform, config?: IPCServerConfig): IPCServerBase;
36
+ /**
37
+ * Create an IPC client for a specific platform
38
+ */
39
+ static createClientForPlatform(platform: Platform, config?: IPCClientConfig): IPCClientBase;
40
+ /**
41
+ * Get default IPC path for the current platform
42
+ */
43
+ static getDefaultIPCPath(): string;
44
+ /**
45
+ * Get default IPC path for a specific platform
46
+ */
47
+ static getDefaultIPCPathForPlatform(platform: Platform): string;
48
+ /**
49
+ * Check if the current platform supports IPC
50
+ */
51
+ static isPlatformSupported(): boolean;
52
+ /**
53
+ * Check if a specific platform supports IPC
54
+ */
55
+ static isPlatformSupportedForPlatform(platform: Platform): boolean;
56
+ /**
57
+ * Get platform-specific constants
58
+ */
59
+ static getPlatformConstants(platform?: Platform): typeof PLATFORM_CONSTANTS.UNIX | typeof PLATFORM_CONSTANTS.WINDOWS;
60
+ /**
61
+ * Expand tilde in file paths
62
+ */
63
+ private static expandPath;
64
+ /**
65
+ * Merge user config with platform defaults
66
+ */
67
+ private static mergeConfigWithDefaults;
68
+ }
69
+ /**
70
+ * Convenience functions for creating IPC instances
71
+ */
72
+ /**
73
+ * Create an IPC server for the current platform
74
+ */
75
+ export declare function createIPCServer(config?: IPCServerConfig): IPCServerBase;
76
+ /**
77
+ * Create an IPC client for the current platform
78
+ */
79
+ export declare function createIPCClient(config?: IPCClientConfig): IPCClientBase;
80
+ /**
81
+ * Get the default IPC path for the current platform
82
+ */
83
+ export declare function getDefaultIPCPath(): string;
84
+ /**
85
+ * Check if IPC is supported on the current platform
86
+ */
87
+ export declare function isIPCSupported(): boolean;
88
+ /**
89
+ * Get current platform type
90
+ */
91
+ export declare function getCurrentPlatform(): Platform;
92
+ //# sourceMappingURL=ipc-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-factory.d.ts","sourceRoot":"","sources":["../../../src/daemon/ipc-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,QAAQ;IAIrC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,GAAE,eAA8B,GAAG,aAAa;IAK1E;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,GAAE,eAA8B,GAAG,aAAa;IAK1E;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,eAA8B,GACrC,aAAa;IAahB;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,eAA8B,GACrC,aAAa;IAahB;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAmClC;;OAEG;IACH,MAAM,CAAC,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAW/D;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,OAAO;IAIrC;;OAEG;IACH,MAAM,CAAC,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIlE;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,kBAAkB,CAAC,IAAI,GAAG,OAAO,kBAAkB,CAAC,OAAO;IAarE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IA8CzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAoBvC;AAED;;GAEG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,aAAa,CAEvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,aAAa,CAEvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAE7C"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * IPC Factory
3
+ *
4
+ * Factory class for creating appropriate IPC server/client instances
5
+ * based on the current platform (Unix Domain Socket for Unix-like systems,
6
+ * Named Pipe for Windows).
7
+ */
8
+ import * as os from 'os';
9
+ import * as path from 'path';
10
+ import { UnixSocketServer } from './unix-socket-server.js';
11
+ import { UnixSocketClient } from './unix-socket-client.js';
12
+ import { NamedPipeServer } from './named-pipe-server.js';
13
+ import { NamedPipeClient } from './named-pipe-client.js';
14
+ import { PLATFORM_CONSTANTS } from '../shared/constants.js';
15
+ /**
16
+ * IPC Factory class
17
+ */
18
+ export class IPCFactory {
19
+ /**
20
+ * Get current platform
21
+ */
22
+ static getCurrentPlatform() {
23
+ return os.platform() === 'win32' ? 'windows' : 'unix';
24
+ }
25
+ /**
26
+ * Create an IPC server for the current platform
27
+ */
28
+ static createServer(config = { path: '' }) {
29
+ const platform = this.getCurrentPlatform();
30
+ return this.createServerForPlatform(platform, config);
31
+ }
32
+ /**
33
+ * Create an IPC client for the current platform
34
+ */
35
+ static createClient(config = { path: '' }) {
36
+ const platform = this.getCurrentPlatform();
37
+ return this.createClientForPlatform(platform, config);
38
+ }
39
+ /**
40
+ * Create an IPC server for a specific platform
41
+ */
42
+ static createServerForPlatform(platform, config = { path: '' }) {
43
+ const mergedConfig = this.mergeConfigWithDefaults(platform, config);
44
+ switch (platform) {
45
+ case 'unix':
46
+ return new UnixSocketServer(mergedConfig);
47
+ case 'windows':
48
+ return new NamedPipeServer(mergedConfig);
49
+ default:
50
+ throw new Error(`Unsupported platform: ${platform}`);
51
+ }
52
+ }
53
+ /**
54
+ * Create an IPC client for a specific platform
55
+ */
56
+ static createClientForPlatform(platform, config = { path: '' }) {
57
+ const mergedConfig = this.mergeConfigWithDefaults(platform, config);
58
+ switch (platform) {
59
+ case 'unix':
60
+ return new UnixSocketClient(mergedConfig);
61
+ case 'windows':
62
+ return new NamedPipeClient(mergedConfig);
63
+ default:
64
+ throw new Error(`Unsupported platform: ${platform}`);
65
+ }
66
+ }
67
+ /**
68
+ * Get default IPC path for the current platform
69
+ */
70
+ static getDefaultIPCPath() {
71
+ console.error('[DEBUG-IPC-FACTORY] Getting default IPC path...');
72
+ console.error('[DEBUG-IPC-FACTORY] Environment check:', JSON.stringify({
73
+ PROCMAN_SOCKET_PATH: process.env.PROCMAN_SOCKET_PATH,
74
+ HOME: process.env.HOME,
75
+ USERPROFILE: process.env.USERPROFILE,
76
+ platform: this.getCurrentPlatform(),
77
+ processId: process.pid,
78
+ }, null, 2));
79
+ // Check for environment variable first
80
+ if (process.env.PROCMAN_SOCKET_PATH) {
81
+ console.error('[DEBUG-IPC-FACTORY] Using PROCMAN_SOCKET_PATH from environment:', process.env.PROCMAN_SOCKET_PATH);
82
+ return process.env.PROCMAN_SOCKET_PATH;
83
+ }
84
+ const platform = this.getCurrentPlatform();
85
+ const defaultPath = this.getDefaultIPCPathForPlatform(platform);
86
+ console.error('[DEBUG-IPC-FACTORY] Using default platform path:', defaultPath);
87
+ return defaultPath;
88
+ }
89
+ /**
90
+ * Get default IPC path for a specific platform
91
+ */
92
+ static getDefaultIPCPathForPlatform(platform) {
93
+ switch (platform) {
94
+ case 'unix':
95
+ return PLATFORM_CONSTANTS.UNIX.IPC_PATH;
96
+ case 'windows':
97
+ return PLATFORM_CONSTANTS.WINDOWS.IPC_PATH;
98
+ default:
99
+ throw new Error(`Unsupported platform: ${platform}`);
100
+ }
101
+ }
102
+ /**
103
+ * Check if the current platform supports IPC
104
+ */
105
+ static isPlatformSupported() {
106
+ return this.isPlatformSupportedForPlatform(this.getCurrentPlatform());
107
+ }
108
+ /**
109
+ * Check if a specific platform supports IPC
110
+ */
111
+ static isPlatformSupportedForPlatform(platform) {
112
+ return platform === 'unix' || platform === 'windows';
113
+ }
114
+ /**
115
+ * Get platform-specific constants
116
+ */
117
+ static getPlatformConstants(platform) {
118
+ const targetPlatform = platform || this.getCurrentPlatform();
119
+ switch (targetPlatform) {
120
+ case 'unix':
121
+ return PLATFORM_CONSTANTS.UNIX;
122
+ case 'windows':
123
+ return PLATFORM_CONSTANTS.WINDOWS;
124
+ default:
125
+ throw new Error(`Unsupported platform: ${targetPlatform}`);
126
+ }
127
+ }
128
+ /**
129
+ * Expand tilde in file paths
130
+ */
131
+ static expandPath(filePath) {
132
+ console.error('[DEBUG-IPC-FACTORY] Expanding path:', filePath);
133
+ if (filePath.startsWith('~/')) {
134
+ // Enhanced HOME detection: process.env.HOME || os.homedir()
135
+ const envHome = process.env.HOME;
136
+ const osHome = os.homedir();
137
+ const homeDir = envHome || osHome;
138
+ console.error('[DEBUG-IPC-FACTORY] Home directory resolution:', JSON.stringify({
139
+ originalPath: filePath,
140
+ envHome: envHome,
141
+ osHome: osHome,
142
+ selectedHome: homeDir,
143
+ processId: process.pid,
144
+ }, null, 2));
145
+ if (!homeDir) {
146
+ console.error('[DEBUG-IPC-FACTORY] ❌ Unable to resolve home directory');
147
+ throw new Error('Unable to resolve home directory for path expansion');
148
+ }
149
+ const expandedPath = path.join(homeDir, filePath.slice(2));
150
+ console.error('[DEBUG-IPC-FACTORY] Path expanded successfully:', expandedPath);
151
+ return expandedPath;
152
+ }
153
+ console.error('[DEBUG-IPC-FACTORY] Path does not need expansion:', filePath);
154
+ return filePath;
155
+ }
156
+ /**
157
+ * Merge user config with platform defaults
158
+ */
159
+ static mergeConfigWithDefaults(platform, config) {
160
+ const defaultPath = this.getDefaultIPCPathForPlatform(platform);
161
+ if (platform === 'unix') {
162
+ const socketPath = config.path || config.socketPath || defaultPath;
163
+ return {
164
+ socketPath: this.expandPath(socketPath),
165
+ ...config,
166
+ };
167
+ }
168
+ else {
169
+ const namedPipePath = config.path || config.namedPipePath || defaultPath;
170
+ return {
171
+ namedPipePath: namedPipePath, // Named pipes don't need path expansion
172
+ ...config,
173
+ };
174
+ }
175
+ }
176
+ }
177
+ /**
178
+ * Convenience functions for creating IPC instances
179
+ */
180
+ /**
181
+ * Create an IPC server for the current platform
182
+ */
183
+ export function createIPCServer(config) {
184
+ return IPCFactory.createServer(config);
185
+ }
186
+ /**
187
+ * Create an IPC client for the current platform
188
+ */
189
+ export function createIPCClient(config) {
190
+ return IPCFactory.createClient(config);
191
+ }
192
+ /**
193
+ * Get the default IPC path for the current platform
194
+ */
195
+ export function getDefaultIPCPath() {
196
+ return IPCFactory.getDefaultIPCPath();
197
+ }
198
+ /**
199
+ * Check if IPC is supported on the current platform
200
+ */
201
+ export function isIPCSupported() {
202
+ return IPCFactory.isPlatformSupported();
203
+ }
204
+ /**
205
+ * Get current platform type
206
+ */
207
+ export function getCurrentPlatform() {
208
+ return IPCFactory.getCurrentPlatform();
209
+ }
210
+ //# sourceMappingURL=ipc-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-factory.js","sourceRoot":"","sources":["../../../src/daemon/ipc-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * IPC Server Base Implementation
3
+ *
4
+ * Abstract base class for IPC server implementations.
5
+ * Provides common functionality for both Unix Domain Socket and Named Pipe servers.
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ import { SimpleDisposableBase } from './simple-resource-manager.js';
9
+ import type { IPCMessage, IPCCommandMessage, IPCResponse, IPCServerConfig, IPCConnection, IPCServerEvents, CommandType } from '../shared/ipc.js';
10
+ /**
11
+ * Message handler function type
12
+ */
13
+ export type MessageHandler = (message: IPCCommandMessage, connection: IPCConnection) => Promise<IPCResponse | void>;
14
+ /**
15
+ * Mapped type for command-specific handlers
16
+ */
17
+ export type CommandHandlerMap = {
18
+ [K in CommandType]: MessageHandler;
19
+ };
20
+ /**
21
+ * Type-safe message handler registry
22
+ */
23
+ export interface MessageHandlerRegistry {
24
+ register(commandType: CommandType, handler: MessageHandler): void;
25
+ unregister(commandType: CommandType): void;
26
+ get(commandType: CommandType): MessageHandler | undefined;
27
+ has(commandType: CommandType): boolean;
28
+ clear(): void;
29
+ }
30
+ /**
31
+ * Abstract base class for IPC servers
32
+ */
33
+ export declare abstract class IPCServerBase extends SimpleDisposableBase {
34
+ protected config: Required<IPCServerConfig>;
35
+ protected connections: Map<string, IPCConnection>;
36
+ protected messageHandlers: Map<string, MessageHandler>;
37
+ protected isListening: boolean;
38
+ protected serverInstance: EventEmitter | null;
39
+ private eventEmitter;
40
+ constructor(config?: IPCServerConfig);
41
+ /**
42
+ * Start the IPC server
43
+ */
44
+ start(): Promise<void>;
45
+ /**
46
+ * Stop the IPC server
47
+ */
48
+ stop(): Promise<void>;
49
+ /**
50
+ * Register a message handler for a specific command type
51
+ */
52
+ registerHandler(commandType: CommandType, handler: MessageHandler): void;
53
+ /**
54
+ * Unregister a message handler
55
+ */
56
+ unregisterHandler(commandType: CommandType): void;
57
+ /**
58
+ * Get a message handler for a specific command type
59
+ */
60
+ getHandler(commandType: CommandType): MessageHandler | undefined;
61
+ /**
62
+ * Check if a handler is registered for a command type
63
+ */
64
+ hasHandler(commandType: CommandType): boolean;
65
+ /**
66
+ * Clear all message handlers
67
+ */
68
+ clearHandlers(): void;
69
+ /**
70
+ * Get all active connections
71
+ */
72
+ getConnections(): IPCConnection[];
73
+ /**
74
+ * Get connection by ID
75
+ */
76
+ getConnection(id: string): IPCConnection | undefined;
77
+ /**
78
+ * Check if server is listening
79
+ */
80
+ isServerListening(): boolean;
81
+ /**
82
+ * Broadcast message to all connections
83
+ */
84
+ broadcast(message: IPCMessage): Promise<void>;
85
+ /**
86
+ * Handle incoming message from a connection
87
+ */
88
+ handleMessage(data: Buffer, connection: IPCConnection): Promise<void>;
89
+ /**
90
+ * Parse multiple JSON messages from buffer
91
+ * Addresses the PoC issue with consecutive message parsing
92
+ */
93
+ protected parseMessages(data: Buffer): unknown[];
94
+ /**
95
+ * Handle concatenated JSON objects in a single line
96
+ * Uses simplified regex approach consistent with message-protocol.ts
97
+ */
98
+ private handleConcatenatedJSON;
99
+ /**
100
+ * Process a single parsed message
101
+ */
102
+ protected processMessage(messageData: unknown, connection: IPCConnection): Promise<void>;
103
+ /**
104
+ * Validate IPC message structure
105
+ */
106
+ protected isValidIPCMessage(obj: unknown): obj is IPCMessage;
107
+ /**
108
+ * Handle new connection
109
+ */
110
+ handleConnection(connection: IPCConnection): void;
111
+ /**
112
+ * Set up event handlers for a connection
113
+ */
114
+ protected setupConnectionHandlers(connection: IPCConnection): void;
115
+ /**
116
+ * Set up connection events for socket-based connections
117
+ * Common logic for Unix Socket and Named Pipe connections
118
+ */
119
+ protected setupConnectionEvents(connection: IPCConnection): void;
120
+ /**
121
+ * Set up common server events for net.Server instances
122
+ * Common logic for Unix Socket and Named Pipe servers
123
+ */
124
+ protected setupCommonServerEvents(server: EventEmitter): void;
125
+ /**
126
+ * Implement disposal core for DisposableBase
127
+ */
128
+ protected disposeCore(): void;
129
+ /**
130
+ * Get current resource usage statistics
131
+ */
132
+ getResourceStats(): {
133
+ activeConnections: number;
134
+ messageHandlers: number;
135
+ eventListeners: number;
136
+ totalResources: number;
137
+ isListening: boolean;
138
+ };
139
+ /**
140
+ * TypedEventEmitter implementation methods
141
+ */
142
+ on<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
143
+ once<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
144
+ emit<K extends keyof IPCServerEvents>(event: K, ...args: Parameters<IPCServerEvents[K]>): boolean;
145
+ removeListener<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
146
+ off<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
147
+ removeAllListeners<K extends keyof IPCServerEvents>(event?: K): this;
148
+ setMaxListeners(n: number): this;
149
+ getMaxListeners(): number;
150
+ listeners<K extends keyof IPCServerEvents>(event: K): ((...args: any[]) => void)[];
151
+ listenerCount<K extends keyof IPCServerEvents>(event: K): number;
152
+ /**
153
+ * Abstract methods to be implemented by subclasses
154
+ */
155
+ protected abstract startServer(): Promise<void>;
156
+ protected abstract stopServer(): Promise<void>;
157
+ }
158
+ //# sourceMappingURL=ipc-server-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-server-base.d.ts","sourceRoot":"","sources":["../../../src/daemon/ipc-server-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAI1B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,aAAa,KACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,WAAW,GAAG,cAAc;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAClE,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3C,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;IAC1D,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;IACvC,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,8BAAsB,aAAc,SAAQ,oBAAoB;IAC9D,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC5C,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;IAC9D,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IACnE,SAAS,CAAC,WAAW,UAAS;IAC9B,SAAS,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAQ;IACrD,OAAO,CAAC,YAAY,CAAsB;gBAE9B,MAAM,GAAE,eAA8B;IAclD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C3B;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAIxE;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAIjD;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS;IAIhE;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAI7C;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIpD;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnD;;OAEG;IACU,aAAa,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC;IAkDhB;;;OAGG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;IAqBhD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;cACa,cAAc,CAC5B,WAAW,EAAE,OAAO,EACpB,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC;IA+EhB;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU;IAsB5D;;OAEG;IACI,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IAUxD;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IA4BlE;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IAiBhE;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAc7D;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAqC7B;;OAEG;IACH,gBAAgB,IAAI;QAClB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;KACtB;IAcD;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,eAAe,EAChC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,IAAI;IAMP,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,EAClC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,IAAI;IAMP,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,EAClC,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACtC,OAAO;IAIV,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,EAC5C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,IAAI;IAMP,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EACjC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,IAAI;IAIP,kBAAkB,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAKpE,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhC,eAAe,IAAI,MAAM;IAIzB,SAAS,CAAC,CAAC,SAAS,MAAM,eAAe,EACvC,KAAK,EAAE,CAAC,GACP,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE;IAM/B,aAAa,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM;IAIhE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/C"}