phecda-server 5.1.0 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +10 -10
  2. package/bin/cli.mjs +189 -189
  3. package/bin/schema.json +55 -55
  4. package/dist/{chunk-OTHER3YM.mjs → chunk-2HKQPZDT.mjs} +1 -2
  5. package/dist/{chunk-GHOKWS5V.js → chunk-3BV2GRS7.js} +38 -39
  6. package/dist/{chunk-BZP6GKM6.mjs → chunk-665MB62T.mjs} +1 -2
  7. package/dist/{chunk-QG4X6H5Y.js → chunk-FSBD5R22.js} +65 -66
  8. package/dist/{chunk-423JPSEB.js → chunk-HMPTPTFL.js} +17 -18
  9. package/dist/{chunk-6MQP6OHU.mjs → chunk-UU6RHGRF.mjs} +2 -3
  10. package/dist/{chunk-4YVAW3L4.mjs → chunk-VLV3AO3H.mjs} +0 -1
  11. package/dist/{chunk-Z4YJHEXT.js → chunk-ZP7HNASU.js} +0 -1
  12. package/dist/index.js +39 -40
  13. package/dist/index.mjs +4 -5
  14. package/dist/rpc/bullmq/index.js +12 -13
  15. package/dist/rpc/bullmq/index.mjs +2 -3
  16. package/dist/rpc/kafka/index.js +10 -11
  17. package/dist/rpc/kafka/index.mjs +2 -3
  18. package/dist/rpc/nats/index.js +11 -12
  19. package/dist/rpc/nats/index.mjs +2 -3
  20. package/dist/rpc/rabbitmq/index.js +13 -14
  21. package/dist/rpc/rabbitmq/index.mjs +2 -3
  22. package/dist/rpc/redis/index.js +11 -12
  23. package/dist/rpc/redis/index.mjs +2 -3
  24. package/dist/server/elysia/index.js +20 -21
  25. package/dist/server/elysia/index.mjs +3 -4
  26. package/dist/server/express/index.js +18 -19
  27. package/dist/server/express/index.mjs +2 -3
  28. package/dist/server/fastify/index.js +19 -20
  29. package/dist/server/fastify/index.mjs +3 -4
  30. package/dist/server/h3/index.js +16 -17
  31. package/dist/server/h3/index.mjs +2 -3
  32. package/dist/server/hono/index.js +17 -18
  33. package/dist/server/hono/index.mjs +2 -3
  34. package/dist/server/hyper-express/index.js +17 -18
  35. package/dist/server/hyper-express/index.mjs +2 -3
  36. package/dist/server/koa/index.js +18 -19
  37. package/dist/server/koa/index.mjs +2 -3
  38. package/dist/test.js +6 -7
  39. package/dist/test.mjs +2 -3
  40. package/package.json +2 -2
  41. package/register/index.mjs +40 -40
  42. package/register/loader.mjs +354 -341
  43. package/register/utils.mjs +81 -81
  44. package/dist/chunk-423JPSEB.js.map +0 -1
  45. package/dist/chunk-4R55T3HG.js +0 -253
  46. package/dist/chunk-4R55T3HG.js.map +0 -1
  47. package/dist/chunk-4YVAW3L4.mjs.map +0 -1
  48. package/dist/chunk-5DOVDDO7.mjs +0 -295
  49. package/dist/chunk-5DOVDDO7.mjs.map +0 -1
  50. package/dist/chunk-5WQ2SMIK.js +0 -295
  51. package/dist/chunk-5WQ2SMIK.js.map +0 -1
  52. package/dist/chunk-6MQP6OHU.mjs.map +0 -1
  53. package/dist/chunk-6Q2PCC3A.mjs +0 -295
  54. package/dist/chunk-6Q2PCC3A.mjs.map +0 -1
  55. package/dist/chunk-6UQYEBAN.js +0 -253
  56. package/dist/chunk-6UQYEBAN.js.map +0 -1
  57. package/dist/chunk-6W7CGOZC.mjs +0 -565
  58. package/dist/chunk-6W7CGOZC.mjs.map +0 -1
  59. package/dist/chunk-7Y37NSBM.js +0 -88
  60. package/dist/chunk-7Y37NSBM.js.map +0 -1
  61. package/dist/chunk-BQBSVGMG.mjs +0 -253
  62. package/dist/chunk-BQBSVGMG.mjs.map +0 -1
  63. package/dist/chunk-BZP6GKM6.mjs.map +0 -1
  64. package/dist/chunk-C5JAHCS2.mjs +0 -88
  65. package/dist/chunk-C5JAHCS2.mjs.map +0 -1
  66. package/dist/chunk-DTBKDALR.mjs +0 -295
  67. package/dist/chunk-DTBKDALR.mjs.map +0 -1
  68. package/dist/chunk-GHOKWS5V.js.map +0 -1
  69. package/dist/chunk-H4N6SHNG.mjs +0 -76
  70. package/dist/chunk-H4N6SHNG.mjs.map +0 -1
  71. package/dist/chunk-ICYHM4UM.js +0 -565
  72. package/dist/chunk-ICYHM4UM.js.map +0 -1
  73. package/dist/chunk-LOLXPM4J.mjs +0 -529
  74. package/dist/chunk-LOLXPM4J.mjs.map +0 -1
  75. package/dist/chunk-MSS6A2TU.js +0 -585
  76. package/dist/chunk-MSS6A2TU.js.map +0 -1
  77. package/dist/chunk-NEM3FY7C.mjs +0 -537
  78. package/dist/chunk-NEM3FY7C.mjs.map +0 -1
  79. package/dist/chunk-OTHER3YM.mjs.map +0 -1
  80. package/dist/chunk-Q2FYFIEY.js +0 -295
  81. package/dist/chunk-Q2FYFIEY.js.map +0 -1
  82. package/dist/chunk-QG4X6H5Y.js.map +0 -1
  83. package/dist/chunk-QIEZ6YTG.mjs +0 -295
  84. package/dist/chunk-QIEZ6YTG.mjs.map +0 -1
  85. package/dist/chunk-QOAKHCM7.js +0 -295
  86. package/dist/chunk-QOAKHCM7.js.map +0 -1
  87. package/dist/chunk-QVUD6L5X.js +0 -565
  88. package/dist/chunk-QVUD6L5X.js.map +0 -1
  89. package/dist/chunk-RGLTGKAU.js +0 -537
  90. package/dist/chunk-RGLTGKAU.js.map +0 -1
  91. package/dist/chunk-SHRK3TVB.js +0 -295
  92. package/dist/chunk-SHRK3TVB.js.map +0 -1
  93. package/dist/chunk-TCH6S42Z.js +0 -529
  94. package/dist/chunk-TCH6S42Z.js.map +0 -1
  95. package/dist/chunk-UCGRFVHC.mjs +0 -253
  96. package/dist/chunk-UCGRFVHC.mjs.map +0 -1
  97. package/dist/chunk-VOISXWVF.mjs +0 -295
  98. package/dist/chunk-VOISXWVF.mjs.map +0 -1
  99. package/dist/chunk-W6BC5INO.mjs +0 -295
  100. package/dist/chunk-W6BC5INO.mjs.map +0 -1
  101. package/dist/chunk-X5WQRO4R.js +0 -295
  102. package/dist/chunk-X5WQRO4R.js.map +0 -1
  103. package/dist/chunk-XDMCVVD3.mjs +0 -585
  104. package/dist/chunk-XDMCVVD3.mjs.map +0 -1
  105. package/dist/chunk-XNTMYLK6.js +0 -76
  106. package/dist/chunk-XNTMYLK6.js.map +0 -1
  107. package/dist/chunk-Y6LI4FDO.js +0 -537
  108. package/dist/chunk-Y6LI4FDO.js.map +0 -1
  109. package/dist/chunk-YZ2AQ6IL.mjs +0 -537
  110. package/dist/chunk-YZ2AQ6IL.mjs.map +0 -1
  111. package/dist/chunk-Z4YJHEXT.js.map +0 -1
  112. package/dist/chunk-ZE336SKZ.js +0 -295
  113. package/dist/chunk-ZE336SKZ.js.map +0 -1
  114. package/dist/chunk-ZJD235TO.mjs +0 -565
  115. package/dist/chunk-ZJD235TO.mjs.map +0 -1
  116. package/dist/core-930ea883.d.ts +0 -131
  117. package/dist/core-eb646fe5.d.ts +0 -139
  118. package/dist/core-fd134ffa.d.ts +0 -130
  119. package/dist/helper-06d25b37.d.ts +0 -19
  120. package/dist/helper-48454c0b.d.ts +0 -20
  121. package/dist/helper-73e8d2f0.d.ts +0 -18
  122. package/dist/helper-867a598d.d.ts +0 -18
  123. package/dist/helper-88b19c66.d.ts +0 -12
  124. package/dist/helper-9e206c66.d.ts +0 -12
  125. package/dist/helper-f29f082f.d.ts +0 -19
  126. package/dist/index.js.map +0 -1
  127. package/dist/index.mjs.map +0 -1
  128. package/dist/rpc/bullmq/index.js.map +0 -1
  129. package/dist/rpc/bullmq/index.mjs.map +0 -1
  130. package/dist/rpc/kafka/index.js.map +0 -1
  131. package/dist/rpc/kafka/index.mjs.map +0 -1
  132. package/dist/rpc/nats/index.js.map +0 -1
  133. package/dist/rpc/nats/index.mjs.map +0 -1
  134. package/dist/rpc/rabbitmq/index.js.map +0 -1
  135. package/dist/rpc/rabbitmq/index.mjs.map +0 -1
  136. package/dist/rpc/redis/index.js.map +0 -1
  137. package/dist/rpc/redis/index.mjs.map +0 -1
  138. package/dist/server/elysia/index.js.map +0 -1
  139. package/dist/server/elysia/index.mjs.map +0 -1
  140. package/dist/server/express/index.js.map +0 -1
  141. package/dist/server/express/index.mjs.map +0 -1
  142. package/dist/server/fastify/index.js.map +0 -1
  143. package/dist/server/fastify/index.mjs.map +0 -1
  144. package/dist/server/h3/index.js.map +0 -1
  145. package/dist/server/h3/index.mjs.map +0 -1
  146. package/dist/server/hono/index.js.map +0 -1
  147. package/dist/server/hono/index.mjs.map +0 -1
  148. package/dist/server/hyper-express/index.js.map +0 -1
  149. package/dist/server/hyper-express/index.mjs.map +0 -1
  150. package/dist/server/koa/index.js.map +0 -1
  151. package/dist/server/koa/index.mjs.map +0 -1
  152. package/dist/test.js.map +0 -1
  153. package/dist/test.mjs.map +0 -1
@@ -1,88 +0,0 @@
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
- };
8
-
9
- // src/common.ts
10
- var UNMOUNT_SYMBOL = "__PS_UNMOUNT__";
11
- var ERROR_SYMBOL = "__PS_ERROR__";
12
- var IS_HMR = process.env.NODE_ENV === "development";
13
- var IS_ONLY_GENERATE = !!process.env.PS_GENERATE;
14
- var IS_STRICT = !!process.env.PS_STRICT;
15
- var LOG_LEVEL = Number(process.env.PS_LOG_LEVEL || 0);
16
- var PS_EXIT_CODE;
17
- (function(PS_EXIT_CODE2) {
18
- PS_EXIT_CODE2[PS_EXIT_CODE2["RELAUNCH"] = 2] = "RELAUNCH";
19
- PS_EXIT_CODE2[PS_EXIT_CODE2["CODE"] = 4] = "CODE";
20
- })(PS_EXIT_CODE || (PS_EXIT_CODE = exports.PS_EXIT_CODE = {}));
21
-
22
- // src/utils.ts
23
- var _picocolors = require('picocolors'); var _picocolors2 = _interopRequireDefault(_picocolors);
24
- var _phecdacore = require('phecda-core');
25
- var time;
26
- function log(msg, level = "log") {
27
- const logLevel = {
28
- info: 0,
29
- log: 1,
30
- warn: 2,
31
- error: 3
32
- }[level];
33
- if (logLevel < LOG_LEVEL)
34
- return;
35
- const color = {
36
- error: "red",
37
- info: "gray",
38
- warn: "yellow",
39
- log: "green"
40
- }[level];
41
- const date = new Date();
42
- const current = Date.now();
43
- const interval = time && current - time ? `+${current - time}` : "";
44
- time = current;
45
- console.log(`${_picocolors2.default.magenta("[phecda-server]")} ${_picocolors2.default.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${_picocolors2.default[color](msg)} ${_picocolors2.default.gray(interval)}`);
46
- }
47
- __name(log, "log");
48
- function getConfig(key, defaultConf) {
49
- if (!_phecdacore.DataMap[key]) {
50
- if (defaultConf)
51
- return defaultConf;
52
- throw new Error(`config "${key}" is not existed`);
53
- }
54
- return _phecdacore.DataMap[key];
55
- }
56
- __name(getConfig, "getConfig");
57
- function setConfig(key, conf, force = true) {
58
- if (_phecdacore.DataMap[key] && !force)
59
- return;
60
- _phecdacore.DataMap[key] = conf;
61
- }
62
- __name(setConfig, "setConfig");
63
- function Mix(InternalClass, ExtendClass) {
64
- return class extends InternalClass {
65
- constructor(...args) {
66
- super();
67
- Object.assign(this, new ExtendClass(...args));
68
- }
69
- };
70
- }
71
- __name(Mix, "Mix");
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
- exports.__name = __name; exports.__publicField = __publicField; exports.UNMOUNT_SYMBOL = UNMOUNT_SYMBOL; exports.ERROR_SYMBOL = ERROR_SYMBOL; exports.IS_HMR = IS_HMR; exports.IS_ONLY_GENERATE = IS_ONLY_GENERATE; exports.IS_STRICT = IS_STRICT; exports.LOG_LEVEL = LOG_LEVEL; exports.PS_EXIT_CODE = PS_EXIT_CODE; exports.log = log; exports.getConfig = getConfig; exports.setConfig = setConfig; exports.Mix = Mix;
88
- //# sourceMappingURL=chunk-7Y37NSBM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common.ts","../src/utils.ts"],"names":["UNMOUNT_SYMBOL","ERROR_SYMBOL","IS_HMR","process","env","NODE_ENV","IS_ONLY_GENERATE","PS_GENERATE","IS_STRICT","PS_STRICT","LOG_LEVEL","Number","PS_LOG_LEVEL","PS_EXIT_CODE","RELAUNCH","CODE","pc","DataMap","time","log","msg","level","logLevel","info","warn","error","color","date","Date","current","now","interval","console","magenta","gray","getHours","getMinutes","getSeconds","getConfig","key","defaultConf","Error","setConfig","conf","force","Mix","InternalClass","ExtendClass","constructor","args","Object","assign"],"mappings":";;;;;;;;;AACO,IAAMA,iBAAiB;AAIvB,IAAMC,eAAe;AAErB,IAAMC,SAASC,QAAQC,IAAIC,aAAa;AACxC,IAAMC,mBAAmB,CAAC,CAACH,QAAQC,IAAIG;AACvC,IAAMC,YAAY,CAAC,CAACL,QAAQC,IAAIK;AAChC,IAAMC,YAAYC,OAAOR,QAAQC,IAAIQ,gBAAgB,CAAA;IAErD;UAAKC,eAAY;AAAZA,EAAAA,cAAAA,cACVC,cAAW,KAAXA;AADUD,EAAAA,cAAAA,cAEVE,UAAO,KAAPA;GAFUF,iBAAAA,eAAAA,CAAAA,EAAAA;;;ACZZ,OAAOG,QAAQ;AAEf,SAASC,eAAe;AAGxB,IAAIC;AAEG,SAASC,IAAIC,KAAaC,QAA2C,OAAO;AACjF,QAAMC,WAAW;IACfC,MAAM;IACNJ,KAAK;IACLK,MAAM;IACNC,OAAO;EACT,EAAEJ;AAEF,MAAIC,WAAWZ;AACb;AAEF,QAAMgB,QAAS;IAAED,OAAO;IAAOF,MAAM;IAAQC,MAAM;IAAUL,KAAK;EAAQ,EAAYE;AACtF,QAAMM,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYb,QAAQW,UAAUX,OAAQ,IAAIW,UAAUX,SAAS;AACnEA,SAAOW;AAEPG,UAAQb,IAAI,GAAGH,GAAGiB,QAAQ,iBAAA,KAAsBjB,GAAGkB,KAAK,GAAGP,KAAKQ,SAAQ,KAAMR,KAAKS,WAAU,KAAMT,KAAKU,WAAU,GAAI,KAAKrB,GAAGU,OAAON,GAAAA,KAAQJ,GAAGkB,KAAKH,QAAAA,GAAW;AAClK;AAlBgBZ;AAuBT,SAASmB,UAAmBC,KAAaC,aAAoB;AAClE,MAAI,CAACvB,QAAQsB,MAAM;AACjB,QAAIC;AACF,aAAOA;AACT,UAAM,IAAIC,MAAM,WAAWF,qBAAqB;EAClD;AAEA,SAAOtB,QAAQsB;AACjB;AARgBD;AAYT,SAASI,UAAmBH,KAAaI,MAASC,QAAQ,MAAM;AACrE,MAAI3B,QAAQsB,QAAQ,CAACK;AACnB;AAEF3B,UAAQsB,OAAOI;AACjB;AALgBD;AAOT,SAASG,IAA8DC,eAAmBC,aAAiB;AAChH,SAAO,cAAcD,cAAAA;IACnBE,eAAeC,MAAW;AACxB,YAAK;AACLC,aAAOC,OAAO,MAAM,IAAIJ,YAAAA,GAAeE,IAAAA,CAAAA;IACzC;EACF;AACF;AAPgBJ","sourcesContent":["// export const MERGE_SYMBOL = '__PS_MERGE__'// is parallel request in http\r\nexport const UNMOUNT_SYMBOL = '__PS_UNMOUNT__'// property that include unmount callbacks\r\n// export const MODULE_SYMBOL = '__PS_MODULE__'// req[MODULE_SYMBOL]=modulemap\r\n// export const META_SYMBOL = '__PS_META__'// req[META_SYMBOL]=meta\r\n// export const PS_SYMBOL = '__PS__'// (app/router)[PS_SYMBOL]=Factory(...)\r\nexport const ERROR_SYMBOL = '__PS_ERROR__'// only use in paralle request\r\n\r\nexport const IS_HMR = process.env.NODE_ENV === 'development'\r\nexport const IS_ONLY_GENERATE = !!process.env.PS_GENERATE// work for ci; only generate code\r\nexport const IS_STRICT = !!process.env.PS_STRICT// throw error if depends on an aop module which is not imported\r\nexport const LOG_LEVEL = Number(process.env.PS_LOG_LEVEL || 0)// internal logger\r\n\r\nexport enum PS_EXIT_CODE {\r\n RELAUNCH = 2,\r\n CODE = 4,\r\n}\r\n","import pc from 'picocolors'\r\nimport type { AbConstruct, Construct } from 'phecda-core'\r\nimport { DataMap } from 'phecda-core'\r\nimport { LOG_LEVEL } from './common'\r\n\r\nlet time: number\r\n\r\nexport function log(msg: string, level: 'error' | 'info' | 'warn' | 'log' = 'log') {\r\n const logLevel = {\r\n info: 0,\r\n log: 1,\r\n warn: 2,\r\n error: 3,\r\n }[level]\r\n\r\n if (logLevel < LOG_LEVEL)\r\n return\r\n\r\n const color = ({ error: 'red', info: 'gray', warn: 'yellow', log: 'green' } as const)[level]\r\n const date = new Date()\r\n const current = Date.now()\r\n const interval = (time && current - time) ? `+${current - time}` : ''\r\n time = current\r\n // eslint-disable-next-line no-console\r\n console.log(`${pc.magenta('[phecda-server]')} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)} ${pc.gray(interval)}`)\r\n}\r\n\r\n/**\r\n * @deprecated\r\n */\r\nexport function getConfig<C = any>(key: string, defaultConf?: C): C {\r\n if (!DataMap[key]) {\r\n if (defaultConf)\r\n return defaultConf\r\n throw new Error(`config \"${key}\" is not existed`)\r\n }\r\n\r\n return DataMap[key]\r\n}\r\n/**\r\n * @deprecated\r\n */\r\nexport function setConfig<C = any>(key: string, conf: C, force = true) {\r\n if (DataMap[key] && !force)\r\n return\r\n\r\n DataMap[key] = conf\r\n}\r\n\r\nexport function Mix<C1 extends Construct | AbConstruct, C2 extends Construct>(InternalClass: C1, ExtendClass: C2) {\r\n return class extends InternalClass {\r\n constructor(...args: any) {\r\n super()\r\n Object.assign(this, new ExtendClass(...args))\r\n }\r\n } as new (...args: ConstructorParameters<C2>) => InstanceType<C1> & InstanceType<C2>\r\n}\r\n"]}
@@ -1,253 +0,0 @@
1
- import {
2
- IS_HMR,
3
- IS_ONLY_GENERATE,
4
- __name,
5
- log
6
- } from "./chunk-4YVAW3L4.mjs";
7
-
8
- // src/meta.ts
9
- var Meta = class {
10
- data;
11
- paramsType;
12
- constructor(data, paramsType) {
13
- this.data = data;
14
- this.paramsType = paramsType;
15
- }
16
- };
17
- __name(Meta, "Meta");
18
-
19
- // src/core.ts
20
- import "reflect-metadata";
21
- import EventEmitter from "node:events";
22
- import { get, getExposeKey, getInject, getState, getTag, invokeHandler, isPhecda, setInject } from "phecda-core";
23
- import Debug from "debug";
24
- var debug = Debug("phecda-server(Factory)");
25
- var emitter = new EventEmitter();
26
- async function Factory(models, opts = {}) {
27
- const moduleMap = /* @__PURE__ */ new Map();
28
- const meta = [];
29
- const constructorMap = /* @__PURE__ */ new Map();
30
- const constructorSet = /* @__PURE__ */ new WeakSet();
31
- const dependenceGraph = /* @__PURE__ */ new Map();
32
- const { parseModule = /* @__PURE__ */ __name((module) => module, "parseModule"), parseMeta = /* @__PURE__ */ __name((meta2) => meta2, "parseMeta"), generators } = opts;
33
- if (!getInject("watcher")) {
34
- setInject("watcher", ({ eventName, instance, key, options }) => {
35
- const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
36
- if (options?.once)
37
- emitter.once(eventName, fn);
38
- else
39
- emitter.on(eventName, fn);
40
- return () => {
41
- emitter.off(eventName, fn);
42
- };
43
- });
44
- }
45
- async function del(tag) {
46
- if (!moduleMap.has(tag))
47
- return;
48
- const instance = moduleMap.get(tag);
49
- debug(`unmount module "${String(tag)}"`);
50
- await invokeHandler("unmount", instance);
51
- debug(`del module "${String(tag)}"`);
52
- moduleMap.delete(tag);
53
- constructorMap.delete(tag);
54
- for (let i = meta.length - 1; i >= 0; i--) {
55
- if (meta[i].data.tag === tag)
56
- meta.splice(i, 1);
57
- }
58
- return instance;
59
- }
60
- __name(del, "del");
61
- async function destroy() {
62
- debug("destroy all");
63
- for (const [tag] of moduleMap)
64
- await del(tag);
65
- }
66
- __name(destroy, "destroy");
67
- async function add(Model) {
68
- const tag = getTag(Model);
69
- const oldInstance = await del(tag);
70
- const { instance: newModule } = await buildDepModule(Model);
71
- if (oldInstance && dependenceGraph.has(tag)) {
72
- debug(`replace module "${String(tag)}"`);
73
- [
74
- ...dependenceGraph.get(tag)
75
- ].forEach((tag2) => {
76
- const module = moduleMap.get(tag2);
77
- for (const key in module) {
78
- if (module[key] === oldInstance)
79
- module[key] = newModule;
80
- }
81
- });
82
- }
83
- }
84
- __name(add, "add");
85
- async function buildDepModule(Model) {
86
- const paramtypes = getParamTypes(Model);
87
- let instance;
88
- const tag = getTag(Model);
89
- if (moduleMap.has(tag)) {
90
- instance = moduleMap.get(tag);
91
- if (!instance)
92
- throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${String(tag)}--[module] ${Model}`);
93
- if (constructorMap.get(tag) !== Model && !constructorSet.has(Model)) {
94
- constructorSet.add(Model);
95
- log(`Synonym module: Module taged "${String(tag)}" has been loaded before, so phecda-server won't load Module "${Model.name}"`, "warn");
96
- }
97
- return {
98
- instance,
99
- tag
100
- };
101
- }
102
- moduleMap.set(tag, void 0);
103
- debug(`instantiate module "${String(tag)}"`);
104
- if (paramtypes) {
105
- const paramtypesInstances = [];
106
- for (const i in paramtypes) {
107
- const { instance: sub, tag: subTag } = await buildDepModule(paramtypes[i]);
108
- paramtypesInstances[i] = sub;
109
- if (!dependenceGraph.has(subTag))
110
- dependenceGraph.set(subTag, /* @__PURE__ */ new Set());
111
- dependenceGraph.get(subTag).add(tag);
112
- }
113
- instance = parseModule(new Model(...paramtypesInstances));
114
- } else {
115
- instance = parseModule(new Model());
116
- }
117
- meta.push(...getMetaFromInstance(instance, tag, Model.name).map(parseMeta).filter((item) => !!item));
118
- debug(`init module "${String(tag)}"`);
119
- if (!IS_ONLY_GENERATE)
120
- await invokeHandler("init", instance);
121
- debug(`add module "${String(tag)}"`);
122
- moduleMap.set(tag, instance);
123
- constructorMap.set(tag, Model);
124
- return {
125
- instance,
126
- tag
127
- };
128
- }
129
- __name(buildDepModule, "buildDepModule");
130
- for (const model of models)
131
- await buildDepModule(model);
132
- async function generateCode() {
133
- if (generators) {
134
- return Promise.all(generators.map((generator) => {
135
- debug(`generate "${generator.name}" code to ${generator.path}`);
136
- return generator.output(meta);
137
- }));
138
- }
139
- }
140
- __name(generateCode, "generateCode");
141
- generateCode().then(() => {
142
- if (IS_ONLY_GENERATE)
143
- process.exit(4);
144
- });
145
- if (IS_HMR) {
146
- if (!globalThis.__PS_HMR__)
147
- globalThis.__PS_HMR__ = [];
148
- globalThis.__PS_HMR__?.push(async (files) => {
149
- debug("reload files ");
150
- for (const file of files) {
151
- const models2 = await import(file);
152
- for (const i in models2) {
153
- if (isPhecda(models2[i]))
154
- await add(models2[i]);
155
- }
156
- }
157
- generateCode();
158
- });
159
- }
160
- return {
161
- moduleMap,
162
- constructorMap,
163
- meta,
164
- add,
165
- del,
166
- destroy
167
- };
168
- }
169
- __name(Factory, "Factory");
170
- function getMetaFromInstance(instance, tag, name) {
171
- const vars = getExposeKey(instance).filter((item) => typeof item === "string");
172
- const baseState = getState(instance);
173
- initState(baseState);
174
- const ctx = get(instance, "context");
175
- return vars.filter((i) => typeof instance[i] === "function").map((i) => {
176
- const state = getState(instance, i);
177
- const meta = {
178
- ...state,
179
- name,
180
- tag,
181
- func: i
182
- };
183
- if (baseState.controller) {
184
- if (typeof tag !== "string")
185
- log(`can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
186
- initState(state);
187
- meta.ctx = ctx;
188
- meta.controller = baseState.controller;
189
- meta[baseState.controller] = {
190
- ...baseState[baseState.controller],
191
- ...state[baseState.controller]
192
- };
193
- const params = [];
194
- for (const i2 of state.params || []) {
195
- if (!i2.pipe)
196
- i2.pipe = state.pipe || baseState.pipe;
197
- if (!i2.define)
198
- i2.define = {};
199
- params.unshift(i2);
200
- if (i2.index === 0)
201
- break;
202
- }
203
- meta.params = params;
204
- meta.filter = state.filter || baseState.filter;
205
- meta.define = {
206
- ...baseState.define,
207
- ...state.define
208
- };
209
- meta.plugins = [
210
- .../* @__PURE__ */ new Set([
211
- ...baseState.plugins,
212
- ...state.plugins
213
- ])
214
- ];
215
- meta.guards = [
216
- .../* @__PURE__ */ new Set([
217
- ...baseState.guards,
218
- ...state.guards
219
- ])
220
- ];
221
- meta.interceptors = [
222
- .../* @__PURE__ */ new Set([
223
- ...baseState.interceptors,
224
- ...state.interceptors
225
- ])
226
- ];
227
- }
228
- return new Meta(meta, getParamTypes(instance, i) || []);
229
- });
230
- }
231
- __name(getMetaFromInstance, "getMetaFromInstance");
232
- function getParamTypes(Module, key) {
233
- return Reflect.getMetadata("design:paramtypes", Module, key);
234
- }
235
- __name(getParamTypes, "getParamTypes");
236
- function initState(state) {
237
- if (!state.define)
238
- state.define = {};
239
- if (!state.plugins)
240
- state.plugins = /* @__PURE__ */ new Set();
241
- if (!state.guards)
242
- state.guards = /* @__PURE__ */ new Set();
243
- if (!state.interceptors)
244
- state.interceptors = /* @__PURE__ */ new Set();
245
- }
246
- __name(initState, "initState");
247
-
248
- export {
249
- Meta,
250
- emitter,
251
- Factory
252
- };
253
- //# sourceMappingURL=chunk-BQBSVGMG.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/meta.ts","../src/core.ts"],"sourcesContent":["import type { BaseRequestType } from './types'\r\n\r\nexport interface ServiceMetaData {\r\n func: string\r\n name: string\r\n tag: string\r\n define?: any\r\n [key: string]: any\r\n}\r\n\r\nexport interface ControllerMetaData extends ServiceMetaData {\r\n controller: string\r\n http?: {\r\n type: BaseRequestType\r\n prefix: string\r\n route: string\r\n headers?: Record<string, string>\r\n\r\n }\r\n rpc?: {\r\n queue?: string\r\n isEvent?: boolean\r\n }\r\n ctx?: string\r\n params: { type: string; index: number; key: string; pipe?: string; define: Record<string, any> }[]\r\n guards: string[]\r\n pipe?: string\r\n filter?: string\r\n interceptors: string[]\r\n plugins: string[]\r\n\r\n}\r\n\r\nexport type MetaData = ControllerMetaData | ServiceMetaData\r\n\r\nexport class Meta {\r\n constructor(public data: MetaData, public paramsType: any[]) {\r\n\r\n }\r\n}\r\n\r\nexport interface ControllerMeta extends Meta {\r\n data: ControllerMetaData\r\n}\r\n","import 'reflect-metadata'\r\nimport EventEmitter from 'node:events'\r\nimport type { Construct, Phecda, WatcherParam } from 'phecda-core'\r\nimport { get, getExposeKey, getInject, getState, getTag, invokeHandler, isPhecda, setInject } from 'phecda-core'\r\nimport Debug from 'debug'\r\nimport type { Emitter } from './types'\r\nimport type { MetaData } from './meta'\r\nimport { Meta } from './meta'\r\nimport { log } from './utils'\r\nimport { IS_HMR, IS_ONLY_GENERATE } from './common'\r\nimport type { Generator } from './generator'\r\n\r\nconst debug = Debug('phecda-server(Factory)')\r\n// TODO: support both emitter types and origin emitter type in future\r\nexport const emitter: Emitter = new EventEmitter() as any\r\n\r\nexport async function Factory(models: (new (...args: any) => any)[], opts: {\r\n parseModule?: (module: any) => any\r\n parseMeta?: (meta: Meta) => Meta | null | undefined\r\n generators?: Generator[]\r\n} = {}) {\r\n const moduleMap = new Map<PropertyKey, InstanceType<Construct>>()\r\n const meta: Meta[] = []\r\n const constructorMap = new Map()\r\n const constructorSet = new WeakSet()\r\n const dependenceGraph = new Map<PropertyKey, Set<PropertyKey>>()\r\n const { parseModule = (module: any) => module, parseMeta = (meta: any) => meta, generators } = opts\r\n if (!getInject('watcher')) {\r\n setInject('watcher', ({ eventName, instance, key, options }: WatcherParam) => {\r\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = v\r\n\r\n if (options?.once)\r\n (emitter as any).once(eventName, fn)\r\n\r\n else\r\n (emitter as any).on(eventName, fn)\r\n\r\n return () => {\r\n (emitter as any).off(eventName, fn)\r\n }\r\n })\r\n }\r\n\r\n // only remove module in moduleMap(won't remove indirect module)\r\n async function del(tag: PropertyKey) {\r\n if (!moduleMap.has(tag))\r\n return\r\n\r\n const instance = moduleMap.get(tag)\r\n\r\n debug(`unmount module \"${String(tag)}\"`)\r\n await invokeHandler('unmount', instance)\r\n debug(`del module \"${String(tag)}\"`)\r\n\r\n moduleMap.delete(tag)\r\n constructorMap.delete(tag)\r\n for (let i = meta.length - 1; i >= 0; i--) {\r\n if (meta[i].data.tag === tag)\r\n meta.splice(i, 1)\r\n }\r\n\r\n return instance\r\n }\r\n\r\n async function destroy() {\r\n debug('destroy all')\r\n\r\n for (const [tag] of moduleMap)\r\n await del(tag)\r\n }\r\n\r\n async function add(Model: Construct) {\r\n const tag = getTag(Model)\r\n const oldInstance = await del(tag)\r\n\r\n const { instance: newModule } = await buildDepModule(Model)\r\n\r\n if (oldInstance && dependenceGraph.has(tag)) {\r\n debug(`replace module \"${String(tag)}\"`);\r\n\r\n [...dependenceGraph.get(tag)!].forEach((tag) => {\r\n const module = moduleMap.get(tag)\r\n for (const key in module) {\r\n if (module[key] === oldInstance)\r\n module[key] = newModule\r\n }\r\n })\r\n }\r\n }\r\n\r\n async function buildDepModule(Model: Construct) {\r\n const paramtypes = getParamTypes(Model) as Construct[]\r\n let instance: InstanceType<Construct>\r\n const tag = getTag(Model)\r\n\r\n if (moduleMap.has(tag)) {\r\n instance = moduleMap.get(tag)\r\n if (!instance)\r\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${String(tag)}--[module] ${Model}`)\r\n\r\n if (constructorMap.get(tag) !== Model && !constructorSet.has(Model)) {\r\n constructorSet.add(Model)// a module will only warn once\r\n log(`Synonym module: Module taged \"${String(tag)}\" has been loaded before, so phecda-server won't load Module \"${Model.name}\"`, 'warn')\r\n }\r\n return { instance, tag }\r\n }\r\n moduleMap.set(tag, undefined)\r\n debug(`instantiate module \"${String(tag)}\"`)\r\n\r\n if (paramtypes) {\r\n const paramtypesInstances = [] as any[]\r\n for (const i in paramtypes) {\r\n const { instance: sub, tag: subTag } = await buildDepModule(paramtypes[i])\r\n paramtypesInstances[i] = sub\r\n if (!dependenceGraph.has(subTag))\r\n dependenceGraph.set(subTag, new Set())\r\n dependenceGraph.get(subTag)!.add(tag)\r\n }\r\n\r\n instance = parseModule(new Model(...paramtypesInstances))\r\n }\r\n else {\r\n instance = parseModule(new Model())\r\n }\r\n meta.push(...getMetaFromInstance(instance, tag, Model.name).map(parseMeta).filter(item => !!item))\r\n\r\n debug(`init module \"${String(tag)}\"`)\r\n\r\n if (!IS_ONLY_GENERATE)\r\n await invokeHandler('init', instance)\r\n\r\n debug(`add module \"${String(tag)}\"`)\r\n\r\n moduleMap.set(tag, instance)\r\n constructorMap.set(tag, Model)\r\n return { instance, tag }\r\n }\r\n\r\n for (const model of models)\r\n await buildDepModule(model)\r\n\r\n async function generateCode() {\r\n if (generators) {\r\n return Promise.all(generators.map((generator) => {\r\n debug(`generate \"${generator.name}\" code to ${generator.path}`)\r\n\r\n return generator.output(meta)\r\n }))\r\n }\r\n }\r\n\r\n generateCode().then(() => {\r\n if (IS_ONLY_GENERATE)\r\n process.exit(4)// only output code/work for ci\r\n })\r\n\r\n if (IS_HMR) { // for hmr\r\n if (!globalThis.__PS_HMR__)\r\n globalThis.__PS_HMR__ = []\r\n\r\n globalThis.__PS_HMR__?.push(async (files: string[]) => {\r\n debug('reload files ')\r\n\r\n for (const file of files) {\r\n const models = await import(file)\r\n for (const i in models) {\r\n if (isPhecda(models[i]))\r\n await add(models[i])\r\n }\r\n }\r\n generateCode()\r\n })\r\n }\r\n\r\n return {\r\n moduleMap,\r\n constructorMap,\r\n meta,\r\n add,\r\n del,\r\n destroy,\r\n }\r\n}\r\n\r\nfunction getMetaFromInstance(instance: Phecda, tag: PropertyKey, name: string) {\r\n const vars = getExposeKey(instance).filter(item => typeof item === 'string') as string[]\r\n const baseState = getState(instance) as MetaData\r\n initState(baseState)\r\n const ctx = get(instance, 'context')\r\n\r\n return vars.filter(i => typeof (instance as any)[i] === 'function').map((i) => {\r\n const state = getState(instance, i) as any\r\n\r\n const meta = {\r\n ...state,\r\n name,\r\n tag,\r\n func:\r\n i,\r\n } as MetaData\r\n if (baseState.controller) {\r\n if (typeof tag !== 'string')\r\n log(`can't use Tag with ${typeof tag} on controller \"${(instance as any).constructor.name}\",instead with \"${tag = String(tag)}\"`, 'error')\r\n initState(state)\r\n meta.ctx = ctx\r\n meta.controller = baseState.controller\r\n meta[baseState.controller] = {\r\n ...baseState[baseState.controller],\r\n ...state[baseState.controller],\r\n }\r\n\r\n const params = [] as any[]\r\n for (const i of state.params || []) {\r\n if (!i.pipe)\r\n i.pipe = state.pipe || baseState.pipe\r\n if (!i.define)\r\n i.define = {}\r\n\r\n params.unshift(i)\r\n if (i.index === 0)\r\n break\r\n }\r\n\r\n meta.params = params\r\n meta.filter = state.filter || baseState.filter\r\n meta.define = { ...baseState.define, ...state.define }\r\n meta.plugins = [...new Set([...baseState.plugins, ...state.plugins])]\r\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\r\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\r\n }\r\n return new Meta(meta as unknown as MetaData, getParamTypes(instance, i as string) || [])\r\n })\r\n}\r\n\r\nfunction getParamTypes(Module: any, key?: string | symbol) {\r\n return Reflect.getMetadata('design:paramtypes', Module, key!)\r\n}\r\n\r\nfunction initState(state: any) {\r\n if (!state.define)\r\n state.define = {}\r\n\r\n if (!state.plugins)\r\n state.plugins = new Set()\r\n if (!state.guards)\r\n state.guards = new Set()\r\n if (!state.interceptors)\r\n state.interceptors = new Set()\r\n}\r\n"],"mappings":"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","names":["Meta","data","paramsType","constructor","EventEmitter","get","getExposeKey","getInject","getState","getTag","invokeHandler","isPhecda","setInject","Debug","debug","Debug","emitter","EventEmitter","Factory","models","opts","moduleMap","Map","meta","constructorMap","constructorSet","WeakSet","dependenceGraph","parseModule","module","parseMeta","generators","getInject","setInject","eventName","instance","key","options","fn","bind","v","once","on","off","del","tag","has","get","String","invokeHandler","delete","i","length","data","splice","destroy","add","Model","getTag","oldInstance","newModule","buildDepModule","forEach","paramtypes","getParamTypes","Error","log","name","set","undefined","paramtypesInstances","sub","subTag","Set","push","getMetaFromInstance","map","filter","item","IS_ONLY_GENERATE","model","generateCode","Promise","all","generator","path","output","then","process","exit","IS_HMR","globalThis","__PS_HMR__","files","file","isPhecda","vars","getExposeKey","baseState","getState","initState","ctx","state","func","controller","constructor","params","pipe","define","unshift","index","plugins","guards","interceptors","Meta","Module","Reflect","getMetadata"]}
@@ -1 +0,0 @@
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/exception/timer.ts","../src/exception/worker.ts","../src/hmr.ts","../src/server/helper.ts","../src/rpc/helper.ts","../src/decorators/helper.ts","../src/helper.ts","../src/context.ts","../src/filter.ts"],"sourcesContent":["import { ERROR_SYMBOL } from '../common'\r\n\r\nexport class Exception extends Error {\r\n constructor(public message: string, public status = 0, public description = 'Exception') {\r\n super(message)\r\n }\r\n\r\n get data() {\r\n return { message: this.message, description: this.description, status: this.status, [ERROR_SYMBOL]: true }\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ValidateException extends Exception {\r\n constructor(message: string) {\r\n super(message, 400, 'Validate exception')\r\n }\r\n}\r\n","import { isPhecda, plainToClass, transformInstance } from 'phecda-core'\r\nimport { ValidateException } from './exception/validate'\r\n\r\nimport type { PipeType } from './context'\r\n\r\nexport const defaultPipe: PipeType = ({ arg, reflect, index }) => {\r\n if (isPhecda(reflect)) {\r\n const instance = plainToClass(reflect, arg)\r\n const err = transformInstance(instance)\r\n if (err.length > 0)\r\n throw new ValidateException(err[0])\r\n\r\n arg = instance\r\n }\r\n else {\r\n if (arg === undefined && !reflect)\r\n return undefined\r\n\r\n if ([Number, Boolean].includes(reflect)) {\r\n arg = reflect(arg)\r\n\r\n if (reflect === Number && Object.is(arg, NaN))\r\n throw new ValidateException(`parameter ${Number(index) + 1} should be a number`)\r\n }\r\n }\r\n return arg\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UndefinedException extends Exception {\r\n constructor(message: string) {\r\n super(message, 500, 'Undefined error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ForbiddenException extends Exception {\r\n constructor(message: string) {\r\n super(message, 403, 'Forbidden resource')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class BadRequestException extends Exception {\r\n constructor(message: string) {\r\n super(message, 400, 'Bad Request')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class NotFoundException extends Exception {\r\n constructor(message: string) {\r\n super(message, 404, 'Not Found')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ConflictException extends Exception {\r\n constructor(message: string) {\r\n super(message, 409, 'Conflict')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class BadGatewayException extends Exception {\r\n constructor(message: string) {\r\n super(message, 502, 'Bad Gatrway')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class InvalidInputException extends Exception {\r\n constructor(message: string) {\r\n super(message, 502, 'Invalid Input')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UnsupportedMediaTypeException extends Exception {\r\n constructor(message: string) {\r\n super(message, 415, 'Unsupported Media Type')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class PayloadLargeException extends Exception {\r\n constructor(message: string) {\r\n super(message, 413, 'Payload Too Large')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class TimeoutException extends Exception {\r\n constructor(message: string) {\r\n super(message, 408, 'Request Timeout',\r\n )\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UnauthorizedException extends Exception {\r\n constructor(message: string) {\r\n super(message, 401, 'Unauthorized')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ServiceUnavailableException extends Exception {\r\n constructor(message: string) {\r\n super(message, 503, 'Service Unavailable')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class FrameworkException extends Exception {\r\n constructor(message: string) {\r\n super(`[phecda-server] ${message}`, 500, 'Framework Error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\nexport class TimerException extends Exception {\r\n constructor(message: string) {\r\n super(message, 0, 'Timer Error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\nexport class WorkerException extends Exception {\r\n constructor(message: string) {\r\n super(message, 0, 'Worker Error')\r\n }\r\n}\r\n","import { IS_HMR } from './common'\r\nexport function HMR(cb: (...args: any) => any) {\r\n if (IS_HMR)\r\n globalThis.__PS_HMR__?.push(cb)\r\n}\r\n","import { IncomingHttpHeaders } from 'node:http'\r\nimport { BaseContext, DefaultOptions } from '../types'\r\nimport type { ControllerMetaData } from '../meta'\r\n\r\nexport function resolveDep(ret: any, key: string) {\r\n if (key)\r\n return ret?.[key]\r\n return ret\r\n}\r\n\r\nexport interface HttpOptions extends DefaultOptions {\r\n\r\n /**\r\n * 专用路由的值,默认为/__PHECDA_SERVER__,处理phecda-client发出的合并请求\r\n */\r\n parallel_route?: string\r\n\r\n /**\r\n * 专用路由的插件(work for merge request),\r\n */\r\n parallel_plugins?: string[]\r\n\r\n /**\r\n * only work for http server\r\n */\r\n globalPlugins?: string[]\r\n\r\n}\r\n\r\nexport interface HttpContext extends BaseContext {\r\n parallel?: true\r\n index?: number\r\n query: Record<string, any>\r\n params: Record<string, string>\r\n body: Record<string, any>\r\n headers: IncomingHttpHeaders\r\n // redirect:(url:string)=>void\r\n\r\n}\r\nexport function argToReq(params: ControllerMetaData['params'], args: any[], headers: Record<string, any>) {\r\n const req = {\r\n body: {},\r\n query: {},\r\n params: {},\r\n headers,\r\n } as any\r\n\r\n params.forEach((param) => {\r\n if (param.key)\r\n req[param.type][param.key] = args[param.index]\r\n\r\n else\r\n req[param.type] = args[param.index]\r\n })\r\n\r\n return req\r\n}\r\n","import { hostname } from 'os'\r\nimport { BaseContext, DefaultOptions } from '../types'\r\n\r\nexport function genClientQueue(key?: string) {\r\n return `PS-${key ? `${key}-` : ''}${hostname()}-${process.pid}`\r\n}\r\n\r\nexport interface RpcServerOptions extends DefaultOptions {\r\n\r\n}\r\n\r\nexport interface RpcClientOptions {\r\n // add to clientQueue\r\n key?: string\r\n timeout?: number\r\n max?: number\r\n}\r\nexport interface RpcContext extends BaseContext {\r\n args: any[]\r\n id: string\r\n queue: string\r\n isEvent?: boolean\r\n}\r\n","export function shallowClone(obj: any) {\r\n return { ...obj }\r\n}\r\nexport function mergeObject(...args: any[]) {\r\n return Object.assign({}, ...args)\r\n}\r\nexport function mergeArray(...args: any[]) {\r\n return args.filter(item => !!item).flat()\r\n}\r\n","import pc from 'picocolors'\r\nimport { log } from './utils'\r\nimport { Context } from './context'\r\nimport { HMR } from './hmr'\r\nimport { ControllerMeta, Meta } from './meta'\r\n\r\n// help you build your custom framework or decorator\r\nexport * from './hmr'\r\nexport * from './server/helper'\r\nexport * from './rpc/helper'\r\nexport * from './decorators/helper'\r\n\r\nexport function createControllerMetaMap(meta: Meta[], filter: (meta: Meta) => boolean | void) {\r\n const metaMap = new Map<string, Record<string, ControllerMeta>>()\r\n\r\n function handleMeta() {\r\n metaMap.clear()\r\n for (const item of meta) {\r\n const { tag, func } = item.data\r\n if (!filter(item))\r\n continue\r\n\r\n if (metaMap.has(tag))\r\n metaMap.get(tag)![func] = item as ControllerMeta\r\n\r\n else\r\n metaMap.set(tag, { [func]: item as ControllerMeta })\r\n }\r\n }\r\n\r\n handleMeta()\r\n HMR(handleMeta)\r\n\r\n return metaMap\r\n}\r\n\r\n// detect whether plugin/filter/pipe/guard/intercept is injected\r\nexport function detectAopDep(meta: Meta[], { guards, interceptors, plugins }: {\r\n guards?: string[]\r\n interceptors?: string[]\r\n plugins?: string[]\r\n\r\n} = {}, controller: string = 'http') {\r\n const pluginSet = new Set<string>()\r\n const guardSet = new Set<string>()\r\n const interceptorSet = new Set<string>()\r\n const pipeSet = new Set<string>()\r\n const filterSet = new Set<string>()\r\n const warningSet = new Set<string>()\r\n\r\n function handleMeta() {\r\n pluginSet.clear()\r\n guardSet.clear()\r\n interceptorSet.clear()\r\n pipeSet.clear()\r\n filterSet.clear()\r\n warningSet.clear()\r\n\r\n plugins?.forEach((item) => {\r\n pluginSet.add(item)\r\n })\r\n guards?.forEach((item) => {\r\n guardSet.add(item)\r\n })\r\n interceptors?.forEach((item) => {\r\n interceptorSet.add(item)\r\n });\r\n\r\n (meta as ControllerMeta[]).forEach(({ data }) => {\r\n if (data.controller !== controller) {\r\n if (data[controller])\r\n warningSet.add(`Module \"${data.tag === data.name ? data.name : `${data.name}(${data.tag})`}\" should use ${controller} controller to decorate class or remove ${controller} decorator on method \"${data.func}\"`)\r\n\r\n return\r\n }\r\n if (data.filter)\r\n filterSet.add(data.filter)\r\n\r\n data.interceptors.forEach(i => interceptorSet.add(i))\r\n data.guards.forEach(i => guardSet.add(i))\r\n data.plugins.forEach(i => pluginSet.add(i))\r\n data.params.forEach((i) => {\r\n if (i.pipe)\r\n pipeSet.add(i.pipe)\r\n })\r\n })\r\n const missPlugins = [...pluginSet].filter(i => !Context.pluginRecord[i])\r\n const missGuards = [...guardSet].filter(i => !Context.guardRecord[i])\r\n const missInterceptors = [...interceptorSet].filter(i => !Context.interceptorRecord[i])\r\n const missPipes = [...pipeSet].filter(i => !Context.pipeRecord[i])\r\n const missFilters = [...filterSet].filter(i => !Context.filterRecord[i])\r\n\r\n if (missPlugins.length)\r\n log(`${pc.white(`Plugin [${missPlugins.join(',')}]`)} doesn't exist`, 'warn')\r\n if (missGuards.length)\r\n log(`${pc.magenta(`Guard [${missGuards.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n if (missInterceptors.length)\r\n log(`${pc.cyan(`Interceptor [${missInterceptors.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n if (missPipes.length)\r\n log(`${pc.blue(`Pipe [${missPipes.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n if (missFilters.length)\r\n log(`${pc.red(`Filter [${missFilters.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n warningSet.forEach(warn => log(warn, 'warn'))\r\n }\r\n\r\n handleMeta()\r\n HMR(handleMeta)\r\n return {\r\n pluginSet,\r\n guardSet,\r\n interceptorSet,\r\n pipeSet,\r\n filterSet,\r\n }\r\n}\r\n","import Debug from 'debug'\r\nimport { defaultPipe } from './pipe'\r\nimport { ForbiddenException, FrameworkException } from './exception'\r\nimport { defaultFilter } from './filter'\r\nimport type { BaseContext, DefaultOptions } from './types'\r\nimport { IS_HMR, IS_STRICT } from './common'\r\nimport { log } from './utils'\r\nimport type { Exception } from './exception'\r\nimport { resolveDep } from './helper'\r\n\r\nconst debug = Debug('phecda-server(Context)')\r\n\r\nexport interface PipeArg { arg: any; pipe?: string; key: string; type: string; index: number; reflect: any; define: Record<string, any> }\r\nexport type GuardType<C extends BaseContext = any> = ((ctx: C) => Promise<boolean> | boolean)\r\nexport type InterceptorType<C extends BaseContext = any> = (ctx: C) => (any | ((ret: any) => any))\r\nexport type PipeType<C extends BaseContext = any> = (arg: PipeArg, ctx: C) => Promise<any>\r\nexport type FilterType<C extends BaseContext = any, E extends Exception = any> = (err: E | Error, ctx?: C) => Error | any\r\n\r\nexport class Context<Data extends BaseContext> {\r\n method: string\r\n params: string[]\r\n\r\n static filterRecord: Record<PropertyKey, FilterType> = {\r\n default: defaultFilter,\r\n }\r\n\r\n static pipeRecord: Record<PropertyKey, PipeType> = {\r\n default: defaultPipe,\r\n }\r\n\r\n static guardRecord: Record<PropertyKey, GuardType> = {}\r\n static interceptorRecord: Record<PropertyKey, InterceptorType> = {}\r\n\r\n static pluginRecord: Record<PropertyKey, (framework: string) => any> = {}\r\n private postInterceptors: Function[]\r\n\r\n constructor(public data: Data) {\r\n if (IS_HMR)\r\n // @ts-expect-error work for debug\r\n data._context = this\r\n }\r\n\r\n public async run<ReturnData = any, ReturnErr = any>(opts: DefaultOptions, successCb: (data: any) => ReturnData, failCb: (err: any) => ReturnErr) {\r\n const { meta, moduleMap } = this.data\r\n const { globalGuards = [], globalFilter, globalInterceptors = [], globalPipe } = opts\r\n const {\r\n paramsType,\r\n data: {\r\n guards, interceptors, params,\r\n tag, func, ctx, filter,\r\n\r\n },\r\n } = meta\r\n\r\n try {\r\n await this.useGuard([...globalGuards, ...guards])\r\n const i1 = await this.useInterceptor([...globalInterceptors, ...interceptors])\r\n if (i1 !== undefined)\r\n return successCb(i1)\r\n\r\n const args = await this.usePipe(params.map((param) => {\r\n return { arg: resolveDep(this.data[param.type], param.key), reflect: paramsType[param.index], ...param, pipe: param.pipe || globalPipe }\r\n }))\r\n const instance = moduleMap.get(tag)!\r\n if (ctx)\r\n instance[ctx] = this.data\r\n const returnData = await instance[func](...args)\r\n const i2 = await this.usePostInterceptor(returnData)\r\n if (i2 !== undefined)\r\n return successCb(i2)\r\n\r\n return successCb(returnData)\r\n }\r\n catch (e) {\r\n const err = await this.useFilter(e, filter || globalFilter)\r\n return failCb(err)\r\n }\r\n }\r\n\r\n private usePipe(args: PipeArg[]) {\r\n return Promise.all(args.map((item) => {\r\n if (item.pipe && !Context.pipeRecord[item.pipe]) {\r\n if (IS_STRICT) {\r\n throw new FrameworkException(`can't find pipe named '${item.pipe}'`)\r\n }\r\n\r\n else {\r\n debug(`Can't find pipe named \"${item.pipe}\" when handling the ${item.index + 1}th argument of the func \"${this.data.func}\" on module \"${this.data.tag}\",use default pipe instead`)\r\n\r\n return Context.pipeRecord.default(item, this.data)\r\n }\r\n }\r\n\r\n return Context.pipeRecord[item.pipe || 'default'](item, this.data)\r\n }))\r\n }\r\n\r\n private useFilter(arg: any, filter = 'default') {\r\n if (!Context.filterRecord[filter]) {\r\n if (IS_STRICT) {\r\n throw new FrameworkException(`can't find filter named \"${filter}\"`)\r\n }\r\n else {\r\n debug(`Can't find filter named \"${filter}\" when handling func \"${this.data.func}\" on module \"${this.data.tag}\",use default filter instead`)\r\n\r\n return Context.filterRecord.default(arg, this.data)\r\n }\r\n }\r\n\r\n return Context.filterRecord[filter](arg, this.data)\r\n }\r\n\r\n private async useGuard(guards: string[]) {\r\n for (const guard of new Set(guards)) {\r\n if (!(guard in Context.guardRecord)) {\r\n if (IS_STRICT)\r\n throw new FrameworkException(`Can't find guard named \"${guard}\"`)\r\n else debug(`Can't find guard named \"${guard}\" when handling func \"${this.data.func}\" on module \"${this.data.tag}\",skip it`)\r\n continue\r\n }\r\n if (!await Context.guardRecord[guard](this.data))\r\n throw new ForbiddenException(`Guard exception--[${guard}]`)\r\n }\r\n }\r\n\r\n private async usePostInterceptor(data: any) {\r\n for (const cb of this.postInterceptors) {\r\n const ret = await cb(data)\r\n if (ret !== undefined)\r\n return ret\r\n }\r\n }\r\n\r\n private async useInterceptor(interceptors: string[]) {\r\n const cb = []\r\n for (const interceptor of new Set(interceptors)) {\r\n if (!(interceptor in Context.interceptorRecord)) {\r\n if (IS_STRICT)\r\n throw new FrameworkException(`can't find interceptor named \"${interceptor}\"`)\r\n else debug(`Can't find interceptor named \"${interceptor}\" when handling func \"${this.data.func}\" on module \"${this.data.tag}\",skip it`)\r\n\r\n continue\r\n }\r\n const interceptRet = await Context.interceptorRecord[interceptor](this.data)\r\n if (interceptRet !== undefined) {\r\n if (typeof interceptRet === 'function')\r\n cb.push(interceptRet)\r\n\r\n else\r\n return interceptRet\r\n }\r\n }\r\n this.postInterceptors = cb\r\n }\r\n\r\n static usePlugin(plugins: string[], framework: string) {\r\n const ret = []\r\n for (const m of new Set(plugins)) {\r\n if (!(m in Context.pluginRecord)) {\r\n if (IS_STRICT)\r\n throw new FrameworkException(`can't find middleware named '${m}'`)\r\n\r\n continue\r\n }\r\n const plugin = Context.pluginRecord[m](framework)\r\n plugin && ret.push(plugin)\r\n }\r\n return ret as any[]\r\n }\r\n}\r\n\r\nexport function addPlugin<T>(key: PropertyKey, handler: (framework: string) => T) {\r\n if (Context.pluginRecord[key] && Context.pluginRecord[key] !== handler)\r\n log(`overwrite Plugin \"${String(key)}\"`, 'warn')\r\n\r\n Context.pluginRecord[key] = handler\r\n}\r\n\r\nexport function addPipe<C extends BaseContext>(key: PropertyKey, handler: PipeType<C>) {\r\n if (Context.pipeRecord[key] && Context.pipeRecord[key] !== handler)\r\n log(`overwrite Pipe \"${String(key)}\"`, 'warn')\r\n Context.pipeRecord[key] = handler\r\n}\r\n\r\nexport function addFilter<C extends BaseContext>(key: PropertyKey, handler: FilterType<C>) {\r\n if (Context.filterRecord[key] && Context.filterRecord[key] !== handler)\r\n log(`overwrite Filter \"${String(key)}\"`, 'warn')\r\n Context.filterRecord[key] = handler\r\n}\r\n\r\nexport function addGuard<C extends BaseContext>(key: PropertyKey, handler: GuardType<C>) {\r\n if (Context.guardRecord[key] && Context.guardRecord[key] !== handler)\r\n log(`overwrite Guard \"${String(key)}\"`, 'warn')\r\n Context.guardRecord[key] = handler\r\n}\r\n\r\nexport function addInterceptor<C extends BaseContext>(key: PropertyKey, handler: InterceptorType<C>) {\r\n if (Context.interceptorRecord[key] && Context.interceptorRecord[key] !== handler)\r\n log(`overwrite Interceptor \"${String(key)}\"`, 'warn')\r\n Context.interceptorRecord[key] = handler\r\n}\r\n","import { LOG_LEVEL } from './common'\r\nimport { Exception, UndefinedException } from './exception'\r\nimport { log } from './utils'\r\nimport type { FilterType } from './context'\r\n\r\nexport const defaultFilter: FilterType = (e) => {\r\n if (!(e instanceof Exception)) {\r\n log(e.message, 'error')\r\n if (LOG_LEVEL <= 0)\r\n console.error(e.stack)\r\n\r\n e = new UndefinedException(e.message || e)\r\n }\r\n else {\r\n log(`[${e.constructor.name}] ${e.message}`, 'error')\r\n if (LOG_LEVEL <= 0)\r\n console.error(e.stack)\r\n }\r\n\r\n return e.data\r\n}\r\n"],"mappings":"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","names":["Exception","Error","message","status","description","constructor","data","ERROR_SYMBOL","ValidateException","Exception","constructor","message","isPhecda","plainToClass","transformInstance","defaultPipe","arg","reflect","index","isPhecda","instance","plainToClass","err","transformInstance","length","ValidateException","undefined","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","TimerException","Exception","constructor","message","WorkerException","Exception","constructor","message","HMR","cb","IS_HMR","globalThis","__PS_HMR__","push","resolveDep","ret","key","argToReq","params","args","headers","req","body","query","forEach","param","type","index","hostname","genClientQueue","key","hostname","process","pid","shallowClone","obj","mergeObject","args","Object","assign","mergeArray","filter","item","flat","pc","Debug","defaultFilter","e","Exception","log","message","LOG_LEVEL","console","error","stack","UndefinedException","constructor","name","data","debug","Debug","Context","data","method","params","postInterceptors","constructor","IS_HMR","_context","run","opts","successCb","failCb","meta","moduleMap","globalGuards","globalFilter","globalInterceptors","globalPipe","paramsType","guards","interceptors","tag","func","ctx","filter","useGuard","i1","useInterceptor","undefined","args","usePipe","map","param","arg","resolveDep","type","key","reflect","index","pipe","instance","get","returnData","i2","usePostInterceptor","e","err","useFilter","Promise","all","item","pipeRecord","IS_STRICT","FrameworkException","default","filterRecord","guard","Set","guardRecord","ForbiddenException","cb","ret","interceptor","interceptorRecord","interceptRet","push","usePlugin","plugins","framework","m","pluginRecord","plugin","defaultFilter","defaultPipe","addPlugin","handler","log","String","addPipe","addFilter","addGuard","addInterceptor","createControllerMetaMap","meta","filter","metaMap","Map","handleMeta","clear","item","tag","func","data","has","get","set","HMR","detectAopDep","guards","interceptors","plugins","controller","pluginSet","Set","guardSet","interceptorSet","pipeSet","filterSet","warningSet","forEach","add","name","i","params","pipe","missPlugins","Context","pluginRecord","missGuards","guardRecord","missInterceptors","interceptorRecord","missPipes","pipeRecord","missFilters","filterRecord","length","log","pc","white","join","magenta","cyan","blue","red","warn"]}
@@ -1,88 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
8
-
9
- // src/common.ts
10
- var UNMOUNT_SYMBOL = "__PS_UNMOUNT__";
11
- var ERROR_SYMBOL = "__PS_ERROR__";
12
- var IS_HMR = process.env.NODE_ENV === "development";
13
- var IS_ONLY_GENERATE = !!process.env.PS_GENERATE;
14
- var IS_STRICT = !!process.env.PS_STRICT;
15
- var LOG_LEVEL = Number(process.env.PS_LOG_LEVEL || 0);
16
- var PS_EXIT_CODE;
17
- (function(PS_EXIT_CODE2) {
18
- PS_EXIT_CODE2[PS_EXIT_CODE2["RELAUNCH"] = 2] = "RELAUNCH";
19
- PS_EXIT_CODE2[PS_EXIT_CODE2["CODE"] = 4] = "CODE";
20
- })(PS_EXIT_CODE || (PS_EXIT_CODE = {}));
21
-
22
- // src/utils.ts
23
- import pc from "picocolors";
24
- import { DataMap } from "phecda-core";
25
- var time;
26
- function log(msg, level = "log") {
27
- const logLevel = {
28
- info: 0,
29
- log: 1,
30
- warn: 2,
31
- error: 3
32
- }[level];
33
- if (logLevel < LOG_LEVEL)
34
- return;
35
- const color = {
36
- error: "red",
37
- info: "gray",
38
- warn: "yellow",
39
- log: "green"
40
- }[level];
41
- const date = new Date();
42
- const current = Date.now();
43
- const interval = time && current - time ? `+${current - time}` : "";
44
- time = current;
45
- console.log(`${pc.magenta("[phecda-server]")} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)} ${pc.gray(interval)}`);
46
- }
47
- __name(log, "log");
48
- function getConfig(key, defaultConf) {
49
- if (!DataMap[key]) {
50
- if (defaultConf)
51
- return defaultConf;
52
- throw new Error(`config "${key}" is not existed`);
53
- }
54
- return DataMap[key];
55
- }
56
- __name(getConfig, "getConfig");
57
- function setConfig(key, conf, force = true) {
58
- if (DataMap[key] && !force)
59
- return;
60
- DataMap[key] = conf;
61
- }
62
- __name(setConfig, "setConfig");
63
- function Mix(InternalClass, ExtendClass) {
64
- return class extends InternalClass {
65
- constructor(...args) {
66
- super();
67
- Object.assign(this, new ExtendClass(...args));
68
- }
69
- };
70
- }
71
- __name(Mix, "Mix");
72
-
73
- export {
74
- __name,
75
- __publicField,
76
- UNMOUNT_SYMBOL,
77
- ERROR_SYMBOL,
78
- IS_HMR,
79
- IS_ONLY_GENERATE,
80
- IS_STRICT,
81
- LOG_LEVEL,
82
- PS_EXIT_CODE,
83
- log,
84
- getConfig,
85
- setConfig,
86
- Mix
87
- };
88
- //# sourceMappingURL=chunk-C5JAHCS2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common.ts","../src/utils.ts"],"sourcesContent":["// export const MERGE_SYMBOL = '__PS_MERGE__'// is parallel request in http\r\nexport const UNMOUNT_SYMBOL = '__PS_UNMOUNT__'// property that include unmount callbacks\r\n// export const MODULE_SYMBOL = '__PS_MODULE__'// req[MODULE_SYMBOL]=modulemap\r\n// export const META_SYMBOL = '__PS_META__'// req[META_SYMBOL]=meta\r\n// export const PS_SYMBOL = '__PS__'// (app/router)[PS_SYMBOL]=Factory(...)\r\nexport const ERROR_SYMBOL = '__PS_ERROR__'// only use in paralle request\r\n\r\nexport const IS_HMR = process.env.NODE_ENV === 'development'\r\nexport const IS_ONLY_GENERATE = !!process.env.PS_GENERATE// work for ci; only generate code\r\nexport const IS_STRICT = !!process.env.PS_STRICT// throw error if depends on an aop module which is not imported\r\nexport const LOG_LEVEL = Number(process.env.PS_LOG_LEVEL || 0)// internal logger\r\n\r\nexport enum PS_EXIT_CODE {\r\n RELAUNCH = 2,\r\n CODE = 4,\r\n}\r\n","import pc from 'picocolors'\r\nimport type { AbConstruct, Construct } from 'phecda-core'\r\nimport { DataMap } from 'phecda-core'\r\nimport { LOG_LEVEL } from './common'\r\n\r\nlet time: number\r\n\r\nexport function log(msg: string, level: 'error' | 'info' | 'warn' | 'log' = 'log') {\r\n const logLevel = {\r\n info: 0,\r\n log: 1,\r\n warn: 2,\r\n error: 3,\r\n }[level]\r\n\r\n if (logLevel < LOG_LEVEL)\r\n return\r\n\r\n const color = ({ error: 'red', info: 'gray', warn: 'yellow', log: 'green' } as const)[level]\r\n const date = new Date()\r\n const current = Date.now()\r\n const interval = (time && current - time) ? `+${current - time}` : ''\r\n time = current\r\n // eslint-disable-next-line no-console\r\n console.log(`${pc.magenta('[phecda-server]')} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)} ${pc.gray(interval)}`)\r\n}\r\n\r\n/**\r\n * @deprecated\r\n */\r\nexport function getConfig<C = any>(key: string, defaultConf?: C): C {\r\n if (!DataMap[key]) {\r\n if (defaultConf)\r\n return defaultConf\r\n throw new Error(`config \"${key}\" is not existed`)\r\n }\r\n\r\n return DataMap[key]\r\n}\r\n/**\r\n * @deprecated\r\n */\r\nexport function setConfig<C = any>(key: string, conf: C, force = true) {\r\n if (DataMap[key] && !force)\r\n return\r\n\r\n DataMap[key] = conf\r\n}\r\n\r\nexport function Mix<C1 extends Construct | AbConstruct, C2 extends Construct>(InternalClass: C1, ExtendClass: C2) {\r\n return class extends InternalClass {\r\n constructor(...args: any) {\r\n super()\r\n Object.assign(this, new ExtendClass(...args))\r\n }\r\n } as new (...args: ConstructorParameters<C2>) => InstanceType<C1> & InstanceType<C2>\r\n}\r\n"],"mappings":";;;;;;;;;AACO,IAAMA,iBAAiB;AAIvB,IAAMC,eAAe;AAErB,IAAMC,SAASC,QAAQC,IAAIC,aAAa;AACxC,IAAMC,mBAAmB,CAAC,CAACH,QAAQC,IAAIG;AACvC,IAAMC,YAAY,CAAC,CAACL,QAAQC,IAAIK;AAChC,IAAMC,YAAYC,OAAOR,QAAQC,IAAIQ,gBAAgB,CAAA;IAErD;UAAKC,eAAY;AAAZA,EAAAA,cAAAA,cACVC,cAAW,KAAXA;AADUD,EAAAA,cAAAA,cAEVE,UAAO,KAAPA;GAFUF,iBAAAA,eAAAA,CAAAA,EAAAA;;;ACZZ,OAAOG,QAAQ;AAEf,SAASC,eAAe;AAGxB,IAAIC;AAEG,SAASC,IAAIC,KAAaC,QAA2C,OAAO;AACjF,QAAMC,WAAW;IACfC,MAAM;IACNJ,KAAK;IACLK,MAAM;IACNC,OAAO;EACT,EAAEJ;AAEF,MAAIC,WAAWI;AACb;AAEF,QAAMC,QAAS;IAAEF,OAAO;IAAOF,MAAM;IAAQC,MAAM;IAAUL,KAAK;EAAQ,EAAYE;AACtF,QAAMO,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYd,QAAQY,UAAUZ,OAAQ,IAAIY,UAAUZ,SAAS;AACnEA,SAAOY;AAEPG,UAAQd,IAAI,GAAGe,GAAGC,QAAQ,iBAAA,KAAsBD,GAAGE,KAAK,GAAGR,KAAKS,SAAQ,KAAMT,KAAKU,WAAU,KAAMV,KAAKW,WAAU,GAAI,KAAKL,GAAGP,OAAOP,GAAAA,KAAQc,GAAGE,KAAKJ,QAAAA,GAAW;AAClK;AAlBgBb;AAuBT,SAASqB,UAAmBC,KAAaC,aAAoB;AAClE,MAAI,CAACC,QAAQF,MAAM;AACjB,QAAIC;AACF,aAAOA;AACT,UAAM,IAAIE,MAAM,WAAWH,qBAAqB;EAClD;AAEA,SAAOE,QAAQF;AACjB;AARgBD;AAYT,SAASK,UAAmBJ,KAAaK,MAASC,QAAQ,MAAM;AACrE,MAAIJ,QAAQF,QAAQ,CAACM;AACnB;AAEFJ,UAAQF,OAAOK;AACjB;AALgBD;AAOT,SAASG,IAA8DC,eAAmBC,aAAiB;AAChH,SAAO,cAAcD,cAAAA;IACnBE,eAAeC,MAAW;AACxB,YAAK;AACLC,aAAOC,OAAO,MAAM,IAAIJ,YAAAA,GAAeE,IAAAA,CAAAA;IACzC;EACF;AACF;AAPgBJ;","names":["UNMOUNT_SYMBOL","ERROR_SYMBOL","IS_HMR","process","env","NODE_ENV","IS_ONLY_GENERATE","PS_GENERATE","IS_STRICT","PS_STRICT","LOG_LEVEL","Number","PS_LOG_LEVEL","PS_EXIT_CODE","RELAUNCH","CODE","pc","DataMap","time","log","msg","level","logLevel","info","warn","error","LOG_LEVEL","color","date","Date","current","now","interval","console","pc","magenta","gray","getHours","getMinutes","getSeconds","getConfig","key","defaultConf","DataMap","Error","setConfig","conf","force","Mix","InternalClass","ExtendClass","constructor","args","Object","assign"]}