phecda-server 4.0.5 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-YU7ROHTO.js → chunk-7OB6K45T.js} +78 -66
- package/dist/chunk-7OB6K45T.js.map +1 -0
- package/dist/{chunk-LZAU5FUS.js → chunk-AAF47ZC6.js} +9 -3
- package/dist/chunk-AAF47ZC6.js.map +1 -0
- package/dist/{chunk-AJ2HYENF.mjs → chunk-AYJWOIAW.mjs} +10 -4
- package/dist/chunk-AYJWOIAW.mjs.map +1 -0
- package/dist/{chunk-Q6T7HNEO.mjs → chunk-GSJ5A2MA.mjs} +43 -31
- package/dist/chunk-GSJ5A2MA.mjs.map +1 -0
- package/dist/{chunk-NFAA3WFR.mjs → chunk-K32VRTXB.mjs} +18 -11
- package/dist/chunk-K32VRTXB.mjs.map +1 -0
- package/dist/{chunk-R3N4HR7U.js → chunk-TZ27DHWL.js} +39 -32
- package/dist/chunk-TZ27DHWL.js.map +1 -0
- package/dist/{chunk-JQPX546Z.mjs → chunk-V7SC5EVJ.mjs} +2 -2
- package/dist/{chunk-FAHHXHL5.js → chunk-ZPMAM4LQ.js} +3 -3
- package/dist/{core-ba036c2b.d.ts → core-c27b4cf4.d.ts} +1 -1
- package/dist/index.d.ts +45 -26
- package/dist/index.js +119 -54
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +98 -33
- package/dist/index.mjs.map +1 -1
- package/dist/rpc/rabbitmq/index.d.ts +2 -2
- package/dist/rpc/rabbitmq/index.js +19 -13
- package/dist/rpc/rabbitmq/index.js.map +1 -1
- package/dist/rpc/rabbitmq/index.mjs +13 -7
- package/dist/rpc/rabbitmq/index.mjs.map +1 -1
- package/dist/rpc/redis/index.d.ts +2 -2
- package/dist/rpc/redis/index.js +19 -13
- package/dist/rpc/redis/index.js.map +1 -1
- package/dist/rpc/redis/index.mjs +13 -7
- package/dist/rpc/redis/index.mjs.map +1 -1
- package/dist/server/express/index.d.ts +4 -3
- package/dist/server/express/index.js +37 -29
- package/dist/server/express/index.js.map +1 -1
- package/dist/server/express/index.mjs +19 -11
- package/dist/server/express/index.mjs.map +1 -1
- package/dist/server/fastify/index.d.ts +3 -2
- package/dist/server/fastify/index.js +33 -25
- package/dist/server/fastify/index.js.map +1 -1
- package/dist/server/fastify/index.mjs +18 -10
- package/dist/server/fastify/index.mjs.map +1 -1
- package/dist/server/h3/index.d.ts +6 -5
- package/dist/server/h3/index.js +34 -28
- package/dist/server/h3/index.js.map +1 -1
- package/dist/server/h3/index.mjs +16 -10
- package/dist/server/h3/index.mjs.map +1 -1
- package/dist/server/koa/index.d.ts +3 -2
- package/dist/server/koa/index.js +36 -28
- package/dist/server/koa/index.js.map +1 -1
- package/dist/server/koa/index.mjs +18 -10
- package/dist/server/koa/index.mjs.map +1 -1
- package/dist/test.d.ts +1 -1
- package/dist/test.js +6 -6
- package/dist/test.mjs +2 -2
- package/dist/{types-ead02c5d.d.ts → types-8415bd5d.d.ts} +16 -17
- package/package.json +1 -1
- package/dist/chunk-AJ2HYENF.mjs.map +0 -1
- package/dist/chunk-LZAU5FUS.js.map +0 -1
- package/dist/chunk-NFAA3WFR.mjs.map +0 -1
- package/dist/chunk-Q6T7HNEO.mjs.map +0 -1
- package/dist/chunk-R3N4HR7U.js.map +0 -1
- package/dist/chunk-YU7ROHTO.js.map +0 -1
- /package/dist/{chunk-JQPX546Z.mjs.map → chunk-V7SC5EVJ.mjs.map} +0 -0
- /package/dist/{chunk-FAHHXHL5.js.map → chunk-ZPMAM4LQ.js.map} +0 -0
package/dist/server/h3/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkZPMAM4LQjs = require('../../chunk-ZPMAM4LQ.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunk7OB6K45Tjs = require('../../chunk-7OB6K45T.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ var _chunkYU7ROHTOjs = require('../../chunk-YU7ROHTO.js');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkAAF47ZC6js = require('../../chunk-AAF47ZC6.js');
|
|
17
17
|
|
|
18
18
|
// src/server/h3/bind.ts
|
|
19
19
|
var _h3 = require('h3');
|
|
@@ -25,12 +25,12 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
25
25
|
plugins: [],
|
|
26
26
|
...options
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
_chunk7OB6K45Tjs.isAopDepInject.call(void 0, meta, {
|
|
29
29
|
plugins,
|
|
30
30
|
guards: globalGuards,
|
|
31
31
|
interceptors: globalInterceptors
|
|
32
32
|
});
|
|
33
|
-
router[
|
|
33
|
+
router[_chunkAAF47ZC6js.APP_SYMBOL] = {
|
|
34
34
|
moduleMap,
|
|
35
35
|
meta
|
|
36
36
|
};
|
|
@@ -45,16 +45,16 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
45
45
|
metaMap.set(methodTag, item);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
_chunkAAF47ZC6js.__name.call(void 0, handleMeta, "handleMeta");
|
|
49
49
|
async function createRoute() {
|
|
50
50
|
router.post(route, _h3.fromNodeMiddleware.call(void 0, (req, _res, next) => {
|
|
51
|
-
req[
|
|
52
|
-
req[
|
|
53
|
-
req[
|
|
51
|
+
req[_chunkAAF47ZC6js.MERGE_SYMBOL] = true;
|
|
52
|
+
req[_chunkAAF47ZC6js.MODULE_SYMBOL] = moduleMap;
|
|
53
|
+
req[_chunkAAF47ZC6js.META_SYMBOL] = meta;
|
|
54
54
|
next();
|
|
55
55
|
}));
|
|
56
56
|
plugins.forEach((p) => {
|
|
57
|
-
const middleware =
|
|
57
|
+
const middleware = _chunk7OB6K45Tjs.Context.usePlugin([
|
|
58
58
|
p
|
|
59
59
|
])[0];
|
|
60
60
|
if (!middleware)
|
|
@@ -66,20 +66,20 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
66
66
|
strict: true
|
|
67
67
|
});
|
|
68
68
|
async function errorHandler(e) {
|
|
69
|
-
const error = await
|
|
69
|
+
const error = await _chunk7OB6K45Tjs.Context.filterRecord.default(e);
|
|
70
70
|
_h3.setResponseStatus.call(void 0, event, error.status);
|
|
71
71
|
return error;
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
_chunkAAF47ZC6js.__name.call(void 0, errorHandler, "errorHandler");
|
|
74
74
|
if (!Array.isArray(body))
|
|
75
|
-
return errorHandler(new (0,
|
|
75
|
+
return errorHandler(new (0, _chunk7OB6K45Tjs.BadRequestException)("data format should be an array"));
|
|
76
76
|
try {
|
|
77
77
|
return Promise.all(body.map((item) => {
|
|
78
78
|
return new Promise(async (resolve) => {
|
|
79
79
|
const { tag } = item;
|
|
80
80
|
const meta2 = metaMap.get(tag);
|
|
81
81
|
if (!meta2)
|
|
82
|
-
return resolve(await
|
|
82
|
+
return resolve(await _chunk7OB6K45Tjs.Context.filterRecord.default(new (0, _chunk7OB6K45Tjs.BadRequestException)(`"${tag}" doesn't exist`)));
|
|
83
83
|
const contextData = {
|
|
84
84
|
type: "h3",
|
|
85
85
|
event,
|
|
@@ -87,9 +87,9 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
87
87
|
moduleMap,
|
|
88
88
|
parallel: true
|
|
89
89
|
};
|
|
90
|
-
const context = new (0,
|
|
90
|
+
const context = new (0, _chunk7OB6K45Tjs.Context)(tag, contextData);
|
|
91
91
|
const [name, method] = tag.split("-");
|
|
92
|
-
const { paramsType, handlers, data: { params, guards, interceptors } } = metaMap.get(tag);
|
|
92
|
+
const { paramsType, handlers, data: { params, guards, interceptors, filter } } = metaMap.get(tag);
|
|
93
93
|
const instance = moduleMap.get(name);
|
|
94
94
|
try {
|
|
95
95
|
await context.useGuard([
|
|
@@ -118,7 +118,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
118
118
|
resolve(await context.usePostInterceptor(funcData));
|
|
119
119
|
} catch (e) {
|
|
120
120
|
handlers.forEach((handler) => _optionalChain([handler, 'access', _2 => _2.error, 'optionalCall', _3 => _3(e)]));
|
|
121
|
-
resolve(await context.useFilter(e));
|
|
121
|
+
resolve(await context.useFilter(e, filter));
|
|
122
122
|
}
|
|
123
123
|
});
|
|
124
124
|
}));
|
|
@@ -131,14 +131,14 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
131
131
|
if (!_optionalChain([http, 'optionalAccess', _4 => _4.type]))
|
|
132
132
|
continue;
|
|
133
133
|
const methodTag = `${tag}-${method}`;
|
|
134
|
-
const { paramsType, handlers, data: { interceptors, guards, params, plugins: plugins2 } } = metaMap.get(methodTag);
|
|
134
|
+
const { paramsType, handlers, data: { interceptors, guards, params, plugins: plugins2, filter } } = metaMap.get(methodTag);
|
|
135
135
|
router[http.type](http.route, _h3.fromNodeMiddleware.call(void 0, (req, _res, next) => {
|
|
136
|
-
req[
|
|
137
|
-
req[
|
|
136
|
+
req[_chunkAAF47ZC6js.MODULE_SYMBOL] = moduleMap;
|
|
137
|
+
req[_chunkAAF47ZC6js.META_SYMBOL] = meta;
|
|
138
138
|
next();
|
|
139
139
|
}));
|
|
140
140
|
for (const p of plugins2) {
|
|
141
|
-
const middleware =
|
|
141
|
+
const middleware = _chunk7OB6K45Tjs.Context.usePlugin([
|
|
142
142
|
p
|
|
143
143
|
])[0];
|
|
144
144
|
if (!middleware)
|
|
@@ -151,9 +151,10 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
151
151
|
type: "h3",
|
|
152
152
|
meta: i,
|
|
153
153
|
event,
|
|
154
|
-
moduleMap
|
|
154
|
+
moduleMap,
|
|
155
|
+
parallel: false
|
|
155
156
|
};
|
|
156
|
-
const context = new (0,
|
|
157
|
+
const context = new (0, _chunk7OB6K45Tjs.Context)(methodTag, contextData);
|
|
157
158
|
try {
|
|
158
159
|
_h3.setHeaders.call(void 0, event, header);
|
|
159
160
|
await context.useGuard([
|
|
@@ -185,7 +186,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
185
186
|
arg = body;
|
|
186
187
|
}
|
|
187
188
|
return {
|
|
188
|
-
arg:
|
|
189
|
+
arg: _chunkZPMAM4LQjs.resolveDep.call(void 0, arg, key),
|
|
189
190
|
pipe,
|
|
190
191
|
pipeOpts,
|
|
191
192
|
key,
|
|
@@ -200,23 +201,28 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
200
201
|
return ret;
|
|
201
202
|
} catch (e) {
|
|
202
203
|
handlers.forEach((handler) => _optionalChain([handler, 'access', _5 => _5.error, 'optionalCall', _6 => _6(e)]));
|
|
203
|
-
const err = await context.useFilter(e);
|
|
204
|
+
const err = await context.useFilter(e, filter);
|
|
204
205
|
_h3.setResponseStatus.call(void 0, event, err.status);
|
|
205
206
|
return err;
|
|
206
207
|
}
|
|
207
208
|
}));
|
|
208
209
|
}
|
|
209
210
|
}
|
|
210
|
-
|
|
211
|
+
_chunkAAF47ZC6js.__name.call(void 0, createRoute, "createRoute");
|
|
211
212
|
handleMeta();
|
|
212
213
|
createRoute();
|
|
213
|
-
if (
|
|
214
|
+
if (_chunkAAF47ZC6js.IS_DEV) {
|
|
214
215
|
_optionalChain([globalThis, 'access', _7 => _7.__PS_HMR__, 'optionalAccess', _8 => _8.push, 'call', _9 => _9(async () => {
|
|
216
|
+
_chunk7OB6K45Tjs.isAopDepInject.call(void 0, meta, {
|
|
217
|
+
plugins,
|
|
218
|
+
guards: globalGuards,
|
|
219
|
+
interceptors: globalInterceptors
|
|
220
|
+
});
|
|
215
221
|
handleMeta();
|
|
216
222
|
})]);
|
|
217
223
|
}
|
|
218
224
|
}
|
|
219
|
-
|
|
225
|
+
_chunkAAF47ZC6js.__name.call(void 0, bindApp, "bindApp");
|
|
220
226
|
|
|
221
227
|
|
|
222
228
|
exports.bindApp = bindApp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/h3/bind.ts"],"names":["eventHandler","fromNodeMiddleware","getQuery","getRequestHeaders","getRouterParams","readBody","setHeaders","setResponseStatus","bindApp","router","moduleMap","meta","options","globalGuards","globalInterceptors","route","plugins","isAopDepInject","guards","interceptors","APP_SYMBOL","metaMap","Map","handleMeta","clear","item","tag","method","http","data","type","methodTag","set","createRoute","post","req","_res","next","MERGE_SYMBOL","MODULE_SYMBOL","META_SYMBOL","forEach","p","middleware","Context","usePlugin","event","body","strict","errorHandler","e","error","filter","status","Array","isArray","BadRequestException","Promise","all","map","resolve","get","contextData","parallel","context","name","split","paramsType","handlers","params","instance","useGuard","cache","useInterceptor","undefined","args","usePipe","key","pipe","pipeOpts","index","arg","reflect","funcData","usePostInterceptor","handler","useFilter","i","header","some","resolveDep","ret","err","IS_DEV","globalThis","__PS_HMR__","push"],"mappings":"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","sourcesContent":["import { eventHandler, fromNodeMiddleware, getQuery, getRequestHeaders, getRouterParams, readBody, setHeaders, setResponseStatus } from 'h3'\nimport type { NodeMiddleware, Router } from 'h3'\n\nimport { resolveDep } from '../../helper'\nimport { APP_SYMBOL, IS_DEV, MERGE_SYMBOL, META_SYMBOL, MODULE_SYMBOL } from '../../common'\nimport type { Factory } from '../../core'\nimport { BadRequestException } from '../../exception'\nimport type { Meta } from '../../meta'\nimport { Context, isAopDepInject } from '../../context'\n\nexport interface H3Ctx {\n type: 'h3'\n request: Request\n response: Response\n meta: Meta\n moduleMap: Record<string, any>\n}\nexport interface Options {\n\n /**\n * 专用路由的值,默认为/__PHECDA_SERVER__,处理phecda-client发出的合并请求\n */\n route?: string\n /**\n * 全局守卫\n */\n globalGuards?: string[]\n /**\n * 全局拦截器\n */\n globalInterceptors?: string[]\n /**\n * 专用路由的中间件(work for merge request),全局中间件请在bindApp以外设置\n */\n plugins?: string[]\n\n}\n\nexport function bindApp(router: Router, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, options: Options = {}) {\n const { globalGuards, globalInterceptors, route, plugins } = { route: '/__PHECDA_SERVER__', globalGuards: [], globalInterceptors: [], plugins: [], ...options } as Required<Options>\n\n isAopDepInject(meta, {\n plugins,\n guards: globalGuards,\n interceptors: globalInterceptors,\n });\n\n (router as any)[APP_SYMBOL] = { moduleMap, meta }\n\n const metaMap = new Map<string, Meta>()\n function handleMeta() {\n metaMap.clear()\n for (const item of meta) {\n const { tag, method, http } = item.data\n if (!http?.type)\n continue\n const methodTag = `${tag}-${method}`\n metaMap.set(methodTag, item)\n }\n }\n\n async function createRoute() {\n router.post(route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MERGE_SYMBOL] = true;\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n\n next()\n }))\n plugins.forEach((p) => {\n const middleware = Context.usePlugin([p])[0] as NodeMiddleware\n if (!middleware)\n return\n router.post(route, fromNodeMiddleware(middleware))\n })\n\n router.post(route, eventHandler(async (event) => {\n const body = await readBody(event, { strict: true })\n async function errorHandler(e: any) {\n const error = await Context.filter(e)\n setResponseStatus(event, error.status)\n return error\n }\n\n if (!Array.isArray(body))\n return errorHandler(new BadRequestException('data format should be an array'))\n\n try {\n return Promise.all(body.map((item: any) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n const { tag } = item\n const meta = metaMap.get(tag)!\n if (!meta)\n return resolve(await Context.filter(new BadRequestException(`\"${tag}\" doesn't exist`)))\n\n const contextData = {\n type: 'h3' as const,\n event,\n meta,\n moduleMap,\n parallel: true,\n\n }\n const context = new Context(tag, contextData)\n const [name, method] = tag.split('-')\n const {\n paramsType,\n handlers,\n data: {\n params,\n guards, interceptors,\n },\n } = metaMap.get(tag)!\n\n const instance = moduleMap.get(name)\n\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return resolve(cache)\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n return { arg: item.args[index], type, key, pipe, pipeOpts, index, reflect: paramsType[index] }\n })) as any\n instance.context = contextData\n const funcData = await moduleMap.get(name)[method](...args)\n resolve(await context.usePostInterceptor(funcData))\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n resolve(await context.useFilter(e))\n }\n })\n }))\n }\n\n catch (e) {\n return errorHandler(e)\n }\n }))\n for (const i of meta) {\n const { method, http, header, tag } = i.data\n\n if (!http?.type)\n continue\n\n const methodTag = `${tag}-${method}`\n\n const {\n paramsType,\n handlers,\n data: {\n interceptors,\n guards,\n params,\n plugins,\n },\n } = metaMap.get(methodTag)!\n\n router[http.type](http.route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n next()\n }))\n\n for (const p of plugins) {\n const middleware = Context.usePlugin([p])[0]\n if (!middleware)\n continue\n\n router[http.type](http.route, fromNodeMiddleware(middleware))\n }\n\n router[http.type](http.route, eventHandler(async (event) => {\n const instance = moduleMap.get(tag)!\n\n const contextData = {\n type: 'h3' as const,\n meta: i,\n event,\n moduleMap,\n }\n const context = new Context(methodTag, contextData)\n\n try {\n setHeaders(event, header)\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return cache\n\n const body = params.some(item => item.type === 'body') ? await readBody(event, { strict: true }) : undefined\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n let arg: any\n\n switch (type) {\n case 'params':\n arg = getRouterParams(event)\n break\n case 'query':\n arg = getQuery(event)\n break\n case 'header':\n arg = getRequestHeaders(event)\n break\n default:\n arg = body\n }\n\n return { arg: resolveDep(arg, key), pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n instance.context = contextData\n const funcData = await instance[method](...args)\n const ret = await context.usePostInterceptor(funcData)\n\n return ret\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n const err = await context.useFilter(e)\n setResponseStatus(event, err.status)\n return err\n }\n }))\n }\n }\n\n handleMeta()\n createRoute()\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/server/h3/bind.ts"],"names":["eventHandler","fromNodeMiddleware","getQuery","getRequestHeaders","getRouterParams","readBody","setHeaders","setResponseStatus","bindApp","router","moduleMap","meta","options","globalGuards","globalInterceptors","route","plugins","isAopDepInject","guards","interceptors","APP_SYMBOL","metaMap","Map","handleMeta","clear","item","tag","method","http","data","type","methodTag","set","createRoute","post","req","_res","next","MERGE_SYMBOL","MODULE_SYMBOL","META_SYMBOL","forEach","p","middleware","Context","usePlugin","event","body","strict","errorHandler","e","error","filterRecord","default","status","Array","isArray","BadRequestException","Promise","all","map","resolve","get","contextData","parallel","context","name","split","paramsType","handlers","params","filter","instance","useGuard","cache","useInterceptor","undefined","args","usePipe","key","pipe","pipeOpts","index","arg","reflect","funcData","usePostInterceptor","handler","useFilter","i","header","some","resolveDep","ret","err","IS_DEV","globalThis","__PS_HMR__","push"],"mappings":"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","sourcesContent":["import { eventHandler, fromNodeMiddleware, getQuery, getRequestHeaders, getRouterParams, readBody, setHeaders, setResponseStatus } from 'h3'\nimport type { H3Event, NodeMiddleware, Router } from 'h3'\n\nimport { resolveDep } from '../../helper'\nimport { APP_SYMBOL, IS_DEV, MERGE_SYMBOL, META_SYMBOL, MODULE_SYMBOL } from '../../common'\nimport type { Factory } from '../../core'\nimport { BadRequestException } from '../../exception'\nimport type { Meta } from '../../meta'\nimport { Context, isAopDepInject } from '../../context'\n\nexport interface H3Ctx {\n type: 'h3'\n event: H3Event\n meta: Meta\n moduleMap: Record<string, any>\n parallel: boolean\n [key: string]: any\n}\nexport interface Options {\n\n /**\n * 专用路由的值,默认为/__PHECDA_SERVER__,处理phecda-client发出的合并请求\n */\n route?: string\n /**\n * 全局守卫\n */\n globalGuards?: string[]\n /**\n * 全局拦截器\n */\n globalInterceptors?: string[]\n /**\n * 专用路由的中间件(work for merge request),全局中间件请在bindApp以外设置\n */\n plugins?: string[]\n\n}\n\nexport function bindApp(router: Router, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, options: Options = {}) {\n const { globalGuards, globalInterceptors, route, plugins } = { route: '/__PHECDA_SERVER__', globalGuards: [], globalInterceptors: [], plugins: [], ...options } as Required<Options>\n\n isAopDepInject(meta, {\n plugins,\n guards: globalGuards,\n interceptors: globalInterceptors,\n });\n\n (router as any)[APP_SYMBOL] = { moduleMap, meta }\n\n const metaMap = new Map<string, Meta>()\n function handleMeta() {\n metaMap.clear()\n for (const item of meta) {\n const { tag, method, http } = item.data\n if (!http?.type)\n continue\n const methodTag = `${tag}-${method}`\n metaMap.set(methodTag, item)\n }\n }\n\n async function createRoute() {\n router.post(route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MERGE_SYMBOL] = true;\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n\n next()\n }))\n plugins.forEach((p) => {\n const middleware = Context.usePlugin([p])[0] as NodeMiddleware\n if (!middleware)\n return\n router.post(route, fromNodeMiddleware(middleware))\n })\n\n router.post(route, eventHandler(async (event) => {\n const body = await readBody(event, { strict: true })\n async function errorHandler(e: any) {\n const error = await Context.filterRecord.default(e)\n setResponseStatus(event, error.status)\n return error\n }\n\n if (!Array.isArray(body))\n return errorHandler(new BadRequestException('data format should be an array'))\n\n try {\n return Promise.all(body.map((item: any) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n const { tag } = item\n const meta = metaMap.get(tag)!\n if (!meta)\n return resolve(await Context.filterRecord.default(new BadRequestException(`\"${tag}\" doesn't exist`)))\n\n const contextData = {\n type: 'h3' as const,\n event,\n meta,\n moduleMap,\n parallel: true,\n\n }\n const context = new Context<H3Ctx>(tag, contextData)\n const [name, method] = tag.split('-')\n const {\n paramsType,\n handlers,\n data: {\n params,\n guards,\n interceptors, filter,\n },\n } = metaMap.get(tag)!\n\n const instance = moduleMap.get(name)\n\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return resolve(cache)\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n return { arg: item.args[index], type, key, pipe, pipeOpts, index, reflect: paramsType[index] }\n })) as any\n instance.context = contextData\n const funcData = await moduleMap.get(name)[method](...args)\n resolve(await context.usePostInterceptor(funcData))\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n resolve(await context.useFilter(e, filter))\n }\n })\n }))\n }\n\n catch (e) {\n return errorHandler(e)\n }\n }))\n for (const i of meta) {\n const { method, http, header, tag } = i.data\n\n if (!http?.type)\n continue\n\n const methodTag = `${tag}-${method}`\n\n const {\n paramsType,\n handlers,\n data: {\n interceptors,\n guards,\n params,\n plugins,\n filter,\n },\n } = metaMap.get(methodTag)!\n\n router[http.type](http.route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n next()\n }))\n\n for (const p of plugins) {\n const middleware = Context.usePlugin([p])[0]\n if (!middleware)\n continue\n\n router[http.type](http.route, fromNodeMiddleware(middleware))\n }\n\n router[http.type](http.route, eventHandler(async (event) => {\n const instance = moduleMap.get(tag)!\n\n const contextData = {\n type: 'h3' as const,\n meta: i,\n event,\n moduleMap,\n parallel: false,\n }\n const context = new Context<H3Ctx>(methodTag, contextData)\n\n try {\n setHeaders(event, header)\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return cache\n\n const body = params.some(item => item.type === 'body') ? await readBody(event, { strict: true }) : undefined\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n let arg: any\n\n switch (type) {\n case 'params':\n arg = getRouterParams(event)\n break\n case 'query':\n arg = getQuery(event)\n break\n case 'header':\n arg = getRequestHeaders(event)\n break\n default:\n arg = body\n }\n\n return { arg: resolveDep(arg, key), pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n instance.context = contextData\n const funcData = await instance[method](...args)\n const ret = await context.usePostInterceptor(funcData)\n\n return ret\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n const err = await context.useFilter(e, filter)\n setResponseStatus(event, err.status)\n return err\n }\n }))\n }\n }\n\n handleMeta()\n createRoute()\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n isAopDepInject(meta, {\n plugins,\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n handleMeta()\n })\n }\n}\n"]}
|
package/dist/server/h3/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveDep
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-V7SC5EVJ.mjs";
|
|
4
4
|
import {
|
|
5
5
|
BadRequestException,
|
|
6
6
|
Context,
|
|
7
7
|
isAopDepInject
|
|
8
|
-
} from "../../chunk-
|
|
8
|
+
} from "../../chunk-GSJ5A2MA.mjs";
|
|
9
9
|
import {
|
|
10
10
|
APP_SYMBOL,
|
|
11
11
|
IS_DEV,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
META_SYMBOL,
|
|
14
14
|
MODULE_SYMBOL,
|
|
15
15
|
__name
|
|
16
|
-
} from "../../chunk-
|
|
16
|
+
} from "../../chunk-AYJWOIAW.mjs";
|
|
17
17
|
|
|
18
18
|
// src/server/h3/bind.ts
|
|
19
19
|
import { eventHandler, fromNodeMiddleware, getQuery, getRequestHeaders, getRouterParams, readBody, setHeaders, setResponseStatus } from "h3";
|
|
@@ -66,7 +66,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
66
66
|
strict: true
|
|
67
67
|
});
|
|
68
68
|
async function errorHandler(e) {
|
|
69
|
-
const error = await Context.
|
|
69
|
+
const error = await Context.filterRecord.default(e);
|
|
70
70
|
setResponseStatus(event, error.status);
|
|
71
71
|
return error;
|
|
72
72
|
}
|
|
@@ -79,7 +79,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
79
79
|
const { tag } = item;
|
|
80
80
|
const meta2 = metaMap.get(tag);
|
|
81
81
|
if (!meta2)
|
|
82
|
-
return resolve(await Context.
|
|
82
|
+
return resolve(await Context.filterRecord.default(new BadRequestException(`"${tag}" doesn't exist`)));
|
|
83
83
|
const contextData = {
|
|
84
84
|
type: "h3",
|
|
85
85
|
event,
|
|
@@ -89,7 +89,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
89
89
|
};
|
|
90
90
|
const context = new Context(tag, contextData);
|
|
91
91
|
const [name, method] = tag.split("-");
|
|
92
|
-
const { paramsType, handlers, data: { params, guards, interceptors } } = metaMap.get(tag);
|
|
92
|
+
const { paramsType, handlers, data: { params, guards, interceptors, filter } } = metaMap.get(tag);
|
|
93
93
|
const instance = moduleMap.get(name);
|
|
94
94
|
try {
|
|
95
95
|
await context.useGuard([
|
|
@@ -118,7 +118,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
118
118
|
resolve(await context.usePostInterceptor(funcData));
|
|
119
119
|
} catch (e) {
|
|
120
120
|
handlers.forEach((handler) => handler.error?.(e));
|
|
121
|
-
resolve(await context.useFilter(e));
|
|
121
|
+
resolve(await context.useFilter(e, filter));
|
|
122
122
|
}
|
|
123
123
|
});
|
|
124
124
|
}));
|
|
@@ -131,7 +131,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
131
131
|
if (!http?.type)
|
|
132
132
|
continue;
|
|
133
133
|
const methodTag = `${tag}-${method}`;
|
|
134
|
-
const { paramsType, handlers, data: { interceptors, guards, params, plugins: plugins2 } } = metaMap.get(methodTag);
|
|
134
|
+
const { paramsType, handlers, data: { interceptors, guards, params, plugins: plugins2, filter } } = metaMap.get(methodTag);
|
|
135
135
|
router[http.type](http.route, fromNodeMiddleware((req, _res, next) => {
|
|
136
136
|
req[MODULE_SYMBOL] = moduleMap;
|
|
137
137
|
req[META_SYMBOL] = meta;
|
|
@@ -151,7 +151,8 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
151
151
|
type: "h3",
|
|
152
152
|
meta: i,
|
|
153
153
|
event,
|
|
154
|
-
moduleMap
|
|
154
|
+
moduleMap,
|
|
155
|
+
parallel: false
|
|
155
156
|
};
|
|
156
157
|
const context = new Context(methodTag, contextData);
|
|
157
158
|
try {
|
|
@@ -200,7 +201,7 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
200
201
|
return ret;
|
|
201
202
|
} catch (e) {
|
|
202
203
|
handlers.forEach((handler) => handler.error?.(e));
|
|
203
|
-
const err = await context.useFilter(e);
|
|
204
|
+
const err = await context.useFilter(e, filter);
|
|
204
205
|
setResponseStatus(event, err.status);
|
|
205
206
|
return err;
|
|
206
207
|
}
|
|
@@ -212,6 +213,11 @@ function bindApp(router, { moduleMap, meta }, options = {}) {
|
|
|
212
213
|
createRoute();
|
|
213
214
|
if (IS_DEV) {
|
|
214
215
|
globalThis.__PS_HMR__?.push(async () => {
|
|
216
|
+
isAopDepInject(meta, {
|
|
217
|
+
plugins,
|
|
218
|
+
guards: globalGuards,
|
|
219
|
+
interceptors: globalInterceptors
|
|
220
|
+
});
|
|
215
221
|
handleMeta();
|
|
216
222
|
});
|
|
217
223
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/h3/bind.ts"],"sourcesContent":["import { eventHandler, fromNodeMiddleware, getQuery, getRequestHeaders, getRouterParams, readBody, setHeaders, setResponseStatus } from 'h3'\nimport type { NodeMiddleware, Router } from 'h3'\n\nimport { resolveDep } from '../../helper'\nimport { APP_SYMBOL, IS_DEV, MERGE_SYMBOL, META_SYMBOL, MODULE_SYMBOL } from '../../common'\nimport type { Factory } from '../../core'\nimport { BadRequestException } from '../../exception'\nimport type { Meta } from '../../meta'\nimport { Context, isAopDepInject } from '../../context'\n\nexport interface H3Ctx {\n type: 'h3'\n request: Request\n response: Response\n meta: Meta\n moduleMap: Record<string, any>\n}\nexport interface Options {\n\n /**\n * 专用路由的值,默认为/__PHECDA_SERVER__,处理phecda-client发出的合并请求\n */\n route?: string\n /**\n * 全局守卫\n */\n globalGuards?: string[]\n /**\n * 全局拦截器\n */\n globalInterceptors?: string[]\n /**\n * 专用路由的中间件(work for merge request),全局中间件请在bindApp以外设置\n */\n plugins?: string[]\n\n}\n\nexport function bindApp(router: Router, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, options: Options = {}) {\n const { globalGuards, globalInterceptors, route, plugins } = { route: '/__PHECDA_SERVER__', globalGuards: [], globalInterceptors: [], plugins: [], ...options } as Required<Options>\n\n isAopDepInject(meta, {\n plugins,\n guards: globalGuards,\n interceptors: globalInterceptors,\n });\n\n (router as any)[APP_SYMBOL] = { moduleMap, meta }\n\n const metaMap = new Map<string, Meta>()\n function handleMeta() {\n metaMap.clear()\n for (const item of meta) {\n const { tag, method, http } = item.data\n if (!http?.type)\n continue\n const methodTag = `${tag}-${method}`\n metaMap.set(methodTag, item)\n }\n }\n\n async function createRoute() {\n router.post(route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MERGE_SYMBOL] = true;\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n\n next()\n }))\n plugins.forEach((p) => {\n const middleware = Context.usePlugin([p])[0] as NodeMiddleware\n if (!middleware)\n return\n router.post(route, fromNodeMiddleware(middleware))\n })\n\n router.post(route, eventHandler(async (event) => {\n const body = await readBody(event, { strict: true })\n async function errorHandler(e: any) {\n const error = await Context.filter(e)\n setResponseStatus(event, error.status)\n return error\n }\n\n if (!Array.isArray(body))\n return errorHandler(new BadRequestException('data format should be an array'))\n\n try {\n return Promise.all(body.map((item: any) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n const { tag } = item\n const meta = metaMap.get(tag)!\n if (!meta)\n return resolve(await Context.filter(new BadRequestException(`\"${tag}\" doesn't exist`)))\n\n const contextData = {\n type: 'h3' as const,\n event,\n meta,\n moduleMap,\n parallel: true,\n\n }\n const context = new Context(tag, contextData)\n const [name, method] = tag.split('-')\n const {\n paramsType,\n handlers,\n data: {\n params,\n guards, interceptors,\n },\n } = metaMap.get(tag)!\n\n const instance = moduleMap.get(name)\n\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return resolve(cache)\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n return { arg: item.args[index], type, key, pipe, pipeOpts, index, reflect: paramsType[index] }\n })) as any\n instance.context = contextData\n const funcData = await moduleMap.get(name)[method](...args)\n resolve(await context.usePostInterceptor(funcData))\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n resolve(await context.useFilter(e))\n }\n })\n }))\n }\n\n catch (e) {\n return errorHandler(e)\n }\n }))\n for (const i of meta) {\n const { method, http, header, tag } = i.data\n\n if (!http?.type)\n continue\n\n const methodTag = `${tag}-${method}`\n\n const {\n paramsType,\n handlers,\n data: {\n interceptors,\n guards,\n params,\n plugins,\n },\n } = metaMap.get(methodTag)!\n\n router[http.type](http.route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n next()\n }))\n\n for (const p of plugins) {\n const middleware = Context.usePlugin([p])[0]\n if (!middleware)\n continue\n\n router[http.type](http.route, fromNodeMiddleware(middleware))\n }\n\n router[http.type](http.route, eventHandler(async (event) => {\n const instance = moduleMap.get(tag)!\n\n const contextData = {\n type: 'h3' as const,\n meta: i,\n event,\n moduleMap,\n }\n const context = new Context(methodTag, contextData)\n\n try {\n setHeaders(event, header)\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return cache\n\n const body = params.some(item => item.type === 'body') ? await readBody(event, { strict: true }) : undefined\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n let arg: any\n\n switch (type) {\n case 'params':\n arg = getRouterParams(event)\n break\n case 'query':\n arg = getQuery(event)\n break\n case 'header':\n arg = getRequestHeaders(event)\n break\n default:\n arg = body\n }\n\n return { arg: resolveDep(arg, key), pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n instance.context = contextData\n const funcData = await instance[method](...args)\n const ret = await context.usePostInterceptor(funcData)\n\n return ret\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n const err = await context.useFilter(e)\n setResponseStatus(event, err.status)\n return err\n }\n }))\n }\n }\n\n handleMeta()\n createRoute()\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n"],"mappings":"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","names":["eventHandler","fromNodeMiddleware","getQuery","getRequestHeaders","getRouterParams","readBody","setHeaders","setResponseStatus","bindApp","router","moduleMap","meta","options","globalGuards","globalInterceptors","route","plugins","isAopDepInject","guards","interceptors","APP_SYMBOL","metaMap","Map","handleMeta","clear","item","tag","method","http","data","type","methodTag","set","createRoute","post","fromNodeMiddleware","req","_res","next","MERGE_SYMBOL","MODULE_SYMBOL","META_SYMBOL","forEach","p","middleware","Context","usePlugin","eventHandler","event","body","readBody","strict","errorHandler","e","error","filter","setResponseStatus","status","Array","isArray","BadRequestException","Promise","all","map","resolve","get","contextData","parallel","context","name","split","paramsType","handlers","params","instance","useGuard","cache","useInterceptor","undefined","args","usePipe","key","pipe","pipeOpts","index","arg","reflect","funcData","usePostInterceptor","handler","useFilter","i","header","setHeaders","some","getRouterParams","getQuery","getRequestHeaders","resolveDep","ret","err","IS_DEV","globalThis","__PS_HMR__","push"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/server/h3/bind.ts"],"sourcesContent":["import { eventHandler, fromNodeMiddleware, getQuery, getRequestHeaders, getRouterParams, readBody, setHeaders, setResponseStatus } from 'h3'\nimport type { H3Event, NodeMiddleware, Router } from 'h3'\n\nimport { resolveDep } from '../../helper'\nimport { APP_SYMBOL, IS_DEV, MERGE_SYMBOL, META_SYMBOL, MODULE_SYMBOL } from '../../common'\nimport type { Factory } from '../../core'\nimport { BadRequestException } from '../../exception'\nimport type { Meta } from '../../meta'\nimport { Context, isAopDepInject } from '../../context'\n\nexport interface H3Ctx {\n type: 'h3'\n event: H3Event\n meta: Meta\n moduleMap: Record<string, any>\n parallel: boolean\n [key: string]: any\n}\nexport interface Options {\n\n /**\n * 专用路由的值,默认为/__PHECDA_SERVER__,处理phecda-client发出的合并请求\n */\n route?: string\n /**\n * 全局守卫\n */\n globalGuards?: string[]\n /**\n * 全局拦截器\n */\n globalInterceptors?: string[]\n /**\n * 专用路由的中间件(work for merge request),全局中间件请在bindApp以外设置\n */\n plugins?: string[]\n\n}\n\nexport function bindApp(router: Router, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, options: Options = {}) {\n const { globalGuards, globalInterceptors, route, plugins } = { route: '/__PHECDA_SERVER__', globalGuards: [], globalInterceptors: [], plugins: [], ...options } as Required<Options>\n\n isAopDepInject(meta, {\n plugins,\n guards: globalGuards,\n interceptors: globalInterceptors,\n });\n\n (router as any)[APP_SYMBOL] = { moduleMap, meta }\n\n const metaMap = new Map<string, Meta>()\n function handleMeta() {\n metaMap.clear()\n for (const item of meta) {\n const { tag, method, http } = item.data\n if (!http?.type)\n continue\n const methodTag = `${tag}-${method}`\n metaMap.set(methodTag, item)\n }\n }\n\n async function createRoute() {\n router.post(route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MERGE_SYMBOL] = true;\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n\n next()\n }))\n plugins.forEach((p) => {\n const middleware = Context.usePlugin([p])[0] as NodeMiddleware\n if (!middleware)\n return\n router.post(route, fromNodeMiddleware(middleware))\n })\n\n router.post(route, eventHandler(async (event) => {\n const body = await readBody(event, { strict: true })\n async function errorHandler(e: any) {\n const error = await Context.filterRecord.default(e)\n setResponseStatus(event, error.status)\n return error\n }\n\n if (!Array.isArray(body))\n return errorHandler(new BadRequestException('data format should be an array'))\n\n try {\n return Promise.all(body.map((item: any) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n const { tag } = item\n const meta = metaMap.get(tag)!\n if (!meta)\n return resolve(await Context.filterRecord.default(new BadRequestException(`\"${tag}\" doesn't exist`)))\n\n const contextData = {\n type: 'h3' as const,\n event,\n meta,\n moduleMap,\n parallel: true,\n\n }\n const context = new Context<H3Ctx>(tag, contextData)\n const [name, method] = tag.split('-')\n const {\n paramsType,\n handlers,\n data: {\n params,\n guards,\n interceptors, filter,\n },\n } = metaMap.get(tag)!\n\n const instance = moduleMap.get(name)\n\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return resolve(cache)\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n return { arg: item.args[index], type, key, pipe, pipeOpts, index, reflect: paramsType[index] }\n })) as any\n instance.context = contextData\n const funcData = await moduleMap.get(name)[method](...args)\n resolve(await context.usePostInterceptor(funcData))\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n resolve(await context.useFilter(e, filter))\n }\n })\n }))\n }\n\n catch (e) {\n return errorHandler(e)\n }\n }))\n for (const i of meta) {\n const { method, http, header, tag } = i.data\n\n if (!http?.type)\n continue\n\n const methodTag = `${tag}-${method}`\n\n const {\n paramsType,\n handlers,\n data: {\n interceptors,\n guards,\n params,\n plugins,\n filter,\n },\n } = metaMap.get(methodTag)!\n\n router[http.type](http.route, fromNodeMiddleware((req, _res, next) => {\n (req as any)[MODULE_SYMBOL] = moduleMap;\n (req as any)[META_SYMBOL] = meta\n next()\n }))\n\n for (const p of plugins) {\n const middleware = Context.usePlugin([p])[0]\n if (!middleware)\n continue\n\n router[http.type](http.route, fromNodeMiddleware(middleware))\n }\n\n router[http.type](http.route, eventHandler(async (event) => {\n const instance = moduleMap.get(tag)!\n\n const contextData = {\n type: 'h3' as const,\n meta: i,\n event,\n moduleMap,\n parallel: false,\n }\n const context = new Context<H3Ctx>(methodTag, contextData)\n\n try {\n setHeaders(event, header)\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined)\n return cache\n\n const body = params.some(item => item.type === 'body') ? await readBody(event, { strict: true }) : undefined\n const args = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }) => {\n let arg: any\n\n switch (type) {\n case 'params':\n arg = getRouterParams(event)\n break\n case 'query':\n arg = getQuery(event)\n break\n case 'header':\n arg = getRequestHeaders(event)\n break\n default:\n arg = body\n }\n\n return { arg: resolveDep(arg, key), pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n instance.context = contextData\n const funcData = await instance[method](...args)\n const ret = await context.usePostInterceptor(funcData)\n\n return ret\n }\n catch (e: any) {\n handlers.forEach(handler => handler.error?.(e))\n const err = await context.useFilter(e, filter)\n setResponseStatus(event, err.status)\n return err\n }\n }))\n }\n }\n\n handleMeta()\n createRoute()\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n isAopDepInject(meta, {\n plugins,\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n handleMeta()\n })\n }\n}\n"],"mappings":"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","names":["eventHandler","fromNodeMiddleware","getQuery","getRequestHeaders","getRouterParams","readBody","setHeaders","setResponseStatus","bindApp","router","moduleMap","meta","options","globalGuards","globalInterceptors","route","plugins","isAopDepInject","guards","interceptors","APP_SYMBOL","metaMap","Map","handleMeta","clear","item","tag","method","http","data","type","methodTag","set","createRoute","post","fromNodeMiddleware","req","_res","next","MERGE_SYMBOL","MODULE_SYMBOL","META_SYMBOL","forEach","p","middleware","Context","usePlugin","eventHandler","event","body","readBody","strict","errorHandler","e","error","filterRecord","default","setResponseStatus","status","Array","isArray","BadRequestException","Promise","all","map","resolve","get","contextData","parallel","context","name","split","paramsType","handlers","params","filter","instance","useGuard","cache","useInterceptor","undefined","args","usePipe","key","pipe","pipeOpts","index","arg","reflect","funcData","usePostInterceptor","handler","useFilter","i","header","setHeaders","some","getRouterParams","getQuery","getRequestHeaders","resolveDep","ret","err","IS_DEV","globalThis","__PS_HMR__","push"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Router, { RouterParamContext } from '@koa/router';
|
|
2
2
|
import { DefaultContext, DefaultState } from 'koa';
|
|
3
|
-
import { M as Meta, F as Factory } from '../../core-
|
|
4
|
-
import '../../types-
|
|
3
|
+
import { M as Meta, F as Factory } from '../../core-c27b4cf4.js';
|
|
4
|
+
import '../../types-8415bd5d.js';
|
|
5
5
|
import 'phecda-core';
|
|
6
6
|
|
|
7
7
|
interface KoaCtx {
|
|
@@ -9,6 +9,7 @@ interface KoaCtx {
|
|
|
9
9
|
ctx: DefaultContext & RouterParamContext<DefaultState, DefaultContext>;
|
|
10
10
|
meta: Meta;
|
|
11
11
|
moduleMap: Record<string, any>;
|
|
12
|
+
parallel: boolean;
|
|
12
13
|
[key: string]: any;
|
|
13
14
|
}
|
|
14
15
|
interface Options {
|
package/dist/server/koa/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkZPMAM4LQjs = require('../../chunk-ZPMAM4LQ.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunk7OB6K45Tjs = require('../../chunk-7OB6K45T.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ var _chunkYU7ROHTOjs = require('../../chunk-YU7ROHTO.js');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkAAF47ZC6js = require('../../chunk-AAF47ZC6.js');
|
|
17
17
|
|
|
18
18
|
// src/server/koa/bind.ts
|
|
19
19
|
function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
@@ -24,12 +24,12 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
|
24
24
|
plugins: [],
|
|
25
25
|
...options
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
_chunk7OB6K45Tjs.isAopDepInject.call(void 0, meta, {
|
|
28
28
|
plugins,
|
|
29
29
|
guards: globalGuards,
|
|
30
30
|
interceptors: globalInterceptors
|
|
31
31
|
});
|
|
32
|
-
app[
|
|
32
|
+
app[_chunkAAF47ZC6js.APP_SYMBOL] = {
|
|
33
33
|
moduleMap,
|
|
34
34
|
meta
|
|
35
35
|
};
|
|
@@ -44,30 +44,30 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
|
44
44
|
metaMap.set(methodTag, item);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
_chunkAAF47ZC6js.__name.call(void 0, handleMeta, "handleMeta");
|
|
48
48
|
async function createRoute() {
|
|
49
49
|
app.post(route, async (ctx, next) => {
|
|
50
|
-
ctx[
|
|
51
|
-
ctx[
|
|
52
|
-
ctx[
|
|
50
|
+
ctx[_chunkAAF47ZC6js.MERGE_SYMBOL] = true;
|
|
51
|
+
ctx[_chunkAAF47ZC6js.MODULE_SYMBOL] = moduleMap;
|
|
52
|
+
ctx[_chunkAAF47ZC6js.META_SYMBOL] = meta;
|
|
53
53
|
await next();
|
|
54
|
-
}, ...
|
|
54
|
+
}, ..._chunk7OB6K45Tjs.Context.usePlugin(plugins), async (ctx) => {
|
|
55
55
|
const { body } = ctx.request;
|
|
56
56
|
async function errorHandler(e) {
|
|
57
|
-
const error = await
|
|
57
|
+
const error = await _chunk7OB6K45Tjs.Context.filterRecord.default(e);
|
|
58
58
|
ctx.status = error.status;
|
|
59
59
|
ctx.body = error;
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
_chunkAAF47ZC6js.__name.call(void 0, errorHandler, "errorHandler");
|
|
62
62
|
if (!Array.isArray(body))
|
|
63
|
-
return errorHandler(new (0,
|
|
63
|
+
return errorHandler(new (0, _chunk7OB6K45Tjs.BadRequestException)("data format should be an array"));
|
|
64
64
|
try {
|
|
65
65
|
return Promise.all(body.map((item) => {
|
|
66
66
|
return new Promise(async (resolve) => {
|
|
67
67
|
const { tag } = item;
|
|
68
68
|
const meta2 = metaMap.get(tag);
|
|
69
69
|
if (!meta2)
|
|
70
|
-
return resolve(await
|
|
70
|
+
return resolve(await _chunk7OB6K45Tjs.Context.filterRecord.default(new (0, _chunk7OB6K45Tjs.BadRequestException)(`"${tag}" doesn't exist`)));
|
|
71
71
|
const contextData = {
|
|
72
72
|
type: "koa",
|
|
73
73
|
ctx,
|
|
@@ -75,9 +75,9 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
|
75
75
|
moduleMap,
|
|
76
76
|
parallel: true
|
|
77
77
|
};
|
|
78
|
-
const context = new (0,
|
|
78
|
+
const context = new (0, _chunk7OB6K45Tjs.Context)(tag, contextData);
|
|
79
79
|
const [name, method] = tag.split("-");
|
|
80
|
-
const { paramsType, handlers, data: { params, guards, interceptors } } = meta2;
|
|
80
|
+
const { paramsType, handlers, data: { params, guards, interceptors, filter } } = meta2;
|
|
81
81
|
const instance = moduleMap.get(name);
|
|
82
82
|
try {
|
|
83
83
|
await context.useGuard([
|
|
@@ -106,7 +106,7 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
|
106
106
|
resolve(await context.usePostInterceptor(funcData));
|
|
107
107
|
} catch (e) {
|
|
108
108
|
handlers.forEach((handler) => _optionalChain([handler, 'access', _2 => _2.error, 'optionalCall', _3 => _3(e)]));
|
|
109
|
-
resolve(await context.useFilter(e));
|
|
109
|
+
resolve(await context.useFilter(e, filter));
|
|
110
110
|
}
|
|
111
111
|
});
|
|
112
112
|
})).then((ret) => {
|
|
@@ -121,20 +121,21 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
|
121
121
|
if (!_optionalChain([http, 'optionalAccess', _4 => _4.type]))
|
|
122
122
|
continue;
|
|
123
123
|
const methodTag = `${tag}-${method}`;
|
|
124
|
-
const { paramsType, handlers, data: { interceptors, guards, params, plugins: plugins2 } } = metaMap.get(methodTag);
|
|
124
|
+
const { paramsType, handlers, data: { interceptors, guards, params, plugins: plugins2, filter } } = metaMap.get(methodTag);
|
|
125
125
|
app[http.type](http.route, async (ctx, next) => {
|
|
126
|
-
ctx[
|
|
127
|
-
ctx[
|
|
126
|
+
ctx[_chunkAAF47ZC6js.MODULE_SYMBOL] = moduleMap;
|
|
127
|
+
ctx[_chunkAAF47ZC6js.META_SYMBOL] = meta;
|
|
128
128
|
await next();
|
|
129
|
-
}, ...
|
|
129
|
+
}, ..._chunk7OB6K45Tjs.Context.usePlugin(plugins2), async (ctx) => {
|
|
130
130
|
const instance = moduleMap.get(tag);
|
|
131
131
|
const contextData = {
|
|
132
132
|
type: "koa",
|
|
133
133
|
ctx,
|
|
134
134
|
meta: i,
|
|
135
|
-
moduleMap
|
|
135
|
+
moduleMap,
|
|
136
|
+
parallel: false
|
|
136
137
|
};
|
|
137
|
-
const context = new (0,
|
|
138
|
+
const context = new (0, _chunk7OB6K45Tjs.Context)(methodTag, contextData);
|
|
138
139
|
try {
|
|
139
140
|
for (const name in header)
|
|
140
141
|
ctx.set(name, header[name]);
|
|
@@ -152,7 +153,7 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
|
152
153
|
}
|
|
153
154
|
const args = await context.usePipe(params.map(({ type, key, pipeOpts, index, pipe }) => {
|
|
154
155
|
return {
|
|
155
|
-
arg:
|
|
156
|
+
arg: _chunkZPMAM4LQjs.resolveDep.call(void 0, ctx.request[type], key),
|
|
156
157
|
pipeOpts,
|
|
157
158
|
pipe,
|
|
158
159
|
key,
|
|
@@ -169,25 +170,32 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
|
|
|
169
170
|
ctx.body = ret;
|
|
170
171
|
} catch (e) {
|
|
171
172
|
handlers.forEach((handler) => _optionalChain([handler, 'access', _5 => _5.error, 'optionalCall', _6 => _6(e)]));
|
|
172
|
-
const err = await context.useFilter(e);
|
|
173
|
+
const err = await context.useFilter(e, filter);
|
|
174
|
+
if (ctx.res.writableEnded)
|
|
175
|
+
return;
|
|
173
176
|
ctx.status = err.status;
|
|
174
177
|
ctx.body = err;
|
|
175
178
|
}
|
|
176
179
|
});
|
|
177
180
|
}
|
|
178
181
|
}
|
|
179
|
-
|
|
182
|
+
_chunkAAF47ZC6js.__name.call(void 0, createRoute, "createRoute");
|
|
180
183
|
handleMeta();
|
|
181
184
|
createRoute();
|
|
182
|
-
if (
|
|
185
|
+
if (_chunkAAF47ZC6js.IS_DEV) {
|
|
183
186
|
_optionalChain([globalThis, 'access', _7 => _7.__PS_HMR__, 'optionalAccess', _8 => _8.push, 'call', _9 => _9(async () => {
|
|
187
|
+
_chunk7OB6K45Tjs.isAopDepInject.call(void 0, meta, {
|
|
188
|
+
plugins,
|
|
189
|
+
guards: globalGuards,
|
|
190
|
+
interceptors: globalInterceptors
|
|
191
|
+
});
|
|
184
192
|
app.stack = [];
|
|
185
193
|
handleMeta();
|
|
186
194
|
createRoute();
|
|
187
195
|
})]);
|
|
188
196
|
}
|
|
189
197
|
}
|
|
190
|
-
|
|
198
|
+
_chunkAAF47ZC6js.__name.call(void 0, bindApp, "bindApp");
|
|
191
199
|
|
|
192
200
|
|
|
193
201
|
exports.bindApp = bindApp;
|