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

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 (453) hide show
  1. package/dist/cjs/app/application.d.ts +36 -1
  2. package/dist/cjs/app/application.d.ts.map +1 -1
  3. package/dist/cjs/app/application.js +49 -2
  4. package/dist/cjs/app/application.js.map +1 -1
  5. package/dist/cjs/app/boot.d.ts +56 -1
  6. package/dist/cjs/app/boot.d.ts.map +1 -1
  7. package/dist/cjs/app/boot.js +74 -11
  8. package/dist/cjs/app/boot.js.map +1 -1
  9. package/dist/cjs/app/dir.d.ts +10 -0
  10. package/dist/cjs/app/dir.d.ts.map +1 -1
  11. package/dist/cjs/app/dir.js +71 -10
  12. package/dist/cjs/app/dir.js.map +1 -1
  13. package/dist/cjs/app/events.d.ts +58 -2
  14. package/dist/cjs/app/events.d.ts.map +1 -1
  15. package/dist/cjs/app/events.js +92 -12
  16. package/dist/cjs/app/events.js.map +1 -1
  17. package/dist/cjs/config/config_loader.d.ts +44 -0
  18. package/dist/cjs/config/config_loader.d.ts.map +1 -1
  19. package/dist/cjs/config/config_loader.js +82 -1
  20. package/dist/cjs/config/config_loader.js.map +1 -1
  21. package/dist/cjs/config/default_config.d.ts +5 -0
  22. package/dist/cjs/config/default_config.d.ts.map +1 -1
  23. package/dist/cjs/config/default_config.js +98 -11
  24. package/dist/cjs/config/default_config.js.map +1 -1
  25. package/dist/cjs/config/index.d.ts +31 -1
  26. package/dist/cjs/config/index.d.ts.map +1 -1
  27. package/dist/cjs/config/index.js +52 -0
  28. package/dist/cjs/config/index.js.map +1 -1
  29. package/dist/cjs/const/channel.d.ts +17 -0
  30. package/dist/cjs/const/channel.d.ts.map +1 -1
  31. package/dist/cjs/const/channel.js +17 -0
  32. package/dist/cjs/const/channel.js.map +1 -1
  33. package/dist/cjs/controller/controller_loader.d.ts +20 -1
  34. package/dist/cjs/controller/controller_loader.d.ts.map +1 -1
  35. package/dist/cjs/controller/controller_loader.js +89 -9
  36. package/dist/cjs/controller/controller_loader.js.map +1 -1
  37. package/dist/cjs/controller/index.d.ts +32 -0
  38. package/dist/cjs/controller/index.d.ts.map +1 -1
  39. package/dist/cjs/controller/index.js +66 -0
  40. package/dist/cjs/controller/index.js.map +1 -1
  41. package/dist/cjs/core/loader/file_loader.d.ts +78 -27
  42. package/dist/cjs/core/loader/file_loader.d.ts.map +1 -1
  43. package/dist/cjs/core/loader/file_loader.js +194 -68
  44. package/dist/cjs/core/loader/file_loader.js.map +1 -1
  45. package/dist/cjs/core/utils/index.d.ts +57 -2
  46. package/dist/cjs/core/utils/index.d.ts.map +1 -1
  47. package/dist/cjs/core/utils/index.js +120 -12
  48. package/dist/cjs/core/utils/index.js.map +1 -1
  49. package/dist/cjs/core/utils/timing.d.ts +47 -0
  50. package/dist/cjs/core/utils/timing.d.ts.map +1 -1
  51. package/dist/cjs/core/utils/timing.js +42 -2
  52. package/dist/cjs/core/utils/timing.js.map +1 -1
  53. package/dist/cjs/cross/cross.d.ts +81 -2
  54. package/dist/cjs/cross/cross.d.ts.map +1 -1
  55. package/dist/cjs/cross/cross.js +86 -16
  56. package/dist/cjs/cross/cross.js.map +1 -1
  57. package/dist/cjs/cross/crossProcess.d.ts +85 -14
  58. package/dist/cjs/cross/crossProcess.d.ts.map +1 -1
  59. package/dist/cjs/cross/crossProcess.js +85 -13
  60. package/dist/cjs/cross/crossProcess.js.map +1 -1
  61. package/dist/cjs/electron/app/index.d.ts +17 -1
  62. package/dist/cjs/electron/app/index.d.ts.map +1 -1
  63. package/dist/cjs/electron/app/index.js +27 -3
  64. package/dist/cjs/electron/app/index.js.map +1 -1
  65. package/dist/cjs/electron/index.d.ts +6 -0
  66. package/dist/cjs/electron/index.d.ts.map +1 -1
  67. package/dist/cjs/electron/index.js +16 -1
  68. package/dist/cjs/electron/index.js.map +1 -1
  69. package/dist/cjs/electron/window/index.d.ts +37 -0
  70. package/dist/cjs/electron/window/index.d.ts.map +1 -1
  71. package/dist/cjs/electron/window/index.js +144 -88
  72. package/dist/cjs/electron/window/index.js.map +1 -1
  73. package/dist/cjs/exception/index.d.ts +12 -0
  74. package/dist/cjs/exception/index.d.ts.map +1 -1
  75. package/dist/cjs/exception/index.js +67 -9
  76. package/dist/cjs/exception/index.js.map +1 -1
  77. package/dist/cjs/html/index.d.ts +19 -0
  78. package/dist/cjs/html/index.d.ts.map +1 -1
  79. package/dist/cjs/html/index.js +42 -0
  80. package/dist/cjs/html/index.js.map +1 -1
  81. package/dist/cjs/index.d.ts +35 -7
  82. package/dist/cjs/index.d.ts.map +1 -1
  83. package/dist/cjs/index.js +127 -80
  84. package/dist/cjs/index.js.map +1 -1
  85. package/dist/cjs/jobs/child/app.js +86 -25
  86. package/dist/cjs/jobs/child/app.js.map +1 -1
  87. package/dist/cjs/jobs/child/index.d.ts +5 -5
  88. package/dist/cjs/jobs/child/index.js +5 -5
  89. package/dist/cjs/jobs/child/jobProcess.d.ts +68 -0
  90. package/dist/cjs/jobs/child/jobProcess.d.ts.map +1 -1
  91. package/dist/cjs/jobs/child/jobProcess.js +86 -11
  92. package/dist/cjs/jobs/child/jobProcess.js.map +1 -1
  93. package/dist/cjs/jobs/child-pool/index.d.ts +96 -0
  94. package/dist/cjs/jobs/child-pool/index.d.ts.map +1 -1
  95. package/dist/cjs/jobs/child-pool/index.js +91 -4
  96. package/dist/cjs/jobs/child-pool/index.js.map +1 -1
  97. package/dist/cjs/jobs/index.d.ts +10 -0
  98. package/dist/cjs/jobs/index.d.ts.map +1 -1
  99. package/dist/cjs/jobs/index.js +10 -0
  100. package/dist/cjs/jobs/index.js.map +1 -1
  101. package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts +2 -0
  102. package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts.map +1 -1
  103. package/dist/cjs/jobs/load-balancer/algorithm/index.js +6 -0
  104. package/dist/cjs/jobs/load-balancer/algorithm/index.js.map +1 -1
  105. package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.d.ts +1 -1
  106. package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.js +1 -1
  107. package/dist/cjs/jobs/load-balancer/algorithm/polling.d.ts +1 -1
  108. package/dist/cjs/jobs/load-balancer/algorithm/polling.js +1 -1
  109. package/dist/cjs/jobs/load-balancer/algorithm/random.d.ts +1 -1
  110. package/dist/cjs/jobs/load-balancer/algorithm/random.js +1 -1
  111. package/dist/cjs/jobs/load-balancer/algorithm/specify.d.ts +1 -1
  112. package/dist/cjs/jobs/load-balancer/algorithm/specify.js +1 -1
  113. package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts +1 -1
  114. package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts.map +1 -1
  115. package/dist/cjs/jobs/load-balancer/algorithm/weights.js +4 -8
  116. package/dist/cjs/jobs/load-balancer/algorithm/weights.js.map +1 -1
  117. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +1 -1
  118. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -1
  119. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js +6 -11
  120. package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -1
  121. package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.d.ts +1 -1
  122. package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.js +1 -1
  123. package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.d.ts +1 -1
  124. package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.js +1 -1
  125. package/dist/cjs/jobs/load-balancer/consts.d.ts +22 -0
  126. package/dist/cjs/jobs/load-balancer/consts.d.ts.map +1 -1
  127. package/dist/cjs/jobs/load-balancer/consts.js +22 -0
  128. package/dist/cjs/jobs/load-balancer/consts.js.map +1 -1
  129. package/dist/cjs/jobs/load-balancer/index.d.ts +18 -18
  130. package/dist/cjs/jobs/load-balancer/index.js +18 -18
  131. package/dist/cjs/jobs/load-balancer/scheduler.d.ts +3 -3
  132. package/dist/cjs/jobs/load-balancer/scheduler.js +3 -3
  133. package/dist/cjs/jobs/load-balancer/types.d.ts +21 -0
  134. package/dist/cjs/jobs/load-balancer/types.d.ts.map +1 -1
  135. package/dist/cjs/jobs/load-balancer/types.js +4 -0
  136. package/dist/cjs/jobs/load-balancer/types.js.map +1 -1
  137. package/dist/cjs/jobs/registry.d.ts +24 -0
  138. package/dist/cjs/jobs/registry.d.ts.map +1 -0
  139. package/dist/cjs/jobs/registry.js +52 -0
  140. package/dist/cjs/jobs/registry.js.map +1 -0
  141. package/dist/cjs/loader/index.d.ts +52 -0
  142. package/dist/cjs/loader/index.d.ts.map +1 -1
  143. package/dist/cjs/loader/index.js +79 -10
  144. package/dist/cjs/loader/index.js.map +1 -1
  145. package/dist/cjs/log/index.d.ts +41 -0
  146. package/dist/cjs/log/index.d.ts.map +1 -1
  147. package/dist/cjs/log/index.js +59 -20
  148. package/dist/cjs/log/index.js.map +1 -1
  149. package/dist/cjs/log/logger.d.ts +26 -0
  150. package/dist/cjs/log/logger.d.ts.map +1 -1
  151. package/dist/cjs/log/logger.js +122 -2
  152. package/dist/cjs/log/logger.js.map +1 -1
  153. package/dist/cjs/message/childMessage.d.ts +50 -0
  154. package/dist/cjs/message/childMessage.d.ts.map +1 -1
  155. package/dist/cjs/message/childMessage.js +83 -2
  156. package/dist/cjs/message/childMessage.js.map +1 -1
  157. package/dist/cjs/ps/index.d.ts +112 -0
  158. package/dist/cjs/ps/index.d.ts.map +1 -1
  159. package/dist/cjs/ps/index.js +175 -41
  160. package/dist/cjs/ps/index.js.map +1 -1
  161. package/dist/cjs/socket/httpServer.d.ts +58 -5
  162. package/dist/cjs/socket/httpServer.d.ts.map +1 -1
  163. package/dist/cjs/socket/httpServer.js +94 -28
  164. package/dist/cjs/socket/httpServer.js.map +1 -1
  165. package/dist/cjs/socket/index.d.ts +45 -3
  166. package/dist/cjs/socket/index.d.ts.map +1 -1
  167. package/dist/cjs/socket/index.js +50 -14
  168. package/dist/cjs/socket/index.js.map +1 -1
  169. package/dist/cjs/socket/ipcServer.d.ts +31 -1
  170. package/dist/cjs/socket/ipcServer.d.ts.map +1 -1
  171. package/dist/cjs/socket/ipcServer.js +60 -43
  172. package/dist/cjs/socket/ipcServer.js.map +1 -1
  173. package/dist/cjs/socket/socketServer.d.ts +32 -1
  174. package/dist/cjs/socket/socketServer.d.ts.map +1 -1
  175. package/dist/cjs/socket/socketServer.js +53 -14
  176. package/dist/cjs/socket/socketServer.js.map +1 -1
  177. package/dist/cjs/socket/utils.d.ts +13 -0
  178. package/dist/cjs/socket/utils.d.ts.map +1 -0
  179. package/dist/cjs/socket/utils.js +41 -0
  180. package/dist/cjs/socket/utils.js.map +1 -0
  181. package/dist/cjs/storage/sqliteStorage.d.ts +93 -4
  182. package/dist/cjs/storage/sqliteStorage.d.ts.map +1 -1
  183. package/dist/cjs/storage/sqliteStorage.js +121 -9
  184. package/dist/cjs/storage/sqliteStorage.js.map +1 -1
  185. package/dist/cjs/types/index.d.ts +373 -5
  186. package/dist/cjs/types/index.d.ts.map +1 -1
  187. package/dist/cjs/utils/extend.d.ts +44 -1
  188. package/dist/cjs/utils/extend.d.ts.map +1 -1
  189. package/dist/cjs/utils/extend.js +67 -19
  190. package/dist/cjs/utils/extend.js.map +1 -1
  191. package/dist/cjs/utils/helper.d.ts +154 -1
  192. package/dist/cjs/utils/helper.d.ts.map +1 -1
  193. package/dist/cjs/utils/helper.js +205 -28
  194. package/dist/cjs/utils/helper.js.map +1 -1
  195. package/dist/cjs/utils/index.d.ts +93 -0
  196. package/dist/cjs/utils/index.d.ts.map +1 -1
  197. package/dist/cjs/utils/index.js +136 -12
  198. package/dist/cjs/utils/index.js.map +1 -1
  199. package/dist/cjs/utils/ip.d.ts +29 -0
  200. package/dist/cjs/utils/ip.d.ts.map +1 -1
  201. package/dist/cjs/utils/ip.js +95 -4
  202. package/dist/cjs/utils/ip.js.map +1 -1
  203. package/dist/cjs/utils/is.d.ts +123 -0
  204. package/dist/cjs/utils/is.d.ts.map +1 -1
  205. package/dist/cjs/utils/is.js +126 -14
  206. package/dist/cjs/utils/is.js.map +1 -1
  207. package/dist/cjs/utils/json.d.ts +54 -0
  208. package/dist/cjs/utils/json.d.ts.map +1 -1
  209. package/dist/cjs/utils/json.js +62 -0
  210. package/dist/cjs/utils/json.js.map +1 -1
  211. package/dist/cjs/utils/pargv.d.ts +51 -0
  212. package/dist/cjs/utils/pargv.d.ts.map +1 -1
  213. package/dist/cjs/utils/pargv.js +141 -3
  214. package/dist/cjs/utils/pargv.js.map +1 -1
  215. package/dist/cjs/utils/port/index.d.ts +42 -0
  216. package/dist/cjs/utils/port/index.d.ts.map +1 -1
  217. package/dist/cjs/utils/port/index.js +130 -7
  218. package/dist/cjs/utils/port/index.js.map +1 -1
  219. package/dist/cjs/utils/type_check.d.ts +79 -0
  220. package/dist/cjs/utils/type_check.d.ts.map +1 -1
  221. package/dist/cjs/utils/type_check.js +87 -1
  222. package/dist/cjs/utils/type_check.js.map +1 -1
  223. package/dist/cjs/utils/wrap.d.ts +26 -0
  224. package/dist/cjs/utils/wrap.d.ts.map +1 -1
  225. package/dist/cjs/utils/wrap.js +47 -10
  226. package/dist/cjs/utils/wrap.js.map +1 -1
  227. package/dist/esm/app/application.d.ts +36 -1
  228. package/dist/esm/app/application.d.ts.map +1 -1
  229. package/dist/esm/app/application.js +49 -2
  230. package/dist/esm/app/application.js.map +1 -1
  231. package/dist/esm/app/boot.d.ts +56 -1
  232. package/dist/esm/app/boot.d.ts.map +1 -1
  233. package/dist/esm/app/boot.js +74 -11
  234. package/dist/esm/app/boot.js.map +1 -1
  235. package/dist/esm/app/dir.d.ts +10 -0
  236. package/dist/esm/app/dir.d.ts.map +1 -1
  237. package/dist/esm/app/dir.js +71 -10
  238. package/dist/esm/app/dir.js.map +1 -1
  239. package/dist/esm/app/events.d.ts +58 -2
  240. package/dist/esm/app/events.d.ts.map +1 -1
  241. package/dist/esm/app/events.js +92 -12
  242. package/dist/esm/app/events.js.map +1 -1
  243. package/dist/esm/config/config_loader.d.ts +44 -0
  244. package/dist/esm/config/config_loader.d.ts.map +1 -1
  245. package/dist/esm/config/config_loader.js +82 -1
  246. package/dist/esm/config/config_loader.js.map +1 -1
  247. package/dist/esm/config/default_config.d.ts +5 -0
  248. package/dist/esm/config/default_config.d.ts.map +1 -1
  249. package/dist/esm/config/default_config.js +98 -11
  250. package/dist/esm/config/default_config.js.map +1 -1
  251. package/dist/esm/config/index.d.ts +31 -1
  252. package/dist/esm/config/index.d.ts.map +1 -1
  253. package/dist/esm/config/index.js +52 -0
  254. package/dist/esm/config/index.js.map +1 -1
  255. package/dist/esm/const/channel.d.ts +17 -0
  256. package/dist/esm/const/channel.d.ts.map +1 -1
  257. package/dist/esm/const/channel.js +17 -0
  258. package/dist/esm/const/channel.js.map +1 -1
  259. package/dist/esm/controller/controller_loader.d.ts +20 -1
  260. package/dist/esm/controller/controller_loader.d.ts.map +1 -1
  261. package/dist/esm/controller/controller_loader.js +89 -9
  262. package/dist/esm/controller/controller_loader.js.map +1 -1
  263. package/dist/esm/controller/index.d.ts +32 -0
  264. package/dist/esm/controller/index.d.ts.map +1 -1
  265. package/dist/esm/controller/index.js +66 -0
  266. package/dist/esm/controller/index.js.map +1 -1
  267. package/dist/esm/core/loader/file_loader.d.ts +78 -27
  268. package/dist/esm/core/loader/file_loader.d.ts.map +1 -1
  269. package/dist/esm/core/loader/file_loader.js +194 -68
  270. package/dist/esm/core/loader/file_loader.js.map +1 -1
  271. package/dist/esm/core/utils/index.d.ts +57 -2
  272. package/dist/esm/core/utils/index.d.ts.map +1 -1
  273. package/dist/esm/core/utils/index.js +87 -12
  274. package/dist/esm/core/utils/index.js.map +1 -1
  275. package/dist/esm/core/utils/timing.d.ts +47 -0
  276. package/dist/esm/core/utils/timing.d.ts.map +1 -1
  277. package/dist/esm/core/utils/timing.js +42 -2
  278. package/dist/esm/core/utils/timing.js.map +1 -1
  279. package/dist/esm/cross/cross.d.ts +81 -2
  280. package/dist/esm/cross/cross.d.ts.map +1 -1
  281. package/dist/esm/cross/cross.js +86 -16
  282. package/dist/esm/cross/cross.js.map +1 -1
  283. package/dist/esm/cross/crossProcess.d.ts +85 -14
  284. package/dist/esm/cross/crossProcess.d.ts.map +1 -1
  285. package/dist/esm/cross/crossProcess.js +85 -13
  286. package/dist/esm/cross/crossProcess.js.map +1 -1
  287. package/dist/esm/electron/app/index.d.ts +17 -1
  288. package/dist/esm/electron/app/index.d.ts.map +1 -1
  289. package/dist/esm/electron/app/index.js +27 -3
  290. package/dist/esm/electron/app/index.js.map +1 -1
  291. package/dist/esm/electron/index.d.ts +6 -0
  292. package/dist/esm/electron/index.d.ts.map +1 -1
  293. package/dist/esm/electron/index.js +16 -1
  294. package/dist/esm/electron/index.js.map +1 -1
  295. package/dist/esm/electron/window/index.d.ts +37 -0
  296. package/dist/esm/electron/window/index.d.ts.map +1 -1
  297. package/dist/esm/electron/window/index.js +144 -88
  298. package/dist/esm/electron/window/index.js.map +1 -1
  299. package/dist/esm/exception/index.d.ts +12 -0
  300. package/dist/esm/exception/index.d.ts.map +1 -1
  301. package/dist/esm/exception/index.js +67 -9
  302. package/dist/esm/exception/index.js.map +1 -1
  303. package/dist/esm/html/index.d.ts +19 -0
  304. package/dist/esm/html/index.d.ts.map +1 -1
  305. package/dist/esm/html/index.js +42 -0
  306. package/dist/esm/html/index.js.map +1 -1
  307. package/dist/esm/index.d.ts +35 -7
  308. package/dist/esm/index.d.ts.map +1 -1
  309. package/dist/esm/index.js +127 -80
  310. package/dist/esm/index.js.map +1 -1
  311. package/dist/esm/jobs/child/app.js +86 -25
  312. package/dist/esm/jobs/child/app.js.map +1 -1
  313. package/dist/esm/jobs/child/index.d.ts +5 -5
  314. package/dist/esm/jobs/child/index.js +5 -5
  315. package/dist/esm/jobs/child/jobProcess.d.ts +68 -0
  316. package/dist/esm/jobs/child/jobProcess.d.ts.map +1 -1
  317. package/dist/esm/jobs/child/jobProcess.js +86 -11
  318. package/dist/esm/jobs/child/jobProcess.js.map +1 -1
  319. package/dist/esm/jobs/child-pool/index.d.ts +96 -0
  320. package/dist/esm/jobs/child-pool/index.d.ts.map +1 -1
  321. package/dist/esm/jobs/child-pool/index.js +91 -4
  322. package/dist/esm/jobs/child-pool/index.js.map +1 -1
  323. package/dist/esm/jobs/index.d.ts +10 -0
  324. package/dist/esm/jobs/index.d.ts.map +1 -1
  325. package/dist/esm/jobs/index.js +10 -0
  326. package/dist/esm/jobs/index.js.map +1 -1
  327. package/dist/esm/jobs/load-balancer/algorithm/index.d.ts +2 -0
  328. package/dist/esm/jobs/load-balancer/algorithm/index.d.ts.map +1 -1
  329. package/dist/esm/jobs/load-balancer/algorithm/index.js +6 -0
  330. package/dist/esm/jobs/load-balancer/algorithm/index.js.map +1 -1
  331. package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.d.ts +1 -1
  332. package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.js +1 -1
  333. package/dist/esm/jobs/load-balancer/algorithm/polling.d.ts +1 -1
  334. package/dist/esm/jobs/load-balancer/algorithm/polling.js +1 -1
  335. package/dist/esm/jobs/load-balancer/algorithm/random.d.ts +1 -1
  336. package/dist/esm/jobs/load-balancer/algorithm/random.js +1 -1
  337. package/dist/esm/jobs/load-balancer/algorithm/specify.d.ts +1 -1
  338. package/dist/esm/jobs/load-balancer/algorithm/specify.js +1 -1
  339. package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts +1 -1
  340. package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts.map +1 -1
  341. package/dist/esm/jobs/load-balancer/algorithm/weights.js +4 -8
  342. package/dist/esm/jobs/load-balancer/algorithm/weights.js.map +1 -1
  343. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +1 -1
  344. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -1
  345. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js +6 -11
  346. package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -1
  347. package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.d.ts +1 -1
  348. package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.js +1 -1
  349. package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.d.ts +1 -1
  350. package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.js +1 -1
  351. package/dist/esm/jobs/load-balancer/consts.d.ts +22 -0
  352. package/dist/esm/jobs/load-balancer/consts.d.ts.map +1 -1
  353. package/dist/esm/jobs/load-balancer/consts.js +22 -0
  354. package/dist/esm/jobs/load-balancer/consts.js.map +1 -1
  355. package/dist/esm/jobs/load-balancer/index.d.ts +18 -18
  356. package/dist/esm/jobs/load-balancer/index.js +18 -18
  357. package/dist/esm/jobs/load-balancer/scheduler.d.ts +3 -3
  358. package/dist/esm/jobs/load-balancer/scheduler.js +3 -3
  359. package/dist/esm/jobs/load-balancer/types.d.ts +21 -0
  360. package/dist/esm/jobs/load-balancer/types.d.ts.map +1 -1
  361. package/dist/esm/jobs/load-balancer/types.js +4 -0
  362. package/dist/esm/jobs/load-balancer/types.js.map +1 -1
  363. package/dist/esm/jobs/registry.d.ts +24 -0
  364. package/dist/esm/jobs/registry.d.ts.map +1 -0
  365. package/dist/esm/jobs/registry.js +52 -0
  366. package/dist/esm/jobs/registry.js.map +1 -0
  367. package/dist/esm/loader/index.d.ts +52 -0
  368. package/dist/esm/loader/index.d.ts.map +1 -1
  369. package/dist/esm/loader/index.js +79 -10
  370. package/dist/esm/loader/index.js.map +1 -1
  371. package/dist/esm/log/index.d.ts +41 -0
  372. package/dist/esm/log/index.d.ts.map +1 -1
  373. package/dist/esm/log/index.js +59 -20
  374. package/dist/esm/log/index.js.map +1 -1
  375. package/dist/esm/log/logger.d.ts +26 -0
  376. package/dist/esm/log/logger.d.ts.map +1 -1
  377. package/dist/esm/log/logger.js +122 -2
  378. package/dist/esm/log/logger.js.map +1 -1
  379. package/dist/esm/message/childMessage.d.ts +50 -0
  380. package/dist/esm/message/childMessage.d.ts.map +1 -1
  381. package/dist/esm/message/childMessage.js +83 -2
  382. package/dist/esm/message/childMessage.js.map +1 -1
  383. package/dist/esm/ps/index.d.ts +112 -0
  384. package/dist/esm/ps/index.d.ts.map +1 -1
  385. package/dist/esm/ps/index.js +175 -41
  386. package/dist/esm/ps/index.js.map +1 -1
  387. package/dist/esm/socket/httpServer.d.ts +58 -5
  388. package/dist/esm/socket/httpServer.d.ts.map +1 -1
  389. package/dist/esm/socket/httpServer.js +94 -28
  390. package/dist/esm/socket/httpServer.js.map +1 -1
  391. package/dist/esm/socket/index.d.ts +45 -3
  392. package/dist/esm/socket/index.d.ts.map +1 -1
  393. package/dist/esm/socket/index.js +50 -14
  394. package/dist/esm/socket/index.js.map +1 -1
  395. package/dist/esm/socket/ipcServer.d.ts +31 -1
  396. package/dist/esm/socket/ipcServer.d.ts.map +1 -1
  397. package/dist/esm/socket/ipcServer.js +60 -43
  398. package/dist/esm/socket/ipcServer.js.map +1 -1
  399. package/dist/esm/socket/socketServer.d.ts +32 -1
  400. package/dist/esm/socket/socketServer.d.ts.map +1 -1
  401. package/dist/esm/socket/socketServer.js +53 -14
  402. package/dist/esm/socket/socketServer.js.map +1 -1
  403. package/dist/esm/socket/utils.d.ts +13 -0
  404. package/dist/esm/socket/utils.d.ts.map +1 -0
  405. package/dist/esm/socket/utils.js +41 -0
  406. package/dist/esm/socket/utils.js.map +1 -0
  407. package/dist/esm/storage/sqliteStorage.d.ts +93 -4
  408. package/dist/esm/storage/sqliteStorage.d.ts.map +1 -1
  409. package/dist/esm/storage/sqliteStorage.js +121 -9
  410. package/dist/esm/storage/sqliteStorage.js.map +1 -1
  411. package/dist/esm/types/index.d.ts +373 -5
  412. package/dist/esm/types/index.d.ts.map +1 -1
  413. package/dist/esm/utils/extend.d.ts +44 -1
  414. package/dist/esm/utils/extend.d.ts.map +1 -1
  415. package/dist/esm/utils/extend.js +67 -19
  416. package/dist/esm/utils/extend.js.map +1 -1
  417. package/dist/esm/utils/helper.d.ts +154 -1
  418. package/dist/esm/utils/helper.d.ts.map +1 -1
  419. package/dist/esm/utils/helper.js +205 -28
  420. package/dist/esm/utils/helper.js.map +1 -1
  421. package/dist/esm/utils/index.d.ts +93 -0
  422. package/dist/esm/utils/index.d.ts.map +1 -1
  423. package/dist/esm/utils/index.js +136 -12
  424. package/dist/esm/utils/index.js.map +1 -1
  425. package/dist/esm/utils/ip.d.ts +29 -0
  426. package/dist/esm/utils/ip.d.ts.map +1 -1
  427. package/dist/esm/utils/ip.js +95 -4
  428. package/dist/esm/utils/ip.js.map +1 -1
  429. package/dist/esm/utils/is.d.ts +123 -0
  430. package/dist/esm/utils/is.d.ts.map +1 -1
  431. package/dist/esm/utils/is.js +126 -14
  432. package/dist/esm/utils/is.js.map +1 -1
  433. package/dist/esm/utils/json.d.ts +54 -0
  434. package/dist/esm/utils/json.d.ts.map +1 -1
  435. package/dist/esm/utils/json.js +62 -0
  436. package/dist/esm/utils/json.js.map +1 -1
  437. package/dist/esm/utils/pargv.d.ts +51 -0
  438. package/dist/esm/utils/pargv.d.ts.map +1 -1
  439. package/dist/esm/utils/pargv.js +141 -3
  440. package/dist/esm/utils/pargv.js.map +1 -1
  441. package/dist/esm/utils/port/index.d.ts +42 -0
  442. package/dist/esm/utils/port/index.d.ts.map +1 -1
  443. package/dist/esm/utils/port/index.js +130 -7
  444. package/dist/esm/utils/port/index.js.map +1 -1
  445. package/dist/esm/utils/type_check.d.ts +79 -0
  446. package/dist/esm/utils/type_check.d.ts.map +1 -1
  447. package/dist/esm/utils/type_check.js +87 -1
  448. package/dist/esm/utils/type_check.js.map +1 -1
  449. package/dist/esm/utils/wrap.d.ts +26 -0
  450. package/dist/esm/utils/wrap.d.ts.map +1 -1
  451. package/dist/esm/utils/wrap.js +47 -10
  452. package/dist/esm/utils/wrap.js.map +1 -1
  453. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"ipcServer.js","sourceRoot":"","sources":["../../../src/socket/ipcServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipcServer.js","sourceRoot":"","sources":["../../../src/socket/ipcServer.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,43 @@
1
1
  import { Server } from 'socket.io';
2
2
  import type { SocketServerConfig } from '../types/index.js';
3
+ /**
4
+ * SocketServer - SocketIO server
5
+ *
6
+ * Created using factory pattern (static create()), because initialization requires async port acquisition.
7
+ * When enable=false in config, the service will not start after creation.
8
+ */
3
9
  export declare class SocketServer {
10
+ /** SocketIO server configuration */
4
11
  config: SocketServerConfig;
12
+ /** Channel separator */
5
13
  channelSeparator: string;
14
+ /** Currently connected socket instance */
6
15
  socket: ReturnType<Server['on']> | undefined;
16
+ /** SocketIO Server instance */
7
17
  io: Server | undefined;
8
- constructor();
18
+ private constructor();
19
+ /**
20
+ * Factory method: create and initialize SocketServer
21
+ *
22
+ * @returns Fully initialized SocketServer instance
23
+ */
24
+ static create(): Promise<SocketServer>;
25
+ /**
26
+ * Initialize SocketIO server
27
+ *
28
+ * Acquires an available port then creates a SocketIO Server instance.
29
+ * The port number is written to process.env.EE_SOCKET_PORT for other modules to access.
30
+ */
9
31
  init(): Promise<void>;
32
+ /**
33
+ * Listen for client connections and handle messages
34
+ *
35
+ * After client connects, listens on the configured channel (default 'socket-channel').
36
+ * Upon receiving a message, routes via cmd path to the corresponding controller method for execution.
37
+ *
38
+ * Message format: { cmd: string, args: unknown }
39
+ * Return method: Results are sent back to client via callback function
40
+ */
10
41
  connect(): void;
11
42
  }
12
43
  //# sourceMappingURL=socketServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"socketServer.d.ts","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,qBAAa,YAAY;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7C,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;;IASjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,OAAO,IAAI,IAAI;CAqChB"}
1
+ {"version":3,"file":"socketServer.d.ts","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,oCAAoC;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7C,+BAA+B;IAC/B,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvB,OAAO;IAQP;;;;OAIG;WACU,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAM5C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B;;;;;;;;OAQG;IACH,OAAO,IAAI,IAAI;CA+BhB"}
@@ -4,22 +4,59 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SocketServer = void 0;
7
+ /**
8
+ * @module socket/socketServer
9
+ * @description SocketIO server. Provides WebSocket/HTTP polling communication for
10
+ * third-party software (non-Electron renderer processes) to call main process controller methods.
11
+ *
12
+ * Communication protocol:
13
+ * - After client connects, send messages on a specified channel: { cmd: 'controller/user/add', args: {...} }
14
+ * - Server parses the cmd path and calls the corresponding controller method
15
+ * - Controller execution result is returned to client via callback
16
+ *
17
+ * Use cases:
18
+ * - Local other processes (Go/Python backends) communicating with Electron main process
19
+ * - Remote control panels operating the application via WebSocket
20
+ */
7
21
  const debug_1 = __importDefault(require("debug"));
8
- const type_check_js_1 = require("../utils/type_check.js");
9
22
  const socket_io_1 = require("socket.io");
10
23
  const index_js_1 = require("../log/index.js");
11
24
  const index_js_2 = require("../config/index.js");
12
25
  const channel_js_1 = require("../const/channel.js");
13
26
  const index_js_3 = require("../controller/index.js");
14
27
  const index_js_4 = require("../utils/port/index.js");
28
+ const utils_js_1 = require("./utils.js");
15
29
  const debugLog = (0, debug_1.default)('ee-core:socket:socketServer');
30
+ /**
31
+ * SocketServer - SocketIO server
32
+ *
33
+ * Created using factory pattern (static create()), because initialization requires async port acquisition.
34
+ * When enable=false in config, the service will not start after creation.
35
+ */
16
36
  class SocketServer {
17
37
  constructor() {
18
38
  const config = (0, index_js_2.getConfig)();
19
39
  this.config = config.socketServer;
20
40
  this.channelSeparator = config.mainServer.channelSeparator || '/';
21
- this.init();
41
+ this.socket = undefined;
42
+ this.io = undefined;
22
43
  }
44
+ /**
45
+ * Factory method: create and initialize SocketServer
46
+ *
47
+ * @returns Fully initialized SocketServer instance
48
+ */
49
+ static async create() {
50
+ const instance = new SocketServer();
51
+ await instance.init();
52
+ return instance;
53
+ }
54
+ /**
55
+ * Initialize SocketIO server
56
+ *
57
+ * Acquires an available port then creates a SocketIO Server instance.
58
+ * The port number is written to process.env.EE_SOCKET_PORT for other modules to access.
59
+ */
23
60
  async init() {
24
61
  if (this.config.enable === false) {
25
62
  return;
@@ -34,6 +71,15 @@ class SocketServer {
34
71
  this.io = new socket_io_1.Server(port, this.config);
35
72
  this.connect();
36
73
  }
74
+ /**
75
+ * Listen for client connections and handle messages
76
+ *
77
+ * After client connects, listens on the configured channel (default 'socket-channel').
78
+ * Upon receiving a message, routes via cmd path to the corresponding controller method for execution.
79
+ *
80
+ * Message format: { cmd: string, args: unknown }
81
+ * Return method: Results are sent back to client via callback function
82
+ */
37
83
  connect() {
38
84
  const controller = (0, index_js_3.getController)();
39
85
  if (!this.io)
@@ -46,19 +92,8 @@ class SocketServer {
46
92
  try {
47
93
  const cmd = message.cmd;
48
94
  const args = message.args;
49
- let fn = null;
50
95
  debugLog('[socket] channel %s', cmd);
51
- if ((0, type_check_js_1.isString)(cmd)) {
52
- const actions = cmd.split(this.channelSeparator);
53
- debugLog('[findFn] channel %o', actions);
54
- let obj = { controller };
55
- actions.forEach((key) => {
56
- obj = obj[key];
57
- if (!obj)
58
- throw new Error(`class or function '${key}' not exists`);
59
- });
60
- fn = obj;
61
- }
96
+ const fn = (0, utils_js_1.resolveControllerFn)(controller, cmd, this.channelSeparator);
62
97
  if (!fn)
63
98
  throw new Error('function not exists');
64
99
  const result = await fn.call(controller, args);
@@ -68,6 +103,10 @@ class SocketServer {
68
103
  }
69
104
  catch (err) {
70
105
  index_js_1.coreLogger.error('[socket/socketServer] throw error:', err);
106
+ // Return error to client so it's not silently lost
107
+ if (callback) {
108
+ callback({ __EE_ERROR__: true, message: err instanceof Error ? err.message : String(err) });
109
+ }
71
110
  }
72
111
  });
73
112
  });
@@ -1 +1 @@
1
- {"version":3,"file":"socketServer.js","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socketServer.js","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Resolve controller function from channel/command path string
3
+ *
4
+ * Splits cmd by separator, then traverses the controller object tree level by level to find the corresponding function.
5
+ * Example: cmd='controller/user/add', separator='/' → looks up controller.user.add
6
+ *
7
+ * @param controller - Controller method mapping object
8
+ * @param cmd - Channel/command path string (non-string types return null directly)
9
+ * @param separator - Path separator
10
+ * @returns Controller method function, or null if resolution fails
11
+ */
12
+ export declare function resolveControllerFn(controller: Record<string, unknown>, cmd: string, separator: string): ((...args: unknown[]) => unknown) | null;
13
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/socket/utils.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,IAAI,CAoB1C"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveControllerFn = resolveControllerFn;
4
+ /**
5
+ * @module socket/utils
6
+ * @description Shared utility functions for the socket module.
7
+ * Provides controller function resolution, used by HttpServer, IpcServer, and SocketServer.
8
+ */
9
+ const type_check_js_1 = require("../utils/type_check.js");
10
+ const index_js_1 = require("../log/index.js");
11
+ /**
12
+ * Resolve controller function from channel/command path string
13
+ *
14
+ * Splits cmd by separator, then traverses the controller object tree level by level to find the corresponding function.
15
+ * Example: cmd='controller/user/add', separator='/' → looks up controller.user.add
16
+ *
17
+ * @param controller - Controller method mapping object
18
+ * @param cmd - Channel/command path string (non-string types return null directly)
19
+ * @param separator - Path separator
20
+ * @returns Controller method function, or null if resolution fails
21
+ */
22
+ function resolveControllerFn(controller, cmd, separator) {
23
+ // Guard: non-string types (e.g., numbers passed via WebSocket) return directly
24
+ if (typeof cmd !== 'string')
25
+ return null;
26
+ const actions = cmd.split(separator);
27
+ let obj = { controller };
28
+ for (const key of actions) {
29
+ obj = obj[key];
30
+ if (!obj) {
31
+ index_js_1.coreLogger.error(`[resolveControllerFn] class or function '${key}' not exists in path '${cmd}'`);
32
+ return null;
33
+ }
34
+ }
35
+ if (!(0, type_check_js_1.isFunction)(obj)) {
36
+ index_js_1.coreLogger.error(`[resolveControllerFn] resolved path '${cmd}' is not a function`);
37
+ return null;
38
+ }
39
+ return obj;
40
+ }
41
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/socket/utils.ts"],"names":[],"mappings":";;AAmBA,kDAwBC;AA3CD;;;;GAIG;AACH,0DAAoD;AACpD,8CAA6C;AAE7C;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CACjC,UAAmC,EACnC,GAAW,EACX,SAAiB;IAEjB,+EAA+E;IAC/E,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,GAAG,GAA4B,EAAE,UAAU,EAAE,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,GAAG,GAAG,GAAG,CAAC,GAAG,CAA4B,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,qBAAU,CAAC,KAAK,CAAC,4CAA4C,GAAG,yBAAyB,GAAG,GAAG,CAAC,CAAC;YACjG,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAA,0BAAU,EAAC,GAAG,CAAC,EAAE,CAAC;QACrB,qBAAU,CAAC,KAAK,CAAC,wCAAwC,GAAG,qBAAqB,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAiD,CAAC;AAC3D,CAAC"}
@@ -1,28 +1,117 @@
1
1
  import Database from 'better-sqlite3';
2
+ /**
3
+ * SqliteStorage - SQLite database storage class
4
+ *
5
+ * Encapsulates the database instance creation flow of better-sqlite3, automatically inferring
6
+ * the storage mode based on the provided database name and completing initialization tasks
7
+ * such as directory creation and file path calculation.
8
+ *
9
+ * Storage modes:
10
+ * - memory: In-memory database, name is ":memory:", not persisted to disk
11
+ * - onlyName: Filename only (e.g. "app.db"), stored under {dataDir}/db/
12
+ * - relative: Relative path (e.g. "sub/app.db"), resolved relative to {dataDir}/db/
13
+ * - absolute: Absolute path (e.g. "/tmp/app.db"), uses the specified path directly
14
+ *
15
+ * Security:
16
+ * The constructor validates the database name for path traversal, disallowing ".." in the name
17
+ * to prevent malicious input from accessing files outside the intended directory.
18
+ */
2
19
  export declare class SqliteStorage {
20
+ /** Database name (original input value) */
3
21
  name: string;
22
+ /** Storage mode: memory / onlyName / relative / absolute */
4
23
  mode: string;
24
+ /** Absolute path of the directory containing the database file */
5
25
  dbDir: string;
26
+ /** Database filename (only the filename part, excluding directory) */
6
27
  fileName: string;
28
+ /** better-sqlite3 database instance */
7
29
  db: Database.Database;
30
+ /**
31
+ * Create a SqliteStorage instance
32
+ *
33
+ * Initialization flow:
34
+ * 1. Validate that the name is non-empty and does not contain path traversal characters ".."
35
+ * 2. Infer storage mode from the name (getMode)
36
+ * 3. Create the database file directory (_createDatabaseDir)
37
+ * 4. Extract the filename part (_formatFileName)
38
+ * 5. Open the database connection (_initDB)
39
+ *
40
+ * @param name - Database name or path. Supports the following formats:
41
+ * - ":memory:" - In-memory database
42
+ * - "app.db" - Filename only, stored under {dataDir}/db/
43
+ * - "sub/app.db" - Relative path, relative to {dataDir}/db/
44
+ * - "/tmp/app.db" - Absolute path
45
+ * @param opt - better-sqlite3 database options, defaults merged with timeout: 5000
46
+ * @throws Asserts error if name is empty or contains ".." path traversal characters
47
+ */
8
48
  constructor(name: string, opt?: Record<string, unknown>);
9
49
  /**
10
- * 初始化db
50
+ * Initialize the database connection
51
+ *
52
+ * Determines the database path based on storage mode:
53
+ * - memory mode: Uses ":memory:" as the path, better-sqlite3 creates the database in memory
54
+ * - file mode: Uses getFilePath() to get the full database file path
55
+ *
56
+ * In file mode, additionally validates that the database file was created successfully.
57
+ * If the file does not exist, throws an assertion error (possibly due to insufficient directory permissions, etc.).
58
+ *
59
+ * @param opt - better-sqlite3 database options, defaults merged with { timeout: 5000 }
60
+ * @returns better-sqlite3 Database instance
61
+ * @throws Asserts error if the database file was not created successfully in file mode
11
62
  */
12
63
  _initDB(opt?: Record<string, unknown>): Database.Database;
13
64
  /**
14
- * 获取文件名
65
+ * Extract the database filename
66
+ *
67
+ * - memory mode: Returns the ":memory:" original name directly
68
+ * - file mode: Uses path.basename to extract the pure filename part, removing directory prefix
69
+ *
70
+ * @param name - Original database name
71
+ * @returns Filename part (returns ":memory:" for memory mode, pure filename for file mode)
15
72
  */
16
73
  _formatFileName(name: string): string;
17
74
  /**
18
- * 创建storage目录
75
+ * Create the directory for the database file
76
+ *
77
+ * The directory path is determined by storage mode:
78
+ * - absolute mode: Uses the directory part from the database name (path.dirname)
79
+ * - Other modes: Uses {dataDir}/db as the default directory
80
+ *
81
+ * If the directory does not exist, it is created automatically with permission 0o755
82
+ * (owner can read/write/execute, others can read/execute).
83
+ *
84
+ * @returns Absolute path of the directory containing the database file
19
85
  */
20
86
  _createDatabaseDir(): string;
21
87
  /**
22
- * 获取file path 模式
88
+ * Infer storage mode from the database name
89
+ *
90
+ * Inference logic:
91
+ * 1. Name is ":memory:" -> memory mode
92
+ * 2. Name contains path separators (/ or \):
93
+ * - Absolute path -> absolute mode
94
+ * - Relative path -> relative mode
95
+ * 3. Name contains no path separators -> onlyName mode
96
+ *
97
+ * @param name - Database name or path
98
+ * @returns Storage mode string: memory / onlyName / relative / absolute
23
99
  */
24
100
  getMode(name: string): string;
101
+ /**
102
+ * Get the directory containing the database file
103
+ *
104
+ * @returns Absolute path of the database directory
105
+ */
25
106
  getDbDir(): string;
107
+ /**
108
+ * Get the full path of the database file
109
+ *
110
+ * Composed by joining dbDir and fileName, only meaningful for file modes
111
+ * (in memory mode this path has no practical use).
112
+ *
113
+ * @returns Absolute path of the database file
114
+ */
26
115
  getFilePath(): string;
27
116
  }
28
117
  //# sourceMappingURL=sqliteStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqliteStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,qBAAa,aAAa;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAU3D;;OAEG;IACH,OAAO,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CAAC,QAAQ;IAmB7D;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOrC;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAa5B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiB7B,QAAQ,IAAI,MAAM;IAIlB,WAAW,IAAI,MAAM;CAGtB"}
1
+ {"version":3,"file":"sqliteStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":"AA6BA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAa;IACxB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IAEb,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IAEd,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAEtB;;;;;;;;;;;;;;;;;OAiBG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAY3D;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CAAC,QAAQ;IAmB7D;;;;;;;;OAQG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOrC;;;;;;;;;;;OAWG;IACH,kBAAkB,IAAI,MAAM;IAc5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAe7B;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;;;;OAOG;IACH,WAAW,IAAI,MAAM;CAGtB"}
@@ -4,15 +4,78 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SqliteStorage = void 0;
7
+ /**
8
+ * @module storage/sqliteStorage
9
+ * @description SQLite database storage module. Based on better-sqlite3, provides synchronous database operations,
10
+ * supporting three database file location modes (name only, relative path, absolute path) and in-memory database (:memory:).
11
+ *
12
+ * Core responsibilities:
13
+ * - Automatically determine storage mode based on database name (onlyName / relative / absolute / memory)
14
+ * - Automatically create the database directory (ensures the directory exists before opening the database file)
15
+ * - Prevent path traversal attacks (validates that ".." is not present in the name during construction)
16
+ * - Provide a unified interface for obtaining database file paths
17
+ *
18
+ * Usage examples:
19
+ * ```ts
20
+ * // Name-only mode: file stored at {dataDir}/db/{name}.db
21
+ * const db1 = new SqliteStorage('myapp.db');
22
+ *
23
+ * // Relative path mode: file stored at {dataDir}/db/sub/myapp.db
24
+ * const db2 = new SqliteStorage('sub/myapp.db');
25
+ *
26
+ * // Absolute path mode: file stored at the specified path
27
+ * const db3 = new SqliteStorage('/tmp/data/myapp.db');
28
+ *
29
+ * // In-memory mode: not persisted, data is lost when the process exits
30
+ * const db4 = new SqliteStorage(':memory:');
31
+ * ```
32
+ */
7
33
  const assert_1 = __importDefault(require("assert"));
8
34
  const fs_1 = __importDefault(require("fs"));
9
35
  const path_1 = __importDefault(require("path"));
10
36
  const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
11
37
  const helper_js_1 = require("../utils/helper.js");
12
38
  const index_js_1 = require("../ps/index.js");
39
+ /**
40
+ * SqliteStorage - SQLite database storage class
41
+ *
42
+ * Encapsulates the database instance creation flow of better-sqlite3, automatically inferring
43
+ * the storage mode based on the provided database name and completing initialization tasks
44
+ * such as directory creation and file path calculation.
45
+ *
46
+ * Storage modes:
47
+ * - memory: In-memory database, name is ":memory:", not persisted to disk
48
+ * - onlyName: Filename only (e.g. "app.db"), stored under {dataDir}/db/
49
+ * - relative: Relative path (e.g. "sub/app.db"), resolved relative to {dataDir}/db/
50
+ * - absolute: Absolute path (e.g. "/tmp/app.db"), uses the specified path directly
51
+ *
52
+ * Security:
53
+ * The constructor validates the database name for path traversal, disallowing ".." in the name
54
+ * to prevent malicious input from accessing files outside the intended directory.
55
+ */
13
56
  class SqliteStorage {
57
+ /**
58
+ * Create a SqliteStorage instance
59
+ *
60
+ * Initialization flow:
61
+ * 1. Validate that the name is non-empty and does not contain path traversal characters ".."
62
+ * 2. Infer storage mode from the name (getMode)
63
+ * 3. Create the database file directory (_createDatabaseDir)
64
+ * 4. Extract the filename part (_formatFileName)
65
+ * 5. Open the database connection (_initDB)
66
+ *
67
+ * @param name - Database name or path. Supports the following formats:
68
+ * - ":memory:" - In-memory database
69
+ * - "app.db" - Filename only, stored under {dataDir}/db/
70
+ * - "sub/app.db" - Relative path, relative to {dataDir}/db/
71
+ * - "/tmp/app.db" - Absolute path
72
+ * @param opt - better-sqlite3 database options, defaults merged with timeout: 5000
73
+ * @throws Asserts error if name is empty or contains ".." path traversal characters
74
+ */
14
75
  constructor(name, opt = {}) {
15
76
  (0, assert_1.default)(name, `db name ${name} Cannot be empty`);
77
+ // Prevent path traversal attacks: disallow ".." in the name to avoid directory backtracking
78
+ (0, assert_1.default)(!name.includes('..'), `db name ${name} contains path traversal`);
16
79
  this.name = name;
17
80
  this.mode = this.getMode(name);
18
81
  this.dbDir = this._createDatabaseDir();
@@ -20,24 +83,41 @@ class SqliteStorage {
20
83
  this.db = this._initDB(opt);
21
84
  }
22
85
  /**
23
- * 初始化db
86
+ * Initialize the database connection
87
+ *
88
+ * Determines the database path based on storage mode:
89
+ * - memory mode: Uses ":memory:" as the path, better-sqlite3 creates the database in memory
90
+ * - file mode: Uses getFilePath() to get the full database file path
91
+ *
92
+ * In file mode, additionally validates that the database file was created successfully.
93
+ * If the file does not exist, throws an assertion error (possibly due to insufficient directory permissions, etc.).
94
+ *
95
+ * @param opt - better-sqlite3 database options, defaults merged with { timeout: 5000 }
96
+ * @returns better-sqlite3 Database instance
97
+ * @throws Asserts error if the database file was not created successfully in file mode
24
98
  */
25
99
  _initDB(opt = {}) {
26
100
  const options = Object.assign({ timeout: 5000 }, opt);
27
- // 存储类型:db文件、内存(:memory:)
101
+ // Storage type: db file, in-memory (:memory:)
28
102
  let dbPath = this.name;
29
103
  if (this.mode !== 'memory') {
30
104
  dbPath = this.getFilePath();
31
105
  }
32
106
  const db = new better_sqlite3_1.default(dbPath, options);
33
- // 如果是文件类型,判断文件是否创建成功
107
+ // For file mode, check if the file was created successfully
34
108
  if (this.mode !== 'memory') {
35
109
  (0, assert_1.default)(fs_1.default.existsSync(dbPath), `error: db ${dbPath} not exists`);
36
110
  }
37
111
  return db;
38
112
  }
39
113
  /**
40
- * 获取文件名
114
+ * Extract the database filename
115
+ *
116
+ * - memory mode: Returns the ":memory:" original name directly
117
+ * - file mode: Uses path.basename to extract the pure filename part, removing directory prefix
118
+ *
119
+ * @param name - Original database name
120
+ * @returns Filename part (returns ":memory:" for memory mode, pure filename for file mode)
41
121
  */
42
122
  _formatFileName(name) {
43
123
  if (this.mode === 'memory') {
@@ -46,11 +126,21 @@ class SqliteStorage {
46
126
  return path_1.default.basename(name);
47
127
  }
48
128
  /**
49
- * 创建storage目录
129
+ * Create the directory for the database file
130
+ *
131
+ * The directory path is determined by storage mode:
132
+ * - absolute mode: Uses the directory part from the database name (path.dirname)
133
+ * - Other modes: Uses {dataDir}/db as the default directory
134
+ *
135
+ * If the directory does not exist, it is created automatically with permission 0o755
136
+ * (owner can read/write/execute, others can read/execute).
137
+ *
138
+ * @returns Absolute path of the directory containing the database file
50
139
  */
51
140
  _createDatabaseDir() {
52
141
  let dbDir = path_1.default.join((0, index_js_1.getDataDir)(), 'db');
53
142
  if (this.mode === 'absolute') {
143
+ // Absolute path mode: directory is taken from the path part of the name, not the default data/db
54
144
  dbDir = path_1.default.dirname(this.name);
55
145
  }
56
146
  if (!fs_1.default.existsSync(dbDir)) {
@@ -59,24 +149,46 @@ class SqliteStorage {
59
149
  return dbDir;
60
150
  }
61
151
  /**
62
- * 获取file path 模式
152
+ * Infer storage mode from the database name
153
+ *
154
+ * Inference logic:
155
+ * 1. Name is ":memory:" -> memory mode
156
+ * 2. Name contains path separators (/ or \):
157
+ * - Absolute path -> absolute mode
158
+ * - Relative path -> relative mode
159
+ * 3. Name contains no path separators -> onlyName mode
160
+ *
161
+ * @param name - Database name or path
162
+ * @returns Storage mode string: memory / onlyName / relative / absolute
63
163
  */
64
164
  getMode(name) {
65
- // 内存模式
165
+ // Memory mode
66
166
  if (name === ':memory:') {
67
167
  return 'memory';
68
168
  }
69
- (0, assert_1.default)(path_1.default.extname(name) === '.db', `error: db ${name} file ext name must be .db`);
70
- // 路径模式
169
+ // Path mode
71
170
  const normalized = name.replace(/[/\\]/g, '/');
72
171
  if (normalized.indexOf('/') !== -1) {
73
172
  return path_1.default.isAbsolute(name) ? 'absolute' : 'relative';
74
173
  }
75
174
  return 'onlyName';
76
175
  }
176
+ /**
177
+ * Get the directory containing the database file
178
+ *
179
+ * @returns Absolute path of the database directory
180
+ */
77
181
  getDbDir() {
78
182
  return this.dbDir;
79
183
  }
184
+ /**
185
+ * Get the full path of the database file
186
+ *
187
+ * Composed by joining dbDir and fileName, only meaningful for file modes
188
+ * (in memory mode this path has no practical use).
189
+ *
190
+ * @returns Absolute path of the database file
191
+ */
80
192
  getFilePath() {
81
193
  return path_1.default.join(this.dbDir, this.fileName);
82
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqliteStorage.js","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqliteStorage.js","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":"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"}