phecda-server 7.0.0-alpha.8 → 7.0.0

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 (154) hide show
  1. package/README.md +10 -10
  2. package/assets/schema.json +12 -9
  3. package/bin/cli.mjs +96 -37
  4. package/dist/chunk-5SUY5UVC.js +258 -0
  5. package/dist/chunk-5SUY5UVC.js.map +1 -0
  6. package/dist/chunk-6JAHCTOT.mjs +334 -0
  7. package/dist/chunk-6JAHCTOT.mjs.map +1 -0
  8. package/dist/{chunk-BBNJVYVX.js → chunk-EDAWJVJ4.js} +42 -25
  9. package/dist/chunk-EDAWJVJ4.js.map +1 -0
  10. package/dist/{chunk-7EMAZGYO.js → chunk-H7OCHDZT.js} +65 -95
  11. package/dist/chunk-H7OCHDZT.js.map +1 -0
  12. package/dist/{chunk-QJIAXSLZ.js → chunk-KRUOHWFR.js} +79 -68
  13. package/dist/chunk-KRUOHWFR.js.map +1 -0
  14. package/dist/chunk-KUGU3UGO.js +334 -0
  15. package/dist/chunk-KUGU3UGO.js.map +1 -0
  16. package/dist/{chunk-SGMQZRP6.mjs → chunk-LBH4RXQQ.mjs} +12 -42
  17. package/dist/chunk-LBH4RXQQ.mjs.map +1 -0
  18. package/dist/{chunk-YKP4ODZA.mjs → chunk-MDPW6WGF.mjs} +32 -6
  19. package/dist/chunk-MDPW6WGF.mjs.map +1 -0
  20. package/dist/{chunk-VSGYTGHY.js → chunk-RLFCI3RG.js} +31 -5
  21. package/dist/chunk-RLFCI3RG.js.map +1 -0
  22. package/dist/{chunk-7NWDKK7D.mjs → chunk-TTHYUNOT.mjs} +18 -1
  23. package/dist/chunk-TTHYUNOT.mjs.map +1 -0
  24. package/dist/chunk-VDOICQ2U.mjs +258 -0
  25. package/dist/chunk-VDOICQ2U.mjs.map +1 -0
  26. package/dist/{chunk-B45BN7LY.mjs → chunk-WTJKTICN.mjs} +65 -54
  27. package/dist/chunk-WTJKTICN.mjs.map +1 -0
  28. package/dist/{core-BGEsBtTG.d.ts → core-BOo3uGFX.d.ts} +5 -4
  29. package/dist/{core-BcKywWLd.d.mts → core-CF45G79J.d.mts} +5 -4
  30. package/dist/core-DbqWh47p.d.mts +50 -0
  31. package/dist/core-Rq7BhPHE.d.ts +50 -0
  32. package/dist/helper.d.mts +7 -8
  33. package/dist/helper.d.ts +7 -8
  34. package/dist/helper.js +5 -3
  35. package/dist/helper.js.map +1 -0
  36. package/dist/helper.mjs +9 -7
  37. package/dist/helper.mjs.map +1 -0
  38. package/dist/http/elysia/index.d.mts +4 -4
  39. package/dist/http/elysia/index.d.ts +4 -4
  40. package/dist/http/elysia/index.js +43 -45
  41. package/dist/http/elysia/index.js.map +1 -0
  42. package/dist/http/elysia/index.mjs +6 -8
  43. package/dist/http/elysia/index.mjs.map +1 -0
  44. package/dist/http/express/index.d.mts +3 -3
  45. package/dist/http/express/index.d.ts +3 -3
  46. package/dist/http/express/index.js +40 -42
  47. package/dist/http/express/index.js.map +1 -0
  48. package/dist/http/express/index.mjs +6 -8
  49. package/dist/http/express/index.mjs.map +1 -0
  50. package/dist/http/fastify/index.d.mts +3 -3
  51. package/dist/http/fastify/index.d.ts +3 -3
  52. package/dist/http/fastify/index.js +41 -43
  53. package/dist/http/fastify/index.js.map +1 -0
  54. package/dist/http/fastify/index.mjs +6 -8
  55. package/dist/http/fastify/index.mjs.map +1 -0
  56. package/dist/http/h3/index.d.mts +3 -3
  57. package/dist/http/h3/index.d.ts +3 -3
  58. package/dist/http/h3/index.js +41 -43
  59. package/dist/http/h3/index.js.map +1 -0
  60. package/dist/http/h3/index.mjs +5 -7
  61. package/dist/http/h3/index.mjs.map +1 -0
  62. package/dist/http/hono/index.d.mts +3 -3
  63. package/dist/http/hono/index.d.ts +3 -3
  64. package/dist/http/hono/index.js +37 -39
  65. package/dist/http/hono/index.js.map +1 -0
  66. package/dist/http/hono/index.mjs +5 -7
  67. package/dist/http/hono/index.mjs.map +1 -0
  68. package/dist/http/hyper-express/index.d.mts +3 -3
  69. package/dist/http/hyper-express/index.d.ts +3 -3
  70. package/dist/http/hyper-express/index.js +38 -40
  71. package/dist/http/hyper-express/index.js.map +1 -0
  72. package/dist/http/hyper-express/index.mjs +5 -7
  73. package/dist/http/hyper-express/index.mjs.map +1 -0
  74. package/dist/http/koa/index.d.mts +3 -3
  75. package/dist/http/koa/index.d.ts +3 -3
  76. package/dist/http/koa/index.js +40 -42
  77. package/dist/http/koa/index.js.map +1 -0
  78. package/dist/http/koa/index.mjs +6 -8
  79. package/dist/http/koa/index.mjs.map +1 -0
  80. package/dist/index.d.mts +76 -12
  81. package/dist/index.d.ts +76 -12
  82. package/dist/index.js +103 -49
  83. package/dist/index.js.map +1 -0
  84. package/dist/index.mjs +68 -14
  85. package/dist/index.mjs.map +1 -0
  86. package/dist/{meta-B_HW7cWh.d.ts → meta-BoS1E-Nz.d.mts} +6 -24
  87. package/dist/{meta-B_HW7cWh.d.mts → meta-BoS1E-Nz.d.ts} +6 -24
  88. package/dist/rpc/bullmq/index.d.mts +4 -6
  89. package/dist/rpc/bullmq/index.d.ts +4 -6
  90. package/dist/rpc/bullmq/index.js +13 -80
  91. package/dist/rpc/bullmq/index.js.map +1 -0
  92. package/dist/rpc/bullmq/index.mjs +6 -73
  93. package/dist/rpc/bullmq/index.mjs.map +1 -0
  94. package/dist/rpc/electron/index.d.mts +13 -0
  95. package/dist/rpc/electron/index.d.ts +13 -0
  96. package/dist/rpc/electron/index.js +73 -0
  97. package/dist/rpc/electron/index.js.map +1 -0
  98. package/dist/rpc/electron/index.mjs +73 -0
  99. package/dist/rpc/electron/index.mjs.map +1 -0
  100. package/dist/rpc/kafka/index.d.mts +4 -9
  101. package/dist/rpc/kafka/index.d.ts +4 -9
  102. package/dist/rpc/kafka/index.js +12 -90
  103. package/dist/rpc/kafka/index.js.map +1 -0
  104. package/dist/rpc/kafka/index.mjs +5 -83
  105. package/dist/rpc/kafka/index.mjs.map +1 -0
  106. package/dist/rpc/nats/index.d.mts +4 -6
  107. package/dist/rpc/nats/index.d.ts +4 -6
  108. package/dist/rpc/nats/index.js +13 -72
  109. package/dist/rpc/nats/index.js.map +1 -0
  110. package/dist/rpc/nats/index.mjs +5 -64
  111. package/dist/rpc/nats/index.mjs.map +1 -0
  112. package/dist/rpc/rabbitmq/index.d.mts +4 -6
  113. package/dist/rpc/rabbitmq/index.d.ts +4 -6
  114. package/dist/rpc/rabbitmq/index.js +14 -79
  115. package/dist/rpc/rabbitmq/index.js.map +1 -0
  116. package/dist/rpc/rabbitmq/index.mjs +6 -71
  117. package/dist/rpc/rabbitmq/index.mjs.map +1 -0
  118. package/dist/rpc/redis/index.d.mts +4 -9
  119. package/dist/rpc/redis/index.d.ts +4 -9
  120. package/dist/rpc/redis/index.js +12 -78
  121. package/dist/rpc/redis/index.js.map +1 -0
  122. package/dist/rpc/redis/index.mjs +6 -72
  123. package/dist/rpc/redis/index.mjs.map +1 -0
  124. package/dist/rpc/web-ext/index.d.mts +2 -0
  125. package/dist/rpc/web-ext/index.d.ts +2 -0
  126. package/dist/rpc/web-ext/index.js +1 -0
  127. package/dist/rpc/web-ext/index.js.map +1 -0
  128. package/dist/rpc/web-ext/index.mjs +1 -0
  129. package/dist/rpc/web-ext/index.mjs.map +1 -0
  130. package/dist/rpc/ws/index.d.mts +14 -0
  131. package/dist/rpc/ws/index.d.ts +14 -0
  132. package/dist/rpc/ws/index.js +74 -0
  133. package/dist/rpc/ws/index.js.map +1 -0
  134. package/dist/rpc/ws/index.mjs +74 -0
  135. package/dist/rpc/ws/index.mjs.map +1 -0
  136. package/dist/test.d.mts +8 -4
  137. package/dist/test.d.ts +8 -4
  138. package/dist/test.js +7 -6
  139. package/dist/test.js.map +1 -0
  140. package/dist/test.mjs +3 -2
  141. package/dist/test.mjs.map +1 -0
  142. package/dist/types-CInz3bD0.d.ts +14 -0
  143. package/dist/types-E-rqlg3-.d.mts +14 -0
  144. package/dist/{types-C2SQ9U9V.d.mts → types-SCJZFCYt.d.mts} +1 -1
  145. package/dist/{types-PFPIQWVF.d.ts → types-xruyYmyu.d.ts} +1 -1
  146. package/package.json +24 -8
  147. package/register/export.mjs +30 -0
  148. package/register/index.mjs +20 -12
  149. package/register/loader.mjs +94 -116
  150. package/register/utils.mjs +36 -6
  151. package/assets/ps.json +0 -24
  152. package/assets/tsconfig.json +0 -21
  153. package/dist/types-CYF0vha6.d.ts +0 -19
  154. package/dist/types-DEQb_e59.d.mts +0 -19
@@ -0,0 +1,258 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-MDPW6WGF.mjs";
4
+
5
+ // src/decorators/param.ts
6
+ import { setMeta } from "phecda-core";
7
+ function BaseParam(data) {
8
+ return (target, property, index) => {
9
+ if (!property) return;
10
+ setMeta(target, property, index, data);
11
+ };
12
+ }
13
+ __name(BaseParam, "BaseParam");
14
+ function Body(key = "") {
15
+ return BaseParam({
16
+ type: "body",
17
+ key
18
+ });
19
+ }
20
+ __name(Body, "Body");
21
+ function Head(key) {
22
+ return BaseParam({
23
+ type: "headers",
24
+ key: key.toLowerCase()
25
+ });
26
+ }
27
+ __name(Head, "Head");
28
+ function Query(key = "") {
29
+ return BaseParam({
30
+ type: "query",
31
+ key
32
+ });
33
+ }
34
+ __name(Query, "Query");
35
+ function Param(key) {
36
+ return BaseParam({
37
+ type: "params",
38
+ key
39
+ });
40
+ }
41
+ __name(Param, "Param");
42
+ function Arg(target, k, index) {
43
+ BaseParam({
44
+ type: "args",
45
+ key: `${index}`
46
+ })(target, k, index);
47
+ }
48
+ __name(Arg, "Arg");
49
+ function OneFile(key = "") {
50
+ return BaseParam({
51
+ type: "file",
52
+ key
53
+ });
54
+ }
55
+ __name(OneFile, "OneFile");
56
+ function ManyFiles(key = "") {
57
+ return BaseParam({
58
+ type: "files",
59
+ key
60
+ });
61
+ }
62
+ __name(ManyFiles, "ManyFiles");
63
+
64
+ // src/decorators/aop.ts
65
+ import { setMeta as setMeta2 } from "phecda-core";
66
+ function Guard(...guards) {
67
+ return (target, property) => {
68
+ setMeta2(target, property, void 0, {
69
+ guards
70
+ });
71
+ };
72
+ }
73
+ __name(Guard, "Guard");
74
+ function Addon(...addons) {
75
+ return (target, property) => {
76
+ setMeta2(target, property, void 0, {
77
+ addons
78
+ });
79
+ };
80
+ }
81
+ __name(Addon, "Addon");
82
+ function Filter(filter) {
83
+ return (target, property) => {
84
+ setMeta2(target, property, void 0, {
85
+ filter
86
+ });
87
+ };
88
+ }
89
+ __name(Filter, "Filter");
90
+ function Pipe(pipe) {
91
+ return (target, property, index) => {
92
+ if (typeof index === "number") {
93
+ BaseParam({
94
+ pipe
95
+ })(target, property, index);
96
+ return;
97
+ }
98
+ setMeta2(target, property, void 0, {
99
+ pipe
100
+ });
101
+ };
102
+ }
103
+ __name(Pipe, "Pipe");
104
+
105
+ // src/decorators/http.ts
106
+ import { setMeta as setMeta3 } from "phecda-core";
107
+ function Route(route, type) {
108
+ return (target, property) => {
109
+ setMeta3(target, property, void 0, {
110
+ http: {
111
+ route,
112
+ type
113
+ }
114
+ });
115
+ };
116
+ }
117
+ __name(Route, "Route");
118
+ function Header(headers) {
119
+ return (target, property) => {
120
+ setMeta3(target, property, void 0, {
121
+ http: {
122
+ headers
123
+ }
124
+ });
125
+ };
126
+ }
127
+ __name(Header, "Header");
128
+ function Get(route = "") {
129
+ return Route(route, "get");
130
+ }
131
+ __name(Get, "Get");
132
+ function Post(route = "") {
133
+ return Route(route, "post");
134
+ }
135
+ __name(Post, "Post");
136
+ function Put(route = "") {
137
+ return Route(route, "put");
138
+ }
139
+ __name(Put, "Put");
140
+ function Search(route = "") {
141
+ return Route(route, "search");
142
+ }
143
+ __name(Search, "Search");
144
+ function Patch(route = "") {
145
+ return Route(route, "patch");
146
+ }
147
+ __name(Patch, "Patch");
148
+ function Delete(route = "") {
149
+ return Route(route, "delete");
150
+ }
151
+ __name(Delete, "Delete");
152
+ function Controller(prefix = "") {
153
+ return (target) => {
154
+ setMeta3(target, void 0, void 0, {
155
+ controller: "http",
156
+ http: {
157
+ prefix
158
+ }
159
+ });
160
+ };
161
+ }
162
+ __name(Controller, "Controller");
163
+
164
+ // src/decorators/rpc.ts
165
+ import { setMeta as setMeta4 } from "phecda-core";
166
+ function Queue(queue = "", isEvent) {
167
+ return (target, property) => {
168
+ setMeta4(target, property, void 0, {
169
+ rpc: {
170
+ queue,
171
+ isEvent
172
+ }
173
+ });
174
+ };
175
+ }
176
+ __name(Queue, "Queue");
177
+ function Rpc() {
178
+ return (target) => {
179
+ setMeta4(target, void 0, void 0, {
180
+ controller: "rpc"
181
+ });
182
+ };
183
+ }
184
+ __name(Rpc, "Rpc");
185
+
186
+ // src/decorators/ctx.ts
187
+ import { SHARE_KEY, setMeta as setMeta5 } from "phecda-core";
188
+ var Ctx = /* @__PURE__ */ __name((target, property) => {
189
+ setMeta5(target, SHARE_KEY, void 0, {
190
+ ctxs: [
191
+ property
192
+ ]
193
+ });
194
+ }, "Ctx");
195
+ function Define(key, value) {
196
+ return (target, property, index) => {
197
+ if (typeof index === "number") {
198
+ setMeta5(target, property, void 0, {
199
+ params: [
200
+ {
201
+ define: {
202
+ [key]: value
203
+ },
204
+ index
205
+ }
206
+ ]
207
+ });
208
+ } else {
209
+ setMeta5(target, property, void 0, {
210
+ define: {
211
+ [key]: value
212
+ }
213
+ });
214
+ }
215
+ };
216
+ }
217
+ __name(Define, "Define");
218
+
219
+ // src/decorators/openapi.ts
220
+ import { setMeta as setMeta6 } from "phecda-core";
221
+ function ApiDoc(config) {
222
+ return function(target, propertyKey, descriptor) {
223
+ setMeta6(target, propertyKey, void 0, {
224
+ openapi: config
225
+ });
226
+ };
227
+ }
228
+ __name(ApiDoc, "ApiDoc");
229
+
230
+ export {
231
+ BaseParam,
232
+ Body,
233
+ Head,
234
+ Query,
235
+ Param,
236
+ Arg,
237
+ OneFile,
238
+ ManyFiles,
239
+ Guard,
240
+ Addon,
241
+ Filter,
242
+ Pipe,
243
+ Route,
244
+ Header,
245
+ Get,
246
+ Post,
247
+ Put,
248
+ Search,
249
+ Patch,
250
+ Delete,
251
+ Controller,
252
+ Queue,
253
+ Rpc,
254
+ Ctx,
255
+ Define,
256
+ ApiDoc
257
+ };
258
+ //# sourceMappingURL=chunk-VDOICQ2U.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/decorators/param.ts","../src/decorators/aop.ts","../src/decorators/http.ts","../src/decorators/rpc.ts","../src/decorators/ctx.ts","../src/decorators/openapi.ts"],"sourcesContent":["import { setMeta } from 'phecda-core'\r\n\r\nexport function BaseParam(data: Record<string, any>): ParameterDecorator {\r\n return (target: any, property: PropertyKey | undefined, index: number) => {\r\n if (!property)\r\n return\r\n\r\n setMeta(target, property, index, data)\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\r\nexport function OneFile(key = '') {\r\n return BaseParam({\r\n type: 'file',\r\n key,\r\n })\r\n}\r\n\r\nexport function ManyFiles(key = '') {\r\n return BaseParam({\r\n type: 'files',\r\n key,\r\n })\r\n}\r\n","import { setMeta } from 'phecda-core'\r\nimport { BaseParam } from './param'\r\nexport function Guard(...guards: string[]) {\r\n return (target: any, property?: PropertyKey) => {\r\n setMeta(target, property, undefined, {\r\n guards,\r\n })\r\n }\r\n}\r\n\r\nexport function Addon(...addons: string[]) {\r\n return (target: any, property?: PropertyKey) => {\r\n setMeta(target, property, undefined, {\r\n addons,\r\n })\r\n }\r\n}\r\n\r\nexport function Filter(filter: string) {\r\n return (target: any, property?: PropertyKey) => {\r\n setMeta(target, property, undefined, {\r\n filter,\r\n })\r\n }\r\n}\r\nexport function Pipe(pipe?: string) {\r\n return (target: any, property?: any, index?: any) => {\r\n if (typeof index === 'number') {\r\n BaseParam({ pipe })(target, property, index)\r\n\r\n return\r\n }\r\n setMeta(target, property, undefined, {\r\n pipe,\r\n })\r\n }\r\n}\r\n","import { setMeta } from 'phecda-core'\r\n\r\nexport function Route(route: string, type: string): MethodDecorator {\r\n return (target: any, property: PropertyKey) => {\r\n setMeta(target, property, undefined, {\r\n http: {\r\n route, type,\r\n },\r\n })\r\n }\r\n}\r\nexport function Header(headers: Record<string, string>): MethodDecorator {\r\n return (target: any, property: PropertyKey) => {\r\n setMeta(target, property, undefined, {\r\n http: {\r\n headers,\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 Search(route = '') {\r\n return Route(route, 'search')\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 setMeta(target, undefined, undefined, {\r\n controller: 'http',\r\n http: { prefix },\r\n })\r\n }\r\n}\r\n","import { setMeta } from 'phecda-core'\r\n\r\nexport function Queue(queue = '', isEvent?: boolean) {\r\n return (target: any, property?: PropertyKey) => {\r\n setMeta(target, property, undefined, {\r\n rpc: {\r\n queue, isEvent,\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport function Rpc(): ClassDecorator {\r\n return (target: any) => {\r\n setMeta(target, undefined, undefined, {\r\n controller: 'rpc',\r\n })\r\n }\r\n}\r\n","import { SHARE_KEY, setMeta } from 'phecda-core'\r\n\r\nexport const Ctx: PropertyDecorator = (target: any, property: PropertyKey) => {\r\n setMeta(target, SHARE_KEY, undefined, {\r\n ctxs: [property],\r\n })\r\n}\r\n\r\nexport function Define(key: string, value: any): any {\r\n return (target: any, property?: any, index?: number) => {\r\n if (typeof index === 'number') {\r\n setMeta(target, property, undefined, {\r\n params: [{ define: { [key]: value }, index }],\r\n })\r\n }\r\n else {\r\n setMeta(target, property, undefined, {\r\n define: {\r\n [key]: value,\r\n },\r\n })\r\n }\r\n }\r\n}\r\n","import { setMeta } from \"phecda-core\";\r\n\r\n\r\n// OpenAPI 基础类型定义\r\ninterface OpenAPIBaseConfig {\r\n summary?: string;\r\n description?: string;\r\n tags?: string[];\r\n deprecated?: boolean;\r\n}\r\n\r\n// 请求参数配置\r\ninterface OpenAPIParameterConfig {\r\n name: string;\r\n in: 'query' | 'header' | 'path' | 'cookie';\r\n description?: string;\r\n required?: boolean;\r\n schema: {\r\n type: 'string' | 'number' | 'boolean' | 'object' | 'array';\r\n items?: any;\r\n properties?: Record<string, any>;\r\n };\r\n}\r\n\r\n// 响应配置\r\ninterface OpenAPIResponseConfig {\r\n description: string;\r\n content?: {\r\n [key: string]: {\r\n schema: {\r\n type: string;\r\n properties?: Record<string, any>;\r\n items?: any;\r\n description?: string;\r\n };\r\n };\r\n };\r\n}\r\n\r\n// 完整的 OpenAPI 配置接口\r\nexport interface OpenAPIConfig extends OpenAPIBaseConfig {\r\n parameters?: OpenAPIParameterConfig[];\r\n requestBody?: {\r\n required?: boolean;\r\n content: {\r\n [key: string]: {\r\n schema: {\r\n type: string;\r\n properties?: Record<string, any>;\r\n items?: any;\r\n [key: string]: any; // 其他属性\r\n };\r\n };\r\n };\r\n };\r\n responses?: {\r\n [statusCode: string]: OpenAPIResponseConfig;\r\n };\r\n}\r\n/**\r\n * OpenAPI 装饰器函数\r\n * @param config OpenAPI/Swagger 配置\r\n */\r\nexport function ApiDoc(config: OpenAPIConfig) {\r\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\r\n setMeta(target, propertyKey, undefined, {\r\n openapi: config\r\n })\r\n };\r\n}\r\n"],"mappings":"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","names":["setMeta","BaseParam","data","target","property","index","setMeta","Body","key","type","Head","toLowerCase","Query","Param","Arg","k","OneFile","ManyFiles","setMeta","Guard","guards","target","property","setMeta","undefined","Addon","addons","Filter","filter","Pipe","pipe","index","BaseParam","setMeta","Route","route","type","target","property","setMeta","undefined","http","Header","headers","Get","Post","Put","Search","Patch","Delete","Controller","prefix","controller","setMeta","Queue","queue","isEvent","target","property","setMeta","undefined","rpc","Rpc","controller","SHARE_KEY","setMeta","Ctx","target","property","setMeta","SHARE_KEY","undefined","ctxs","Define","key","value","index","params","define","setMeta","ApiDoc","config","target","propertyKey","descriptor","setMeta","undefined","openapi"]}
@@ -1,9 +1,10 @@
1
1
  import {
2
- IS_DEV,
2
+ HMR,
3
3
  IS_ONLY_GENERATE,
4
+ PS_EXIT_CODE,
4
5
  __name,
5
6
  log
6
- } from "./chunk-YKP4ODZA.mjs";
7
+ } from "./chunk-MDPW6WGF.mjs";
7
8
 
8
9
  // src/meta.ts
9
10
  var Meta = class {
@@ -21,7 +22,7 @@ var Meta = class {
21
22
  // src/core.ts
22
23
  import "reflect-metadata";
23
24
  import EventEmitter from "node:events";
24
- import { getInject, getMergedMeta, getMetaKey, getMetaParams, getTag, invokeInit, invokeUnmount, isPhecda, setInject } from "phecda-core";
25
+ import { getInject, getMergedMeta, getMetaKey, getMetaParams, getTag, invokeInit, invokeUnmount, setInject } from "phecda-core";
25
26
  import Debug from "debug";
26
27
  var debug = Debug("phecda-server(Factory)");
27
28
  var emitter = new EventEmitter();
@@ -61,63 +62,30 @@ var ServerPhecda = class {
61
62
  }
62
63
  async start(models) {
63
64
  for (const model of models) await this.buildDepModule(model);
64
- const generateCode = /* @__PURE__ */ __name(async () => {
65
- if (IS_DEV) {
66
- return Promise.all(this.generators.map((generator) => {
67
- debug(`generate "${generator.name}" code to ${generator.path}`);
68
- return generator.output(this.meta);
69
- }));
65
+ this.hmr();
66
+ this.generateCode().then(() => {
67
+ if (IS_ONLY_GENERATE) {
68
+ log("Only generate code");
69
+ process.exit(PS_EXIT_CODE.EXIT);
70
70
  }
71
- }, "generateCode");
72
- generateCode().then(() => {
73
- if (IS_ONLY_GENERATE) process.exit(4);
74
71
  });
75
- if (IS_DEV) {
76
- if (!globalThis.__PS_HMR__) globalThis.__PS_HMR__ = [];
77
- globalThis.__PS_HMR__?.push(async (files) => {
78
- debug("reload files ");
79
- for (const file of files) {
80
- const models2 = await import(file);
81
- for (const i in models2) {
82
- if (isPhecda(models2[i])) await this.add(models2[i]);
83
- }
84
- }
85
- generateCode();
86
- });
87
- }
88
- }
89
- async add(Model) {
90
- const tag = getTag(Model);
91
- const oldInstance = await this.del(tag);
92
- const { module: newModule } = await this.buildDepModule(Model);
93
- if (oldInstance && this.dependenceGraph.has(tag)) {
94
- debug(`replace module "${String(tag)}"`);
95
- [
96
- ...this.dependenceGraph.get(tag)
97
- ].forEach((tag2) => {
98
- const module = this.moduleMap.get(tag2);
99
- for (const key in module) {
100
- if (module[key] === oldInstance) module[key] = newModule;
101
- }
102
- });
103
- }
104
72
  }
105
- async del(tag) {
106
- if (!this.moduleMap.has(tag)) return;
107
- const module = this.moduleMap.get(tag);
108
- debug(`unmount module "${String(tag)}"`);
109
- await invokeUnmount(module);
110
- debug(`del module "${String(tag)}"`);
111
- this.moduleMap.delete(tag);
112
- this.modelMap.delete(module);
113
- for (let i = this.meta.length - 1; i >= 0; i--) {
114
- if (this.meta[i].data.tag === tag) this.meta.splice(i, 1);
115
- }
116
- return module;
73
+ generateCode = /* @__PURE__ */ __name(async () => {
74
+ return Promise.all(this.generators.map((generator) => {
75
+ debug(`generate "${generator.name}" code to ${generator.path}`);
76
+ return generator.output(this.meta);
77
+ }));
78
+ }, "generateCode");
79
+ hmr() {
80
+ HMR(async (oldModels, newModels) => {
81
+ debug("reload models ");
82
+ await this.replace(oldModels, newModels);
83
+ this.generateCode();
84
+ });
117
85
  }
118
86
  async destroy() {
119
87
  debug("destroy all");
120
- for (const [tag] of this.moduleMap) await this.del(tag);
88
+ this.replace(Object.values(this.modelMap), []);
121
89
  }
122
90
  createProxyModule(tag) {
123
91
  const that = this;
@@ -133,6 +101,9 @@ var ServerPhecda = class {
133
101
  has(_target, prop) {
134
102
  return Reflect.has(that.moduleMap.get(tag), prop);
135
103
  },
104
+ ownKeys() {
105
+ return Reflect.ownKeys(that.moduleMap.get(tag));
106
+ },
136
107
  getPrototypeOf() {
137
108
  return Reflect.getPrototypeOf(that.moduleMap.get(tag));
138
109
  },
@@ -189,6 +160,42 @@ var ServerPhecda = class {
189
160
  tag
190
161
  };
191
162
  }
163
+ async replace(oldModels, newModels) {
164
+ const oldModules = (await Promise.all(oldModels.map(async (model) => {
165
+ const tag = getTag(model);
166
+ if (!this.has(tag)) return;
167
+ const module = this.moduleMap.get(tag);
168
+ debug(`unmount module "${String(tag)}"`);
169
+ await invokeUnmount(module);
170
+ debug(`del module "${String(tag)}"`);
171
+ this.moduleMap.delete(tag);
172
+ this.modelMap.delete(module);
173
+ for (let i = this.meta.length - 1; i >= 0; i--) {
174
+ if (this.meta[i].data.tag === tag) this.meta.splice(i, 1);
175
+ }
176
+ return module;
177
+ }))).filter((item) => item);
178
+ for (const model of newModels) {
179
+ debug(`mount module: ${model.name}`);
180
+ await this.buildDepModule(model);
181
+ }
182
+ debug("replace old modules");
183
+ for (const module of oldModules) {
184
+ const tag = getTag(module);
185
+ if (this.dependenceGraph.has(tag)) {
186
+ [
187
+ ...this.dependenceGraph.get(tag)
188
+ ].forEach((depTag) => {
189
+ const depModule = this.moduleMap.get(depTag);
190
+ if (depModule) {
191
+ for (const key in depModule) {
192
+ if (depModule[key] === module) depModule[key] = this.moduleMap.get(tag);
193
+ }
194
+ }
195
+ });
196
+ }
197
+ }
198
+ }
192
199
  has(modelOrTag) {
193
200
  return this.moduleMap.has(typeof modelOrTag === "function" ? getTag(modelOrTag) : modelOrTag);
194
201
  }
@@ -197,6 +204,9 @@ var ServerPhecda = class {
197
204
  if (!this.has(tag)) throw new Error(`module "${tag.toString()}" doesn't exist`);
198
205
  return this.moduleMap.get(tag);
199
206
  }
207
+ getModel(tag) {
208
+ return this.modelMap.get(this.get(tag));
209
+ }
200
210
  };
201
211
  async function Factory(models, opts = {}) {
202
212
  const phecda = new ServerPhecda(opts);
@@ -293,3 +303,4 @@ export {
293
303
  Factory,
294
304
  useS
295
305
  };
306
+ //# sourceMappingURL=chunk-WTJKTICN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meta.ts","../src/core.ts"],"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 rpc?: {\r\n queue?: string\r\n isEvent?: boolean\r\n }\r\n ctxs?: string[]\r\n params: { type: string; index: number; key: string; pipe?: string; define: Record<string, any> }[]\r\n guards: string[]\r\n pipe?: string\r\n filter?: string\r\n addons: string[]\r\n\r\n}\r\n\r\nexport type MetaData = ControllerMetaData | ServiceMetaData\r\n\r\nexport class Meta {\r\n constructor(public data: MetaData, public paramsType: any[]) {\r\n\r\n }\r\n}\r\n\r\nexport interface ControllerMeta extends Meta {\r\n data: ControllerMetaData\r\n}\r\n","import 'reflect-metadata'\r\nimport EventEmitter from 'node:events'\r\nimport type { Construct, Phecda, WatcherParam } from 'phecda-core'\r\nimport { getInject, getMergedMeta, getMetaKey, getMetaParams, getTag, invokeInit, invokeUnmount, setInject } from 'phecda-core'\r\nimport Debug from 'debug'\r\nimport type { Emitter } from './types'\r\nimport type { MetaData } from './meta'\r\nimport { Meta } from './meta'\r\nimport { log } from './utils'\r\nimport { IS_ONLY_GENERATE, PS_EXIT_CODE } from './common'\r\nimport type { Generator } from './generator'\r\nimport { HMR } from './hmr'\r\n\r\nconst debug = Debug('phecda-server(Factory)')\r\n// TODO: support both emitter types and origin emitter type in future\r\nexport const emitter: Emitter = new EventEmitter() as any\r\nexport interface Options {\r\n parseModule?: (module: any) => any\r\n parseMeta?: (meta: Meta) => Meta | null | undefined\r\n generators?: Generator[]\r\n namespace?: string\r\n\r\n}\r\n\r\nexport function defaultServerInject() {\r\n if (!getInject('watcher')) {\r\n setInject('watcher', ({ eventName, instance, property, options }: WatcherParam) => {\r\n const fn = typeof instance[property] === 'function' ? instance[property].bind(instance) : (v: any) => instance[property] = v\r\n\r\n if (options?.once)\r\n (emitter as any).once(eventName, fn)\r\n\r\n else\r\n (emitter as any).on(eventName, fn)\r\n\r\n return () => {\r\n (emitter as any).off(eventName, fn)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const phecdaNamespace = new Map<string, ServerPhecda>()\r\n\r\nexport class ServerPhecda {\r\n moduleMap = new Map<PropertyKey, InstanceType<Construct>>()\r\n meta: Meta[] = []\r\n modelMap = new WeakMap<InstanceType<Construct>, Construct>()\r\n modelSet = new WeakSet<Construct>()\r\n dependenceGraph = new Map<PropertyKey, Set<PropertyKey>>()\r\n parseModule: (module: any) => any\r\n parseMeta: (meta: Meta) => Meta | null | undefined\r\n generators: Generator[]\r\n constructor(options: Options) {\r\n defaultServerInject()\r\n const { namespace = 'default', parseModule = (module: any) => module, parseMeta = (meta: any) => meta, generators = [] } = options\r\n phecdaNamespace.set(namespace, this)\r\n this.parseMeta = parseMeta\r\n this.parseModule = parseModule\r\n this.generators = generators\r\n }\r\n\r\n async start(models: Construct[]) {\r\n for (const model of models)\r\n await this.buildDepModule(model)\r\n\r\n this.hmr()\r\n this.generateCode().then(() => {\r\n if (IS_ONLY_GENERATE) {\r\n log('Only generate code')\r\n process.exit(PS_EXIT_CODE.EXIT)// only output code/work for ci\r\n }\r\n })\r\n }\r\n\r\n generateCode = async () => {\r\n return Promise.all(this.generators.map((generator) => {\r\n debug(`generate \"${generator.name}\" code to ${generator.path}`)\r\n\r\n return generator.output(this.meta)\r\n }))\r\n }\r\n\r\n hmr() {\r\n HMR(async (oldModels, newModels) => {\r\n debug('reload models ')\r\n\r\n await this.replace(oldModels, newModels)\r\n\r\n this.generateCode()\r\n })\r\n }\r\n\r\n\r\n async destroy() {\r\n debug('destroy all')\r\n\r\n this.replace(Object.values(this.modelMap), [])\r\n }\r\n\r\n createProxyModule(tag: PropertyKey) {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const that = this\r\n return new Proxy({}, {\r\n get(_target, prop) {\r\n const module = that.moduleMap.get(tag)\r\n return Reflect.get(module, prop, module)\r\n },\r\n set(_target, prop, newValue) {\r\n const module = that.moduleMap.get(tag)\r\n\r\n return Reflect.set(module, prop, newValue, module)\r\n },\r\n has(_target, prop) {\r\n return Reflect.has(that.moduleMap.get(tag), prop)\r\n },\r\n ownKeys() {\r\n return Reflect.ownKeys(that.moduleMap.get(tag))\r\n },\r\n getPrototypeOf() {\r\n return Reflect.getPrototypeOf(that.moduleMap.get(tag))\r\n },\r\n getOwnPropertyDescriptor(_target, prop) {\r\n return Reflect.getOwnPropertyDescriptor(that.moduleMap.get(tag), prop)\r\n },\r\n })\r\n }\r\n\r\n protected async buildDepModule(Model: Construct) {\r\n const paramtypes = getParamTypes(Model) as Construct[]\r\n let module: InstanceType<Construct>\r\n const tag = getTag(Model)\r\n\r\n if (this.moduleMap.has(tag)) {\r\n module = this.moduleMap.get(tag)\r\n if (!module) {\r\n log(`Exist Circular-Dependency or Multiple modules with the same tag [${String(tag)}]`, 'warn')\r\n return { module: this.createProxyModule(tag), tag }\r\n }\r\n if (this.modelMap.get(module) !== Model && !this.modelSet.has(Model)) {\r\n this.modelSet.add(Model)// a module will only warn once\r\n\r\n if (module instanceof Model)\r\n log(`Module taged ${String(tag)} has been overridden`)// legal override\r\n else\r\n log(`Synonym module: Module taged \"${String(tag)}\" has been loaded before, so phecda-server won't load Module \"${Model.name}\"`, 'warn')\r\n }\r\n return { module, tag }\r\n }\r\n this.moduleMap.set(tag, undefined)\r\n debug(`instantiate module \"${String(tag)}\"`)\r\n\r\n if (paramtypes) {\r\n const paramtypesInstances = [] as any[]\r\n for (const i in paramtypes) {\r\n const { module: sub, tag: subTag } = await this.buildDepModule(paramtypes[i])\r\n paramtypesInstances[i] = sub\r\n if (!this.dependenceGraph.has(subTag))\r\n this.dependenceGraph.set(subTag, new Set())\r\n this.dependenceGraph.get(subTag)!.add(tag)\r\n }\r\n\r\n module = this.parseModule(new Model(...paramtypesInstances))\r\n }\r\n else {\r\n module = this.parseModule(new Model())\r\n }\r\n this.meta.push(...getMetaFromInstance(module, tag, Model.name).map(this.parseMeta).filter(item => !!item))\r\n\r\n debug(`init module \"${String(tag)}\"`)\r\n\r\n if (!IS_ONLY_GENERATE)// ??\r\n\r\n await invokeInit(module)\r\n\r\n debug(`add module \"${String(tag)}\"`)\r\n\r\n this.moduleMap.set(tag, module)\r\n this.modelMap.set(module, Model)\r\n return { module, tag }\r\n }\r\n\r\n async replace(oldModels: Construct[], newModels: Construct[]) {\r\n const oldModules = (await Promise.all(oldModels.map(async (model) => {\r\n const tag = getTag(model)\r\n if (!this.has(tag))\r\n return\r\n const module = this.moduleMap.get(tag)\r\n\r\n debug(`unmount module \"${String(tag)}\"`)\r\n await invokeUnmount(module)\r\n debug(`del module \"${String(tag)}\"`)\r\n\r\n this.moduleMap.delete(tag)\r\n this.modelMap.delete(module)\r\n for (let i = this.meta.length - 1; i >= 0; i--) {\r\n if (this.meta[i].data.tag === tag)\r\n this.meta.splice(i, 1)\r\n }\r\n return module\r\n }))).filter(item => item)\r\n\r\n for (const model of newModels) {\r\n debug(`mount module: ${model.name}`)\r\n await this.buildDepModule(model)\r\n }\r\n\r\n debug('replace old modules')\r\n\r\n for (const module of oldModules) {\r\n const tag = getTag(module)\r\n if (this.dependenceGraph.has(tag)) {\r\n [...this.dependenceGraph.get(tag)!].forEach((depTag) => {\r\n const depModule = this.moduleMap.get(depTag)\r\n\r\n if (depModule) {\r\n for (const key in depModule) {\r\n if (depModule[key] === module)\r\n depModule[key] = this.moduleMap.get(tag)\r\n }\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n has(modelOrTag: Construct | PropertyKey) {\r\n return this.moduleMap.has(typeof modelOrTag === 'function' ? getTag(modelOrTag) : modelOrTag)\r\n }\r\n\r\n get<Model extends Construct>(modelOrTag: Model | PropertyKey): InstanceType<Model> {\r\n const tag = typeof modelOrTag === 'function' ? getTag(modelOrTag) : modelOrTag\r\n if (!this.has(tag))\r\n throw new Error(`module \"${tag.toString()}\" doesn't exist`)\r\n return this.moduleMap.get(tag)\r\n }\r\n getModel(tag: PropertyKey) {\r\n return this.modelMap.get(this.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"],"mappings":"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","names":["Meta","constructor","data","paramsType","EventEmitter","getInject","getMergedMeta","getMetaKey","getMetaParams","getTag","invokeInit","invokeUnmount","setInject","Debug","debug","Debug","emitter","EventEmitter","defaultServerInject","getInject","setInject","eventName","instance","property","options","fn","bind","v","once","on","off","phecdaNamespace","Map","ServerPhecda","moduleMap","meta","modelMap","WeakMap","modelSet","WeakSet","dependenceGraph","parseModule","parseMeta","generators","constructor","namespace","module","set","start","models","model","buildDepModule","hmr","generateCode","then","IS_ONLY_GENERATE","log","process","exit","PS_EXIT_CODE","EXIT","Promise","all","map","generator","name","path","output","HMR","oldModels","newModels","replace","destroy","Object","values","createProxyModule","tag","that","Proxy","get","_target","prop","Reflect","newValue","has","ownKeys","getPrototypeOf","getOwnPropertyDescriptor","Model","paramtypes","getParamTypes","getTag","String","add","undefined","paramtypesInstances","i","sub","subTag","Set","push","getMetaFromInstance","filter","item","invokeInit","oldModules","invokeUnmount","delete","length","data","splice","forEach","depTag","depModule","key","modelOrTag","Error","toString","getModel","Factory","opts","phecda","useS","nsOrModel","serverPhecda","propertyKeys","getMetaKey","baseMeta","getMergedMeta","ctxs","metaData","func","controller","params","getMetaParams","index","pipe","define","part","Meta","deepFreeze","object","freeze","getOwnPropertyNames","isFrozen","paramTypes","getMetadata"]}
@@ -1,12 +1,12 @@
1
1
  import { Construct } from 'phecda-core';
2
- import { b as MetaData, M as Meta, E as Emitter } from './meta-B_HW7cWh.js';
2
+ import { M as Meta, E as Emitter } from './meta-BoS1E-Nz.js';
3
3
 
4
4
  declare abstract class Generator {
5
5
  private _path;
6
6
  constructor(path?: string);
7
7
  abstract name: string;
8
8
  get path(): string;
9
- abstract generateCode(meta: MetaData[]): string;
9
+ abstract generateCode(meta: Meta[]): string;
10
10
  output(meta: Meta[]): Promise<void>;
11
11
  }
12
12
 
@@ -30,14 +30,15 @@ declare class ServerPhecda {
30
30
  generators: Generator[];
31
31
  constructor(options: Options);
32
32
  start(models: Construct[]): Promise<void>;
33
- add(Model: Construct): Promise<void>;
34
- del(tag: PropertyKey): Promise<any>;
33
+ generateCode: () => Promise<void[]>;
34
+ hmr(): void;
35
35
  destroy(): Promise<void>;
36
36
  createProxyModule(tag: PropertyKey): {};
37
37
  protected buildDepModule(Model: Construct): Promise<{
38
38
  module: any;
39
39
  tag: PropertyKey;
40
40
  }>;
41
+ replace(oldModels: Construct[], newModels: Construct[]): Promise<void>;
41
42
  has(modelOrTag: Construct | PropertyKey): boolean;
42
43
  get<Model extends Construct>(modelOrTag: Model | PropertyKey): InstanceType<Model>;
43
44
  }
@@ -1,12 +1,12 @@
1
1
  import { Construct } from 'phecda-core';
2
- import { b as MetaData, M as Meta, E as Emitter } from './meta-B_HW7cWh.mjs';
2
+ import { M as Meta, E as Emitter } from './meta-BoS1E-Nz.mjs';
3
3
 
4
4
  declare abstract class Generator {
5
5
  private _path;
6
6
  constructor(path?: string);
7
7
  abstract name: string;
8
8
  get path(): string;
9
- abstract generateCode(meta: MetaData[]): string;
9
+ abstract generateCode(meta: Meta[]): string;
10
10
  output(meta: Meta[]): Promise<void>;
11
11
  }
12
12
 
@@ -30,14 +30,15 @@ declare class ServerPhecda {
30
30
  generators: Generator[];
31
31
  constructor(options: Options);
32
32
  start(models: Construct[]): Promise<void>;
33
- add(Model: Construct): Promise<void>;
34
- del(tag: PropertyKey): Promise<any>;
33
+ generateCode: () => Promise<void[]>;
34
+ hmr(): void;
35
35
  destroy(): Promise<void>;
36
36
  createProxyModule(tag: PropertyKey): {};
37
37
  protected buildDepModule(Model: Construct): Promise<{
38
38
  module: any;
39
39
  tag: PropertyKey;
40
40
  }>;
41
+ replace(oldModels: Construct[], newModels: Construct[]): Promise<void>;
41
42
  has(modelOrTag: Construct | PropertyKey): boolean;
42
43
  get<Model extends Construct>(modelOrTag: Model | PropertyKey): InstanceType<Model>;
43
44
  }
@@ -0,0 +1,50 @@
1
+ import { Construct } from 'phecda-core';
2
+ import { M as Meta, E as Emitter } from './meta-BoS1E-Nz.mjs';
3
+
4
+ declare abstract class Generator {
5
+ private _path;
6
+ constructor(path?: string);
7
+ abstract name: string;
8
+ get path(): string;
9
+ abstract generateCode(meta: Meta[]): string;
10
+ output(meta: Meta[]): Promise<void>;
11
+ }
12
+
13
+ declare const emitter: Emitter;
14
+ interface Options {
15
+ parseModule?: (module: any) => any;
16
+ parseMeta?: (meta: Meta) => Meta | null | undefined;
17
+ generators?: Generator[];
18
+ namespace?: string;
19
+ }
20
+ declare function defaultServerInject(): void;
21
+ declare const phecdaNamespace: Map<string, ServerPhecda>;
22
+ declare class ServerPhecda {
23
+ moduleMap: Map<PropertyKey, any>;
24
+ meta: Meta[];
25
+ modelMap: WeakMap<any, Construct>;
26
+ modelSet: WeakSet<Construct>;
27
+ dependenceGraph: Map<PropertyKey, Set<PropertyKey>>;
28
+ parseModule: (module: any) => any;
29
+ parseMeta: (meta: Meta) => Meta | null | undefined;
30
+ generators: Generator[];
31
+ constructor(options: Options);
32
+ start(models: Construct[]): Promise<void>;
33
+ generateCode: () => Promise<void[]>;
34
+ hmr(): void;
35
+ destroy(): Promise<void>;
36
+ createProxyModule(tag: PropertyKey): {};
37
+ protected buildDepModule(Model: Construct): Promise<{
38
+ module: any;
39
+ tag: PropertyKey;
40
+ }>;
41
+ replace(oldModels: Construct[], newModels: Construct[]): Promise<void>;
42
+ has(modelOrTag: Construct | PropertyKey): boolean;
43
+ get<Model extends Construct>(modelOrTag: Model | PropertyKey): InstanceType<Model>;
44
+ getModel(tag: PropertyKey): Construct | undefined;
45
+ }
46
+ declare function Factory(models: Construct[], opts?: Options): Promise<ServerPhecda>;
47
+ declare function useS<Model extends Construct>(model: Model, namespace?: string): InstanceType<Model>;
48
+ declare function useS(namespace?: string): ServerPhecda;
49
+
50
+ export { Factory as F, Generator as G, type Options as O, ServerPhecda as S, defaultServerInject as d, emitter as e, phecdaNamespace as p, useS as u };
@@ -0,0 +1,50 @@
1
+ import { Construct } from 'phecda-core';
2
+ import { M as Meta, E as Emitter } from './meta-BoS1E-Nz.js';
3
+
4
+ declare abstract class Generator {
5
+ private _path;
6
+ constructor(path?: string);
7
+ abstract name: string;
8
+ get path(): string;
9
+ abstract generateCode(meta: Meta[]): string;
10
+ output(meta: Meta[]): Promise<void>;
11
+ }
12
+
13
+ declare const emitter: Emitter;
14
+ interface Options {
15
+ parseModule?: (module: any) => any;
16
+ parseMeta?: (meta: Meta) => Meta | null | undefined;
17
+ generators?: Generator[];
18
+ namespace?: string;
19
+ }
20
+ declare function defaultServerInject(): void;
21
+ declare const phecdaNamespace: Map<string, ServerPhecda>;
22
+ declare class ServerPhecda {
23
+ moduleMap: Map<PropertyKey, any>;
24
+ meta: Meta[];
25
+ modelMap: WeakMap<any, Construct>;
26
+ modelSet: WeakSet<Construct>;
27
+ dependenceGraph: Map<PropertyKey, Set<PropertyKey>>;
28
+ parseModule: (module: any) => any;
29
+ parseMeta: (meta: Meta) => Meta | null | undefined;
30
+ generators: Generator[];
31
+ constructor(options: Options);
32
+ start(models: Construct[]): Promise<void>;
33
+ generateCode: () => Promise<void[]>;
34
+ hmr(): void;
35
+ destroy(): Promise<void>;
36
+ createProxyModule(tag: PropertyKey): {};
37
+ protected buildDepModule(Model: Construct): Promise<{
38
+ module: any;
39
+ tag: PropertyKey;
40
+ }>;
41
+ replace(oldModels: Construct[], newModels: Construct[]): Promise<void>;
42
+ has(modelOrTag: Construct | PropertyKey): boolean;
43
+ get<Model extends Construct>(modelOrTag: Model | PropertyKey): InstanceType<Model>;
44
+ getModel(tag: PropertyKey): Construct | undefined;
45
+ }
46
+ declare function Factory(models: Construct[], opts?: Options): Promise<ServerPhecda>;
47
+ declare function useS<Model extends Construct>(model: Model, namespace?: string): InstanceType<Model>;
48
+ declare function useS(namespace?: string): ServerPhecda;
49
+
50
+ export { Factory as F, Generator as G, type Options as O, ServerPhecda as S, defaultServerInject as d, emitter as e, phecdaNamespace as p, useS as u };