phecda-server 4.0.0 → 4.0.2

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 (66) hide show
  1. package/dist/{chunk-FPN7NODB.mjs → chunk-AJ2HYENF.mjs} +13 -5
  2. package/dist/chunk-AJ2HYENF.mjs.map +1 -0
  3. package/dist/{chunk-UEH6FW5I.js → chunk-D3VS53JQ.js} +26 -23
  4. package/dist/chunk-D3VS53JQ.js.map +1 -0
  5. package/dist/{chunk-JGSJIKGN.js → chunk-FAHHXHL5.js} +3 -3
  6. package/dist/{chunk-HY6T4ZWQ.mjs → chunk-JQPX546Z.mjs} +2 -2
  7. package/dist/{chunk-62QDU5FJ.js → chunk-LZAU5FUS.js} +14 -6
  8. package/dist/chunk-LZAU5FUS.js.map +1 -0
  9. package/dist/{chunk-3PXRNECS.mjs → chunk-Q6T7HNEO.mjs} +69 -20
  10. package/dist/chunk-Q6T7HNEO.mjs.map +1 -0
  11. package/dist/{chunk-MFGAP3PV.mjs → chunk-WRMLZ7NU.mjs} +8 -5
  12. package/dist/{chunk-MFGAP3PV.mjs.map → chunk-WRMLZ7NU.mjs.map} +1 -1
  13. package/dist/{chunk-BP7CKHPK.js → chunk-YU7ROHTO.js} +96 -47
  14. package/dist/chunk-YU7ROHTO.js.map +1 -0
  15. package/dist/index.d.ts +30 -17
  16. package/dist/index.js +84 -47
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +55 -18
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/rpc/rabbitmq/index.js +12 -9
  21. package/dist/rpc/rabbitmq/index.js.map +1 -1
  22. package/dist/rpc/rabbitmq/index.mjs +9 -6
  23. package/dist/rpc/rabbitmq/index.mjs.map +1 -1
  24. package/dist/rpc/redis/index.js +12 -9
  25. package/dist/rpc/redis/index.js.map +1 -1
  26. package/dist/rpc/redis/index.mjs +9 -6
  27. package/dist/rpc/redis/index.mjs.map +1 -1
  28. package/dist/server/express/index.js +27 -23
  29. package/dist/server/express/index.js.map +1 -1
  30. package/dist/server/express/index.mjs +11 -7
  31. package/dist/server/express/index.mjs.map +1 -1
  32. package/dist/server/fastify/index.js +24 -20
  33. package/dist/server/fastify/index.js.map +1 -1
  34. package/dist/server/fastify/index.mjs +11 -7
  35. package/dist/server/fastify/index.mjs.map +1 -1
  36. package/dist/server/h3/index.js +27 -23
  37. package/dist/server/h3/index.js.map +1 -1
  38. package/dist/server/h3/index.mjs +11 -7
  39. package/dist/server/h3/index.mjs.map +1 -1
  40. package/dist/server/koa/index.d.ts +22 -0
  41. package/dist/server/koa/index.js +193 -0
  42. package/dist/server/koa/index.js.map +1 -0
  43. package/dist/server/koa/index.mjs +193 -0
  44. package/dist/server/koa/index.mjs.map +1 -0
  45. package/dist/test.js +7 -9
  46. package/dist/test.js.map +1 -1
  47. package/dist/test.mjs +4 -6
  48. package/dist/test.mjs.map +1 -1
  49. package/package.json +10 -2
  50. package/register/index.mjs +1 -1
  51. package/register/loader.mjs +0 -1
  52. package/dist/chunk-3PXRNECS.mjs.map +0 -1
  53. package/dist/chunk-62QDU5FJ.js.map +0 -1
  54. package/dist/chunk-BP7CKHPK.js.map +0 -1
  55. package/dist/chunk-FPN7NODB.mjs.map +0 -1
  56. package/dist/chunk-IIGNGFDC.js +0 -47
  57. package/dist/chunk-IIGNGFDC.js.map +0 -1
  58. package/dist/chunk-Q4FA4TAV.mjs +0 -47
  59. package/dist/chunk-Q4FA4TAV.mjs.map +0 -1
  60. package/dist/chunk-UEH6FW5I.js.map +0 -1
  61. package/dist/supertest-G6LTYS5C.js +0 -21969
  62. package/dist/supertest-G6LTYS5C.js.map +0 -1
  63. package/dist/supertest-NLMK5OIC.mjs +0 -21969
  64. package/dist/supertest-NLMK5OIC.mjs.map +0 -1
  65. /package/dist/{chunk-JGSJIKGN.js.map → chunk-FAHHXHL5.js.map} +0 -0
  66. /package/dist/{chunk-HY6T4ZWQ.mjs.map → chunk-JQPX546Z.mjs.map} +0 -0
@@ -1,6 +1,10 @@
1
- import {
2
- __name
3
- } from "./chunk-Q4FA4TAV.mjs";
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
+ };
4
8
 
5
9
  // src/common.ts
6
10
  var MERGE_SYMBOL = "__PS_MERGE__";
@@ -9,6 +13,7 @@ var MODULE_SYMBOL = "__PS_MODULE__";
9
13
  var META_SYMBOL = "__PS_META__";
10
14
  var APP_SYMBOL = "__PS__";
11
15
  var IS_DEV = process.env.NODE_ENV === "development";
16
+ var IS_STRICT = !!process.env.PS_STRICT;
12
17
 
13
18
  // src/utils.ts
14
19
  import pc from "picocolors";
@@ -24,12 +29,15 @@ function log(msg, level = "info") {
24
29
  __name(log, "log");
25
30
 
26
31
  export {
32
+ __name,
33
+ __publicField,
27
34
  log,
28
35
  MERGE_SYMBOL,
29
36
  UNMOUNT_SYMBOL,
30
37
  MODULE_SYMBOL,
31
38
  META_SYMBOL,
32
39
  APP_SYMBOL,
33
- IS_DEV
40
+ IS_DEV,
41
+ IS_STRICT
34
42
  };
35
- //# sourceMappingURL=chunk-FPN7NODB.mjs.map
43
+ //# sourceMappingURL=chunk-AJ2HYENF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common.ts","../src/utils.ts"],"sourcesContent":["export const MERGE_SYMBOL = '__PS_MERGE__'\nexport const UNMOUNT_SYMBOL = '__PS_UNMOUNT__'\nexport const MODULE_SYMBOL = '__PS_MODULE__'\nexport const META_SYMBOL = '__PS_META__'\nexport const APP_SYMBOL = '__PS__'\nexport const IS_DEV = process.env.NODE_ENV === 'development'\nexport const IS_STRICT = !!process.env.PS_STRICT\n","import pc from 'picocolors'\n\nexport function log(msg: string, level: 'error' | 'info' | 'warn' = 'info') {\n const color = ({ error: 'red', info: 'green', warn: 'yellow' } as const)[level]\n const date = new Date()\n // eslint-disable-next-line no-console\n console.log(`${pc.magenta('[phecda-server]')} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)}`)\n}\n"],"mappings":";;;;;;;;;AAAO,IAAMA,eAAe;AACrB,IAAMC,iBAAiB;AACvB,IAAMC,gBAAgB;AACtB,IAAMC,cAAc;AACpB,IAAMC,aAAa;AACnB,IAAMC,SAASC,QAAQC,IAAIC,aAAa;AACxC,IAAMC,YAAY,CAAC,CAACH,QAAQC,IAAIG;;;ACNvC,OAAOC,QAAQ;AAER,SAASC,IAAIC,KAAaC,QAAmC,QAAQ;AAC1E,QAAMC,QAAS;IAAEC,OAAO;IAAOC,MAAM;IAASC,MAAM;EAAS,EAAYJ;AACzE,QAAMK,OAAO,IAAIC,KAAAA;AAEjBC,UAAQT,IAAI,GAAGU,GAAGC,QAAQ,iBAAA,KAAsBD,GAAGE,KAAK,GAAGL,KAAKM,SAAQ,KAAMN,KAAKO,WAAU,KAAMP,KAAKQ,WAAU,GAAI,KAAKL,GAAGP,OAAOF,GAAAA,GAAM;AAC7I;AALgBD;","names":["MERGE_SYMBOL","UNMOUNT_SYMBOL","MODULE_SYMBOL","META_SYMBOL","APP_SYMBOL","IS_DEV","process","env","NODE_ENV","IS_STRICT","PS_STRICT","pc","log","msg","level","color","error","info","warn","date","Date","console","pc","magenta","gray","getHours","getMinutes","getSeconds"]}
@@ -2,10 +2,8 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk62QDU5FJjs = require('./chunk-62QDU5FJ.js');
6
5
 
7
-
8
- var _chunkIIGNGFDCjs = require('./chunk-IIGNGFDC.js');
6
+ var _chunkLZAU5FUSjs = require('./chunk-LZAU5FUS.js');
9
7
 
10
8
  // src/meta.ts
11
9
  var Meta = class {
@@ -18,10 +16,10 @@ var Meta = class {
18
16
  this.paramsType = paramsType;
19
17
  }
20
18
  };
21
- _chunkIIGNGFDCjs.__name.call(void 0, Meta, "Meta");
19
+ _chunkLZAU5FUSjs.__name.call(void 0, Meta, "Meta");
22
20
 
23
21
  // src/compiler/rpc.ts
24
- var Compiler = /* @__PURE__ */ _chunkIIGNGFDCjs.__name.call(void 0, (_class =class Compiler2 {
22
+ var Compiler = /* @__PURE__ */ _chunkLZAU5FUSjs.__name.call(void 0, (_class =class Compiler2 {
25
23
  __init() {this.classMap = {}}
26
24
  constructor() {;_class.prototype.__init.call(this);
27
25
  }
@@ -57,10 +55,10 @@ function generateRPCCode(meta) {
57
55
  compiler.addMethod(i);
58
56
  return compiler.getContent();
59
57
  }
60
- _chunkIIGNGFDCjs.__name.call(void 0, generateRPCCode, "generateRPCCode");
58
+ _chunkLZAU5FUSjs.__name.call(void 0, generateRPCCode, "generateRPCCode");
61
59
 
62
60
  // src/compiler/http.ts
63
- var Compiler3 = /* @__PURE__ */ _chunkIIGNGFDCjs.__name.call(void 0, (_class2 =class Compiler4 {
61
+ var Compiler3 = /* @__PURE__ */ _chunkLZAU5FUSjs.__name.call(void 0, (_class2 =class Compiler4 {
64
62
  __init2() {this.classMap = {}}
65
63
  constructor() {;_class2.prototype.__init2.call(this);
66
64
  }
@@ -99,7 +97,7 @@ function generateHTTPCode(meta) {
99
97
  compiler.addMethod(i);
100
98
  return compiler.getContent();
101
99
  }
102
- _chunkIIGNGFDCjs.__name.call(void 0, generateHTTPCode, "generateHTTPCode");
100
+ _chunkLZAU5FUSjs.__name.call(void 0, generateHTTPCode, "generateHTTPCode");
103
101
 
104
102
  // src/core.ts
105
103
  require('reflect-metadata');
@@ -111,7 +109,7 @@ var _picocolors = require('picocolors'); var _picocolors2 = _interopRequireDefau
111
109
  function Injectable() {
112
110
  return (target) => _phecdacore.Empty.call(void 0, target);
113
111
  }
114
- _chunkIIGNGFDCjs.__name.call(void 0, Injectable, "Injectable");
112
+ _chunkLZAU5FUSjs.__name.call(void 0, Injectable, "Injectable");
115
113
  var debug = _debug2.default.call(void 0, "phecda-server");
116
114
  var emitter = new (0, _events2.default)();
117
115
  async function Factory(Modules, opts = {}) {
@@ -123,6 +121,11 @@ async function Factory(Modules, opts = {}) {
123
121
  const { http, rpc } = opts;
124
122
  _phecdacore.injectProperty.call(void 0, "watcher", ({ eventName, instance, key, options }) => {
125
123
  const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
124
+ if (!instance[_chunkLZAU5FUSjs.UNMOUNT_SYMBOL])
125
+ instance[_chunkLZAU5FUSjs.UNMOUNT_SYMBOL] = [];
126
+ instance[_chunkLZAU5FUSjs.UNMOUNT_SYMBOL].push(() => {
127
+ emitter.off(eventName, fn);
128
+ });
126
129
  if (_optionalChain([options, 'optionalAccess', _2 => _2.once]))
127
130
  emitter.once(eventName, fn);
128
131
  else
@@ -134,11 +137,11 @@ async function Factory(Modules, opts = {}) {
134
137
  return;
135
138
  debug(`update module "${tag}"`);
136
139
  const instance = moduleMap.get(tag);
137
- if (_optionalChain([instance, 'optionalAccess', _5 => _5[_chunk62QDU5FJjs.UNMOUNT_SYMBOL]])) {
138
- for (const cb of instance[_chunk62QDU5FJjs.UNMOUNT_SYMBOL])
140
+ if (_optionalChain([instance, 'optionalAccess', _5 => _5[_chunkLZAU5FUSjs.UNMOUNT_SYMBOL]])) {
141
+ for (const cb of instance[_chunkLZAU5FUSjs.UNMOUNT_SYMBOL])
139
142
  await cb();
140
143
  }
141
- _chunk62QDU5FJjs.log.call(void 0, `Module ${_picocolors2.default.yellow(`[${tag}]`)} unmount`);
144
+ _chunkLZAU5FUSjs.log.call(void 0, `Module ${_picocolors2.default.yellow(`[${tag}]`)} unmount`);
142
145
  moduleMap.delete(tag);
143
146
  constructorMap.delete(tag);
144
147
  for (let i = meta.length - 1; i >= 0; i--) {
@@ -159,7 +162,7 @@ async function Factory(Modules, opts = {}) {
159
162
  }
160
163
  moduleMap.set(tag, newModule);
161
164
  }
162
- _chunkIIGNGFDCjs.__name.call(void 0, update, "update");
165
+ _chunkLZAU5FUSjs.__name.call(void 0, update, "update");
163
166
  async function buildNestModule(Module) {
164
167
  const paramtypes = getParamTypes(Module);
165
168
  let instance;
@@ -170,7 +173,7 @@ async function Factory(Modules, opts = {}) {
170
173
  throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${tag}--[module] ${Module}`);
171
174
  if (constructorMap.get(tag) !== Module && !constructorSet.has(Module)) {
172
175
  constructorSet.add(Module);
173
- _chunk62QDU5FJjs.log.call(void 0, `Synonym module: Module taged "${tag}" has been loaded before, so phecda-server won't load Module "${Module.name}"`, "warn");
176
+ _chunkLZAU5FUSjs.log.call(void 0, `Synonym module: Module taged "${tag}" has been loaded before, so phecda-server won't load Module "${Module.name}"`, "warn");
174
177
  }
175
178
  return {
176
179
  instance,
@@ -194,14 +197,14 @@ async function Factory(Modules, opts = {}) {
194
197
  meta.push(...getMetaFromInstance(instance, tag, Module.name));
195
198
  await _phecdacore.registerAsync.call(void 0, instance);
196
199
  moduleMap.set(tag, instance);
197
- _chunk62QDU5FJjs.log.call(void 0, `Module ${_picocolors2.default.yellow(`[${tag}]`)} mount"`);
200
+ _chunkLZAU5FUSjs.log.call(void 0, `Module ${_picocolors2.default.yellow(`[${tag}]`)} mount"`);
198
201
  constructorMap.set(tag, Module);
199
202
  return {
200
203
  instance,
201
204
  tag
202
205
  };
203
206
  }
204
- _chunkIIGNGFDCjs.__name.call(void 0, buildNestModule, "buildNestModule");
207
+ _chunkLZAU5FUSjs.__name.call(void 0, buildNestModule, "buildNestModule");
205
208
  for (const Module of Modules)
206
209
  await buildNestModule(Module);
207
210
  function writeCode() {
@@ -209,9 +212,9 @@ async function Factory(Modules, opts = {}) {
209
212
  http && _fs2.default.promises.writeFile(http, generateHTTPCode(meta.map((item) => item.data)));
210
213
  rpc && _fs2.default.promises.writeFile(rpc, generateRPCCode(meta.map((item) => item.data)));
211
214
  }
212
- _chunkIIGNGFDCjs.__name.call(void 0, writeCode, "writeCode");
215
+ _chunkLZAU5FUSjs.__name.call(void 0, writeCode, "writeCode");
213
216
  writeCode();
214
- if (_chunk62QDU5FJjs.IS_DEV) {
217
+ if (_chunkLZAU5FUSjs.IS_DEV) {
215
218
  globalThis.__PS_HMR__ = async (file) => {
216
219
  debug(`reload file ${file}`);
217
220
  const module = await Promise.resolve().then(() => require(file));
@@ -229,7 +232,7 @@ async function Factory(Modules, opts = {}) {
229
232
  update
230
233
  };
231
234
  }
232
- _chunkIIGNGFDCjs.__name.call(void 0, Factory, "Factory");
235
+ _chunkLZAU5FUSjs.__name.call(void 0, Factory, "Factory");
233
236
  function getMetaFromInstance(instance, tag, name) {
234
237
  const vars = _phecdacore.getExposeKey.call(void 0, instance).filter((item) => item !== "__CLASS");
235
238
  const baseState = _phecdacore.getState.call(void 0, instance, "__CLASS") || {};
@@ -291,11 +294,11 @@ function getMetaFromInstance(instance, tag, name) {
291
294
  return new Meta(meta, _phecdacore.getHandler.call(void 0, instance, i), getParamTypes(instance, i) || []);
292
295
  });
293
296
  }
294
- _chunkIIGNGFDCjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
297
+ _chunkLZAU5FUSjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
295
298
  function getParamTypes(Module, key) {
296
299
  return Reflect.getMetadata("design:paramtypes", Module, key);
297
300
  }
298
- _chunkIIGNGFDCjs.__name.call(void 0, getParamTypes, "getParamTypes");
301
+ _chunkLZAU5FUSjs.__name.call(void 0, getParamTypes, "getParamTypes");
299
302
  function initState(state) {
300
303
  if (!state.define)
301
304
  state.define = {};
@@ -308,7 +311,7 @@ function initState(state) {
308
311
  if (!state.interceptors)
309
312
  state.interceptors = [];
310
313
  }
311
- _chunkIIGNGFDCjs.__name.call(void 0, initState, "initState");
314
+ _chunkLZAU5FUSjs.__name.call(void 0, initState, "initState");
312
315
 
313
316
 
314
317
 
@@ -318,4 +321,4 @@ _chunkIIGNGFDCjs.__name.call(void 0, initState, "initState");
318
321
 
319
322
 
320
323
  exports.Meta = Meta; exports.generateRPCCode = generateRPCCode; exports.generateHTTPCode = generateHTTPCode; exports.Injectable = Injectable; exports.emitter = emitter; exports.Factory = Factory;
321
- //# sourceMappingURL=chunk-UEH6FW5I.js.map
324
+ //# sourceMappingURL=chunk-D3VS53JQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meta.ts","../src/compiler/rpc.ts","../src/compiler/http.ts","../src/core.ts"],"names":["Meta","data","handlers","paramsType","constructor","Compiler","classMap","getContent","content","name","Object","values","reduce","p","c","addMethod","args","rpc","method","tag","type","isEvent","generateRPCCode","meta","compiler","i","http","params","url","route","replace","_","js","key","generateHTTPCode","fs","EventEmitter","Empty","getExposeKey","getHandler","getState","injectProperty","isPhecda","registerAsync","Debug","pc","Injectable","target","debug","emitter","Factory","Modules","opts","moduleMap","Map","constructorMap","constructorSet","WeakSet","moduleGraph","eventName","instance","options","fn","bind","v","UNMOUNT_SYMBOL","push","off","once","on","update","Module","prototype","__TAG__","has","get","cb","log","yellow","delete","length","splice","newModule","buildNestModule","forEach","module","set","paramtypes","getParamTypes","Error","add","undefined","paramtypesInstances","sub","subTag","Set","getMetaFromInstance","writeCode","promises","writeFile","map","item","IS_DEV","globalThis","__PS_HMR__","file","__PS_WRITEMETA__","vars","filter","baseState","initState","state","unshift","index","define","header","plugins","guards","interceptors","Reflect","getMetadata"],"mappings":";;;;;;;;AAEO,IAAMA,OAAN,MAAMA;EACQC;EAAqBC;EAA8BC;EAAtEC,YAAmBH,MAAqBC,UAA8BC,YAAmB;gBAAtEF;oBAAqBC;sBAA8BC;EAEtE;AACF;AAJaH;;;ACAb,IAAMK,WAAN,6BAAMA,UAAAA;EACJC,WAAsD,CAAC;EACvDF,cAAc;EAAE;EAEhBG,aAAa;AACX,QAAIC,UAAU;AAEd,eAAWC,QAAQ,KAAKH,UAAU;AAChCE,iBAAW;uBACMC;cACTC,OAAOC,OAAO,KAAKL,SAASG,KAAK,EAAEG,OAAO,CAACC,GAAGC,MAAMD,IAAIC,CAAAA;;IAElE;AACA,WAAON;EACT;EAEAO,UAAUC,MAAc;AACtB,UAAM,EACJC,KAAKR,MAAMS,QAAQC,IAAG,IACpBH;AACJ,QAAI,CAACC,OAAO,CAACA,IAAIG;AACf;AACF,QAAI,CAAC,KAAKd,SAASG;AACjB,WAAKH,SAASG,QAAQ,CAAC;AACzB,SAAKH,SAASG,MAAMS,UAAU;MAC5BA;qBACeC,OAAOD,mBAAmB,CAAC,CAACD,IAAII,gBAAgBJ,IAAIG,KAAKR,OAAO,CAACC,GAAGC,MAAM;AACvF,aAAO,GAAGD,KAAKC;IACjB,GAAG,EAAA;;;;EAIP;AACF,GAjCA;AAmCO,SAASQ,gBAAgBC,MAAgB;AAC9C,QAAMC,WAAW,IAAInB,SAAAA;AAErB,aAAWoB,KAAKF;AACdC,aAAST,UAAUU,CAAAA;AACrB,SAAOD,SAASjB,WAAU;AAC5B;AANgBe;;;ACnChB,IAAMjB,YAAN,6BAAMA,UAAAA;EACJC,WAAsD,CAAC;EACvDF,cAAc;EAAE;EAEhBG,aAAa;AACX,QAAIC,UAAU;AAEd,eAAWC,QAAQ,KAAKH,UAAU;AAChCE,iBAAW;uBACMC;cACTC,OAAOC,OAAO,KAAKL,SAASG,KAAK,EAAEG,OAAO,CAACC,GAAGC,MAAMD,IAAIC,CAAAA;;IAElE;AACA,WAAON;EACT;EASAO,UAAUC,MAAc;AACtB,UAAM,EACJU,MAAMjB,MAAMS,QAAQS,QAAQR,IAAG,IAC7BH;AACJ,QAAI,CAACU;AACH;AACF,UAAME,MAAMF,KAAKG,MAAMC,QAAQ,iBAAiB,CAACC,GAAGC,OAAO,MAAMA,MAAM;AACvE,QAAI,CAAC,KAAK1B,SAASG;AACjB,WAAKH,SAASG,QAAQ,CAAC;AACzB,SAAKH,SAASG,MAAMS,UAAU;MAC5BA;kBACYC,OAAOD,yDAAyDQ,KAAKN,cAAcQ;;EAEnGD,OAAOf,OAAO,CAACC,GAAGC,GAAGW,MAAM,GAAGZ,QAAQC,EAAEM,OAAON,EAAEmB,MAAM,KAAKnB,EAAEmB,UAAU,WAAWR;EAAOX,EAAEM,SAAS,WAAW,8BAA8BN,EAAEmB,eAAeR,QAAQ;GAAQ,EAAA;;;;EAI/K;AACF,GAzCA;AA2CO,SAASS,iBAAiBX,MAAgB;AAC/C,QAAMC,WAAW,IAAInB,UAAAA;AAErB,aAAWoB,KAAKF;AACdC,aAAST,UAAUU,CAAAA;AACrB,SAAOD,SAASjB,WAAU;AAC5B;AANgB2B;;;AC7ChB,OAAO;AACP,OAAOC,QAAQ;AACf,OAAOC,kBAAkB;AAEzB,SAASC,OAAOC,cAAcC,YAAYC,UAAUC,gBAAgBC,UAAUC,qBAAqB;AACnG,OAAOC,WAAW;AAClB,OAAOC,QAAQ;AAMR,SAASC,aAAa;AAC3B,SAAO,CAACC,WAAgBV,MAAMU,MAAAA;AAChC;AAFgBD;AAGhB,IAAME,QAAQJ,MAAM,eAAA;AAEb,IAAMK,UAAmB,IAAIb,aAAAA;AAEpC,eAAsBc,QAAQC,SAAwCC,OAMlE,CAAC,GAAG;AACN,QAAMC,YAAY,oBAAIC,IAAAA;AACtB,QAAM/B,OAAe,CAAA;AACrB,QAAMgC,iBAAiB,oBAAID,IAAAA;AAG3B,QAAME,iBAAiB,oBAAIC,QAAAA;AAC3B,QAAMC,cAAc,oBAAIJ,IAAAA;AACxB,QAAM,EAAE5B,MAAMT,IAAG,IAAKmC;AACtBX,iBAAe,WAAW,CAAC,EAAEkB,WAAWC,UAAU3B,KAAK4B,QAAO,MAAuF;AACnJ,UAAMC,KAAK,OAAOF,SAAS3B,SAAS,aAAa2B,SAAS3B,KAAK8B,KAAKH,QAAAA,IAAY,CAACI,MAAWJ,SAAS3B,OAAO+B;AAG5G,QAAI,CAACJ,SAASK;AACZL,eAASK,kBAAkB,CAAA;AAE7BL,aAASK,gBAAgBC,KAAK,MAAM;AACjCjB,cAAgBkB,IAAIR,WAAWG,EAAAA;IAClC,CAAA;AAEA,QAAID,SAASO;AACVnB,cAAgBmB,KAAKT,WAAWG,EAAAA;;AAGhCb,cAAgBoB,GAAGV,WAAWG,EAAAA;EACnC,CAAA;AAEA,iBAAeQ,OAAOC,QAAmB;AACvC,UAAMpD,MAAMoD,OAAOC,WAAWC,WAAWF,OAAO9D;AAChD,QAAI,CAAC4C,UAAUqB,IAAIvD,GAAAA;AACjB;AACF6B,UAAM,kBAAkB7B,MAAM;AAE9B,UAAMyC,WAAWP,UAAUsB,IAAIxD,GAAAA;AAE/B,QAAIyC,WAAWK,iBAAiB;AAC9B,iBAAWW,MAAMhB,SAASK;AACxB,cAAMW,GAAAA;IACV;AACAC,QAAI,UAAUhC,GAAGiC,OAAO,IAAI3D,MAAM,WAAW;AAC7CkC,cAAU0B,OAAO5D,GAAAA;AACjBoC,mBAAewB,OAAO5D,GAAAA;AACtB,aAASM,IAAIF,KAAKyD,SAAS,GAAGvD,KAAK,GAAGA,KAAK;AACzC,UAAIF,KAAKE,GAAGxB,KAAKkB,QAAQA;AACvBI,aAAK0D,OAAOxD,GAAG,CAAA;IACnB;AAEA,UAAM,EAAEmC,UAAUsB,UAAS,IAAK,MAAMC,gBAAgBZ,MAAAA;AACtD,QAAIb,YAAYgB,IAAIvD,GAAAA,GAAM;AACxB;WAAIuC,YAAYiB,IAAIxD,GAAAA;QAAOiE,QAAQ,CAACjE,SAAQ;AAC1C,cAAMkE,SAAShC,UAAUsB,IAAIxD,IAAAA;AAC7B,mBAAWc,OAAOoD,QAAQ;AACxB,cAAIA,OAAOpD,SAAS2B;AAClByB,mBAAOpD,OAAOiD;QAClB;MACF,CAAA;IACF;AAEA7B,cAAUiC,IAAInE,KAAK+D,SAAAA;EACrB;AAhCeZ;AAiCf,iBAAea,gBAAgBZ,QAAmB;AAChD,UAAMgB,aAAaC,cAAcjB,MAAAA;AACjC,QAAIX;AACJ,UAAMzC,MAAMoD,OAAOC,WAAWC,WAAWF,OAAO9D;AAChD,QAAI4C,UAAUqB,IAAIvD,GAAAA,GAAM;AACtByC,iBAAWP,UAAUsB,IAAIxD,GAAAA;AACzB,UAAI,CAACyC;AACH,cAAM,IAAI6B,MAAM,8EAA8EtE,iBAAiBoD,QAAQ;AAEzH,UAAIhB,eAAeoB,IAAIxD,GAAAA,MAASoD,UAAU,CAACf,eAAekB,IAAIH,MAAAA,GAAS;AACrEf,uBAAekC,IAAInB,MAAAA;AACnBM,YAAI,iCAAiC1D,oEAAoEoD,OAAO9D,SAAS,MAAA;MAC3H;AACA,aAAO;QAAEmD;QAAUzC;MAAI;IACzB;AACAkC,cAAUiC,IAAInE,KAAKwE,MAAAA;AACnB,QAAIJ,YAAY;AACd,YAAMK,sBAAsB,CAAA;AAC5B,iBAAWnE,KAAK8D,YAAY;AAC1B,cAAM,EAAE3B,UAAUiC,KAAK1E,KAAK2E,OAAM,IAAK,MAAMX,gBAAgBI,WAAW9D,EAAE;AAC1EmE,4BAAoBnE,KAAKoE;AACzB,YAAI,CAACnC,YAAYgB,IAAIoB,MAAAA;AACnBpC,sBAAY4B,IAAIQ,QAAQ,oBAAIC,IAAAA,CAAAA;AAC9BrC,oBAAYiB,IAAImB,MAAAA,EAASJ,IAAIvE,GAAAA;MAC/B;AACAyC,iBAAW,IAAIW,OAAAA,GAAUqB,mBAAAA;IAC3B,OACK;AACHhC,iBAAW,IAAIW,OAAAA;IACjB;AACAhD,SAAK2C,KAAI,GAAI8B,oBAAoBpC,UAAUzC,KAAKoD,OAAO9D,IAAI,CAAA;AAC3D,UAAMkC,cAAciB,QAAAA;AACpBP,cAAUiC,IAAInE,KAAKyC,QAAAA;AACnBiB,QAAI,UAAUhC,GAAGiC,OAAO,IAAI3D,MAAM,UAAU;AAC5CoC,mBAAe+B,IAAInE,KAAKoD,MAAAA;AACxB,WAAO;MAAEX;MAAUzC;IAAI;EACzB;AApCegE;AAsCf,aAAWZ,UAAUpB;AACnB,UAAMgC,gBAAgBZ,MAAAA;AAExB,WAAS0B,YAAY;AACnBjD,UAAM,YAAA;AAENtB,YAAQS,GAAG+D,SAASC,UAAUzE,MAAMQ,iBAAiBX,KAAK6E,IAAIC,CAAAA,SAAQA,KAAKpG,IAAI,CAAA,CAAA;AAC/EgB,WAAOkB,GAAG+D,SAASC,UAAUlF,KAAKK,gBAAgBC,KAAK6E,IAAIC,CAAAA,SAAQA,KAAKpG,IAAI,CAAA,CAAA;EAC9E;AALSgG;AAOTA,YAAAA;AACA,MAAIK,QAAQ;AAEVC,eAAWC,aAAa,OAAOC,SAAiB;AAC9CzD,YAAM,eAAeyD,MAAM;AAC3B,YAAMpB,SAAS,MAAM,OAAOoB;AAC5B,iBAAWhF,KAAK4D,QAAQ;AACtB,YAAI3C,SAAS2C,OAAO5D,EAAE;AACpB,gBAAM6C,OAAOe,OAAO5D,EAAE;MAC1B;IACF;AAEA8E,eAAWG,mBAAmBT;EAChC;AAEA,SAAO;IACL5C;IACA9B;IACAgC;IACAe;EACF;AACF;AAvIsBpB;AAyItB,SAAS8C,oBAAoBpC,UAAkBzC,KAAaV,MAAc;AACxE,QAAMkG,OAAOrE,aAAasB,QAAAA,EAAUgD,OAAOP,CAAAA,SAAQA,SAAS,SAAA;AAC5D,QAAMQ,YAAarE,SAASoB,UAAU,SAAA,KAAc,CAAC;AACrDkD,YAAUD,SAAAA;AAEV,SAAOF,KAAKP,IAAI,CAAC3E,MAAM;AACrB,UAAMF,OAAO,CAAC;AACd,UAAMwF,QAASvE,SAASoB,UAAUnC,CAAAA,KAAM,CAAC;AACzCqF,cAAUC,KAAAA;AACV,QAAIA,MAAMrF,MAAM;AACdH,WAAKG,OAAO;QACVG,QAAQgF,UAAUnF,MAAMG,SAAS,MAAOkF,MAAMrF,KAAKG;QACnDT,MAAM2F,MAAMrF,KAAKN;MACnB;IACF;AACA,QAAIyF,UAAU5F;AACZM,WAAKN,MAAM4F,UAAU5F;AACvB,QAAI8F,MAAM9F,KAAK;AACbM,WAAKN,MAAM;QACT,GAAGM,KAAKN;QACR,GAAG8F,MAAM9F;MACX;IACF;AAEAM,SAAKd,OAAOA;AACZc,SAAKJ,MAAMA;AACXI,SAAKL,SAASO;AACd,UAAME,SAAS,CAAA;AACf,eAAWF,MAAKsF,MAAMpF,UAAU,CAAA,GAAI;AAClCA,aAAOqF,QAAQvF,EAAAA;AACf,UAAIA,GAAEwF,UAAU;AACd;IACJ;AAEA1F,SAAKI,SAASA;AACdJ,SAAK2F,SAAS;MAAE,GAAGL,UAAUK;MAAQ,GAAGH,MAAMG;IAAO;AACrD3F,SAAK4F,SAAS;MAAE,GAAGN,UAAUM;MAAQ,GAAGJ,MAAMI;IAAO;AACrD5F,SAAK6F,UAAU;SAAI,oBAAIrB,IAAI;WAAIc,UAAUO;WAAYL,MAAMK;OAAQ;;AACnE7F,SAAK8F,SAAS;SAAI,oBAAItB,IAAI;WAAIc,UAAUQ;WAAWN,MAAMM;OAAO;;AAChE9F,SAAK+F,eAAe;SAAI,oBAAIvB,IAAI;WAAIc,UAAUS;WAAiBP,MAAMO;OAAa;;AAElF,WAAO,IAAItH,KAAKuB,MAA2BgB,WAAWqB,UAAUnC,CAAAA,GAAI+D,cAAc5B,UAAUnC,CAAAA,KAAgB,CAAA,CAAE;EAChH,CAAA;AACF;AA3CSuE;AA6CT,SAASR,cAAcjB,QAAatC,KAAuB;AACzD,SAAOsF,QAAQC,YAAY,qBAAqBjD,QAAQtC,GAAAA;AAC1D;AAFSuD;AAIT,SAASsB,UAAUC,OAAY;AAC7B,MAAI,CAACA,MAAMG;AACTH,UAAMG,SAAS,CAAC;AAClB,MAAI,CAACH,MAAMI;AACTJ,UAAMI,SAAS,CAAC;AAClB,MAAI,CAACJ,MAAMK;AACTL,UAAMK,UAAU,CAAA;AAClB,MAAI,CAACL,MAAMM;AACTN,UAAMM,SAAS,CAAA;AACjB,MAAI,CAACN,MAAMO;AACTP,UAAMO,eAAe,CAAA;AACzB;AAXSR","sourcesContent":["import type { P } from './types'\n\nexport class Meta {\n constructor(public data: P.Meta, public handlers: P.Handler[], public paramsType: any[]) {\n\n }\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n addMethod(args: P.Meta) {\n const {\n rpc, name, method, tag,\n } = args\n if (!rpc || !rpc.type)\n return\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(){\n return {tag:'${tag}-${method}',isEvent:${!!rpc.isEvent},rpc:[${rpc.type.reduce((p, c) => {\n return `${p}\"${c}\",`\n }, '')}]}\n\n }\n `\n }\n}\n\nexport function generateRPCCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n // createRequest() {\n // let content = 'import {useC} from \\'phecda-server\\'\\n'\n // for (const name in this.classMap)\n // content += `export const {${Object.keys(this.classMap[name]).join(',')}}=useC(${name})\\n`\n // return content\n // }\n\n addMethod(args: P.Meta) {\n const {\n http, name, method, params, tag,\n } = args\n if (!http)\n return\n const url = http.route.replace(/\\/\\:([^\\/]*)/g, (_, js) => `/{{${js}}}`)\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(...args){\nconst ret={tag:\"${tag}-${method}\",body:{},headers:{},query:{},params:{},method:\"${http.type}\",url:\"${url}\",args}\n\n${params.reduce((p, c, i) => `${p}ret.${c.type}${c.key ? `['${c.key}']` : ''}=args[${i}]\\n${c.type === 'params' ? `ret.url=ret.url.replace('{{${c.key}}}',args[${i}])` : ''}\\n`, '')}\nreturn ret\n }\n `\n }\n}\n\nexport function generateHTTPCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import 'reflect-metadata'\nimport fs from 'fs'\nimport EventEmitter from 'node:events'\nimport type { Phecda } from 'phecda-core'\nimport { Empty, getExposeKey, getHandler, getState, injectProperty, isPhecda, registerAsync } from 'phecda-core'\nimport Debug from 'debug'\nimport pc from 'picocolors'\nimport type { Construct, Emitter, P } from './types'\nimport { Meta } from './meta'\nimport { log } from './utils'\nimport { IS_DEV, UNMOUNT_SYMBOL } from './common'\nimport { generateHTTPCode, generateRPCCode } from './compiler'\nexport function Injectable() {\n return (target: any) => Empty(target)\n}\nconst debug = Debug('phecda-server')\n// TODO: support both emitter types and origin emitter type in future\nexport const emitter: Emitter = new EventEmitter() as any\n\nexport async function Factory(Modules: (new (...args: any) => any)[], opts: {\n\n // HTTP generate code path\n http?: string\n // rpc generate code path\n rpc?: string\n} = {}) {\n const moduleMap = new Map<string, InstanceType<Construct>>()\n const meta: Meta[] = []\n const constructorMap = new Map()\n\n // only work for warn\n const constructorSet = new WeakSet()\n const moduleGraph = new Map<string, Set<string>>()\n const { http, rpc } = opts\n injectProperty('watcher', ({ eventName, instance, key, options }: { eventName: string; instance: any; key: string; options?: { once: boolean } }) => {\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = v\n\n // work for hmr\n if (!instance[UNMOUNT_SYMBOL])\n instance[UNMOUNT_SYMBOL] = []\n\n instance[UNMOUNT_SYMBOL].push(() => {\n (emitter as any).off(eventName, fn)\n })\n\n if (options?.once)\n (emitter as any).once(eventName, fn)\n\n else\n (emitter as any).on(eventName, fn)\n })\n\n async function update(Module: Construct) {\n const tag = Module.prototype?.__TAG__ || Module.name\n if (!moduleMap.has(tag))\n return\n debug(`update module \"${tag}\"`)\n\n const instance = moduleMap.get(tag)\n\n if (instance?.[UNMOUNT_SYMBOL]) {\n for (const cb of instance[UNMOUNT_SYMBOL])\n await cb()\n }\n log(`Module ${pc.yellow(`[${tag}]`)} unmount`)\n moduleMap.delete(tag)\n constructorMap.delete(tag)\n for (let i = meta.length - 1; i >= 0; i--) {\n if (meta[i].data.tag === tag)\n meta.splice(i, 1)\n }\n\n const { instance: newModule } = await buildNestModule(Module)\n if (moduleGraph.has(tag)) {\n [...moduleGraph.get(tag)!].forEach((tag) => {\n const module = moduleMap.get(tag)\n for (const key in module) {\n if (module[key] === instance)\n module[key] = newModule\n }\n })\n }\n\n moduleMap.set(tag, newModule)\n }\n async function buildNestModule(Module: Construct) {\n const paramtypes = getParamTypes(Module) as Construct[]\n let instance: InstanceType<Construct>\n const tag = Module.prototype?.__TAG__ || Module.name\n if (moduleMap.has(tag)) {\n instance = moduleMap.get(tag)\n if (!instance)\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${tag}--[module] ${Module}`)\n\n if (constructorMap.get(tag) !== Module && !constructorSet.has(Module)) {\n constructorSet.add(Module)// a module will only warn once\n log(`Synonym module: Module taged \"${tag}\" has been loaded before, so phecda-server won't load Module \"${Module.name}\"`, 'warn')\n }\n return { instance, tag }\n }\n moduleMap.set(tag, undefined)\n if (paramtypes) {\n const paramtypesInstances = [] as any[]\n for (const i in paramtypes) {\n const { instance: sub, tag: subTag } = await buildNestModule(paramtypes[i])\n paramtypesInstances[i] = sub\n if (!moduleGraph.has(subTag))\n moduleGraph.set(subTag, new Set())\n moduleGraph.get(subTag)!.add(tag)\n }\n instance = new Module(...paramtypesInstances)\n }\n else {\n instance = new Module()\n }\n meta.push(...getMetaFromInstance(instance, tag, Module.name))\n await registerAsync(instance)\n moduleMap.set(tag, instance)\n log(`Module ${pc.yellow(`[${tag}]`)} mount\"`)\n constructorMap.set(tag, Module)\n return { instance, tag }\n }\n\n for (const Module of Modules)\n await buildNestModule(Module)\n\n function writeCode() {\n debug('write code')\n\n http && fs.promises.writeFile(http, generateHTTPCode(meta.map(item => item.data)))\n rpc && fs.promises.writeFile(rpc, generateRPCCode(meta.map(item => item.data)))\n }\n\n writeCode()\n if (IS_DEV) {\n // @ts-expect-error globalThis\n globalThis.__PS_HMR__ = async (file: string) => {\n debug(`reload file ${file}`)\n const module = await import(file)\n for (const i in module) {\n if (isPhecda(module[i]))\n await update(module[i])\n }\n }\n // @ts-expect-error globalThis\n globalThis.__PS_WRITEMETA__ = writeCode\n }\n\n return {\n moduleMap,\n meta,\n constructorMap,\n update,\n }\n}\n\nfunction getMetaFromInstance(instance: Phecda, tag: string, name: string) {\n const vars = getExposeKey(instance).filter(item => item !== '__CLASS')\n const baseState = (getState(instance, '__CLASS') || {}) as P.Meta\n initState(baseState)\n\n return vars.map((i) => {\n const meta = {} as P.Meta\n const state = (getState(instance, i) || {}) as P.Meta\n initState(state)\n if (state.http) {\n meta.http = {\n route: (baseState.http?.route || '') + (state.http.route),\n type: state.http.type,\n }\n }\n if (baseState.rpc)\n meta.rpc = baseState.rpc\n if (state.rpc) {\n meta.rpc = {\n ...meta.rpc,\n ...state.rpc,\n }\n }\n\n meta.name = name\n meta.tag = tag\n meta.method = i as string\n const params = [] as any[]\n for (const i of state.params || []) {\n params.unshift(i)\n if (i.index === 0)\n break\n }\n\n meta.params = params\n meta.define = { ...baseState.define, ...state.define }\n meta.header = { ...baseState.header, ...state.header }\n meta.plugins = [...new Set([...baseState.plugins, ...state.plugins])]\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\n\n return new Meta(meta as unknown as P.Meta, getHandler(instance, i), getParamTypes(instance, i as string) || [])\n })\n}\n\nfunction getParamTypes(Module: any, key?: string | symbol) {\n return Reflect.getMetadata('design:paramtypes', Module, key!)\n}\n\nfunction initState(state: any) {\n if (!state.define)\n state.define = {}\n if (!state.header)\n state.header = {}\n if (!state.plugins)\n state.plugins = []\n if (!state.guards)\n state.guards = []\n if (!state.interceptors)\n state.interceptors = []\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
2
 
3
- var _chunkIIGNGFDCjs = require('./chunk-IIGNGFDC.js');
3
+ var _chunkLZAU5FUSjs = require('./chunk-LZAU5FUS.js');
4
4
 
5
5
  // src/helper.ts
6
6
  function resolveDep(ret, key) {
@@ -8,9 +8,9 @@ function resolveDep(ret, key) {
8
8
  return _optionalChain([ret, 'optionalAccess', _ => _[key]]);
9
9
  return ret;
10
10
  }
11
- _chunkIIGNGFDCjs.__name.call(void 0, resolveDep, "resolveDep");
11
+ _chunkLZAU5FUSjs.__name.call(void 0, resolveDep, "resolveDep");
12
12
 
13
13
 
14
14
 
15
15
  exports.resolveDep = resolveDep;
16
- //# sourceMappingURL=chunk-JGSJIKGN.js.map
16
+ //# sourceMappingURL=chunk-FAHHXHL5.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __name
3
- } from "./chunk-Q4FA4TAV.mjs";
3
+ } from "./chunk-AJ2HYENF.mjs";
4
4
 
5
5
  // src/helper.ts
6
6
  function resolveDep(ret, key) {
@@ -13,4 +13,4 @@ __name(resolveDep, "resolveDep");
13
13
  export {
14
14
  resolveDep
15
15
  };
16
- //# sourceMappingURL=chunk-HY6T4ZWQ.mjs.map
16
+ //# sourceMappingURL=chunk-JQPX546Z.mjs.map
@@ -1,6 +1,10 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
-
3
- var _chunkIIGNGFDCjs = require('./chunk-IIGNGFDC.js');
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }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
+ };
4
8
 
5
9
  // src/common.ts
6
10
  var MERGE_SYMBOL = "__PS_MERGE__";
@@ -9,6 +13,7 @@ var MODULE_SYMBOL = "__PS_MODULE__";
9
13
  var META_SYMBOL = "__PS_META__";
10
14
  var APP_SYMBOL = "__PS__";
11
15
  var IS_DEV = process.env.NODE_ENV === "development";
16
+ var IS_STRICT = !!process.env.PS_STRICT;
12
17
 
13
18
  // src/utils.ts
14
19
  var _picocolors = require('picocolors'); var _picocolors2 = _interopRequireDefault(_picocolors);
@@ -21,7 +26,10 @@ function log(msg, level = "info") {
21
26
  const date = new Date();
22
27
  console.log(`${_picocolors2.default.magenta("[phecda-server]")} ${_picocolors2.default.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${_picocolors2.default[color](msg)}`);
23
28
  }
24
- _chunkIIGNGFDCjs.__name.call(void 0, log, "log");
29
+ __name(log, "log");
30
+
31
+
32
+
25
33
 
26
34
 
27
35
 
@@ -31,5 +39,5 @@ _chunkIIGNGFDCjs.__name.call(void 0, log, "log");
31
39
 
32
40
 
33
41
 
34
- exports.log = log; exports.MERGE_SYMBOL = MERGE_SYMBOL; exports.UNMOUNT_SYMBOL = UNMOUNT_SYMBOL; exports.MODULE_SYMBOL = MODULE_SYMBOL; exports.META_SYMBOL = META_SYMBOL; exports.APP_SYMBOL = APP_SYMBOL; exports.IS_DEV = IS_DEV;
35
- //# sourceMappingURL=chunk-62QDU5FJ.js.map
42
+ exports.__name = __name; exports.__publicField = __publicField; exports.log = log; exports.MERGE_SYMBOL = MERGE_SYMBOL; exports.UNMOUNT_SYMBOL = UNMOUNT_SYMBOL; exports.MODULE_SYMBOL = MODULE_SYMBOL; exports.META_SYMBOL = META_SYMBOL; exports.APP_SYMBOL = APP_SYMBOL; exports.IS_DEV = IS_DEV; exports.IS_STRICT = IS_STRICT;
43
+ //# sourceMappingURL=chunk-LZAU5FUS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common.ts","../src/utils.ts"],"names":["MERGE_SYMBOL","UNMOUNT_SYMBOL","MODULE_SYMBOL","META_SYMBOL","APP_SYMBOL","IS_DEV","process","env","NODE_ENV","IS_STRICT","PS_STRICT","pc","log","msg","level","color","error","info","warn","date","Date","console","magenta","gray","getHours","getMinutes","getSeconds"],"mappings":";;;;;;;;;AAAO,IAAMA,eAAe;AACrB,IAAMC,iBAAiB;AACvB,IAAMC,gBAAgB;AACtB,IAAMC,cAAc;AACpB,IAAMC,aAAa;AACnB,IAAMC,SAASC,QAAQC,IAAIC,aAAa;AACxC,IAAMC,YAAY,CAAC,CAACH,QAAQC,IAAIG;;;ACNvC,OAAOC,QAAQ;AAER,SAASC,IAAIC,KAAaC,QAAmC,QAAQ;AAC1E,QAAMC,QAAS;IAAEC,OAAO;IAAOC,MAAM;IAASC,MAAM;EAAS,EAAYJ;AACzE,QAAMK,OAAO,IAAIC,KAAAA;AAEjBC,UAAQT,IAAI,GAAGD,GAAGW,QAAQ,iBAAA,KAAsBX,GAAGY,KAAK,GAAGJ,KAAKK,SAAQ,KAAML,KAAKM,WAAU,KAAMN,KAAKO,WAAU,GAAI,KAAKf,GAAGI,OAAOF,GAAAA,GAAM;AAC7I;AALgBD","sourcesContent":["export const MERGE_SYMBOL = '__PS_MERGE__'\nexport const UNMOUNT_SYMBOL = '__PS_UNMOUNT__'\nexport const MODULE_SYMBOL = '__PS_MODULE__'\nexport const META_SYMBOL = '__PS_META__'\nexport const APP_SYMBOL = '__PS__'\nexport const IS_DEV = process.env.NODE_ENV === 'development'\nexport const IS_STRICT = !!process.env.PS_STRICT\n","import pc from 'picocolors'\n\nexport function log(msg: string, level: 'error' | 'info' | 'warn' = 'info') {\n const color = ({ error: 'red', info: 'green', warn: 'yellow' } as const)[level]\n const date = new Date()\n // eslint-disable-next-line no-console\n console.log(`${pc.magenta('[phecda-server]')} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)}`)\n}\n"]}
@@ -1,11 +1,10 @@
1
1
  import {
2
2
  IS_DEV,
3
- log
4
- } from "./chunk-FPN7NODB.mjs";
5
- import {
3
+ IS_STRICT,
6
4
  __name,
7
- __publicField
8
- } from "./chunk-Q4FA4TAV.mjs";
5
+ __publicField,
6
+ log
7
+ } from "./chunk-AJ2HYENF.mjs";
9
8
 
10
9
  // src/exception/base.ts
11
10
  var Exception = class extends Error {
@@ -163,6 +162,9 @@ var FrameworkException = class extends Exception {
163
162
  };
164
163
  __name(FrameworkException, "FrameworkException");
165
164
 
165
+ // src/context.ts
166
+ import pc from "picocolors";
167
+
166
168
  // src/filter.ts
167
169
  var defaultFilter = /* @__PURE__ */ __name((e) => {
168
170
  if (!(e instanceof Exception)) {
@@ -191,7 +193,7 @@ var Histroy = class {
191
193
  __name(Histroy, "Histroy");
192
194
 
193
195
  // src/context.ts
194
- var guardsRecord = {};
196
+ var guardRecord = {};
195
197
  var _Context = class {
196
198
  tag;
197
199
  data;
@@ -208,6 +210,12 @@ var _Context = class {
208
210
  }
209
211
  usePipe(args) {
210
212
  return Promise.all(args.map((item) => {
213
+ if (item.pipe && !_Context.pipeRecord[item.pipe]) {
214
+ if (IS_STRICT)
215
+ throw new FrameworkException(`can't find pipe named '${item.pipe}'`);
216
+ else
217
+ return _Context.pipeRecord.default(item, this.tag, this.data);
218
+ }
211
219
  return _Context.pipeRecord[item.pipe || "default"](item, this.tag, this.data);
212
220
  }));
213
221
  }
@@ -217,12 +225,12 @@ var _Context = class {
217
225
  async useGuard(guards) {
218
226
  for (const guard of guards) {
219
227
  if (this.history.record(guard, "guard")) {
220
- if (!(guard in _Context.guardsRecord)) {
221
- if (process.env.PS_STRICT)
228
+ if (!(guard in _Context.guardRecord)) {
229
+ if (IS_STRICT)
222
230
  throw new FrameworkException(`can't find guard named '${guard}'`);
223
231
  continue;
224
232
  }
225
- if (!await _Context.guardsRecord[guard](this.tag, this.data))
233
+ if (!await _Context.guardRecord[guard](this.tag, this.data))
226
234
  throw new ForbiddenException(`Guard exception--${guard}`);
227
235
  }
228
236
  }
@@ -236,12 +244,12 @@ var _Context = class {
236
244
  const ret = [];
237
245
  for (const interceptor of interceptors) {
238
246
  if (this.history.record(interceptor, "interceptor")) {
239
- if (!(interceptor in _Context.interceptorsRecord)) {
240
- if (process.env.PS_STRICT)
247
+ if (!(interceptor in _Context.interceptorRecord)) {
248
+ if (IS_STRICT)
241
249
  throw new FrameworkException(`can't find interceptor named '${interceptor}'`);
242
250
  continue;
243
251
  }
244
- const postInterceptor = await _Context.interceptorsRecord[interceptor](this.tag, this.data);
252
+ const postInterceptor = await _Context.interceptorRecord[interceptor](this.tag, this.data);
245
253
  if (postInterceptor !== void 0) {
246
254
  if (typeof postInterceptor === "function")
247
255
  ret.push(postInterceptor);
@@ -256,7 +264,7 @@ var _Context = class {
256
264
  const ret = [];
257
265
  for (const m of plugins) {
258
266
  if (!(m in _Context.pluginRecord)) {
259
- if (process.env.PS_STRICT)
267
+ if (IS_STRICT)
260
268
  throw new FrameworkException(`can't find middleware named '${m}'`);
261
269
  continue;
262
270
  }
@@ -271,8 +279,8 @@ __publicField(Context, "filter", defaultFilter);
271
279
  __publicField(Context, "pipeRecord", {
272
280
  default: defaultPipe
273
281
  });
274
- __publicField(Context, "guardsRecord", {});
275
- __publicField(Context, "interceptorsRecord", {});
282
+ __publicField(Context, "guardRecord", {});
283
+ __publicField(Context, "interceptorRecord", {});
276
284
  __publicField(Context, "pluginRecord", {});
277
285
  function addPlugin(key, handler) {
278
286
  Context.pluginRecord[key] = handler;
@@ -287,13 +295,53 @@ function setFilter(filter) {
287
295
  }
288
296
  __name(setFilter, "setFilter");
289
297
  function addGuard(key, handler) {
290
- Context.guardsRecord[key] = handler;
298
+ Context.guardRecord[key] = handler;
291
299
  }
292
300
  __name(addGuard, "addGuard");
293
301
  function addInterceptor(key, handler) {
294
- Context.interceptorsRecord[key] = handler;
302
+ Context.interceptorRecord[key] = handler;
295
303
  }
296
304
  __name(addInterceptor, "addInterceptor");
305
+ function isAopDepInject(meta, { guards, interceptors, plugins } = {}) {
306
+ const pluginSet = new Set(plugins);
307
+ const guardSet = new Set(guards);
308
+ const interceptorSet = new Set(interceptors);
309
+ const pipeSet = /* @__PURE__ */ new Set();
310
+ meta.forEach(({ data }) => {
311
+ data.interceptors.forEach((i) => interceptorSet.add(i));
312
+ data.guards.forEach((i) => guardSet.add(i));
313
+ data.plugins.forEach((i) => pluginSet.add(i));
314
+ data.params.forEach((i) => {
315
+ if (i.pipe)
316
+ pipeSet.add(i.pipe);
317
+ });
318
+ });
319
+ [
320
+ ...pluginSet
321
+ ].forEach((i) => {
322
+ if (!Context.pluginRecord[i])
323
+ log(`${pc.white(`Plugin [${i}]`)} doesn't exist`, "warn");
324
+ });
325
+ [
326
+ ...guardSet
327
+ ].forEach((i) => {
328
+ if (!Context.guardRecord[i])
329
+ log(`${pc.red(`Guard [${i}]`)} doesn't exist`, "warn");
330
+ });
331
+ [
332
+ ...interceptorSet
333
+ ].forEach((i) => {
334
+ if (!Context.interceptorRecord[i])
335
+ log(`${pc.cyan(`Interceptor [${i}]`)} doesn't exist`, "warn");
336
+ });
337
+ [
338
+ ...pipeSet
339
+ ].forEach((i) => {
340
+ if (!Context.pipeRecord[i])
341
+ log(`${pc.blue(`Pipe [${i}]`)} doesn't exist`, "warn");
342
+ });
343
+ }
344
+ __name(isAopDepInject, "isAopDepInject");
297
345
 
298
346
  export {
299
347
  Exception,
@@ -313,12 +361,13 @@ export {
313
361
  ServiceUnavailableException,
314
362
  FrameworkException,
315
363
  defaultFilter,
316
- guardsRecord,
364
+ guardRecord,
317
365
  Context,
318
366
  addPlugin,
319
367
  addPipe,
320
368
  setFilter,
321
369
  addGuard,
322
- addInterceptor
370
+ addInterceptor,
371
+ isAopDepInject
323
372
  };
324
- //# sourceMappingURL=chunk-3PXRNECS.mjs.map
373
+ //# sourceMappingURL=chunk-Q6T7HNEO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/exception/base.ts","../src/exception/validate.ts","../src/pipe.ts","../src/exception/undefine.ts","../src/exception/forbidden.ts","../src/exception/bad-request.ts","../src/exception/not-found.ts","../src/exception/conflict.ts","../src/exception/bad-gateway.ts","../src/exception/invalid-input.ts","../src/exception/media-type.ts","../src/exception/payload-large.ts","../src/exception/timeout.ts","../src/exception/unauthorized.ts","../src/exception/unavailable-service.ts","../src/exception/framework.ts","../src/context.ts","../src/filter.ts","../src/history.ts"],"sourcesContent":["export class Exception extends Error {\n constructor(public message: string, public status: number, public description = 'Http exception') {\n super(message)\n }\n\n get data() {\n return { message: this.message, description: this.description, status: this.status, error: true }\n }\n}\n","import { Exception } from './base'\n\nexport class ValidateException extends Exception {\n constructor(message: string) {\n super(message, 400, 'Validate exception')\n }\n}\n","import { isPhecda, plainToClass, transformClass } from 'phecda-core'\nimport { ValidateException } from './exception/validate'\n\nimport type { P } from './types'\n\nexport const defaultPipe: P.Pipe = async ({ arg, reflect, index }: any) => {\n if (isPhecda(reflect)) {\n const instance = plainToClass(reflect, arg)\n const err = await transformClass(instance)\n if (err.length > 0)\n throw new ValidateException(err[0])\n\n arg = instance\n }\n else {\n if ([Number, Boolean].includes(reflect)) {\n arg = reflect(arg)\n\n if (reflect === Number && Object.is(arg, NaN))\n throw new ValidateException(`parameter ${Number(index) + 1} should be a number`)\n }\n }\n return arg\n}\n","import { Exception } from './base'\n\nexport class UndefinedException extends Exception {\n constructor(message: string) {\n super(message, 500, 'Undefined error')\n }\n}\n","import { Exception } from './base'\n\nexport class ForbiddenException extends Exception {\n constructor(message: string) {\n super(message, 403, 'Forbidden resource')\n }\n}\n","import { Exception } from './base'\n\nexport class BadRequestException extends Exception {\n constructor(message: string) {\n super(message, 400, 'Bad Request')\n }\n}\n","import { Exception } from './base'\n\nexport class NotFoundException extends Exception {\n constructor(message: string) {\n super(message, 404, 'Not Found')\n }\n}\n","import { Exception } from './base'\n\nexport class ConflictException extends Exception {\n constructor(message: string) {\n super(message, 409, 'Conflict')\n }\n}\n","import { Exception } from './base'\n\nexport class BadGatewayException extends Exception {\n constructor(message: string) {\n super(message, 502, 'Bad Gatrway')\n }\n}\n","import { Exception } from './base'\n\nexport class InvalidInputException extends Exception {\n constructor(message: string) {\n super(message, 502, 'Invalid Input')\n }\n}\n","import { Exception } from './base'\n\nexport class UnsupportedMediaTypeException extends Exception {\n constructor(message: string) {\n super(message, 415, 'Unsupported Media Type')\n }\n}\n","import { Exception } from './base'\n\nexport class PayloadLargeException extends Exception {\n constructor(message: string) {\n super(message, 413, 'Payload Too Large')\n }\n}\n","import { Exception } from './base'\n\nexport class TimeoutException extends Exception {\n constructor(message: string) {\n super(message, 408, 'Request Timeout',\n )\n }\n}\n","import { Exception } from './base'\n\nexport class UnauthorizedException extends Exception {\n constructor(message: string) {\n super(message, 401, 'Unauthorized')\n }\n}\n","import { Exception } from './base'\n\nexport class ServiceUnavailableException extends Exception {\n constructor(message: string) {\n super(message, 503, 'Service Unavailable')\n }\n}\n","import { Exception } from './base'\n\nexport class FrameworkException extends Exception {\n constructor(message: string) {\n super(`[phecda-server] ${message}`, 500, 'Framework Error')\n }\n}\n","import pc from 'picocolors'\nimport { defaultPipe } from './pipe'\nimport { ForbiddenException, FrameworkException } from './exception'\nimport { defaultFilter } from './filter'\nimport { Histroy } from './history'\nimport type { P } from './types'\nimport { IS_DEV, IS_STRICT } from './common'\nimport type { Meta } from './meta'\nimport { log } from './utils'\nexport const guardRecord = {} as Record<string, P.Guard>\n\nexport class Context<Data = any> {\n method: string\n params: string[]\n history = new Histroy()\n\n static filter: P.Filter = defaultFilter\n static pipeRecord: Record<string, P.Pipe> = {\n default: defaultPipe,\n }\n\n static guardRecord: Record<string, P.Guard> = {}\n static interceptorRecord: Record<string, P.Interceptor> = {}\n\n static pluginRecord: Record<string, any> = {}\n postInterceptors: Function[]\n\n constructor(public tag: string, public data: Data) {\n if (IS_DEV)\n // @ts-expect-error work for debug\n data._context = this\n }\n\n usePipe(args: { arg: any; pipe?: string; pipeOpts?: any; type: string; key: string; index: number; reflect: any }[]) {\n return Promise.all(args.map((item) => {\n if (item.pipe && !Context.pipeRecord[item.pipe]) {\n if (IS_STRICT)\n throw new FrameworkException(`can't find pipe named '${item.pipe}'`)\n\n else\n return Context.pipeRecord.default(item, this.tag, this.data)\n }\n\n return Context.pipeRecord[item.pipe || 'default'](item, this.tag, this.data)\n }))\n }\n\n useFilter(arg: any) {\n return Context.filter(arg, this.tag, this.data)\n }\n\n async useGuard(guards: string[]) {\n for (const guard of guards) {\n if (this.history.record(guard, 'guard')) {\n if (!(guard in Context.guardRecord)) {\n if (IS_STRICT)\n throw new FrameworkException(`can't find guard named '${guard}'`)\n continue\n }\n if (!await Context.guardRecord[guard](this.tag, this.data))\n throw new ForbiddenException(`Guard exception--${guard}`)\n }\n }\n }\n\n async usePostInterceptor(ret: any) {\n for (const cb of this.postInterceptors)\n ret = await cb(ret) || ret\n\n return ret\n }\n\n async useInterceptor(interceptors: string[]) {\n const ret = []\n for (const interceptor of interceptors) {\n if (this.history.record(interceptor, 'interceptor')) {\n if (!(interceptor in Context.interceptorRecord)) {\n if (IS_STRICT)\n throw new FrameworkException(`can't find interceptor named '${interceptor}'`)\n\n continue\n }\n const postInterceptor = await Context.interceptorRecord[interceptor](this.tag, this.data)\n if (postInterceptor !== undefined) {\n if (typeof postInterceptor === 'function')\n ret.push(postInterceptor)\n\n else\n return postInterceptor\n }\n }\n }\n this.postInterceptors = ret\n }\n\n static usePlugin(plugins: string[]) {\n const ret = []\n for (const m of plugins) {\n if (!(m in Context.pluginRecord)) {\n if (IS_STRICT)\n throw new FrameworkException(`can't find middleware named '${m}'`)\n\n continue\n }\n ret.push(Context.pluginRecord[m])\n }\n return ret as any[]\n }\n}\nexport function addPlugin<C>(key: string, handler: C) {\n Context.pluginRecord[key] = handler\n}\n\nexport function addPipe(key: string, pipe: P.Pipe) {\n Context.pipeRecord[key] = pipe\n}\n\nexport function setFilter(filter: P.Filter) {\n Context.filter = filter\n}\n\nexport function addGuard(key: string, handler: P.Guard) {\n Context.guardRecord[key] = handler\n}\n\nexport function addInterceptor(key: string, handler: P.Interceptor) {\n Context.interceptorRecord[key] = handler\n}\n\nexport function isAopDepInject(meta: Meta[], { guards, interceptors, plugins }: {\n guards?: string[]\n interceptors?: string[]\n plugins?: string[]\n} = {}) {\n const pluginSet = new Set<string>(plugins)\n\n const guardSet = new Set<string>(guards)\n const interceptorSet = new Set<string>(interceptors)\n const pipeSet = new Set<string>()\n meta.forEach(({ data }) => {\n data.interceptors.forEach(i => interceptorSet.add(i))\n data.guards.forEach(i => guardSet.add(i))\n data.plugins.forEach(i => pluginSet.add(i))\n data.params.forEach((i) => {\n if (i.pipe)\n pipeSet.add(i.pipe)\n })\n });\n\n [...pluginSet].forEach((i) => {\n if (!Context.pluginRecord[i])\n log(`${pc.white(`Plugin [${i}]`)} doesn't exist`, 'warn')\n });\n [...guardSet].forEach((i) => {\n if (!Context.guardRecord[i])\n log(`${pc.red(`Guard [${i}]`)} doesn't exist`, 'warn')\n });\n [...interceptorSet].forEach((i) => {\n if (!Context.interceptorRecord[i])\n log(`${pc.cyan(`Interceptor [${i}]`)} doesn't exist`, 'warn')\n });\n [...pipeSet].forEach((i) => {\n if (!Context.pipeRecord[i])\n log(`${pc.blue(`Pipe [${i}]`)} doesn't exist`, 'warn')\n })\n}\n","import { Exception, UndefinedException } from './exception'\nimport type { P } from './types'\nimport { log } from './utils'\n\nexport const defaultFilter: P.Filter = (e: any) => {\n if (!(e instanceof Exception)) {\n log(e.message, 'error')\n console.error(e.stack)\n e = new UndefinedException(e.message || e)\n }\n else {\n log(`[${e.constructor.name}] ${e.message}`, 'error')\n console.error(e.stack)\n }\n\n return e.data\n}\n","export class Histroy {\n guard: string[] = []\n interceptor: string[] = []\n record(name: string, type: 'guard' | 'interceptor') {\n if (!this[type].includes(name)) {\n this[type].push(name)\n return true\n }\n return false\n }\n}\n"],"mappings":"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","names":["Exception","Error","message","status","description","constructor","data","error","ValidateException","Exception","constructor","message","isPhecda","plainToClass","transformClass","defaultPipe","arg","reflect","index","isPhecda","instance","plainToClass","err","transformClass","length","ValidateException","Number","Boolean","includes","Object","is","NaN","UndefinedException","Exception","constructor","message","ForbiddenException","Exception","constructor","message","BadRequestException","Exception","constructor","message","NotFoundException","Exception","constructor","message","ConflictException","Exception","constructor","message","BadGatewayException","Exception","constructor","message","InvalidInputException","Exception","constructor","message","UnsupportedMediaTypeException","Exception","constructor","message","PayloadLargeException","Exception","constructor","message","TimeoutException","Exception","constructor","message","UnauthorizedException","Exception","constructor","message","ServiceUnavailableException","Exception","constructor","message","FrameworkException","Exception","constructor","message","pc","defaultFilter","e","Exception","log","message","console","error","stack","UndefinedException","constructor","name","data","Histroy","guard","interceptor","record","name","type","includes","push","guardRecord","Context","tag","data","method","params","history","postInterceptors","constructor","Histroy","IS_DEV","_context","usePipe","args","Promise","all","map","item","pipe","pipeRecord","IS_STRICT","FrameworkException","default","useFilter","arg","filter","useGuard","guards","guard","record","ForbiddenException","usePostInterceptor","ret","cb","useInterceptor","interceptors","interceptor","interceptorRecord","postInterceptor","undefined","push","usePlugin","plugins","m","pluginRecord","defaultFilter","defaultPipe","addPlugin","key","handler","addPipe","setFilter","addGuard","addInterceptor","isAopDepInject","meta","pluginSet","Set","guardSet","interceptorSet","pipeSet","forEach","i","add","log","pc","white","red","cyan","blue"]}
@@ -1,11 +1,9 @@
1
1
  import {
2
2
  IS_DEV,
3
3
  UNMOUNT_SYMBOL,
4
+ __name,
4
5
  log
5
- } from "./chunk-FPN7NODB.mjs";
6
- import {
7
- __name
8
- } from "./chunk-Q4FA4TAV.mjs";
6
+ } from "./chunk-AJ2HYENF.mjs";
9
7
 
10
8
  // src/meta.ts
11
9
  var Meta = class {
@@ -123,6 +121,11 @@ async function Factory(Modules, opts = {}) {
123
121
  const { http, rpc } = opts;
124
122
  injectProperty("watcher", ({ eventName, instance, key, options }) => {
125
123
  const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
124
+ if (!instance[UNMOUNT_SYMBOL])
125
+ instance[UNMOUNT_SYMBOL] = [];
126
+ instance[UNMOUNT_SYMBOL].push(() => {
127
+ emitter.off(eventName, fn);
128
+ });
126
129
  if (options?.once)
127
130
  emitter.once(eventName, fn);
128
131
  else
@@ -318,4 +321,4 @@ export {
318
321
  emitter,
319
322
  Factory
320
323
  };
321
- //# sourceMappingURL=chunk-MFGAP3PV.mjs.map
324
+ //# sourceMappingURL=chunk-WRMLZ7NU.mjs.map