@midwayjs/core 3.0.0-beta.1 → 3.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +1 -1
  3. package/dist/baseFramework.d.ts +13 -10
  4. package/dist/baseFramework.js +32 -23
  5. package/dist/common/applicationManager.d.ts +12 -0
  6. package/dist/common/applicationManager.js +66 -0
  7. package/dist/{util → common}/fileDetector.d.ts +0 -0
  8. package/dist/{util → common}/fileDetector.js +0 -0
  9. package/dist/common/filterManager.d.ts +19 -0
  10. package/dist/common/filterManager.js +85 -0
  11. package/dist/common/middlewareManager.d.ts +68 -0
  12. package/dist/common/middlewareManager.js +183 -0
  13. package/dist/{util → common}/serviceFactory.d.ts +0 -0
  14. package/dist/{util → common}/serviceFactory.js +0 -0
  15. package/dist/{util → common}/triggerCollector.d.ts +0 -0
  16. package/dist/{util → common}/triggerCollector.js +0 -0
  17. package/dist/common/webGenerator.d.ts +16 -0
  18. package/dist/{util → common}/webGenerator.js +34 -52
  19. package/dist/{util → common}/webRouterCollector.d.ts +9 -4
  20. package/dist/{util → common}/webRouterCollector.js +52 -28
  21. package/dist/config/config.default.d.ts +3 -17
  22. package/dist/context/container.js +13 -2
  23. package/dist/context/managedResolverFactory.js +2 -2
  24. package/dist/error/base.d.ts +3 -1
  25. package/dist/error/base.js +1 -0
  26. package/dist/error/code.d.ts +2 -1
  27. package/dist/error/code.js +2 -1
  28. package/dist/error/framework.d.ts +5 -2
  29. package/dist/error/framework.js +14 -5
  30. package/dist/error/http.d.ts +2 -1
  31. package/dist/error/http.js +3 -3
  32. package/dist/error/index.d.ts +1 -0
  33. package/dist/error/index.js +1 -0
  34. package/dist/index.d.ts +9 -9
  35. package/dist/index.js +13 -11
  36. package/dist/interface.d.ts +58 -30
  37. package/dist/service/configService.js +4 -5
  38. package/dist/service/decoratorService.js +26 -24
  39. package/dist/service/frameworkService.d.ts +6 -4
  40. package/dist/service/frameworkService.js +26 -11
  41. package/dist/service/lifeCycleService.js +7 -5
  42. package/dist/service/loggerService.d.ts +1 -2
  43. package/dist/service/loggerService.js +1 -10
  44. package/dist/service/middlewareService.d.ts +4 -4
  45. package/dist/service/middlewareService.js +32 -46
  46. package/dist/setup.js +10 -2
  47. package/dist/util/contextUtil.d.ts +1 -1
  48. package/dist/util/index.d.ts +46 -0
  49. package/dist/util/index.js +150 -1
  50. package/dist/util/webRouterParam.d.ts +2 -2
  51. package/dist/util/webRouterParam.js +17 -18
  52. package/package.json +7 -7
  53. package/dist/util/exceptionFilterManager.d.ts +0 -13
  54. package/dist/util/exceptionFilterManager.js +0 -53
  55. package/dist/util/middlewareManager.d.ts +0 -11
  56. package/dist/util/middlewareManager.js +0 -48
  57. package/dist/util/webGenerator.d.ts +0 -30
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.extractExpressLikeValue = exports.extractKoaLikeValue = void 0;
4
4
  const decorator_1 = require("@midwayjs/decorator");
5
- const extractKoaLikeValue = (key, data) => {
5
+ const index_1 = require("./index");
6
+ const extractKoaLikeValue = (key, data, paramType) => {
6
7
  if (decorator_1.ALL === data) {
7
8
  data = undefined;
8
9
  }
@@ -11,17 +12,15 @@ const extractKoaLikeValue = (key, data) => {
11
12
  case decorator_1.RouteParamTypes.NEXT:
12
13
  return next;
13
14
  case decorator_1.RouteParamTypes.BODY:
14
- return data && ctx.request.body
15
- ? ctx.request.body[data]
16
- : ctx.request.body;
15
+ return (0, index_1.transformRequestObjectByType)(data && ctx.request.body ? ctx.request.body[data] : ctx.request.body, paramType);
17
16
  case decorator_1.RouteParamTypes.PARAM:
18
- return data ? ctx.params[data] : ctx.params;
17
+ return (0, index_1.transformRequestObjectByType)(data ? ctx.params[data] : ctx.params, paramType);
19
18
  case decorator_1.RouteParamTypes.QUERY:
20
- return data ? ctx.query[data] : ctx.query;
19
+ return (0, index_1.transformRequestObjectByType)(data ? ctx.query[data] : ctx.query, paramType);
21
20
  case decorator_1.RouteParamTypes.HEADERS:
22
- return data ? ctx.get(data) : ctx.headers;
21
+ return (0, index_1.transformRequestObjectByType)(data ? ctx.get(data) : ctx.headers, paramType);
23
22
  case decorator_1.RouteParamTypes.SESSION:
24
- return data ? ctx.session[data] : ctx.session;
23
+ return (0, index_1.transformRequestObjectByType)(data ? ctx.session[data] : ctx.session, paramType);
25
24
  case decorator_1.RouteParamTypes.FILESTREAM:
26
25
  return ctx.getFileStream && ctx.getFileStream(data);
27
26
  case decorator_1.RouteParamTypes.FILESSTREAM:
@@ -32,10 +31,10 @@ const extractKoaLikeValue = (key, data) => {
32
31
  return ctx['ip'];
33
32
  case decorator_1.RouteParamTypes.QUERIES:
34
33
  if (ctx.queries) {
35
- return data ? ctx.queries[data] : ctx.queries;
34
+ return (0, index_1.transformRequestObjectByType)(data ? ctx.queries[data] : ctx.queries, paramType);
36
35
  }
37
36
  else {
38
- return data ? ctx.query[data] : ctx.query;
37
+ return (0, index_1.transformRequestObjectByType)(data ? ctx.query[data] : ctx.query, paramType);
39
38
  }
40
39
  default:
41
40
  return null;
@@ -43,7 +42,7 @@ const extractKoaLikeValue = (key, data) => {
43
42
  };
44
43
  };
45
44
  exports.extractKoaLikeValue = extractKoaLikeValue;
46
- const extractExpressLikeValue = (key, data) => {
45
+ const extractExpressLikeValue = (key, data, paramType) => {
47
46
  if (decorator_1.ALL === data) {
48
47
  data = undefined;
49
48
  }
@@ -52,15 +51,15 @@ const extractExpressLikeValue = (key, data) => {
52
51
  case decorator_1.RouteParamTypes.NEXT:
53
52
  return next;
54
53
  case decorator_1.RouteParamTypes.BODY:
55
- return data && req.body ? req.body[data] : req.body;
54
+ return (0, index_1.transformRequestObjectByType)(data && req.body ? req.body[data] : req.body, paramType);
56
55
  case decorator_1.RouteParamTypes.PARAM:
57
- return data ? req.params[data] : req.params;
56
+ return (0, index_1.transformRequestObjectByType)(data ? req.params[data] : req.params, paramType);
58
57
  case decorator_1.RouteParamTypes.QUERY:
59
- return data ? req.query[data] : req.query;
58
+ return (0, index_1.transformRequestObjectByType)(data ? req.query[data] : req.query, paramType);
60
59
  case decorator_1.RouteParamTypes.HEADERS:
61
- return data ? req.get(data) : req.headers;
60
+ return (0, index_1.transformRequestObjectByType)(data ? req.get(data) : req.headers, paramType);
62
61
  case decorator_1.RouteParamTypes.SESSION:
63
- return data ? req.session[data] : req.session;
62
+ return (0, index_1.transformRequestObjectByType)(data ? req.session[data] : req.session, paramType);
64
63
  case decorator_1.RouteParamTypes.FILESTREAM:
65
64
  return req.getFileStream && req.getFileStream(data);
66
65
  case decorator_1.RouteParamTypes.FILESSTREAM:
@@ -71,10 +70,10 @@ const extractExpressLikeValue = (key, data) => {
71
70
  return req['ip'];
72
71
  case decorator_1.RouteParamTypes.QUERIES:
73
72
  if (req.queries) {
74
- return data ? req.queries[data] : req.queries;
73
+ return (0, index_1.transformRequestObjectByType)(data ? req.queries[data] : req.queries, paramType);
75
74
  }
76
75
  else {
77
- return data ? req.query[data] : req.query;
76
+ return (0, index_1.transformRequestObjectByType)(data ? req.query[data] : req.query, paramType);
78
77
  }
79
78
  default:
80
79
  return null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midwayjs/core",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.10",
4
4
  "description": "midway core",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index.d.ts",
@@ -21,7 +21,8 @@
21
21
  ],
22
22
  "license": "MIT",
23
23
  "devDependencies": {
24
- "@midwayjs/decorator": "^3.0.0-beta.1",
24
+ "@midwayjs/decorator": "^3.0.0-beta.10",
25
+ "koa": "^2.13.4",
25
26
  "midway-test-component": "*",
26
27
  "mm": "3",
27
28
  "sinon": "^7.2.2"
@@ -31,11 +32,10 @@
31
32
  },
32
33
  "dependencies": {
33
34
  "@midwayjs/glob": "^1.0.2",
34
- "@midwayjs/logger": "^3.0.0-beta.1",
35
- "class-transformer": "^0.3.1",
35
+ "@midwayjs/logger": "^3.0.0-beta.10",
36
+ "class-transformer": "^0.5.1",
36
37
  "extend2": "^1.0.0",
37
- "picomatch": "^2.2.2",
38
- "reflect-metadata": "^0.1.13"
38
+ "picomatch": "^2.3.0"
39
39
  },
40
40
  "author": "Harry Chen <czy88840616@gmail.com>",
41
41
  "repository": {
@@ -45,5 +45,5 @@
45
45
  "engines": {
46
46
  "node": ">=12"
47
47
  },
48
- "gitHead": "72e4d20c678e65a5440c4e9a6d3b70046daa497c"
48
+ "gitHead": "153870f2e2dd6b17673ec7591e49224a6bd51b36"
49
49
  }
@@ -1,13 +0,0 @@
1
- import { CommonExceptionFilterUnion, IMidwayContainer, IMidwayContext } from '../interface';
2
- export declare class ExceptionFilterManager<T extends IMidwayContext = IMidwayContext, R = any, N = any> {
3
- private filterList;
4
- private exceptionMap;
5
- private defaultFilter;
6
- useFilter(Filter: CommonExceptionFilterUnion<T, R, N>): void;
7
- init(applicationContext: IMidwayContainer): Promise<void>;
8
- run(err: Error, ctx: T, res?: R, next?: N): Promise<{
9
- result: any;
10
- error: any;
11
- }>;
12
- }
13
- //# sourceMappingURL=exceptionFilterManager.d.ts.map
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExceptionFilterManager = void 0;
4
- const decorator_1 = require("@midwayjs/decorator");
5
- class ExceptionFilterManager {
6
- constructor() {
7
- this.filterList = [];
8
- this.exceptionMap = new WeakMap();
9
- this.defaultFilter = undefined;
10
- }
11
- useFilter(Filter) {
12
- if (Array.isArray(Filter)) {
13
- this.filterList.push(...Filter);
14
- }
15
- else {
16
- this.filterList.push(Filter);
17
- }
18
- }
19
- async init(applicationContext) {
20
- for (const FilterClass of this.filterList) {
21
- const filter = await applicationContext.getAsync(FilterClass);
22
- const exceptionMetadata = (0, decorator_1.getClassMetadata)(decorator_1.CATCH_KEY, FilterClass);
23
- if (exceptionMetadata && exceptionMetadata.catchTargets) {
24
- for (const Exception of exceptionMetadata.catchTargets) {
25
- this.exceptionMap.set(Exception, filter);
26
- }
27
- }
28
- else {
29
- // default filter
30
- this.defaultFilter = filter;
31
- }
32
- }
33
- }
34
- async run(err, ctx, res, next) {
35
- let result, error;
36
- if (this.exceptionMap.has(err.constructor)) {
37
- const filter = this.exceptionMap.get(err.constructor);
38
- result = await filter.catch(err, ctx, res, next);
39
- }
40
- else if (this.defaultFilter) {
41
- result = await this.defaultFilter.catch(err, ctx, res, next);
42
- }
43
- else {
44
- error = err;
45
- }
46
- return {
47
- result,
48
- error,
49
- };
50
- }
51
- }
52
- exports.ExceptionFilterManager = ExceptionFilterManager;
53
- //# sourceMappingURL=exceptionFilterManager.js.map
@@ -1,11 +0,0 @@
1
- import { CommonMiddleware, CommonMiddlewareUnion, IMidwayContext } from '../interface';
2
- export declare class ContextMiddlewareManager<T extends IMidwayContext = IMidwayContext, R = any, N = any> extends Array<CommonMiddleware<T, R, N>> {
3
- insertFirst(middleware: CommonMiddlewareUnion<T, R, N>): void;
4
- insertBefore(middleware: CommonMiddlewareUnion<T, R, N>, idxOrBeforeMiddleware: number): any;
5
- insertBefore(middleware: CommonMiddlewareUnion<T, R, N>, idxOrBeforeMiddleware: CommonMiddlewareUnion<T, R, N>): any;
6
- insertAfter(middleware: CommonMiddlewareUnion<T, R, N>, idxOrAfterMiddleware: number): any;
7
- insertAfter(middleware: CommonMiddlewareUnion<T, R, N>, idxOrAfterMiddleware: CommonMiddlewareUnion<T, R, N>): any;
8
- insertLast(middleware: CommonMiddlewareUnion<T, R, N>): void;
9
- private findItemIndex;
10
- }
11
- //# sourceMappingURL=middlewareManager.d.ts.map
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ContextMiddlewareManager = void 0;
4
- class ContextMiddlewareManager extends Array {
5
- insertFirst(middleware) {
6
- if (Array.isArray(middleware)) {
7
- this.unshift(...middleware);
8
- }
9
- else {
10
- this.unshift(middleware);
11
- }
12
- }
13
- insertBefore(middleware, idxOrBeforeMiddleware) {
14
- if (typeof idxOrBeforeMiddleware !== 'number') {
15
- idxOrBeforeMiddleware = this.findItemIndex(idxOrBeforeMiddleware);
16
- }
17
- if (Array.isArray(middleware)) {
18
- this.splice(idxOrBeforeMiddleware, 0, ...middleware);
19
- }
20
- else {
21
- this.splice(idxOrBeforeMiddleware, 0, middleware);
22
- }
23
- }
24
- insertAfter(middleware, idxOrAfterMiddleware) {
25
- if (typeof idxOrAfterMiddleware !== 'number') {
26
- idxOrAfterMiddleware = this.findItemIndex(idxOrAfterMiddleware);
27
- }
28
- if (Array.isArray(middleware)) {
29
- this.splice(idxOrAfterMiddleware + 1, 0, ...middleware);
30
- }
31
- else {
32
- this.splice(idxOrAfterMiddleware + 1, 0, middleware);
33
- }
34
- }
35
- insertLast(middleware) {
36
- if (Array.isArray(middleware)) {
37
- this.push(...middleware);
38
- }
39
- else {
40
- this.push(middleware);
41
- }
42
- }
43
- findItemIndex(middleware) {
44
- return this.findIndex(item => item === middleware);
45
- }
46
- }
47
- exports.ContextMiddlewareManager = ContextMiddlewareManager;
48
- //# sourceMappingURL=middlewareManager.js.map
@@ -1,30 +0,0 @@
1
- /**
2
- * wrap controller string to middleware function
3
- * @param controllerMapping like FooController.index
4
- * @param routeArgsInfo
5
- * @param routerResponseData
6
- */
7
- import { MidwayFrameworkType, RouterParamValue } from '@midwayjs/decorator';
8
- import { IMidwayContainer } from '../';
9
- import { ILogger } from '@midwayjs/logger';
10
- export declare abstract class WebControllerGenerator<Router extends {
11
- use: (...args: any[]) => void;
12
- }> {
13
- readonly applicationContext: IMidwayContainer;
14
- readonly frameworkType: MidwayFrameworkType;
15
- readonly logger?: ILogger;
16
- private controllerIds;
17
- protected constructor(applicationContext: IMidwayContainer, frameworkType: MidwayFrameworkType, logger?: ILogger);
18
- /**
19
- * wrap controller string to middleware function
20
- * @param controllerMapping like FooController.index
21
- * @param routeArgsInfo
22
- * @param routerResponseData
23
- */
24
- generateKoaController(controllerMapping: string, routeArgsInfo?: RouterParamValue[], routerResponseData?: any[]): (ctx: any, next: any) => Promise<void>;
25
- loadMidwayController(routerHandler?: (newRouter: Router) => void): Promise<void>;
26
- abstract createRouter(routerOptions: any): Router;
27
- abstract generateController(controllerMapping: string, routeArgsInfo?: RouterParamValue[], routerResponseData?: any[]): any;
28
- protected handlerWebMiddleware(middlewares: any[], handlerCallback: (middlewareImpl: any) => void): Promise<void>;
29
- }
30
- //# sourceMappingURL=webGenerator.d.ts.map