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
@@ -3,13 +3,12 @@
3
3
 
4
4
 
5
5
 
6
-
7
- var _chunk4LLLQOMFjs = require('./chunk-4LLLQOMF.js');
6
+ var _chunkGA3YDUKHjs = require('./chunk-GA3YDUKH.js');
8
7
 
9
8
  // src/meta.ts
10
9
  var Meta = class {
11
10
  static {
12
- _chunk4LLLQOMFjs.__name.call(void 0, this, "Meta");
11
+ _chunkGA3YDUKHjs.__name.call(void 0, this, "Meta");
13
12
  }
14
13
 
15
14
 
@@ -38,11 +37,11 @@ function defaultServerInject() {
38
37
  });
39
38
  }
40
39
  }
41
- _chunk4LLLQOMFjs.__name.call(void 0, defaultServerInject, "defaultServerInject");
40
+ _chunkGA3YDUKHjs.__name.call(void 0, defaultServerInject, "defaultServerInject");
42
41
  var phecdaNamespace = /* @__PURE__ */ new Map();
43
42
  var ServerPhecda = (_class = class {
44
43
  static {
45
- _chunk4LLLQOMFjs.__name.call(void 0, this, "ServerPhecda");
44
+ _chunkGA3YDUKHjs.__name.call(void 0, this, "ServerPhecda");
46
45
  }
47
46
  __init() {this.moduleMap = /* @__PURE__ */ new Map()}
48
47
  __init2() {this.meta = []}
@@ -54,7 +53,7 @@ var ServerPhecda = (_class = class {
54
53
 
55
54
  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
55
  defaultServerInject();
57
- const { namespace = "default", parseModule = /* @__PURE__ */ _chunk4LLLQOMFjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunk4LLLQOMFjs.__name.call(void 0, (meta) => meta, "parseMeta"), generators = [] } = options;
56
+ const { namespace = "default", parseModule = /* @__PURE__ */ _chunkGA3YDUKHjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunkGA3YDUKHjs.__name.call(void 0, (meta) => meta, "parseMeta"), generators = [] } = options;
58
57
  phecdaNamespace.set(namespace, this);
59
58
  this.parseMeta = parseMeta;
60
59
  this.parseModule = parseModule;
@@ -64,20 +63,17 @@ var ServerPhecda = (_class = class {
64
63
  for (const model of models) await this.buildDepModule(model);
65
64
  this.hmr();
66
65
  this.generateCode().then(() => {
67
- if (_chunk4LLLQOMFjs.IS_ONLY_GENERATE) {
68
- _chunk4LLLQOMFjs.log.call(void 0, "Only generate code");
69
- process.exit(_chunk4LLLQOMFjs.PS_EXIT_CODE.EXIT);
70
- }
66
+ if (_chunkGA3YDUKHjs.IS_ONLY_GENERATE) process.exit(4);
71
67
  });
72
68
  }
73
- __init6() {this.generateCode = /* @__PURE__ */ _chunk4LLLQOMFjs.__name.call(void 0, async () => {
69
+ __init6() {this.generateCode = /* @__PURE__ */ _chunkGA3YDUKHjs.__name.call(void 0, async () => {
74
70
  return Promise.all(this.generators.map((generator) => {
75
71
  debug(`generate "${generator.name}" code to ${generator.path}`);
76
72
  return generator.output(this.meta);
77
73
  }));
78
74
  }, "generateCode")}
79
75
  hmr() {
80
- _chunk4LLLQOMFjs.HMR.call(void 0, async (oldModels, newModels) => {
76
+ _chunkGA3YDUKHjs.HMR.call(void 0, async (oldModels, newModels) => {
81
77
  debug("reload models ");
82
78
  await this.replace(oldModels, newModels);
83
79
  this.generateCode();
@@ -150,7 +146,7 @@ var ServerPhecda = (_class = class {
150
146
  if (this.moduleMap.has(tag)) {
151
147
  module = this.moduleMap.get(tag);
152
148
  if (!module) {
153
- _chunk4LLLQOMFjs.log.call(void 0, `Exist Circular-Dependency or Multiple modules with the same tag [${String(tag)}]`, "warn");
149
+ _chunkGA3YDUKHjs.log.call(void 0, `Exist Circular-Dependency or Multiple modules with the same tag [${String(tag)}]`, "warn");
154
150
  return {
155
151
  module: this.createProxyModule(tag),
156
152
  tag
@@ -158,8 +154,8 @@ var ServerPhecda = (_class = class {
158
154
  }
159
155
  if (this.modelMap.get(module) !== Model && !this.modelSet.has(Model)) {
160
156
  this.modelSet.add(Model);
161
- if (module instanceof Model) _chunk4LLLQOMFjs.log.call(void 0, `Module taged ${String(tag)} has been overridden`);
162
- else _chunk4LLLQOMFjs.log.call(void 0, `Synonym module: Module taged "${String(tag)}" has been loaded before, so phecda-server won't load Module "${Model.name}"`, "warn");
157
+ if (module instanceof Model) _chunkGA3YDUKHjs.log.call(void 0, `Module taged ${String(tag)} has been overridden`);
158
+ else _chunkGA3YDUKHjs.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
159
  }
164
160
  return {
165
161
  module,
@@ -182,7 +178,7 @@ var ServerPhecda = (_class = class {
182
178
  }
183
179
  this.meta.push(...getMetaFromInstance(module, tag, Model.name).map(this.parseMeta).filter((item) => !!item));
184
180
  debug(`init module "${String(tag)}"`);
185
- if (!_chunk4LLLQOMFjs.IS_ONLY_GENERATE) await _phecdacore.invokeInit.call(void 0, module);
181
+ if (!_chunkGA3YDUKHjs.IS_ONLY_GENERATE) await _phecdacore.invokeInit.call(void 0, module);
186
182
  debug(`add module "${String(tag)}"`);
187
183
  this.moduleMap.set(tag, module);
188
184
  this.modelMap.set(module, Model);
@@ -241,7 +237,7 @@ async function Factory(models, opts = {}) {
241
237
  await phecda.start(models);
242
238
  return phecda;
243
239
  }
244
- _chunk4LLLQOMFjs.__name.call(void 0, Factory, "Factory");
240
+ _chunkGA3YDUKHjs.__name.call(void 0, Factory, "Factory");
245
241
  function useS(nsOrModel, namespace) {
246
242
  if (!nsOrModel) {
247
243
  namespace = "default";
@@ -254,7 +250,7 @@ function useS(nsOrModel, namespace) {
254
250
  if (nsOrModel && typeof nsOrModel !== "string") return serverPhecda.get(nsOrModel);
255
251
  else return serverPhecda;
256
252
  }
257
- _chunk4LLLQOMFjs.__name.call(void 0, useS, "useS");
253
+ _chunkGA3YDUKHjs.__name.call(void 0, useS, "useS");
258
254
  function getMetaFromInstance(instance, tag, name) {
259
255
  const propertyKeys = _phecdacore.getMetaKey.call(void 0, instance).filter((item) => typeof item === "string");
260
256
  const baseMeta = _phecdacore.getMergedMeta.call(void 0, instance, void 0);
@@ -268,7 +264,7 @@ function getMetaFromInstance(instance, tag, name) {
268
264
  func: i
269
265
  };
270
266
  if (baseMeta.controller) {
271
- if (typeof tag !== "string") _chunk4LLLQOMFjs.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
267
+ if (typeof tag !== "string") _chunkGA3YDUKHjs.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
272
268
  metaData.controller = baseMeta.controller;
273
269
  metaData[baseMeta.controller] = {
274
270
  ...baseMeta[baseMeta.controller],
@@ -306,7 +302,7 @@ function getMetaFromInstance(instance, tag, name) {
306
302
  return new Meta(deepFreeze(metaData), getParamTypes(instance, i) || []);
307
303
  });
308
304
  }
309
- _chunk4LLLQOMFjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
305
+ _chunkGA3YDUKHjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
310
306
  function deepFreeze(object) {
311
307
  Object.freeze(object);
312
308
  Object.getOwnPropertyNames(object).forEach((prop) => {
@@ -314,13 +310,13 @@ function deepFreeze(object) {
314
310
  });
315
311
  return object;
316
312
  }
317
- _chunk4LLLQOMFjs.__name.call(void 0, deepFreeze, "deepFreeze");
313
+ _chunkGA3YDUKHjs.__name.call(void 0, deepFreeze, "deepFreeze");
318
314
  function getParamTypes(Model, key) {
319
315
  const paramTypes = Reflect.getMetadata("design:paramtypes", Model, key);
320
316
  if (typeof paramTypes === "function") return paramTypes();
321
317
  else return paramTypes;
322
318
  }
323
- _chunk4LLLQOMFjs.__name.call(void 0, getParamTypes, "getParamTypes");
319
+ _chunkGA3YDUKHjs.__name.call(void 0, getParamTypes, "getParamTypes");
324
320
 
325
321
 
326
322
 
@@ -331,3 +327,4 @@ _chunk4LLLQOMFjs.__name.call(void 0, getParamTypes, "getParamTypes");
331
327
 
332
328
 
333
329
  exports.Meta = Meta; exports.emitter = emitter; exports.defaultServerInject = defaultServerInject; exports.phecdaNamespace = phecdaNamespace; exports.ServerPhecda = ServerPhecda; exports.Factory = Factory; exports.useS = useS;
330
+ //# sourceMappingURL=chunk-IIAJBTJE.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","process","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","log","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 } 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 process.exit(4)// only output code/work for ci\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"]}
@@ -0,0 +1,336 @@
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 _chunkQ64YUA6Qjs = require('./chunk-Q64YUA6Q.js');
8
+
9
+ // src/meta.ts
10
+ var Meta = class {
11
+ static {
12
+ _chunkQ64YUA6Qjs.__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
+ _chunkQ64YUA6Qjs.__name.call(void 0, defaultServerInject, "defaultServerInject");
42
+ var phecdaNamespace = /* @__PURE__ */ new Map();
43
+ var ServerPhecda = (_class = class {
44
+ static {
45
+ _chunkQ64YUA6Qjs.__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__ */ _chunkQ64YUA6Qjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunkQ64YUA6Qjs.__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 (_chunkQ64YUA6Qjs.IS_ONLY_GENERATE) {
68
+ _chunkQ64YUA6Qjs.log.call(void 0, "Only generate code");
69
+ process.exit(_chunkQ64YUA6Qjs.PS_EXIT_CODE.EXIT);
70
+ }
71
+ });
72
+ }
73
+ __init6() {this.generateCode = /* @__PURE__ */ _chunkQ64YUA6Qjs.__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
+ _chunkQ64YUA6Qjs.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
+ _chunkQ64YUA6Qjs.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) _chunkQ64YUA6Qjs.log.call(void 0, `Module taged ${String(tag)} has been overridden`);
162
+ else _chunkQ64YUA6Qjs.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 (!_chunkQ64YUA6Qjs.IS_ONLY_GENERATE) {
186
+ await _phecdacore.invokeInit.call(void 0, module);
187
+ }
188
+ debug(`add module "${String(tag)}"`);
189
+ this.moduleMap.set(tag, module);
190
+ this.modelMap.set(module, Model);
191
+ return {
192
+ module,
193
+ tag
194
+ };
195
+ }
196
+ async replace(oldModels, newModels) {
197
+ const oldModules = (await Promise.all(oldModels.map(async (model) => {
198
+ const tag = _phecdacore.getTag.call(void 0, model);
199
+ if (!this.has(tag)) return;
200
+ const module = this.moduleMap.get(tag);
201
+ debug(`unmount module "${String(tag)}"`);
202
+ await _phecdacore.invokeUnmount.call(void 0, module);
203
+ debug(`del module "${String(tag)}"`);
204
+ this.moduleMap.delete(tag);
205
+ this.modelMap.delete(module);
206
+ for (let i = this.meta.length - 1; i >= 0; i--) {
207
+ if (this.meta[i].data.tag === tag) this.meta.splice(i, 1);
208
+ }
209
+ return module;
210
+ }))).filter((item) => item);
211
+ for (const model of newModels) {
212
+ debug(`mount module: ${model.name}`);
213
+ await this.buildDepModule(model);
214
+ }
215
+ debug("replace old modules");
216
+ for (const module of oldModules) {
217
+ const tag = _phecdacore.getTag.call(void 0, module);
218
+ if (this.dependenceGraph.has(tag)) {
219
+ [
220
+ ...this.dependenceGraph.get(tag)
221
+ ].forEach((depTag) => {
222
+ const depModule = this.moduleMap.get(depTag);
223
+ if (depModule) {
224
+ for (const key in depModule) {
225
+ if (depModule[key] === module) depModule[key] = this.moduleMap.get(tag);
226
+ }
227
+ }
228
+ });
229
+ }
230
+ }
231
+ }
232
+ has(modelOrTag) {
233
+ return this.moduleMap.has(typeof modelOrTag === "function" ? _phecdacore.getTag.call(void 0, modelOrTag) : modelOrTag);
234
+ }
235
+ get(modelOrTag) {
236
+ const tag = typeof modelOrTag === "function" ? _phecdacore.getTag.call(void 0, modelOrTag) : modelOrTag;
237
+ if (!this.has(tag)) throw new Error(`module "${tag.toString()}" doesn't exist`);
238
+ return this.moduleMap.get(tag);
239
+ }
240
+ }, _class);
241
+ async function Factory(models, opts = {}) {
242
+ const phecda = new ServerPhecda(opts);
243
+ await phecda.start(models);
244
+ return phecda;
245
+ }
246
+ _chunkQ64YUA6Qjs.__name.call(void 0, Factory, "Factory");
247
+ function useS(nsOrModel, namespace) {
248
+ if (!nsOrModel) {
249
+ namespace = "default";
250
+ } else {
251
+ if (typeof nsOrModel === "string") namespace = nsOrModel;
252
+ else if (!namespace) namespace = "default";
253
+ }
254
+ if (!phecdaNamespace.has(namespace)) throw new Error(`namespace "${namespace}" doesn't exist`);
255
+ const serverPhecda = phecdaNamespace.get(namespace);
256
+ if (nsOrModel && typeof nsOrModel !== "string") return serverPhecda.get(nsOrModel);
257
+ else return serverPhecda;
258
+ }
259
+ _chunkQ64YUA6Qjs.__name.call(void 0, useS, "useS");
260
+ function getMetaFromInstance(instance, tag, name) {
261
+ const propertyKeys = _phecdacore.getMetaKey.call(void 0, instance).filter((item) => typeof item === "string");
262
+ const baseMeta = _phecdacore.getMergedMeta.call(void 0, instance, void 0);
263
+ const ctxs = baseMeta.ctxs;
264
+ return propertyKeys.filter((i) => typeof instance[i] === "function").map((i) => {
265
+ const meta = _phecdacore.getMergedMeta.call(void 0, instance, i);
266
+ const metaData = {
267
+ ...meta,
268
+ name,
269
+ tag,
270
+ func: i
271
+ };
272
+ if (baseMeta.controller) {
273
+ if (typeof tag !== "string") _chunkQ64YUA6Qjs.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
274
+ metaData.controller = baseMeta.controller;
275
+ metaData[baseMeta.controller] = {
276
+ ...baseMeta[baseMeta.controller],
277
+ ...meta[baseMeta.controller]
278
+ };
279
+ const params = _phecdacore.getMetaParams.call(void 0, instance, i).map((item) => _phecdacore.getMergedMeta.call(void 0, instance, i, item));
280
+ params.forEach((item, index) => {
281
+ if (!item.pipe) item.pipe = meta.pipe || baseMeta.pipe;
282
+ if (!item.define) item.define = {};
283
+ item.index = index;
284
+ });
285
+ metaData.ctxs = ctxs;
286
+ metaData.params = params;
287
+ metaData.filter = meta.filter || baseMeta.filter;
288
+ metaData.define = {
289
+ ...baseMeta.define,
290
+ ...meta.define
291
+ };
292
+ for (const item of [
293
+ "addons",
294
+ "guards"
295
+ ]) {
296
+ const set = new Set(baseMeta[item]);
297
+ if (meta[item]) {
298
+ meta[item].forEach((part) => {
299
+ set.delete(part);
300
+ set.add(part);
301
+ });
302
+ }
303
+ metaData[item] = [
304
+ ...set
305
+ ];
306
+ }
307
+ }
308
+ return new Meta(deepFreeze(metaData), getParamTypes(instance, i) || []);
309
+ });
310
+ }
311
+ _chunkQ64YUA6Qjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
312
+ function deepFreeze(object) {
313
+ Object.freeze(object);
314
+ Object.getOwnPropertyNames(object).forEach((prop) => {
315
+ if (object[prop] !== null && (typeof object[prop] === "object" || typeof object[prop] === "function") && !Object.isFrozen(object[prop])) deepFreeze(object[prop]);
316
+ });
317
+ return object;
318
+ }
319
+ _chunkQ64YUA6Qjs.__name.call(void 0, deepFreeze, "deepFreeze");
320
+ function getParamTypes(Model, key) {
321
+ const paramTypes = Reflect.getMetadata("design:paramtypes", Model, key);
322
+ if (typeof paramTypes === "function") return paramTypes();
323
+ else return paramTypes;
324
+ }
325
+ _chunkQ64YUA6Qjs.__name.call(void 0, getParamTypes, "getParamTypes");
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+ exports.Meta = Meta; exports.emitter = emitter; exports.defaultServerInject = defaultServerInject; exports.phecdaNamespace = phecdaNamespace; exports.ServerPhecda = ServerPhecda; exports.Factory = Factory; exports.useS = useS;
336
+ //# sourceMappingURL=chunk-IPEKAVER.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 {\r\n await invokeInit(module)\r\n\r\n }\r\n\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"]}