phecda-server 7.0.0-alpha.16 → 7.0.0-alpha.18

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 (458) hide show
  1. package/README.md +10 -10
  2. package/assets/schema.json +1 -7
  3. package/bin/cli.mjs +16 -11
  4. package/dist/chunk-25LNE62T.mjs +325 -0
  5. package/dist/chunk-25LNE62T.mjs.map +1 -0
  6. package/dist/chunk-2AANNMKJ.js +339 -0
  7. package/dist/chunk-2AANNMKJ.js.map +1 -0
  8. package/dist/chunk-2AF4PNIP.mjs +548 -0
  9. package/dist/chunk-2AF4PNIP.mjs.map +1 -0
  10. package/dist/chunk-2ATTABKA.mjs +330 -0
  11. package/dist/chunk-2ATTABKA.mjs.map +1 -0
  12. package/dist/chunk-2TZOJIU5.mjs +548 -0
  13. package/dist/chunk-2TZOJIU5.mjs.map +1 -0
  14. package/dist/chunk-2WO3UGXN.js +551 -0
  15. package/dist/chunk-2WO3UGXN.js.map +1 -0
  16. package/dist/chunk-3GHLAAIB.js +330 -0
  17. package/dist/chunk-3GHLAAIB.js.map +1 -0
  18. package/dist/chunk-3OHQDPV2.js +548 -0
  19. package/dist/chunk-3OHQDPV2.js.map +1 -0
  20. package/dist/chunk-3P3Z5UC6.mjs +150 -0
  21. package/dist/chunk-3P3Z5UC6.mjs.map +1 -0
  22. package/dist/chunk-3XK2RTI2.mjs +563 -0
  23. package/dist/chunk-3XK2RTI2.mjs.map +1 -0
  24. package/dist/chunk-4G7TPEE2.mjs +330 -0
  25. package/dist/chunk-4G7TPEE2.mjs.map +1 -0
  26. package/dist/chunk-4GH4IFBL.mjs +339 -0
  27. package/dist/chunk-4GH4IFBL.mjs.map +1 -0
  28. package/dist/chunk-56Y5GBKV.mjs +336 -0
  29. package/dist/chunk-56Y5GBKV.mjs.map +1 -0
  30. package/dist/{chunk-MUI6MTUO.mjs → chunk-5DOJ5DLK.mjs} +2 -1
  31. package/dist/chunk-5DOJ5DLK.mjs.map +1 -0
  32. package/dist/chunk-5SMDKUTT.js +551 -0
  33. package/dist/chunk-5SMDKUTT.js.map +1 -0
  34. package/dist/chunk-672QEOST.js +549 -0
  35. package/dist/chunk-672QEOST.js.map +1 -0
  36. package/dist/{chunk-YCES6ABN.mjs → chunk-6JAHCTOT.mjs} +2 -1
  37. package/dist/chunk-6JAHCTOT.mjs.map +1 -0
  38. package/dist/chunk-6TVDK7LS.mjs +334 -0
  39. package/dist/chunk-6TVDK7LS.mjs.map +1 -0
  40. package/dist/chunk-6UFCTN4R.mjs +153 -0
  41. package/dist/chunk-6UFCTN4R.mjs.map +1 -0
  42. package/dist/chunk-6WL4Q3PG.js +546 -0
  43. package/dist/chunk-6WL4Q3PG.js.map +1 -0
  44. package/dist/chunk-77T6PXFR.js +330 -0
  45. package/dist/chunk-77T6PXFR.js.map +1 -0
  46. package/dist/chunk-7BE5DAYB.mjs +548 -0
  47. package/dist/chunk-7BE5DAYB.mjs.map +1 -0
  48. package/dist/{chunk-KCPBITYZ.js → chunk-7RF74WML.js} +25 -24
  49. package/dist/chunk-7RF74WML.js.map +1 -0
  50. package/dist/chunk-7SKWIPNP.js +230 -0
  51. package/dist/chunk-7SKWIPNP.js.map +1 -0
  52. package/dist/chunk-7VCG4CO6.js +551 -0
  53. package/dist/chunk-7VCG4CO6.js.map +1 -0
  54. package/dist/chunk-7X5SWO7F.js +230 -0
  55. package/dist/chunk-7X5SWO7F.js.map +1 -0
  56. package/dist/chunk-A2ZAEKXE.js +230 -0
  57. package/dist/chunk-A2ZAEKXE.js.map +1 -0
  58. package/dist/chunk-A7IQ3C2W.mjs +551 -0
  59. package/dist/chunk-A7IQ3C2W.mjs.map +1 -0
  60. package/dist/chunk-A7Z6WC2U.mjs +549 -0
  61. package/dist/chunk-A7Z6WC2U.mjs.map +1 -0
  62. package/dist/{chunk-VX4BZEL7.mjs → chunk-AH2GHJYG.mjs} +12 -8
  63. package/dist/chunk-AH2GHJYG.mjs.map +1 -0
  64. package/dist/chunk-AKRBZ4QH.js +327 -0
  65. package/dist/chunk-AKRBZ4QH.js.map +1 -0
  66. package/dist/chunk-AUF4H6MB.mjs +330 -0
  67. package/dist/chunk-AUF4H6MB.mjs.map +1 -0
  68. package/dist/chunk-B4LHVDDL.js +329 -0
  69. package/dist/chunk-B4LHVDDL.js.map +1 -0
  70. package/dist/chunk-BVI6MJ57.js +150 -0
  71. package/dist/chunk-BVI6MJ57.js.map +1 -0
  72. package/dist/chunk-BZMKWF3E.mjs +546 -0
  73. package/dist/chunk-BZMKWF3E.mjs.map +1 -0
  74. package/dist/chunk-BZMKZ733.mjs +154 -0
  75. package/dist/chunk-BZMKZ733.mjs.map +1 -0
  76. package/dist/chunk-C2MTV2HS.js +148 -0
  77. package/dist/chunk-C2MTV2HS.js.map +1 -0
  78. package/dist/chunk-CGHKI3FB.js +548 -0
  79. package/dist/chunk-CGHKI3FB.js.map +1 -0
  80. package/dist/chunk-CLQEY47X.js +154 -0
  81. package/dist/chunk-CLQEY47X.js.map +1 -0
  82. package/dist/chunk-DIDCPEI7.js +546 -0
  83. package/dist/chunk-DIDCPEI7.js.map +1 -0
  84. package/dist/chunk-DJCMOLNU.mjs +547 -0
  85. package/dist/chunk-DJCMOLNU.mjs.map +1 -0
  86. package/dist/chunk-DJKIF6CO.mjs +230 -0
  87. package/dist/chunk-DJKIF6CO.mjs.map +1 -0
  88. package/dist/chunk-DZXOLJ2U.mjs +546 -0
  89. package/dist/chunk-DZXOLJ2U.mjs.map +1 -0
  90. package/dist/chunk-EEZLSH37.js +230 -0
  91. package/dist/chunk-EEZLSH37.js.map +1 -0
  92. package/dist/chunk-EYNIZVQM.js +334 -0
  93. package/dist/chunk-EYNIZVQM.js.map +1 -0
  94. package/dist/chunk-FA4XQ5HS.mjs +547 -0
  95. package/dist/chunk-FA4XQ5HS.mjs.map +1 -0
  96. package/dist/chunk-FBN6O256.js +153 -0
  97. package/dist/chunk-FBN6O256.js.map +1 -0
  98. package/dist/chunk-FJYLWOEI.js +325 -0
  99. package/dist/chunk-FJYLWOEI.js.map +1 -0
  100. package/dist/chunk-FV5CWX5Y.js +563 -0
  101. package/dist/chunk-FV5CWX5Y.js.map +1 -0
  102. package/dist/chunk-FZIJNZOP.js +546 -0
  103. package/dist/chunk-FZIJNZOP.js.map +1 -0
  104. package/dist/chunk-G377USSH.js +230 -0
  105. package/dist/chunk-G377USSH.js.map +1 -0
  106. package/dist/chunk-G3K6FCN4.js +549 -0
  107. package/dist/chunk-G3K6FCN4.js.map +1 -0
  108. package/dist/chunk-GA3YDUKH.js +150 -0
  109. package/dist/chunk-GA3YDUKH.js.map +1 -0
  110. package/dist/chunk-GMYV3IKV.mjs +548 -0
  111. package/dist/chunk-GMYV3IKV.mjs.map +1 -0
  112. package/dist/{chunk-IJFIY6QN.js → chunk-H7OCHDZT.js} +55 -63
  113. package/dist/chunk-H7OCHDZT.js.map +1 -0
  114. package/dist/chunk-HBITJSAJ.js +334 -0
  115. package/dist/chunk-HBITJSAJ.js.map +1 -0
  116. package/dist/chunk-HGCBKGAE.js +563 -0
  117. package/dist/chunk-HGCBKGAE.js.map +1 -0
  118. package/dist/chunk-HGQUWR5Y.js +548 -0
  119. package/dist/chunk-HGQUWR5Y.js.map +1 -0
  120. package/dist/chunk-HNHYJHTR.mjs +150 -0
  121. package/dist/chunk-HNHYJHTR.mjs.map +1 -0
  122. package/dist/chunk-HOMMTTY3.js +549 -0
  123. package/dist/chunk-HOMMTTY3.js.map +1 -0
  124. package/dist/chunk-HPCKU764.js +230 -0
  125. package/dist/chunk-HPCKU764.js.map +1 -0
  126. package/dist/chunk-HWZUI3S7.mjs +154 -0
  127. package/dist/chunk-HWZUI3S7.mjs.map +1 -0
  128. package/dist/chunk-HXAYHDBD.mjs +324 -0
  129. package/dist/chunk-HXAYHDBD.mjs.map +1 -0
  130. package/dist/chunk-I7Q27MJV.mjs +230 -0
  131. package/dist/chunk-I7Q27MJV.mjs.map +1 -0
  132. package/dist/{chunk-6OQ2SB5W.js → chunk-IIAJBTJE.js} +19 -22
  133. package/dist/chunk-IIAJBTJE.js.map +1 -0
  134. package/dist/chunk-IPEKAVER.js +336 -0
  135. package/dist/chunk-IPEKAVER.js.map +1 -0
  136. package/dist/chunk-IUBKOGEX.js +337 -0
  137. package/dist/chunk-IUBKOGEX.js.map +1 -0
  138. package/dist/chunk-JF5Q4N2N.mjs +330 -0
  139. package/dist/chunk-JF5Q4N2N.mjs.map +1 -0
  140. package/dist/chunk-JL3U632E.mjs +329 -0
  141. package/dist/chunk-JL3U632E.mjs.map +1 -0
  142. package/dist/chunk-JZW6S7UZ.mjs +334 -0
  143. package/dist/chunk-JZW6S7UZ.mjs.map +1 -0
  144. package/dist/chunk-K7BBDAQV.js +330 -0
  145. package/dist/chunk-K7BBDAQV.js.map +1 -0
  146. package/dist/chunk-KATTCXH7.mjs +153 -0
  147. package/dist/chunk-KATTCXH7.mjs.map +1 -0
  148. package/dist/chunk-KHHTD6W2.js +325 -0
  149. package/dist/chunk-KHHTD6W2.js.map +1 -0
  150. package/dist/chunk-KJTJTAM5.js +547 -0
  151. package/dist/chunk-KJTJTAM5.js.map +1 -0
  152. package/dist/chunk-KUGU3UGO.js +334 -0
  153. package/dist/chunk-KUGU3UGO.js.map +1 -0
  154. package/dist/chunk-LBH4RXQQ.mjs +534 -0
  155. package/dist/chunk-LBH4RXQQ.mjs.map +1 -0
  156. package/dist/chunk-LMCXPBEL.js +230 -0
  157. package/dist/chunk-LMCXPBEL.js.map +1 -0
  158. package/dist/chunk-LPCFXBIN.mjs +554 -0
  159. package/dist/chunk-LPCFXBIN.mjs.map +1 -0
  160. package/dist/chunk-LWKMKMGP.mjs +551 -0
  161. package/dist/chunk-LWKMKMGP.mjs.map +1 -0
  162. package/dist/chunk-M2NBQIY4.js +230 -0
  163. package/dist/chunk-M2NBQIY4.js.map +1 -0
  164. package/dist/chunk-MCVUJNTJ.mjs +546 -0
  165. package/dist/chunk-MCVUJNTJ.mjs.map +1 -0
  166. package/dist/{chunk-NQ55PA2X.mjs → chunk-MDPW6WGF.mjs} +1 -0
  167. package/dist/chunk-MDPW6WGF.mjs.map +1 -0
  168. package/dist/chunk-O23LYYQO.mjs +549 -0
  169. package/dist/chunk-O23LYYQO.mjs.map +1 -0
  170. package/dist/chunk-OGNSLEM7.js +562 -0
  171. package/dist/chunk-OGNSLEM7.js.map +1 -0
  172. package/dist/chunk-OSCTXAED.js +154 -0
  173. package/dist/chunk-OSCTXAED.js.map +1 -0
  174. package/dist/chunk-P5DXLNAV.mjs +334 -0
  175. package/dist/chunk-P5DXLNAV.mjs.map +1 -0
  176. package/dist/chunk-PDKES3CS.js +334 -0
  177. package/dist/chunk-PDKES3CS.js.map +1 -0
  178. package/dist/chunk-PLD4EI4W.mjs +334 -0
  179. package/dist/chunk-PLD4EI4W.mjs.map +1 -0
  180. package/dist/chunk-PQXBA7RP.mjs +325 -0
  181. package/dist/chunk-PQXBA7RP.mjs.map +1 -0
  182. package/dist/chunk-PUXTWHMP.mjs +337 -0
  183. package/dist/chunk-PUXTWHMP.mjs.map +1 -0
  184. package/dist/chunk-PWYWGN3L.mjs +562 -0
  185. package/dist/chunk-PWYWGN3L.mjs.map +1 -0
  186. package/dist/chunk-PXWSDTIP.mjs +551 -0
  187. package/dist/chunk-PXWSDTIP.mjs.map +1 -0
  188. package/dist/chunk-Q64YUA6Q.js +153 -0
  189. package/dist/chunk-Q64YUA6Q.js.map +1 -0
  190. package/dist/chunk-Q7FATBG4.mjs +327 -0
  191. package/dist/chunk-Q7FATBG4.mjs.map +1 -0
  192. package/dist/chunk-QLR7YJ7K.js +548 -0
  193. package/dist/chunk-QLR7YJ7K.js.map +1 -0
  194. package/dist/chunk-QNTSTOHM.mjs +230 -0
  195. package/dist/chunk-QNTSTOHM.mjs.map +1 -0
  196. package/dist/chunk-QP2HPQND.js +548 -0
  197. package/dist/chunk-QP2HPQND.js.map +1 -0
  198. package/dist/{chunk-4LLLQOMF.js → chunk-RLFCI3RG.js} +1 -0
  199. package/dist/chunk-RLFCI3RG.js.map +1 -0
  200. package/dist/chunk-RW5HHB6Z.mjs +230 -0
  201. package/dist/chunk-RW5HHB6Z.mjs.map +1 -0
  202. package/dist/chunk-RXBJH74V.js +334 -0
  203. package/dist/chunk-RXBJH74V.js.map +1 -0
  204. package/dist/chunk-S2B3Y2WJ.mjs +230 -0
  205. package/dist/chunk-S2B3Y2WJ.mjs.map +1 -0
  206. package/dist/chunk-SCA7SXI6.mjs +334 -0
  207. package/dist/chunk-SCA7SXI6.mjs.map +1 -0
  208. package/dist/chunk-SE2XQSPO.js +549 -0
  209. package/dist/chunk-SE2XQSPO.js.map +1 -0
  210. package/dist/chunk-SP4ASHBX.mjs +334 -0
  211. package/dist/chunk-SP4ASHBX.mjs.map +1 -0
  212. package/dist/chunk-TFK3ICC2.mjs +548 -0
  213. package/dist/chunk-TFK3ICC2.mjs.map +1 -0
  214. package/dist/chunk-TQR7KDFP.mjs +150 -0
  215. package/dist/chunk-TQR7KDFP.mjs.map +1 -0
  216. package/dist/chunk-TRJVULA2.js +330 -0
  217. package/dist/chunk-TRJVULA2.js.map +1 -0
  218. package/dist/chunk-TU4XB7CZ.mjs +230 -0
  219. package/dist/chunk-TU4XB7CZ.mjs.map +1 -0
  220. package/dist/chunk-U7EKEUCU.mjs +549 -0
  221. package/dist/chunk-U7EKEUCU.mjs.map +1 -0
  222. package/dist/chunk-UBQ4FXWS.js +554 -0
  223. package/dist/chunk-UBQ4FXWS.js.map +1 -0
  224. package/dist/chunk-UFQBSH4U.mjs +230 -0
  225. package/dist/chunk-UFQBSH4U.mjs.map +1 -0
  226. package/dist/chunk-UUHB6RHI.mjs +230 -0
  227. package/dist/chunk-UUHB6RHI.mjs.map +1 -0
  228. package/dist/chunk-UUKYR5HO.js +336 -0
  229. package/dist/chunk-UUKYR5HO.js.map +1 -0
  230. package/dist/chunk-UZTDXFFC.js +547 -0
  231. package/dist/chunk-UZTDXFFC.js.map +1 -0
  232. package/dist/chunk-V6AD4Y74.js +550 -0
  233. package/dist/chunk-V6AD4Y74.js.map +1 -0
  234. package/dist/chunk-VBBZA6PA.mjs +148 -0
  235. package/dist/chunk-VBBZA6PA.mjs.map +1 -0
  236. package/dist/chunk-VM4RFF4O.js +339 -0
  237. package/dist/chunk-VM4RFF4O.js.map +1 -0
  238. package/dist/chunk-W4AIKOBG.mjs +330 -0
  239. package/dist/chunk-W4AIKOBG.mjs.map +1 -0
  240. package/dist/chunk-WCLQYWET.mjs +328 -0
  241. package/dist/chunk-WCLQYWET.mjs.map +1 -0
  242. package/dist/chunk-WRN4ZVJQ.js +334 -0
  243. package/dist/chunk-WRN4ZVJQ.js.map +1 -0
  244. package/dist/chunk-X2H2PYE4.js +328 -0
  245. package/dist/chunk-X2H2PYE4.js.map +1 -0
  246. package/dist/chunk-X4YZRAFM.mjs +563 -0
  247. package/dist/chunk-X4YZRAFM.mjs.map +1 -0
  248. package/dist/chunk-X6M4LKQR.mjs +550 -0
  249. package/dist/chunk-X6M4LKQR.mjs.map +1 -0
  250. package/dist/chunk-X6WMGSPO.js +150 -0
  251. package/dist/chunk-X6WMGSPO.js.map +1 -0
  252. package/dist/chunk-XAI6JXXC.mjs +339 -0
  253. package/dist/chunk-XAI6JXXC.mjs.map +1 -0
  254. package/dist/chunk-XSABKCJD.js +546 -0
  255. package/dist/chunk-XSABKCJD.js.map +1 -0
  256. package/dist/chunk-XW3UEXLV.mjs +336 -0
  257. package/dist/chunk-XW3UEXLV.mjs.map +1 -0
  258. package/dist/chunk-YQYBLTSZ.js +330 -0
  259. package/dist/chunk-YQYBLTSZ.js.map +1 -0
  260. package/dist/chunk-YSRKB2RQ.js +334 -0
  261. package/dist/chunk-YSRKB2RQ.js.map +1 -0
  262. package/dist/chunk-YT4J7LJM.mjs +549 -0
  263. package/dist/chunk-YT4J7LJM.mjs.map +1 -0
  264. package/dist/chunk-YXXWVL32.mjs +330 -0
  265. package/dist/chunk-YXXWVL32.mjs.map +1 -0
  266. package/dist/chunk-Z4JSVZR3.js +324 -0
  267. package/dist/chunk-Z4JSVZR3.js.map +1 -0
  268. package/dist/{core-DiFYc0bC.d.mts → core--qu3pWkq.d.ts} +1 -1
  269. package/dist/core-BPUiAJHn.d.ts +49 -0
  270. package/dist/core-Bi3rTHpi.d.ts +49 -0
  271. package/dist/core-Bjw_HRhA.d.mts +49 -0
  272. package/dist/core-Brb7fvGi.d.ts +49 -0
  273. package/dist/core-C7FYVQ3G.d.ts +49 -0
  274. package/dist/core-C8nKzrYj.d.ts +49 -0
  275. package/dist/core-CTa38Qb8.d.mts +49 -0
  276. package/dist/core-C_vzHvIM.d.mts +49 -0
  277. package/dist/core-CjJyvCUL.d.mts +49 -0
  278. package/dist/core-CxB9E1Mb.d.mts +49 -0
  279. package/dist/core-D5cwjnXb.d.ts +49 -0
  280. package/dist/core-D9ivz8Je.d.mts +49 -0
  281. package/dist/{core-KvmgTDU0.d.ts → core-DEjpz7U-.d.ts} +1 -1
  282. package/dist/core-DFoppC8I.d.mts +49 -0
  283. package/dist/core-DU0-ELVr.d.ts +49 -0
  284. package/dist/core-Dk6Y21IK.d.mts +49 -0
  285. package/dist/core-ppueS5ax.d.mts +49 -0
  286. package/dist/core-scwP4qK3.d.ts +49 -0
  287. package/dist/core-vtBLhyjz.d.mts +49 -0
  288. package/dist/helper.d.mts +1 -1
  289. package/dist/helper.d.ts +1 -1
  290. package/dist/helper.js +4 -3
  291. package/dist/helper.js.map +1 -0
  292. package/dist/helper.mjs +3 -2
  293. package/dist/helper.mjs.map +1 -0
  294. package/dist/http/elysia/index.d.mts +3 -3
  295. package/dist/http/elysia/index.d.ts +3 -3
  296. package/dist/http/elysia/index.js +41 -40
  297. package/dist/http/elysia/index.js.map +1 -0
  298. package/dist/http/elysia/index.mjs +4 -3
  299. package/dist/http/elysia/index.mjs.map +1 -0
  300. package/dist/http/express/index.d.mts +3 -3
  301. package/dist/http/express/index.d.ts +3 -3
  302. package/dist/http/express/index.js +38 -37
  303. package/dist/http/express/index.js.map +1 -0
  304. package/dist/http/express/index.mjs +3 -2
  305. package/dist/http/express/index.mjs.map +1 -0
  306. package/dist/http/fastify/index.d.mts +3 -3
  307. package/dist/http/fastify/index.d.ts +3 -3
  308. package/dist/http/fastify/index.js +39 -38
  309. package/dist/http/fastify/index.js.map +1 -0
  310. package/dist/http/fastify/index.mjs +4 -3
  311. package/dist/http/fastify/index.mjs.map +1 -0
  312. package/dist/http/h3/index.d.mts +3 -3
  313. package/dist/http/h3/index.d.ts +3 -3
  314. package/dist/http/h3/index.js +39 -38
  315. package/dist/http/h3/index.js.map +1 -0
  316. package/dist/http/h3/index.mjs +3 -2
  317. package/dist/http/h3/index.mjs.map +1 -0
  318. package/dist/http/hono/index.d.mts +3 -3
  319. package/dist/http/hono/index.d.ts +3 -3
  320. package/dist/http/hono/index.js +35 -34
  321. package/dist/http/hono/index.js.map +1 -0
  322. package/dist/http/hono/index.mjs +3 -2
  323. package/dist/http/hono/index.mjs.map +1 -0
  324. package/dist/http/hyper-express/index.d.mts +3 -3
  325. package/dist/http/hyper-express/index.d.ts +3 -3
  326. package/dist/http/hyper-express/index.js +36 -35
  327. package/dist/http/hyper-express/index.js.map +1 -0
  328. package/dist/http/hyper-express/index.mjs +3 -2
  329. package/dist/http/hyper-express/index.mjs.map +1 -0
  330. package/dist/http/koa/index.d.mts +3 -3
  331. package/dist/http/koa/index.d.ts +3 -3
  332. package/dist/http/koa/index.js +38 -37
  333. package/dist/http/koa/index.js.map +1 -0
  334. package/dist/http/koa/index.mjs +3 -2
  335. package/dist/http/koa/index.mjs.map +1 -0
  336. package/dist/index.d.mts +8 -9
  337. package/dist/index.d.ts +8 -9
  338. package/dist/index.js +41 -40
  339. package/dist/index.js.map +1 -0
  340. package/dist/index.mjs +5 -4
  341. package/dist/index.mjs.map +1 -0
  342. package/dist/meta-vC_LItVL.d.mts +90 -0
  343. package/dist/meta-vC_LItVL.d.ts +90 -0
  344. package/dist/rpc/bullmq/index.d.mts +3 -3
  345. package/dist/rpc/bullmq/index.d.ts +3 -3
  346. package/dist/rpc/bullmq/index.js +12 -11
  347. package/dist/rpc/bullmq/index.js.map +1 -0
  348. package/dist/rpc/bullmq/index.mjs +3 -2
  349. package/dist/rpc/bullmq/index.mjs.map +1 -0
  350. package/dist/rpc/electron/index.d.mts +3 -3
  351. package/dist/rpc/electron/index.d.ts +3 -3
  352. package/dist/rpc/electron/index.js +9 -8
  353. package/dist/rpc/electron/index.js.map +1 -0
  354. package/dist/rpc/electron/index.mjs +3 -2
  355. package/dist/rpc/electron/index.mjs.map +1 -0
  356. package/dist/rpc/kafka/index.d.mts +3 -3
  357. package/dist/rpc/kafka/index.d.ts +3 -3
  358. package/dist/rpc/kafka/index.js +11 -10
  359. package/dist/rpc/kafka/index.js.map +1 -0
  360. package/dist/rpc/kafka/index.mjs +3 -2
  361. package/dist/rpc/kafka/index.mjs.map +1 -0
  362. package/dist/rpc/nats/index.d.mts +3 -3
  363. package/dist/rpc/nats/index.d.ts +3 -3
  364. package/dist/rpc/nats/index.js +12 -11
  365. package/dist/rpc/nats/index.js.map +1 -0
  366. package/dist/rpc/nats/index.mjs +3 -2
  367. package/dist/rpc/nats/index.mjs.map +1 -0
  368. package/dist/rpc/rabbitmq/index.d.mts +3 -3
  369. package/dist/rpc/rabbitmq/index.d.ts +3 -3
  370. package/dist/rpc/rabbitmq/index.js +13 -12
  371. package/dist/rpc/rabbitmq/index.js.map +1 -0
  372. package/dist/rpc/rabbitmq/index.mjs +3 -2
  373. package/dist/rpc/rabbitmq/index.mjs.map +1 -0
  374. package/dist/rpc/redis/index.d.mts +3 -3
  375. package/dist/rpc/redis/index.d.ts +3 -3
  376. package/dist/rpc/redis/index.js +11 -10
  377. package/dist/rpc/redis/index.js.map +1 -0
  378. package/dist/rpc/redis/index.mjs +3 -2
  379. package/dist/rpc/redis/index.mjs.map +1 -0
  380. package/dist/rpc/web-ext/index.d.mts +2 -0
  381. package/dist/rpc/web-ext/index.d.ts +2 -0
  382. package/dist/rpc/web-ext/index.js +1 -0
  383. package/dist/rpc/web-ext/index.js.map +1 -0
  384. package/dist/rpc/web-ext/index.mjs +1 -0
  385. package/dist/rpc/web-ext/index.mjs.map +1 -0
  386. package/dist/rpc/ws/index.d.mts +3 -3
  387. package/dist/rpc/ws/index.d.ts +3 -3
  388. package/dist/rpc/ws/index.js +8 -7
  389. package/dist/rpc/ws/index.js.map +1 -0
  390. package/dist/rpc/ws/index.mjs +3 -2
  391. package/dist/rpc/ws/index.mjs.map +1 -0
  392. package/dist/test.d.mts +3 -3
  393. package/dist/test.d.ts +3 -3
  394. package/dist/test.js +7 -6
  395. package/dist/test.js.map +1 -0
  396. package/dist/test.mjs +3 -2
  397. package/dist/test.mjs.map +1 -0
  398. package/dist/{types-8r301ZfZ.d.mts → types--FU0xyv7.d.mts} +1 -1
  399. package/dist/types-7nUdSf8z.d.mts +19 -0
  400. package/dist/{types-CVSbC6nz.d.mts → types-BE2z6gOo.d.ts} +1 -1
  401. package/dist/types-BJiHDyTL.d.mts +19 -0
  402. package/dist/types-BRCJyQsh.d.mts +90 -0
  403. package/dist/types-BRCJyQsh.d.ts +90 -0
  404. package/dist/types-BV7YmpJE.d.ts +14 -0
  405. package/dist/{types-Bz3JN2S1.d.ts → types-BVswigDc.d.ts} +1 -1
  406. package/dist/types-B_RVNTOF.d.mts +91 -0
  407. package/dist/types-B_RVNTOF.d.ts +91 -0
  408. package/dist/types-BtM-DxqM.d.mts +48 -0
  409. package/dist/types-C-nIlDCV.d.mts +48 -0
  410. package/dist/types-C-wRAcbr.d.ts +48 -0
  411. package/dist/types-C2KvkrD6.d.mts +48 -0
  412. package/dist/{meta-DlHaMicF.d.ts → types-C6hpZpnS.d.mts} +43 -43
  413. package/dist/{meta-DlHaMicF.d.mts → types-C6hpZpnS.d.ts} +43 -43
  414. package/dist/types-CFX2Ln0s.d.mts +48 -0
  415. package/dist/types-CR_EmIw8.d.mts +48 -0
  416. package/dist/types-CbRiXnzh.d.ts +19 -0
  417. package/dist/types-Ci9JeYtv.d.ts +48 -0
  418. package/dist/types-CiL0rHL3.d.ts +19 -0
  419. package/dist/types-CuBnfbgb.d.mts +14 -0
  420. package/dist/types-CvPG7k2Z.d.mts +14 -0
  421. package/dist/types-D9vxgkS4.d.mts +48 -0
  422. package/dist/types-DHYok84r.d.mts +14 -0
  423. package/dist/types-DI40e_s_.d.mts +19 -0
  424. package/dist/{types-DJuqpiI8.d.ts → types-DTOe0r2g.d.ts} +1 -1
  425. package/dist/types-DWVRUI6s.d.mts +91 -0
  426. package/dist/types-DWVRUI6s.d.ts +91 -0
  427. package/dist/types-DX98FM-A.d.ts +19 -0
  428. package/dist/types-DdJI1b5J.d.mts +19 -0
  429. package/dist/types-DfNl_AGj.d.ts +48 -0
  430. package/dist/types-DfNtpP-N.d.mts +111 -0
  431. package/dist/types-DfNtpP-N.d.ts +111 -0
  432. package/dist/types-DfVkUOZW.d.ts +48 -0
  433. package/dist/types-DfsKsjLM.d.mts +111 -0
  434. package/dist/types-DfsKsjLM.d.ts +111 -0
  435. package/dist/types-Didk5ZxZ.d.ts +48 -0
  436. package/dist/types-DsvVhEYR.d.ts +48 -0
  437. package/dist/types-Dt4WHNIG.d.mts +48 -0
  438. package/dist/types-DtG1fW8q.d.mts +48 -0
  439. package/dist/types-DwkH_ckj.d.mts +107 -0
  440. package/dist/types-DwkH_ckj.d.ts +107 -0
  441. package/dist/types-GLyEDoZh.d.ts +48 -0
  442. package/dist/types-HFldWW-W.d.mts +48 -0
  443. package/dist/types-LfX4z-X2.d.mts +48 -0
  444. package/dist/types-Ru_9udNp.d.ts +48 -0
  445. package/dist/types-gz344phy.d.mts +14 -0
  446. package/dist/types-hTbg1FQR.d.ts +19 -0
  447. package/dist/types-laEKHNwU.d.ts +14 -0
  448. package/dist/types-mcWWx2nR.d.mts +108 -0
  449. package/dist/types-mcWWx2nR.d.ts +108 -0
  450. package/dist/types-nA5JQl76.d.ts +14 -0
  451. package/dist/types-ojuQvq5-.d.ts +19 -0
  452. package/dist/types-pCI7fyyv.d.mts +108 -0
  453. package/dist/types-pCI7fyyv.d.ts +108 -0
  454. package/dist/types-vyUwFCHY.d.mts +19 -0
  455. package/dist/types-xovMFthM.d.ts +14 -0
  456. package/package.json +7 -2
  457. package/register/index.mjs +2 -2
  458. package/register/loader.mjs +33 -27
@@ -0,0 +1,334 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
+
3
+
4
+
5
+
6
+
7
+ var _chunkCLQEY47Xjs = require('./chunk-CLQEY47X.js');
8
+
9
+ // src/meta.ts
10
+ var Meta = class {
11
+ static {
12
+ _chunkCLQEY47Xjs.__name.call(void 0, this, "Meta");
13
+ }
14
+
15
+
16
+ constructor(data, paramsType) {
17
+ this.data = data;
18
+ this.paramsType = paramsType;
19
+ }
20
+ };
21
+
22
+ // src/core.ts
23
+ require('reflect-metadata');
24
+ var _events = require('events'); var _events2 = _interopRequireDefault(_events);
25
+ var _phecdacore = require('phecda-core');
26
+ var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
27
+ var debug = _debug2.default.call(void 0, "phecda-server(Factory)");
28
+ var emitter = new (0, _events2.default)();
29
+ function defaultServerInject() {
30
+ if (!_phecdacore.getInject.call(void 0, "watcher")) {
31
+ _phecdacore.setInject.call(void 0, "watcher", ({ eventName, instance, property, options }) => {
32
+ const fn = typeof instance[property] === "function" ? instance[property].bind(instance) : (v) => instance[property] = v;
33
+ if (_optionalChain([options, 'optionalAccess', _ => _.once])) emitter.once(eventName, fn);
34
+ else emitter.on(eventName, fn);
35
+ return () => {
36
+ emitter.off(eventName, fn);
37
+ };
38
+ });
39
+ }
40
+ }
41
+ _chunkCLQEY47Xjs.__name.call(void 0, defaultServerInject, "defaultServerInject");
42
+ var phecdaNamespace = /* @__PURE__ */ new Map();
43
+ var ServerPhecda = (_class = class {
44
+ static {
45
+ _chunkCLQEY47Xjs.__name.call(void 0, this, "ServerPhecda");
46
+ }
47
+ __init() {this.moduleMap = /* @__PURE__ */ new Map()}
48
+ __init2() {this.meta = []}
49
+ __init3() {this.modelMap = /* @__PURE__ */ new WeakMap()}
50
+ __init4() {this.modelSet = /* @__PURE__ */ new WeakSet()}
51
+ __init5() {this.dependenceGraph = /* @__PURE__ */ new Map()}
52
+
53
+
54
+
55
+ constructor(options) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);
56
+ defaultServerInject();
57
+ const { namespace = "default", parseModule = /* @__PURE__ */ _chunkCLQEY47Xjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunkCLQEY47Xjs.__name.call(void 0, (meta) => meta, "parseMeta"), generators = [] } = options;
58
+ phecdaNamespace.set(namespace, this);
59
+ this.parseMeta = parseMeta;
60
+ this.parseModule = parseModule;
61
+ this.generators = generators;
62
+ }
63
+ async start(models) {
64
+ for (const model of models) await this.buildDepModule(model);
65
+ this.hmr();
66
+ this.generateCode().then(() => {
67
+ if (_chunkCLQEY47Xjs.IS_ONLY_GENERATE) {
68
+ _chunkCLQEY47Xjs.log.call(void 0, "Only generate code");
69
+ process.exit(_chunkCLQEY47Xjs.PS_EXIT_CODE.EXIT);
70
+ }
71
+ });
72
+ }
73
+ __init6() {this.generateCode = /* @__PURE__ */ _chunkCLQEY47Xjs.__name.call(void 0, async () => {
74
+ return Promise.all(this.generators.map((generator) => {
75
+ debug(`generate "${generator.name}" code to ${generator.path}`);
76
+ return generator.output(this.meta);
77
+ }));
78
+ }, "generateCode")}
79
+ hmr() {
80
+ _chunkCLQEY47Xjs.HMR.call(void 0, async (oldModels, newModels) => {
81
+ debug("reload models ");
82
+ await this.replace(oldModels, newModels);
83
+ this.generateCode();
84
+ });
85
+ }
86
+ // async add(Model: Construct) {
87
+ // const tag = getTag(Model)
88
+ // const oldInstance = await this.del(tag)
89
+ // const { module: newModule } = await this.buildDepModule(Model)
90
+ // if (oldInstance && this.dependenceGraph.has(tag)) {
91
+ // debug(`replace module "${String(tag)}"`);
92
+ // [...this.dependenceGraph.get(tag)!].forEach((tag) => {
93
+ // const module = this.moduleMap.get(tag)
94
+ // for (const key in module) {
95
+ // if (module[key] === oldInstance)
96
+ // module[key] = newModule
97
+ // }
98
+ // })
99
+ // }
100
+ // }
101
+ // async del(modelOrTag: Construct | PropertyKey) {
102
+ // const tag = typeof modelOrTag === 'function' ? getTag(modelOrTag) : modelOrTag
103
+ // if (!this.moduleMap.has(tag))
104
+ // return
105
+ // const module = this.moduleMap.get(tag)
106
+ // debug(`unmount module "${String(tag)}"`)
107
+ // await invokeUnmount(module)
108
+ // debug(`del module "${String(tag)}"`)
109
+ // this.moduleMap.delete(tag)
110
+ // this.modelMap.delete(module)
111
+ // for (let i = this.meta.length - 1; i >= 0; i--) {
112
+ // if (this.meta[i].data.tag === tag)
113
+ // this.meta.splice(i, 1)
114
+ // }
115
+ // return module
116
+ // }
117
+ async destroy() {
118
+ debug("destroy all");
119
+ this.replace(Object.values(this.modelMap), []);
120
+ }
121
+ createProxyModule(tag) {
122
+ const that = this;
123
+ return new Proxy({}, {
124
+ get(_target, prop) {
125
+ const module = that.moduleMap.get(tag);
126
+ return Reflect.get(module, prop, module);
127
+ },
128
+ set(_target, prop, newValue) {
129
+ const module = that.moduleMap.get(tag);
130
+ return Reflect.set(module, prop, newValue, module);
131
+ },
132
+ has(_target, prop) {
133
+ return Reflect.has(that.moduleMap.get(tag), prop);
134
+ },
135
+ ownKeys() {
136
+ return Reflect.ownKeys(that.moduleMap.get(tag));
137
+ },
138
+ getPrototypeOf() {
139
+ return Reflect.getPrototypeOf(that.moduleMap.get(tag));
140
+ },
141
+ getOwnPropertyDescriptor(_target, prop) {
142
+ return Reflect.getOwnPropertyDescriptor(that.moduleMap.get(tag), prop);
143
+ }
144
+ });
145
+ }
146
+ async buildDepModule(Model) {
147
+ const paramtypes = getParamTypes(Model);
148
+ let module;
149
+ const tag = _phecdacore.getTag.call(void 0, Model);
150
+ if (this.moduleMap.has(tag)) {
151
+ module = this.moduleMap.get(tag);
152
+ if (!module) {
153
+ _chunkCLQEY47Xjs.log.call(void 0, `Exist Circular-Dependency or Multiple modules with the same tag [${String(tag)}]`, "warn");
154
+ return {
155
+ module: this.createProxyModule(tag),
156
+ tag
157
+ };
158
+ }
159
+ if (this.modelMap.get(module) !== Model && !this.modelSet.has(Model)) {
160
+ this.modelSet.add(Model);
161
+ if (module instanceof Model) _chunkCLQEY47Xjs.log.call(void 0, `Module taged ${String(tag)} has been overridden`);
162
+ else _chunkCLQEY47Xjs.log.call(void 0, `Synonym module: Module taged "${String(tag)}" has been loaded before, so phecda-server won't load Module "${Model.name}"`, "warn");
163
+ }
164
+ return {
165
+ module,
166
+ tag
167
+ };
168
+ }
169
+ this.moduleMap.set(tag, void 0);
170
+ debug(`instantiate module "${String(tag)}"`);
171
+ if (paramtypes) {
172
+ const paramtypesInstances = [];
173
+ for (const i in paramtypes) {
174
+ const { module: sub, tag: subTag } = await this.buildDepModule(paramtypes[i]);
175
+ paramtypesInstances[i] = sub;
176
+ if (!this.dependenceGraph.has(subTag)) this.dependenceGraph.set(subTag, /* @__PURE__ */ new Set());
177
+ this.dependenceGraph.get(subTag).add(tag);
178
+ }
179
+ module = this.parseModule(new Model(...paramtypesInstances));
180
+ } else {
181
+ module = this.parseModule(new Model());
182
+ }
183
+ this.meta.push(...getMetaFromInstance(module, tag, Model.name).map(this.parseMeta).filter((item) => !!item));
184
+ debug(`init module "${String(tag)}"`);
185
+ if (!_chunkCLQEY47Xjs.IS_ONLY_GENERATE) await _phecdacore.invokeInit.call(void 0, module);
186
+ debug(`add module "${String(tag)}"`);
187
+ this.moduleMap.set(tag, module);
188
+ this.modelMap.set(module, Model);
189
+ return {
190
+ module,
191
+ tag
192
+ };
193
+ }
194
+ async replace(oldModels, newModels) {
195
+ const oldModules = (await Promise.all(oldModels.map(async (model) => {
196
+ const tag = _phecdacore.getTag.call(void 0, model);
197
+ if (!this.has(tag)) return;
198
+ const module = this.moduleMap.get(tag);
199
+ debug(`unmount module "${String(tag)}"`);
200
+ await _phecdacore.invokeUnmount.call(void 0, module);
201
+ debug(`del module "${String(tag)}"`);
202
+ this.moduleMap.delete(tag);
203
+ this.modelMap.delete(module);
204
+ for (let i = this.meta.length - 1; i >= 0; i--) {
205
+ if (this.meta[i].data.tag === tag) this.meta.splice(i, 1);
206
+ }
207
+ return module;
208
+ }))).filter((item) => item);
209
+ for (const model of newModels) {
210
+ debug(`mount module: ${model.name}`);
211
+ await this.buildDepModule(model);
212
+ }
213
+ debug("replace old modules");
214
+ for (const module of oldModules) {
215
+ const tag = _phecdacore.getTag.call(void 0, module);
216
+ if (this.dependenceGraph.has(tag)) {
217
+ [
218
+ ...this.dependenceGraph.get(tag)
219
+ ].forEach((depTag) => {
220
+ const depModule = this.moduleMap.get(depTag);
221
+ if (depModule) {
222
+ for (const key in depModule) {
223
+ if (depModule[key] === module) depModule[key] = this.moduleMap.get(tag);
224
+ }
225
+ }
226
+ });
227
+ }
228
+ }
229
+ }
230
+ has(modelOrTag) {
231
+ return this.moduleMap.has(typeof modelOrTag === "function" ? _phecdacore.getTag.call(void 0, modelOrTag) : modelOrTag);
232
+ }
233
+ get(modelOrTag) {
234
+ const tag = typeof modelOrTag === "function" ? _phecdacore.getTag.call(void 0, modelOrTag) : modelOrTag;
235
+ if (!this.has(tag)) throw new Error(`module "${tag.toString()}" doesn't exist`);
236
+ return this.moduleMap.get(tag);
237
+ }
238
+ }, _class);
239
+ async function Factory(models, opts = {}) {
240
+ const phecda = new ServerPhecda(opts);
241
+ await phecda.start(models);
242
+ return phecda;
243
+ }
244
+ _chunkCLQEY47Xjs.__name.call(void 0, Factory, "Factory");
245
+ function useS(nsOrModel, namespace) {
246
+ if (!nsOrModel) {
247
+ namespace = "default";
248
+ } else {
249
+ if (typeof nsOrModel === "string") namespace = nsOrModel;
250
+ else if (!namespace) namespace = "default";
251
+ }
252
+ if (!phecdaNamespace.has(namespace)) throw new Error(`namespace "${namespace}" doesn't exist`);
253
+ const serverPhecda = phecdaNamespace.get(namespace);
254
+ if (nsOrModel && typeof nsOrModel !== "string") return serverPhecda.get(nsOrModel);
255
+ else return serverPhecda;
256
+ }
257
+ _chunkCLQEY47Xjs.__name.call(void 0, useS, "useS");
258
+ function getMetaFromInstance(instance, tag, name) {
259
+ const propertyKeys = _phecdacore.getMetaKey.call(void 0, instance).filter((item) => typeof item === "string");
260
+ const baseMeta = _phecdacore.getMergedMeta.call(void 0, instance, void 0);
261
+ const ctxs = baseMeta.ctxs;
262
+ return propertyKeys.filter((i) => typeof instance[i] === "function").map((i) => {
263
+ const meta = _phecdacore.getMergedMeta.call(void 0, instance, i);
264
+ const metaData = {
265
+ ...meta,
266
+ name,
267
+ tag,
268
+ func: i
269
+ };
270
+ if (baseMeta.controller) {
271
+ if (typeof tag !== "string") _chunkCLQEY47Xjs.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
272
+ metaData.controller = baseMeta.controller;
273
+ metaData[baseMeta.controller] = {
274
+ ...baseMeta[baseMeta.controller],
275
+ ...meta[baseMeta.controller]
276
+ };
277
+ const params = _phecdacore.getMetaParams.call(void 0, instance, i).map((item) => _phecdacore.getMergedMeta.call(void 0, instance, i, item));
278
+ params.forEach((item, index) => {
279
+ if (!item.pipe) item.pipe = meta.pipe || baseMeta.pipe;
280
+ if (!item.define) item.define = {};
281
+ item.index = index;
282
+ });
283
+ metaData.ctxs = ctxs;
284
+ metaData.params = params;
285
+ metaData.filter = meta.filter || baseMeta.filter;
286
+ metaData.define = {
287
+ ...baseMeta.define,
288
+ ...meta.define
289
+ };
290
+ for (const item of [
291
+ "addons",
292
+ "guards"
293
+ ]) {
294
+ const set = new Set(baseMeta[item]);
295
+ if (meta[item]) {
296
+ meta[item].forEach((part) => {
297
+ set.delete(part);
298
+ set.add(part);
299
+ });
300
+ }
301
+ metaData[item] = [
302
+ ...set
303
+ ];
304
+ }
305
+ }
306
+ return new Meta(deepFreeze(metaData), getParamTypes(instance, i) || []);
307
+ });
308
+ }
309
+ _chunkCLQEY47Xjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
310
+ function deepFreeze(object) {
311
+ Object.freeze(object);
312
+ Object.getOwnPropertyNames(object).forEach((prop) => {
313
+ if (object[prop] !== null && (typeof object[prop] === "object" || typeof object[prop] === "function") && !Object.isFrozen(object[prop])) deepFreeze(object[prop]);
314
+ });
315
+ return object;
316
+ }
317
+ _chunkCLQEY47Xjs.__name.call(void 0, deepFreeze, "deepFreeze");
318
+ function getParamTypes(Model, key) {
319
+ const paramTypes = Reflect.getMetadata("design:paramtypes", Model, key);
320
+ if (typeof paramTypes === "function") return paramTypes();
321
+ else return paramTypes;
322
+ }
323
+ _chunkCLQEY47Xjs.__name.call(void 0, getParamTypes, "getParamTypes");
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+ exports.Meta = Meta; exports.emitter = emitter; exports.defaultServerInject = defaultServerInject; exports.phecdaNamespace = phecdaNamespace; exports.ServerPhecda = ServerPhecda; exports.Factory = Factory; exports.useS = useS;
334
+ //# sourceMappingURL=chunk-PDKES3CS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meta.ts","../src/core.ts"],"names":["Meta","constructor","data","paramsType","EventEmitter","getInject","getMergedMeta","getMetaKey","getMetaParams","getTag","invokeInit","invokeUnmount","setInject","Debug","debug","emitter","defaultServerInject","eventName","instance","property","options","fn","bind","v","once","on","off","phecdaNamespace","Map","ServerPhecda","moduleMap","meta","modelMap","WeakMap","modelSet","WeakSet","dependenceGraph","parseModule","parseMeta","generators","namespace","module","set","start","models","model","buildDepModule","hmr","generateCode","then","IS_ONLY_GENERATE","log","process","exit","PS_EXIT_CODE","EXIT","Promise","all","map","generator","name","path","output","HMR","oldModels","newModels","replace","destroy","Object","values","createProxyModule","tag","that","Proxy","get","_target","prop","Reflect","newValue","has","ownKeys","getPrototypeOf","getOwnPropertyDescriptor","Model","paramtypes","getParamTypes","String","add","undefined","paramtypesInstances","i","sub","subTag","Set","push","getMetaFromInstance","filter","item","oldModules","delete","length","splice","forEach","depTag","depModule","key","modelOrTag","Error","toString","Factory","opts","phecda","useS","nsOrModel","serverPhecda","propertyKeys","baseMeta","ctxs","metaData","func","controller","params","index","pipe","define","part","deepFreeze","object","freeze","getOwnPropertyNames","isFrozen","paramTypes","getMetadata"],"mappings":"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","sourcesContent":["import type { BaseRequestType } from './types'\r\n\r\nexport interface ServiceMetaData {\r\n func: string\r\n name: string\r\n tag: string\r\n define?: any\r\n [key: string]: any\r\n}\r\n\r\nexport interface ControllerMetaData extends ServiceMetaData {\r\n controller: string\r\n http?: {\r\n type: BaseRequestType\r\n prefix: string\r\n route: string\r\n headers?: Record<string, string>\r\n\r\n }\r\n rpc?: {\r\n queue?: string\r\n isEvent?: boolean\r\n }\r\n ctxs?: string[]\r\n params: { type: string; index: number; key: string; pipe?: string; define: Record<string, any> }[]\r\n guards: string[]\r\n pipe?: string\r\n filter?: string\r\n addons: string[]\r\n\r\n}\r\n\r\nexport type MetaData = ControllerMetaData | ServiceMetaData\r\n\r\nexport class Meta {\r\n constructor(public data: MetaData, public paramsType: any[]) {\r\n\r\n }\r\n}\r\n\r\nexport interface ControllerMeta extends Meta {\r\n data: ControllerMetaData\r\n}\r\n","import 'reflect-metadata'\r\nimport EventEmitter from 'node:events'\r\nimport type { Construct, Phecda, WatcherParam } from 'phecda-core'\r\nimport { getInject, getMergedMeta, getMetaKey, getMetaParams, getTag, invokeInit, invokeUnmount, setInject } from 'phecda-core'\r\nimport Debug from 'debug'\r\nimport type { Emitter } from './types'\r\nimport type { MetaData } from './meta'\r\nimport { Meta } from './meta'\r\nimport { log } from './utils'\r\nimport { IS_ONLY_GENERATE, PS_EXIT_CODE } from './common'\r\nimport type { Generator } from './generator'\r\nimport { HMR } from './hmr'\r\n\r\nconst debug = Debug('phecda-server(Factory)')\r\n// TODO: support both emitter types and origin emitter type in future\r\nexport const emitter: Emitter = new EventEmitter() as any\r\nexport interface Options {\r\n parseModule?: (module: any) => any\r\n parseMeta?: (meta: Meta) => Meta | null | undefined\r\n generators?: Generator[]\r\n namespace?: string\r\n\r\n}\r\n\r\nexport function defaultServerInject() {\r\n if (!getInject('watcher')) {\r\n setInject('watcher', ({ eventName, instance, property, options }: WatcherParam) => {\r\n const fn = typeof instance[property] === 'function' ? instance[property].bind(instance) : (v: any) => instance[property] = v\r\n\r\n if (options?.once)\r\n (emitter as any).once(eventName, fn)\r\n\r\n else\r\n (emitter as any).on(eventName, fn)\r\n\r\n return () => {\r\n (emitter as any).off(eventName, fn)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const phecdaNamespace = new Map<string, ServerPhecda>()\r\n\r\nexport class ServerPhecda {\r\n moduleMap = new Map<PropertyKey, InstanceType<Construct>>()\r\n meta: Meta[] = []\r\n modelMap = new WeakMap<InstanceType<Construct>, Construct>()\r\n modelSet = new WeakSet<Construct>()\r\n dependenceGraph = new Map<PropertyKey, Set<PropertyKey>>()\r\n parseModule: (module: any) => any\r\n parseMeta: (meta: Meta) => Meta | null | undefined\r\n generators: Generator[]\r\n constructor(options: Options) {\r\n defaultServerInject()\r\n const { namespace = 'default', parseModule = (module: any) => module, parseMeta = (meta: any) => meta, generators = [] } = options\r\n phecdaNamespace.set(namespace, this)\r\n this.parseMeta = parseMeta\r\n this.parseModule = parseModule\r\n this.generators = generators\r\n }\r\n\r\n async start(models: Construct[]) {\r\n for (const model of models)\r\n await this.buildDepModule(model)\r\n\r\n this.hmr()\r\n this.generateCode().then(() => {\r\n if (IS_ONLY_GENERATE) {\r\n log('Only generate code')\r\n process.exit(PS_EXIT_CODE.EXIT)// only output code/work for ci\r\n }\r\n })\r\n }\r\n\r\n generateCode = async () => {\r\n return Promise.all(this.generators.map((generator) => {\r\n debug(`generate \"${generator.name}\" code to ${generator.path}`)\r\n\r\n return generator.output(this.meta)\r\n }))\r\n }\r\n\r\n hmr() {\r\n HMR(async (oldModels, newModels) => {\r\n debug('reload models ')\r\n\r\n await this.replace(oldModels, newModels)\r\n\r\n this.generateCode()\r\n })\r\n }\r\n // async add(Model: Construct) {\r\n // const tag = getTag(Model)\r\n\r\n // const oldInstance = await this.del(tag)\r\n // const { module: newModule } = await this.buildDepModule(Model)\r\n\r\n // if (oldInstance && this.dependenceGraph.has(tag)) {\r\n // debug(`replace module \"${String(tag)}\"`);\r\n\r\n // [...this.dependenceGraph.get(tag)!].forEach((tag) => {\r\n // const module = this.moduleMap.get(tag)\r\n // for (const key in module) {\r\n // if (module[key] === oldInstance)\r\n // module[key] = newModule\r\n // }\r\n // })\r\n // }\r\n // }\r\n\r\n // async del(modelOrTag: Construct | PropertyKey) {\r\n // const tag = typeof modelOrTag === 'function' ? getTag(modelOrTag) : modelOrTag\r\n\r\n // if (!this.moduleMap.has(tag))\r\n // return\r\n\r\n // const module = this.moduleMap.get(tag)\r\n\r\n // debug(`unmount module \"${String(tag)}\"`)\r\n // await invokeUnmount(module)\r\n // debug(`del module \"${String(tag)}\"`)\r\n\r\n // this.moduleMap.delete(tag)\r\n // this.modelMap.delete(module)\r\n // for (let i = this.meta.length - 1; i >= 0; i--) {\r\n // if (this.meta[i].data.tag === tag)\r\n // this.meta.splice(i, 1)\r\n // }\r\n // return module\r\n // }\r\n\r\n async destroy() {\r\n debug('destroy all')\r\n\r\n this.replace(Object.values(this.modelMap), [])\r\n }\r\n\r\n createProxyModule(tag: PropertyKey) {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const that = this\r\n return new Proxy({}, {\r\n get(_target, prop) {\r\n const module = that.moduleMap.get(tag)\r\n return Reflect.get(module, prop, module)\r\n },\r\n set(_target, prop, newValue) {\r\n const module = that.moduleMap.get(tag)\r\n\r\n return Reflect.set(module, prop, newValue, module)\r\n },\r\n has(_target, prop) {\r\n return Reflect.has(that.moduleMap.get(tag), prop)\r\n },\r\n ownKeys() {\r\n return Reflect.ownKeys(that.moduleMap.get(tag))\r\n },\r\n getPrototypeOf() {\r\n return Reflect.getPrototypeOf(that.moduleMap.get(tag))\r\n },\r\n getOwnPropertyDescriptor(_target, prop) {\r\n return Reflect.getOwnPropertyDescriptor(that.moduleMap.get(tag), prop)\r\n },\r\n })\r\n }\r\n\r\n protected async buildDepModule(Model: Construct) {\r\n const paramtypes = getParamTypes(Model) as Construct[]\r\n let module: InstanceType<Construct>\r\n const tag = getTag(Model)\r\n\r\n if (this.moduleMap.has(tag)) {\r\n module = this.moduleMap.get(tag)\r\n if (!module) {\r\n log(`Exist Circular-Dependency or Multiple modules with the same tag [${String(tag)}]`, 'warn')\r\n return { module: this.createProxyModule(tag), tag }\r\n }\r\n if (this.modelMap.get(module) !== Model && !this.modelSet.has(Model)) {\r\n this.modelSet.add(Model)// a module will only warn once\r\n\r\n if (module instanceof Model)\r\n log(`Module taged ${String(tag)} has been overridden`)// legal override\r\n else\r\n log(`Synonym module: Module taged \"${String(tag)}\" has been loaded before, so phecda-server won't load Module \"${Model.name}\"`, 'warn')\r\n }\r\n return { module, tag }\r\n }\r\n this.moduleMap.set(tag, undefined)\r\n debug(`instantiate module \"${String(tag)}\"`)\r\n\r\n if (paramtypes) {\r\n const paramtypesInstances = [] as any[]\r\n for (const i in paramtypes) {\r\n const { module: sub, tag: subTag } = await this.buildDepModule(paramtypes[i])\r\n paramtypesInstances[i] = sub\r\n if (!this.dependenceGraph.has(subTag))\r\n this.dependenceGraph.set(subTag, new Set())\r\n this.dependenceGraph.get(subTag)!.add(tag)\r\n }\r\n\r\n module = this.parseModule(new Model(...paramtypesInstances))\r\n }\r\n else {\r\n module = this.parseModule(new Model())\r\n }\r\n this.meta.push(...getMetaFromInstance(module, tag, Model.name).map(this.parseMeta).filter(item => !!item))\r\n\r\n debug(`init module \"${String(tag)}\"`)\r\n\r\n if (!IS_ONLY_GENERATE)// ??\r\n await invokeInit(module)\r\n\r\n debug(`add module \"${String(tag)}\"`)\r\n\r\n this.moduleMap.set(tag, module)\r\n this.modelMap.set(module, Model)\r\n return { module, tag }\r\n }\r\n\r\n async replace(oldModels: Construct[], newModels: Construct[]) {\r\n const oldModules = (await Promise.all(oldModels.map(async (model) => {\r\n const tag = getTag(model)\r\n if (!this.has(tag))\r\n return\r\n const module = this.moduleMap.get(tag)\r\n\r\n debug(`unmount module \"${String(tag)}\"`)\r\n await invokeUnmount(module)\r\n debug(`del module \"${String(tag)}\"`)\r\n\r\n this.moduleMap.delete(tag)\r\n this.modelMap.delete(module)\r\n for (let i = this.meta.length - 1; i >= 0; i--) {\r\n if (this.meta[i].data.tag === tag)\r\n this.meta.splice(i, 1)\r\n }\r\n return module\r\n }))).filter(item => item)\r\n\r\n for (const model of newModels) {\r\n debug(`mount module: ${model.name}`)\r\n await this.buildDepModule(model)\r\n }\r\n\r\n debug('replace old modules')\r\n\r\n for (const module of oldModules) {\r\n const tag = getTag(module)\r\n if (this.dependenceGraph.has(tag)) {\r\n [...this.dependenceGraph.get(tag)!].forEach((depTag) => {\r\n const depModule = this.moduleMap.get(depTag)\r\n\r\n if (depModule) {\r\n for (const key in depModule) {\r\n if (depModule[key] === module)\r\n depModule[key] = this.moduleMap.get(tag)\r\n }\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n has(modelOrTag: Construct | PropertyKey) {\r\n return this.moduleMap.has(typeof modelOrTag === 'function' ? getTag(modelOrTag) : modelOrTag)\r\n }\r\n\r\n get<Model extends Construct>(modelOrTag: Model | PropertyKey): InstanceType<Model> {\r\n const tag = typeof modelOrTag === 'function' ? getTag(modelOrTag) : modelOrTag\r\n if (!this.has(tag))\r\n throw new Error(`module \"${tag.toString()}\" doesn't exist`)\r\n return this.moduleMap.get(tag)\r\n }\r\n}\r\n\r\nexport async function Factory(models: Construct[], opts: Options = {}) {\r\n const phecda = new ServerPhecda(opts)\r\n await phecda.start(models)\r\n return phecda\r\n}\r\n\r\nexport function useS<Model extends Construct>(model: Model, namespace?: string): InstanceType<Model>\r\nexport function useS(namespace?: string): ServerPhecda\r\nexport function useS(nsOrModel?: Construct | string, namespace?: string) {\r\n if (!nsOrModel) {\r\n namespace = 'default'\r\n }\r\n else {\r\n if (typeof nsOrModel === 'string')\r\n namespace = nsOrModel\r\n else if (!namespace)\r\n namespace = 'default'\r\n }\r\n if (!phecdaNamespace.has(namespace))\r\n throw new Error(`namespace \"${namespace}\" doesn't exist`)\r\n const serverPhecda = phecdaNamespace.get(namespace)!\r\n if (nsOrModel && typeof nsOrModel !== 'string')\r\n return serverPhecda.get(nsOrModel)\r\n else\r\n\r\n return serverPhecda\r\n}\r\n\r\nfunction getMetaFromInstance(instance: Phecda, tag: PropertyKey, name: string) {\r\n const propertyKeys = getMetaKey(instance).filter(item => typeof item === 'string') as string[]\r\n const baseMeta = getMergedMeta(instance, undefined) as MetaData\r\n\r\n const ctxs = baseMeta.ctxs\r\n return propertyKeys.filter(i => typeof (instance as any)[i] === 'function').map((i) => {\r\n const meta = getMergedMeta(instance, i)\r\n const metaData = {\r\n ...meta,\r\n name,\r\n tag,\r\n func:\r\n i,\r\n } as MetaData\r\n if (baseMeta.controller) {\r\n if (typeof tag !== 'string')\r\n log(`can't use Tag with ${typeof tag} on controller \"${(instance as any).constructor.name}\",instead with \"${tag = String(tag)}\"`, 'error')\r\n metaData.controller = baseMeta.controller\r\n metaData[baseMeta.controller] = {\r\n ...baseMeta[baseMeta.controller],\r\n ...meta[baseMeta.controller],\r\n }\r\n\r\n const params = getMetaParams(instance, i).map(item => getMergedMeta(instance, i, item))\r\n params.forEach((item, index) => {\r\n if (!item.pipe)\r\n item.pipe = meta.pipe || baseMeta.pipe\r\n if (!item.define)\r\n item.define = {}\r\n item.index = index\r\n })\r\n\r\n metaData.ctxs = ctxs\r\n metaData.params = params\r\n metaData.filter = meta.filter || baseMeta.filter\r\n metaData.define = { ...baseMeta.define, ...meta.define }\r\n\r\n for (const item of ['addons', 'guards']) {\r\n const set = new Set<string>(baseMeta[item])\r\n if (meta[item]) {\r\n meta[item].forEach((part: string) => {\r\n set.delete(part)\r\n set.add(part)\r\n })\r\n }\r\n\r\n metaData[item] = [...set]\r\n }\r\n\r\n // metaData.addons = [...new Set([...baseMeta.addons, ...meta.addons])]\r\n // metaData.guards = [...new Set([...baseMeta.guards, ...meta.guards])]\r\n // metaData.interceptors = [...new Set([...baseMeta.interceptors, ...meta.interceptors])]\r\n }\r\n return new Meta(deepFreeze(metaData as MetaData), getParamTypes(instance, i as string) || [])\r\n })\r\n}\r\n\r\nfunction deepFreeze<T extends Record<string, any>>(object: T): T {\r\n // 先冻结对象本身\r\n Object.freeze(object)\r\n\r\n // 获取对象的所有属性名\r\n Object.getOwnPropertyNames(object).forEach((prop) => {\r\n // 如果属性是对象,并且没有被冻结,则递归冻结\r\n if (object[prop] !== null\r\n && (typeof object[prop] === 'object' || typeof object[prop] === 'function')\r\n && !Object.isFrozen(object[prop]))\r\n deepFreeze(object[prop])\r\n })\r\n\r\n return object\r\n}\r\nfunction getParamTypes(Model: any, key?: string | symbol) {\r\n const paramTypes = Reflect.getMetadata('design:paramtypes', Model, key!)\r\n if (typeof paramTypes === 'function')// work with loader to handle Circular-Dependency\r\n return paramTypes()\r\n\r\n else return paramTypes\r\n}\r\n"]}