ee-core 5.0.0-beta.2 → 5.0.0-beta.6

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 (454) hide show
  1. package/README.md +178 -0
  2. package/dist/cjs/app/application.d.ts +36 -1
  3. package/dist/cjs/app/application.d.ts.map +1 -1
  4. package/dist/cjs/app/application.js +49 -2
  5. package/dist/cjs/app/application.js.map +1 -1
  6. package/dist/cjs/app/boot.d.ts +56 -1
  7. package/dist/cjs/app/boot.d.ts.map +1 -1
  8. package/dist/cjs/app/boot.js +74 -11
  9. package/dist/cjs/app/boot.js.map +1 -1
  10. package/dist/cjs/app/dir.d.ts +10 -0
  11. package/dist/cjs/app/dir.d.ts.map +1 -1
  12. package/dist/cjs/app/dir.js +71 -10
  13. package/dist/cjs/app/dir.js.map +1 -1
  14. package/dist/cjs/app/events.d.ts +58 -2
  15. package/dist/cjs/app/events.d.ts.map +1 -1
  16. package/dist/cjs/app/events.js +92 -12
  17. package/dist/cjs/app/events.js.map +1 -1
  18. package/dist/cjs/config/config_loader.d.ts +44 -0
  19. package/dist/cjs/config/config_loader.d.ts.map +1 -1
  20. package/dist/cjs/config/config_loader.js +82 -1
  21. package/dist/cjs/config/config_loader.js.map +1 -1
  22. package/dist/cjs/config/default_config.d.ts +5 -0
  23. package/dist/cjs/config/default_config.d.ts.map +1 -1
  24. package/dist/cjs/config/default_config.js +98 -11
  25. package/dist/cjs/config/default_config.js.map +1 -1
  26. package/dist/cjs/config/index.d.ts +31 -1
  27. package/dist/cjs/config/index.d.ts.map +1 -1
  28. package/dist/cjs/config/index.js +52 -0
  29. package/dist/cjs/config/index.js.map +1 -1
  30. package/dist/cjs/const/channel.d.ts +17 -0
  31. package/dist/cjs/const/channel.d.ts.map +1 -1
  32. package/dist/cjs/const/channel.js +17 -0
  33. package/dist/cjs/const/channel.js.map +1 -1
  34. package/dist/cjs/controller/controller_loader.d.ts +20 -1
  35. package/dist/cjs/controller/controller_loader.d.ts.map +1 -1
  36. package/dist/cjs/controller/controller_loader.js +89 -9
  37. package/dist/cjs/controller/controller_loader.js.map +1 -1
  38. package/dist/cjs/controller/index.d.ts +32 -0
  39. package/dist/cjs/controller/index.d.ts.map +1 -1
  40. package/dist/cjs/controller/index.js +66 -0
  41. package/dist/cjs/controller/index.js.map +1 -1
  42. package/dist/cjs/core/loader/file_loader.d.ts +77 -27
  43. package/dist/cjs/core/loader/file_loader.d.ts.map +1 -1
  44. package/dist/cjs/core/loader/file_loader.js +239 -75
  45. package/dist/cjs/core/loader/file_loader.js.map +1 -1
  46. package/dist/cjs/core/utils/index.d.ts +57 -2
  47. package/dist/cjs/core/utils/index.d.ts.map +1 -1
  48. package/dist/cjs/core/utils/index.js +120 -12
  49. package/dist/cjs/core/utils/index.js.map +1 -1
  50. package/dist/cjs/core/utils/timing.d.ts +47 -0
  51. package/dist/cjs/core/utils/timing.d.ts.map +1 -1
  52. package/dist/cjs/core/utils/timing.js +42 -2
  53. package/dist/cjs/core/utils/timing.js.map +1 -1
  54. package/dist/cjs/cross/cross.d.ts +81 -2
  55. package/dist/cjs/cross/cross.d.ts.map +1 -1
  56. package/dist/cjs/cross/cross.js +86 -16
  57. package/dist/cjs/cross/cross.js.map +1 -1
  58. package/dist/cjs/cross/crossProcess.d.ts +85 -14
  59. package/dist/cjs/cross/crossProcess.d.ts.map +1 -1
  60. package/dist/cjs/cross/crossProcess.js +85 -13
  61. package/dist/cjs/cross/crossProcess.js.map +1 -1
  62. package/dist/cjs/electron/app/index.d.ts +17 -1
  63. package/dist/cjs/electron/app/index.d.ts.map +1 -1
  64. package/dist/cjs/electron/app/index.js +27 -3
  65. package/dist/cjs/electron/app/index.js.map +1 -1
  66. package/dist/cjs/electron/index.d.ts +6 -0
  67. package/dist/cjs/electron/index.d.ts.map +1 -1
  68. package/dist/cjs/electron/index.js +16 -1
  69. package/dist/cjs/electron/index.js.map +1 -1
  70. package/dist/cjs/electron/window/index.d.ts +37 -0
  71. package/dist/cjs/electron/window/index.d.ts.map +1 -1
  72. package/dist/cjs/electron/window/index.js +144 -88
  73. package/dist/cjs/electron/window/index.js.map +1 -1
  74. package/dist/cjs/exception/index.d.ts +12 -0
  75. package/dist/cjs/exception/index.d.ts.map +1 -1
  76. package/dist/cjs/exception/index.js +67 -9
  77. package/dist/cjs/exception/index.js.map +1 -1
  78. package/dist/cjs/html/index.d.ts +19 -0
  79. package/dist/cjs/html/index.d.ts.map +1 -1
  80. package/dist/cjs/html/index.js +42 -0
  81. package/dist/cjs/html/index.js.map +1 -1
  82. package/dist/cjs/index.d.ts +35 -7
  83. package/dist/cjs/index.d.ts.map +1 -1
  84. package/dist/cjs/index.js +127 -80
  85. package/dist/cjs/index.js.map +1 -1
  86. package/dist/cjs/jobs/child/app.js +86 -25
  87. package/dist/cjs/jobs/child/app.js.map +1 -1
  88. package/dist/cjs/jobs/child/index.d.ts +5 -5
  89. package/dist/cjs/jobs/child/index.js +5 -5
  90. package/dist/cjs/jobs/child/jobProcess.d.ts +68 -0
  91. package/dist/cjs/jobs/child/jobProcess.d.ts.map +1 -1
  92. package/dist/cjs/jobs/child/jobProcess.js +86 -11
  93. package/dist/cjs/jobs/child/jobProcess.js.map +1 -1
  94. package/dist/cjs/jobs/child-pool/index.d.ts +96 -0
  95. package/dist/cjs/jobs/child-pool/index.d.ts.map +1 -1
  96. package/dist/cjs/jobs/child-pool/index.js +91 -4
  97. package/dist/cjs/jobs/child-pool/index.js.map +1 -1
  98. package/dist/cjs/jobs/index.d.ts +10 -0
  99. package/dist/cjs/jobs/index.d.ts.map +1 -1
  100. package/dist/cjs/jobs/index.js +10 -0
  101. package/dist/cjs/jobs/index.js.map +1 -1
  102. package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts +2 -0
  103. package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts.map +1 -1
  104. package/dist/cjs/jobs/load-balancer/algorithm/index.js +6 -0
  105. package/dist/cjs/jobs/load-balancer/algorithm/index.js.map +1 -1
  106. package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.d.ts +1 -1
  107. package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.js +1 -1
  108. package/dist/cjs/jobs/load-balancer/algorithm/polling.d.ts +1 -1
  109. package/dist/cjs/jobs/load-balancer/algorithm/polling.js +1 -1
  110. package/dist/cjs/jobs/load-balancer/algorithm/random.d.ts +1 -1
  111. package/dist/cjs/jobs/load-balancer/algorithm/random.js +1 -1
  112. package/dist/cjs/jobs/load-balancer/algorithm/specify.d.ts +1 -1
  113. package/dist/cjs/jobs/load-balancer/algorithm/specify.js +1 -1
  114. package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts +1 -1
  115. package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts.map +1 -1
  116. package/dist/cjs/jobs/load-balancer/algorithm/weights.js +4 -8
  117. package/dist/cjs/jobs/load-balancer/algorithm/weights.js.map +1 -1
  118. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +1 -1
  119. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -1
  120. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js +6 -11
  121. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -1
  122. package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.d.ts +1 -1
  123. package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.js +1 -1
  124. package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.d.ts +1 -1
  125. package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.js +1 -1
  126. package/dist/cjs/jobs/load-balancer/consts.d.ts +22 -0
  127. package/dist/cjs/jobs/load-balancer/consts.d.ts.map +1 -1
  128. package/dist/cjs/jobs/load-balancer/consts.js +22 -0
  129. package/dist/cjs/jobs/load-balancer/consts.js.map +1 -1
  130. package/dist/cjs/jobs/load-balancer/index.d.ts +18 -18
  131. package/dist/cjs/jobs/load-balancer/index.js +18 -18
  132. package/dist/cjs/jobs/load-balancer/scheduler.d.ts +3 -3
  133. package/dist/cjs/jobs/load-balancer/scheduler.js +3 -3
  134. package/dist/cjs/jobs/load-balancer/types.d.ts +21 -0
  135. package/dist/cjs/jobs/load-balancer/types.d.ts.map +1 -1
  136. package/dist/cjs/jobs/load-balancer/types.js +4 -0
  137. package/dist/cjs/jobs/load-balancer/types.js.map +1 -1
  138. package/dist/cjs/jobs/registry.d.ts +24 -0
  139. package/dist/cjs/jobs/registry.d.ts.map +1 -0
  140. package/dist/cjs/jobs/registry.js +52 -0
  141. package/dist/cjs/jobs/registry.js.map +1 -0
  142. package/dist/cjs/loader/index.d.ts +52 -0
  143. package/dist/cjs/loader/index.d.ts.map +1 -1
  144. package/dist/cjs/loader/index.js +79 -10
  145. package/dist/cjs/loader/index.js.map +1 -1
  146. package/dist/cjs/log/index.d.ts +41 -0
  147. package/dist/cjs/log/index.d.ts.map +1 -1
  148. package/dist/cjs/log/index.js +59 -20
  149. package/dist/cjs/log/index.js.map +1 -1
  150. package/dist/cjs/log/logger.d.ts +26 -0
  151. package/dist/cjs/log/logger.d.ts.map +1 -1
  152. package/dist/cjs/log/logger.js +122 -2
  153. package/dist/cjs/log/logger.js.map +1 -1
  154. package/dist/cjs/message/childMessage.d.ts +50 -0
  155. package/dist/cjs/message/childMessage.d.ts.map +1 -1
  156. package/dist/cjs/message/childMessage.js +83 -2
  157. package/dist/cjs/message/childMessage.js.map +1 -1
  158. package/dist/cjs/ps/index.d.ts +112 -0
  159. package/dist/cjs/ps/index.d.ts.map +1 -1
  160. package/dist/cjs/ps/index.js +175 -41
  161. package/dist/cjs/ps/index.js.map +1 -1
  162. package/dist/cjs/socket/httpServer.d.ts +58 -5
  163. package/dist/cjs/socket/httpServer.d.ts.map +1 -1
  164. package/dist/cjs/socket/httpServer.js +94 -28
  165. package/dist/cjs/socket/httpServer.js.map +1 -1
  166. package/dist/cjs/socket/index.d.ts +45 -3
  167. package/dist/cjs/socket/index.d.ts.map +1 -1
  168. package/dist/cjs/socket/index.js +50 -14
  169. package/dist/cjs/socket/index.js.map +1 -1
  170. package/dist/cjs/socket/ipcServer.d.ts +31 -1
  171. package/dist/cjs/socket/ipcServer.d.ts.map +1 -1
  172. package/dist/cjs/socket/ipcServer.js +60 -43
  173. package/dist/cjs/socket/ipcServer.js.map +1 -1
  174. package/dist/cjs/socket/socketServer.d.ts +32 -1
  175. package/dist/cjs/socket/socketServer.d.ts.map +1 -1
  176. package/dist/cjs/socket/socketServer.js +53 -14
  177. package/dist/cjs/socket/socketServer.js.map +1 -1
  178. package/dist/cjs/socket/utils.d.ts +13 -0
  179. package/dist/cjs/socket/utils.d.ts.map +1 -0
  180. package/dist/cjs/socket/utils.js +41 -0
  181. package/dist/cjs/socket/utils.js.map +1 -0
  182. package/dist/cjs/storage/sqliteStorage.d.ts +93 -4
  183. package/dist/cjs/storage/sqliteStorage.d.ts.map +1 -1
  184. package/dist/cjs/storage/sqliteStorage.js +121 -9
  185. package/dist/cjs/storage/sqliteStorage.js.map +1 -1
  186. package/dist/cjs/types/index.d.ts +373 -5
  187. package/dist/cjs/types/index.d.ts.map +1 -1
  188. package/dist/cjs/utils/extend.d.ts +44 -1
  189. package/dist/cjs/utils/extend.d.ts.map +1 -1
  190. package/dist/cjs/utils/extend.js +67 -19
  191. package/dist/cjs/utils/extend.js.map +1 -1
  192. package/dist/cjs/utils/helper.d.ts +154 -1
  193. package/dist/cjs/utils/helper.d.ts.map +1 -1
  194. package/dist/cjs/utils/helper.js +205 -28
  195. package/dist/cjs/utils/helper.js.map +1 -1
  196. package/dist/cjs/utils/index.d.ts +93 -0
  197. package/dist/cjs/utils/index.d.ts.map +1 -1
  198. package/dist/cjs/utils/index.js +136 -12
  199. package/dist/cjs/utils/index.js.map +1 -1
  200. package/dist/cjs/utils/ip.d.ts +29 -0
  201. package/dist/cjs/utils/ip.d.ts.map +1 -1
  202. package/dist/cjs/utils/ip.js +95 -4
  203. package/dist/cjs/utils/ip.js.map +1 -1
  204. package/dist/cjs/utils/is.d.ts +123 -0
  205. package/dist/cjs/utils/is.d.ts.map +1 -1
  206. package/dist/cjs/utils/is.js +126 -14
  207. package/dist/cjs/utils/is.js.map +1 -1
  208. package/dist/cjs/utils/json.d.ts +54 -0
  209. package/dist/cjs/utils/json.d.ts.map +1 -1
  210. package/dist/cjs/utils/json.js +62 -0
  211. package/dist/cjs/utils/json.js.map +1 -1
  212. package/dist/cjs/utils/pargv.d.ts +51 -0
  213. package/dist/cjs/utils/pargv.d.ts.map +1 -1
  214. package/dist/cjs/utils/pargv.js +141 -3
  215. package/dist/cjs/utils/pargv.js.map +1 -1
  216. package/dist/cjs/utils/port/index.d.ts +42 -0
  217. package/dist/cjs/utils/port/index.d.ts.map +1 -1
  218. package/dist/cjs/utils/port/index.js +130 -7
  219. package/dist/cjs/utils/port/index.js.map +1 -1
  220. package/dist/cjs/utils/type_check.d.ts +79 -0
  221. package/dist/cjs/utils/type_check.d.ts.map +1 -1
  222. package/dist/cjs/utils/type_check.js +87 -1
  223. package/dist/cjs/utils/type_check.js.map +1 -1
  224. package/dist/cjs/utils/wrap.d.ts +26 -0
  225. package/dist/cjs/utils/wrap.d.ts.map +1 -1
  226. package/dist/cjs/utils/wrap.js +47 -10
  227. package/dist/cjs/utils/wrap.js.map +1 -1
  228. package/dist/esm/app/application.d.ts +36 -1
  229. package/dist/esm/app/application.d.ts.map +1 -1
  230. package/dist/esm/app/application.js +49 -2
  231. package/dist/esm/app/application.js.map +1 -1
  232. package/dist/esm/app/boot.d.ts +56 -1
  233. package/dist/esm/app/boot.d.ts.map +1 -1
  234. package/dist/esm/app/boot.js +74 -11
  235. package/dist/esm/app/boot.js.map +1 -1
  236. package/dist/esm/app/dir.d.ts +10 -0
  237. package/dist/esm/app/dir.d.ts.map +1 -1
  238. package/dist/esm/app/dir.js +71 -10
  239. package/dist/esm/app/dir.js.map +1 -1
  240. package/dist/esm/app/events.d.ts +58 -2
  241. package/dist/esm/app/events.d.ts.map +1 -1
  242. package/dist/esm/app/events.js +92 -12
  243. package/dist/esm/app/events.js.map +1 -1
  244. package/dist/esm/config/config_loader.d.ts +44 -0
  245. package/dist/esm/config/config_loader.d.ts.map +1 -1
  246. package/dist/esm/config/config_loader.js +82 -1
  247. package/dist/esm/config/config_loader.js.map +1 -1
  248. package/dist/esm/config/default_config.d.ts +5 -0
  249. package/dist/esm/config/default_config.d.ts.map +1 -1
  250. package/dist/esm/config/default_config.js +98 -11
  251. package/dist/esm/config/default_config.js.map +1 -1
  252. package/dist/esm/config/index.d.ts +31 -1
  253. package/dist/esm/config/index.d.ts.map +1 -1
  254. package/dist/esm/config/index.js +52 -0
  255. package/dist/esm/config/index.js.map +1 -1
  256. package/dist/esm/const/channel.d.ts +17 -0
  257. package/dist/esm/const/channel.d.ts.map +1 -1
  258. package/dist/esm/const/channel.js +17 -0
  259. package/dist/esm/const/channel.js.map +1 -1
  260. package/dist/esm/controller/controller_loader.d.ts +20 -1
  261. package/dist/esm/controller/controller_loader.d.ts.map +1 -1
  262. package/dist/esm/controller/controller_loader.js +89 -9
  263. package/dist/esm/controller/controller_loader.js.map +1 -1
  264. package/dist/esm/controller/index.d.ts +32 -0
  265. package/dist/esm/controller/index.d.ts.map +1 -1
  266. package/dist/esm/controller/index.js +66 -0
  267. package/dist/esm/controller/index.js.map +1 -1
  268. package/dist/esm/core/loader/file_loader.d.ts +77 -27
  269. package/dist/esm/core/loader/file_loader.d.ts.map +1 -1
  270. package/dist/esm/core/loader/file_loader.js +239 -75
  271. package/dist/esm/core/loader/file_loader.js.map +1 -1
  272. package/dist/esm/core/utils/index.d.ts +57 -2
  273. package/dist/esm/core/utils/index.d.ts.map +1 -1
  274. package/dist/esm/core/utils/index.js +87 -12
  275. package/dist/esm/core/utils/index.js.map +1 -1
  276. package/dist/esm/core/utils/timing.d.ts +47 -0
  277. package/dist/esm/core/utils/timing.d.ts.map +1 -1
  278. package/dist/esm/core/utils/timing.js +42 -2
  279. package/dist/esm/core/utils/timing.js.map +1 -1
  280. package/dist/esm/cross/cross.d.ts +81 -2
  281. package/dist/esm/cross/cross.d.ts.map +1 -1
  282. package/dist/esm/cross/cross.js +86 -16
  283. package/dist/esm/cross/cross.js.map +1 -1
  284. package/dist/esm/cross/crossProcess.d.ts +85 -14
  285. package/dist/esm/cross/crossProcess.d.ts.map +1 -1
  286. package/dist/esm/cross/crossProcess.js +85 -13
  287. package/dist/esm/cross/crossProcess.js.map +1 -1
  288. package/dist/esm/electron/app/index.d.ts +17 -1
  289. package/dist/esm/electron/app/index.d.ts.map +1 -1
  290. package/dist/esm/electron/app/index.js +27 -3
  291. package/dist/esm/electron/app/index.js.map +1 -1
  292. package/dist/esm/electron/index.d.ts +6 -0
  293. package/dist/esm/electron/index.d.ts.map +1 -1
  294. package/dist/esm/electron/index.js +16 -1
  295. package/dist/esm/electron/index.js.map +1 -1
  296. package/dist/esm/electron/window/index.d.ts +37 -0
  297. package/dist/esm/electron/window/index.d.ts.map +1 -1
  298. package/dist/esm/electron/window/index.js +144 -88
  299. package/dist/esm/electron/window/index.js.map +1 -1
  300. package/dist/esm/exception/index.d.ts +12 -0
  301. package/dist/esm/exception/index.d.ts.map +1 -1
  302. package/dist/esm/exception/index.js +67 -9
  303. package/dist/esm/exception/index.js.map +1 -1
  304. package/dist/esm/html/index.d.ts +19 -0
  305. package/dist/esm/html/index.d.ts.map +1 -1
  306. package/dist/esm/html/index.js +42 -0
  307. package/dist/esm/html/index.js.map +1 -1
  308. package/dist/esm/index.d.ts +35 -7
  309. package/dist/esm/index.d.ts.map +1 -1
  310. package/dist/esm/index.js +127 -80
  311. package/dist/esm/index.js.map +1 -1
  312. package/dist/esm/jobs/child/app.js +86 -25
  313. package/dist/esm/jobs/child/app.js.map +1 -1
  314. package/dist/esm/jobs/child/index.d.ts +5 -5
  315. package/dist/esm/jobs/child/index.js +5 -5
  316. package/dist/esm/jobs/child/jobProcess.d.ts +68 -0
  317. package/dist/esm/jobs/child/jobProcess.d.ts.map +1 -1
  318. package/dist/esm/jobs/child/jobProcess.js +86 -11
  319. package/dist/esm/jobs/child/jobProcess.js.map +1 -1
  320. package/dist/esm/jobs/child-pool/index.d.ts +96 -0
  321. package/dist/esm/jobs/child-pool/index.d.ts.map +1 -1
  322. package/dist/esm/jobs/child-pool/index.js +91 -4
  323. package/dist/esm/jobs/child-pool/index.js.map +1 -1
  324. package/dist/esm/jobs/index.d.ts +10 -0
  325. package/dist/esm/jobs/index.d.ts.map +1 -1
  326. package/dist/esm/jobs/index.js +10 -0
  327. package/dist/esm/jobs/index.js.map +1 -1
  328. package/dist/esm/jobs/load-balancer/algorithm/index.d.ts +2 -0
  329. package/dist/esm/jobs/load-balancer/algorithm/index.d.ts.map +1 -1
  330. package/dist/esm/jobs/load-balancer/algorithm/index.js +6 -0
  331. package/dist/esm/jobs/load-balancer/algorithm/index.js.map +1 -1
  332. package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.d.ts +1 -1
  333. package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.js +1 -1
  334. package/dist/esm/jobs/load-balancer/algorithm/polling.d.ts +1 -1
  335. package/dist/esm/jobs/load-balancer/algorithm/polling.js +1 -1
  336. package/dist/esm/jobs/load-balancer/algorithm/random.d.ts +1 -1
  337. package/dist/esm/jobs/load-balancer/algorithm/random.js +1 -1
  338. package/dist/esm/jobs/load-balancer/algorithm/specify.d.ts +1 -1
  339. package/dist/esm/jobs/load-balancer/algorithm/specify.js +1 -1
  340. package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts +1 -1
  341. package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts.map +1 -1
  342. package/dist/esm/jobs/load-balancer/algorithm/weights.js +4 -8
  343. package/dist/esm/jobs/load-balancer/algorithm/weights.js.map +1 -1
  344. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +1 -1
  345. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -1
  346. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js +6 -11
  347. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -1
  348. package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.d.ts +1 -1
  349. package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.js +1 -1
  350. package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.d.ts +1 -1
  351. package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.js +1 -1
  352. package/dist/esm/jobs/load-balancer/consts.d.ts +22 -0
  353. package/dist/esm/jobs/load-balancer/consts.d.ts.map +1 -1
  354. package/dist/esm/jobs/load-balancer/consts.js +22 -0
  355. package/dist/esm/jobs/load-balancer/consts.js.map +1 -1
  356. package/dist/esm/jobs/load-balancer/index.d.ts +18 -18
  357. package/dist/esm/jobs/load-balancer/index.js +18 -18
  358. package/dist/esm/jobs/load-balancer/scheduler.d.ts +3 -3
  359. package/dist/esm/jobs/load-balancer/scheduler.js +3 -3
  360. package/dist/esm/jobs/load-balancer/types.d.ts +21 -0
  361. package/dist/esm/jobs/load-balancer/types.d.ts.map +1 -1
  362. package/dist/esm/jobs/load-balancer/types.js +4 -0
  363. package/dist/esm/jobs/load-balancer/types.js.map +1 -1
  364. package/dist/esm/jobs/registry.d.ts +24 -0
  365. package/dist/esm/jobs/registry.d.ts.map +1 -0
  366. package/dist/esm/jobs/registry.js +52 -0
  367. package/dist/esm/jobs/registry.js.map +1 -0
  368. package/dist/esm/loader/index.d.ts +52 -0
  369. package/dist/esm/loader/index.d.ts.map +1 -1
  370. package/dist/esm/loader/index.js +79 -10
  371. package/dist/esm/loader/index.js.map +1 -1
  372. package/dist/esm/log/index.d.ts +41 -0
  373. package/dist/esm/log/index.d.ts.map +1 -1
  374. package/dist/esm/log/index.js +59 -20
  375. package/dist/esm/log/index.js.map +1 -1
  376. package/dist/esm/log/logger.d.ts +26 -0
  377. package/dist/esm/log/logger.d.ts.map +1 -1
  378. package/dist/esm/log/logger.js +122 -2
  379. package/dist/esm/log/logger.js.map +1 -1
  380. package/dist/esm/message/childMessage.d.ts +50 -0
  381. package/dist/esm/message/childMessage.d.ts.map +1 -1
  382. package/dist/esm/message/childMessage.js +83 -2
  383. package/dist/esm/message/childMessage.js.map +1 -1
  384. package/dist/esm/ps/index.d.ts +112 -0
  385. package/dist/esm/ps/index.d.ts.map +1 -1
  386. package/dist/esm/ps/index.js +175 -41
  387. package/dist/esm/ps/index.js.map +1 -1
  388. package/dist/esm/socket/httpServer.d.ts +58 -5
  389. package/dist/esm/socket/httpServer.d.ts.map +1 -1
  390. package/dist/esm/socket/httpServer.js +94 -28
  391. package/dist/esm/socket/httpServer.js.map +1 -1
  392. package/dist/esm/socket/index.d.ts +45 -3
  393. package/dist/esm/socket/index.d.ts.map +1 -1
  394. package/dist/esm/socket/index.js +50 -14
  395. package/dist/esm/socket/index.js.map +1 -1
  396. package/dist/esm/socket/ipcServer.d.ts +31 -1
  397. package/dist/esm/socket/ipcServer.d.ts.map +1 -1
  398. package/dist/esm/socket/ipcServer.js +60 -43
  399. package/dist/esm/socket/ipcServer.js.map +1 -1
  400. package/dist/esm/socket/socketServer.d.ts +32 -1
  401. package/dist/esm/socket/socketServer.d.ts.map +1 -1
  402. package/dist/esm/socket/socketServer.js +53 -14
  403. package/dist/esm/socket/socketServer.js.map +1 -1
  404. package/dist/esm/socket/utils.d.ts +13 -0
  405. package/dist/esm/socket/utils.d.ts.map +1 -0
  406. package/dist/esm/socket/utils.js +41 -0
  407. package/dist/esm/socket/utils.js.map +1 -0
  408. package/dist/esm/storage/sqliteStorage.d.ts +93 -4
  409. package/dist/esm/storage/sqliteStorage.d.ts.map +1 -1
  410. package/dist/esm/storage/sqliteStorage.js +121 -9
  411. package/dist/esm/storage/sqliteStorage.js.map +1 -1
  412. package/dist/esm/types/index.d.ts +373 -5
  413. package/dist/esm/types/index.d.ts.map +1 -1
  414. package/dist/esm/utils/extend.d.ts +44 -1
  415. package/dist/esm/utils/extend.d.ts.map +1 -1
  416. package/dist/esm/utils/extend.js +67 -19
  417. package/dist/esm/utils/extend.js.map +1 -1
  418. package/dist/esm/utils/helper.d.ts +154 -1
  419. package/dist/esm/utils/helper.d.ts.map +1 -1
  420. package/dist/esm/utils/helper.js +205 -28
  421. package/dist/esm/utils/helper.js.map +1 -1
  422. package/dist/esm/utils/index.d.ts +93 -0
  423. package/dist/esm/utils/index.d.ts.map +1 -1
  424. package/dist/esm/utils/index.js +136 -12
  425. package/dist/esm/utils/index.js.map +1 -1
  426. package/dist/esm/utils/ip.d.ts +29 -0
  427. package/dist/esm/utils/ip.d.ts.map +1 -1
  428. package/dist/esm/utils/ip.js +95 -4
  429. package/dist/esm/utils/ip.js.map +1 -1
  430. package/dist/esm/utils/is.d.ts +123 -0
  431. package/dist/esm/utils/is.d.ts.map +1 -1
  432. package/dist/esm/utils/is.js +126 -14
  433. package/dist/esm/utils/is.js.map +1 -1
  434. package/dist/esm/utils/json.d.ts +54 -0
  435. package/dist/esm/utils/json.d.ts.map +1 -1
  436. package/dist/esm/utils/json.js +62 -0
  437. package/dist/esm/utils/json.js.map +1 -1
  438. package/dist/esm/utils/pargv.d.ts +51 -0
  439. package/dist/esm/utils/pargv.d.ts.map +1 -1
  440. package/dist/esm/utils/pargv.js +141 -3
  441. package/dist/esm/utils/pargv.js.map +1 -1
  442. package/dist/esm/utils/port/index.d.ts +42 -0
  443. package/dist/esm/utils/port/index.d.ts.map +1 -1
  444. package/dist/esm/utils/port/index.js +130 -7
  445. package/dist/esm/utils/port/index.js.map +1 -1
  446. package/dist/esm/utils/type_check.d.ts +79 -0
  447. package/dist/esm/utils/type_check.d.ts.map +1 -1
  448. package/dist/esm/utils/type_check.js +87 -1
  449. package/dist/esm/utils/type_check.js.map +1 -1
  450. package/dist/esm/utils/wrap.d.ts +26 -0
  451. package/dist/esm/utils/wrap.d.ts.map +1 -1
  452. package/dist/esm/utils/wrap.js +47 -10
  453. package/dist/esm/utils/wrap.js.map +1 -1
  454. package/package.json +12 -13
@@ -1,34 +1,102 @@
1
1
  import { EventEmitter } from 'events';
2
2
  import { type ChildProcess, type ForkOptions } from 'child_process';
3
3
  import type { JobsConfig, MessageData } from '../../types/index.js';
4
+ /** Options when creating a JobProcess */
4
5
  export interface JobProcessOptions {
6
+ /** Arguments object passed to the child process */
5
7
  processArgs?: Record<string, unknown>;
8
+ /** Fork options (cwd, env, stdio, etc.) */
6
9
  processOptions?: ForkOptions;
10
+ [key: string]: unknown;
7
11
  }
12
+ /** Message format: Main process -> Child process */
8
13
  export interface JobMessage {
14
+ /** Message ID */
9
15
  mid: string;
16
+ /** Command (e.g. 'run') */
10
17
  cmd: string;
18
+ /** Task file path */
11
19
  jobPath?: string;
20
+ /** Task constructor arguments */
12
21
  jobParams?: unknown[];
22
+ /** Instance method name to call */
13
23
  jobFunc?: string;
24
+ /** Instance method arguments */
14
25
  jobFuncParams?: unknown[];
15
26
  }
27
+ /** Message format: Child process -> Main process */
16
28
  export interface ProcessMessage extends MessageData {
29
+ /** Message receiver type */
17
30
  eventReceiver: string;
18
31
  }
32
+ /**
33
+ * JobProcess - Child process manager
34
+ *
35
+ * Encapsulates the complete logic of forking a child process:
36
+ * 1. Determine app.js entry path (child process entry within node_modules/ee-core)
37
+ * 2. Configure working directory and environment variables
38
+ * 3. Fork the child process and register event listeners
39
+ * 4. Provide dispatch() and callFunc() for sending messages
40
+ * 5. Provide kill() for terminating the process
41
+ */
19
42
  export declare class JobProcess {
43
+ /** In-process event emitter (forkProcess-level messages) */
20
44
  emitter: EventEmitter;
45
+ /** Host event emitter (ChildJob/ChildPoolJob, childJob-level messages) */
21
46
  host: EventEmitter;
47
+ /** Arguments array passed to the child process */
22
48
  args: string[];
49
+ /** Whether the child process is in a sleeping state */
23
50
  sleeping: boolean;
51
+ /** Child process object returned by child_process.fork() */
24
52
  child: ChildProcess;
53
+ /** Child process PID */
25
54
  pid: number | undefined;
55
+ /** Task configuration */
26
56
  config: JobsConfig;
27
57
  constructor(host: EventEmitter, opt?: JobProcessOptions, config?: JobsConfig);
58
+ /**
59
+ * Initialize child process event listeners
60
+ *
61
+ * Listens for three types of events:
62
+ * - message: Process messages from the child process (exception display, business message forwarding)
63
+ * - exit: Child process exited, notify host to clean up
64
+ * - error: Child process error, notify host to clean up
65
+ */
28
66
  _init(): void;
67
+ /**
68
+ * Dispatch messages to different event emitters based on eventReceiver
69
+ *
70
+ * - forkProcess: send only to in-process emitter
71
+ * - childJob: send only to host emitter
72
+ * - all / others: send to both
73
+ */
29
74
  _eventEmit(m: ProcessMessage): void;
75
+ /**
76
+ * Send a dispatch message to the child process
77
+ *
78
+ * @param cmd - Command (e.g. 'run')
79
+ * @param jobPath - Task file path
80
+ * @param params - Task parameters
81
+ */
30
82
  dispatch(cmd: string, jobPath?: string, ...params: unknown[]): void;
83
+ /**
84
+ * Call a specified method on the task instance in the child process
85
+ *
86
+ * Resolves the task file path, then sends a run command with the specified function name.
87
+ *
88
+ * @param jobPath - Task file path (relative paths are resolved to absolute paths)
89
+ * @param funcName - Method name to call
90
+ * @param params - Method arguments
91
+ */
31
92
  callFunc(jobPath?: string, funcName?: string, ...params: unknown[]): void;
93
+ /**
94
+ * Terminate the child process
95
+ *
96
+ * First sends SIGINT for graceful exit, then sends SIGKILL to force termination after timeout.
97
+ *
98
+ * @param timeout - Timeout in milliseconds to wait for graceful exit
99
+ */
32
100
  kill(timeout?: number): void;
33
101
  }
34
102
  //# sourceMappingURL=jobProcess.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobProcess.d.ts","sourceRoot":"","sources":["../../../../src/jobs/child/jobProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAQ,KAAK,YAAY,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ7F,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAwB,MAAM,sBAAsB,CAAC;AAE1F,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,UAAU;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;gBAEP,IAAI,EAAE,YAAY,EAAE,GAAG,GAAE,iBAAsB,EAAE,MAAM,GAAE,UAAkC;IAsCvG,KAAK,IAAI,IAAI;IA8Bb,UAAU,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI;IAenC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAe/D,QAAQ,CAAC,OAAO,SAAK,EAAE,QAAQ,SAAK,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAejE,IAAI,CAAC,OAAO,SAAO,GAAG,IAAI;CAO3B"}
1
+ {"version":3,"file":"jobProcess.d.ts","sourceRoot":"","sources":["../../../../src/jobs/child/jobProcess.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAQ,KAAK,YAAY,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAS7F,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAwB,MAAM,sBAAsB,CAAC;AAE1F,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,2CAA2C;IAC3C,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;CAC3B;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAU;IACrB,4DAA4D;IAC5D,OAAO,EAAE,YAAY,CAAC;IACtB,0EAA0E;IAC1E,IAAI,EAAE,YAAY,CAAC;IACnB,kDAAkD;IAClD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,KAAK,EAAE,YAAY,CAAC;IACpB,wBAAwB;IACxB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAC;gBAEP,IAAI,EAAE,YAAY,EAAE,GAAG,GAAE,iBAAsB,EAAE,MAAM,GAAE,UAAkC;IA2CvG;;;;;;;OAOG;IACH,KAAK,IAAI,IAAI;IA6Cb;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI;IAenC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAY/D;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,SAAK,EAAE,QAAQ,SAAK,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAcjE;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,SAAO,GAAG,IAAI;CAO3B"}
@@ -4,31 +4,58 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.JobProcess = void 0;
7
+ /**
8
+ * @module jobs/child/jobProcess
9
+ * @description Child process manager. Encapsulates child_process.fork() creation and communication logic,
10
+ * providing the main process with the ability to create child processes, send messages, and terminate processes.
11
+ *
12
+ * Communication mechanism:
13
+ * - Main process sends JobMessage to child process via child.send()
14
+ * - Child process sends ProcessMessage to main process via process.send()
15
+ * - Messages are categorized by channel: showException (exception), sendToMain (business message)
16
+ * - Messages are dispatched by eventReceiver: childJob (global), forkProcess (per-process), all (both)
17
+ */
7
18
  const path_1 = __importDefault(require("path"));
8
19
  const events_1 = require("events");
9
20
  const child_process_1 = require("child_process");
10
21
  const serialize_javascript_1 = __importDefault(require("serialize-javascript"));
11
22
  const index_js_1 = require("../../log/index.js");
12
23
  const index_js_2 = require("../../ps/index.js");
24
+ const index_js_3 = require("../../config/index.js");
13
25
  const channel_js_1 = require("../../const/channel.js");
14
26
  const helper_js_1 = require("../../utils/helper.js");
15
- const index_js_3 = require("../../loader/index.js");
27
+ const index_js_4 = require("../../loader/index.js");
16
28
  const extend_js_1 = require("../../utils/extend.js");
29
+ /**
30
+ * JobProcess - Child process manager
31
+ *
32
+ * Encapsulates the complete logic of forking a child process:
33
+ * 1. Determine app.js entry path (child process entry within node_modules/ee-core)
34
+ * 2. Configure working directory and environment variables
35
+ * 3. Fork the child process and register event listeners
36
+ * 4. Provide dispatch() and callFunc() for sending messages
37
+ * 5. Provide kill() for terminating the process
38
+ */
17
39
  class JobProcess {
18
40
  constructor(host, opt = {}, config = { messageLog: false }) {
19
41
  let cwd = (0, index_js_2.getBaseDir)();
42
+ // Locate app.js entry: child process startup file within the ee-core package
20
43
  const currentFilePath = typeof __filename !== 'undefined' ? __filename : '';
21
44
  const appPath = path_1.default.join(path_1.default.dirname(currentFilePath), 'app.js');
22
- // todo fork的cwd目录为什么要在app.asar
45
+ // After packaging, cwd must be outside app.asar (child processes need access to node_modules)
23
46
  if ((0, index_js_2.isPackaged)()) {
24
47
  cwd = path_1.default.join((0, index_js_2.getBaseDir)(), '..');
25
48
  }
26
49
  const defaultOptions = {
27
- processArgs: {},
50
+ processArgs: {
51
+ type: 'childJob',
52
+ // Pass main process config to child process so it doesn't need to load from filesystem
53
+ eeConfig: (0, index_js_3.getConfig)(),
54
+ },
28
55
  processOptions: {
29
56
  cwd,
30
57
  env: (0, index_js_2.allEnv)(),
31
- stdio: 'ignore', // pipe
58
+ stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
32
59
  },
33
60
  };
34
61
  const options = (0, extend_js_1.extend)(true, defaultOptions, opt);
@@ -37,26 +64,48 @@ class JobProcess {
37
64
  this.args = [];
38
65
  this.sleeping = false;
39
66
  this.config = config;
40
- // 传递给子进程的参数
67
+ // Serialize arguments and pass them to the child process
41
68
  this.args.push(JSON.stringify(options.processArgs));
42
69
  this.child = (0, child_process_1.fork)(appPath, this.args, options.processOptions ?? {});
43
70
  this.pid = this.child.pid;
44
71
  this._init();
45
72
  }
73
+ /**
74
+ * Initialize child process event listeners
75
+ *
76
+ * Listens for three types of events:
77
+ * - message: Process messages from the child process (exception display, business message forwarding)
78
+ * - exit: Child process exited, notify host to clean up
79
+ * - error: Child process error, notify host to clean up
80
+ */
46
81
  _init() {
47
82
  const { messageLog } = this.config;
48
83
  this.child.on('message', (m) => {
49
84
  if (messageLog) {
50
85
  index_js_1.coreLogger.info(`[jobs/child] received a message from child-process, message: ${(0, serialize_javascript_1.default)(m)}`);
51
86
  }
87
+ // Exception message: log it
52
88
  if (m.channel === channel_js_1.Processes.showException) {
53
89
  index_js_1.coreLogger.error(`${m.data}`);
54
90
  }
55
- // 收到子进程消息,转发到 event
91
+ // Business message: dispatch based on eventReceiver
56
92
  if (m.channel === channel_js_1.Processes.sendToMain) {
57
93
  this._eventEmit(m);
58
94
  }
59
95
  });
96
+ // Capture child process stdout/stderr for debugging
97
+ const stdout = this.child.stdout;
98
+ const stderr = this.child.stderr;
99
+ if (stdout) {
100
+ stdout.on('data', (data) => {
101
+ index_js_1.coreLogger.info(`[jobs/child] stdout: ${data.toString().trim()}`);
102
+ });
103
+ }
104
+ if (stderr) {
105
+ stderr.on('data', (data) => {
106
+ index_js_1.coreLogger.error(`[jobs/child] stderr: ${data.toString().trim()}`);
107
+ });
108
+ }
60
109
  this.child.on('exit', (code, signal) => {
61
110
  const data = { pid: this.pid };
62
111
  this.host.emit(channel_js_1.Events.childProcessExit, data);
@@ -68,6 +117,13 @@ class JobProcess {
68
117
  index_js_1.coreLogger.error(`[jobs/child] received a error from child-process, error: ${err}, pid:${this.pid}`);
69
118
  });
70
119
  }
120
+ /**
121
+ * Dispatch messages to different event emitters based on eventReceiver
122
+ *
123
+ * - forkProcess: send only to in-process emitter
124
+ * - childJob: send only to host emitter
125
+ * - all / others: send to both
126
+ */
71
127
  _eventEmit(m) {
72
128
  switch (m.eventReceiver) {
73
129
  case channel_js_1.Receiver.forkProcess:
@@ -82,8 +138,14 @@ class JobProcess {
82
138
  break;
83
139
  }
84
140
  }
141
+ /**
142
+ * Send a dispatch message to the child process
143
+ *
144
+ * @param cmd - Command (e.g. 'run')
145
+ * @param jobPath - Task file path
146
+ * @param params - Task parameters
147
+ */
85
148
  dispatch(cmd, jobPath = '', ...params) {
86
- // 消息对象
87
149
  const mid = (0, helper_js_1.getRandomString)();
88
150
  const msg = {
89
151
  mid,
@@ -91,13 +153,19 @@ class JobProcess {
91
153
  jobPath,
92
154
  jobParams: params,
93
155
  };
94
- // todo 是否会发生监听未完成时,接收不到消息?
95
- // 发消息到子进程
96
156
  this.child.send(msg);
97
157
  }
158
+ /**
159
+ * Call a specified method on the task instance in the child process
160
+ *
161
+ * Resolves the task file path, then sends a run command with the specified function name.
162
+ *
163
+ * @param jobPath - Task file path (relative paths are resolved to absolute paths)
164
+ * @param funcName - Method name to call
165
+ * @param params - Method arguments
166
+ */
98
167
  callFunc(jobPath = '', funcName = '', ...params) {
99
- const fullPath = (0, index_js_3.getFullpath)(jobPath);
100
- // 消息对象
168
+ const fullPath = (0, index_js_4.getFullpath)(jobPath);
101
169
  const mid = (0, helper_js_1.getRandomString)();
102
170
  const msg = {
103
171
  mid,
@@ -108,6 +176,13 @@ class JobProcess {
108
176
  };
109
177
  this.child.send(msg);
110
178
  }
179
+ /**
180
+ * Terminate the child process
181
+ *
182
+ * First sends SIGINT for graceful exit, then sends SIGKILL to force termination after timeout.
183
+ *
184
+ * @param timeout - Timeout in milliseconds to wait for graceful exit
185
+ */
111
186
  kill(timeout = 1000) {
112
187
  this.child.kill('SIGINT');
113
188
  setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"jobProcess.js","sourceRoot":"","sources":["../../../../src/jobs/child/jobProcess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobProcess.js","sourceRoot":"","sources":["../../../../src/jobs/child/jobProcess.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,126 @@
1
+ /**
2
+ * @module jobs/child-pool
3
+ * @description Child process pool manager. Maintains a set of child processes, distributes tasks
4
+ * through a load balancing algorithm, avoiding the overhead of frequent process creation and destruction.
5
+ *
6
+ * Core features:
7
+ * - Pool size: min=3, max=6, configurable
8
+ * - Load balancing: supports multiple algorithms (polling/weights/random, etc.), default is polling
9
+ * - Process binding: binds specific IDs to fixed processes via boundMap (e.g. session binding)
10
+ * - Auto cleanup: child processes are automatically removed from the pool on exit/error
11
+ *
12
+ * Usage:
13
+ * ```ts
14
+ * const pool = new ChildPoolJob();
15
+ * await pool.create(3); // Create 3 child processes
16
+ * await pool.run('service/job'); // Load balancer selects a process to execute
17
+ * ```
18
+ */
1
19
  import { EventEmitter } from 'events';
2
20
  import { LoadBalancer } from '../load-balancer/index.js';
3
21
  import { JobProcess } from '../child/jobProcess.js';
4
22
  import type { JobsConfig } from '../../types/index.js';
23
+ /** Child process pool options */
5
24
  export interface ChildPoolOptions {
25
+ /** Weight values for each process (used by weighted load balancing algorithms) */
6
26
  weights?: number[];
7
27
  }
28
+ /**
29
+ * ChildPoolJob - Child process pool
30
+ *
31
+ * Manages a set of child processes, distributes tasks through LoadBalancer.
32
+ * Inherits EventEmitter, listens for child process exit/error events for auto cleanup.
33
+ */
8
34
  export declare class ChildPoolJob extends EventEmitter {
35
+ /** Task configuration */
9
36
  config: JobsConfig;
37
+ /** Binding map: boundId -> pid (binds specific IDs to fixed processes) */
10
38
  boundMap: Map<string | number, number>;
39
+ /** Child process pool: pid -> JobProcess */
11
40
  children: Record<number, JobProcess>;
41
+ /** Minimum number of processes */
12
42
  min: number;
43
+ /** Maximum number of processes */
13
44
  max: number;
45
+ /** Load balancing strategy name */
14
46
  strategy: string;
47
+ /** Weight array for each process */
15
48
  weights: number[];
49
+ /** Load balancer instance */
16
50
  LB: LoadBalancer;
17
51
  constructor(opt?: ChildPoolOptions);
52
+ /**
53
+ * Initialize event listeners
54
+ *
55
+ * Automatically removes child processes from the pool and load balancer on exit or error.
56
+ */
18
57
  _initEvents(): void;
58
+ /**
59
+ * Remove a child process from the pool
60
+ *
61
+ * Removes from both children map and load balancer.
62
+ */
19
63
  _removeChild(pid: number): void;
64
+ /**
65
+ * Create a specified number of child processes
66
+ *
67
+ * New processes are added to the pool and load balancer.
68
+ * The count is limited by max; excess processes will not be created.
69
+ *
70
+ * @param number - Number of processes to create
71
+ * @returns List of all process PIDs after creation
72
+ * @throws Throws an error if the count is invalid or exceeds the maximum limit
73
+ */
20
74
  create(number?: number): Promise<string[]>;
75
+ /**
76
+ * Registration handling after child process creation
77
+ *
78
+ * Adds the process to the children map and load balancer.
79
+ */
21
80
  _childCreated(childProcess: JobProcess): void;
81
+ /**
82
+ * Execute a task file
83
+ *
84
+ * Selects a child process via the load balancer and sends a run command to execute the task.
85
+ *
86
+ * @param filepath - Task file path
87
+ * @param params - Task parameters
88
+ * @returns The child process instance executing the task
89
+ */
22
90
  run(filepath: string, params?: Record<string, unknown>): Promise<JobProcess>;
91
+ /**
92
+ * Asynchronously execute a task file (alias for run)
93
+ */
23
94
  runPromise(filepath: string, params?: Record<string, unknown>): Promise<JobProcess>;
95
+ /**
96
+ * Get a bound child process
97
+ *
98
+ * The same boundId is always assigned to the same child process, suitable for session binding scenarios.
99
+ * If the bound process no longer exists, a new process is reassigned.
100
+ *
101
+ * @param boundId - Binding identifier (e.g. user ID, session ID)
102
+ * @returns Child process instance
103
+ */
24
104
  getBoundChild(boundId: string | number): Promise<JobProcess>;
105
+ /** Get a child process by PID */
25
106
  getChildByPid(pid: number): JobProcess | null;
107
+ /**
108
+ * Get an available child process
109
+ *
110
+ * If the pool is empty, automatically creates one.
111
+ * Uses the load balancer to select a process.
112
+ *
113
+ * @returns Child process instance
114
+ * @throws Throws an error if retrieval fails
115
+ */
26
116
  getChild(): Promise<JobProcess>;
117
+ /** Get PID list of all child processes */
27
118
  getPids(): string[];
119
+ /**
120
+ * Kill all child processes
121
+ *
122
+ * @param type - Kill mode: 'parallel' kills all at once, 'sequence' kills one per second
123
+ */
28
124
  killAll(type?: 'sequence' | 'parallel'): void;
29
125
  }
30
126
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/jobs/child-pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAA0B,MAAM,wBAAwB,CAAC;AAI5E,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,sBAAsB,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,EAAE,YAAY,CAAC;gBAEL,GAAG,GAAE,gBAAqB;IAgCtC,WAAW,IAAI,IAAI;IAanB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUzB,MAAM,CAAC,MAAM,SAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2B3C,aAAa,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI;IAevC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAShF,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvF,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAclE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAIvC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAwBrC,OAAO,IAAI,MAAM,EAAE;IAInB,OAAO,CAAC,IAAI,GAAE,UAAU,GAAG,UAAuB,GAAG,IAAI;CAgB1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/jobs/child-pool/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAA0B,MAAM,wBAAwB,CAAC;AAI5E,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,sBAAsB,CAAC;AAE7E,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6BAA6B;IAC7B,EAAE,EAAE,YAAY,CAAC;gBAEL,GAAG,GAAE,gBAAqB;IAiCtC;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAanB;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU/B;;;;;;;;;OASG;IACG,MAAM,CAAC,MAAM,SAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2B3C;;;;OAIG;IACH,aAAa,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI;IAc7C;;;;;;;;OAQG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQtF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7F;;;;;;;;OAQG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAelE,iCAAiC;IACjC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAI7C;;;;;;;;OAQG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IA0BrC,0CAA0C;IAC1C,OAAO,IAAI,MAAM,EAAE;IAInB;;;;OAIG;IACH,OAAO,CAAC,IAAI,GAAE,UAAU,GAAG,UAAuB,GAAG,IAAI;CAgB1D"}
@@ -1,6 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChildPoolJob = void 0;
4
+ /**
5
+ * @module jobs/child-pool
6
+ * @description Child process pool manager. Maintains a set of child processes, distributes tasks
7
+ * through a load balancing algorithm, avoiding the overhead of frequent process creation and destruction.
8
+ *
9
+ * Core features:
10
+ * - Pool size: min=3, max=6, configurable
11
+ * - Load balancing: supports multiple algorithms (polling/weights/random, etc.), default is polling
12
+ * - Process binding: binds specific IDs to fixed processes via boundMap (e.g. session binding)
13
+ * - Auto cleanup: child processes are automatically removed from the pool on exit/error
14
+ *
15
+ * Usage:
16
+ * ```ts
17
+ * const pool = new ChildPoolJob();
18
+ * await pool.create(3); // Create 3 child processes
19
+ * await pool.run('service/job'); // Load balancer selects a process to execute
20
+ * ```
21
+ */
4
22
  const events_1 = require("events");
5
23
  const index_js_1 = require("../load-balancer/index.js");
6
24
  const index_js_2 = require("../../loader/index.js");
@@ -8,6 +26,12 @@ const jobProcess_js_1 = require("../child/jobProcess.js");
8
26
  const channel_js_1 = require("../../const/channel.js");
9
27
  const helper_js_1 = require("../../utils/helper.js");
10
28
  const index_js_3 = require("../../config/index.js");
29
+ /**
30
+ * ChildPoolJob - Child process pool
31
+ *
32
+ * Manages a set of child processes, distributes tasks through LoadBalancer.
33
+ * Inherits EventEmitter, listens for child process exit/error events for auto cleanup.
34
+ */
11
35
  class ChildPoolJob extends events_1.EventEmitter {
12
36
  constructor(opt = {}) {
13
37
  super();
@@ -21,6 +45,7 @@ class ChildPoolJob extends events_1.EventEmitter {
21
45
  this.min = 3;
22
46
  this.max = 6;
23
47
  this.strategy = 'polling';
48
+ // Default weight is 1, can be customized via configuration
24
49
  this.weights = new Array(this.max).fill(0).map((_v, i) => {
25
50
  const w = options.weights[i];
26
51
  return (0, helper_js_1.validValue)(w) ? w : 1;
@@ -36,6 +61,11 @@ class ChildPoolJob extends events_1.EventEmitter {
36
61
  }
37
62
  this._initEvents();
38
63
  }
64
+ /**
65
+ * Initialize event listeners
66
+ *
67
+ * Automatically removes child processes from the pool and load balancer on exit or error.
68
+ */
39
69
  _initEvents() {
40
70
  this.on(channel_js_1.Events.childProcessExit, (data) => {
41
71
  if (data.pid !== undefined) {
@@ -48,6 +78,11 @@ class ChildPoolJob extends events_1.EventEmitter {
48
78
  }
49
79
  });
50
80
  }
81
+ /**
82
+ * Remove a child process from the pool
83
+ *
84
+ * Removes from both children map and load balancer.
85
+ */
51
86
  _removeChild(pid) {
52
87
  const length = Object.keys(this.children).length;
53
88
  const lbOpt = {
@@ -57,6 +92,16 @@ class ChildPoolJob extends events_1.EventEmitter {
57
92
  this.LB.del(lbOpt);
58
93
  delete this.children[pid];
59
94
  }
95
+ /**
96
+ * Create a specified number of child processes
97
+ *
98
+ * New processes are added to the pool and load balancer.
99
+ * The count is limited by max; excess processes will not be created.
100
+ *
101
+ * @param number - Number of processes to create
102
+ * @returns List of all process PIDs after creation
103
+ * @throws Throws an error if the count is invalid or exceeds the maximum limit
104
+ */
60
105
  async create(number = 3) {
61
106
  if (number < 0 || number > this.max) {
62
107
  throw new Error('[ee-core] [jobs/child-pool] The number is invalid !');
@@ -65,6 +110,7 @@ class ChildPoolJob extends events_1.EventEmitter {
65
110
  if (currentNumber > this.max) {
66
111
  throw new Error(`[ee-core] [jobs/child-pool] The number of current processes number: ${currentNumber} is greater than the maximum: ${this.max} !`);
67
112
  }
113
+ // Adjust creation count to not exceed maximum limit
68
114
  if (number + currentNumber > this.max) {
69
115
  number = this.max - currentNumber;
70
116
  }
@@ -79,7 +125,11 @@ class ChildPoolJob extends events_1.EventEmitter {
79
125
  }
80
126
  return Object.keys(this.children);
81
127
  }
82
- // Post creation processing of child processes
128
+ /**
129
+ * Registration handling after child process creation
130
+ *
131
+ * Adds the process to the children map and load balancer.
132
+ */
83
133
  _childCreated(childProcess) {
84
134
  const pid = childProcess.pid;
85
135
  if (pid === undefined)
@@ -92,18 +142,36 @@ class ChildPoolJob extends events_1.EventEmitter {
92
142
  };
93
143
  this.LB.add(lbTask);
94
144
  }
95
- // Execute a job file
145
+ /**
146
+ * Execute a task file
147
+ *
148
+ * Selects a child process via the load balancer and sends a run command to execute the task.
149
+ *
150
+ * @param filepath - Task file path
151
+ * @param params - Task parameters
152
+ * @returns The child process instance executing the task
153
+ */
96
154
  async run(filepath, params = {}) {
97
155
  const jobPath = (0, index_js_2.getFullpath)(filepath);
98
156
  const childProcess = await this.getChild();
99
157
  childProcess.dispatch('run', jobPath, params);
100
158
  return childProcess;
101
159
  }
102
- // Asynchronous execution of a job file
160
+ /**
161
+ * Asynchronously execute a task file (alias for run)
162
+ */
103
163
  async runPromise(filepath, params = {}) {
104
164
  return this.run(filepath, params);
105
165
  }
106
- // Get the bound process object
166
+ /**
167
+ * Get a bound child process
168
+ *
169
+ * The same boundId is always assigned to the same child process, suitable for session binding scenarios.
170
+ * If the bound process no longer exists, a new process is reassigned.
171
+ *
172
+ * @param boundId - Binding identifier (e.g. user ID, session ID)
173
+ * @returns Child process instance
174
+ */
107
175
  async getBoundChild(boundId) {
108
176
  let proc;
109
177
  const boundPid = this.boundMap.get(boundId);
@@ -112,17 +180,29 @@ class ChildPoolJob extends events_1.EventEmitter {
112
180
  if (proc)
113
181
  return proc;
114
182
  }
183
+ // Bound process does not exist, retrieve and bind a new one
115
184
  proc = await this.getChild();
116
185
  this.boundMap.set(boundId, proc.pid ?? 0);
117
186
  return proc;
118
187
  }
188
+ /** Get a child process by PID */
119
189
  getChildByPid(pid) {
120
190
  return this.children[pid] || null;
121
191
  }
192
+ /**
193
+ * Get an available child process
194
+ *
195
+ * If the pool is empty, automatically creates one.
196
+ * Uses the load balancer to select a process.
197
+ *
198
+ * @returns Child process instance
199
+ * @throws Throws an error if retrieval fails
200
+ */
122
201
  async getChild() {
123
202
  let proc;
124
203
  const currentPids = Object.keys(this.children);
125
204
  if (currentPids.length === 0) {
205
+ // Pool is empty, auto-create
126
206
  const subIds = await this.create(1);
127
207
  const firstId = subIds[0];
128
208
  if (firstId) {
@@ -130,6 +210,7 @@ class ChildPoolJob extends events_1.EventEmitter {
130
210
  }
131
211
  }
132
212
  else {
213
+ // Select via load balancer
133
214
  const picked = this.LB.pickOne();
134
215
  if (picked && typeof picked.id === 'number') {
135
216
  proc = this.children[picked.id];
@@ -140,9 +221,15 @@ class ChildPoolJob extends events_1.EventEmitter {
140
221
  }
141
222
  return proc;
142
223
  }
224
+ /** Get PID list of all child processes */
143
225
  getPids() {
144
226
  return Object.keys(this.children);
145
227
  }
228
+ /**
229
+ * Kill all child processes
230
+ *
231
+ * @param type - Kill mode: 'parallel' kills all at once, 'sequence' kills one per second
232
+ */
146
233
  killAll(type = 'parallel') {
147
234
  let i = 1;
148
235
  Object.keys(this.children).forEach(key => {