phecda-server 4.0.0-alpha.10 → 4.0.0-alpha.11
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/{core-4ded7d17.d.ts → core-91ada79c.d.ts} +1 -1
- package/dist/index.d.ts +17 -15
- package/dist/index.js +76 -54
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +73 -52
- package/dist/index.mjs.map +1 -1
- package/dist/rpc/rabbitmq/index.d.ts +2 -2
- package/dist/rpc/rabbitmq/index.js +25 -30
- package/dist/rpc/rabbitmq/index.js.map +1 -1
- package/dist/rpc/rabbitmq/index.mjs +25 -30
- package/dist/rpc/rabbitmq/index.mjs.map +1 -1
- package/dist/rpc/redis/index.d.ts +2 -2
- package/dist/rpc/redis/index.js +25 -30
- package/dist/rpc/redis/index.js.map +1 -1
- package/dist/rpc/redis/index.mjs +25 -30
- package/dist/rpc/redis/index.mjs.map +1 -1
- package/dist/server/express/index.d.ts +2 -2
- package/dist/server/express/index.js +28 -32
- package/dist/server/express/index.js.map +1 -1
- package/dist/server/express/index.mjs +28 -32
- package/dist/server/express/index.mjs.map +1 -1
- package/dist/server/fastify/index.d.ts +2 -2
- package/dist/server/fastify/index.js +28 -32
- package/dist/server/fastify/index.js.map +1 -1
- package/dist/server/fastify/index.mjs +28 -32
- package/dist/server/fastify/index.mjs.map +1 -1
- package/dist/server/h3/index.d.ts +2 -2
- package/dist/server/h3/index.js +28 -32
- package/dist/server/h3/index.js.map +1 -1
- package/dist/server/h3/index.mjs +28 -32
- package/dist/server/h3/index.mjs.map +1 -1
- package/dist/test.d.ts +1 -1
- package/dist/{types-754ec28e.d.ts → types-70714e01.d.ts} +4 -3
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -40,34 +40,24 @@ var ValidateException = class extends Exception {
|
|
|
40
40
|
__name(ValidateException, "ValidateException");
|
|
41
41
|
|
|
42
42
|
// src/pipe.ts
|
|
43
|
-
var defaultPipe = /* @__PURE__ */ __name(async (
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (
|
|
57
|
-
throw new ValidateException(
|
|
58
|
-
args[i].arg = instance;
|
|
59
|
-
} else {
|
|
60
|
-
if ([
|
|
61
|
-
Number,
|
|
62
|
-
Boolean
|
|
63
|
-
].includes(reflect)) {
|
|
64
|
-
args[i].arg = reflect(arg);
|
|
65
|
-
if (reflect === Number && Object.is(args[i].arg, NaN))
|
|
66
|
-
throw new ValidateException(`parameter ${Number(i) + 1} should be a number`);
|
|
67
|
-
}
|
|
43
|
+
var defaultPipe = /* @__PURE__ */ __name(async ({ arg, reflect, index }) => {
|
|
44
|
+
if (isPhecda(reflect)) {
|
|
45
|
+
const instance = plainToClass(reflect, arg);
|
|
46
|
+
const err = await transformClass(instance);
|
|
47
|
+
if (err.length > 0)
|
|
48
|
+
throw new ValidateException(err[0]);
|
|
49
|
+
arg = instance;
|
|
50
|
+
} else {
|
|
51
|
+
if ([
|
|
52
|
+
Number,
|
|
53
|
+
Boolean
|
|
54
|
+
].includes(reflect)) {
|
|
55
|
+
arg = reflect(arg);
|
|
56
|
+
if (reflect === Number && Object.is(arg, NaN))
|
|
57
|
+
throw new ValidateException(`parameter ${Number(index) + 1} should be a number`);
|
|
68
58
|
}
|
|
69
59
|
}
|
|
70
|
-
return
|
|
60
|
+
return arg;
|
|
71
61
|
}, "defaultPipe");
|
|
72
62
|
|
|
73
63
|
// src/exception/undefine.ts
|
|
@@ -216,7 +206,9 @@ var _Context = class {
|
|
|
216
206
|
data._context = this;
|
|
217
207
|
}
|
|
218
208
|
usePipe(args) {
|
|
219
|
-
return
|
|
209
|
+
return Promise.all(args.map((item) => {
|
|
210
|
+
return _Context.pipeRecord[item.pipe || "default"](item, this.tag, this.data);
|
|
211
|
+
}));
|
|
220
212
|
}
|
|
221
213
|
useFilter(arg) {
|
|
222
214
|
return _Context.filter(arg, this.tag, this.data);
|
|
@@ -275,7 +267,9 @@ var _Context = class {
|
|
|
275
267
|
var Context = _Context;
|
|
276
268
|
__name(Context, "Context");
|
|
277
269
|
__publicField(Context, "filter", defaultFilter);
|
|
278
|
-
__publicField(Context, "
|
|
270
|
+
__publicField(Context, "pipeRecord", {
|
|
271
|
+
default: defaultPipe
|
|
272
|
+
});
|
|
279
273
|
__publicField(Context, "guardsRecord", {});
|
|
280
274
|
__publicField(Context, "interceptorsRecord", {});
|
|
281
275
|
__publicField(Context, "middlewareRecord", {});
|
|
@@ -283,10 +277,10 @@ function addMiddleware(key, handler) {
|
|
|
283
277
|
Context.middlewareRecord[key] = handler;
|
|
284
278
|
}
|
|
285
279
|
__name(addMiddleware, "addMiddleware");
|
|
286
|
-
function
|
|
287
|
-
Context.
|
|
280
|
+
function addPipe(key, pipe) {
|
|
281
|
+
Context.pipeRecord[key] = pipe;
|
|
288
282
|
}
|
|
289
|
-
__name(
|
|
283
|
+
__name(addPipe, "addPipe");
|
|
290
284
|
function setFilter(filter) {
|
|
291
285
|
Context.filter = filter;
|
|
292
286
|
}
|
|
@@ -617,40 +611,66 @@ import { setModelVar as setModelVar4, setState as setState4 } from "phecda-core"
|
|
|
617
611
|
|
|
618
612
|
// src/decorators/param.ts
|
|
619
613
|
import { setModelVar, setState } from "phecda-core";
|
|
620
|
-
function BaseParam(type, key
|
|
614
|
+
function BaseParam(type, key) {
|
|
621
615
|
return (target, k, index) => {
|
|
622
616
|
setModelVar(target, k);
|
|
623
617
|
const state = target._namespace.__STATE_NAMESPACE__.get(k) || {};
|
|
624
618
|
if (!state.params)
|
|
625
619
|
state.params = [];
|
|
626
|
-
state.params.
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
620
|
+
const existItem = state.params.find((item) => item.index === index);
|
|
621
|
+
if (existItem)
|
|
622
|
+
Object.assign(existItem, {
|
|
623
|
+
type,
|
|
624
|
+
key
|
|
625
|
+
});
|
|
626
|
+
else
|
|
627
|
+
state.params.push({
|
|
628
|
+
type,
|
|
629
|
+
key,
|
|
630
|
+
index
|
|
631
|
+
});
|
|
632
632
|
setState(target, k, state);
|
|
633
633
|
};
|
|
634
634
|
}
|
|
635
635
|
__name(BaseParam, "BaseParam");
|
|
636
|
-
function
|
|
637
|
-
return
|
|
636
|
+
function Pipe(key, opts) {
|
|
637
|
+
return (target, k, index) => {
|
|
638
|
+
setModelVar(target, k);
|
|
639
|
+
const state = target._namespace.__STATE_NAMESPACE__.get(k) || {};
|
|
640
|
+
const existItem = state.params.find((item) => item.index === index);
|
|
641
|
+
if (existItem)
|
|
642
|
+
Object.assign(existItem, {
|
|
643
|
+
pipe: key,
|
|
644
|
+
pipeOpts: opts
|
|
645
|
+
});
|
|
646
|
+
else
|
|
647
|
+
state.params.push({
|
|
648
|
+
pipe: key,
|
|
649
|
+
pipeOpts: opts,
|
|
650
|
+
index
|
|
651
|
+
});
|
|
652
|
+
setState(target, k, state);
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
__name(Pipe, "Pipe");
|
|
656
|
+
function Body(key = "") {
|
|
657
|
+
return BaseParam("body", key);
|
|
638
658
|
}
|
|
639
659
|
__name(Body, "Body");
|
|
640
|
-
function Head(key
|
|
641
|
-
return BaseParam("headers", key.toLowerCase()
|
|
660
|
+
function Head(key) {
|
|
661
|
+
return BaseParam("headers", key.toLowerCase());
|
|
642
662
|
}
|
|
643
663
|
__name(Head, "Head");
|
|
644
|
-
function Query(key = ""
|
|
645
|
-
return BaseParam("query", key
|
|
664
|
+
function Query(key = "") {
|
|
665
|
+
return BaseParam("query", key);
|
|
646
666
|
}
|
|
647
667
|
__name(Query, "Query");
|
|
648
|
-
function Param(key
|
|
649
|
-
return BaseParam("params", key
|
|
668
|
+
function Param(key) {
|
|
669
|
+
return BaseParam("params", key);
|
|
650
670
|
}
|
|
651
671
|
__name(Param, "Param");
|
|
652
|
-
function Arg(
|
|
653
|
-
return BaseParam("params", ""
|
|
672
|
+
function Arg() {
|
|
673
|
+
return BaseParam("params", "");
|
|
654
674
|
}
|
|
655
675
|
__name(Arg, "Arg");
|
|
656
676
|
|
|
@@ -843,8 +863,8 @@ __name(PInterceptor, "PInterceptor");
|
|
|
843
863
|
|
|
844
864
|
// src/modules/pipe.ts
|
|
845
865
|
var PPipe = class {
|
|
846
|
-
constructor() {
|
|
847
|
-
|
|
866
|
+
constructor(key) {
|
|
867
|
+
addPipe(key, this.use.bind(this));
|
|
848
868
|
}
|
|
849
869
|
};
|
|
850
870
|
__name(PPipe, "PPipe");
|
|
@@ -885,6 +905,7 @@ export {
|
|
|
885
905
|
Param,
|
|
886
906
|
Patch,
|
|
887
907
|
PayloadLargeException,
|
|
908
|
+
Pipe,
|
|
888
909
|
Post,
|
|
889
910
|
Put,
|
|
890
911
|
Query,
|
|
@@ -900,13 +921,13 @@ export {
|
|
|
900
921
|
addGuard,
|
|
901
922
|
addInterceptor,
|
|
902
923
|
addMiddleware,
|
|
924
|
+
addPipe,
|
|
903
925
|
defaultPipe,
|
|
904
926
|
emitter,
|
|
905
927
|
generateHTTPCode,
|
|
906
928
|
generateRPCCode,
|
|
907
929
|
guardsRecord,
|
|
908
930
|
resolveDep,
|
|
909
|
-
setFilter
|
|
910
|
-
setPipe
|
|
931
|
+
setFilter
|
|
911
932
|
};
|
|
912
933
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pipe.ts","../src/exception/base.ts","../src/exception/validate.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/filter.ts","../src/history.ts","../src/context.ts","../src/core.ts","../src/meta.ts","../src/utils.ts","../src/common.ts","../src/compiler/rpc.ts","../src/compiler/http.ts","../src/decorators/index.ts","../src/decorators/param.ts","../src/decorators/route.ts","../src/decorators/aop.ts","../src/index.ts","../src/helper.ts","../src/modules/dev.ts","../src/modules/filter.ts","../src/modules/guard.ts","../src/modules/interceptor.ts","../src/modules/pipe.ts"],"sourcesContent":["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 (args: any[]) => {\n for (const i in args) {\n const { option, arg, reflect } = args[i]\n if (option === false)\n continue\n if (!reflect) {\n if (option && arg)\n args[i].arg = option(arg)\n\n continue\n }\n\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 args[i].arg = instance\n }\n else {\n if ([Number, Boolean].includes(reflect)) {\n args[i].arg = reflect(arg)\n\n if (reflect === Number && Object.is(args[i].arg, NaN))\n throw new ValidateException(`parameter ${Number(i) + 1} should be a number`)\n }\n }\n }\n return args.map(item => item.arg)\n}\n","export class Exception extends Error {\n constructor(public message: string, public status: number, public description = 'Http exception') {\n super(message)\n }\n\n get data() {\n return { message: this.message, description: this.description, status: this.status, error: true }\n }\n}\n","import { Exception } from './base'\n\nexport class ValidateException extends Exception {\n constructor(message: string) {\n super(message, 400, 'Validate exception')\n }\n}\n","import { 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 { Exception, UndefinedException } from './exception'\nimport type { P } from './types'\n\nexport const defaultFilter: P.Filter = (e: any) => {\n if (!(e instanceof Exception)) {\n console.error(e.stack)\n e = new UndefinedException(e.message || e)\n }\n else {\n console.error(e.message)\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","import { defaultPipe } from './pipe'\nimport { ForbiddenException, FrameworkException } from './exception'\nimport { defaultFilter } from './filter'\nimport { Histroy } from './history'\nimport type { P } from './types'\n\nexport const guardsRecord = {} as Record<string, P.Guard>\n\nexport class Context<Data = any> {\n method: string\n params: string[]\n history = new Histroy()\n\n static filter: P.Filter = defaultFilter\n static pipe: P.Pipe = defaultPipe\n static guardsRecord: Record<string, P.Guard> = {}\n static interceptorsRecord: Record<string, P.Interceptor> = {}\n\n static middlewareRecord: Record<string, (...params: any) => any> = {}\n postInterceptors: Function[]\n\n constructor(public tag: string, public data: Data) {\n if (process.env.NODE_ENV === 'development')\n // @ts-expect-error work for debug\n data._context = this\n }\n\n usePipe(args: { arg: any; option?: any; type: string; key: string; index: number; reflect: any }[]) {\n return Context.pipe(args, this.tag, this.data)\n }\n\n useFilter(arg: any) {\n return Context.filter(arg, this.tag, this.data)\n }\n\n async useGuard(guards: string[]) {\n for (const guard of guards) {\n if (this.history.record(guard, 'guard')) {\n if (!(guard in Context.guardsRecord)) {\n if (process.env.PS_STRICT)\n throw new FrameworkException(`can't find guard named '${guard}'`)\n continue\n }\n if (!await Context.guardsRecord[guard](this.tag, this.data))\n throw new ForbiddenException(`Guard exception--${guard}`)\n }\n }\n }\n\n async usePostInterceptor(ret: any) {\n for (const cb of this.postInterceptors)\n ret = await cb(ret) || ret\n\n return ret\n }\n\n async useInterceptor(interceptors: string[]) {\n const ret = []\n for (const interceptor of interceptors) {\n if (this.history.record(interceptor, 'interceptor')) {\n if (!(interceptor in Context.interceptorsRecord)) {\n if (process.env.PS_STRICT)\n throw new FrameworkException(`can't find interceptor named '${interceptor}'`)\n\n continue\n }\n const postInterceptor = await Context.interceptorsRecord[interceptor](this.tag, this.data)\n if (postInterceptor !== undefined) {\n if (typeof postInterceptor === 'function')\n ret.push(postInterceptor)\n\n else\n return true\n }\n }\n }\n this.postInterceptors = ret\n }\n\n static useMiddleware(middlewares: string[]) {\n const ret = []\n for (const m of middlewares) {\n if (!(m in Context.middlewareRecord)) {\n if (process.env.PS_STRICT)\n throw new FrameworkException(`can't find middleware named '${m}'`)\n\n continue\n }\n ret.push(Context.middlewareRecord[m])\n }\n return ret as any[]\n }\n}\nexport function addMiddleware(key: string, handler: (...params: any) => any) {\n Context.middlewareRecord[key] = handler\n}\n\nexport function setPipe(pipe: P.Pipe) {\n Context.pipe = pipe\n}\n\nexport function setFilter(filter: P.Filter) {\n Context.filter = filter\n}\n\nexport function addGuard(key: string, handler: P.Guard) {\n Context.guardsRecord[key] = handler\n}\n\nexport function addInterceptor(key: string, handler: P.Interceptor) {\n Context.interceptorsRecord[key] = handler\n}\n","import 'reflect-metadata'\nimport fs from 'fs'\nimport EventEmitter from 'node:events'\nimport type { Phecda } from 'phecda-core'\nimport { getExposeKey, getHandler, getState, injectProperty, isPhecda, registerAsync } from 'phecda-core'\nimport Debug from 'debug'\nimport type { Construct, Emitter, P } from './types'\nimport { Meta } from './meta'\nimport { warn } from './utils'\nimport { UNMOUNT_SYMBOL } from './common'\nimport { generateHTTPCode, generateRPCCode } from './compiler'\n\nconst debug = Debug('phecda-server')\n// TODO: support both emitter types and origin emitter type in future\nexport const emitter: Emitter = new EventEmitter() as any\n\nexport async function Factory(Modules: (new (...args: any) => any)[], opts: {\n\n // HTTP generate code path\n http?: string\n // rpc generate code path\n rpc?: string\n} = {}) {\n const moduleMap = new Map<string, InstanceType<Construct>>()\n const meta: Meta[] = []\n const constructorMap = new Map()\n\n // only work for warn\n const constructorSet = new WeakSet()\n const moduleGraph = new Map<string, Set<string>>()\n const { http, rpc } = opts\n injectProperty('watcher', ({ eventName, instance, key, options }: { eventName: string; instance: any; key: string; options?: { once: boolean } }) => {\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = v\n\n if (options?.once)\n (emitter as any).once(eventName, fn)\n\n else\n (emitter as any).on(eventName, fn)\n })\n\n async function update(Module: Construct) {\n const tag = Module.prototype?.__TAG__ || Module.name\n if (!moduleMap.has(tag))\n return\n debug(`update module \"${tag}\"`)\n\n const instance = moduleMap.get(tag)\n\n if (instance?.[UNMOUNT_SYMBOL]) {\n for (const cb of instance[UNMOUNT_SYMBOL])\n await cb()\n }\n moduleMap.delete(tag)\n constructorMap.delete(tag)\n for (let i = meta.length - 1; i >= 0; i--) {\n if (meta[i].data.tag === tag)\n meta.splice(i, 1)\n }\n\n const { instance: newModule } = await buildNestModule(Module)\n if (moduleGraph.has(tag)) {\n [...moduleGraph.get(tag)!].forEach((tag) => {\n const module = moduleMap.get(tag)\n for (const key in module) {\n if (module[key] === instance)\n module[key] = newModule\n }\n })\n }\n\n moduleMap.set(tag, newModule)\n }\n async function buildNestModule(Module: Construct) {\n const paramtypes = getParamTypes(Module) as Construct[]\n let instance: InstanceType<Construct>\n const tag = Module.prototype?.__TAG__ || Module.name\n if (moduleMap.has(tag)) {\n instance = moduleMap.get(tag)\n if (!instance)\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${tag}--[module] ${Module}`)\n\n if (constructorMap.get(tag) !== Module && !constructorSet.has(Module)) {\n constructorSet.add(Module)// a module will only warn once\n warn(`Synonym module: Module taged \"${tag}\" has been loaded before, so phecda-server won't load Module \"${Module.name}\"`)\n }\n return { instance, tag }\n }\n moduleMap.set(tag, undefined)\n if (paramtypes) {\n const paramtypesInstances = [] as any[]\n for (const i in paramtypes) {\n const { instance: sub, tag: subTag } = await buildNestModule(paramtypes[i])\n paramtypesInstances[i] = sub\n if (!moduleGraph.has(subTag))\n moduleGraph.set(subTag, new Set())\n moduleGraph.get(subTag)!.add(tag)\n }\n instance = new Module(...paramtypesInstances)\n }\n else {\n instance = new Module()\n }\n meta.push(...getMetaFromInstance(instance, tag, Module.name))\n await registerAsync(instance)\n moduleMap.set(tag, instance)\n constructorMap.set(tag, Module)\n return { instance, tag }\n }\n\n for (const Module of Modules)\n await buildNestModule(Module)\n\n function writeMeta() {\n debug('write metadata')\n\n http && fs.promises.writeFile(http, generateHTTPCode(meta.map(item => item.data)))\n rpc && fs.promises.writeFile(rpc, generateRPCCode(meta.map(item => item.data)))\n }\n\n writeMeta()\n if (process.env.NODE_ENV === 'development') {\n // @ts-expect-error globalThis\n globalThis.__PS_HMR__ = async (file: string) => {\n debug(`reload file ${file}`)\n const module = await import(file)\n for (const i in module) {\n if (isPhecda(module[i]))\n await update(module[i])\n }\n }\n // @ts-expect-error globalThis\n globalThis.__PS_WRITEMETA__ = writeMeta\n }\n\n return {\n moduleMap,\n meta,\n constructorMap,\n update,\n }\n}\n\nfunction getMetaFromInstance(instance: Phecda, tag: string, name: string) {\n const vars = getExposeKey(instance).filter(item => item !== '__CLASS')\n const baseState = (getState(instance, '__CLASS') || {}) as P.Meta\n initState(baseState)\n\n return vars.map((i) => {\n const meta = {} as P.Meta\n const state = (getState(instance, i) || {}) as P.Meta\n initState(state)\n if (state.http) {\n meta.http = {\n route: (baseState.http?.route || '') + (state.http.route),\n type: state.http.type,\n }\n }\n if (baseState.rpc)\n meta.rpc = baseState.rpc\n if (state.rpc) {\n meta.rpc = {\n ...meta.rpc,\n ...state.rpc,\n }\n }\n\n meta.name = name\n meta.tag = tag\n meta.method = i as string\n const params = [] as any[]\n for (const i of state.params || []) {\n params.unshift(i)\n if (i.index === 0)\n break\n }\n\n meta.params = params\n meta.define = { ...baseState.define, ...state.define }\n meta.header = { ...baseState.header, ...state.header }\n meta.middlewares = [...new Set([...baseState.middlewares, ...state.middlewares])]\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\n\n return new Meta(meta as unknown as P.Meta, getHandler(instance, i), getParamTypes(instance, i as string) || [])\n })\n}\n\nfunction getParamTypes(Module: any, key?: string | symbol) {\n return Reflect.getMetadata('design:paramtypes', Module, key!)\n}\n\nfunction initState(state: any) {\n if (!state.define)\n state.define = {}\n if (!state.header)\n state.header = {}\n if (!state.middlewares)\n state.middlewares = []\n if (!state.guards)\n state.guards = []\n if (!state.interceptors)\n state.interceptors = []\n}\n","import type { P } from './types'\n\nexport class Meta {\n constructor(public data: P.Meta, public handlers: P.Handler[], public paramsType: any[]) {\n\n }\n}\n","import pc from 'picocolors'\n\nexport const isUndefined = (obj: any): obj is undefined =>\n typeof obj === 'undefined'\nexport const isNil = (obj: any): obj is null | undefined =>\n isUndefined(obj) || obj === null\n\nexport const isObject = (fn: any): fn is object =>\n !isNil(fn) && typeof fn === 'object'\n\nexport function warn(msg: string, color = 'yellow') {\n // @ts-expect-error no matter\n console.warn(`${pc.magenta('[phecda-server]')} ${pc[color](msg)}`)\n}\n","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__'\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n addMethod(args: P.Meta) {\n const {\n rpc, name, method, tag,\n } = args\n if (!rpc || !rpc.type)\n return\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(){\n return {tag:'${tag}-${method}',isEvent:${!!rpc.isEvent},rpc:[${rpc.type.reduce((p, c) => {\n return `${p}\"${c}\",`\n }, '')}]}\n\n }\n `\n }\n}\n\nexport function generateRPCCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n // createRequest() {\n // let content = 'import {useC} from \\'phecda-server\\'\\n'\n // for (const name in this.classMap)\n // content += `export const {${Object.keys(this.classMap[name]).join(',')}}=useC(${name})\\n`\n // return content\n // }\n\n addMethod(args: P.Meta) {\n const {\n http, name, method, params, tag,\n } = args\n if (!http)\n return\n const url = http.route.replace(/\\/\\:([^\\/]*)/g, (_, js) => `/{{${js}}}`)\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(...args){\nconst ret={tag:\"${tag}-${method}\",body:{},headers:{},query:{},params:{},method:\"${http.type}\",url:\"${url}\",args}\n\n${params.reduce((p, c, i) => `${p}ret.${c.type}${c.key ? `['${c.key}']` : ''}=args[${i}]\\n${c.type === 'params' ? `ret.url=ret.url.replace('{{${c.key}}}',args[${i}])` : ''}\\n`, '')}\nreturn ret\n }\n `\n }\n}\n\nexport function generateHTTPCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Header(name: string, value: string) {\n return (target: any, k: PropertyKey) => {\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.header)\n state.header = {}\n\n state.header[name] = value\n setState(target, k, state)\n }\n}\n\nexport function Define(key: string, value: any) {\n return (target: any, k?: PropertyKey) => {\n if (!k) {\n k = '__CLASS'\n target = target.prototype\n }\n\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.define)\n state.define = {}\n\n state.define[key] = value\n setState(target, k, state)\n }\n}\n\nexport * from './param'\nexport * from './route'\nexport * from './aop'\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function BaseParam(type: string, key: string, option?: any): any {\n return (target: any, k: PropertyKey, index: number) => {\n setModelVar(target, k)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.params)\n state.params = []\n\n state.params.push({ type, key, index, option })\n setState(target, k, state)\n }\n}\n\nexport function Body(key = '', pipeOpts?: any) {\n return BaseParam('body', key, pipeOpts)\n}\n// req.headers\nexport function Head(key: string, pipeOpts?: any) {\n return BaseParam('headers', key.toLowerCase(), pipeOpts)\n}\n\nexport function Query(key = '', pipeOpts?: any) {\n return BaseParam('query', key, pipeOpts)\n}\nexport function Param(key: string, pipeOpts?: any) {\n return BaseParam('params', key, pipeOpts)\n}\n\n// work for micro service\nexport function Arg(pipeOpts?: any) {\n return BaseParam('params', '', pipeOpts)\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Route(route: string, type?: string): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n state.http = {\n route,\n type,\n }\n setState(target, key, state)\n }\n}\n\nexport function Get(route: string) {\n return Route(route, 'get')\n}\n\nexport function Post(route: string) {\n return Route(route, 'post')\n}\nexport function Put(route: string) {\n return Route(route, 'put')\n}\n\nexport function Patch(route: string) {\n return Route(route, 'patch')\n}\nexport function Delete(route: string) {\n return Route(route, 'delete')\n}\n\nexport function Controller(route: string) {\n return Route(route)\n}\n\nexport function Rpc(...types: ('mq' | 'redis' | string)[]) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.type = types\n setState(target, key, state)\n }\n}\nexport function Event(isEvent = true) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.isEvent = isEvent\n setState(target, key, state)\n }\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Guard(...guards: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.guards)\n state.guards = []\n state.guards.push(...guards)\n setState(target, key, state)\n }\n}\n\nexport function Middle(...middlewares: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.middlewares)\n state.middlewares = []\n state.middlewares.push(...middlewares)\n setState(target, key, state)\n }\n}\n\nexport function Interceptor(...interceptors: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.interceptors)\n state.interceptors = []\n state.interceptors.push(...interceptors)\n setState(target, key, state)\n }\n}\n","export * from './context'\nexport * from './types'\nexport * from './core'\nexport * from './decorators'\nexport * from './exception'\nexport * from './pipe'\nexport * from './meta'\nexport * from 'phecda-core'\nexport * from './helper'\nexport * from './common'\nexport * from './modules'\nexport * from './compiler'\n","export function resolveDep(ret: any, key: string) {\n if (key)\n return ret?.[key]\n return ret\n}\n","import { UNMOUNT_SYMBOL } from '../common'\n\nexport class Dev {\n [UNMOUNT_SYMBOL]: (() => void)[] = []\n onUnmount(cb: () => void) {\n this[UNMOUNT_SYMBOL].push(cb)\n }\n}\n","import { setFilter } from '../context'\nimport type { Exception } from '../exception'\n\nexport abstract class PFilter {\n constructor() {\n setFilter(this.use.bind(this))\n }\n\n abstract use< C, S, E extends Exception >(error: Error | E, tag?: string, ctx?: C): S\n}\n","import { addGuard } from '../context'\n\nexport abstract class PGuard {\n abstract use<C>(tag: string, ctx: C): Promise<boolean> | boolean\n\n constructor(tag: string) {\n addGuard(tag, this.use.bind(this))\n }\n}\n","import { addInterceptor } from '../context'\n\nexport abstract class PInterceptor {\n abstract use<C>(tag: string, ctx: C): ((arg: any) => any) | void\n\n constructor(tag: string) {\n addInterceptor(tag, this.use.bind(this))\n }\n}\n","import { setPipe } from '../context'\n\nexport abstract class PPipe {\n constructor() {\n setPipe(this.use.bind(this))\n }\n\n abstract use<C>(args: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }[], tag: string, ctx: C): Promise<any[]>\n}\n"],"mappings":"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","names":["isPhecda","plainToClass","transformClass","Exception","Error","message","status","description","constructor","data","error","ValidateException","Exception","constructor","message","defaultPipe","args","i","option","arg","reflect","isPhecda","instance","plainToClass","err","transformClass","length","ValidateException","Number","Boolean","includes","Object","is","NaN","map","item","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","defaultFilter","e","Exception","console","error","stack","UndefinedException","message","data","Histroy","guard","interceptor","record","name","type","includes","push","guardsRecord","Context","tag","data","method","params","history","postInterceptors","constructor","Histroy","process","env","NODE_ENV","_context","usePipe","args","pipe","useFilter","arg","filter","useGuard","guards","guard","record","PS_STRICT","FrameworkException","ForbiddenException","usePostInterceptor","ret","cb","useInterceptor","interceptors","interceptor","interceptorsRecord","postInterceptor","undefined","push","useMiddleware","middlewares","m","middlewareRecord","defaultFilter","defaultPipe","addMiddleware","key","handler","setPipe","setFilter","addGuard","addInterceptor","fs","EventEmitter","getExposeKey","getHandler","getState","injectProperty","isPhecda","registerAsync","Debug","Meta","data","handlers","paramsType","constructor","pc","warn","msg","color","console","pc","magenta","MERGE_SYMBOL","UNMOUNT_SYMBOL","MODULE_SYMBOL","META_SYMBOL","APP_SYMBOL","Compiler","classMap","constructor","getContent","content","name","Object","values","reduce","p","c","addMethod","args","rpc","method","tag","type","isEvent","generateRPCCode","meta","compiler","i","Compiler","classMap","constructor","getContent","content","name","Object","values","reduce","p","c","addMethod","args","http","method","params","tag","url","route","replace","_","js","type","i","key","generateHTTPCode","meta","compiler","debug","Debug","emitter","EventEmitter","Factory","Modules","opts","moduleMap","Map","meta","constructorMap","constructorSet","WeakSet","moduleGraph","http","rpc","injectProperty","eventName","instance","key","options","fn","bind","v","once","on","update","Module","tag","prototype","__TAG__","name","has","get","UNMOUNT_SYMBOL","cb","delete","i","length","data","splice","newModule","buildNestModule","forEach","module","set","paramtypes","getParamTypes","Error","add","warn","undefined","paramtypesInstances","sub","subTag","Set","push","getMetaFromInstance","registerAsync","writeMeta","fs","promises","writeFile","generateHTTPCode","map","item","generateRPCCode","process","env","NODE_ENV","globalThis","__PS_HMR__","file","isPhecda","__PS_WRITEMETA__","vars","getExposeKey","filter","baseState","getState","initState","state","route","type","method","params","unshift","index","define","header","middlewares","guards","interceptors","Meta","getHandler","Reflect","getMetadata","setModelVar","setState","setModelVar","setState","BaseParam","type","key","option","target","k","index","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","params","push","setState","Body","pipeOpts","Head","toLowerCase","Query","Param","Arg","setModelVar","setState","Route","route","type","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","http","setState","Get","Post","Put","Patch","Delete","Controller","Rpc","types","rpc","Event","isEvent","setModelVar","setState","Guard","guards","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","push","setState","Middle","middlewares","Interceptor","interceptors","Header","name","value","target","k","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","header","setState","Define","key","prototype","define","resolveDep","ret","key","Dev","UNMOUNT_SYMBOL","onUnmount","cb","push","PFilter","constructor","setFilter","use","bind","PGuard","constructor","tag","addGuard","use","bind","PInterceptor","constructor","tag","addInterceptor","use","bind","PPipe","constructor","setPipe","use","bind"]}
|
|
1
|
+
{"version":3,"sources":["../src/pipe.ts","../src/exception/base.ts","../src/exception/validate.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/filter.ts","../src/history.ts","../src/context.ts","../src/core.ts","../src/meta.ts","../src/utils.ts","../src/common.ts","../src/compiler/rpc.ts","../src/compiler/http.ts","../src/decorators/index.ts","../src/decorators/param.ts","../src/decorators/route.ts","../src/decorators/aop.ts","../src/index.ts","../src/helper.ts","../src/modules/dev.ts","../src/modules/filter.ts","../src/modules/guard.ts","../src/modules/interceptor.ts","../src/modules/pipe.ts"],"sourcesContent":["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","export class Exception extends Error {\n constructor(public message: string, public status: number, public description = 'Http exception') {\n super(message)\n }\n\n get data() {\n return { message: this.message, description: this.description, status: this.status, error: true }\n }\n}\n","import { Exception } from './base'\n\nexport class ValidateException extends Exception {\n constructor(message: string) {\n super(message, 400, 'Validate exception')\n }\n}\n","import { 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 { Exception, UndefinedException } from './exception'\nimport type { P } from './types'\n\nexport const defaultFilter: P.Filter = (e: any) => {\n if (!(e instanceof Exception)) {\n console.error(e.stack)\n e = new UndefinedException(e.message || e)\n }\n else {\n console.error(e.message)\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","import { defaultPipe } from './pipe'\nimport { ForbiddenException, FrameworkException } from './exception'\nimport { defaultFilter } from './filter'\nimport { Histroy } from './history'\nimport type { P } from './types'\n\nexport const guardsRecord = {} as Record<string, P.Guard>\n\nexport class Context<Data = any> {\n method: string\n params: string[]\n history = new Histroy()\n\n static filter: P.Filter = defaultFilter\n static pipeRecord: Record<string, P.Pipe> = {\n default: defaultPipe,\n }\n\n static guardsRecord: Record<string, P.Guard> = {}\n static interceptorsRecord: Record<string, P.Interceptor> = {}\n\n static middlewareRecord: Record<string, (...params: any) => any> = {}\n postInterceptors: Function[]\n\n constructor(public tag: string, public data: Data) {\n if (process.env.NODE_ENV === 'development')\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 return Context.pipeRecord[item.pipe || 'default'](item, this.tag, this.data)\n }))\n }\n\n useFilter(arg: any) {\n return Context.filter(arg, this.tag, this.data)\n }\n\n async useGuard(guards: string[]) {\n for (const guard of guards) {\n if (this.history.record(guard, 'guard')) {\n if (!(guard in Context.guardsRecord)) {\n if (process.env.PS_STRICT)\n throw new FrameworkException(`can't find guard named '${guard}'`)\n continue\n }\n if (!await Context.guardsRecord[guard](this.tag, this.data))\n throw new ForbiddenException(`Guard exception--${guard}`)\n }\n }\n }\n\n async usePostInterceptor(ret: any) {\n for (const cb of this.postInterceptors)\n ret = await cb(ret) || ret\n\n return ret\n }\n\n async useInterceptor(interceptors: string[]) {\n const ret = []\n for (const interceptor of interceptors) {\n if (this.history.record(interceptor, 'interceptor')) {\n if (!(interceptor in Context.interceptorsRecord)) {\n if (process.env.PS_STRICT)\n throw new FrameworkException(`can't find interceptor named '${interceptor}'`)\n\n continue\n }\n const postInterceptor = await Context.interceptorsRecord[interceptor](this.tag, this.data)\n if (postInterceptor !== undefined) {\n if (typeof postInterceptor === 'function')\n ret.push(postInterceptor)\n\n else\n return true\n }\n }\n }\n this.postInterceptors = ret\n }\n\n static useMiddleware(middlewares: string[]) {\n const ret = []\n for (const m of middlewares) {\n if (!(m in Context.middlewareRecord)) {\n if (process.env.PS_STRICT)\n throw new FrameworkException(`can't find middleware named '${m}'`)\n\n continue\n }\n ret.push(Context.middlewareRecord[m])\n }\n return ret as any[]\n }\n}\nexport function addMiddleware(key: string, handler: (...params: any) => any) {\n Context.middlewareRecord[key] = handler\n}\n\nexport function addPipe(key: string, pipe: P.Pipe) {\n Context.pipeRecord[key] = pipe\n}\n\nexport function setFilter(filter: P.Filter) {\n Context.filter = filter\n}\n\nexport function addGuard(key: string, handler: P.Guard) {\n Context.guardsRecord[key] = handler\n}\n\nexport function addInterceptor(key: string, handler: P.Interceptor) {\n Context.interceptorsRecord[key] = handler\n}\n","import 'reflect-metadata'\nimport fs from 'fs'\nimport EventEmitter from 'node:events'\nimport type { Phecda } from 'phecda-core'\nimport { getExposeKey, getHandler, getState, injectProperty, isPhecda, registerAsync } from 'phecda-core'\nimport Debug from 'debug'\nimport type { Construct, Emitter, P } from './types'\nimport { Meta } from './meta'\nimport { warn } from './utils'\nimport { UNMOUNT_SYMBOL } from './common'\nimport { generateHTTPCode, generateRPCCode } from './compiler'\n\nconst debug = Debug('phecda-server')\n// TODO: support both emitter types and origin emitter type in future\nexport const emitter: Emitter = new EventEmitter() as any\n\nexport async function Factory(Modules: (new (...args: any) => any)[], opts: {\n\n // HTTP generate code path\n http?: string\n // rpc generate code path\n rpc?: string\n} = {}) {\n const moduleMap = new Map<string, InstanceType<Construct>>()\n const meta: Meta[] = []\n const constructorMap = new Map()\n\n // only work for warn\n const constructorSet = new WeakSet()\n const moduleGraph = new Map<string, Set<string>>()\n const { http, rpc } = opts\n injectProperty('watcher', ({ eventName, instance, key, options }: { eventName: string; instance: any; key: string; options?: { once: boolean } }) => {\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = v\n\n if (options?.once)\n (emitter as any).once(eventName, fn)\n\n else\n (emitter as any).on(eventName, fn)\n })\n\n async function update(Module: Construct) {\n const tag = Module.prototype?.__TAG__ || Module.name\n if (!moduleMap.has(tag))\n return\n debug(`update module \"${tag}\"`)\n\n const instance = moduleMap.get(tag)\n\n if (instance?.[UNMOUNT_SYMBOL]) {\n for (const cb of instance[UNMOUNT_SYMBOL])\n await cb()\n }\n moduleMap.delete(tag)\n constructorMap.delete(tag)\n for (let i = meta.length - 1; i >= 0; i--) {\n if (meta[i].data.tag === tag)\n meta.splice(i, 1)\n }\n\n const { instance: newModule } = await buildNestModule(Module)\n if (moduleGraph.has(tag)) {\n [...moduleGraph.get(tag)!].forEach((tag) => {\n const module = moduleMap.get(tag)\n for (const key in module) {\n if (module[key] === instance)\n module[key] = newModule\n }\n })\n }\n\n moduleMap.set(tag, newModule)\n }\n async function buildNestModule(Module: Construct) {\n const paramtypes = getParamTypes(Module) as Construct[]\n let instance: InstanceType<Construct>\n const tag = Module.prototype?.__TAG__ || Module.name\n if (moduleMap.has(tag)) {\n instance = moduleMap.get(tag)\n if (!instance)\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${tag}--[module] ${Module}`)\n\n if (constructorMap.get(tag) !== Module && !constructorSet.has(Module)) {\n constructorSet.add(Module)// a module will only warn once\n warn(`Synonym module: Module taged \"${tag}\" has been loaded before, so phecda-server won't load Module \"${Module.name}\"`)\n }\n return { instance, tag }\n }\n moduleMap.set(tag, undefined)\n if (paramtypes) {\n const paramtypesInstances = [] as any[]\n for (const i in paramtypes) {\n const { instance: sub, tag: subTag } = await buildNestModule(paramtypes[i])\n paramtypesInstances[i] = sub\n if (!moduleGraph.has(subTag))\n moduleGraph.set(subTag, new Set())\n moduleGraph.get(subTag)!.add(tag)\n }\n instance = new Module(...paramtypesInstances)\n }\n else {\n instance = new Module()\n }\n meta.push(...getMetaFromInstance(instance, tag, Module.name))\n await registerAsync(instance)\n moduleMap.set(tag, instance)\n constructorMap.set(tag, Module)\n return { instance, tag }\n }\n\n for (const Module of Modules)\n await buildNestModule(Module)\n\n function writeMeta() {\n debug('write metadata')\n\n http && fs.promises.writeFile(http, generateHTTPCode(meta.map(item => item.data)))\n rpc && fs.promises.writeFile(rpc, generateRPCCode(meta.map(item => item.data)))\n }\n\n writeMeta()\n if (process.env.NODE_ENV === 'development') {\n // @ts-expect-error globalThis\n globalThis.__PS_HMR__ = async (file: string) => {\n debug(`reload file ${file}`)\n const module = await import(file)\n for (const i in module) {\n if (isPhecda(module[i]))\n await update(module[i])\n }\n }\n // @ts-expect-error globalThis\n globalThis.__PS_WRITEMETA__ = writeMeta\n }\n\n return {\n moduleMap,\n meta,\n constructorMap,\n update,\n }\n}\n\nfunction getMetaFromInstance(instance: Phecda, tag: string, name: string) {\n const vars = getExposeKey(instance).filter(item => item !== '__CLASS')\n const baseState = (getState(instance, '__CLASS') || {}) as P.Meta\n initState(baseState)\n\n return vars.map((i) => {\n const meta = {} as P.Meta\n const state = (getState(instance, i) || {}) as P.Meta\n initState(state)\n if (state.http) {\n meta.http = {\n route: (baseState.http?.route || '') + (state.http.route),\n type: state.http.type,\n }\n }\n if (baseState.rpc)\n meta.rpc = baseState.rpc\n if (state.rpc) {\n meta.rpc = {\n ...meta.rpc,\n ...state.rpc,\n }\n }\n\n meta.name = name\n meta.tag = tag\n meta.method = i as string\n const params = [] as any[]\n for (const i of state.params || []) {\n params.unshift(i)\n if (i.index === 0)\n break\n }\n\n meta.params = params\n meta.define = { ...baseState.define, ...state.define }\n meta.header = { ...baseState.header, ...state.header }\n meta.middlewares = [...new Set([...baseState.middlewares, ...state.middlewares])]\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\n\n return new Meta(meta as unknown as P.Meta, getHandler(instance, i), getParamTypes(instance, i as string) || [])\n })\n}\n\nfunction getParamTypes(Module: any, key?: string | symbol) {\n return Reflect.getMetadata('design:paramtypes', Module, key!)\n}\n\nfunction initState(state: any) {\n if (!state.define)\n state.define = {}\n if (!state.header)\n state.header = {}\n if (!state.middlewares)\n state.middlewares = []\n if (!state.guards)\n state.guards = []\n if (!state.interceptors)\n state.interceptors = []\n}\n","import type { P } from './types'\n\nexport class Meta {\n constructor(public data: P.Meta, public handlers: P.Handler[], public paramsType: any[]) {\n\n }\n}\n","import pc from 'picocolors'\n\nexport const isUndefined = (obj: any): obj is undefined =>\n typeof obj === 'undefined'\nexport const isNil = (obj: any): obj is null | undefined =>\n isUndefined(obj) || obj === null\n\nexport const isObject = (fn: any): fn is object =>\n !isNil(fn) && typeof fn === 'object'\n\nexport function warn(msg: string, color = 'yellow') {\n // @ts-expect-error no matter\n console.warn(`${pc.magenta('[phecda-server]')} ${pc[color](msg)}`)\n}\n","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__'\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n addMethod(args: P.Meta) {\n const {\n rpc, name, method, tag,\n } = args\n if (!rpc || !rpc.type)\n return\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(){\n return {tag:'${tag}-${method}',isEvent:${!!rpc.isEvent},rpc:[${rpc.type.reduce((p, c) => {\n return `${p}\"${c}\",`\n }, '')}]}\n\n }\n `\n }\n}\n\nexport function generateRPCCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n // createRequest() {\n // let content = 'import {useC} from \\'phecda-server\\'\\n'\n // for (const name in this.classMap)\n // content += `export const {${Object.keys(this.classMap[name]).join(',')}}=useC(${name})\\n`\n // return content\n // }\n\n addMethod(args: P.Meta) {\n const {\n http, name, method, params, tag,\n } = args\n if (!http)\n return\n const url = http.route.replace(/\\/\\:([^\\/]*)/g, (_, js) => `/{{${js}}}`)\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(...args){\nconst ret={tag:\"${tag}-${method}\",body:{},headers:{},query:{},params:{},method:\"${http.type}\",url:\"${url}\",args}\n\n${params.reduce((p, c, i) => `${p}ret.${c.type}${c.key ? `['${c.key}']` : ''}=args[${i}]\\n${c.type === 'params' ? `ret.url=ret.url.replace('{{${c.key}}}',args[${i}])` : ''}\\n`, '')}\nreturn ret\n }\n `\n }\n}\n\nexport function generateHTTPCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Header(name: string, value: string) {\n return (target: any, k: PropertyKey) => {\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.header)\n state.header = {}\n\n state.header[name] = value\n setState(target, k, state)\n }\n}\n\nexport function Define(key: string, value: any) {\n return (target: any, k?: PropertyKey) => {\n if (!k) {\n k = '__CLASS'\n target = target.prototype\n }\n\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.define)\n state.define = {}\n\n state.define[key] = value\n setState(target, k, state)\n }\n}\n\nexport * from './param'\nexport * from './route'\nexport * from './aop'\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function BaseParam(type: string, key: string): any {\n return (target: any, k: PropertyKey, index: number) => {\n setModelVar(target, k)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.params)\n state.params = []\n const existItem = state.params.find((item: any) => item.index === index)\n if (existItem)\n Object.assign(existItem, { type, key })\n\n else\n state.params.push({ type, key, index })\n\n setState(target, k, state)\n }\n}\n\nexport function Pipe(key?: string, opts?: any) {\n return (target: any, k: PropertyKey, index: number) => {\n setModelVar(target, k)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n const existItem = state.params.find((item: any) => item.index === index)\n if (existItem)\n Object.assign(existItem, { pipe: key, pipeOpts: opts })\n\n else\n state.params.push({ pipe: key, pipeOpts: opts, index })\n\n setState(target, k, state)\n }\n}\n\nexport function Body(key = '') {\n return BaseParam('body', key)\n}\n// req.headers\nexport function Head(key: string) {\n return BaseParam('headers', key.toLowerCase())\n}\n\nexport function Query(key = '') {\n return BaseParam('query', key)\n}\nexport function Param(key: string) {\n return BaseParam('params', key)\n}\n\n// work for micro service\nexport function Arg() {\n return BaseParam('params', '')\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Route(route: string, type?: string): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n state.http = {\n route,\n type,\n }\n setState(target, key, state)\n }\n}\n\nexport function Get(route: string) {\n return Route(route, 'get')\n}\n\nexport function Post(route: string) {\n return Route(route, 'post')\n}\nexport function Put(route: string) {\n return Route(route, 'put')\n}\n\nexport function Patch(route: string) {\n return Route(route, 'patch')\n}\nexport function Delete(route: string) {\n return Route(route, 'delete')\n}\n\nexport function Controller(route: string) {\n return Route(route)\n}\n\nexport function Rpc(...types: ('mq' | 'redis' | string)[]) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.type = types\n setState(target, key, state)\n }\n}\nexport function Event(isEvent = true) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.isEvent = isEvent\n setState(target, key, state)\n }\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Guard(...guards: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.guards)\n state.guards = []\n state.guards.push(...guards)\n setState(target, key, state)\n }\n}\n\nexport function Middle(...middlewares: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.middlewares)\n state.middlewares = []\n state.middlewares.push(...middlewares)\n setState(target, key, state)\n }\n}\n\nexport function Interceptor(...interceptors: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.interceptors)\n state.interceptors = []\n state.interceptors.push(...interceptors)\n setState(target, key, state)\n }\n}\n","export * from './context'\nexport * from './types'\nexport * from './core'\nexport * from './decorators'\nexport * from './exception'\nexport * from './pipe'\nexport * from './meta'\nexport * from 'phecda-core'\nexport * from './helper'\nexport * from './common'\nexport * from './modules'\nexport * from './compiler'\n","export function resolveDep(ret: any, key: string) {\n if (key)\n return ret?.[key]\n return ret\n}\n","import { UNMOUNT_SYMBOL } from '../common'\n\nexport class Dev {\n [UNMOUNT_SYMBOL]: (() => void)[] = []\n onUnmount(cb: () => void) {\n this[UNMOUNT_SYMBOL].push(cb)\n }\n}\n","import { setFilter } from '../context'\nimport type { Exception } from '../exception'\n\nexport abstract class PFilter {\n constructor() {\n setFilter(this.use.bind(this))\n }\n\n abstract use< C, S, E extends Exception >(error: Error | E, tag?: string, ctx?: C): S\n}\n","import { addGuard } from '../context'\n\nexport abstract class PGuard {\n abstract use<C>(tag: string, ctx: C): Promise<boolean> | boolean\n\n constructor(tag: string) {\n addGuard(tag, this.use.bind(this))\n }\n}\n","import { addInterceptor } from '../context'\n\nexport abstract class PInterceptor {\n abstract use<C>(tag: string, ctx: C): ((arg: any) => any) | void\n\n constructor(tag: string) {\n addInterceptor(tag, this.use.bind(this))\n }\n}\n","import { addPipe } from '../context'\n\nexport abstract class PPipe {\n constructor(key: string) {\n addPipe(key, this.use.bind(this))\n }\n\n abstract use<C>(args: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, tag: string, ctx: C): Promise<any>\n}\n"],"mappings":"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","names":["isPhecda","plainToClass","transformClass","Exception","Error","message","status","description","constructor","data","error","ValidateException","Exception","constructor","message","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","defaultFilter","e","Exception","console","error","stack","UndefinedException","message","data","Histroy","guard","interceptor","record","name","type","includes","push","guardsRecord","Context","tag","data","method","params","history","postInterceptors","constructor","Histroy","process","env","NODE_ENV","_context","usePipe","args","Promise","all","map","item","pipeRecord","pipe","useFilter","arg","filter","useGuard","guards","guard","record","PS_STRICT","FrameworkException","ForbiddenException","usePostInterceptor","ret","cb","useInterceptor","interceptors","interceptor","interceptorsRecord","postInterceptor","undefined","push","useMiddleware","middlewares","m","middlewareRecord","defaultFilter","default","defaultPipe","addMiddleware","key","handler","addPipe","setFilter","addGuard","addInterceptor","fs","EventEmitter","getExposeKey","getHandler","getState","injectProperty","isPhecda","registerAsync","Debug","Meta","data","handlers","paramsType","constructor","pc","warn","msg","color","console","pc","magenta","MERGE_SYMBOL","UNMOUNT_SYMBOL","MODULE_SYMBOL","META_SYMBOL","APP_SYMBOL","Compiler","classMap","constructor","getContent","content","name","Object","values","reduce","p","c","addMethod","args","rpc","method","tag","type","isEvent","generateRPCCode","meta","compiler","i","Compiler","classMap","constructor","getContent","content","name","Object","values","reduce","p","c","addMethod","args","http","method","params","tag","url","route","replace","_","js","type","i","key","generateHTTPCode","meta","compiler","debug","Debug","emitter","EventEmitter","Factory","Modules","opts","moduleMap","Map","meta","constructorMap","constructorSet","WeakSet","moduleGraph","http","rpc","injectProperty","eventName","instance","key","options","fn","bind","v","once","on","update","Module","tag","prototype","__TAG__","name","has","get","UNMOUNT_SYMBOL","cb","delete","i","length","data","splice","newModule","buildNestModule","forEach","module","set","paramtypes","getParamTypes","Error","add","warn","undefined","paramtypesInstances","sub","subTag","Set","push","getMetaFromInstance","registerAsync","writeMeta","fs","promises","writeFile","generateHTTPCode","map","item","generateRPCCode","process","env","NODE_ENV","globalThis","__PS_HMR__","file","isPhecda","__PS_WRITEMETA__","vars","getExposeKey","filter","baseState","getState","initState","state","route","type","method","params","unshift","index","define","header","middlewares","guards","interceptors","Meta","getHandler","Reflect","getMetadata","setModelVar","setState","setModelVar","setState","BaseParam","type","key","target","k","index","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","params","existItem","find","item","Object","assign","push","setState","Pipe","opts","pipe","pipeOpts","Body","Head","toLowerCase","Query","Param","Arg","setModelVar","setState","Route","route","type","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","http","setState","Get","Post","Put","Patch","Delete","Controller","Rpc","types","rpc","Event","isEvent","setModelVar","setState","Guard","guards","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","push","setState","Middle","middlewares","Interceptor","interceptors","Header","name","value","target","k","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","header","setState","Define","key","prototype","define","resolveDep","ret","key","Dev","UNMOUNT_SYMBOL","onUnmount","cb","push","PFilter","constructor","setFilter","use","bind","PGuard","constructor","tag","addGuard","use","bind","PInterceptor","constructor","tag","addInterceptor","use","bind","PPipe","constructor","key","addPipe","use","bind"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import amqplib from 'amqplib';
|
|
2
|
-
import { M as Meta, F as Factory } from '../../core-
|
|
3
|
-
import { T as ToInstance } from '../../types-
|
|
2
|
+
import { M as Meta, F as Factory } from '../../core-91ada79c.js';
|
|
3
|
+
import { T as ToInstance } from '../../types-70714e01.js';
|
|
4
4
|
import 'phecda-core';
|
|
5
5
|
|
|
6
6
|
interface Options {
|
|
@@ -95,34 +95,24 @@ __name(FrameworkException, "FrameworkException");
|
|
|
95
95
|
|
|
96
96
|
// src/pipe.ts
|
|
97
97
|
var import_phecda_core = require("phecda-core");
|
|
98
|
-
var defaultPipe = /* @__PURE__ */ __name(async (
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (
|
|
112
|
-
throw new ValidateException(
|
|
113
|
-
args[i].arg = instance;
|
|
114
|
-
} else {
|
|
115
|
-
if ([
|
|
116
|
-
Number,
|
|
117
|
-
Boolean
|
|
118
|
-
].includes(reflect)) {
|
|
119
|
-
args[i].arg = reflect(arg);
|
|
120
|
-
if (reflect === Number && Object.is(args[i].arg, NaN))
|
|
121
|
-
throw new ValidateException(`parameter ${Number(i) + 1} should be a number`);
|
|
122
|
-
}
|
|
98
|
+
var defaultPipe = /* @__PURE__ */ __name(async ({ arg, reflect, index }) => {
|
|
99
|
+
if ((0, import_phecda_core.isPhecda)(reflect)) {
|
|
100
|
+
const instance = (0, import_phecda_core.plainToClass)(reflect, arg);
|
|
101
|
+
const err = await (0, import_phecda_core.transformClass)(instance);
|
|
102
|
+
if (err.length > 0)
|
|
103
|
+
throw new ValidateException(err[0]);
|
|
104
|
+
arg = instance;
|
|
105
|
+
} else {
|
|
106
|
+
if ([
|
|
107
|
+
Number,
|
|
108
|
+
Boolean
|
|
109
|
+
].includes(reflect)) {
|
|
110
|
+
arg = reflect(arg);
|
|
111
|
+
if (reflect === Number && Object.is(arg, NaN))
|
|
112
|
+
throw new ValidateException(`parameter ${Number(index) + 1} should be a number`);
|
|
123
113
|
}
|
|
124
114
|
}
|
|
125
|
-
return
|
|
115
|
+
return arg;
|
|
126
116
|
}, "defaultPipe");
|
|
127
117
|
|
|
128
118
|
// src/filter.ts
|
|
@@ -166,7 +156,9 @@ var _Context = class {
|
|
|
166
156
|
data._context = this;
|
|
167
157
|
}
|
|
168
158
|
usePipe(args) {
|
|
169
|
-
return
|
|
159
|
+
return Promise.all(args.map((item) => {
|
|
160
|
+
return _Context.pipeRecord[item.pipe || "default"](item, this.tag, this.data);
|
|
161
|
+
}));
|
|
170
162
|
}
|
|
171
163
|
useFilter(arg) {
|
|
172
164
|
return _Context.filter(arg, this.tag, this.data);
|
|
@@ -225,7 +217,9 @@ var _Context = class {
|
|
|
225
217
|
var Context = _Context;
|
|
226
218
|
__name(Context, "Context");
|
|
227
219
|
__publicField(Context, "filter", defaultFilter);
|
|
228
|
-
__publicField(Context, "
|
|
220
|
+
__publicField(Context, "pipeRecord", {
|
|
221
|
+
default: defaultPipe
|
|
222
|
+
});
|
|
229
223
|
__publicField(Context, "guardsRecord", {});
|
|
230
224
|
__publicField(Context, "interceptorsRecord", {});
|
|
231
225
|
__publicField(Context, "middlewareRecord", {});
|
|
@@ -272,10 +266,11 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
|
|
|
272
266
|
...interceptors
|
|
273
267
|
]))
|
|
274
268
|
return;
|
|
275
|
-
const handleArgs = await context.usePipe(params.map(({ type, key,
|
|
269
|
+
const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {
|
|
276
270
|
return {
|
|
277
271
|
arg: args[i],
|
|
278
|
-
|
|
272
|
+
pipe,
|
|
273
|
+
pipeOpts,
|
|
279
274
|
key,
|
|
280
275
|
type,
|
|
281
276
|
index,
|