phecda-server 4.0.7 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/{chunk-DQUH5BP6.mjs → chunk-5KOB2WHH.mjs} +1 -1
  2. package/dist/{chunk-DQUH5BP6.mjs.map → chunk-5KOB2WHH.mjs.map} +1 -1
  3. package/dist/{chunk-WWYSLFOI.js → chunk-5L4K7XEB.js} +33 -31
  4. package/dist/chunk-5L4K7XEB.js.map +1 -0
  5. package/dist/{chunk-FCLWCFQS.js → chunk-63KBHOSB.js} +3 -3
  6. package/dist/{chunk-ZZ2QKZ46.js → chunk-BDIQWWHN.js} +1 -1
  7. package/dist/{chunk-ZZ2QKZ46.js.map → chunk-BDIQWWHN.js.map} +1 -1
  8. package/dist/{chunk-ATMZNJSE.mjs → chunk-MIIYJMMM.mjs} +19 -15
  9. package/dist/chunk-MIIYJMMM.mjs.map +1 -0
  10. package/dist/{chunk-43ZXHSVH.mjs → chunk-Q3V3ERU3.mjs} +2 -2
  11. package/dist/{chunk-JZGLQ4FQ.js → chunk-WBHZCJSN.js} +61 -57
  12. package/dist/chunk-WBHZCJSN.js.map +1 -0
  13. package/dist/{chunk-F5PQVQTY.mjs → chunk-WQBXOVND.mjs} +16 -14
  14. package/dist/chunk-WQBXOVND.mjs.map +1 -0
  15. package/dist/{core-72951cf9.d.ts → core-d080d872.d.ts} +21 -13
  16. package/dist/index.d.ts +24 -25
  17. package/dist/index.js +57 -57
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +4 -4
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/rpc/rabbitmq/index.d.ts +2 -5
  22. package/dist/rpc/rabbitmq/index.js +22 -20
  23. package/dist/rpc/rabbitmq/index.js.map +1 -1
  24. package/dist/rpc/rabbitmq/index.mjs +17 -15
  25. package/dist/rpc/rabbitmq/index.mjs.map +1 -1
  26. package/dist/rpc/redis/index.d.ts +2 -5
  27. package/dist/rpc/redis/index.js +23 -21
  28. package/dist/rpc/redis/index.js.map +1 -1
  29. package/dist/rpc/redis/index.mjs +18 -16
  30. package/dist/rpc/redis/index.mjs.map +1 -1
  31. package/dist/server/express/index.d.ts +2 -5
  32. package/dist/server/express/index.js +28 -26
  33. package/dist/server/express/index.js.map +1 -1
  34. package/dist/server/express/index.mjs +9 -7
  35. package/dist/server/express/index.mjs.map +1 -1
  36. package/dist/server/fastify/index.d.ts +2 -5
  37. package/dist/server/fastify/index.js +26 -24
  38. package/dist/server/fastify/index.js.map +1 -1
  39. package/dist/server/fastify/index.mjs +9 -7
  40. package/dist/server/fastify/index.mjs.map +1 -1
  41. package/dist/server/h3/index.d.ts +2 -5
  42. package/dist/server/h3/index.js +150 -160
  43. package/dist/server/h3/index.js.map +1 -1
  44. package/dist/server/h3/index.mjs +144 -154
  45. package/dist/server/h3/index.mjs.map +1 -1
  46. package/dist/server/koa/index.d.ts +2 -5
  47. package/dist/server/koa/index.js +28 -26
  48. package/dist/server/koa/index.js.map +1 -1
  49. package/dist/server/koa/index.mjs +9 -7
  50. package/dist/server/koa/index.mjs.map +1 -1
  51. package/dist/test.d.ts +1 -1
  52. package/dist/test.js +5 -5
  53. package/dist/test.mjs +2 -2
  54. package/package.json +4 -1
  55. package/dist/chunk-ATMZNJSE.mjs.map +0 -1
  56. package/dist/chunk-F5PQVQTY.mjs.map +0 -1
  57. package/dist/chunk-JZGLQ4FQ.js.map +0 -1
  58. package/dist/chunk-WWYSLFOI.js.map +0 -1
  59. /package/dist/{chunk-FCLWCFQS.js.map → chunk-63KBHOSB.js.map} +0 -0
  60. /package/dist/{chunk-43ZXHSVH.mjs.map → chunk-Q3V3ERU3.mjs.map} +0 -0
@@ -64,4 +64,4 @@ export {
64
64
  getConfig,
65
65
  setConfig
66
66
  };
67
- //# sourceMappingURL=chunk-DQUH5BP6.mjs.map
67
+ //# sourceMappingURL=chunk-5KOB2WHH.mjs.map
@@ -1 +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\nexport const ERROR_SYMBOL = '__PS_ERROR__'\n","import pc from 'picocolors'\nimport { DataMap } from 'phecda-core'\n\nlet time: number\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 const current = Date.now()\n const interval = (time && current - time) ? `+${current - time}` : ''\n time = current\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)} ${pc.gray(interval)}`)\n}\n\nexport function getConfig<C = any>(key: string, defaultConf?: C): C {\n if (!DataMap[key]) {\n if (defaultConf)\n return defaultConf\n throw new Error(`config \"${key}\" is not existed`)\n }\n\n return DataMap[key]\n}\n\nexport function setConfig<C = any>(key: string, conf: C, force = true) {\n if (DataMap[key] && !force)\n return\n\n DataMap[key] = conf\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;AAChC,IAAMC,eAAe;;;ACP5B,OAAOC,QAAQ;AACf,SAASC,eAAe;AAExB,IAAIC;AAEG,SAASC,IAAIC,KAAaC,QAAmC,QAAQ;AAC1E,QAAMC,QAAS;IAAEC,OAAO;IAAOC,MAAM;IAASC,MAAM;EAAS,EAAYJ;AACzE,QAAMK,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYZ,QAAQU,UAAUV,OAAQ,IAAIU,UAAUV,SAAS;AACnEA,SAAOU;AAEPG,UAAQZ,IAAI,GAAGa,GAAGC,QAAQ,iBAAA,KAAsBD,GAAGE,KAAK,GAAGR,KAAKS,SAAQ,KAAMT,KAAKU,WAAU,KAAMV,KAAKW,WAAU,GAAI,KAAKL,GAAGV,OAAOF,GAAAA,KAAQY,GAAGE,KAAKJ,QAAAA,GAAW;AAClK;AARgBX;AAUT,SAASmB,UAAmBC,KAAaC,aAAoB;AAClE,MAAI,CAACC,QAAQF,MAAM;AACjB,QAAIC;AACF,aAAOA;AACT,UAAM,IAAIE,MAAM,WAAWH,qBAAqB;EAClD;AAEA,SAAOE,QAAQF;AACjB;AARgBD;AAUT,SAASK,UAAmBJ,KAAaK,MAASC,QAAQ,MAAM;AACrE,MAAIJ,QAAQF,QAAQ,CAACM;AACnB;AAEFJ,UAAQF,OAAOK;AACjB;AALgBD;","names":["MERGE_SYMBOL","UNMOUNT_SYMBOL","MODULE_SYMBOL","META_SYMBOL","APP_SYMBOL","IS_DEV","process","env","NODE_ENV","IS_STRICT","PS_STRICT","ERROR_SYMBOL","pc","DataMap","time","log","msg","level","color","error","info","warn","date","Date","current","now","interval","console","pc","magenta","gray","getHours","getMinutes","getSeconds","getConfig","key","defaultConf","DataMap","Error","setConfig","conf","force"]}
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\nexport const ERROR_SYMBOL = '__PS_ERROR__'\n","import pc from 'picocolors'\nimport { DataMap } from 'phecda-core'\n\nlet time: number\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 const current = Date.now()\n const interval = (time && current - time) ? `+${current - time}` : ''\n time = current\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)} ${pc.gray(interval)}`)\n}\n\nexport function getConfig<C = any>(key: string, defaultConf?: C): C {\n if (!DataMap[key]) {\n if (defaultConf)\n return defaultConf\n throw new Error(`config \"${key}\" is not existed`)\n }\n\n return DataMap[key]\n}\n\nexport function setConfig<C = any>(key: string, conf: C, force = true) {\n if (DataMap[key] && !force)\n return\n\n DataMap[key] = conf\n}\n\n\n\n\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;AAChC,IAAMC,eAAe;;;ACP5B,OAAOC,QAAQ;AACf,SAASC,eAAe;AAExB,IAAIC;AAEG,SAASC,IAAIC,KAAaC,QAAmC,QAAQ;AAC1E,QAAMC,QAAS;IAAEC,OAAO;IAAOC,MAAM;IAASC,MAAM;EAAS,EAAYJ;AACzE,QAAMK,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYZ,QAAQU,UAAUV,OAAQ,IAAIU,UAAUV,SAAS;AACnEA,SAAOU;AAEPG,UAAQZ,IAAI,GAAGa,GAAGC,QAAQ,iBAAA,KAAsBD,GAAGE,KAAK,GAAGR,KAAKS,SAAQ,KAAMT,KAAKU,WAAU,KAAMV,KAAKW,WAAU,GAAI,KAAKL,GAAGV,OAAOF,GAAAA,KAAQY,GAAGE,KAAKJ,QAAAA,GAAW;AAClK;AARgBX;AAUT,SAASmB,UAAmBC,KAAaC,aAAoB;AAClE,MAAI,CAACC,QAAQF,MAAM;AACjB,QAAIC;AACF,aAAOA;AACT,UAAM,IAAIE,MAAM,WAAWH,qBAAqB;EAClD;AAEA,SAAOE,QAAQF;AACjB;AARgBD;AAUT,SAASK,UAAmBJ,KAAaK,MAASC,QAAQ,MAAM;AACrE,MAAIJ,QAAQF,QAAQ,CAACM;AACnB;AAEFJ,UAAQF,OAAOK;AACjB;AALgBD;","names":["MERGE_SYMBOL","UNMOUNT_SYMBOL","MODULE_SYMBOL","META_SYMBOL","APP_SYMBOL","IS_DEV","process","env","NODE_ENV","IS_STRICT","PS_STRICT","ERROR_SYMBOL","pc","DataMap","time","log","msg","level","color","error","info","warn","date","Date","current","now","interval","console","pc","magenta","gray","getHours","getMinutes","getSeconds","getConfig","key","defaultConf","DataMap","Error","setConfig","conf","force"]}
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkZZ2QKZ46js = require('./chunk-ZZ2QKZ46.js');
6
+ var _chunkBDIQWWHNjs = require('./chunk-BDIQWWHN.js');
7
7
 
8
8
  // src/meta.ts
9
9
  var Meta = class {
@@ -16,10 +16,10 @@ var Meta = class {
16
16
  this.paramsType = paramsType;
17
17
  }
18
18
  };
19
- _chunkZZ2QKZ46js.__name.call(void 0, Meta, "Meta");
19
+ _chunkBDIQWWHNjs.__name.call(void 0, Meta, "Meta");
20
20
 
21
21
  // src/compiler/rpc.ts
22
- var Compiler = /* @__PURE__ */ _chunkZZ2QKZ46js.__name.call(void 0, (_class =class Compiler2 {
22
+ var Compiler = /* @__PURE__ */ _chunkBDIQWWHNjs.__name.call(void 0, (_class =class Compiler2 {
23
23
  __init() {this.classMap = {}}
24
24
  constructor() {;_class.prototype.__init.call(this);
25
25
  }
@@ -55,10 +55,10 @@ function generateRPCCode(meta) {
55
55
  compiler.addMethod(i);
56
56
  return compiler.getContent();
57
57
  }
58
- _chunkZZ2QKZ46js.__name.call(void 0, generateRPCCode, "generateRPCCode");
58
+ _chunkBDIQWWHNjs.__name.call(void 0, generateRPCCode, "generateRPCCode");
59
59
 
60
60
  // src/compiler/http.ts
61
- var Compiler3 = /* @__PURE__ */ _chunkZZ2QKZ46js.__name.call(void 0, (_class2 =class Compiler4 {
61
+ var Compiler3 = /* @__PURE__ */ _chunkBDIQWWHNjs.__name.call(void 0, (_class2 =class Compiler4 {
62
62
  __init2() {this.classMap = {}}
63
63
  constructor() {;_class2.prototype.__init2.call(this);
64
64
  }
@@ -97,7 +97,7 @@ function generateHTTPCode(meta) {
97
97
  compiler.addMethod(i);
98
98
  return compiler.getContent();
99
99
  }
100
- _chunkZZ2QKZ46js.__name.call(void 0, generateHTTPCode, "generateHTTPCode");
100
+ _chunkBDIQWWHNjs.__name.call(void 0, generateHTTPCode, "generateHTTPCode");
101
101
 
102
102
  // src/core.ts
103
103
  require('reflect-metadata');
@@ -108,7 +108,7 @@ var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
108
108
  function Injectable() {
109
109
  return (target) => _phecdacore.Empty.call(void 0, target);
110
110
  }
111
- _chunkZZ2QKZ46js.__name.call(void 0, Injectable, "Injectable");
111
+ _chunkBDIQWWHNjs.__name.call(void 0, Injectable, "Injectable");
112
112
  var debug = _debug2.default.call(void 0, "phecda-server");
113
113
  var emitter = new (0, _events2.default)();
114
114
  async function Factory(Modules, opts = {}) {
@@ -118,25 +118,27 @@ async function Factory(Modules, opts = {}) {
118
118
  const constructorSet = /* @__PURE__ */ new WeakSet();
119
119
  const moduleGraph = /* @__PURE__ */ new Map();
120
120
  const { http, rpc } = opts;
121
- _phecdacore.injectProperty.call(void 0, "watcher", ({ eventName, instance, key, options }) => {
122
- const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
123
- if (!instance[_chunkZZ2QKZ46js.UNMOUNT_SYMBOL])
124
- instance[_chunkZZ2QKZ46js.UNMOUNT_SYMBOL] = [];
125
- instance[_chunkZZ2QKZ46js.UNMOUNT_SYMBOL].push(() => {
126
- emitter.off(eventName, fn);
121
+ if (!_phecdacore.getProperty.call(void 0, "watcher")) {
122
+ _phecdacore.injectProperty.call(void 0, "watcher", ({ eventName, instance, key, options }) => {
123
+ const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
124
+ if (!instance[_chunkBDIQWWHNjs.UNMOUNT_SYMBOL])
125
+ instance[_chunkBDIQWWHNjs.UNMOUNT_SYMBOL] = [];
126
+ instance[_chunkBDIQWWHNjs.UNMOUNT_SYMBOL].push(() => {
127
+ emitter.off(eventName, fn);
128
+ });
129
+ if (_optionalChain([options, 'optionalAccess', _2 => _2.once]))
130
+ emitter.once(eventName, fn);
131
+ else
132
+ emitter.on(eventName, fn);
127
133
  });
128
- if (_optionalChain([options, 'optionalAccess', _2 => _2.once]))
129
- emitter.once(eventName, fn);
130
- else
131
- emitter.on(eventName, fn);
132
- });
134
+ }
133
135
  async function del(tag) {
134
136
  if (!moduleMap.has(tag))
135
137
  return;
136
138
  const instance = moduleMap.get(tag);
137
139
  debug(`unmount module "${tag}"`);
138
- if (_optionalChain([instance, 'optionalAccess', _3 => _3[_chunkZZ2QKZ46js.UNMOUNT_SYMBOL]])) {
139
- for (const cb of instance[_chunkZZ2QKZ46js.UNMOUNT_SYMBOL])
140
+ if (_optionalChain([instance, 'optionalAccess', _3 => _3[_chunkBDIQWWHNjs.UNMOUNT_SYMBOL]])) {
141
+ for (const cb of instance[_chunkBDIQWWHNjs.UNMOUNT_SYMBOL])
140
142
  await cb();
141
143
  }
142
144
  debug(`del module "${tag}"`);
@@ -148,7 +150,7 @@ async function Factory(Modules, opts = {}) {
148
150
  }
149
151
  return instance;
150
152
  }
151
- _chunkZZ2QKZ46js.__name.call(void 0, del, "del");
153
+ _chunkBDIQWWHNjs.__name.call(void 0, del, "del");
152
154
  async function add(Module) {
153
155
  const tag = _optionalChain([Module, 'access', _4 => _4.prototype, 'optionalAccess', _5 => _5.__TAG__]) || Module.name;
154
156
  const oldInstance = await del(tag);
@@ -166,7 +168,7 @@ async function Factory(Modules, opts = {}) {
166
168
  });
167
169
  }
168
170
  }
169
- _chunkZZ2QKZ46js.__name.call(void 0, add, "add");
171
+ _chunkBDIQWWHNjs.__name.call(void 0, add, "add");
170
172
  async function buildNestModule(Module) {
171
173
  const paramtypes = getParamTypes(Module);
172
174
  let instance;
@@ -177,7 +179,7 @@ async function Factory(Modules, opts = {}) {
177
179
  throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${tag}--[module] ${Module}`);
178
180
  if (constructorMap.get(tag) !== Module && !constructorSet.has(Module)) {
179
181
  constructorSet.add(Module);
180
- _chunkZZ2QKZ46js.log.call(void 0, `Synonym module: Module taged "${tag}" has been loaded before, so phecda-server won't load Module "${Module.name}"`, "warn");
182
+ _chunkBDIQWWHNjs.log.call(void 0, `Synonym module: Module taged "${tag}" has been loaded before, so phecda-server won't load Module "${Module.name}"`, "warn");
181
183
  }
182
184
  return {
183
185
  instance,
@@ -211,7 +213,7 @@ async function Factory(Modules, opts = {}) {
211
213
  tag
212
214
  };
213
215
  }
214
- _chunkZZ2QKZ46js.__name.call(void 0, buildNestModule, "buildNestModule");
216
+ _chunkBDIQWWHNjs.__name.call(void 0, buildNestModule, "buildNestModule");
215
217
  for (const Module of Modules)
216
218
  await buildNestModule(Module);
217
219
  function writeCode() {
@@ -224,9 +226,9 @@ async function Factory(Modules, opts = {}) {
224
226
  _fs2.default.promises.writeFile(rpc, generateRPCCode(meta.map((item) => item.data)));
225
227
  }
226
228
  }
227
- _chunkZZ2QKZ46js.__name.call(void 0, writeCode, "writeCode");
229
+ _chunkBDIQWWHNjs.__name.call(void 0, writeCode, "writeCode");
228
230
  writeCode();
229
- if (_chunkZZ2QKZ46js.IS_DEV) {
231
+ if (_chunkBDIQWWHNjs.IS_DEV) {
230
232
  if (!globalThis.__PS_HMR__)
231
233
  globalThis.__PS_HMR__ = [];
232
234
  _optionalChain([globalThis, 'access', _8 => _8.__PS_HMR__, 'optionalAccess', _9 => _9.push, 'call', _10 => _10(async (files) => {
@@ -249,7 +251,7 @@ async function Factory(Modules, opts = {}) {
249
251
  del
250
252
  };
251
253
  }
252
- _chunkZZ2QKZ46js.__name.call(void 0, Factory, "Factory");
254
+ _chunkBDIQWWHNjs.__name.call(void 0, Factory, "Factory");
253
255
  function getMetaFromInstance(instance, tag, name) {
254
256
  const vars = _phecdacore.getExposeKey.call(void 0, instance).filter((item) => item !== "__CLASS");
255
257
  const baseState = _phecdacore.getState.call(void 0, instance, "__CLASS") || {};
@@ -312,11 +314,11 @@ function getMetaFromInstance(instance, tag, name) {
312
314
  return new Meta(meta, _phecdacore.getHandler.call(void 0, instance, i), getParamTypes(instance, i) || []);
313
315
  });
314
316
  }
315
- _chunkZZ2QKZ46js.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
317
+ _chunkBDIQWWHNjs.__name.call(void 0, getMetaFromInstance, "getMetaFromInstance");
316
318
  function getParamTypes(Module, key) {
317
319
  return Reflect.getMetadata("design:paramtypes", Module, key);
318
320
  }
319
- _chunkZZ2QKZ46js.__name.call(void 0, getParamTypes, "getParamTypes");
321
+ _chunkBDIQWWHNjs.__name.call(void 0, getParamTypes, "getParamTypes");
320
322
  function initState(state) {
321
323
  if (!state.define)
322
324
  state.define = {};
@@ -329,7 +331,7 @@ function initState(state) {
329
331
  if (!state.interceptors)
330
332
  state.interceptors = [];
331
333
  }
332
- _chunkZZ2QKZ46js.__name.call(void 0, initState, "initState");
334
+ _chunkBDIQWWHNjs.__name.call(void 0, initState, "initState");
333
335
 
334
336
 
335
337
 
@@ -339,4 +341,4 @@ _chunkZZ2QKZ46js.__name.call(void 0, initState, "initState");
339
341
 
340
342
 
341
343
  exports.Meta = Meta; exports.generateRPCCode = generateRPCCode; exports.generateHTTPCode = generateHTTPCode; exports.Injectable = Injectable; exports.emitter = emitter; exports.Factory = Factory;
342
- //# sourceMappingURL=chunk-WWYSLFOI.js.map
344
+ //# sourceMappingURL=chunk-5L4K7XEB.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","getProperty","getState","injectProperty","isPhecda","registerAsync","Debug","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","del","has","get","cb","delete","length","splice","add","Module","prototype","__TAG__","oldInstance","newModule","buildNestModule","forEach","module","paramtypes","getParamTypes","Error","log","set","undefined","paramtypesInstances","sub","subTag","Set","getMetaFromInstance","writeCode","promises","writeFile","map","item","IS_DEV","globalThis","__PS_HMR__","files","file","vars","filter","baseState","initState","state","unshift","index","define","header","plugins","guards","interceptors","Reflect","getMetadata"],"mappings":"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","sourcesContent":["import type { P } from './types'\n\nexport class Meta {\n constructor(public data: P.MetaData, 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.MetaData) {\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.MetaData[]) {\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.MetaData) {\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.MetaData[]) {\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, getProperty, getState, injectProperty, isPhecda, registerAsync } from 'phecda-core'\nimport Debug from 'debug'\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\n if (!getProperty('watcher')) {\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\n // only remove module in moduleMap(won't remove indiect module)\n async function del(tag: string) {\n if (!moduleMap.has(tag))\n return\n\n const instance = moduleMap.get(tag)\n\n debug(`unmount module \"${tag}\"`)\n\n if (instance?.[UNMOUNT_SYMBOL]) {\n for (const cb of instance[UNMOUNT_SYMBOL])\n await cb()\n }\n\n debug(`del module \"${tag}\"`)\n\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 return instance\n }\n\n async function add(Module: Construct) {\n const tag = Module.prototype?.__TAG__ || Module.name\n const oldInstance = await del(tag)\n\n const { instance: newModule } = await buildNestModule(Module)\n\n if (oldInstance && moduleGraph.has(tag)) {\n debug(`replace module \"${tag}\"`);\n\n [...moduleGraph.get(tag)!].forEach((tag) => {\n const module = moduleMap.get(tag)\n for (const key in module) {\n if (module[key] === oldInstance)\n module[key] = newModule\n }\n })\n }\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 debug(`instantiate module \"${tag}\"`)\n\n instance = new Module(...paramtypesInstances)\n }\n else {\n debug(`instantiate module \"${tag}\"`)\n\n instance = new Module()\n }\n meta.push(...getMetaFromInstance(instance, tag, Module.name))\n\n debug(`init module \"${tag}\"`)\n\n await registerAsync(instance)\n\n debug(`add module \"${tag}\"`)\n\n moduleMap.set(tag, instance)\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 if (http) {\n debug(`write http code to ${http}`)\n fs.promises.writeFile(http, generateHTTPCode(meta.map(item => item.data)))\n }\n if (rpc) {\n debug(`write rpc code to ${rpc}`)\n\n fs.promises.writeFile(rpc, generateRPCCode(meta.map(item => item.data)))\n }\n }\n\n writeCode()\n if (IS_DEV) {\n if (!globalThis.__PS_HMR__)\n globalThis.__PS_HMR__ = []\n\n globalThis.__PS_HMR__?.push(async (files: string[]) => {\n debug('reload files ')\n\n for (const file of files) {\n const module = await import(file)\n for (const i in module) {\n if (isPhecda(module[i]))\n await add(module[i])\n }\n }\n writeCode()\n })\n }\n\n return {\n moduleMap,\n meta,\n constructorMap,\n add,\n del,\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.MetaData\n initState(baseState)\n\n return vars.map((i) => {\n const meta = {} as P.MetaData\n const state = (getState(instance, i) || {}) as P.MetaData\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.filter = state.filter || baseState.filter\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.MetaData, 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 _chunkZZ2QKZ46js = require('./chunk-ZZ2QKZ46.js');
3
+ var _chunkBDIQWWHNjs = require('./chunk-BDIQWWHN.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
- _chunkZZ2QKZ46js.__name.call(void 0, resolveDep, "resolveDep");
11
+ _chunkBDIQWWHNjs.__name.call(void 0, resolveDep, "resolveDep");
12
12
 
13
13
 
14
14
 
15
15
  exports.resolveDep = resolveDep;
16
- //# sourceMappingURL=chunk-FCLWCFQS.js.map
16
+ //# sourceMappingURL=chunk-63KBHOSB.js.map
@@ -64,4 +64,4 @@ __name(setConfig, "setConfig");
64
64
 
65
65
 
66
66
  exports.__name = __name; exports.__publicField = __publicField; 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; exports.ERROR_SYMBOL = ERROR_SYMBOL; exports.log = log; exports.getConfig = getConfig; exports.setConfig = setConfig;
67
- //# sourceMappingURL=chunk-ZZ2QKZ46.js.map
67
+ //# sourceMappingURL=chunk-BDIQWWHN.js.map
@@ -1 +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","ERROR_SYMBOL","pc","DataMap","time","log","msg","level","color","error","info","warn","date","Date","current","now","interval","console","magenta","gray","getHours","getMinutes","getSeconds","getConfig","key","defaultConf","Error","setConfig","conf","force"],"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;AAChC,IAAMC,eAAe;;;ACP5B,OAAOC,QAAQ;AACf,SAASC,eAAe;AAExB,IAAIC;AAEG,SAASC,IAAIC,KAAaC,QAAmC,QAAQ;AAC1E,QAAMC,QAAS;IAAEC,OAAO;IAAOC,MAAM;IAASC,MAAM;EAAS,EAAYJ;AACzE,QAAMK,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYZ,QAAQU,UAAUV,OAAQ,IAAIU,UAAUV,SAAS;AACnEA,SAAOU;AAEPG,UAAQZ,IAAI,GAAGH,GAAGgB,QAAQ,iBAAA,KAAsBhB,GAAGiB,KAAK,GAAGP,KAAKQ,SAAQ,KAAMR,KAAKS,WAAU,KAAMT,KAAKU,WAAU,GAAI,KAAKpB,GAAGM,OAAOF,GAAAA,KAAQJ,GAAGiB,KAAKH,QAAAA,GAAW;AAClK;AARgBX;AAUT,SAASkB,UAAmBC,KAAaC,aAAoB;AAClE,MAAI,CAACtB,QAAQqB,MAAM;AACjB,QAAIC;AACF,aAAOA;AACT,UAAM,IAAIC,MAAM,WAAWF,qBAAqB;EAClD;AAEA,SAAOrB,QAAQqB;AACjB;AARgBD;AAUT,SAASI,UAAmBH,KAAaI,MAASC,QAAQ,MAAM;AACrE,MAAI1B,QAAQqB,QAAQ,CAACK;AACnB;AAEF1B,UAAQqB,OAAOI;AACjB;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\nexport const ERROR_SYMBOL = '__PS_ERROR__'\n","import pc from 'picocolors'\nimport { DataMap } from 'phecda-core'\n\nlet time: number\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 const current = Date.now()\n const interval = (time && current - time) ? `+${current - time}` : ''\n time = current\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)} ${pc.gray(interval)}`)\n}\n\nexport function getConfig<C = any>(key: string, defaultConf?: C): C {\n if (!DataMap[key]) {\n if (defaultConf)\n return defaultConf\n throw new Error(`config \"${key}\" is not existed`)\n }\n\n return DataMap[key]\n}\n\nexport function setConfig<C = any>(key: string, conf: C, force = true) {\n if (DataMap[key] && !force)\n return\n\n DataMap[key] = conf\n}\n"]}
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","ERROR_SYMBOL","pc","DataMap","time","log","msg","level","color","error","info","warn","date","Date","current","now","interval","console","magenta","gray","getHours","getMinutes","getSeconds","getConfig","key","defaultConf","Error","setConfig","conf","force"],"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;AAChC,IAAMC,eAAe;;;ACP5B,OAAOC,QAAQ;AACf,SAASC,eAAe;AAExB,IAAIC;AAEG,SAASC,IAAIC,KAAaC,QAAmC,QAAQ;AAC1E,QAAMC,QAAS;IAAEC,OAAO;IAAOC,MAAM;IAASC,MAAM;EAAS,EAAYJ;AACzE,QAAMK,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYZ,QAAQU,UAAUV,OAAQ,IAAIU,UAAUV,SAAS;AACnEA,SAAOU;AAEPG,UAAQZ,IAAI,GAAGH,GAAGgB,QAAQ,iBAAA,KAAsBhB,GAAGiB,KAAK,GAAGP,KAAKQ,SAAQ,KAAMR,KAAKS,WAAU,KAAMT,KAAKU,WAAU,GAAI,KAAKpB,GAAGM,OAAOF,GAAAA,KAAQJ,GAAGiB,KAAKH,QAAAA,GAAW;AAClK;AARgBX;AAUT,SAASkB,UAAmBC,KAAaC,aAAoB;AAClE,MAAI,CAACtB,QAAQqB,MAAM;AACjB,QAAIC;AACF,aAAOA;AACT,UAAM,IAAIC,MAAM,WAAWF,qBAAqB;EAClD;AAEA,SAAOrB,QAAQqB;AACjB;AARgBD;AAUT,SAASI,UAAmBH,KAAaI,MAASC,QAAQ,MAAM;AACrE,MAAI1B,QAAQqB,QAAQ,CAACK;AACnB;AAEF1B,UAAQqB,OAAOI;AACjB;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\nexport const ERROR_SYMBOL = '__PS_ERROR__'\n","import pc from 'picocolors'\nimport { DataMap } from 'phecda-core'\n\nlet time: number\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 const current = Date.now()\n const interval = (time && current - time) ? `+${current - time}` : ''\n time = current\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)} ${pc.gray(interval)}`)\n}\n\nexport function getConfig<C = any>(key: string, defaultConf?: C): C {\n if (!DataMap[key]) {\n if (defaultConf)\n return defaultConf\n throw new Error(`config \"${key}\" is not existed`)\n }\n\n return DataMap[key]\n}\n\nexport function setConfig<C = any>(key: string, conf: C, force = true) {\n if (DataMap[key] && !force)\n return\n\n DataMap[key] = conf\n}\n\n\n\n\n\n"]}
@@ -5,7 +5,7 @@ import {
5
5
  __name,
6
6
  __publicField,
7
7
  log
8
- } from "./chunk-DQUH5BP6.mjs";
8
+ } from "./chunk-5KOB2WHH.mjs";
9
9
 
10
10
  // src/exception/base.ts
11
11
  var Exception = class extends Error {
@@ -169,12 +169,16 @@ import pc from "picocolors";
169
169
  // src/filter.ts
170
170
  var defaultFilter = /* @__PURE__ */ __name((e) => {
171
171
  if (!(e instanceof Exception)) {
172
- log(e.message, "error");
173
- console.error(e.stack);
172
+ if (IS_DEV) {
173
+ log(e.message, "error");
174
+ console.error(e.stack);
175
+ }
174
176
  e = new UndefinedException(e.message || e);
175
177
  } else {
176
- log(`[${e.constructor.name}] ${e.message}`, "error");
177
- console.error(e.stack);
178
+ if (IS_DEV) {
179
+ log(`[${e.constructor.name}] ${e.message}`, "error");
180
+ console.error(e.stack);
181
+ }
178
182
  }
179
183
  return e.data;
180
184
  }, "defaultFilter");
@@ -196,14 +200,12 @@ __name(Histroy, "Histroy");
196
200
  // src/context.ts
197
201
  var guardRecord = {};
198
202
  var _Context = class {
199
- tag;
200
203
  data;
201
204
  method;
202
205
  params;
203
206
  history;
204
207
  postInterceptors;
205
- constructor(tag, data) {
206
- this.tag = tag;
208
+ constructor(data) {
207
209
  this.data = data;
208
210
  this.history = new Histroy();
209
211
  if (IS_DEV)
@@ -215,9 +217,9 @@ var _Context = class {
215
217
  if (IS_STRICT)
216
218
  throw new FrameworkException(`can't find pipe named '${item.pipe}'`);
217
219
  else
218
- return _Context.pipeRecord.default(item, this.tag, this.data);
220
+ return _Context.pipeRecord.default(item, this.data);
219
221
  }
220
- return _Context.pipeRecord[item.pipe || "default"](item, this.tag, this.data);
222
+ return _Context.pipeRecord[item.pipe || "default"](item, this.data);
221
223
  }));
222
224
  }
223
225
  useFilter(arg, filter = "default") {
@@ -225,9 +227,9 @@ var _Context = class {
225
227
  if (IS_STRICT)
226
228
  throw new FrameworkException(`can't find filter named '${filter}'`);
227
229
  else
228
- return _Context.filterRecord.default(arg, this.tag, this.data);
230
+ return _Context.filterRecord.default(arg, this.data);
229
231
  }
230
- return _Context.filterRecord[filter](arg, this.tag, this.data);
232
+ return _Context.filterRecord[filter](arg, this.data);
231
233
  }
232
234
  async useGuard(guards) {
233
235
  for (const guard of guards) {
@@ -237,7 +239,7 @@ var _Context = class {
237
239
  throw new FrameworkException(`can't find guard named '${guard}'`);
238
240
  continue;
239
241
  }
240
- if (!await _Context.guardRecord[guard](this.tag, this.data))
242
+ if (!await _Context.guardRecord[guard](this.data))
241
243
  throw new ForbiddenException(`Guard exception--${guard}`);
242
244
  }
243
245
  }
@@ -256,7 +258,7 @@ var _Context = class {
256
258
  throw new FrameworkException(`can't find interceptor named '${interceptor}'`);
257
259
  continue;
258
260
  }
259
- const postInterceptor = await _Context.interceptorRecord[interceptor](this.tag, this.data);
261
+ const postInterceptor = await _Context.interceptorRecord[interceptor](this.data);
260
262
  if (postInterceptor !== void 0) {
261
263
  if (typeof postInterceptor === "function")
262
264
  ret.push(postInterceptor);
@@ -312,6 +314,8 @@ function addInterceptor(key, handler) {
312
314
  }
313
315
  __name(addInterceptor, "addInterceptor");
314
316
  function isAopDepInject(meta, { guards, interceptors, plugins } = {}) {
317
+ if (!IS_DEV)
318
+ return;
315
319
  const pluginSet = new Set(plugins);
316
320
  const guardSet = new Set(guards);
317
321
  const interceptorSet = new Set(interceptors);
@@ -382,4 +386,4 @@ export {
382
386
  addInterceptor,
383
387
  isAopDepInject
384
388
  };
385
- //# sourceMappingURL=chunk-ATMZNJSE.mjs.map
389
+ //# sourceMappingURL=chunk-MIIYJMMM.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":["import { ERROR_SYMBOL } from '../common'\n\nexport 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_SYMBOL]: 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 extends P.BaseContext> {\n method: string\n params: string[]\n history = new Histroy()\n\n static filterRecord: Record<string, P.Filter> = {\n default: defaultFilter,\n }\n\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 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.data)\n }\n\n return Context.pipeRecord[item.pipe || 'default'](item, this.data)\n }))\n }\n\n useFilter(arg: any, filter = 'default') {\n if (!Context.filterRecord[filter]) {\n if (IS_STRICT)\n throw new FrameworkException(`can't find filter named '${filter}'`)\n else\n return Context.filterRecord.default(arg, this.data)\n }\n\n return Context.filterRecord[filter](arg, 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.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.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<T>(key: string, handler: T) {\n Context.pluginRecord[key] = handler\n}\n\nexport function addPipe<C extends P.BaseContext>(key: string, pipe: P.Pipe<C>) {\n Context.pipeRecord[key] = pipe\n}\n\nexport function addFilter<C extends P.BaseContext>(key: string, handler: P.Filter<C>) {\n Context.filterRecord[key] = handler\n}\n\nexport function addGuard<C extends P.BaseContext>(key: string, handler: P.Guard<C>) {\n Context.guardRecord[key] = handler\n}\n\nexport function addInterceptor<C extends P.BaseContext>(key: string, handler: P.Interceptor<C>) {\n Context.interceptorRecord[key] = handler\n}\n\n// detect whether plugin/filter/pipe/guard/intercept is injected\nexport function isAopDepInject(meta: Meta[], { guards, interceptors, plugins }: {\n guards?: string[]\n interceptors?: string[]\n plugins?: string[]\n} = {}) {\n\n if (!IS_DEV) return\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\n const filterSet = new Set<string>()\n meta.forEach(({ data }) => {\n if (data.filter)\n filterSet.add(data.filter)\n\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 const missPlugins = [...pluginSet].filter(i => !Context.pluginRecord[i])\n const missGuards = [...guardSet].filter(i => !Context.guardRecord[i])\n const missInterceptors = [...interceptorSet].filter(i => !Context.interceptorRecord[i])\n const missPipes = [...pipeSet].filter(i => !Context.pipeRecord[i])\n const missFilters = [...filterSet].filter(i => !Context.filterRecord[i])\n\n if (missPlugins.length)\n log(`${pc.white(`Plugin [${missPlugins.join(',')}]`)} doesn't exist`, 'warn')\n if (missGuards.length)\n log(`${pc.magenta(`Guard [${missGuards.join(',')}]`)} doesn't exist`, 'warn')\n\n if (missInterceptors.length)\n log(`${pc.cyan(`Interceptor [${missInterceptors.join(',')}]`)} doesn't exist`, 'warn')\n\n if (missPipes.length)\n log(`${pc.blue(`Pipe [${missPipes.join(',')}]`)} doesn't exist`, 'warn')\n\n if (missFilters.length)\n log(`${pc.red(`Filter [${missFilters.join(',')}]`)} doesn't exist`, 'warn')\n}\n","import { IS_DEV } from './common'\nimport { Exception, UndefinedException } from './exception'\nimport type { P } from './types'\nimport { log } from './utils'\n\nexport const defaultFilter: P.Filter = (e) => {\n if (!(e instanceof Exception)) {\n if (IS_DEV) {\n log(e.message, 'error')\n console.error(e.stack)\n }\n e = new UndefinedException(e.message || e)\n }\n else {\n if (IS_DEV) {\n log(`[${e.constructor.name}] ${e.message}`, 'error')\n console.error(e.stack)\n }\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_SYMBOL","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","IS_DEV","log","message","console","error","stack","UndefinedException","constructor","name","data","Histroy","guard","interceptor","record","name","type","includes","push","guardRecord","Context","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","filterRecord","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","addFilter","addGuard","addInterceptor","isAopDepInject","meta","pluginSet","Set","guardSet","interceptorSet","pipeSet","filterSet","forEach","add","i","missPlugins","missGuards","missInterceptors","missPipes","missFilters","length","log","pc","white","join","magenta","cyan","blue","red"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __name
3
- } from "./chunk-DQUH5BP6.mjs";
3
+ } from "./chunk-5KOB2WHH.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-43ZXHSVH.mjs.map
16
+ //# sourceMappingURL=chunk-Q3V3ERU3.mjs.map