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.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { E as Exception, P } from './types-
|
|
2
|
-
export { B as BaseError, C as Construct, a as Emitter, M as MergeType, R as RequestType, S as ServerErr, T as ToInstance } from './types-
|
|
3
|
-
export { F as Factory, M as Meta, e as emitter } from './core-
|
|
1
|
+
import { E as Exception, P } from './types-70714e01.js';
|
|
2
|
+
export { B as BaseError, C as Construct, a as Emitter, M as MergeType, R as RequestType, S as ServerErr, T as ToInstance } from './types-70714e01.js';
|
|
3
|
+
export { F as Factory, M as Meta, e as emitter } from './core-91ada79c.js';
|
|
4
4
|
export * from 'phecda-core';
|
|
5
5
|
|
|
6
6
|
declare class Histroy {
|
|
@@ -73,7 +73,7 @@ declare class Context<Data = any> {
|
|
|
73
73
|
params: string[];
|
|
74
74
|
history: Histroy;
|
|
75
75
|
static filter: P.Filter;
|
|
76
|
-
static
|
|
76
|
+
static pipeRecord: Record<string, P.Pipe>;
|
|
77
77
|
static guardsRecord: Record<string, P.Guard>;
|
|
78
78
|
static interceptorsRecord: Record<string, P.Interceptor>;
|
|
79
79
|
static middlewareRecord: Record<string, (...params: any) => any>;
|
|
@@ -81,7 +81,8 @@ declare class Context<Data = any> {
|
|
|
81
81
|
constructor(tag: string, data: Data);
|
|
82
82
|
usePipe(args: {
|
|
83
83
|
arg: any;
|
|
84
|
-
|
|
84
|
+
pipe?: string;
|
|
85
|
+
pipeOpts?: any;
|
|
85
86
|
type: string;
|
|
86
87
|
key: string;
|
|
87
88
|
index: number;
|
|
@@ -94,17 +95,18 @@ declare class Context<Data = any> {
|
|
|
94
95
|
static useMiddleware(middlewares: string[]): any[];
|
|
95
96
|
}
|
|
96
97
|
declare function addMiddleware(key: string, handler: (...params: any) => any): void;
|
|
97
|
-
declare function
|
|
98
|
+
declare function addPipe(key: string, pipe: P.Pipe): void;
|
|
98
99
|
declare function setFilter(filter: P.Filter): void;
|
|
99
100
|
declare function addGuard(key: string, handler: P.Guard): void;
|
|
100
101
|
declare function addInterceptor(key: string, handler: P.Interceptor): void;
|
|
101
102
|
|
|
102
|
-
declare function BaseParam(type: string, key: string
|
|
103
|
-
declare function
|
|
104
|
-
declare function
|
|
105
|
-
declare function
|
|
106
|
-
declare function
|
|
107
|
-
declare function
|
|
103
|
+
declare function BaseParam(type: string, key: string): any;
|
|
104
|
+
declare function Pipe(key?: string, opts?: any): (target: any, k: PropertyKey, index: number) => void;
|
|
105
|
+
declare function Body(key?: string): any;
|
|
106
|
+
declare function Head(key: string): any;
|
|
107
|
+
declare function Query(key?: string): any;
|
|
108
|
+
declare function Param(key: string): any;
|
|
109
|
+
declare function Arg(): any;
|
|
108
110
|
|
|
109
111
|
declare function Route(route: string, type?: string): any;
|
|
110
112
|
declare function Get(route: string): any;
|
|
@@ -154,7 +156,7 @@ declare abstract class PInterceptor {
|
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
declare abstract class PPipe {
|
|
157
|
-
constructor();
|
|
159
|
+
constructor(key: string);
|
|
158
160
|
abstract use<C>(args: {
|
|
159
161
|
arg: any;
|
|
160
162
|
option?: any;
|
|
@@ -162,11 +164,11 @@ declare abstract class PPipe {
|
|
|
162
164
|
type: string;
|
|
163
165
|
index: number;
|
|
164
166
|
reflect: any;
|
|
165
|
-
}
|
|
167
|
+
}, tag: string, ctx: C): Promise<any>;
|
|
166
168
|
}
|
|
167
169
|
|
|
168
170
|
declare function generateRPCCode(meta: P.Meta[]): string;
|
|
169
171
|
|
|
170
172
|
declare function generateHTTPCode(meta: P.Meta[]): string;
|
|
171
173
|
|
|
172
|
-
export { APP_SYMBOL, Arg, BadGatewayException, BadRequestException, BaseParam, Body, ConflictException, Context, Controller, Define, Delete, Dev, Event, Exception, ForbiddenException, FrameworkException, Get, Guard, Head, Header, Interceptor, InvalidInputException, MERGE_SYMBOL, META_SYMBOL, MODULE_SYMBOL, Middle, NotFoundException, P, PFilter, PGuard, PInterceptor, PPipe, Param, Patch, PayloadLargeException, Post, Put, Query, Route, Rpc, ServiceUnavailableException, TimeoutException, UNMOUNT_SYMBOL, UnauthorizedException, UndefinedException, UnsupportedMediaTypeException, ValidateException, addGuard, addInterceptor, addMiddleware, defaultPipe, generateHTTPCode, generateRPCCode, guardsRecord, resolveDep, setFilter
|
|
174
|
+
export { APP_SYMBOL, Arg, BadGatewayException, BadRequestException, BaseParam, Body, ConflictException, Context, Controller, Define, Delete, Dev, Event, Exception, ForbiddenException, FrameworkException, Get, Guard, Head, Header, Interceptor, InvalidInputException, MERGE_SYMBOL, META_SYMBOL, MODULE_SYMBOL, Middle, NotFoundException, P, PFilter, PGuard, PInterceptor, PPipe, Param, Patch, PayloadLargeException, Pipe, Post, Put, Query, Route, Rpc, ServiceUnavailableException, TimeoutException, UNMOUNT_SYMBOL, UnauthorizedException, UndefinedException, UnsupportedMediaTypeException, ValidateException, addGuard, addInterceptor, addMiddleware, addPipe, defaultPipe, generateHTTPCode, generateRPCCode, guardsRecord, resolveDep, setFilter };
|
package/dist/index.js
CHANGED
|
@@ -69,6 +69,7 @@ __export(src_exports, {
|
|
|
69
69
|
Param: () => Param,
|
|
70
70
|
Patch: () => Patch,
|
|
71
71
|
PayloadLargeException: () => PayloadLargeException,
|
|
72
|
+
Pipe: () => Pipe,
|
|
72
73
|
Post: () => Post,
|
|
73
74
|
Put: () => Put,
|
|
74
75
|
Query: () => Query,
|
|
@@ -84,14 +85,14 @@ __export(src_exports, {
|
|
|
84
85
|
addGuard: () => addGuard,
|
|
85
86
|
addInterceptor: () => addInterceptor,
|
|
86
87
|
addMiddleware: () => addMiddleware,
|
|
88
|
+
addPipe: () => addPipe,
|
|
87
89
|
defaultPipe: () => defaultPipe,
|
|
88
90
|
emitter: () => emitter,
|
|
89
91
|
generateHTTPCode: () => generateHTTPCode,
|
|
90
92
|
generateRPCCode: () => generateRPCCode,
|
|
91
93
|
guardsRecord: () => guardsRecord,
|
|
92
94
|
resolveDep: () => resolveDep,
|
|
93
|
-
setFilter: () => setFilter
|
|
94
|
-
setPipe: () => setPipe
|
|
95
|
+
setFilter: () => setFilter
|
|
95
96
|
});
|
|
96
97
|
module.exports = __toCommonJS(src_exports);
|
|
97
98
|
|
|
@@ -129,34 +130,24 @@ var ValidateException = class extends Exception {
|
|
|
129
130
|
__name(ValidateException, "ValidateException");
|
|
130
131
|
|
|
131
132
|
// src/pipe.ts
|
|
132
|
-
var defaultPipe = /* @__PURE__ */ __name(async (
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (
|
|
146
|
-
throw new ValidateException(
|
|
147
|
-
args[i].arg = instance;
|
|
148
|
-
} else {
|
|
149
|
-
if ([
|
|
150
|
-
Number,
|
|
151
|
-
Boolean
|
|
152
|
-
].includes(reflect)) {
|
|
153
|
-
args[i].arg = reflect(arg);
|
|
154
|
-
if (reflect === Number && Object.is(args[i].arg, NaN))
|
|
155
|
-
throw new ValidateException(`parameter ${Number(i) + 1} should be a number`);
|
|
156
|
-
}
|
|
133
|
+
var defaultPipe = /* @__PURE__ */ __name(async ({ arg, reflect, index }) => {
|
|
134
|
+
if ((0, import_phecda_core.isPhecda)(reflect)) {
|
|
135
|
+
const instance = (0, import_phecda_core.plainToClass)(reflect, arg);
|
|
136
|
+
const err = await (0, import_phecda_core.transformClass)(instance);
|
|
137
|
+
if (err.length > 0)
|
|
138
|
+
throw new ValidateException(err[0]);
|
|
139
|
+
arg = instance;
|
|
140
|
+
} else {
|
|
141
|
+
if ([
|
|
142
|
+
Number,
|
|
143
|
+
Boolean
|
|
144
|
+
].includes(reflect)) {
|
|
145
|
+
arg = reflect(arg);
|
|
146
|
+
if (reflect === Number && Object.is(arg, NaN))
|
|
147
|
+
throw new ValidateException(`parameter ${Number(index) + 1} should be a number`);
|
|
157
148
|
}
|
|
158
149
|
}
|
|
159
|
-
return
|
|
150
|
+
return arg;
|
|
160
151
|
}, "defaultPipe");
|
|
161
152
|
|
|
162
153
|
// src/exception/undefine.ts
|
|
@@ -305,7 +296,9 @@ var _Context = class {
|
|
|
305
296
|
data._context = this;
|
|
306
297
|
}
|
|
307
298
|
usePipe(args) {
|
|
308
|
-
return
|
|
299
|
+
return Promise.all(args.map((item) => {
|
|
300
|
+
return _Context.pipeRecord[item.pipe || "default"](item, this.tag, this.data);
|
|
301
|
+
}));
|
|
309
302
|
}
|
|
310
303
|
useFilter(arg) {
|
|
311
304
|
return _Context.filter(arg, this.tag, this.data);
|
|
@@ -364,7 +357,9 @@ var _Context = class {
|
|
|
364
357
|
var Context = _Context;
|
|
365
358
|
__name(Context, "Context");
|
|
366
359
|
__publicField(Context, "filter", defaultFilter);
|
|
367
|
-
__publicField(Context, "
|
|
360
|
+
__publicField(Context, "pipeRecord", {
|
|
361
|
+
default: defaultPipe
|
|
362
|
+
});
|
|
368
363
|
__publicField(Context, "guardsRecord", {});
|
|
369
364
|
__publicField(Context, "interceptorsRecord", {});
|
|
370
365
|
__publicField(Context, "middlewareRecord", {});
|
|
@@ -372,10 +367,10 @@ function addMiddleware(key, handler) {
|
|
|
372
367
|
Context.middlewareRecord[key] = handler;
|
|
373
368
|
}
|
|
374
369
|
__name(addMiddleware, "addMiddleware");
|
|
375
|
-
function
|
|
376
|
-
Context.
|
|
370
|
+
function addPipe(key, pipe) {
|
|
371
|
+
Context.pipeRecord[key] = pipe;
|
|
377
372
|
}
|
|
378
|
-
__name(
|
|
373
|
+
__name(addPipe, "addPipe");
|
|
379
374
|
function setFilter(filter) {
|
|
380
375
|
Context.filter = filter;
|
|
381
376
|
}
|
|
@@ -706,40 +701,66 @@ var import_phecda_core6 = require("phecda-core");
|
|
|
706
701
|
|
|
707
702
|
// src/decorators/param.ts
|
|
708
703
|
var import_phecda_core3 = require("phecda-core");
|
|
709
|
-
function BaseParam(type, key
|
|
704
|
+
function BaseParam(type, key) {
|
|
710
705
|
return (target, k, index) => {
|
|
711
706
|
(0, import_phecda_core3.setModelVar)(target, k);
|
|
712
707
|
const state = target._namespace.__STATE_NAMESPACE__.get(k) || {};
|
|
713
708
|
if (!state.params)
|
|
714
709
|
state.params = [];
|
|
715
|
-
state.params.
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
710
|
+
const existItem = state.params.find((item) => item.index === index);
|
|
711
|
+
if (existItem)
|
|
712
|
+
Object.assign(existItem, {
|
|
713
|
+
type,
|
|
714
|
+
key
|
|
715
|
+
});
|
|
716
|
+
else
|
|
717
|
+
state.params.push({
|
|
718
|
+
type,
|
|
719
|
+
key,
|
|
720
|
+
index
|
|
721
|
+
});
|
|
721
722
|
(0, import_phecda_core3.setState)(target, k, state);
|
|
722
723
|
};
|
|
723
724
|
}
|
|
724
725
|
__name(BaseParam, "BaseParam");
|
|
725
|
-
function
|
|
726
|
-
return
|
|
726
|
+
function Pipe(key, opts) {
|
|
727
|
+
return (target, k, index) => {
|
|
728
|
+
(0, import_phecda_core3.setModelVar)(target, k);
|
|
729
|
+
const state = target._namespace.__STATE_NAMESPACE__.get(k) || {};
|
|
730
|
+
const existItem = state.params.find((item) => item.index === index);
|
|
731
|
+
if (existItem)
|
|
732
|
+
Object.assign(existItem, {
|
|
733
|
+
pipe: key,
|
|
734
|
+
pipeOpts: opts
|
|
735
|
+
});
|
|
736
|
+
else
|
|
737
|
+
state.params.push({
|
|
738
|
+
pipe: key,
|
|
739
|
+
pipeOpts: opts,
|
|
740
|
+
index
|
|
741
|
+
});
|
|
742
|
+
(0, import_phecda_core3.setState)(target, k, state);
|
|
743
|
+
};
|
|
744
|
+
}
|
|
745
|
+
__name(Pipe, "Pipe");
|
|
746
|
+
function Body(key = "") {
|
|
747
|
+
return BaseParam("body", key);
|
|
727
748
|
}
|
|
728
749
|
__name(Body, "Body");
|
|
729
|
-
function Head(key
|
|
730
|
-
return BaseParam("headers", key.toLowerCase()
|
|
750
|
+
function Head(key) {
|
|
751
|
+
return BaseParam("headers", key.toLowerCase());
|
|
731
752
|
}
|
|
732
753
|
__name(Head, "Head");
|
|
733
|
-
function Query(key = ""
|
|
734
|
-
return BaseParam("query", key
|
|
754
|
+
function Query(key = "") {
|
|
755
|
+
return BaseParam("query", key);
|
|
735
756
|
}
|
|
736
757
|
__name(Query, "Query");
|
|
737
|
-
function Param(key
|
|
738
|
-
return BaseParam("params", key
|
|
758
|
+
function Param(key) {
|
|
759
|
+
return BaseParam("params", key);
|
|
739
760
|
}
|
|
740
761
|
__name(Param, "Param");
|
|
741
|
-
function Arg(
|
|
742
|
-
return BaseParam("params", ""
|
|
762
|
+
function Arg() {
|
|
763
|
+
return BaseParam("params", "");
|
|
743
764
|
}
|
|
744
765
|
__name(Arg, "Arg");
|
|
745
766
|
|
|
@@ -932,8 +953,8 @@ __name(PInterceptor, "PInterceptor");
|
|
|
932
953
|
|
|
933
954
|
// src/modules/pipe.ts
|
|
934
955
|
var PPipe = class {
|
|
935
|
-
constructor() {
|
|
936
|
-
|
|
956
|
+
constructor(key) {
|
|
957
|
+
addPipe(key, this.use.bind(this));
|
|
937
958
|
}
|
|
938
959
|
};
|
|
939
960
|
__name(PPipe, "PPipe");
|
|
@@ -975,6 +996,7 @@ __name(PPipe, "PPipe");
|
|
|
975
996
|
Param,
|
|
976
997
|
Patch,
|
|
977
998
|
PayloadLargeException,
|
|
999
|
+
Pipe,
|
|
978
1000
|
Post,
|
|
979
1001
|
Put,
|
|
980
1002
|
Query,
|
|
@@ -990,13 +1012,13 @@ __name(PPipe, "PPipe");
|
|
|
990
1012
|
addGuard,
|
|
991
1013
|
addInterceptor,
|
|
992
1014
|
addMiddleware,
|
|
1015
|
+
addPipe,
|
|
993
1016
|
defaultPipe,
|
|
994
1017
|
emitter,
|
|
995
1018
|
generateHTTPCode,
|
|
996
1019
|
generateRPCCode,
|
|
997
1020
|
guardsRecord,
|
|
998
1021
|
resolveDep,
|
|
999
|
-
setFilter
|
|
1000
|
-
setPipe
|
|
1022
|
+
setFilter
|
|
1001
1023
|
});
|
|
1002
1024
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../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/helper.ts","../src/modules/dev.ts","../src/modules/filter.ts","../src/modules/guard.ts","../src/modules/interceptor.ts","../src/modules/pipe.ts"],"sourcesContent":["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","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 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":["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","import_phecda_core","Meta","data","handlers","paramsType","constructor","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","import_phecda_core","import_phecda_core","BaseParam","type","key","option","target","k","index","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","params","push","setState","Body","pipeOpts","Head","toLowerCase","Query","Param","Arg","import_phecda_core","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","import_phecda_core","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/index.ts","../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/helper.ts","../src/modules/dev.ts","../src/modules/filter.ts","../src/modules/guard.ts","../src/modules/interceptor.ts","../src/modules/pipe.ts"],"sourcesContent":["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","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 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":["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","import_phecda_core","Meta","data","handlers","paramsType","constructor","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","import_phecda_core","import_phecda_core","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","import_phecda_core","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","import_phecda_core","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"]}
|