phecda-server 7.0.0-alpha.15 → 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.
- package/README.md +10 -10
- package/assets/schema.json +1 -7
- package/bin/cli.mjs +16 -11
- package/dist/chunk-25LNE62T.mjs +325 -0
- package/dist/chunk-25LNE62T.mjs.map +1 -0
- package/dist/chunk-2AANNMKJ.js +339 -0
- package/dist/chunk-2AANNMKJ.js.map +1 -0
- package/dist/chunk-2AF4PNIP.mjs +548 -0
- package/dist/chunk-2AF4PNIP.mjs.map +1 -0
- package/dist/chunk-2ATTABKA.mjs +330 -0
- package/dist/chunk-2ATTABKA.mjs.map +1 -0
- package/dist/chunk-2TZOJIU5.mjs +548 -0
- package/dist/chunk-2TZOJIU5.mjs.map +1 -0
- package/dist/chunk-2WO3UGXN.js +551 -0
- package/dist/chunk-2WO3UGXN.js.map +1 -0
- package/dist/chunk-3GHLAAIB.js +330 -0
- package/dist/chunk-3GHLAAIB.js.map +1 -0
- package/dist/chunk-3OHQDPV2.js +548 -0
- package/dist/chunk-3OHQDPV2.js.map +1 -0
- package/dist/chunk-3P3Z5UC6.mjs +150 -0
- package/dist/chunk-3P3Z5UC6.mjs.map +1 -0
- package/dist/chunk-3XK2RTI2.mjs +563 -0
- package/dist/chunk-3XK2RTI2.mjs.map +1 -0
- package/dist/chunk-4G7TPEE2.mjs +330 -0
- package/dist/chunk-4G7TPEE2.mjs.map +1 -0
- package/dist/chunk-4GH4IFBL.mjs +339 -0
- package/dist/chunk-4GH4IFBL.mjs.map +1 -0
- package/dist/chunk-56Y5GBKV.mjs +336 -0
- package/dist/chunk-56Y5GBKV.mjs.map +1 -0
- package/dist/{chunk-MUI6MTUO.mjs → chunk-5DOJ5DLK.mjs} +2 -1
- package/dist/chunk-5DOJ5DLK.mjs.map +1 -0
- package/dist/chunk-5SMDKUTT.js +551 -0
- package/dist/chunk-5SMDKUTT.js.map +1 -0
- package/dist/chunk-672QEOST.js +549 -0
- package/dist/chunk-672QEOST.js.map +1 -0
- package/dist/{chunk-YCES6ABN.mjs → chunk-6JAHCTOT.mjs} +2 -1
- package/dist/chunk-6JAHCTOT.mjs.map +1 -0
- package/dist/chunk-6TVDK7LS.mjs +334 -0
- package/dist/chunk-6TVDK7LS.mjs.map +1 -0
- package/dist/chunk-6UFCTN4R.mjs +153 -0
- package/dist/chunk-6UFCTN4R.mjs.map +1 -0
- package/dist/chunk-6WL4Q3PG.js +546 -0
- package/dist/chunk-6WL4Q3PG.js.map +1 -0
- package/dist/chunk-77T6PXFR.js +330 -0
- package/dist/chunk-77T6PXFR.js.map +1 -0
- package/dist/chunk-7BE5DAYB.mjs +548 -0
- package/dist/chunk-7BE5DAYB.mjs.map +1 -0
- package/dist/{chunk-KCPBITYZ.js → chunk-7RF74WML.js} +25 -24
- package/dist/chunk-7RF74WML.js.map +1 -0
- package/dist/chunk-7SKWIPNP.js +230 -0
- package/dist/chunk-7SKWIPNP.js.map +1 -0
- package/dist/chunk-7VCG4CO6.js +551 -0
- package/dist/chunk-7VCG4CO6.js.map +1 -0
- package/dist/chunk-7X5SWO7F.js +230 -0
- package/dist/chunk-7X5SWO7F.js.map +1 -0
- package/dist/chunk-A2ZAEKXE.js +230 -0
- package/dist/chunk-A2ZAEKXE.js.map +1 -0
- package/dist/chunk-A7IQ3C2W.mjs +551 -0
- package/dist/chunk-A7IQ3C2W.mjs.map +1 -0
- package/dist/chunk-A7Z6WC2U.mjs +549 -0
- package/dist/chunk-A7Z6WC2U.mjs.map +1 -0
- package/dist/{chunk-VX4BZEL7.mjs → chunk-AH2GHJYG.mjs} +12 -8
- package/dist/chunk-AH2GHJYG.mjs.map +1 -0
- package/dist/chunk-AKRBZ4QH.js +327 -0
- package/dist/chunk-AKRBZ4QH.js.map +1 -0
- package/dist/chunk-AUF4H6MB.mjs +330 -0
- package/dist/chunk-AUF4H6MB.mjs.map +1 -0
- package/dist/chunk-B4LHVDDL.js +329 -0
- package/dist/chunk-B4LHVDDL.js.map +1 -0
- package/dist/chunk-BVI6MJ57.js +150 -0
- package/dist/chunk-BVI6MJ57.js.map +1 -0
- package/dist/chunk-BZMKWF3E.mjs +546 -0
- package/dist/chunk-BZMKWF3E.mjs.map +1 -0
- package/dist/chunk-BZMKZ733.mjs +154 -0
- package/dist/chunk-BZMKZ733.mjs.map +1 -0
- package/dist/chunk-C2MTV2HS.js +148 -0
- package/dist/chunk-C2MTV2HS.js.map +1 -0
- package/dist/chunk-CGHKI3FB.js +548 -0
- package/dist/chunk-CGHKI3FB.js.map +1 -0
- package/dist/chunk-CLQEY47X.js +154 -0
- package/dist/chunk-CLQEY47X.js.map +1 -0
- package/dist/chunk-DIDCPEI7.js +546 -0
- package/dist/chunk-DIDCPEI7.js.map +1 -0
- package/dist/chunk-DJCMOLNU.mjs +547 -0
- package/dist/chunk-DJCMOLNU.mjs.map +1 -0
- package/dist/chunk-DJKIF6CO.mjs +230 -0
- package/dist/chunk-DJKIF6CO.mjs.map +1 -0
- package/dist/chunk-DZXOLJ2U.mjs +546 -0
- package/dist/chunk-DZXOLJ2U.mjs.map +1 -0
- package/dist/chunk-EEZLSH37.js +230 -0
- package/dist/chunk-EEZLSH37.js.map +1 -0
- package/dist/chunk-EYNIZVQM.js +334 -0
- package/dist/chunk-EYNIZVQM.js.map +1 -0
- package/dist/chunk-FA4XQ5HS.mjs +547 -0
- package/dist/chunk-FA4XQ5HS.mjs.map +1 -0
- package/dist/chunk-FBN6O256.js +153 -0
- package/dist/chunk-FBN6O256.js.map +1 -0
- package/dist/chunk-FJYLWOEI.js +325 -0
- package/dist/chunk-FJYLWOEI.js.map +1 -0
- package/dist/chunk-FV5CWX5Y.js +563 -0
- package/dist/chunk-FV5CWX5Y.js.map +1 -0
- package/dist/chunk-FZIJNZOP.js +546 -0
- package/dist/chunk-FZIJNZOP.js.map +1 -0
- package/dist/chunk-G377USSH.js +230 -0
- package/dist/chunk-G377USSH.js.map +1 -0
- package/dist/chunk-G3K6FCN4.js +549 -0
- package/dist/chunk-G3K6FCN4.js.map +1 -0
- package/dist/chunk-GA3YDUKH.js +150 -0
- package/dist/chunk-GA3YDUKH.js.map +1 -0
- package/dist/chunk-GMYV3IKV.mjs +548 -0
- package/dist/chunk-GMYV3IKV.mjs.map +1 -0
- package/dist/{chunk-IJFIY6QN.js → chunk-H7OCHDZT.js} +55 -63
- package/dist/chunk-H7OCHDZT.js.map +1 -0
- package/dist/chunk-HBITJSAJ.js +334 -0
- package/dist/chunk-HBITJSAJ.js.map +1 -0
- package/dist/chunk-HGCBKGAE.js +563 -0
- package/dist/chunk-HGCBKGAE.js.map +1 -0
- package/dist/chunk-HGQUWR5Y.js +548 -0
- package/dist/chunk-HGQUWR5Y.js.map +1 -0
- package/dist/chunk-HNHYJHTR.mjs +150 -0
- package/dist/chunk-HNHYJHTR.mjs.map +1 -0
- package/dist/chunk-HOMMTTY3.js +549 -0
- package/dist/chunk-HOMMTTY3.js.map +1 -0
- package/dist/chunk-HPCKU764.js +230 -0
- package/dist/chunk-HPCKU764.js.map +1 -0
- package/dist/chunk-HWZUI3S7.mjs +154 -0
- package/dist/chunk-HWZUI3S7.mjs.map +1 -0
- package/dist/chunk-HXAYHDBD.mjs +324 -0
- package/dist/chunk-HXAYHDBD.mjs.map +1 -0
- package/dist/chunk-I7Q27MJV.mjs +230 -0
- package/dist/chunk-I7Q27MJV.mjs.map +1 -0
- package/dist/{chunk-6OQ2SB5W.js → chunk-IIAJBTJE.js} +19 -22
- package/dist/chunk-IIAJBTJE.js.map +1 -0
- package/dist/chunk-IPEKAVER.js +336 -0
- package/dist/chunk-IPEKAVER.js.map +1 -0
- package/dist/chunk-IUBKOGEX.js +337 -0
- package/dist/chunk-IUBKOGEX.js.map +1 -0
- package/dist/chunk-JF5Q4N2N.mjs +330 -0
- package/dist/chunk-JF5Q4N2N.mjs.map +1 -0
- package/dist/chunk-JL3U632E.mjs +329 -0
- package/dist/chunk-JL3U632E.mjs.map +1 -0
- package/dist/chunk-JZW6S7UZ.mjs +334 -0
- package/dist/chunk-JZW6S7UZ.mjs.map +1 -0
- package/dist/chunk-K7BBDAQV.js +330 -0
- package/dist/chunk-K7BBDAQV.js.map +1 -0
- package/dist/chunk-KATTCXH7.mjs +153 -0
- package/dist/chunk-KATTCXH7.mjs.map +1 -0
- package/dist/chunk-KHHTD6W2.js +325 -0
- package/dist/chunk-KHHTD6W2.js.map +1 -0
- package/dist/chunk-KJTJTAM5.js +547 -0
- package/dist/chunk-KJTJTAM5.js.map +1 -0
- package/dist/chunk-KUGU3UGO.js +334 -0
- package/dist/chunk-KUGU3UGO.js.map +1 -0
- package/dist/chunk-LBH4RXQQ.mjs +534 -0
- package/dist/chunk-LBH4RXQQ.mjs.map +1 -0
- package/dist/chunk-LMCXPBEL.js +230 -0
- package/dist/chunk-LMCXPBEL.js.map +1 -0
- package/dist/chunk-LPCFXBIN.mjs +554 -0
- package/dist/chunk-LPCFXBIN.mjs.map +1 -0
- package/dist/chunk-LWKMKMGP.mjs +551 -0
- package/dist/chunk-LWKMKMGP.mjs.map +1 -0
- package/dist/chunk-M2NBQIY4.js +230 -0
- package/dist/chunk-M2NBQIY4.js.map +1 -0
- package/dist/chunk-MCVUJNTJ.mjs +546 -0
- package/dist/chunk-MCVUJNTJ.mjs.map +1 -0
- package/dist/{chunk-NQ55PA2X.mjs → chunk-MDPW6WGF.mjs} +1 -0
- package/dist/chunk-MDPW6WGF.mjs.map +1 -0
- package/dist/chunk-O23LYYQO.mjs +549 -0
- package/dist/chunk-O23LYYQO.mjs.map +1 -0
- package/dist/chunk-OGNSLEM7.js +562 -0
- package/dist/chunk-OGNSLEM7.js.map +1 -0
- package/dist/chunk-OSCTXAED.js +154 -0
- package/dist/chunk-OSCTXAED.js.map +1 -0
- package/dist/chunk-P5DXLNAV.mjs +334 -0
- package/dist/chunk-P5DXLNAV.mjs.map +1 -0
- package/dist/chunk-PDKES3CS.js +334 -0
- package/dist/chunk-PDKES3CS.js.map +1 -0
- package/dist/chunk-PLD4EI4W.mjs +334 -0
- package/dist/chunk-PLD4EI4W.mjs.map +1 -0
- package/dist/chunk-PQXBA7RP.mjs +325 -0
- package/dist/chunk-PQXBA7RP.mjs.map +1 -0
- package/dist/chunk-PUXTWHMP.mjs +337 -0
- package/dist/chunk-PUXTWHMP.mjs.map +1 -0
- package/dist/chunk-PWYWGN3L.mjs +562 -0
- package/dist/chunk-PWYWGN3L.mjs.map +1 -0
- package/dist/chunk-PXWSDTIP.mjs +551 -0
- package/dist/chunk-PXWSDTIP.mjs.map +1 -0
- package/dist/chunk-Q64YUA6Q.js +153 -0
- package/dist/chunk-Q64YUA6Q.js.map +1 -0
- package/dist/chunk-Q7FATBG4.mjs +327 -0
- package/dist/chunk-Q7FATBG4.mjs.map +1 -0
- package/dist/chunk-QLR7YJ7K.js +548 -0
- package/dist/chunk-QLR7YJ7K.js.map +1 -0
- package/dist/chunk-QNTSTOHM.mjs +230 -0
- package/dist/chunk-QNTSTOHM.mjs.map +1 -0
- package/dist/chunk-QP2HPQND.js +548 -0
- package/dist/chunk-QP2HPQND.js.map +1 -0
- package/dist/{chunk-4LLLQOMF.js → chunk-RLFCI3RG.js} +1 -0
- package/dist/chunk-RLFCI3RG.js.map +1 -0
- package/dist/chunk-RW5HHB6Z.mjs +230 -0
- package/dist/chunk-RW5HHB6Z.mjs.map +1 -0
- package/dist/chunk-RXBJH74V.js +334 -0
- package/dist/chunk-RXBJH74V.js.map +1 -0
- package/dist/chunk-S2B3Y2WJ.mjs +230 -0
- package/dist/chunk-S2B3Y2WJ.mjs.map +1 -0
- package/dist/chunk-SCA7SXI6.mjs +334 -0
- package/dist/chunk-SCA7SXI6.mjs.map +1 -0
- package/dist/chunk-SE2XQSPO.js +549 -0
- package/dist/chunk-SE2XQSPO.js.map +1 -0
- package/dist/chunk-SP4ASHBX.mjs +334 -0
- package/dist/chunk-SP4ASHBX.mjs.map +1 -0
- package/dist/chunk-TFK3ICC2.mjs +548 -0
- package/dist/chunk-TFK3ICC2.mjs.map +1 -0
- package/dist/chunk-TQR7KDFP.mjs +150 -0
- package/dist/chunk-TQR7KDFP.mjs.map +1 -0
- package/dist/chunk-TRJVULA2.js +330 -0
- package/dist/chunk-TRJVULA2.js.map +1 -0
- package/dist/chunk-TU4XB7CZ.mjs +230 -0
- package/dist/chunk-TU4XB7CZ.mjs.map +1 -0
- package/dist/chunk-U7EKEUCU.mjs +549 -0
- package/dist/chunk-U7EKEUCU.mjs.map +1 -0
- package/dist/chunk-UBQ4FXWS.js +554 -0
- package/dist/chunk-UBQ4FXWS.js.map +1 -0
- package/dist/chunk-UFQBSH4U.mjs +230 -0
- package/dist/chunk-UFQBSH4U.mjs.map +1 -0
- package/dist/chunk-UUHB6RHI.mjs +230 -0
- package/dist/chunk-UUHB6RHI.mjs.map +1 -0
- package/dist/chunk-UUKYR5HO.js +336 -0
- package/dist/chunk-UUKYR5HO.js.map +1 -0
- package/dist/chunk-UZTDXFFC.js +547 -0
- package/dist/chunk-UZTDXFFC.js.map +1 -0
- package/dist/chunk-V6AD4Y74.js +550 -0
- package/dist/chunk-V6AD4Y74.js.map +1 -0
- package/dist/chunk-VBBZA6PA.mjs +148 -0
- package/dist/chunk-VBBZA6PA.mjs.map +1 -0
- package/dist/chunk-VM4RFF4O.js +339 -0
- package/dist/chunk-VM4RFF4O.js.map +1 -0
- package/dist/chunk-W4AIKOBG.mjs +330 -0
- package/dist/chunk-W4AIKOBG.mjs.map +1 -0
- package/dist/chunk-WCLQYWET.mjs +328 -0
- package/dist/chunk-WCLQYWET.mjs.map +1 -0
- package/dist/chunk-WRN4ZVJQ.js +334 -0
- package/dist/chunk-WRN4ZVJQ.js.map +1 -0
- package/dist/chunk-X2H2PYE4.js +328 -0
- package/dist/chunk-X2H2PYE4.js.map +1 -0
- package/dist/chunk-X4YZRAFM.mjs +563 -0
- package/dist/chunk-X4YZRAFM.mjs.map +1 -0
- package/dist/chunk-X6M4LKQR.mjs +550 -0
- package/dist/chunk-X6M4LKQR.mjs.map +1 -0
- package/dist/chunk-X6WMGSPO.js +150 -0
- package/dist/chunk-X6WMGSPO.js.map +1 -0
- package/dist/chunk-XAI6JXXC.mjs +339 -0
- package/dist/chunk-XAI6JXXC.mjs.map +1 -0
- package/dist/chunk-XSABKCJD.js +546 -0
- package/dist/chunk-XSABKCJD.js.map +1 -0
- package/dist/chunk-XW3UEXLV.mjs +336 -0
- package/dist/chunk-XW3UEXLV.mjs.map +1 -0
- package/dist/chunk-YQYBLTSZ.js +330 -0
- package/dist/chunk-YQYBLTSZ.js.map +1 -0
- package/dist/chunk-YSRKB2RQ.js +334 -0
- package/dist/chunk-YSRKB2RQ.js.map +1 -0
- package/dist/chunk-YT4J7LJM.mjs +549 -0
- package/dist/chunk-YT4J7LJM.mjs.map +1 -0
- package/dist/chunk-YXXWVL32.mjs +330 -0
- package/dist/chunk-YXXWVL32.mjs.map +1 -0
- package/dist/chunk-Z4JSVZR3.js +324 -0
- package/dist/chunk-Z4JSVZR3.js.map +1 -0
- package/dist/{core-DiFYc0bC.d.mts → core--qu3pWkq.d.ts} +1 -1
- package/dist/core-BPUiAJHn.d.ts +49 -0
- package/dist/core-Bi3rTHpi.d.ts +49 -0
- package/dist/core-Bjw_HRhA.d.mts +49 -0
- package/dist/core-Brb7fvGi.d.ts +49 -0
- package/dist/core-C7FYVQ3G.d.ts +49 -0
- package/dist/core-C8nKzrYj.d.ts +49 -0
- package/dist/core-CTa38Qb8.d.mts +49 -0
- package/dist/core-C_vzHvIM.d.mts +49 -0
- package/dist/core-CjJyvCUL.d.mts +49 -0
- package/dist/core-CxB9E1Mb.d.mts +49 -0
- package/dist/core-D5cwjnXb.d.ts +49 -0
- package/dist/core-D9ivz8Je.d.mts +49 -0
- package/dist/{core-KvmgTDU0.d.ts → core-DEjpz7U-.d.ts} +1 -1
- package/dist/core-DFoppC8I.d.mts +49 -0
- package/dist/core-DU0-ELVr.d.ts +49 -0
- package/dist/core-Dk6Y21IK.d.mts +49 -0
- package/dist/core-ppueS5ax.d.mts +49 -0
- package/dist/core-scwP4qK3.d.ts +49 -0
- package/dist/core-vtBLhyjz.d.mts +49 -0
- package/dist/helper.d.mts +1 -1
- package/dist/helper.d.ts +1 -1
- package/dist/helper.js +4 -3
- package/dist/helper.js.map +1 -0
- package/dist/helper.mjs +3 -2
- package/dist/helper.mjs.map +1 -0
- package/dist/http/elysia/index.d.mts +3 -3
- package/dist/http/elysia/index.d.ts +3 -3
- package/dist/http/elysia/index.js +41 -40
- package/dist/http/elysia/index.js.map +1 -0
- package/dist/http/elysia/index.mjs +4 -3
- package/dist/http/elysia/index.mjs.map +1 -0
- package/dist/http/express/index.d.mts +3 -3
- package/dist/http/express/index.d.ts +3 -3
- package/dist/http/express/index.js +38 -37
- package/dist/http/express/index.js.map +1 -0
- package/dist/http/express/index.mjs +3 -2
- package/dist/http/express/index.mjs.map +1 -0
- package/dist/http/fastify/index.d.mts +3 -3
- package/dist/http/fastify/index.d.ts +3 -3
- package/dist/http/fastify/index.js +39 -38
- package/dist/http/fastify/index.js.map +1 -0
- package/dist/http/fastify/index.mjs +4 -3
- package/dist/http/fastify/index.mjs.map +1 -0
- package/dist/http/h3/index.d.mts +3 -3
- package/dist/http/h3/index.d.ts +3 -3
- package/dist/http/h3/index.js +39 -38
- package/dist/http/h3/index.js.map +1 -0
- package/dist/http/h3/index.mjs +3 -2
- package/dist/http/h3/index.mjs.map +1 -0
- package/dist/http/hono/index.d.mts +3 -3
- package/dist/http/hono/index.d.ts +3 -3
- package/dist/http/hono/index.js +35 -34
- package/dist/http/hono/index.js.map +1 -0
- package/dist/http/hono/index.mjs +3 -2
- package/dist/http/hono/index.mjs.map +1 -0
- package/dist/http/hyper-express/index.d.mts +3 -3
- package/dist/http/hyper-express/index.d.ts +3 -3
- package/dist/http/hyper-express/index.js +36 -35
- package/dist/http/hyper-express/index.js.map +1 -0
- package/dist/http/hyper-express/index.mjs +3 -2
- package/dist/http/hyper-express/index.mjs.map +1 -0
- package/dist/http/koa/index.d.mts +3 -3
- package/dist/http/koa/index.d.ts +3 -3
- package/dist/http/koa/index.js +38 -37
- package/dist/http/koa/index.js.map +1 -0
- package/dist/http/koa/index.mjs +3 -2
- package/dist/http/koa/index.mjs.map +1 -0
- package/dist/index.d.mts +8 -9
- package/dist/index.d.ts +8 -9
- package/dist/index.js +41 -40
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +13 -12
- package/dist/index.mjs.map +1 -0
- package/dist/meta-vC_LItVL.d.mts +90 -0
- package/dist/meta-vC_LItVL.d.ts +90 -0
- package/dist/rpc/bullmq/index.d.mts +3 -3
- package/dist/rpc/bullmq/index.d.ts +3 -3
- package/dist/rpc/bullmq/index.js +12 -11
- package/dist/rpc/bullmq/index.js.map +1 -0
- package/dist/rpc/bullmq/index.mjs +3 -2
- package/dist/rpc/bullmq/index.mjs.map +1 -0
- package/dist/rpc/electron/index.d.mts +3 -3
- package/dist/rpc/electron/index.d.ts +3 -3
- package/dist/rpc/electron/index.js +9 -8
- package/dist/rpc/electron/index.js.map +1 -0
- package/dist/rpc/electron/index.mjs +3 -2
- package/dist/rpc/electron/index.mjs.map +1 -0
- package/dist/rpc/kafka/index.d.mts +3 -3
- package/dist/rpc/kafka/index.d.ts +3 -3
- package/dist/rpc/kafka/index.js +11 -10
- package/dist/rpc/kafka/index.js.map +1 -0
- package/dist/rpc/kafka/index.mjs +3 -2
- package/dist/rpc/kafka/index.mjs.map +1 -0
- package/dist/rpc/nats/index.d.mts +3 -3
- package/dist/rpc/nats/index.d.ts +3 -3
- package/dist/rpc/nats/index.js +12 -11
- package/dist/rpc/nats/index.js.map +1 -0
- package/dist/rpc/nats/index.mjs +3 -2
- package/dist/rpc/nats/index.mjs.map +1 -0
- package/dist/rpc/rabbitmq/index.d.mts +3 -3
- package/dist/rpc/rabbitmq/index.d.ts +3 -3
- package/dist/rpc/rabbitmq/index.js +13 -12
- package/dist/rpc/rabbitmq/index.js.map +1 -0
- package/dist/rpc/rabbitmq/index.mjs +3 -2
- package/dist/rpc/rabbitmq/index.mjs.map +1 -0
- package/dist/rpc/redis/index.d.mts +3 -3
- package/dist/rpc/redis/index.d.ts +3 -3
- package/dist/rpc/redis/index.js +11 -10
- package/dist/rpc/redis/index.js.map +1 -0
- package/dist/rpc/redis/index.mjs +3 -2
- package/dist/rpc/redis/index.mjs.map +1 -0
- package/dist/rpc/web-ext/index.d.mts +2 -0
- package/dist/rpc/web-ext/index.d.ts +2 -0
- package/dist/rpc/web-ext/index.js +1 -0
- package/dist/rpc/web-ext/index.js.map +1 -0
- package/dist/rpc/web-ext/index.mjs +1 -0
- package/dist/rpc/web-ext/index.mjs.map +1 -0
- package/dist/rpc/ws/index.d.mts +3 -3
- package/dist/rpc/ws/index.d.ts +3 -3
- package/dist/rpc/ws/index.js +8 -7
- package/dist/rpc/ws/index.js.map +1 -0
- package/dist/rpc/ws/index.mjs +3 -2
- package/dist/rpc/ws/index.mjs.map +1 -0
- package/dist/test.d.mts +3 -3
- package/dist/test.d.ts +3 -3
- package/dist/test.js +7 -6
- package/dist/test.js.map +1 -0
- package/dist/test.mjs +3 -2
- package/dist/test.mjs.map +1 -0
- package/dist/{types-8r301ZfZ.d.mts → types--FU0xyv7.d.mts} +1 -1
- package/dist/types-7nUdSf8z.d.mts +19 -0
- package/dist/{types-CVSbC6nz.d.mts → types-BE2z6gOo.d.ts} +1 -1
- package/dist/types-BJiHDyTL.d.mts +19 -0
- package/dist/types-BRCJyQsh.d.mts +90 -0
- package/dist/types-BRCJyQsh.d.ts +90 -0
- package/dist/types-BV7YmpJE.d.ts +14 -0
- package/dist/{types-Bz3JN2S1.d.ts → types-BVswigDc.d.ts} +1 -1
- package/dist/types-B_RVNTOF.d.mts +91 -0
- package/dist/types-B_RVNTOF.d.ts +91 -0
- package/dist/types-BtM-DxqM.d.mts +48 -0
- package/dist/types-C-nIlDCV.d.mts +48 -0
- package/dist/types-C-wRAcbr.d.ts +48 -0
- package/dist/types-C2KvkrD6.d.mts +48 -0
- package/dist/{meta-DlHaMicF.d.ts → types-C6hpZpnS.d.mts} +43 -43
- package/dist/{meta-DlHaMicF.d.mts → types-C6hpZpnS.d.ts} +43 -43
- package/dist/types-CFX2Ln0s.d.mts +48 -0
- package/dist/types-CR_EmIw8.d.mts +48 -0
- package/dist/types-CbRiXnzh.d.ts +19 -0
- package/dist/types-Ci9JeYtv.d.ts +48 -0
- package/dist/types-CiL0rHL3.d.ts +19 -0
- package/dist/types-CuBnfbgb.d.mts +14 -0
- package/dist/types-CvPG7k2Z.d.mts +14 -0
- package/dist/types-D9vxgkS4.d.mts +48 -0
- package/dist/types-DHYok84r.d.mts +14 -0
- package/dist/types-DI40e_s_.d.mts +19 -0
- package/dist/{types-DJuqpiI8.d.ts → types-DTOe0r2g.d.ts} +1 -1
- package/dist/types-DWVRUI6s.d.mts +91 -0
- package/dist/types-DWVRUI6s.d.ts +91 -0
- package/dist/types-DX98FM-A.d.ts +19 -0
- package/dist/types-DdJI1b5J.d.mts +19 -0
- package/dist/types-DfNl_AGj.d.ts +48 -0
- package/dist/types-DfNtpP-N.d.mts +111 -0
- package/dist/types-DfNtpP-N.d.ts +111 -0
- package/dist/types-DfVkUOZW.d.ts +48 -0
- package/dist/types-DfsKsjLM.d.mts +111 -0
- package/dist/types-DfsKsjLM.d.ts +111 -0
- package/dist/types-Didk5ZxZ.d.ts +48 -0
- package/dist/types-DsvVhEYR.d.ts +48 -0
- package/dist/types-Dt4WHNIG.d.mts +48 -0
- package/dist/types-DtG1fW8q.d.mts +48 -0
- package/dist/types-DwkH_ckj.d.mts +107 -0
- package/dist/types-DwkH_ckj.d.ts +107 -0
- package/dist/types-GLyEDoZh.d.ts +48 -0
- package/dist/types-HFldWW-W.d.mts +48 -0
- package/dist/types-LfX4z-X2.d.mts +48 -0
- package/dist/types-Ru_9udNp.d.ts +48 -0
- package/dist/types-gz344phy.d.mts +14 -0
- package/dist/types-hTbg1FQR.d.ts +19 -0
- package/dist/types-laEKHNwU.d.ts +14 -0
- package/dist/types-mcWWx2nR.d.mts +108 -0
- package/dist/types-mcWWx2nR.d.ts +108 -0
- package/dist/types-nA5JQl76.d.ts +14 -0
- package/dist/types-ojuQvq5-.d.ts +19 -0
- package/dist/types-pCI7fyyv.d.mts +108 -0
- package/dist/types-pCI7fyyv.d.ts +108 -0
- package/dist/types-vyUwFCHY.d.mts +19 -0
- package/dist/types-xovMFthM.d.ts +14 -0
- package/package.json +7 -2
- package/register/index.mjs +2 -2
- package/register/loader.mjs +33 -27
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/helper.ts","../src/context.ts","../src/pipe.ts","../src/exception/base.ts","../src/exception/undefine.ts","../src/exception/validate.ts","../src/exception/forbidden.ts","../src/exception/bad-request.ts","../src/exception/not-found.ts","../src/exception/conflict.ts","../src/exception/bad-gateway.ts","../src/exception/invalid-input.ts","../src/exception/media-type.ts","../src/exception/payload-large.ts","../src/exception/timeout.ts","../src/exception/unauthorized.ts","../src/exception/unavailable-service.ts","../src/exception/framework.ts","../src/exception/timer.ts","../src/exception/worker.ts","../src/filter.ts","../src/http/helper.ts","../src/decorators/helper.ts"],"sourcesContent":["// help you build custom framework or decorator\r\n\r\nimport pc from 'picocolors'\r\nimport { log } from './utils'\r\nimport { Context } from './context'\r\nimport { HMR } from './hmr'\r\nimport { ControllerMeta, Meta } from './meta'\r\nimport { IS_PURE, IS_STRICT } from './common'\r\n\r\nexport * from './hmr'\r\nexport * from './http/helper'\r\nexport * from './decorators/helper'\r\n\r\nexport function createControllerMetaMap(meta: Meta[], filter: (meta: Meta) => boolean | void) {\r\n const metaMap = new Map<string, Record<string, ControllerMeta>>()\r\n\r\n function handleMeta() {\r\n metaMap.clear()\r\n for (const item of meta) {\r\n const { tag, func } = item.data\r\n if (!filter(item))\r\n continue\r\n\r\n if (metaMap.has(tag))\r\n metaMap.get(tag)![func] = item as ControllerMeta\r\n\r\n else\r\n metaMap.set(tag, { [func]: item as ControllerMeta })\r\n }\r\n }\r\n\r\n handleMeta()\r\n HMR(handleMeta)\r\n\r\n return metaMap\r\n}\r\n\r\n// detect whether addon/filter/pipe/guard/intercept is injected\r\nexport function detectAopDep(meta: Meta[], { guards, addons }: {\r\n guards?: string[]\r\n addons?: string[]\r\n\r\n} = {}, controller = 'http') {\r\n if (IS_PURE)\r\n return\r\n\r\n const addonSet = new Set<string>()\r\n const guardSet = new Set<string>()\r\n const pipeSet = new Set<string>()\r\n const filterSet = new Set<string>()\r\n const warningSet = new Set<string>()\r\n function handleMeta() {\r\n addonSet.clear()\r\n guardSet.clear()\r\n pipeSet.clear()\r\n filterSet.clear()\r\n warningSet.clear()\r\n\r\n addons?.forEach((item) => {\r\n addonSet.add(item)\r\n })\r\n guards?.forEach((item) => {\r\n guardSet.add(item)\r\n });\r\n\r\n (meta as ControllerMeta[]).forEach(({ data }) => {\r\n if (!data.controller)\r\n return\r\n\r\n if (typeof data.tag !== 'string')\r\n warningSet.add(`Tag of controller \"${data.name}\" should be a string`)\r\n\r\n // @todo func of meta on controller should be string\r\n\r\n if (data.controller !== controller) {\r\n if (data[controller])\r\n warningSet.add(`Should use ${controller} controller to decorate class \"${data.name}\"`)\r\n\r\n return\r\n }\r\n if (data.filter)\r\n filterSet.add(data.filter)\r\n\r\n data.guards.forEach(i => guardSet.add(i))\r\n data.addons.forEach(i => addonSet.add(i))\r\n data.params.forEach((i) => {\r\n if (i.pipe)\r\n pipeSet.add(i.pipe)\r\n })\r\n })\r\n const missAddons = [...addonSet].filter(i => !Context.addonRecord[i])\r\n const missGuards = [...guardSet].filter(i => !Context.guardRecord[i])\r\n const missPipes = [...pipeSet].filter(i => !Context.pipeRecord[i])\r\n const missFilters = [...filterSet].filter(i => !Context.filterRecord[i])\r\n\r\n function exit() {\r\n if (IS_STRICT) {\r\n log('Does not meet strict mode requirements', 'error')\r\n process.exit(1)\r\n }\r\n }\r\n\r\n if (missAddons.length) {\r\n log(`${pc.white(`Addon [${missAddons.join(',')}]`)} doesn't exist`, 'warn')\r\n exit()\r\n }\r\n if (missGuards.length) {\r\n log(`${pc.magenta(`Guard [${missGuards.join(',')}]`)} doesn't exist`, 'warn')\r\n exit()\r\n }\r\n if (missPipes.length) {\r\n log(`${pc.blue(`Pipe [${missPipes.join(',')}]`)} doesn't exist`, 'warn')\r\n exit()\r\n }\r\n if (missFilters.length) {\r\n log(`${pc.red(`Filter [${missFilters.join(',')}]`)} doesn't exist`, 'warn')\r\n exit()\r\n }\r\n\r\n warningSet.forEach(warn => log(warn, 'warn'))\r\n if (warningSet.size)\r\n exit()\r\n }\r\n\r\n handleMeta()\r\n HMR(handleMeta)\r\n return {\r\n addonSet,\r\n guardSet,\r\n pipeSet,\r\n filterSet,\r\n }\r\n}\r\n\r\nexport function joinUrl(base: string, ...paths: string[]) {\r\n const joinedPath = [base, ...paths].filter(p => p).map(path => path.replace(/(^\\/)/g, '')).join('/')\r\n return `/${joinedPath}`\r\n}\r\n","import Debug from 'debug'\r\nimport pc from 'picocolors'\r\nimport { defaultPipe } from './pipe'\r\nimport { defaultFilter } from './filter'\r\nimport type { BaseCtx, DefaultOptions } from './types'\r\nimport { IS_DEV } from './common'\r\nimport { type Exception, FrameworkException } from './exception'\r\nimport { resolveDep } from './helper'\r\nimport { ControllerMeta } from './meta'\r\nimport { log } from './utils'\r\n\r\nconst debug = Debug('phecda-server(Context)')\r\n\r\nexport interface AOP {\r\n guards: GuardType[]\r\n pipe: PipeType[]\r\n filter: FilterType\r\n}\r\n\r\nexport interface PipeArg { arg: any; pipe?: string; key: string; type: string; index: number; reflect: any; define: Record<string, any> }\r\nexport type GuardType<Ctx extends BaseCtx = any> = (ctx: Ctx, next: () => Promise<any>) => any\r\nexport type PipeType<Ctx extends BaseCtx = any> = (arg: PipeArg, ctx: Ctx) => Promise<any>\r\nexport type FilterType<Ctx extends BaseCtx = any, E extends Exception = any> = (err: E | Error, ctx?: Ctx) => Error | any\r\n\r\nexport class Context<Ctx extends BaseCtx> {\r\n method: string\r\n params: string[]\r\n\r\n static filterRecord: Record<PropertyKey, FilterType> = {\r\n default: defaultFilter,\r\n }\r\n\r\n static pipeRecord: Record<PropertyKey, PipeType> = {\r\n default: defaultPipe,\r\n }\r\n\r\n static guardRecord: Record<PropertyKey, {\r\n value: GuardType\r\n priority: number\r\n }> = {}\r\n\r\n static addonRecord: Record<PropertyKey, {\r\n value: (router: any, framework: string) => any\r\n priority: number\r\n\r\n }> = {}\r\n\r\n ctx: Ctx\r\n\r\n protected canGetCtx = true\r\n\r\n constructor(public data: Ctx) {\r\n if (IS_DEV)\r\n // @ts-expect-error work for debug\r\n data._context = this\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const that = this\r\n\r\n this.ctx = new Proxy(data, {\r\n get(target, p) {\r\n if (IS_DEV && !that.canGetCtx)// only detect in dev\r\n throw new FrameworkException('ctx must be obtained within the same request cycle in controller')\r\n\r\n if (!(p in target))\r\n log(`attribute \"${p as string}\" does not exist on ctx, which might be due to a missing AOP role (such as a guard).`, 'warn', data.tag)\r\n\r\n return target[p as any]\r\n },\r\n set(target: any, p, newValue) {\r\n target[p] = newValue\r\n return true\r\n },\r\n })\r\n }\r\n\r\n static getAop(meta: ControllerMeta, opts: DefaultOptions) {\r\n const { globalGuards = [], globalFilter = 'default', globalPipe = 'default' } = opts\r\n const {\r\n data: {\r\n guards, filter,\r\n params, tag, func,\r\n },\r\n } = meta\r\n\r\n const resolved = {\r\n guards: [...globalGuards, ...guards],\r\n pipe: params.map(item => item.pipe || globalPipe),\r\n filter: filter || globalFilter,\r\n\r\n }\r\n\r\n if (process.env.DEBUG) {\r\n const { guards, pipe, filter } = resolved\r\n debug(`func \"${tag}-${func}\" aop: \\n${pc.magenta(`Guard ${guards.join('->')}[${guards.filter(g => g in this.guardRecord).join('->')}]`)}\\n${pc.blue(`Pipe ${pipe.join('-')}[${pipe.map(p => p in this.pipeRecord ? p : 'default').join('-')}]`)}\\n${pc.red(`Filter ${filter}[${filter || 'default'}]`)}`)\r\n }\r\n return {\r\n guards: this.getGuards(resolved.guards),\r\n pipe: this.getPipe(resolved.pipe),\r\n filter: this.getFilter(resolved.filter),\r\n }\r\n }\r\n\r\n public async run<ResponseData = any, ReturnErr = any>({\r\n guards, filter, pipe,\r\n }: {\r\n guards: GuardType[]\r\n filter: FilterType\r\n pipe: PipeType[]\r\n }, successCb: (data: any) => ResponseData, failCb: (err: any) => ReturnErr) {\r\n const { meta, moduleMap } = this.data\r\n const {\r\n paramsType,\r\n data: {\r\n ctxs,\r\n tag,\r\n params,\r\n func,\r\n },\r\n } = meta\r\n\r\n try {\r\n // let current = 0\r\n let res: any\r\n const nextHandler = (index: number) => {\r\n return async () => {\r\n if (index === guards.length) {\r\n const instance = moduleMap.get(tag)!\r\n if (ctxs) {\r\n ctxs.forEach(ctx => instance[ctx] = this.ctx,\r\n )\r\n }\r\n const args = await Promise.all(\r\n params.map((item, i) =>\r\n pipe[i]({ arg: resolveDep(this.data[item.type], item.key), reflect: paramsType[item.index], ...item }, this.ctx),\r\n ),\r\n )\r\n\r\n if (IS_DEV) {\r\n Promise.resolve().then(() => {\r\n this.canGetCtx = false\r\n })\r\n }\r\n res = await instance[func](...args)\r\n this.canGetCtx = true\r\n }\r\n else {\r\n let nextPromise: Promise<any> | undefined\r\n async function next() {\r\n return nextPromise = nextHandler(index + 1)().then((ret) => {\r\n if (ret !== undefined) {\r\n debug(`The ${index + 1}th guard on \"${tag}-${func}\" rewrite the response value.`)\r\n res = ret\r\n }\r\n\r\n return res\r\n })\r\n }\r\n\r\n const ret = await guards[index](this.ctx, next)\r\n\r\n if (ret !== undefined) {\r\n res = ret\r\n }\r\n else {\r\n if (!nextPromise)\r\n await next()\r\n\r\n else\r\n await nextPromise\r\n }\r\n }\r\n }\r\n }\r\n await nextHandler(0)()\r\n\r\n return successCb(res)\r\n }\r\n catch (e) {\r\n const err = await filter(e, this.ctx)\r\n return failCb(err)\r\n }\r\n }\r\n\r\n static getPipe(pipe: string[]) {\r\n return pipe.map((pipe) => {\r\n return Context.pipeRecord[pipe] || Context.pipeRecord.default\r\n })\r\n }\r\n\r\n static getFilter(filter = 'default') {\r\n return Context.filterRecord[filter] || Context.filterRecord.default\r\n }\r\n\r\n static getGuards(guards: string[]) {\r\n const ret: { value: GuardType; priority: number }[] = []\r\n for (const guard of new Set(guards)) {\r\n if (guard in Context.guardRecord)\r\n ret.push(Context.guardRecord[guard])\r\n }\r\n\r\n return ret.sort((a, b) => b.priority - a.priority).map(item => item.value)\r\n }\r\n\r\n static applyAddons(addons: string[], router: any, framework: string) {\r\n const ret: {\r\n value: (router: any, framework: string) => any\r\n priority: number\r\n }[] = []\r\n for (const a of new Set(addons)) {\r\n if (a in Context.addonRecord)\r\n ret.push(Context.addonRecord[a])\r\n }\r\n\r\n ret.sort((a, b) => b.priority - a.priority).forEach(item => item.value(router, framework))\r\n\r\n // await Context.addonRecord[a](router, framework)\r\n }\r\n}\r\n\r\nexport function addPipe<C extends BaseCtx>(key: PropertyKey, pipe: PipeType<C>) {\r\n if (Context.pipeRecord[key] && Context.pipeRecord[key] !== pipe)\r\n debug(`overwrite Pipe \"${String(key)}\"`, 'warn')\r\n Context.pipeRecord[key] = pipe\r\n}\r\n\r\nexport function addFilter<C extends BaseCtx>(key: PropertyKey, filter: FilterType<C>) {\r\n if (Context.filterRecord[key] && Context.filterRecord[key] !== filter)\r\n debug(`overwrite Filter \"${String(key)}\"`, 'warn')\r\n Context.filterRecord[key] = filter\r\n}\r\n\r\nexport function addGuard<C extends BaseCtx>(key: PropertyKey, guard: GuardType<C>, priority = 0) {\r\n if (Context.guardRecord[key] && Context.guardRecord[key].value !== guard)\r\n debug(`overwrite Guard \"${String(key)}\"`, 'warn')\r\n\r\n Context.guardRecord[key] = {\r\n value: guard,\r\n priority,\r\n }\r\n}\r\nexport function addAddon(key: PropertyKey, addon: (router: any, framework: string) => void, priority = 0) {\r\n if (Context.addonRecord[key] && Context.addonRecord[key].value !== addon)\r\n debug(`overwrite Addon \"${String(key)}\"`, 'warn')\r\n Context.addonRecord[key] = {\r\n value: addon,\r\n priority,\r\n }\r\n}\r\n","// import { isPhecda, } from 'phecda-core'\r\n// import { ValidateException } from './exception/validate'\r\n\r\nimport type { PipeType } from './context'\r\n\r\nexport const defaultPipe: PipeType = ({ arg }) => {\r\n // if (['query', 'params'].includes(type) && reflect !== String) {\r\n // if ([Object, Array].includes(reflect)) {\r\n // return JSON.parse(arg)\r\n // }\r\n // if ([Number, Boolean].includes(reflect)) {\r\n // return reflect(arg)\r\n // }\r\n // }\r\n return arg\r\n}\r\n","import { ERROR_SYMBOL } from '../common'\r\n\r\nexport class Exception extends Error {\r\n constructor(public message: string, public status = 0, public description = 'Exception') {\r\n super(message)\r\n }\r\n\r\n get data() {\r\n return { message: this.message, description: this.description, status: this.status, [ERROR_SYMBOL]: true }\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UndefinedException extends Exception {\r\n constructor(message: string) {\r\n super(message, 500, 'Undefined error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ValidateException extends Exception {\r\n constructor(message: string) {\r\n super(message, 400, 'Validate exception')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ForbiddenException extends Exception {\r\n constructor(message: string) {\r\n super(message, 403, 'Forbidden resource')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class BadRequestException extends Exception {\r\n constructor(message: string) {\r\n super(message, 400, 'Bad Request')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class NotFoundException extends Exception {\r\n constructor(message: string) {\r\n super(message, 404, 'Not Found')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ConflictException extends Exception {\r\n constructor(message: string) {\r\n super(message, 409, 'Conflict')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class BadGatewayException extends Exception {\r\n constructor(message: string) {\r\n super(message, 502, 'Bad Gatrway')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class InvalidInputException extends Exception {\r\n constructor(message: string) {\r\n super(message, 502, 'Invalid Input')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UnsupportedMediaTypeException extends Exception {\r\n constructor(message: string) {\r\n super(message, 415, 'Unsupported Media Type')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class PayloadLargeException extends Exception {\r\n constructor(message: string) {\r\n super(message, 413, 'Payload Too Large')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class TimeoutException extends Exception {\r\n constructor(message: string) {\r\n super(message, 408, 'Request Timeout',\r\n )\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UnauthorizedException extends Exception {\r\n constructor(message: string) {\r\n super(message, 401, 'Unauthorized')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ServiceUnavailableException extends Exception {\r\n constructor(message: string) {\r\n super(message, 503, 'Service Unavailable')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class FrameworkException extends Exception {\r\n constructor(message: string) {\r\n super(`[phecda-server] ${message}`, 500, 'Framework Error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\nexport class TimerException extends Exception {\r\n constructor(message: string) {\r\n super(message, 0, 'Timer Error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\nexport class WorkerException extends Exception {\r\n constructor(message: string) {\r\n super(message, 0, 'Worker Error')\r\n }\r\n}\r\n","import { LOG_LEVEL } from './common'\r\nimport { Exception, UndefinedException } from './exception'\r\nimport { log } from './utils'\r\nimport type { FilterType } from './context'\r\n\r\nexport const defaultFilter: FilterType = (e) => {\r\n if (!(e instanceof Exception)) {\r\n log(e.message, 'error')\r\n if (LOG_LEVEL <= 0)\r\n console.error(e.stack)\r\n\r\n e = new UndefinedException(e.message || e)\r\n }\r\n else {\r\n log(`[${e.constructor.name}] ${e.message}`, 'error')\r\n if (LOG_LEVEL <= 0)\r\n console.error(e.stack)\r\n }\r\n\r\n return e.data\r\n}\r\n","export function resolveDep(ret: any, key: string) {\r\n if (key)\r\n return ret?.[key]\r\n return ret\r\n}\r\n\r\n// export function argToReq(params: ControllerMetaData['params'], args: any[], headers: Record<string, any>) {\r\n// const req = {\r\n// body: {},\r\n// query: {},\r\n// params: {},\r\n// headers,\r\n// } as any\r\n\r\n// params.forEach((param) => {\r\n// if (param.key)\r\n// req[param.type][param.key] = args[param.index]\r\n\r\n// else\r\n// req[param.type] = args[param.index]\r\n// })\r\n\r\n// return req\r\n// }\r\n","export function shallowClone(obj: any) {\r\n return { ...obj }\r\n}\r\nexport function mergeObject(...args: any[]) {\r\n return Object.assign({}, ...args)\r\n}\r\n"],"mappings":"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","names":["pc","Debug","pc","defaultPipe","arg","Exception","Error","constructor","message","status","description","data","ERROR_SYMBOL","UndefinedException","Exception","constructor","message","ValidateException","Exception","constructor","message","ForbiddenException","Exception","constructor","message","BadRequestException","Exception","constructor","message","NotFoundException","Exception","constructor","message","ConflictException","Exception","constructor","message","BadGatewayException","Exception","constructor","message","InvalidInputException","Exception","constructor","message","UnsupportedMediaTypeException","Exception","constructor","message","PayloadLargeException","Exception","constructor","message","TimeoutException","Exception","constructor","message","UnauthorizedException","Exception","constructor","message","ServiceUnavailableException","Exception","constructor","message","FrameworkException","Exception","constructor","message","TimerException","Exception","constructor","message","WorkerException","Exception","constructor","message","defaultFilter","e","Exception","log","message","LOG_LEVEL","console","error","stack","UndefinedException","constructor","name","data","debug","Debug","Context","method","params","filterRecord","default","defaultFilter","pipeRecord","defaultPipe","guardRecord","addonRecord","ctx","canGetCtx","constructor","data","IS_DEV","_context","that","Proxy","get","target","p","FrameworkException","log","tag","set","newValue","getAop","meta","opts","globalGuards","globalFilter","globalPipe","guards","filter","func","resolved","pipe","map","item","process","env","DEBUG","pc","magenta","join","g","blue","red","getGuards","getPipe","getFilter","run","successCb","failCb","moduleMap","paramsType","ctxs","res","nextHandler","index","length","instance","forEach","args","Promise","all","i","arg","resolveDep","type","key","reflect","resolve","then","nextPromise","next","ret","undefined","e","err","guard","Set","push","sort","a","b","priority","value","applyAddons","addons","router","framework","addPipe","String","addFilter","addGuard","addAddon","addon","resolveDep","ret","key","shallowClone","obj","mergeObject","args","Object","assign","createControllerMetaMap","meta","filter","metaMap","Map","handleMeta","clear","item","tag","func","data","has","get","set","HMR","detectAopDep","guards","addons","controller","IS_PURE","addonSet","Set","guardSet","pipeSet","filterSet","warningSet","forEach","add","name","i","params","pipe","missAddons","Context","addonRecord","missGuards","guardRecord","missPipes","pipeRecord","missFilters","filterRecord","exit","IS_STRICT","log","process","length","pc","white","join","magenta","blue","red","warn","size","joinUrl","base","paths","joinedPath","p","map","path","replace"]}
|
|
@@ -0,0 +1,327 @@
|
|
|
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
|
+
var _chunkC2MTV2HSjs = require('./chunk-C2MTV2HS.js');
|
|
7
|
+
|
|
8
|
+
// src/meta.ts
|
|
9
|
+
var Meta = class {
|
|
10
|
+
static {
|
|
11
|
+
_chunkC2MTV2HSjs.__name.call(void 0, this, "Meta");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
constructor(data, paramsType) {
|
|
16
|
+
this.data = data;
|
|
17
|
+
this.paramsType = paramsType;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// src/core.ts
|
|
22
|
+
require('reflect-metadata');
|
|
23
|
+
var _events = require('events'); var _events2 = _interopRequireDefault(_events);
|
|
24
|
+
var _phecdacore = require('phecda-core');
|
|
25
|
+
var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
|
|
26
|
+
var debug = _debug2.default.call(void 0, "phecda-server(Factory)");
|
|
27
|
+
var emitter = new (0, _events2.default)();
|
|
28
|
+
function defaultServerInject() {
|
|
29
|
+
if (!_phecdacore.getInject.call(void 0, "watcher")) {
|
|
30
|
+
_phecdacore.setInject.call(void 0, "watcher", ({ eventName, instance, property, options }) => {
|
|
31
|
+
const fn = typeof instance[property] === "function" ? instance[property].bind(instance) : (v) => instance[property] = v;
|
|
32
|
+
if (_optionalChain([options, 'optionalAccess', _ => _.once])) emitter.once(eventName, fn);
|
|
33
|
+
else emitter.on(eventName, fn);
|
|
34
|
+
return () => {
|
|
35
|
+
emitter.off(eventName, fn);
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
_chunkC2MTV2HSjs.__name.call(void 0, defaultServerInject, "defaultServerInject");
|
|
41
|
+
var phecdaNamespace = /* @__PURE__ */ new Map();
|
|
42
|
+
var ServerPhecda = (_class = class {
|
|
43
|
+
static {
|
|
44
|
+
_chunkC2MTV2HSjs.__name.call(void 0, this, "ServerPhecda");
|
|
45
|
+
}
|
|
46
|
+
__init() {this.moduleMap = /* @__PURE__ */ new Map()}
|
|
47
|
+
__init2() {this.meta = []}
|
|
48
|
+
__init3() {this.modelMap = /* @__PURE__ */ new WeakMap()}
|
|
49
|
+
__init4() {this.modelSet = /* @__PURE__ */ new WeakSet()}
|
|
50
|
+
__init5() {this.dependenceGraph = /* @__PURE__ */ new Map()}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
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);
|
|
55
|
+
defaultServerInject();
|
|
56
|
+
const { namespace = "default", parseModule = /* @__PURE__ */ _chunkC2MTV2HSjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunkC2MTV2HSjs.__name.call(void 0, (meta) => meta, "parseMeta"), generators = [] } = options;
|
|
57
|
+
phecdaNamespace.set(namespace, this);
|
|
58
|
+
this.parseMeta = parseMeta;
|
|
59
|
+
this.parseModule = parseModule;
|
|
60
|
+
this.generators = generators;
|
|
61
|
+
}
|
|
62
|
+
async start(models) {
|
|
63
|
+
for (const model of models) await this.buildDepModule(model);
|
|
64
|
+
this.hmr();
|
|
65
|
+
this.generateCode().then(() => {
|
|
66
|
+
if (_chunkC2MTV2HSjs.IS_ONLY_GENERATE) process.exit(4);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
__init6() {this.generateCode = /* @__PURE__ */ _chunkC2MTV2HSjs.__name.call(void 0, async () => {
|
|
70
|
+
return Promise.all(this.generators.map((generator) => {
|
|
71
|
+
debug(`generate "${generator.name}" code to ${generator.path}`);
|
|
72
|
+
return generator.output(this.meta);
|
|
73
|
+
}));
|
|
74
|
+
}, "generateCode")}
|
|
75
|
+
hmr() {
|
|
76
|
+
_chunkC2MTV2HSjs.HMR.call(void 0, async (oldModels, newModels) => {
|
|
77
|
+
debug("reload models ");
|
|
78
|
+
await this.replace(oldModels, newModels);
|
|
79
|
+
this.generateCode();
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
// async add(Model: Construct) {
|
|
83
|
+
// const tag = getTag(Model)
|
|
84
|
+
// const oldInstance = await this.del(tag)
|
|
85
|
+
// const { module: newModule } = await this.buildDepModule(Model)
|
|
86
|
+
// if (oldInstance && this.dependenceGraph.has(tag)) {
|
|
87
|
+
// debug(`replace module "${String(tag)}"`);
|
|
88
|
+
// [...this.dependenceGraph.get(tag)!].forEach((tag) => {
|
|
89
|
+
// const module = this.moduleMap.get(tag)
|
|
90
|
+
// for (const key in module) {
|
|
91
|
+
// if (module[key] === oldInstance)
|
|
92
|
+
// module[key] = newModule
|
|
93
|
+
// }
|
|
94
|
+
// })
|
|
95
|
+
// }
|
|
96
|
+
// }
|
|
97
|
+
// async del(modelOrTag: Construct | PropertyKey) {
|
|
98
|
+
// const tag = typeof modelOrTag === 'function' ? getTag(modelOrTag) : modelOrTag
|
|
99
|
+
// if (!this.moduleMap.has(tag))
|
|
100
|
+
// return
|
|
101
|
+
// const module = this.moduleMap.get(tag)
|
|
102
|
+
// debug(`unmount module "${String(tag)}"`)
|
|
103
|
+
// await invokeUnmount(module)
|
|
104
|
+
// debug(`del module "${String(tag)}"`)
|
|
105
|
+
// this.moduleMap.delete(tag)
|
|
106
|
+
// this.modelMap.delete(module)
|
|
107
|
+
// for (let i = this.meta.length - 1; i >= 0; i--) {
|
|
108
|
+
// if (this.meta[i].data.tag === tag)
|
|
109
|
+
// this.meta.splice(i, 1)
|
|
110
|
+
// }
|
|
111
|
+
// return module
|
|
112
|
+
// }
|
|
113
|
+
async destroy() {
|
|
114
|
+
debug("destroy all");
|
|
115
|
+
this.replace(Object.values(this.modelMap), []);
|
|
116
|
+
}
|
|
117
|
+
createProxyModule(tag) {
|
|
118
|
+
const that = this;
|
|
119
|
+
return new Proxy({}, {
|
|
120
|
+
get(_target, prop) {
|
|
121
|
+
const module = that.moduleMap.get(tag);
|
|
122
|
+
return Reflect.get(module, prop, module);
|
|
123
|
+
},
|
|
124
|
+
set(_target, prop, newValue) {
|
|
125
|
+
const module = that.moduleMap.get(tag);
|
|
126
|
+
return Reflect.set(module, prop, newValue, module);
|
|
127
|
+
},
|
|
128
|
+
has(_target, prop) {
|
|
129
|
+
return Reflect.has(that.moduleMap.get(tag), prop);
|
|
130
|
+
},
|
|
131
|
+
ownKeys() {
|
|
132
|
+
return Reflect.ownKeys(that.moduleMap.get(tag));
|
|
133
|
+
},
|
|
134
|
+
getPrototypeOf() {
|
|
135
|
+
return Reflect.getPrototypeOf(that.moduleMap.get(tag));
|
|
136
|
+
},
|
|
137
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
138
|
+
return Reflect.getOwnPropertyDescriptor(that.moduleMap.get(tag), prop);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
async buildDepModule(Model) {
|
|
143
|
+
const paramtypes = getParamTypes(Model);
|
|
144
|
+
let module;
|
|
145
|
+
const tag = _phecdacore.getTag.call(void 0, Model);
|
|
146
|
+
if (this.moduleMap.has(tag)) {
|
|
147
|
+
module = this.moduleMap.get(tag);
|
|
148
|
+
if (!module) {
|
|
149
|
+
_chunkC2MTV2HSjs.log.call(void 0, `Exist Circular-Dependency or Multiple modules with the same tag [${String(tag)}]`, "warn");
|
|
150
|
+
return {
|
|
151
|
+
module: this.createProxyModule(tag),
|
|
152
|
+
tag
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (this.modelMap.get(module) !== Model && !this.modelSet.has(Model)) {
|
|
156
|
+
this.modelSet.add(Model);
|
|
157
|
+
if (module instanceof Model) _chunkC2MTV2HSjs.log.call(void 0, `Module taged ${String(tag)} has been overridden`);
|
|
158
|
+
else _chunkC2MTV2HSjs.log.call(void 0, `Synonym module: Module taged "${String(tag)}" has been loaded before, so phecda-server won't load Module "${Model.name}"`, "warn");
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
module,
|
|
162
|
+
tag
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
this.moduleMap.set(tag, void 0);
|
|
166
|
+
debug(`instantiate module "${String(tag)}"`);
|
|
167
|
+
if (paramtypes) {
|
|
168
|
+
const paramtypesInstances = [];
|
|
169
|
+
for (const i in paramtypes) {
|
|
170
|
+
const { module: sub, tag: subTag } = await this.buildDepModule(paramtypes[i]);
|
|
171
|
+
paramtypesInstances[i] = sub;
|
|
172
|
+
if (!this.dependenceGraph.has(subTag)) this.dependenceGraph.set(subTag, /* @__PURE__ */ new Set());
|
|
173
|
+
this.dependenceGraph.get(subTag).add(tag);
|
|
174
|
+
}
|
|
175
|
+
module = this.parseModule(new Model(...paramtypesInstances));
|
|
176
|
+
} else {
|
|
177
|
+
module = this.parseModule(new Model());
|
|
178
|
+
}
|
|
179
|
+
this.meta.push(...getMetaFromInstance(module, tag, Model.name).map(this.parseMeta).filter((item) => !!item));
|
|
180
|
+
debug(`init module "${String(tag)}"`);
|
|
181
|
+
if (!_chunkC2MTV2HSjs.IS_ONLY_GENERATE) await _phecdacore.invokeInit.call(void 0, module);
|
|
182
|
+
debug(`add module "${String(tag)}"`);
|
|
183
|
+
this.moduleMap.set(tag, module);
|
|
184
|
+
this.modelMap.set(module, Model);
|
|
185
|
+
return {
|
|
186
|
+
module,
|
|
187
|
+
tag
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
async replace(oldModels, newModels) {
|
|
191
|
+
console.log("replace", oldModels, newModels);
|
|
192
|
+
const oldModules = (await Promise.all(oldModels.map(async (model) => {
|
|
193
|
+
const tag = _phecdacore.getTag.call(void 0, model);
|
|
194
|
+
if (!this.has(tag)) return;
|
|
195
|
+
const module = this.moduleMap.get(tag);
|
|
196
|
+
debug(`unmount module "${String(tag)}"`);
|
|
197
|
+
await _phecdacore.invokeUnmount.call(void 0, module);
|
|
198
|
+
debug(`del module "${String(tag)}"`);
|
|
199
|
+
this.moduleMap.delete(tag);
|
|
200
|
+
this.modelMap.delete(module);
|
|
201
|
+
for (let i = this.meta.length - 1; i >= 0; i--) {
|
|
202
|
+
if (this.meta[i].data.tag === tag) this.meta.splice(i, 1);
|
|
203
|
+
}
|
|
204
|
+
return module;
|
|
205
|
+
}))).filter((item) => item);
|
|
206
|
+
for (const model of newModels) await this.buildDepModule(model);
|
|
207
|
+
for (const module of oldModules) {
|
|
208
|
+
const tag = _phecdacore.getTag.call(void 0, module);
|
|
209
|
+
if (this.dependenceGraph.has(tag)) {
|
|
210
|
+
[
|
|
211
|
+
...this.dependenceGraph.get(tag)
|
|
212
|
+
].forEach((depTag) => {
|
|
213
|
+
const depModule = this.moduleMap.get(depTag);
|
|
214
|
+
if (depModule) {
|
|
215
|
+
for (const key in depModule) {
|
|
216
|
+
if (depModule[key] === module) depModule[key] = this.moduleMap.get(tag);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
has(modelOrTag) {
|
|
224
|
+
return this.moduleMap.has(typeof modelOrTag === "function" ? _phecdacore.getTag.call(void 0, modelOrTag) : modelOrTag);
|
|
225
|
+
}
|
|
226
|
+
get(modelOrTag) {
|
|
227
|
+
const tag = typeof modelOrTag === "function" ? _phecdacore.getTag.call(void 0, modelOrTag) : modelOrTag;
|
|
228
|
+
if (!this.has(tag)) throw new Error(`module "${tag.toString()}" doesn't exist`);
|
|
229
|
+
return this.moduleMap.get(tag);
|
|
230
|
+
}
|
|
231
|
+
}, _class);
|
|
232
|
+
async function Factory(models, opts = {}) {
|
|
233
|
+
const phecda = new ServerPhecda(opts);
|
|
234
|
+
await phecda.start(models);
|
|
235
|
+
return phecda;
|
|
236
|
+
}
|
|
237
|
+
_chunkC2MTV2HSjs.__name.call(void 0, Factory, "Factory");
|
|
238
|
+
function useS(nsOrModel, namespace) {
|
|
239
|
+
if (!nsOrModel) {
|
|
240
|
+
namespace = "default";
|
|
241
|
+
} else {
|
|
242
|
+
if (typeof nsOrModel === "string") namespace = nsOrModel;
|
|
243
|
+
else if (!namespace) namespace = "default";
|
|
244
|
+
}
|
|
245
|
+
if (!phecdaNamespace.has(namespace)) throw new Error(`namespace "${namespace}" doesn't exist`);
|
|
246
|
+
const serverPhecda = phecdaNamespace.get(namespace);
|
|
247
|
+
if (nsOrModel && typeof nsOrModel !== "string") return serverPhecda.get(nsOrModel);
|
|
248
|
+
else return serverPhecda;
|
|
249
|
+
}
|
|
250
|
+
_chunkC2MTV2HSjs.__name.call(void 0, useS, "useS");
|
|
251
|
+
function getMetaFromInstance(instance, tag, name) {
|
|
252
|
+
const propertyKeys = _phecdacore.getMetaKey.call(void 0, instance).filter((item) => typeof item === "string");
|
|
253
|
+
const baseMeta = _phecdacore.getMergedMeta.call(void 0, instance, void 0);
|
|
254
|
+
const ctxs = baseMeta.ctxs;
|
|
255
|
+
return propertyKeys.filter((i) => typeof instance[i] === "function").map((i) => {
|
|
256
|
+
const meta = _phecdacore.getMergedMeta.call(void 0, instance, i);
|
|
257
|
+
const metaData = {
|
|
258
|
+
...meta,
|
|
259
|
+
name,
|
|
260
|
+
tag,
|
|
261
|
+
func: i
|
|
262
|
+
};
|
|
263
|
+
if (baseMeta.controller) {
|
|
264
|
+
if (typeof tag !== "string") _chunkC2MTV2HSjs.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
|
|
265
|
+
metaData.controller = baseMeta.controller;
|
|
266
|
+
metaData[baseMeta.controller] = {
|
|
267
|
+
...baseMeta[baseMeta.controller],
|
|
268
|
+
...meta[baseMeta.controller]
|
|
269
|
+
};
|
|
270
|
+
const params = _phecdacore.getMetaParams.call(void 0, instance, i).map((item) => _phecdacore.getMergedMeta.call(void 0, instance, i, item));
|
|
271
|
+
params.forEach((item, index) => {
|
|
272
|
+
if (!item.pipe) item.pipe = meta.pipe || baseMeta.pipe;
|
|
273
|
+
if (!item.define) item.define = {};
|
|
274
|
+
item.index = index;
|
|
275
|
+
});
|
|
276
|
+
metaData.ctxs = ctxs;
|
|
277
|
+
metaData.params = params;
|
|
278
|
+
metaData.filter = meta.filter || baseMeta.filter;
|
|
279
|
+
metaData.define = {
|
|
280
|
+
...baseMeta.define,
|
|
281
|
+
...meta.define
|
|
282
|
+
};
|
|
283
|
+
for (const item of [
|
|
284
|
+
"addons",
|
|
285
|
+
"guards"
|
|
286
|
+
]) {
|
|
287
|
+
const set = new Set(baseMeta[item]);
|
|
288
|
+
if (meta[item]) {
|
|
289
|
+
meta[item].forEach((part) => {
|
|
290
|
+
set.delete(part);
|
|
291
|
+
set.add(part);
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
metaData[item] = [
|
|
295
|
+
...set
|
|
296
|
+
];
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return new Meta(deepFreeze(metaData), getParamTypes(instance, i) || []);
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
_chunkC2MTV2HSjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
|
|
303
|
+
function deepFreeze(object) {
|
|
304
|
+
Object.freeze(object);
|
|
305
|
+
Object.getOwnPropertyNames(object).forEach((prop) => {
|
|
306
|
+
if (object[prop] !== null && (typeof object[prop] === "object" || typeof object[prop] === "function") && !Object.isFrozen(object[prop])) deepFreeze(object[prop]);
|
|
307
|
+
});
|
|
308
|
+
return object;
|
|
309
|
+
}
|
|
310
|
+
_chunkC2MTV2HSjs.__name.call(void 0, deepFreeze, "deepFreeze");
|
|
311
|
+
function getParamTypes(Model, key) {
|
|
312
|
+
const paramTypes = Reflect.getMetadata("design:paramtypes", Model, key);
|
|
313
|
+
if (typeof paramTypes === "function") return paramTypes();
|
|
314
|
+
else return paramTypes;
|
|
315
|
+
}
|
|
316
|
+
_chunkC2MTV2HSjs.__name.call(void 0, getParamTypes, "getParamTypes");
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
exports.Meta = Meta; exports.emitter = emitter; exports.defaultServerInject = defaultServerInject; exports.phecdaNamespace = phecdaNamespace; exports.ServerPhecda = ServerPhecda; exports.Factory = Factory; exports.useS = useS;
|
|
327
|
+
//# sourceMappingURL=chunk-AKRBZ4QH.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","console","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 console.log('replace', oldModels, newModels)\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 await this.buildDepModule(model)\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"]}
|