phecda-server 5.1.0 → 5.1.1

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 (153) hide show
  1. package/README.md +10 -10
  2. package/bin/cli.mjs +189 -189
  3. package/bin/schema.json +55 -55
  4. package/dist/{chunk-OTHER3YM.mjs → chunk-2HKQPZDT.mjs} +1 -2
  5. package/dist/{chunk-GHOKWS5V.js → chunk-3BV2GRS7.js} +38 -39
  6. package/dist/{chunk-BZP6GKM6.mjs → chunk-665MB62T.mjs} +1 -2
  7. package/dist/{chunk-QG4X6H5Y.js → chunk-FSBD5R22.js} +65 -66
  8. package/dist/{chunk-423JPSEB.js → chunk-HMPTPTFL.js} +17 -18
  9. package/dist/{chunk-6MQP6OHU.mjs → chunk-UU6RHGRF.mjs} +2 -3
  10. package/dist/{chunk-4YVAW3L4.mjs → chunk-VLV3AO3H.mjs} +0 -1
  11. package/dist/{chunk-Z4YJHEXT.js → chunk-ZP7HNASU.js} +0 -1
  12. package/dist/index.js +39 -40
  13. package/dist/index.mjs +4 -5
  14. package/dist/rpc/bullmq/index.js +12 -13
  15. package/dist/rpc/bullmq/index.mjs +2 -3
  16. package/dist/rpc/kafka/index.js +10 -11
  17. package/dist/rpc/kafka/index.mjs +2 -3
  18. package/dist/rpc/nats/index.js +11 -12
  19. package/dist/rpc/nats/index.mjs +2 -3
  20. package/dist/rpc/rabbitmq/index.js +13 -14
  21. package/dist/rpc/rabbitmq/index.mjs +2 -3
  22. package/dist/rpc/redis/index.js +11 -12
  23. package/dist/rpc/redis/index.mjs +2 -3
  24. package/dist/server/elysia/index.js +20 -21
  25. package/dist/server/elysia/index.mjs +3 -4
  26. package/dist/server/express/index.js +18 -19
  27. package/dist/server/express/index.mjs +2 -3
  28. package/dist/server/fastify/index.js +19 -20
  29. package/dist/server/fastify/index.mjs +3 -4
  30. package/dist/server/h3/index.js +16 -17
  31. package/dist/server/h3/index.mjs +2 -3
  32. package/dist/server/hono/index.js +17 -18
  33. package/dist/server/hono/index.mjs +2 -3
  34. package/dist/server/hyper-express/index.js +17 -18
  35. package/dist/server/hyper-express/index.mjs +2 -3
  36. package/dist/server/koa/index.js +18 -19
  37. package/dist/server/koa/index.mjs +2 -3
  38. package/dist/test.js +6 -7
  39. package/dist/test.mjs +2 -3
  40. package/package.json +2 -2
  41. package/register/index.mjs +40 -40
  42. package/register/loader.mjs +354 -341
  43. package/register/utils.mjs +81 -81
  44. package/dist/chunk-423JPSEB.js.map +0 -1
  45. package/dist/chunk-4R55T3HG.js +0 -253
  46. package/dist/chunk-4R55T3HG.js.map +0 -1
  47. package/dist/chunk-4YVAW3L4.mjs.map +0 -1
  48. package/dist/chunk-5DOVDDO7.mjs +0 -295
  49. package/dist/chunk-5DOVDDO7.mjs.map +0 -1
  50. package/dist/chunk-5WQ2SMIK.js +0 -295
  51. package/dist/chunk-5WQ2SMIK.js.map +0 -1
  52. package/dist/chunk-6MQP6OHU.mjs.map +0 -1
  53. package/dist/chunk-6Q2PCC3A.mjs +0 -295
  54. package/dist/chunk-6Q2PCC3A.mjs.map +0 -1
  55. package/dist/chunk-6UQYEBAN.js +0 -253
  56. package/dist/chunk-6UQYEBAN.js.map +0 -1
  57. package/dist/chunk-6W7CGOZC.mjs +0 -565
  58. package/dist/chunk-6W7CGOZC.mjs.map +0 -1
  59. package/dist/chunk-7Y37NSBM.js +0 -88
  60. package/dist/chunk-7Y37NSBM.js.map +0 -1
  61. package/dist/chunk-BQBSVGMG.mjs +0 -253
  62. package/dist/chunk-BQBSVGMG.mjs.map +0 -1
  63. package/dist/chunk-BZP6GKM6.mjs.map +0 -1
  64. package/dist/chunk-C5JAHCS2.mjs +0 -88
  65. package/dist/chunk-C5JAHCS2.mjs.map +0 -1
  66. package/dist/chunk-DTBKDALR.mjs +0 -295
  67. package/dist/chunk-DTBKDALR.mjs.map +0 -1
  68. package/dist/chunk-GHOKWS5V.js.map +0 -1
  69. package/dist/chunk-H4N6SHNG.mjs +0 -76
  70. package/dist/chunk-H4N6SHNG.mjs.map +0 -1
  71. package/dist/chunk-ICYHM4UM.js +0 -565
  72. package/dist/chunk-ICYHM4UM.js.map +0 -1
  73. package/dist/chunk-LOLXPM4J.mjs +0 -529
  74. package/dist/chunk-LOLXPM4J.mjs.map +0 -1
  75. package/dist/chunk-MSS6A2TU.js +0 -585
  76. package/dist/chunk-MSS6A2TU.js.map +0 -1
  77. package/dist/chunk-NEM3FY7C.mjs +0 -537
  78. package/dist/chunk-NEM3FY7C.mjs.map +0 -1
  79. package/dist/chunk-OTHER3YM.mjs.map +0 -1
  80. package/dist/chunk-Q2FYFIEY.js +0 -295
  81. package/dist/chunk-Q2FYFIEY.js.map +0 -1
  82. package/dist/chunk-QG4X6H5Y.js.map +0 -1
  83. package/dist/chunk-QIEZ6YTG.mjs +0 -295
  84. package/dist/chunk-QIEZ6YTG.mjs.map +0 -1
  85. package/dist/chunk-QOAKHCM7.js +0 -295
  86. package/dist/chunk-QOAKHCM7.js.map +0 -1
  87. package/dist/chunk-QVUD6L5X.js +0 -565
  88. package/dist/chunk-QVUD6L5X.js.map +0 -1
  89. package/dist/chunk-RGLTGKAU.js +0 -537
  90. package/dist/chunk-RGLTGKAU.js.map +0 -1
  91. package/dist/chunk-SHRK3TVB.js +0 -295
  92. package/dist/chunk-SHRK3TVB.js.map +0 -1
  93. package/dist/chunk-TCH6S42Z.js +0 -529
  94. package/dist/chunk-TCH6S42Z.js.map +0 -1
  95. package/dist/chunk-UCGRFVHC.mjs +0 -253
  96. package/dist/chunk-UCGRFVHC.mjs.map +0 -1
  97. package/dist/chunk-VOISXWVF.mjs +0 -295
  98. package/dist/chunk-VOISXWVF.mjs.map +0 -1
  99. package/dist/chunk-W6BC5INO.mjs +0 -295
  100. package/dist/chunk-W6BC5INO.mjs.map +0 -1
  101. package/dist/chunk-X5WQRO4R.js +0 -295
  102. package/dist/chunk-X5WQRO4R.js.map +0 -1
  103. package/dist/chunk-XDMCVVD3.mjs +0 -585
  104. package/dist/chunk-XDMCVVD3.mjs.map +0 -1
  105. package/dist/chunk-XNTMYLK6.js +0 -76
  106. package/dist/chunk-XNTMYLK6.js.map +0 -1
  107. package/dist/chunk-Y6LI4FDO.js +0 -537
  108. package/dist/chunk-Y6LI4FDO.js.map +0 -1
  109. package/dist/chunk-YZ2AQ6IL.mjs +0 -537
  110. package/dist/chunk-YZ2AQ6IL.mjs.map +0 -1
  111. package/dist/chunk-Z4YJHEXT.js.map +0 -1
  112. package/dist/chunk-ZE336SKZ.js +0 -295
  113. package/dist/chunk-ZE336SKZ.js.map +0 -1
  114. package/dist/chunk-ZJD235TO.mjs +0 -565
  115. package/dist/chunk-ZJD235TO.mjs.map +0 -1
  116. package/dist/core-930ea883.d.ts +0 -131
  117. package/dist/core-eb646fe5.d.ts +0 -139
  118. package/dist/core-fd134ffa.d.ts +0 -130
  119. package/dist/helper-06d25b37.d.ts +0 -19
  120. package/dist/helper-48454c0b.d.ts +0 -20
  121. package/dist/helper-73e8d2f0.d.ts +0 -18
  122. package/dist/helper-867a598d.d.ts +0 -18
  123. package/dist/helper-88b19c66.d.ts +0 -12
  124. package/dist/helper-9e206c66.d.ts +0 -12
  125. package/dist/helper-f29f082f.d.ts +0 -19
  126. package/dist/index.js.map +0 -1
  127. package/dist/index.mjs.map +0 -1
  128. package/dist/rpc/bullmq/index.js.map +0 -1
  129. package/dist/rpc/bullmq/index.mjs.map +0 -1
  130. package/dist/rpc/kafka/index.js.map +0 -1
  131. package/dist/rpc/kafka/index.mjs.map +0 -1
  132. package/dist/rpc/nats/index.js.map +0 -1
  133. package/dist/rpc/nats/index.mjs.map +0 -1
  134. package/dist/rpc/rabbitmq/index.js.map +0 -1
  135. package/dist/rpc/rabbitmq/index.mjs.map +0 -1
  136. package/dist/rpc/redis/index.js.map +0 -1
  137. package/dist/rpc/redis/index.mjs.map +0 -1
  138. package/dist/server/elysia/index.js.map +0 -1
  139. package/dist/server/elysia/index.mjs.map +0 -1
  140. package/dist/server/express/index.js.map +0 -1
  141. package/dist/server/express/index.mjs.map +0 -1
  142. package/dist/server/fastify/index.js.map +0 -1
  143. package/dist/server/fastify/index.mjs.map +0 -1
  144. package/dist/server/h3/index.js.map +0 -1
  145. package/dist/server/h3/index.mjs.map +0 -1
  146. package/dist/server/hono/index.js.map +0 -1
  147. package/dist/server/hono/index.mjs.map +0 -1
  148. package/dist/server/hyper-express/index.js.map +0 -1
  149. package/dist/server/hyper-express/index.mjs.map +0 -1
  150. package/dist/server/koa/index.js.map +0 -1
  151. package/dist/server/koa/index.mjs.map +0 -1
  152. package/dist/test.js.map +0 -1
  153. package/dist/test.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/decorators/param.ts","../src/decorators/aop.ts","../src/decorators/http.ts","../src/decorators/rpc.ts","../src/decorators/index.ts"],"sourcesContent":["import { getState, setPropertyState } from 'phecda-core'\r\nimport { shallowClone } from './helper'\r\n\r\nexport function BaseParam(data: Record<string, any>): ParameterDecorator {\r\n return (target: any, k: PropertyKey | undefined, index: number) => {\r\n if (!k)\r\n return\r\n setPropertyState(target, k, (state) => {\r\n if (!state.params)\r\n state.params = [...(getState(target, k)?.params || [])].map(shallowClone)\r\n\r\n const existItem = state.params.find((item: any) => item.index === index)\r\n\r\n if (existItem)\r\n Object.assign(existItem, data)\r\n\r\n else\r\n state.params.push({ ...data, index })\r\n })\r\n }\r\n}\r\n\r\nexport function Body(key = '') {\r\n return BaseParam({\r\n type: 'body',\r\n key,\r\n })\r\n}\r\n// req.headers\r\nexport function Head(key: string) {\r\n return BaseParam({\r\n type: 'headers', key: key.toLowerCase(),\r\n })\r\n}\r\n\r\nexport function Query(key = '') {\r\n return BaseParam({ type: 'query', key })\r\n}\r\nexport function Param(key: string) {\r\n return BaseParam({\r\n type: 'params', key,\r\n })\r\n}\r\n\r\n// work for micro service\r\nexport function Arg(target: any, k: string, index: number) {\r\n BaseParam({\r\n type: 'args', key: `${index}`,\r\n })(target, k, index)\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { BaseParam } from './param'\r\nexport function Guard(...guards: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.guards)\r\n state.guards = new Set([...(getState(target, k)?.guards || [])])\r\n\r\n guards.forEach((guard) => {\r\n if (state.guards.has(guard))\r\n state.guards.delete(guard)\r\n\r\n state.guards.add(guard)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Plugin(...plugins: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.plugins)\r\n state.plugins = new Set([...(getState(target, k)?.plugins || [])])\r\n\r\n plugins.forEach((plugin) => {\r\n if (state.plugins.has(plugin))\r\n state.plugins.delete(plugin)\r\n\r\n state.plugins.add(plugin)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Interceptor(...interceptors: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.interceptors)\r\n state.interceptors = new Set([...(getState(target, k)?.interceptors || [])])\r\n\r\n interceptors.forEach((interceptor) => {\r\n if (state.interceptors.has(interceptor))\r\n state.interceptors.delete(interceptor)\r\n\r\n state.interceptors.add(interceptor)\r\n })\r\n })\r\n }\r\n}\r\nexport function Filter(filter: string) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, state => state.filter = filter)\r\n }\r\n}\r\nexport function Pipe(pipe?: string) {\r\n return (target: any, k?: any, index?: any) => {\r\n if (typeof index === 'number') {\r\n BaseParam({ pipe })(target, k, index)\r\n\r\n return\r\n }\r\n setPropertyState(target, k, state => state.pipe = pipe)\r\n }\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { mergeObject } from './helper'\r\n\r\nexport function Route(route: string, type: string): MethodDecorator {\r\n return (target: any, k: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.http = mergeObject((state.http || getState(target, k)?.http),\r\n {\r\n route,\r\n type,\r\n })\r\n })\r\n }\r\n}\r\nexport function Header(headers: Record<string, string>): MethodDecorator {\r\n return (target: any, k: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.http)\r\n state.http = mergeObject(getState(target, k)?.http)\r\n\r\n state.http = mergeObject(state.http, {\r\n headers: mergeObject(state.http?.headers, headers),\r\n\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Get(route = '') {\r\n return Route(route, 'get')\r\n}\r\n\r\nexport function Post(route = '') {\r\n return Route(route, 'post')\r\n}\r\nexport function Put(route = '') {\r\n return Route(route, 'put')\r\n}\r\n\r\nexport function Patch(route = '') {\r\n return Route(route, 'patch')\r\n}\r\nexport function Delete(route = '') {\r\n return Route(route, 'delete')\r\n}\r\n\r\nexport function Controller(prefix = '') {\r\n return (target: any) => {\r\n setPropertyState(target, undefined, (state) => {\r\n state.controller = 'http'\r\n state.http = mergeObject(state.http || getState(target)?.http, { prefix })\r\n })\r\n }\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { mergeObject } from './helper'\r\n\r\nexport function Event(isEvent = true) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.rpc = mergeObject(state.rpc || getState(target, k)?.rpc, { isEvent })\r\n })\r\n }\r\n}\r\nexport function Queue(queue = '') {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.rpc = mergeObject(state.rpc || getState(target, k)?.rpc, { queue })\r\n })\r\n }\r\n}\r\n\r\nexport function Rpc(): ClassDecorator {\r\n return (target: any) => {\r\n setPropertyState(target, undefined, (state) => {\r\n state.controller = 'rpc'\r\n })\r\n }\r\n}\r\n","import { Empty, getState, set, setPropertyState } from 'phecda-core'\r\nimport { mergeObject, shallowClone } from './helper'\r\n\r\nexport function Injectable() {\r\n return (target: any) => Empty(target)\r\n}\r\n\r\nexport const Ctx: PropertyDecorator = (target: any, key: PropertyKey) => {\r\n set(target, 'context', key)\r\n}\r\n\r\nexport function Define(key: string, value: any): any {\r\n return (target: any, k?: any, index?: number) => {\r\n if (typeof index === 'number') {\r\n setPropertyState(target, k, (state) => {\r\n const parentState = getState(target, k)?.params || []\r\n\r\n if (!state.params)\r\n state.params = [...parentState].map(shallowClone)\r\n const existItem = state.params.find((item: any) => item.index === index)\r\n if (existItem)\r\n existItem.define = mergeObject(existItem.define, { [key]: value })\r\n\r\n else\r\n state.params.push({ define: { [key]: value }, index })\r\n })\r\n return\r\n }\r\n setPropertyState(target, k, (state) => {\r\n const parentState = getState(target, k)?.define\r\n if (!state.define)\r\n state.define = mergeObject(parentState)\r\n\r\n state.define[key] = value\r\n })\r\n }\r\n}\r\n\r\nexport * from './param'\r\nexport * from './aop'\r\nexport * from './http'\r\nexport * from './rpc'\r\n"],"mappings":"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","names":["getState","setPropertyState","BaseParam","data","target","k","index","setPropertyState","state","params","getState","map","shallowClone","existItem","find","item","Object","assign","push","Body","key","type","Head","toLowerCase","Query","Param","Arg","getState","setPropertyState","Guard","guards","target","k","setPropertyState","state","Set","getState","forEach","guard","has","delete","add","Plugin","plugins","plugin","Interceptor","interceptors","interceptor","Filter","filter","Pipe","pipe","index","BaseParam","getState","setPropertyState","Route","route","type","target","k","setPropertyState","state","http","mergeObject","getState","Header","headers","Get","Post","Put","Patch","Delete","Controller","prefix","undefined","controller","getState","setPropertyState","Event","isEvent","target","k","setPropertyState","state","rpc","mergeObject","getState","Queue","queue","Rpc","undefined","controller","Empty","getState","set","setPropertyState","Injectable","target","Empty","Ctx","key","set","Define","value","k","index","setPropertyState","state","parentState","getState","params","map","shallowClone","existItem","find","item","define","mergeObject","push"]}
@@ -1,295 +0,0 @@
1
- import {
2
- mergeObject,
3
- shallowClone
4
- } from "./chunk-BZP6GKM6.mjs";
5
- import {
6
- __name
7
- } from "./chunk-H4N6SHNG.mjs";
8
-
9
- // src/decorators/param.ts
10
- import { getState, setPropertyState } from "phecda-core";
11
- function BaseParam(data) {
12
- return (target, k, index) => {
13
- if (!k)
14
- return;
15
- setPropertyState(target, k, (state) => {
16
- if (!state.params)
17
- state.params = [
18
- ...getState(target, k)?.params || []
19
- ].map(shallowClone);
20
- const existItem = state.params.find((item) => item.index === index);
21
- if (existItem)
22
- Object.assign(existItem, data);
23
- else
24
- state.params.push({
25
- ...data,
26
- index
27
- });
28
- });
29
- };
30
- }
31
- __name(BaseParam, "BaseParam");
32
- function Body(key = "") {
33
- return BaseParam({
34
- type: "body",
35
- key
36
- });
37
- }
38
- __name(Body, "Body");
39
- function Head(key) {
40
- return BaseParam({
41
- type: "headers",
42
- key: key.toLowerCase()
43
- });
44
- }
45
- __name(Head, "Head");
46
- function Query(key = "") {
47
- return BaseParam({
48
- type: "query",
49
- key
50
- });
51
- }
52
- __name(Query, "Query");
53
- function Param(key) {
54
- return BaseParam({
55
- type: "params",
56
- key
57
- });
58
- }
59
- __name(Param, "Param");
60
- function Arg(target, k, index) {
61
- BaseParam({
62
- type: "args",
63
- key: `${index}`
64
- })(target, k, index);
65
- }
66
- __name(Arg, "Arg");
67
-
68
- // src/decorators/aop.ts
69
- import { getState as getState2, setPropertyState as setPropertyState2 } from "phecda-core";
70
- function Guard(...guards) {
71
- return (target, k) => {
72
- setPropertyState2(target, k, (state) => {
73
- if (!state.guards)
74
- state.guards = /* @__PURE__ */ new Set([
75
- ...getState2(target, k)?.guards || []
76
- ]);
77
- guards.forEach((guard) => {
78
- if (state.guards.has(guard))
79
- state.guards.delete(guard);
80
- state.guards.add(guard);
81
- });
82
- });
83
- };
84
- }
85
- __name(Guard, "Guard");
86
- function Plugin(...plugins) {
87
- return (target, k) => {
88
- setPropertyState2(target, k, (state) => {
89
- if (!state.plugins)
90
- state.plugins = /* @__PURE__ */ new Set([
91
- ...getState2(target, k)?.plugins || []
92
- ]);
93
- plugins.forEach((plugin) => {
94
- if (state.plugins.has(plugin))
95
- state.plugins.delete(plugin);
96
- state.plugins.add(plugin);
97
- });
98
- });
99
- };
100
- }
101
- __name(Plugin, "Plugin");
102
- function Interceptor(...interceptors) {
103
- return (target, k) => {
104
- setPropertyState2(target, k, (state) => {
105
- if (!state.interceptors)
106
- state.interceptors = /* @__PURE__ */ new Set([
107
- ...getState2(target, k)?.interceptors || []
108
- ]);
109
- interceptors.forEach((interceptor) => {
110
- if (state.interceptors.has(interceptor))
111
- state.interceptors.delete(interceptor);
112
- state.interceptors.add(interceptor);
113
- });
114
- });
115
- };
116
- }
117
- __name(Interceptor, "Interceptor");
118
- function Filter(filter) {
119
- return (target, k) => {
120
- setPropertyState2(target, k, (state) => state.filter = filter);
121
- };
122
- }
123
- __name(Filter, "Filter");
124
- function Pipe(pipe) {
125
- return (target, k, index) => {
126
- if (typeof index === "number") {
127
- BaseParam({
128
- pipe
129
- })(target, k, index);
130
- return;
131
- }
132
- setPropertyState2(target, k, (state) => state.pipe = pipe);
133
- };
134
- }
135
- __name(Pipe, "Pipe");
136
-
137
- // src/decorators/http.ts
138
- import { getState as getState3, setPropertyState as setPropertyState3 } from "phecda-core";
139
- function Route(route, type) {
140
- return (target, k) => {
141
- setPropertyState3(target, k, (state) => {
142
- state.http = mergeObject(state.http || getState3(target, k)?.http, {
143
- route,
144
- type
145
- });
146
- });
147
- };
148
- }
149
- __name(Route, "Route");
150
- function Header(headers) {
151
- return (target, k) => {
152
- setPropertyState3(target, k, (state) => {
153
- if (!state.http)
154
- state.http = mergeObject(getState3(target, k)?.http);
155
- state.http = mergeObject(state.http, {
156
- headers: mergeObject(state.http?.headers, headers)
157
- });
158
- });
159
- };
160
- }
161
- __name(Header, "Header");
162
- function Get(route = "") {
163
- return Route(route, "get");
164
- }
165
- __name(Get, "Get");
166
- function Post(route = "") {
167
- return Route(route, "post");
168
- }
169
- __name(Post, "Post");
170
- function Put(route = "") {
171
- return Route(route, "put");
172
- }
173
- __name(Put, "Put");
174
- function Patch(route = "") {
175
- return Route(route, "patch");
176
- }
177
- __name(Patch, "Patch");
178
- function Delete(route = "") {
179
- return Route(route, "delete");
180
- }
181
- __name(Delete, "Delete");
182
- function Controller(prefix = "") {
183
- return (target) => {
184
- setPropertyState3(target, void 0, (state) => {
185
- state.controller = "http";
186
- state.http = mergeObject(state.http || getState3(target)?.http, {
187
- prefix
188
- });
189
- });
190
- };
191
- }
192
- __name(Controller, "Controller");
193
-
194
- // src/decorators/rpc.ts
195
- import { getState as getState4, setPropertyState as setPropertyState4 } from "phecda-core";
196
- function Event(isEvent = true) {
197
- return (target, k) => {
198
- setPropertyState4(target, k, (state) => {
199
- state.rpc = mergeObject(state.rpc || getState4(target, k)?.rpc, {
200
- isEvent
201
- });
202
- });
203
- };
204
- }
205
- __name(Event, "Event");
206
- function Queue(queue = "") {
207
- return (target, k) => {
208
- setPropertyState4(target, k, (state) => {
209
- state.rpc = mergeObject(state.rpc || getState4(target, k)?.rpc, {
210
- queue
211
- });
212
- });
213
- };
214
- }
215
- __name(Queue, "Queue");
216
- function Rpc() {
217
- return (target) => {
218
- setPropertyState4(target, void 0, (state) => {
219
- state.controller = "rpc";
220
- });
221
- };
222
- }
223
- __name(Rpc, "Rpc");
224
-
225
- // src/decorators/index.ts
226
- import { Empty, getState as getState5, set, setPropertyState as setPropertyState5 } from "phecda-core";
227
- function Injectable() {
228
- return (target) => Empty(target);
229
- }
230
- __name(Injectable, "Injectable");
231
- var Ctx = /* @__PURE__ */ __name((target, key) => {
232
- set(target, "context", key);
233
- }, "Ctx");
234
- function Define(key, value) {
235
- return (target, k, index) => {
236
- if (typeof index === "number") {
237
- setPropertyState5(target, k, (state) => {
238
- const parentState = getState5(target, k)?.params || [];
239
- if (!state.params)
240
- state.params = [
241
- ...parentState
242
- ].map(shallowClone);
243
- const existItem = state.params.find((item) => item.index === index);
244
- if (existItem)
245
- existItem.define = mergeObject(existItem.define, {
246
- [key]: value
247
- });
248
- else
249
- state.params.push({
250
- define: {
251
- [key]: value
252
- },
253
- index
254
- });
255
- });
256
- return;
257
- }
258
- setPropertyState5(target, k, (state) => {
259
- const parentState = getState5(target, k)?.define;
260
- if (!state.define)
261
- state.define = mergeObject(parentState);
262
- state.define[key] = value;
263
- });
264
- };
265
- }
266
- __name(Define, "Define");
267
-
268
- export {
269
- BaseParam,
270
- Body,
271
- Head,
272
- Query,
273
- Param,
274
- Arg,
275
- Guard,
276
- Plugin,
277
- Interceptor,
278
- Filter,
279
- Pipe,
280
- Route,
281
- Header,
282
- Get,
283
- Post,
284
- Put,
285
- Patch,
286
- Delete,
287
- Controller,
288
- Event,
289
- Queue,
290
- Rpc,
291
- Injectable,
292
- Ctx,
293
- Define
294
- };
295
- //# sourceMappingURL=chunk-6Q2PCC3A.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/decorators/param.ts","../src/decorators/aop.ts","../src/decorators/http.ts","../src/decorators/rpc.ts","../src/decorators/index.ts"],"sourcesContent":["import { getState, setPropertyState } from 'phecda-core'\r\nimport { shallowClone } from './helper'\r\n\r\nexport function BaseParam(data: Record<string, any>): ParameterDecorator {\r\n return (target: any, k: PropertyKey | undefined, index: number) => {\r\n if (!k)\r\n return\r\n setPropertyState(target, k, (state) => {\r\n if (!state.params)\r\n state.params = [...(getState(target, k)?.params || [])].map(shallowClone)\r\n\r\n const existItem = state.params.find((item: any) => item.index === index)\r\n\r\n if (existItem)\r\n Object.assign(existItem, data)\r\n\r\n else\r\n state.params.push({ ...data, index })\r\n })\r\n }\r\n}\r\n\r\nexport function Body(key = '') {\r\n return BaseParam({\r\n type: 'body',\r\n key,\r\n })\r\n}\r\n// req.headers\r\nexport function Head(key: string) {\r\n return BaseParam({\r\n type: 'headers', key: key.toLowerCase(),\r\n })\r\n}\r\n\r\nexport function Query(key = '') {\r\n return BaseParam({ type: 'query', key })\r\n}\r\nexport function Param(key: string) {\r\n return BaseParam({\r\n type: 'params', key,\r\n })\r\n}\r\n\r\n// work for micro service\r\nexport function Arg(target: any, k: string, index: number) {\r\n BaseParam({\r\n type: 'args', key: `${index}`,\r\n })(target, k, index)\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { BaseParam } from './param'\r\nexport function Guard(...guards: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.guards)\r\n state.guards = new Set([...(getState(target, k)?.guards || [])])\r\n\r\n guards.forEach((guard) => {\r\n if (state.guards.has(guard))\r\n state.guards.delete(guard)\r\n\r\n state.guards.add(guard)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Plugin(...plugins: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.plugins)\r\n state.plugins = new Set([...(getState(target, k)?.plugins || [])])\r\n\r\n plugins.forEach((plugin) => {\r\n if (state.plugins.has(plugin))\r\n state.plugins.delete(plugin)\r\n\r\n state.plugins.add(plugin)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Interceptor(...interceptors: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.interceptors)\r\n state.interceptors = new Set([...(getState(target, k)?.interceptors || [])])\r\n\r\n interceptors.forEach((interceptor) => {\r\n if (state.interceptors.has(interceptor))\r\n state.interceptors.delete(interceptor)\r\n\r\n state.interceptors.add(interceptor)\r\n })\r\n })\r\n }\r\n}\r\nexport function Filter(filter: string) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, state => state.filter = filter)\r\n }\r\n}\r\nexport function Pipe(pipe?: string) {\r\n return (target: any, k?: any, index?: any) => {\r\n if (typeof index === 'number') {\r\n BaseParam({ pipe })(target, k, index)\r\n\r\n return\r\n }\r\n setPropertyState(target, k, state => state.pipe = pipe)\r\n }\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { mergeObject } from './helper'\r\n\r\nexport function Route(route: string, type: string): MethodDecorator {\r\n return (target: any, k: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.http = mergeObject((state.http || getState(target, k)?.http),\r\n {\r\n route,\r\n type,\r\n })\r\n })\r\n }\r\n}\r\nexport function Header(headers: Record<string, string>): MethodDecorator {\r\n return (target: any, k: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.http)\r\n state.http = mergeObject(getState(target, k)?.http)\r\n\r\n state.http = mergeObject(state.http, {\r\n headers: mergeObject(state.http?.headers, headers),\r\n\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Get(route = '') {\r\n return Route(route, 'get')\r\n}\r\n\r\nexport function Post(route = '') {\r\n return Route(route, 'post')\r\n}\r\nexport function Put(route = '') {\r\n return Route(route, 'put')\r\n}\r\n\r\nexport function Patch(route = '') {\r\n return Route(route, 'patch')\r\n}\r\nexport function Delete(route = '') {\r\n return Route(route, 'delete')\r\n}\r\n\r\nexport function Controller(prefix = '') {\r\n return (target: any) => {\r\n setPropertyState(target, undefined, (state) => {\r\n state.controller = 'http'\r\n state.http = mergeObject(state.http || getState(target)?.http, { prefix })\r\n })\r\n }\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { mergeObject } from './helper'\r\n\r\nexport function Event(isEvent = true) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.rpc = mergeObject(state.rpc || getState(target, k)?.rpc, { isEvent })\r\n })\r\n }\r\n}\r\nexport function Queue(queue = '') {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.rpc = mergeObject(state.rpc || getState(target, k)?.rpc, { queue })\r\n })\r\n }\r\n}\r\n\r\nexport function Rpc(): ClassDecorator {\r\n return (target: any) => {\r\n setPropertyState(target, undefined, (state) => {\r\n state.controller = 'rpc'\r\n })\r\n }\r\n}\r\n","import { Empty, getState, set, setPropertyState } from 'phecda-core'\r\nimport { mergeObject, shallowClone } from './helper'\r\n\r\nexport function Injectable() {\r\n return (target: any) => Empty(target)\r\n}\r\n\r\nexport const Ctx: PropertyDecorator = (target: any, key: PropertyKey) => {\r\n set(target, 'context', key)\r\n}\r\n\r\nexport function Define(key: string, value: any): any {\r\n return (target: any, k?: any, index?: number) => {\r\n if (typeof index === 'number') {\r\n setPropertyState(target, k, (state) => {\r\n const parentState = getState(target, k)?.params || []\r\n\r\n if (!state.params)\r\n state.params = [...parentState].map(shallowClone)\r\n const existItem = state.params.find((item: any) => item.index === index)\r\n if (existItem)\r\n existItem.define = mergeObject(existItem.define, { [key]: value })\r\n\r\n else\r\n state.params.push({ define: { [key]: value }, index })\r\n })\r\n return\r\n }\r\n setPropertyState(target, k, (state) => {\r\n const parentState = getState(target, k)?.define\r\n if (!state.define)\r\n state.define = mergeObject(parentState)\r\n\r\n state.define[key] = value\r\n })\r\n }\r\n}\r\n\r\nexport * from './param'\r\nexport * from './aop'\r\nexport * from './http'\r\nexport * from './rpc'\r\n"],"mappings":"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","names":["getState","setPropertyState","BaseParam","data","target","k","index","setPropertyState","state","params","getState","map","shallowClone","existItem","find","item","Object","assign","push","Body","key","type","Head","toLowerCase","Query","Param","Arg","getState","setPropertyState","Guard","guards","target","k","setPropertyState","state","Set","getState","forEach","guard","has","delete","add","Plugin","plugins","plugin","Interceptor","interceptors","interceptor","Filter","filter","Pipe","pipe","index","BaseParam","getState","setPropertyState","Route","route","type","target","k","setPropertyState","state","http","mergeObject","getState","Header","headers","Get","Post","Put","Patch","Delete","Controller","prefix","undefined","controller","getState","setPropertyState","Event","isEvent","target","k","setPropertyState","state","rpc","mergeObject","getState","Queue","queue","Rpc","undefined","controller","Empty","getState","set","setPropertyState","Injectable","target","Empty","Ctx","key","set","Define","value","k","index","setPropertyState","state","parentState","getState","params","map","shallowClone","existItem","find","item","define","mergeObject","push"]}
@@ -1,253 +0,0 @@
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; }
2
-
3
-
4
-
5
-
6
- var _chunk7Y37NSBMjs = require('./chunk-7Y37NSBM.js');
7
-
8
- // src/meta.ts
9
- var Meta = class {
10
-
11
-
12
- constructor(data, paramsType) {
13
- this.data = data;
14
- this.paramsType = paramsType;
15
- }
16
- };
17
- _chunk7Y37NSBMjs.__name.call(void 0, Meta, "Meta");
18
-
19
- // src/core.ts
20
- require('reflect-metadata');
21
- var _events = require('events'); var _events2 = _interopRequireDefault(_events);
22
- var _phecdacore = require('phecda-core');
23
- var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
24
- var debug = _debug2.default.call(void 0, "phecda-server(Factory)");
25
- var emitter = new (0, _events2.default)();
26
- async function Factory(models, opts = {}) {
27
- const moduleMap = /* @__PURE__ */ new Map();
28
- const meta = [];
29
- const constructorMap = /* @__PURE__ */ new Map();
30
- const constructorSet = /* @__PURE__ */ new WeakSet();
31
- const dependenceGraph = /* @__PURE__ */ new Map();
32
- const { parseModule = /* @__PURE__ */ _chunk7Y37NSBMjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunk7Y37NSBMjs.__name.call(void 0, (meta2) => meta2, "parseMeta"), generators } = opts;
33
- if (!_phecdacore.getInject.call(void 0, "watcher")) {
34
- _phecdacore.setInject.call(void 0, "watcher", ({ eventName, instance, key, options }) => {
35
- const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
36
- if (_optionalChain([options, 'optionalAccess', _ => _.once]))
37
- emitter.once(eventName, fn);
38
- else
39
- emitter.on(eventName, fn);
40
- return () => {
41
- emitter.off(eventName, fn);
42
- };
43
- });
44
- }
45
- async function del(tag) {
46
- if (!moduleMap.has(tag))
47
- return;
48
- const instance = moduleMap.get(tag);
49
- debug(`unmount module "${String(tag)}"`);
50
- await _phecdacore.invokeHandler.call(void 0, "unmount", instance);
51
- debug(`del module "${String(tag)}"`);
52
- moduleMap.delete(tag);
53
- constructorMap.delete(tag);
54
- for (let i = meta.length - 1; i >= 0; i--) {
55
- if (meta[i].data.tag === tag)
56
- meta.splice(i, 1);
57
- }
58
- return instance;
59
- }
60
- _chunk7Y37NSBMjs.__name.call(void 0, del, "del");
61
- async function destroy() {
62
- debug("destroy all");
63
- for (const [tag] of moduleMap)
64
- await del(tag);
65
- }
66
- _chunk7Y37NSBMjs.__name.call(void 0, destroy, "destroy");
67
- async function add(Model) {
68
- const tag = _phecdacore.getTag.call(void 0, Model);
69
- const oldInstance = await del(tag);
70
- const { instance: newModule } = await buildDepModule(Model);
71
- if (oldInstance && dependenceGraph.has(tag)) {
72
- debug(`replace module "${String(tag)}"`);
73
- [
74
- ...dependenceGraph.get(tag)
75
- ].forEach((tag2) => {
76
- const module = moduleMap.get(tag2);
77
- for (const key in module) {
78
- if (module[key] === oldInstance)
79
- module[key] = newModule;
80
- }
81
- });
82
- }
83
- }
84
- _chunk7Y37NSBMjs.__name.call(void 0, add, "add");
85
- async function buildDepModule(Model) {
86
- const paramtypes = getParamTypes(Model);
87
- let instance;
88
- const tag = _phecdacore.getTag.call(void 0, Model);
89
- if (moduleMap.has(tag)) {
90
- instance = moduleMap.get(tag);
91
- if (!instance)
92
- throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${String(tag)}--[module] ${Model}`);
93
- if (constructorMap.get(tag) !== Model && !constructorSet.has(Model)) {
94
- constructorSet.add(Model);
95
- _chunk7Y37NSBMjs.log.call(void 0, `Synonym module: Module taged "${String(tag)}" has been loaded before, so phecda-server won't load Module "${Model.name}"`, "warn");
96
- }
97
- return {
98
- instance,
99
- tag
100
- };
101
- }
102
- moduleMap.set(tag, void 0);
103
- debug(`instantiate module "${String(tag)}"`);
104
- if (paramtypes) {
105
- const paramtypesInstances = [];
106
- for (const i in paramtypes) {
107
- const { instance: sub, tag: subTag } = await buildDepModule(paramtypes[i]);
108
- paramtypesInstances[i] = sub;
109
- if (!dependenceGraph.has(subTag))
110
- dependenceGraph.set(subTag, /* @__PURE__ */ new Set());
111
- dependenceGraph.get(subTag).add(tag);
112
- }
113
- instance = parseModule(new Model(...paramtypesInstances));
114
- } else {
115
- instance = parseModule(new Model());
116
- }
117
- meta.push(...getMetaFromInstance(instance, tag, Model.name).map(parseMeta).filter((item) => !!item));
118
- debug(`init module "${String(tag)}"`);
119
- if (!_chunk7Y37NSBMjs.IS_ONLY_GENERATE)
120
- await _phecdacore.invokeHandler.call(void 0, "init", instance);
121
- debug(`add module "${String(tag)}"`);
122
- moduleMap.set(tag, instance);
123
- constructorMap.set(tag, Model);
124
- return {
125
- instance,
126
- tag
127
- };
128
- }
129
- _chunk7Y37NSBMjs.__name.call(void 0, buildDepModule, "buildDepModule");
130
- for (const model of models)
131
- await buildDepModule(model);
132
- async function generateCode() {
133
- if (generators) {
134
- return Promise.all(generators.map((generator) => {
135
- debug(`generate "${generator.name}" code to ${generator.path}`);
136
- return generator.output(meta);
137
- }));
138
- }
139
- }
140
- _chunk7Y37NSBMjs.__name.call(void 0, generateCode, "generateCode");
141
- generateCode().then(() => {
142
- if (_chunk7Y37NSBMjs.IS_ONLY_GENERATE)
143
- process.exit(4);
144
- });
145
- if (_chunk7Y37NSBMjs.IS_HMR) {
146
- if (!globalThis.__PS_HMR__)
147
- globalThis.__PS_HMR__ = [];
148
- _optionalChain([globalThis, 'access', _2 => _2.__PS_HMR__, 'optionalAccess', _3 => _3.push, 'call', _4 => _4(async (files) => {
149
- debug("reload files ");
150
- for (const file of files) {
151
- const models2 = await Promise.resolve().then(() => require(file));
152
- for (const i in models2) {
153
- if (_phecdacore.isPhecda.call(void 0, models2[i]))
154
- await add(models2[i]);
155
- }
156
- }
157
- generateCode();
158
- })]);
159
- }
160
- return {
161
- moduleMap,
162
- constructorMap,
163
- meta,
164
- add,
165
- del,
166
- destroy
167
- };
168
- }
169
- _chunk7Y37NSBMjs.__name.call(void 0, Factory, "Factory");
170
- function getMetaFromInstance(instance, tag, name) {
171
- const vars = _phecdacore.getExposeKey.call(void 0, instance).filter((item) => typeof item === "string");
172
- const baseState = _phecdacore.getState.call(void 0, instance);
173
- initState(baseState);
174
- const ctx = _phecdacore.get.call(void 0, instance, "context");
175
- return vars.filter((i) => typeof instance[i] === "function").map((i) => {
176
- const state = _phecdacore.getState.call(void 0, instance, i);
177
- const meta = {
178
- ...state,
179
- name,
180
- tag,
181
- func: i
182
- };
183
- if (baseState.controller) {
184
- if (typeof tag !== "string")
185
- _chunk7Y37NSBMjs.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
186
- initState(state);
187
- meta.ctx = ctx;
188
- meta.controller = baseState.controller;
189
- meta[baseState.controller] = {
190
- ...baseState[baseState.controller],
191
- ...state[baseState.controller]
192
- };
193
- const params = [];
194
- for (const i2 of state.params || []) {
195
- if (!i2.pipe)
196
- i2.pipe = state.pipe || baseState.pipe;
197
- if (!i2.define)
198
- i2.define = {};
199
- params.unshift(i2);
200
- if (i2.index === 0)
201
- break;
202
- }
203
- meta.params = params;
204
- meta.filter = state.filter || baseState.filter;
205
- meta.define = {
206
- ...baseState.define,
207
- ...state.define
208
- };
209
- meta.plugins = [
210
- .../* @__PURE__ */ new Set([
211
- ...baseState.plugins,
212
- ...state.plugins
213
- ])
214
- ];
215
- meta.guards = [
216
- .../* @__PURE__ */ new Set([
217
- ...baseState.guards,
218
- ...state.guards
219
- ])
220
- ];
221
- meta.interceptors = [
222
- .../* @__PURE__ */ new Set([
223
- ...baseState.interceptors,
224
- ...state.interceptors
225
- ])
226
- ];
227
- }
228
- return new Meta(meta, getParamTypes(instance, i) || []);
229
- });
230
- }
231
- _chunk7Y37NSBMjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
232
- function getParamTypes(Module, key) {
233
- return Reflect.getMetadata("design:paramtypes", Module, key);
234
- }
235
- _chunk7Y37NSBMjs.__name.call(void 0, getParamTypes, "getParamTypes");
236
- function initState(state) {
237
- if (!state.define)
238
- state.define = {};
239
- if (!state.plugins)
240
- state.plugins = /* @__PURE__ */ new Set();
241
- if (!state.guards)
242
- state.guards = /* @__PURE__ */ new Set();
243
- if (!state.interceptors)
244
- state.interceptors = /* @__PURE__ */ new Set();
245
- }
246
- _chunk7Y37NSBMjs.__name.call(void 0, initState, "initState");
247
-
248
-
249
-
250
-
251
-
252
- exports.Meta = Meta; exports.emitter = emitter; exports.Factory = Factory;
253
- //# sourceMappingURL=chunk-6UQYEBAN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/meta.ts","../src/core.ts"],"names":["Meta","data","paramsType","constructor","EventEmitter","get","getExposeKey","getInject","getState","getTag","invokeHandler","isPhecda","setInject","Debug","debug","emitter","Factory","models","opts","moduleMap","Map","meta","constructorMap","constructorSet","WeakSet","dependenceGraph","parseModule","module","parseMeta","generators","eventName","instance","key","options","fn","bind","v","once","on","off","del","tag","has","String","delete","i","length","splice","destroy","add","Model","oldInstance","newModule","buildDepModule","forEach","paramtypes","getParamTypes","Error","log","name","set","undefined","paramtypesInstances","sub","subTag","Set","push","getMetaFromInstance","map","filter","item","IS_ONLY_GENERATE","model","generateCode","Promise","all","generator","path","output","then","process","exit","IS_HMR","globalThis","__PS_HMR__","files","file","vars","baseState","initState","ctx","state","func","controller","params","pipe","define","unshift","index","plugins","guards","interceptors","Module","Reflect","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 ctx?: 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 interceptors: string[]\r\n plugins: 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 { get, getExposeKey, getInject, getState, getTag, invokeHandler, isPhecda, 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_HMR, IS_ONLY_GENERATE } from './common'\r\nimport type { Generator } from './generator'\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\n\r\nexport async function Factory(models: (new (...args: any) => any)[], opts: {\r\n parseModule?: (module: any) => any\r\n parseMeta?: (meta: Meta) => Meta | null | undefined\r\n generators?: Generator[]\r\n} = {}) {\r\n const moduleMap = new Map<PropertyKey, InstanceType<Construct>>()\r\n const meta: Meta[] = []\r\n const constructorMap = new Map()\r\n const constructorSet = new WeakSet()\r\n const dependenceGraph = new Map<PropertyKey, Set<PropertyKey>>()\r\n const { parseModule = (module: any) => module, parseMeta = (meta: any) => meta, generators } = opts\r\n if (!getInject('watcher')) {\r\n setInject('watcher', ({ eventName, instance, key, options }: WatcherParam) => {\r\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = 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 // only remove module in moduleMap(won't remove indirect module)\r\n async function del(tag: PropertyKey) {\r\n if (!moduleMap.has(tag))\r\n return\r\n\r\n const instance = moduleMap.get(tag)\r\n\r\n debug(`unmount module \"${String(tag)}\"`)\r\n await invokeHandler('unmount', instance)\r\n debug(`del module \"${String(tag)}\"`)\r\n\r\n moduleMap.delete(tag)\r\n constructorMap.delete(tag)\r\n for (let i = meta.length - 1; i >= 0; i--) {\r\n if (meta[i].data.tag === tag)\r\n meta.splice(i, 1)\r\n }\r\n\r\n return instance\r\n }\r\n\r\n async function destroy() {\r\n debug('destroy all')\r\n\r\n for (const [tag] of moduleMap)\r\n await del(tag)\r\n }\r\n\r\n async function add(Model: Construct) {\r\n const tag = getTag(Model)\r\n const oldInstance = await del(tag)\r\n\r\n const { instance: newModule } = await buildDepModule(Model)\r\n\r\n if (oldInstance && dependenceGraph.has(tag)) {\r\n debug(`replace module \"${String(tag)}\"`);\r\n\r\n [...dependenceGraph.get(tag)!].forEach((tag) => {\r\n const module = 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 function buildDepModule(Model: Construct) {\r\n const paramtypes = getParamTypes(Model) as Construct[]\r\n let instance: InstanceType<Construct>\r\n const tag = getTag(Model)\r\n\r\n if (moduleMap.has(tag)) {\r\n instance = moduleMap.get(tag)\r\n if (!instance)\r\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${String(tag)}--[module] ${Model}`)\r\n\r\n if (constructorMap.get(tag) !== Model && !constructorSet.has(Model)) {\r\n constructorSet.add(Model)// a module will only warn once\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 { instance, tag }\r\n }\r\n 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 { instance: sub, tag: subTag } = await buildDepModule(paramtypes[i])\r\n paramtypesInstances[i] = sub\r\n if (!dependenceGraph.has(subTag))\r\n dependenceGraph.set(subTag, new Set())\r\n dependenceGraph.get(subTag)!.add(tag)\r\n }\r\n\r\n instance = parseModule(new Model(...paramtypesInstances))\r\n }\r\n else {\r\n instance = parseModule(new Model())\r\n }\r\n meta.push(...getMetaFromInstance(instance, tag, Model.name).map(parseMeta).filter(item => !!item))\r\n\r\n debug(`init module \"${String(tag)}\"`)\r\n\r\n if (!IS_ONLY_GENERATE)\r\n await invokeHandler('init', instance)\r\n\r\n debug(`add module \"${String(tag)}\"`)\r\n\r\n moduleMap.set(tag, instance)\r\n constructorMap.set(tag, Model)\r\n return { instance, tag }\r\n }\r\n\r\n for (const model of models)\r\n await buildDepModule(model)\r\n\r\n async function generateCode() {\r\n if (generators) {\r\n return Promise.all(generators.map((generator) => {\r\n debug(`generate \"${generator.name}\" code to ${generator.path}`)\r\n\r\n return generator.output(meta)\r\n }))\r\n }\r\n }\r\n\r\n 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 if (IS_HMR) { // for hmr\r\n if (!globalThis.__PS_HMR__)\r\n globalThis.__PS_HMR__ = []\r\n\r\n globalThis.__PS_HMR__?.push(async (files: string[]) => {\r\n debug('reload files ')\r\n\r\n for (const file of files) {\r\n const models = await import(file)\r\n for (const i in models) {\r\n if (isPhecda(models[i]))\r\n await add(models[i])\r\n }\r\n }\r\n generateCode()\r\n })\r\n }\r\n\r\n return {\r\n moduleMap,\r\n constructorMap,\r\n meta,\r\n add,\r\n del,\r\n destroy,\r\n }\r\n}\r\n\r\nfunction getMetaFromInstance(instance: Phecda, tag: PropertyKey, name: string) {\r\n const vars = getExposeKey(instance).filter(item => typeof item === 'string') as string[]\r\n const baseState = getState(instance) as MetaData\r\n initState(baseState)\r\n const ctx = get(instance, 'context')\r\n\r\n return vars.filter(i => typeof (instance as any)[i] === 'function').map((i) => {\r\n const state = getState(instance, i) as any\r\n\r\n const meta = {\r\n ...state,\r\n name,\r\n tag,\r\n func:\r\n i,\r\n } as MetaData\r\n if (baseState.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 initState(state)\r\n meta.ctx = ctx\r\n meta.controller = baseState.controller\r\n meta[baseState.controller] = {\r\n ...baseState[baseState.controller],\r\n ...state[baseState.controller],\r\n }\r\n\r\n const params = [] as any[]\r\n for (const i of state.params || []) {\r\n if (!i.pipe)\r\n i.pipe = state.pipe || baseState.pipe\r\n if (!i.define)\r\n i.define = {}\r\n\r\n params.unshift(i)\r\n if (i.index === 0)\r\n break\r\n }\r\n\r\n meta.params = params\r\n meta.filter = state.filter || baseState.filter\r\n meta.define = { ...baseState.define, ...state.define }\r\n meta.plugins = [...new Set([...baseState.plugins, ...state.plugins])]\r\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\r\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\r\n }\r\n return new Meta(meta as unknown as MetaData, getParamTypes(instance, i as string) || [])\r\n })\r\n}\r\n\r\nfunction getParamTypes(Module: any, key?: string | symbol) {\r\n return Reflect.getMetadata('design:paramtypes', Module, key!)\r\n}\r\n\r\nfunction initState(state: any) {\r\n if (!state.define)\r\n state.define = {}\r\n\r\n if (!state.plugins)\r\n state.plugins = new Set()\r\n if (!state.guards)\r\n state.guards = new Set()\r\n if (!state.interceptors)\r\n state.interceptors = new Set()\r\n}\r\n"]}