phecda-server 5.0.2 → 5.1.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 (167) hide show
  1. package/README.md +10 -108
  2. package/bin/cli.mjs +189 -186
  3. package/bin/schema.json +55 -55
  4. package/dist/{chunk-F5YWXY5W.js → chunk-423JPSEB.js} +18 -17
  5. package/dist/chunk-423JPSEB.js.map +1 -0
  6. package/dist/chunk-4R55T3HG.js +253 -0
  7. package/dist/chunk-4R55T3HG.js.map +1 -0
  8. package/dist/chunk-4YVAW3L4.mjs +76 -0
  9. package/dist/chunk-4YVAW3L4.mjs.map +1 -0
  10. package/dist/{chunk-W5EOVGQD.mjs → chunk-5DOVDDO7.mjs} +3 -2
  11. package/dist/chunk-5DOVDDO7.mjs.map +1 -0
  12. package/dist/{chunk-BXLBWRHS.js → chunk-5WQ2SMIK.js} +39 -38
  13. package/dist/chunk-5WQ2SMIK.js.map +1 -0
  14. package/dist/chunk-6MQP6OHU.mjs +295 -0
  15. package/dist/chunk-6MQP6OHU.mjs.map +1 -0
  16. package/dist/chunk-6Q2PCC3A.mjs +295 -0
  17. package/dist/chunk-6Q2PCC3A.mjs.map +1 -0
  18. package/dist/chunk-6UQYEBAN.js +253 -0
  19. package/dist/chunk-6UQYEBAN.js.map +1 -0
  20. package/dist/chunk-6W7CGOZC.mjs +565 -0
  21. package/dist/chunk-6W7CGOZC.mjs.map +1 -0
  22. package/dist/{chunk-YR5Q5F2K.js → chunk-7Y37NSBM.js} +1 -0
  23. package/dist/chunk-7Y37NSBM.js.map +1 -0
  24. package/dist/{chunk-RCTOVYZY.mjs → chunk-BQBSVGMG.mjs} +2 -1
  25. package/dist/chunk-BQBSVGMG.mjs.map +1 -0
  26. package/dist/chunk-BZP6GKM6.mjs +565 -0
  27. package/dist/chunk-BZP6GKM6.mjs.map +1 -0
  28. package/dist/{chunk-ITTD2GBR.mjs → chunk-C5JAHCS2.mjs} +1 -0
  29. package/dist/chunk-C5JAHCS2.mjs.map +1 -0
  30. package/dist/chunk-DTBKDALR.mjs +295 -0
  31. package/dist/chunk-DTBKDALR.mjs.map +1 -0
  32. package/dist/chunk-GHOKWS5V.js +295 -0
  33. package/dist/chunk-GHOKWS5V.js.map +1 -0
  34. package/dist/chunk-H4N6SHNG.mjs +76 -0
  35. package/dist/chunk-H4N6SHNG.mjs.map +1 -0
  36. package/dist/chunk-ICYHM4UM.js +565 -0
  37. package/dist/chunk-ICYHM4UM.js.map +1 -0
  38. package/dist/chunk-LOLXPM4J.mjs +529 -0
  39. package/dist/chunk-LOLXPM4J.mjs.map +1 -0
  40. package/dist/chunk-MSS6A2TU.js +585 -0
  41. package/dist/chunk-MSS6A2TU.js.map +1 -0
  42. package/dist/{chunk-AB4OX3WV.mjs → chunk-NEM3FY7C.mjs} +2 -1
  43. package/dist/chunk-NEM3FY7C.mjs.map +1 -0
  44. package/dist/chunk-OTHER3YM.mjs +253 -0
  45. package/dist/chunk-OTHER3YM.mjs.map +1 -0
  46. package/dist/chunk-Q2FYFIEY.js +295 -0
  47. package/dist/chunk-Q2FYFIEY.js.map +1 -0
  48. package/dist/chunk-QG4X6H5Y.js +565 -0
  49. package/dist/chunk-QG4X6H5Y.js.map +1 -0
  50. package/dist/chunk-QIEZ6YTG.mjs +295 -0
  51. package/dist/chunk-QIEZ6YTG.mjs.map +1 -0
  52. package/dist/chunk-QOAKHCM7.js +295 -0
  53. package/dist/chunk-QOAKHCM7.js.map +1 -0
  54. package/dist/chunk-QVUD6L5X.js +565 -0
  55. package/dist/chunk-QVUD6L5X.js.map +1 -0
  56. package/dist/{chunk-YERBWZCS.js → chunk-RGLTGKAU.js} +64 -63
  57. package/dist/chunk-RGLTGKAU.js.map +1 -0
  58. package/dist/chunk-SHRK3TVB.js +295 -0
  59. package/dist/chunk-SHRK3TVB.js.map +1 -0
  60. package/dist/chunk-TCH6S42Z.js +529 -0
  61. package/dist/chunk-TCH6S42Z.js.map +1 -0
  62. package/dist/chunk-UCGRFVHC.mjs +253 -0
  63. package/dist/chunk-UCGRFVHC.mjs.map +1 -0
  64. package/dist/chunk-VOISXWVF.mjs +295 -0
  65. package/dist/chunk-VOISXWVF.mjs.map +1 -0
  66. package/dist/chunk-W6BC5INO.mjs +295 -0
  67. package/dist/chunk-W6BC5INO.mjs.map +1 -0
  68. package/dist/chunk-X5WQRO4R.js +295 -0
  69. package/dist/chunk-X5WQRO4R.js.map +1 -0
  70. package/dist/chunk-XDMCVVD3.mjs +585 -0
  71. package/dist/chunk-XDMCVVD3.mjs.map +1 -0
  72. package/dist/chunk-XNTMYLK6.js +76 -0
  73. package/dist/chunk-XNTMYLK6.js.map +1 -0
  74. package/dist/chunk-Y6LI4FDO.js +537 -0
  75. package/dist/chunk-Y6LI4FDO.js.map +1 -0
  76. package/dist/chunk-YZ2AQ6IL.mjs +537 -0
  77. package/dist/chunk-YZ2AQ6IL.mjs.map +1 -0
  78. package/dist/chunk-Z4YJHEXT.js +76 -0
  79. package/dist/chunk-Z4YJHEXT.js.map +1 -0
  80. package/dist/chunk-ZE336SKZ.js +295 -0
  81. package/dist/chunk-ZE336SKZ.js.map +1 -0
  82. package/dist/chunk-ZJD235TO.mjs +565 -0
  83. package/dist/chunk-ZJD235TO.mjs.map +1 -0
  84. package/dist/core-39f27fe8.d.ts +131 -0
  85. package/dist/core-930ea883.d.ts +131 -0
  86. package/dist/core-eb646fe5.d.ts +139 -0
  87. package/dist/helper-06d25b37.d.ts +19 -0
  88. package/dist/helper-48454c0b.d.ts +20 -0
  89. package/dist/helper-6133f78f.d.ts +18 -0
  90. package/dist/helper-867a598d.d.ts +18 -0
  91. package/dist/helper-88b19c66.d.ts +12 -0
  92. package/dist/helper-9e206c66.d.ts +12 -0
  93. package/dist/helper-fcbf6aa8.d.ts +20 -0
  94. package/dist/index.d.ts +27 -32
  95. package/dist/index.js +45 -40
  96. package/dist/index.js.map +1 -0
  97. package/dist/index.mjs +15 -10
  98. package/dist/index.mjs.map +1 -0
  99. package/dist/rpc/bullmq/index.d.ts +10 -6
  100. package/dist/rpc/bullmq/index.js +33 -53
  101. package/dist/rpc/bullmq/index.js.map +1 -0
  102. package/dist/rpc/bullmq/index.mjs +27 -47
  103. package/dist/rpc/bullmq/index.mjs.map +1 -0
  104. package/dist/rpc/kafka/index.d.ts +10 -4
  105. package/dist/rpc/kafka/index.js +21 -37
  106. package/dist/rpc/kafka/index.js.map +1 -0
  107. package/dist/rpc/kafka/index.mjs +16 -32
  108. package/dist/rpc/kafka/index.mjs.map +1 -0
  109. package/dist/rpc/nats/index.d.ts +2 -2
  110. package/dist/rpc/nats/index.js +21 -34
  111. package/dist/rpc/nats/index.js.map +1 -0
  112. package/dist/rpc/nats/index.mjs +14 -27
  113. package/dist/rpc/nats/index.mjs.map +1 -0
  114. package/dist/rpc/rabbitmq/index.d.ts +2 -2
  115. package/dist/rpc/rabbitmq/index.js +24 -37
  116. package/dist/rpc/rabbitmq/index.js.map +1 -0
  117. package/dist/rpc/rabbitmq/index.mjs +15 -28
  118. package/dist/rpc/rabbitmq/index.mjs.map +1 -0
  119. package/dist/rpc/redis/index.d.ts +10 -4
  120. package/dist/rpc/redis/index.js +24 -37
  121. package/dist/rpc/redis/index.js.map +1 -0
  122. package/dist/rpc/redis/index.mjs +17 -30
  123. package/dist/rpc/redis/index.mjs.map +1 -0
  124. package/dist/server/elysia/index.d.ts +4 -3
  125. package/dist/server/elysia/index.js +78 -94
  126. package/dist/server/elysia/index.js.map +1 -0
  127. package/dist/server/elysia/index.mjs +75 -91
  128. package/dist/server/elysia/index.mjs.map +1 -0
  129. package/dist/server/express/index.d.ts +5 -4
  130. package/dist/server/express/index.js +80 -93
  131. package/dist/server/express/index.js.map +1 -0
  132. package/dist/server/express/index.mjs +78 -91
  133. package/dist/server/express/index.mjs.map +1 -0
  134. package/dist/server/fastify/index.d.ts +8 -5
  135. package/dist/server/fastify/index.js +84 -102
  136. package/dist/server/fastify/index.js.map +1 -0
  137. package/dist/server/fastify/index.mjs +80 -98
  138. package/dist/server/fastify/index.mjs.map +1 -0
  139. package/dist/server/h3/index.d.ts +5 -4
  140. package/dist/server/h3/index.js +82 -97
  141. package/dist/server/h3/index.js.map +1 -0
  142. package/dist/server/h3/index.mjs +81 -96
  143. package/dist/server/h3/index.mjs.map +1 -0
  144. package/dist/server/hono/index.d.ts +5 -4
  145. package/dist/server/hono/index.js +74 -90
  146. package/dist/server/hono/index.js.map +1 -0
  147. package/dist/server/hono/index.mjs +73 -89
  148. package/dist/server/hono/index.mjs.map +1 -0
  149. package/dist/server/hyper-express/index.d.ts +6 -5
  150. package/dist/server/hyper-express/index.js +79 -96
  151. package/dist/server/hyper-express/index.js.map +1 -0
  152. package/dist/server/hyper-express/index.mjs +78 -95
  153. package/dist/server/hyper-express/index.mjs.map +1 -0
  154. package/dist/server/koa/index.d.ts +5 -4
  155. package/dist/server/koa/index.js +80 -92
  156. package/dist/server/koa/index.js.map +1 -0
  157. package/dist/server/koa/index.mjs +77 -89
  158. package/dist/server/koa/index.mjs.map +1 -0
  159. package/dist/test.d.ts +1 -1
  160. package/dist/test.js +7 -6
  161. package/dist/test.js.map +1 -0
  162. package/dist/test.mjs +3 -2
  163. package/dist/test.mjs.map +1 -0
  164. package/package.json +8 -7
  165. package/register/index.mjs +40 -40
  166. package/register/loader.mjs +341 -340
  167. package/register/utils.mjs +81 -81
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkYR5Q5F2Kjs = require('./chunk-YR5Q5F2K.js');
6
+ var _chunkXNTMYLK6js = require('./chunk-XNTMYLK6.js');
7
7
 
8
8
  // src/meta.ts
9
9
  var Meta = class {
@@ -14,7 +14,7 @@ var Meta = class {
14
14
  this.paramsType = paramsType;
15
15
  }
16
16
  };
17
- _chunkYR5Q5F2Kjs.__name.call(void 0, Meta, "Meta");
17
+ _chunkXNTMYLK6js.__name.call(void 0, Meta, "Meta");
18
18
 
19
19
  // src/core.ts
20
20
  require('reflect-metadata');
@@ -29,7 +29,7 @@ async function Factory(models, opts = {}) {
29
29
  const constructorMap = /* @__PURE__ */ new Map();
30
30
  const constructorSet = /* @__PURE__ */ new WeakSet();
31
31
  const dependenceGraph = /* @__PURE__ */ new Map();
32
- const { parseModule = /* @__PURE__ */ _chunkYR5Q5F2Kjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunkYR5Q5F2Kjs.__name.call(void 0, (meta2) => meta2, "parseMeta"), generators } = opts;
32
+ const { parseModule = /* @__PURE__ */ _chunkXNTMYLK6js.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunkXNTMYLK6js.__name.call(void 0, (meta2) => meta2, "parseMeta"), generators } = opts;
33
33
  if (!_phecdacore.getInject.call(void 0, "watcher")) {
34
34
  _phecdacore.setInject.call(void 0, "watcher", ({ eventName, instance, key, options }) => {
35
35
  const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
@@ -57,13 +57,13 @@ async function Factory(models, opts = {}) {
57
57
  }
58
58
  return instance;
59
59
  }
60
- _chunkYR5Q5F2Kjs.__name.call(void 0, del, "del");
60
+ _chunkXNTMYLK6js.__name.call(void 0, del, "del");
61
61
  async function destroy() {
62
62
  debug("destroy all");
63
63
  for (const [tag] of moduleMap)
64
64
  await del(tag);
65
65
  }
66
- _chunkYR5Q5F2Kjs.__name.call(void 0, destroy, "destroy");
66
+ _chunkXNTMYLK6js.__name.call(void 0, destroy, "destroy");
67
67
  async function add(Model) {
68
68
  const tag = _phecdacore.getTag.call(void 0, Model);
69
69
  const oldInstance = await del(tag);
@@ -81,7 +81,7 @@ async function Factory(models, opts = {}) {
81
81
  });
82
82
  }
83
83
  }
84
- _chunkYR5Q5F2Kjs.__name.call(void 0, add, "add");
84
+ _chunkXNTMYLK6js.__name.call(void 0, add, "add");
85
85
  async function buildDepModule(Model) {
86
86
  const paramtypes = getParamTypes(Model);
87
87
  let instance;
@@ -92,7 +92,7 @@ async function Factory(models, opts = {}) {
92
92
  throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${String(tag)}--[module] ${Model}`);
93
93
  if (constructorMap.get(tag) !== Model && !constructorSet.has(Model)) {
94
94
  constructorSet.add(Model);
95
- _chunkYR5Q5F2Kjs.log.call(void 0, `Synonym module: Module taged "${String(tag)}" has been loaded before, so phecda-server won't load Module "${Model.name}"`, "warn");
95
+ _chunkXNTMYLK6js.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
96
  }
97
97
  return {
98
98
  instance,
@@ -116,7 +116,7 @@ async function Factory(models, opts = {}) {
116
116
  }
117
117
  meta.push(...getMetaFromInstance(instance, tag, Model.name).map(parseMeta).filter((item) => !!item));
118
118
  debug(`init module "${String(tag)}"`);
119
- if (!_chunkYR5Q5F2Kjs.IS_ONLY_GENERATE)
119
+ if (!_chunkXNTMYLK6js.IS_ONLY_GENERATE)
120
120
  await _phecdacore.invokeHandler.call(void 0, "init", instance);
121
121
  debug(`add module "${String(tag)}"`);
122
122
  moduleMap.set(tag, instance);
@@ -126,7 +126,7 @@ async function Factory(models, opts = {}) {
126
126
  tag
127
127
  };
128
128
  }
129
- _chunkYR5Q5F2Kjs.__name.call(void 0, buildDepModule, "buildDepModule");
129
+ _chunkXNTMYLK6js.__name.call(void 0, buildDepModule, "buildDepModule");
130
130
  for (const model of models)
131
131
  await buildDepModule(model);
132
132
  async function generateCode() {
@@ -137,12 +137,12 @@ async function Factory(models, opts = {}) {
137
137
  }));
138
138
  }
139
139
  }
140
- _chunkYR5Q5F2Kjs.__name.call(void 0, generateCode, "generateCode");
140
+ _chunkXNTMYLK6js.__name.call(void 0, generateCode, "generateCode");
141
141
  generateCode().then(() => {
142
- if (_chunkYR5Q5F2Kjs.IS_ONLY_GENERATE)
142
+ if (_chunkXNTMYLK6js.IS_ONLY_GENERATE)
143
143
  process.exit(4);
144
144
  });
145
- if (_chunkYR5Q5F2Kjs.IS_HMR) {
145
+ if (_chunkXNTMYLK6js.IS_HMR) {
146
146
  if (!globalThis.__PS_HMR__)
147
147
  globalThis.__PS_HMR__ = [];
148
148
  _optionalChain([globalThis, 'access', _2 => _2.__PS_HMR__, 'optionalAccess', _3 => _3.push, 'call', _4 => _4(async (files) => {
@@ -166,7 +166,7 @@ async function Factory(models, opts = {}) {
166
166
  destroy
167
167
  };
168
168
  }
169
- _chunkYR5Q5F2Kjs.__name.call(void 0, Factory, "Factory");
169
+ _chunkXNTMYLK6js.__name.call(void 0, Factory, "Factory");
170
170
  function getMetaFromInstance(instance, tag, name) {
171
171
  const vars = _phecdacore.getExposeKey.call(void 0, instance).filter((item) => typeof item === "string");
172
172
  const baseState = _phecdacore.getState.call(void 0, instance);
@@ -182,7 +182,7 @@ function getMetaFromInstance(instance, tag, name) {
182
182
  };
183
183
  if (baseState.controller) {
184
184
  if (typeof tag !== "string")
185
- _chunkYR5Q5F2Kjs.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
185
+ _chunkXNTMYLK6js.log.call(void 0, `can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
186
186
  initState(state);
187
187
  meta.ctx = ctx;
188
188
  meta.controller = baseState.controller;
@@ -228,11 +228,11 @@ function getMetaFromInstance(instance, tag, name) {
228
228
  return new Meta(meta, getParamTypes(instance, i) || []);
229
229
  });
230
230
  }
231
- _chunkYR5Q5F2Kjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
231
+ _chunkXNTMYLK6js.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
232
232
  function getParamTypes(Module, key) {
233
233
  return Reflect.getMetadata("design:paramtypes", Module, key);
234
234
  }
235
- _chunkYR5Q5F2Kjs.__name.call(void 0, getParamTypes, "getParamTypes");
235
+ _chunkXNTMYLK6js.__name.call(void 0, getParamTypes, "getParamTypes");
236
236
  function initState(state) {
237
237
  if (!state.define)
238
238
  state.define = {};
@@ -243,10 +243,11 @@ function initState(state) {
243
243
  if (!state.interceptors)
244
244
  state.interceptors = /* @__PURE__ */ new Set();
245
245
  }
246
- _chunkYR5Q5F2Kjs.__name.call(void 0, initState, "initState");
246
+ _chunkXNTMYLK6js.__name.call(void 0, initState, "initState");
247
247
 
248
248
 
249
249
 
250
250
 
251
251
 
252
252
  exports.Meta = Meta; exports.emitter = emitter; exports.Factory = Factory;
253
+ //# sourceMappingURL=chunk-423JPSEB.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,253 @@
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 _chunkZ4YJHEXTjs = require('./chunk-Z4YJHEXT.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
+ _chunkZ4YJHEXTjs.__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__ */ _chunkZ4YJHEXTjs.__name.call(void 0, (module) => module, "parseModule"), parseMeta = /* @__PURE__ */ _chunkZ4YJHEXTjs.__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
+ _chunkZ4YJHEXTjs.__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
+ _chunkZ4YJHEXTjs.__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
+ _chunkZ4YJHEXTjs.__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
+ _chunkZ4YJHEXTjs.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 (!_chunkZ4YJHEXTjs.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
+ _chunkZ4YJHEXTjs.__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
+ _chunkZ4YJHEXTjs.__name.call(void 0, generateCode, "generateCode");
141
+ generateCode().then(() => {
142
+ if (_chunkZ4YJHEXTjs.IS_ONLY_GENERATE)
143
+ process.exit(4);
144
+ });
145
+ if (_chunkZ4YJHEXTjs.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
+ _chunkZ4YJHEXTjs.__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
+ _chunkZ4YJHEXTjs.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
+ _chunkZ4YJHEXTjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
232
+ function getParamTypes(Module, key) {
233
+ return Reflect.getMetadata("design:paramtypes", Module, key);
234
+ }
235
+ _chunkZ4YJHEXTjs.__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
+ _chunkZ4YJHEXTjs.__name.call(void 0, initState, "initState");
247
+
248
+
249
+
250
+
251
+
252
+ exports.Meta = Meta; exports.emitter = emitter; exports.Factory = Factory;
253
+ //# sourceMappingURL=chunk-4R55T3HG.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,76 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
+ var __publicField = (obj, key, value) => {
5
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
+ return value;
7
+ };
8
+
9
+ // src/common.ts
10
+ var UNMOUNT_SYMBOL = "__PS_UNMOUNT__";
11
+ var ERROR_SYMBOL = "__PS_ERROR__";
12
+ var IS_HMR = process.env.NODE_ENV === "development";
13
+ var IS_ONLY_GENERATE = !!process.env.PS_GENERATE;
14
+ var IS_STRICT = !!process.env.PS_STRICT;
15
+ var LOG_LEVEL = Number(process.env.PS_LOG_LEVEL || 0);
16
+ var PS_EXIT_CODE;
17
+ (function(PS_EXIT_CODE2) {
18
+ PS_EXIT_CODE2[PS_EXIT_CODE2["RELAUNCH"] = 2] = "RELAUNCH";
19
+ PS_EXIT_CODE2[PS_EXIT_CODE2["CODE"] = 4] = "CODE";
20
+ })(PS_EXIT_CODE || (PS_EXIT_CODE = {}));
21
+
22
+ // src/utils.ts
23
+ import pc from "picocolors";
24
+ var time;
25
+ var internalLogger = console;
26
+ function setLogger(logger) {
27
+ internalLogger = logger;
28
+ }
29
+ __name(setLogger, "setLogger");
30
+ function log(msg, level = "log") {
31
+ const logLevel = {
32
+ info: 0,
33
+ log: 1,
34
+ warn: 2,
35
+ error: 3
36
+ }[level];
37
+ if (logLevel < LOG_LEVEL)
38
+ return;
39
+ const color = {
40
+ error: "red",
41
+ info: "gray",
42
+ warn: "yellow",
43
+ log: "green"
44
+ }[level];
45
+ const date = new Date();
46
+ const current = Date.now();
47
+ const interval = time && current - time ? `+${current - time}` : "";
48
+ time = current;
49
+ internalLogger[level](`${pc.magenta("[phecda-server]")} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)} ${pc.gray(interval)}`);
50
+ }
51
+ __name(log, "log");
52
+ function Mix(InternalClass, ExtendClass) {
53
+ return class extends InternalClass {
54
+ constructor(...args) {
55
+ super();
56
+ Object.assign(this, new ExtendClass(...args));
57
+ }
58
+ };
59
+ }
60
+ __name(Mix, "Mix");
61
+
62
+ export {
63
+ __name,
64
+ __publicField,
65
+ UNMOUNT_SYMBOL,
66
+ ERROR_SYMBOL,
67
+ IS_HMR,
68
+ IS_ONLY_GENERATE,
69
+ IS_STRICT,
70
+ LOG_LEVEL,
71
+ PS_EXIT_CODE,
72
+ setLogger,
73
+ log,
74
+ Mix
75
+ };
76
+ //# sourceMappingURL=chunk-4YVAW3L4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common.ts","../src/utils.ts"],"sourcesContent":["// export const MERGE_SYMBOL = '__PS_MERGE__'// is parallel request in http\r\nexport const UNMOUNT_SYMBOL = '__PS_UNMOUNT__'// property that include unmount callbacks\r\n// export const MODULE_SYMBOL = '__PS_MODULE__'// req[MODULE_SYMBOL]=modulemap\r\n// export const META_SYMBOL = '__PS_META__'// req[META_SYMBOL]=meta\r\n// export const PS_SYMBOL = '__PS__'// (app/router)[PS_SYMBOL]=Factory(...)\r\nexport const ERROR_SYMBOL = '__PS_ERROR__'// only use in paralle request\r\n\r\nexport const IS_HMR = process.env.NODE_ENV === 'development'\r\nexport const IS_ONLY_GENERATE = !!process.env.PS_GENERATE// work for ci; only generate code\r\nexport const IS_STRICT = !!process.env.PS_STRICT// throw error if depends on an aop module which is not imported\r\nexport const LOG_LEVEL = Number(process.env.PS_LOG_LEVEL || 0)// internal logger\r\n\r\nexport enum PS_EXIT_CODE {\r\n RELAUNCH = 2,\r\n CODE = 4,\r\n}\r\n","import pc from 'picocolors'\r\nimport type { AbConstruct, Construct } from 'phecda-core'\r\nimport { LOG_LEVEL } from './common'\r\n\r\nlet time: number\r\n\r\nlet internalLogger = console\r\n\r\nexport function setLogger(logger: typeof console) {\r\n internalLogger = logger\r\n}\r\n\r\nexport function log(msg: string, level: 'error' | 'info' | 'warn' | 'log' = 'log') {\r\n const logLevel = {\r\n info: 0,\r\n log: 1,\r\n warn: 2,\r\n error: 3,\r\n }[level]\r\n\r\n if (logLevel < LOG_LEVEL)\r\n return\r\n\r\n const color = ({ error: 'red', info: 'gray', warn: 'yellow', log: 'green' } as const)[level]\r\n const date = new Date()\r\n const current = Date.now()\r\n const interval = (time && current - time) ? `+${current - time}` : ''\r\n time = current\r\n\r\n internalLogger[level](`${pc.magenta('[phecda-server]')} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)} ${pc.gray(interval)}`)\r\n}\r\n\r\nexport function Mix<C1 extends Construct | AbConstruct, C2 extends Construct>(InternalClass: C1, ExtendClass: C2) {\r\n return class extends InternalClass {\r\n constructor(...args: any) {\r\n super()\r\n Object.assign(this, new ExtendClass(...args))\r\n }\r\n } as new (...args: ConstructorParameters<C2>) => InstanceType<C1> & InstanceType<C2>\r\n}\r\n"],"mappings":";;;;;;;;;AACO,IAAMA,iBAAiB;AAIvB,IAAMC,eAAe;AAErB,IAAMC,SAASC,QAAQC,IAAIC,aAAa;AACxC,IAAMC,mBAAmB,CAAC,CAACH,QAAQC,IAAIG;AACvC,IAAMC,YAAY,CAAC,CAACL,QAAQC,IAAIK;AAChC,IAAMC,YAAYC,OAAOR,QAAQC,IAAIQ,gBAAgB,CAAA;IAErD;UAAKC,eAAY;AAAZA,EAAAA,cAAAA,cACVC,cAAW,KAAXA;AADUD,EAAAA,cAAAA,cAEVE,UAAO,KAAPA;GAFUF,iBAAAA,eAAAA,CAAAA,EAAAA;;;ACZZ,OAAOG,QAAQ;AAIf,IAAIC;AAEJ,IAAIC,iBAAiBC;AAEd,SAASC,UAAUC,QAAwB;AAChDH,mBAAiBG;AACnB;AAFgBD;AAIT,SAASE,IAAIC,KAAaC,QAA2C,OAAO;AACjF,QAAMC,WAAW;IACfC,MAAM;IACNJ,KAAK;IACLK,MAAM;IACNC,OAAO;EACT,EAAEJ;AAEF,MAAIC,WAAWI;AACb;AAEF,QAAMC,QAAS;IAAEF,OAAO;IAAOF,MAAM;IAAQC,MAAM;IAAUL,KAAK;EAAQ,EAAYE;AACtF,QAAMO,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYlB,QAAQgB,UAAUhB,OAAQ,IAAIgB,UAAUhB,SAAS;AACnEA,SAAOgB;AAEPf,iBAAeM,OAAO,GAAGY,GAAGC,QAAQ,iBAAA,KAAsBD,GAAGE,KAAK,GAAGP,KAAKQ,SAAQ,KAAMR,KAAKS,WAAU,KAAMT,KAAKU,WAAU,GAAI,KAAKL,GAAGN,OAAOP,GAAAA,KAAQa,GAAGE,KAAKH,QAAAA,GAAW;AAC5K;AAlBgBb;AAoBT,SAASoB,IAA8DC,eAAmBC,aAAiB;AAChH,SAAO,cAAcD,cAAAA;IACnBE,eAAeC,MAAW;AACxB,YAAK;AACLC,aAAOC,OAAO,MAAM,IAAIJ,YAAAA,GAAeE,IAAAA,CAAAA;IACzC;EACF;AACF;AAPgBJ;","names":["UNMOUNT_SYMBOL","ERROR_SYMBOL","IS_HMR","process","env","NODE_ENV","IS_ONLY_GENERATE","PS_GENERATE","IS_STRICT","PS_STRICT","LOG_LEVEL","Number","PS_LOG_LEVEL","PS_EXIT_CODE","RELAUNCH","CODE","pc","time","internalLogger","console","setLogger","logger","log","msg","level","logLevel","info","warn","error","LOG_LEVEL","color","date","Date","current","now","interval","pc","magenta","gray","getHours","getMinutes","getSeconds","Mix","InternalClass","ExtendClass","constructor","args","Object","assign"]}
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  mergeObject,
3
3
  shallowClone
4
- } from "./chunk-AB4OX3WV.mjs";
4
+ } from "./chunk-NEM3FY7C.mjs";
5
5
  import {
6
6
  __name
7
- } from "./chunk-ITTD2GBR.mjs";
7
+ } from "./chunk-4YVAW3L4.mjs";
8
8
 
9
9
  // src/decorators/param.ts
10
10
  import { getState, setPropertyState } from "phecda-core";
@@ -292,3 +292,4 @@ export {
292
292
  Ctx,
293
293
  Define
294
294
  };
295
+ //# sourceMappingURL=chunk-5DOVDDO7.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/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"]}