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.
- package/dist/{chunk-DQUH5BP6.mjs → chunk-5KOB2WHH.mjs} +1 -1
- package/dist/{chunk-DQUH5BP6.mjs.map → chunk-5KOB2WHH.mjs.map} +1 -1
- package/dist/{chunk-WWYSLFOI.js → chunk-5L4K7XEB.js} +33 -31
- package/dist/chunk-5L4K7XEB.js.map +1 -0
- package/dist/{chunk-FCLWCFQS.js → chunk-63KBHOSB.js} +3 -3
- package/dist/{chunk-ZZ2QKZ46.js → chunk-BDIQWWHN.js} +1 -1
- package/dist/{chunk-ZZ2QKZ46.js.map → chunk-BDIQWWHN.js.map} +1 -1
- package/dist/{chunk-ATMZNJSE.mjs → chunk-MIIYJMMM.mjs} +19 -15
- package/dist/chunk-MIIYJMMM.mjs.map +1 -0
- package/dist/{chunk-43ZXHSVH.mjs → chunk-Q3V3ERU3.mjs} +2 -2
- package/dist/{chunk-JZGLQ4FQ.js → chunk-WBHZCJSN.js} +61 -57
- package/dist/chunk-WBHZCJSN.js.map +1 -0
- package/dist/{chunk-F5PQVQTY.mjs → chunk-WQBXOVND.mjs} +16 -14
- package/dist/chunk-WQBXOVND.mjs.map +1 -0
- package/dist/{core-72951cf9.d.ts → core-d080d872.d.ts} +21 -13
- package/dist/index.d.ts +24 -25
- package/dist/index.js +57 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/dist/rpc/rabbitmq/index.d.ts +2 -5
- package/dist/rpc/rabbitmq/index.js +22 -20
- package/dist/rpc/rabbitmq/index.js.map +1 -1
- package/dist/rpc/rabbitmq/index.mjs +17 -15
- package/dist/rpc/rabbitmq/index.mjs.map +1 -1
- package/dist/rpc/redis/index.d.ts +2 -5
- package/dist/rpc/redis/index.js +23 -21
- package/dist/rpc/redis/index.js.map +1 -1
- package/dist/rpc/redis/index.mjs +18 -16
- package/dist/rpc/redis/index.mjs.map +1 -1
- package/dist/server/express/index.d.ts +2 -5
- package/dist/server/express/index.js +28 -26
- package/dist/server/express/index.js.map +1 -1
- package/dist/server/express/index.mjs +9 -7
- package/dist/server/express/index.mjs.map +1 -1
- package/dist/server/fastify/index.d.ts +2 -5
- package/dist/server/fastify/index.js +26 -24
- package/dist/server/fastify/index.js.map +1 -1
- package/dist/server/fastify/index.mjs +9 -7
- package/dist/server/fastify/index.mjs.map +1 -1
- package/dist/server/h3/index.d.ts +2 -5
- package/dist/server/h3/index.js +150 -160
- package/dist/server/h3/index.js.map +1 -1
- package/dist/server/h3/index.mjs +144 -154
- package/dist/server/h3/index.mjs.map +1 -1
- package/dist/server/koa/index.d.ts +2 -5
- package/dist/server/koa/index.js +28 -26
- package/dist/server/koa/index.js.map +1 -1
- package/dist/server/koa/index.mjs +9 -7
- package/dist/server/koa/index.mjs.map +1 -1
- package/dist/test.d.ts +1 -1
- package/dist/test.js +5 -5
- package/dist/test.mjs +2 -2
- package/package.json +4 -1
- package/dist/chunk-ATMZNJSE.mjs.map +0 -1
- package/dist/chunk-F5PQVQTY.mjs.map +0 -1
- package/dist/chunk-JZGLQ4FQ.js.map +0 -1
- package/dist/chunk-WWYSLFOI.js.map +0 -1
- /package/dist/{chunk-FCLWCFQS.js.map → chunk-63KBHOSB.js.map} +0 -0
- /package/dist/{chunk-43ZXHSVH.mjs.map → chunk-Q3V3ERU3.mjs.map} +0 -0
|
@@ -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
|
|
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
|
-
|
|
19
|
+
_chunkBDIQWWHNjs.__name.call(void 0, Meta, "Meta");
|
|
20
20
|
|
|
21
21
|
// src/compiler/rpc.ts
|
|
22
|
-
var Compiler = /* @__PURE__ */
|
|
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
|
-
|
|
58
|
+
_chunkBDIQWWHNjs.__name.call(void 0, generateRPCCode, "generateRPCCode");
|
|
59
59
|
|
|
60
60
|
// src/compiler/http.ts
|
|
61
|
-
var Compiler3 = /* @__PURE__ */
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
instance[
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
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[
|
|
139
|
-
for (const cb of instance[
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
229
|
+
_chunkBDIQWWHNjs.__name.call(void 0, writeCode, "writeCode");
|
|
228
230
|
writeCode();
|
|
229
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
|
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
|
-
|
|
11
|
+
_chunkBDIQWWHNjs.__name.call(void 0, resolveDep, "resolveDep");
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
exports.resolveDep = resolveDep;
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
173
|
-
|
|
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
|
-
|
|
177
|
-
|
|
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(
|
|
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.
|
|
220
|
+
return _Context.pipeRecord.default(item, this.data);
|
|
219
221
|
}
|
|
220
|
-
return _Context.pipeRecord[item.pipe || "default"](item, this.
|
|
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.
|
|
230
|
+
return _Context.filterRecord.default(arg, this.data);
|
|
229
231
|
}
|
|
230
|
-
return _Context.filterRecord[filter](arg, this.
|
|
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.
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
16
|
+
//# sourceMappingURL=chunk-Q3V3ERU3.mjs.map
|