@midwayjs/core 3.0.0-beta.8 → 3.0.2

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 (97) hide show
  1. package/dist/baseFramework.d.ts +2 -1
  2. package/dist/baseFramework.js +13 -10
  3. package/dist/baseFramework.js.map +1 -0
  4. package/dist/common/applicationManager.d.ts +11 -0
  5. package/dist/common/applicationManager.js +70 -0
  6. package/dist/common/applicationManager.js.map +1 -0
  7. package/dist/common/constants.js.map +1 -0
  8. package/dist/common/dataListener.d.ts +11 -0
  9. package/dist/common/dataListener.js +43 -0
  10. package/dist/common/dataListener.js.map +1 -0
  11. package/dist/common/fileDetector.js +1 -1
  12. package/dist/common/fileDetector.js.map +1 -0
  13. package/dist/common/filterManager.js.map +1 -0
  14. package/dist/common/middlewareManager.js +2 -2
  15. package/dist/common/middlewareManager.js.map +1 -0
  16. package/dist/common/serviceFactory.js.map +1 -0
  17. package/dist/common/triggerCollector.js.map +1 -0
  18. package/dist/common/webGenerator.d.ts +3 -14
  19. package/dist/common/webGenerator.js +21 -33
  20. package/dist/common/webGenerator.js.map +1 -0
  21. package/dist/common/webRouterCollector.js +7 -3
  22. package/dist/common/webRouterCollector.js.map +1 -0
  23. package/dist/config/config.default.js.map +1 -0
  24. package/dist/context/container.js +28 -13
  25. package/dist/context/container.js.map +1 -0
  26. package/dist/context/definitionRegistry.js.map +1 -0
  27. package/dist/context/managedResolverFactory.d.ts +1 -0
  28. package/dist/context/managedResolverFactory.js +20 -5
  29. package/dist/context/managedResolverFactory.js.map +1 -0
  30. package/dist/context/providerWrapper.js.map +1 -0
  31. package/dist/context/requestContainer.js +2 -0
  32. package/dist/context/requestContainer.js.map +1 -0
  33. package/dist/definitions/functionDefinition.d.ts +1 -0
  34. package/dist/definitions/functionDefinition.js +1 -0
  35. package/dist/definitions/functionDefinition.js.map +1 -0
  36. package/dist/definitions/objectCreator.js +9 -8
  37. package/dist/definitions/objectCreator.js.map +1 -0
  38. package/dist/definitions/objectDefinition.d.ts +1 -0
  39. package/dist/definitions/objectDefinition.js +1 -0
  40. package/dist/definitions/objectDefinition.js.map +1 -0
  41. package/dist/definitions/properties.js.map +1 -0
  42. package/dist/error/base.d.ts +22 -3
  43. package/dist/error/base.js +34 -5
  44. package/dist/error/base.js.map +1 -0
  45. package/dist/error/framework.d.ts +27 -2
  46. package/dist/error/framework.js +51 -14
  47. package/dist/error/framework.js.map +1 -0
  48. package/dist/error/http.d.ts +146 -41
  49. package/dist/error/http.js +164 -31
  50. package/dist/error/http.js.map +1 -0
  51. package/dist/error/index.d.ts +1 -1
  52. package/dist/error/index.js +4 -1
  53. package/dist/error/index.js.map +1 -0
  54. package/dist/functional/configuration.d.ts +2 -0
  55. package/dist/functional/configuration.js +10 -0
  56. package/dist/functional/configuration.js.map +1 -0
  57. package/dist/index.d.ts +3 -0
  58. package/dist/index.js +5 -1
  59. package/dist/index.js.map +1 -0
  60. package/dist/interface.d.ts +51 -29
  61. package/dist/interface.js.map +1 -0
  62. package/dist/service/aspectService.js +1 -1
  63. package/dist/service/aspectService.js.map +1 -0
  64. package/dist/service/configService.d.ts +3 -1
  65. package/dist/service/configService.js +23 -17
  66. package/dist/service/configService.js.map +1 -0
  67. package/dist/service/decoratorService.js +25 -13
  68. package/dist/service/decoratorService.js.map +1 -0
  69. package/dist/service/environmentService.d.ts +1 -1
  70. package/dist/service/environmentService.js.map +1 -0
  71. package/dist/service/frameworkService.d.ts +3 -2
  72. package/dist/service/frameworkService.js +17 -12
  73. package/dist/service/frameworkService.js.map +1 -0
  74. package/dist/service/informationService.js.map +1 -0
  75. package/dist/service/lifeCycleService.js +5 -5
  76. package/dist/service/lifeCycleService.js.map +1 -0
  77. package/dist/service/loggerService.d.ts +1 -1
  78. package/dist/service/loggerService.js.map +1 -0
  79. package/dist/service/middlewareService.d.ts +3 -4
  80. package/dist/service/middlewareService.js +7 -11
  81. package/dist/service/middlewareService.js.map +1 -0
  82. package/dist/service/pipelineService.js.map +1 -0
  83. package/dist/setup.js +13 -5
  84. package/dist/setup.js.map +1 -0
  85. package/dist/util/contextUtil.js.map +1 -0
  86. package/dist/util/extend.d.ts +2 -0
  87. package/dist/util/extend.js +55 -0
  88. package/dist/util/extend.js.map +1 -0
  89. package/dist/util/index.js.map +1 -0
  90. package/dist/util/pathFileUtil.js.map +1 -0
  91. package/dist/util/pathToRegexp.js.map +1 -0
  92. package/dist/util/webRouterParam.js +24 -4
  93. package/dist/util/webRouterParam.js.map +1 -0
  94. package/package.json +12 -13
  95. package/CHANGELOG.md +0 -2197
  96. package/dist/error/code.d.ts +0 -60
  97. package/dist/error/code.js +0 -65
@@ -72,7 +72,7 @@ export declare abstract class BaseFramework<APP extends IMidwayApplication<CTX>,
72
72
  * @deprecated
73
73
  */
74
74
  protected afterContainerReady(options: Partial<IMidwayBootstrapOptions>): Promise<void>;
75
- getMiddleware<R, N>(lastMiddleware?: CommonMiddleware<CTX, R, N>): Promise<MiddlewareRespond<CTX, R, N>>;
75
+ applyMiddleware<R, N>(lastMiddleware?: CommonMiddleware<CTX, R, N>): Promise<MiddlewareRespond<CTX, R, N>>;
76
76
  getLogger(name?: string): ILogger;
77
77
  getCoreLogger(): ILogger;
78
78
  createLogger(name: string, option?: LoggerOptions): ILogger;
@@ -80,6 +80,7 @@ export declare abstract class BaseFramework<APP extends IMidwayApplication<CTX>,
80
80
  getFrameworkName(): string;
81
81
  getDefaultContextLoggerClass(): any;
82
82
  useMiddleware(Middleware: CommonMiddlewareUnion<CTX, ResOrNext, Next>): void;
83
+ getMiddleware(): ContextMiddlewareManager<CTX, ResOrNext, Next>;
83
84
  useFilter(Filter: CommonFilterUnion<CTX, ResOrNext, Next>): void;
84
85
  protected createMiddlewareManager(): ContextMiddlewareManager<CTX, ResOrNext, Next>;
85
86
  protected createFilterManager(): FilterManager<CTX, ResOrNext, Next>;
@@ -21,6 +21,8 @@ const loggerService_1 = require("./service/loggerService");
21
21
  const middlewareManager_1 = require("./common/middlewareManager");
22
22
  const middlewareService_1 = require("./service/middlewareService");
23
23
  const filterManager_1 = require("./common/filterManager");
24
+ const util = require("util");
25
+ const debug = util.debuglog('midway:debug');
24
26
  class BaseFramework {
25
27
  constructor(applicationContext) {
26
28
  this.applicationContext = applicationContext;
@@ -173,13 +175,13 @@ class BaseFramework {
173
175
  return this.getApplicationContext().getAttr(key);
174
176
  },
175
177
  useMiddleware: (middleware) => {
176
- this.middlewareManager.insertLast(middleware);
178
+ return this.useMiddleware(middleware);
177
179
  },
178
180
  getMiddleware: () => {
179
- return this.middlewareManager;
181
+ return this.getMiddleware();
180
182
  },
181
183
  useFilter: (Filter) => {
182
- this.filterManager.useFilter(Filter);
184
+ return this.useFilter(Filter);
183
185
  },
184
186
  };
185
187
  for (const method of whiteList) {
@@ -204,7 +206,7 @@ class BaseFramework {
204
206
  * @deprecated
205
207
  */
206
208
  async afterContainerReady(options) { }
207
- async getMiddleware(lastMiddleware) {
209
+ async applyMiddleware(lastMiddleware) {
208
210
  if (!this.composeMiddleware) {
209
211
  this.middlewareManager.insertFirst((async (ctx, next) => {
210
212
  let returnResult = undefined;
@@ -220,14 +222,12 @@ class BaseFramework {
220
222
  }
221
223
  return returnResult.result;
222
224
  }));
223
- this.composeMiddleware = await this.middlewareService.compose(this.middlewareManager);
225
+ debug(`[core]: Compose middleware = [${this.middlewareManager.getNames()}]`);
226
+ this.composeMiddleware = await this.middlewareService.compose(this.middlewareManager, this.app);
224
227
  await this.filterManager.init(this.applicationContext);
225
228
  }
226
229
  if (lastMiddleware) {
227
- return await this.middlewareService.compose([
228
- this.composeMiddleware,
229
- lastMiddleware,
230
- ]);
230
+ return await this.middlewareService.compose([this.composeMiddleware, lastMiddleware], this.app);
231
231
  }
232
232
  else {
233
233
  return this.composeMiddleware;
@@ -255,8 +255,11 @@ class BaseFramework {
255
255
  useMiddleware(Middleware) {
256
256
  this.middlewareManager.insertLast(Middleware);
257
257
  }
258
+ getMiddleware() {
259
+ return this.middlewareManager;
260
+ }
258
261
  useFilter(Filter) {
259
- this.filterManager.useFilter(Filter);
262
+ return this.filterManager.useFilter(Filter);
260
263
  }
261
264
  createMiddlewareManager() {
262
265
  return new middlewareManager_1.ContextMiddlewareManager();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseFramework.js","sourceRoot":"","sources":["../src/baseFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CommonMiddlewareUnion,\n IConfigurationOptions,\n IMidwayApplication,\n IMidwayBootstrapOptions,\n IMidwayContainer,\n IMidwayContext,\n IMidwayFramework,\n MidwayProcessTypeEnum,\n CommonFilterUnion,\n CommonMiddleware,\n MiddlewareRespond,\n} from './interface';\nimport { Inject, Destroy, Init, FrameworkType } from '@midwayjs/decorator';\nimport { ILogger, LoggerOptions, MidwayContextLogger } from '@midwayjs/logger';\nimport { MidwayRequestContainer } from './context/requestContainer';\nimport { MidwayEnvironmentService } from './service/environmentService';\nimport { MidwayConfigService } from './service/configService';\nimport { MidwayInformationService } from './service/informationService';\nimport { MidwayLoggerService } from './service/loggerService';\nimport { ContextMiddlewareManager } from './common/middlewareManager';\nimport { MidwayMiddlewareService } from './service/middlewareService';\nimport { FilterManager } from './common/filterManager';\nimport * as util from 'util';\nconst debug = util.debuglog('midway:debug');\n\nexport abstract class BaseFramework<\n APP extends IMidwayApplication<CTX>,\n CTX extends IMidwayContext,\n OPT extends IConfigurationOptions,\n ResOrNext = unknown,\n Next = unknown\n> implements IMidwayFramework<APP, CTX, OPT, ResOrNext, Next>\n{\n public app: APP;\n public configurationOptions: OPT;\n protected logger: ILogger;\n protected appLogger: ILogger;\n protected defaultContext = {};\n protected BaseContextLoggerClass: any;\n protected ContextLoggerApplyLogger: string;\n protected middlewareManager = this.createMiddlewareManager();\n protected filterManager = this.createFilterManager();\n protected composeMiddleware = null;\n\n @Inject()\n loggerService: MidwayLoggerService;\n\n @Inject()\n environmentService: MidwayEnvironmentService;\n\n @Inject()\n configService: MidwayConfigService;\n\n @Inject()\n informationService: MidwayInformationService;\n\n @Inject()\n middlewareService: MidwayMiddlewareService<CTX, ResOrNext, Next>;\n\n constructor(readonly applicationContext: IMidwayContainer) {}\n\n @Init()\n async init() {\n this.configurationOptions = this.configure() ?? ({} as OPT);\n this.BaseContextLoggerClass =\n this.configurationOptions.ContextLoggerClass ??\n this.getDefaultContextLoggerClass();\n this.ContextLoggerApplyLogger =\n this.configurationOptions.ContextLoggerApplyLogger ?? 'appLogger';\n this.logger = this.loggerService.getLogger('coreLogger');\n this.appLogger = this.loggerService.getLogger('appLogger');\n return this;\n }\n\n abstract configure(options?: OPT);\n\n isEnable(): boolean {\n return true;\n }\n\n public async initialize(options?: IMidwayBootstrapOptions): Promise<void> {\n await this.beforeContainerInitialize(options);\n await this.containerInitialize(options);\n await this.afterContainerInitialize(options);\n await this.containerDirectoryLoad(options);\n await this.afterContainerDirectoryLoad(options);\n\n /**\n * Third party application initialization\n */\n await this.applicationInitialize(options);\n await this.containerReady(options);\n await this.afterContainerReady(options);\n }\n\n /**\n * @deprecated\n */\n protected async containerInitialize(options: IMidwayBootstrapOptions) {}\n /**\n * @deprecated\n */\n protected async containerDirectoryLoad(options: IMidwayBootstrapOptions) {}\n /**\n * @deprecated\n */\n protected async containerReady(options: IMidwayBootstrapOptions) {\n if (!this.app.getApplicationContext) {\n this.defineApplicationProperties();\n }\n }\n\n public getApplicationContext(): IMidwayContainer {\n return this.applicationContext;\n }\n\n public getConfiguration(key?: string): any {\n return this.configService.getConfiguration(key);\n }\n\n public getCurrentEnvironment() {\n return this.environmentService.getCurrentEnvironment();\n }\n\n public getApplication(): APP {\n return this.app;\n }\n\n public abstract applicationInitialize(options: IMidwayBootstrapOptions);\n\n public abstract getFrameworkType(): FrameworkType;\n\n public abstract run(): Promise<void>;\n\n public setContextLoggerClass(BaseContextLogger: any) {\n this.BaseContextLoggerClass = BaseContextLogger;\n }\n\n protected createContextLogger(ctx: CTX, name?: string): ILogger {\n const appLogger = this.getLogger(name ?? this.ContextLoggerApplyLogger);\n return new this.BaseContextLoggerClass(ctx, appLogger);\n }\n\n @Destroy()\n public async stop(): Promise<void> {\n await this.beforeStop();\n }\n\n public getAppDir(): string {\n return this.informationService.getAppDir();\n }\n\n public getBaseDir(): string {\n return this.informationService.getBaseDir();\n }\n\n protected defineApplicationProperties(\n applicationProperties = {},\n whiteList: string[] = []\n ) {\n const defaultApplicationProperties = {\n getBaseDir: () => {\n return this.getBaseDir();\n },\n\n getAppDir: () => {\n return this.getAppDir();\n },\n\n getEnv: () => {\n return this.getCurrentEnvironment();\n },\n\n getApplicationContext: () => {\n return this.getApplicationContext();\n },\n\n getConfig: (key?: string) => {\n return this.getConfiguration(key);\n },\n\n getFrameworkType: () => {\n return this.getFrameworkType();\n },\n\n getProcessType: () => {\n return MidwayProcessTypeEnum.APPLICATION;\n },\n\n getCoreLogger: () => {\n return this.getCoreLogger();\n },\n\n getLogger: (name?: string) => {\n return this.getLogger(name);\n },\n\n createLogger: (name: string, options: LoggerOptions = {}) => {\n return this.createLogger(name, options);\n },\n\n getProjectName: () => {\n return this.getProjectName();\n },\n\n createAnonymousContext: (extendCtx?: CTX) => {\n const ctx = extendCtx || Object.create(this.defaultContext);\n if (!ctx.startTime) {\n ctx.startTime = Date.now();\n }\n if (!ctx.logger) {\n ctx.logger = this.createContextLogger(ctx);\n }\n if (!ctx.requestContext) {\n ctx.requestContext = new MidwayRequestContainer(\n ctx,\n this.getApplicationContext()\n );\n ctx.requestContext.ready();\n }\n if (!ctx.getLogger) {\n ctx.getLogger = name => {\n return this.createContextLogger(ctx, name);\n };\n }\n ctx.setAttr = (key: string, value: any) => {\n ctx.requestContext.setAttr(key, value);\n };\n ctx.getAttr = <T>(key: string): T => {\n return ctx.requestContext.getAttr(key);\n };\n return ctx;\n },\n\n setContextLoggerClass: (BaseContextLogger: any) => {\n return this.setContextLoggerClass(BaseContextLogger);\n },\n\n addConfigObject: (obj: any) => {\n this.configService.addObject(obj);\n },\n\n setAttr: (key: string, value: any) => {\n this.getApplicationContext().setAttr(key, value);\n },\n\n getAttr: <T>(key: string): T => {\n return this.getApplicationContext().getAttr(key);\n },\n useMiddleware: (\n middleware: CommonMiddlewareUnion<CTX, ResOrNext, Next>\n ) => {\n return this.useMiddleware(middleware);\n },\n getMiddleware: (): ContextMiddlewareManager<CTX, ResOrNext, Next> => {\n return this.getMiddleware();\n },\n useFilter: (Filter: CommonFilterUnion<CTX, ResOrNext, Next>) => {\n return this.useFilter(Filter);\n },\n };\n for (const method of whiteList) {\n delete defaultApplicationProperties[method];\n }\n Object.assign(\n this.app,\n defaultApplicationProperties,\n applicationProperties\n );\n }\n\n protected async beforeStop(): Promise<void> {}\n /**\n * @deprecated\n */\n protected async beforeContainerInitialize(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n /**\n * @deprecated\n */\n protected async afterContainerInitialize(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n /**\n * @deprecated\n */\n protected async afterContainerDirectoryLoad(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n /**\n * @deprecated\n */\n protected async afterContainerReady(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n\n public async applyMiddleware<R, N>(\n lastMiddleware?: CommonMiddleware<CTX, R, N>\n ): Promise<MiddlewareRespond<CTX, R, N>> {\n if (!this.composeMiddleware) {\n this.middlewareManager.insertFirst((async (ctx: any, next: any) => {\n let returnResult = undefined;\n try {\n const result = await next();\n returnResult = await this.filterManager.runResultFilter(result, ctx);\n } catch (err) {\n returnResult = await this.filterManager.runErrorFilter(err, ctx);\n }\n if (returnResult.error) {\n throw returnResult.error;\n }\n return returnResult.result;\n }) as any);\n debug(\n `[core]: Compose middleware = [${this.middlewareManager.getNames()}]`\n );\n this.composeMiddleware = await this.middlewareService.compose(\n this.middlewareManager,\n this.app\n );\n await this.filterManager.init(this.applicationContext);\n }\n if (lastMiddleware) {\n return await this.middlewareService.compose(\n [this.composeMiddleware, lastMiddleware],\n this.app\n );\n } else {\n return this.composeMiddleware;\n }\n }\n\n public getLogger(name?: string) {\n return this.loggerService.getLogger(name) ?? this.appLogger;\n }\n\n public getCoreLogger() {\n return this.logger;\n }\n\n public createLogger(name: string, option: LoggerOptions = {}) {\n return this.loggerService.createLogger(name, option);\n }\n\n public getProjectName() {\n return this.informationService.getProjectName();\n }\n\n public getFrameworkName() {\n return this.getFrameworkType().name;\n }\n\n public getDefaultContextLoggerClass(): any {\n return MidwayContextLogger;\n }\n\n public useMiddleware(\n Middleware: CommonMiddlewareUnion<CTX, ResOrNext, Next>\n ) {\n this.middlewareManager.insertLast(Middleware);\n }\n\n public getMiddleware(): ContextMiddlewareManager<CTX, ResOrNext, Next> {\n return this.middlewareManager;\n }\n\n public useFilter(Filter: CommonFilterUnion<CTX, ResOrNext, Next>) {\n return this.filterManager.useFilter(Filter);\n }\n\n protected createMiddlewareManager() {\n return new ContextMiddlewareManager<CTX, ResOrNext, Next>();\n }\n\n protected createFilterManager() {\n return new FilterManager<CTX, ResOrNext, Next>();\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { IMidwayApplication, IMidwayFramework } from '../interface';
2
+ import { FrameworkType } from '@midwayjs/decorator';
3
+ export declare class MidwayApplicationManager {
4
+ private globalFrameworkMap;
5
+ private globalFrameworkTypeMap;
6
+ addFramework(namespace: any, framework: IMidwayFramework<any, any, any>): void;
7
+ getFramework(namespaceOrFrameworkType: string | FrameworkType): IMidwayFramework<any, any, any, unknown, unknown>;
8
+ getApplication(namespaceOrFrameworkType: string | FrameworkType): IMidwayApplication;
9
+ getApplications(namespaces?: Array<string | FrameworkType>): IMidwayApplication[];
10
+ }
11
+ //# sourceMappingURL=applicationManager.d.ts.map
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MidwayApplicationManager = void 0;
10
+ const decorator_1 = require("@midwayjs/decorator");
11
+ let MidwayApplicationManager = class MidwayApplicationManager {
12
+ constructor() {
13
+ this.globalFrameworkMap = new Map();
14
+ this.globalFrameworkTypeMap = new WeakMap();
15
+ }
16
+ addFramework(namespace, framework) {
17
+ this.globalFrameworkMap.set(namespace, framework);
18
+ this.globalFrameworkTypeMap.set(framework.getFrameworkType(), framework);
19
+ }
20
+ getFramework(namespaceOrFrameworkType) {
21
+ if (typeof namespaceOrFrameworkType === 'string') {
22
+ if (this.globalFrameworkMap.has(namespaceOrFrameworkType)) {
23
+ return this.globalFrameworkMap.get(namespaceOrFrameworkType);
24
+ }
25
+ }
26
+ else {
27
+ if (this.globalFrameworkTypeMap.has(namespaceOrFrameworkType)) {
28
+ return this.globalFrameworkTypeMap.get(namespaceOrFrameworkType);
29
+ }
30
+ }
31
+ }
32
+ getApplication(namespaceOrFrameworkType) {
33
+ if (typeof namespaceOrFrameworkType === 'string') {
34
+ if (this.globalFrameworkMap.has(namespaceOrFrameworkType)) {
35
+ return this.globalFrameworkMap
36
+ .get(namespaceOrFrameworkType)
37
+ .getApplication();
38
+ }
39
+ }
40
+ else {
41
+ if (this.globalFrameworkTypeMap.has(namespaceOrFrameworkType)) {
42
+ return this.globalFrameworkTypeMap
43
+ .get(namespaceOrFrameworkType)
44
+ .getApplication();
45
+ }
46
+ }
47
+ }
48
+ getApplications(namespaces) {
49
+ if (!namespaces) {
50
+ return Array.from(this.globalFrameworkMap.values()).map(framework => {
51
+ return framework.getApplication();
52
+ });
53
+ }
54
+ else {
55
+ return namespaces
56
+ .map(namespace => {
57
+ return this.getApplication(namespace);
58
+ })
59
+ .filter(app => {
60
+ return !!app;
61
+ });
62
+ }
63
+ }
64
+ };
65
+ MidwayApplicationManager = __decorate([
66
+ (0, decorator_1.Provide)(),
67
+ (0, decorator_1.Scope)(decorator_1.ScopeEnum.Singleton)
68
+ ], MidwayApplicationManager);
69
+ exports.MidwayApplicationManager = MidwayApplicationManager;
70
+ //# sourceMappingURL=applicationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicationManager.js","sourceRoot":"","sources":["../../src/common/applicationManager.ts"],"names":[],"mappings":";;;;;;;;;AACA,mDAA+E;AAI/E,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAArC;QACU,uBAAkB,GAAG,IAAI,GAAG,EAGjC,CAAC;QAEI,2BAAsB,GAAG,IAAI,OAAO,EAGzC,CAAC;IAsDN,CAAC;IApDQ,YAAY,CAAC,SAAS,EAAE,SAA0C;QACvE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAEM,YAAY,CAAC,wBAAgD;QAClE,IAAI,OAAO,wBAAwB,KAAK,QAAQ,EAAE;YAChD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;aAC9D;SACF;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBAC7D,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;aAClE;SACF;IACH,CAAC;IAEM,cAAc,CACnB,wBAAgD;QAEhD,IAAI,OAAO,wBAAwB,KAAK,QAAQ,EAAE;YAChD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC,kBAAkB;qBAC3B,GAAG,CAAC,wBAAwB,CAAC;qBAC7B,cAAc,EAAE,CAAC;aACrB;SACF;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBAC7D,OAAO,IAAI,CAAC,sBAAsB;qBAC/B,GAAG,CAAC,wBAAwB,CAAC;qBAC7B,cAAc,EAAE,CAAC;aACrB;SACF;IACH,CAAC;IAEM,eAAe,CACpB,UAA0C;QAE1C,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAClE,OAAO,SAAS,CAAC,cAAc,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,UAAU;iBACd,GAAG,CAAC,SAAS,CAAC,EAAE;gBACf,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC,CAAC;iBACD,MAAM,CAAC,GAAG,CAAC,EAAE;gBACZ,OAAO,CAAC,CAAC,GAAG,CAAC;YACf,CAAC,CAAC,CAAC;SACN;IACH,CAAC;CACF,CAAA;AA/DY,wBAAwB;IAFpC,IAAA,mBAAO,GAAE;IACT,IAAA,iBAAK,EAAC,qBAAS,CAAC,SAAS,CAAC;GACd,wBAAwB,CA+DpC;AA/DY,4DAAwB","sourcesContent":["import { IMidwayApplication, IMidwayFramework } from '../interface';\nimport { FrameworkType, Provide, Scope, ScopeEnum } from '@midwayjs/decorator';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayApplicationManager {\n private globalFrameworkMap = new Map<\n string,\n IMidwayFramework<any, any, any>\n >();\n\n private globalFrameworkTypeMap = new WeakMap<\n FrameworkType,\n IMidwayFramework<any, any, any>\n >();\n\n public addFramework(namespace, framework: IMidwayFramework<any, any, any>) {\n this.globalFrameworkMap.set(namespace, framework);\n this.globalFrameworkTypeMap.set(framework.getFrameworkType(), framework);\n }\n\n public getFramework(namespaceOrFrameworkType: string | FrameworkType) {\n if (typeof namespaceOrFrameworkType === 'string') {\n if (this.globalFrameworkMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkMap.get(namespaceOrFrameworkType);\n }\n } else {\n if (this.globalFrameworkTypeMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkTypeMap.get(namespaceOrFrameworkType);\n }\n }\n }\n\n public getApplication(\n namespaceOrFrameworkType: string | FrameworkType\n ): IMidwayApplication {\n if (typeof namespaceOrFrameworkType === 'string') {\n if (this.globalFrameworkMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkMap\n .get(namespaceOrFrameworkType)\n .getApplication();\n }\n } else {\n if (this.globalFrameworkTypeMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkTypeMap\n .get(namespaceOrFrameworkType)\n .getApplication();\n }\n }\n }\n\n public getApplications(\n namespaces?: Array<string | FrameworkType>\n ): IMidwayApplication[] {\n if (!namespaces) {\n return Array.from(this.globalFrameworkMap.values()).map(framework => {\n return framework.getApplication();\n });\n } else {\n return namespaces\n .map(namespace => {\n return this.getApplication(namespace);\n })\n .filter(app => {\n return !!app;\n });\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,4BAA4B,CAAC;AAChE;;;GAGG;AAEU,QAAA,IAAI,GAAG;IAClB,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,OAAO;IACtB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,KAAK;IAClB,sBAAsB,EAAE,iBAAiB;IACzC,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;IACpB,qBAAqB,EAAE,eAAe;IAEtC,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,OAAO;IACxB,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,OAAO;IACxB,cAAc,EAAE,MAAM;IACtB,kBAAkB,EAAE,UAAU;IAC9B,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,OAAO;IAExB,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,oBAAoB,EAAE,YAAY;IAClC,iBAAiB,EAAE,SAAS;CAC7B,CAAC;AAEW,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC","sourcesContent":["export const FUNCTION_INJECT_KEY = 'midway:function_inject_key';\n/**\n * 静态参数\n *\n */\n\nexport const KEYS = {\n OBJECTS_ELEMENT: 'objects',\n OBJECT_ELEMENT: 'object',\n IMPORT_ELEMENT: 'import',\n PROPERTY_ELEMENT: 'property',\n LIST_ELEMENT: 'list',\n MAP_ELEMENT: 'map',\n ENTRY_ELEMENT: 'entry',\n VALUE_ELEMENT: 'value',\n PROPS_ELEMENT: 'props',\n PROP_ELEMENT: 'prop',\n SET_ELEMENT: 'set',\n CONSTRUCTORARG_ELEMENT: 'constructor-arg',\n REF_ELEMENT: 'ref',\n JSON_ELEMENT: 'json',\n CONFIGURATION_ELEMENT: 'configuration',\n\n ID_ATTRIBUTE: 'id',\n PATH_ATTRIBUTE: 'path',\n DIRECT_ATTRIBUTE: 'direct',\n AUTOWIRE_ATTRIBUTE: 'autowire',\n ASYNC_ATTRIBUTE: 'async',\n NAME_ATTRIBUTE: 'name',\n REF_ATTRIBUTE: 'ref',\n KEY_ATTRIBUTE: 'key',\n VALUE_ATTRIBUTE: 'value',\n TYPE_ATTRIBUTE: 'type',\n EXTERNAL_ATTRIBUTE: 'external',\n OBJECT_ATTRIBUTE: 'object',\n RESOURCE_ATTRIBUTE: 'resource',\n SCOPE_ATTRIBUTE: 'scope',\n\n ASPECT_ELEMENT: 'aspect',\n AROUND_ELEMENT: 'around',\n EXPRESSION_ATTRIBUTE: 'expression',\n EXECUTE_ATTRIBUTE: 'execute',\n};\n\nexport const VALUE_TYPE = {\n STRING: 'string',\n DATE: 'date',\n NUMBER: 'number',\n INTEGER: 'int',\n TEMPLATE: 'template',\n MANAGED: 'managed',\n OBJECT: 'object', // 仅仅在解析时使用\n BOOLEAN: 'boolean',\n};\n"]}
@@ -0,0 +1,11 @@
1
+ export declare abstract class DataListener<T> {
2
+ private innerData;
3
+ protected init(): Promise<void>;
4
+ abstract initData(): T;
5
+ abstract onData(callback: (data: T) => void): any;
6
+ protected setData(data: T): void;
7
+ getData(): T;
8
+ stop(): Promise<void>;
9
+ protected destroyListener(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=dataListener.d.ts.map
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DataListener = void 0;
13
+ const decorator_1 = require("@midwayjs/decorator");
14
+ class DataListener {
15
+ async init() {
16
+ this.innerData = await this.initData();
17
+ await this.onData(this.setData.bind(this));
18
+ }
19
+ setData(data) {
20
+ this.innerData = data;
21
+ }
22
+ getData() {
23
+ return this.innerData;
24
+ }
25
+ async stop() {
26
+ await this.destroyListener();
27
+ }
28
+ async destroyListener() { }
29
+ }
30
+ __decorate([
31
+ (0, decorator_1.Init)(),
32
+ __metadata("design:type", Function),
33
+ __metadata("design:paramtypes", []),
34
+ __metadata("design:returntype", Promise)
35
+ ], DataListener.prototype, "init", null);
36
+ __decorate([
37
+ (0, decorator_1.Destroy)(),
38
+ __metadata("design:type", Function),
39
+ __metadata("design:paramtypes", []),
40
+ __metadata("design:returntype", Promise)
41
+ ], DataListener.prototype, "stop", null);
42
+ exports.DataListener = DataListener;
43
+ //# sourceMappingURL=dataListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataListener.js","sourceRoot":"","sources":["../../src/common/dataListener.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAoD;AAEpD,MAAsB,YAAY;IAItB,KAAK,CAAC,IAAI;QAClB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAKS,OAAO,CAAC,IAAO;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAGM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,eAAe,KAAI,CAAC;CACrC;AAtBC;IADC,IAAA,gBAAI,GAAE;;;;wCAIN;AAcD;IADC,IAAA,mBAAO,GAAE;;;;wCAGT;AAvBH,oCA0BC","sourcesContent":["import { Destroy, Init } from '@midwayjs/decorator';\n\nexport abstract class DataListener<T> {\n private innerData: T;\n\n @Init()\n protected async init() {\n this.innerData = await this.initData();\n await this.onData(this.setData.bind(this));\n }\n\n abstract initData(): T;\n abstract onData(callback: (data: T) => void);\n\n protected setData(data: T): void {\n this.innerData = data;\n }\n\n public getData(): T {\n return this.innerData;\n }\n\n @Destroy()\n public async stop() {\n await this.destroyListener();\n }\n\n protected async destroyListener() {}\n}\n"]}
@@ -47,7 +47,7 @@ class DirectoryFileDetector extends AbstractFileDetector {
47
47
  continue;
48
48
  }
49
49
  }
50
- else if ((0, decorator_1.isRegExp)(resolveFilter.pattern)) {
50
+ else if (decorator_1.Types.isRegExp(resolveFilter.pattern)) {
51
51
  if (resolveFilter.pattern.test(file)) {
52
52
  const exports = resolveFilter.ignoreRequire
53
53
  ? undefined
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDetector.js","sourceRoot":"","sources":["../../src/common/fileDetector.ts"],"names":[],"mappings":"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","sourcesContent":["import { IFileDetector, IMidwayContainer } from '../interface';\nimport { Types, ResolveFilter } from '@midwayjs/decorator';\nimport { run } from '@midwayjs/glob';\n\nexport abstract class AbstractFileDetector<T> implements IFileDetector {\n options: T;\n constructor(options) {\n this.options = options;\n }\n\n abstract run(container: IMidwayContainer);\n}\n\nconst DEFAULT_PATTERN = ['**/**.ts', '**/**.tsx', '**/**.js'];\nconst DEFAULT_IGNORE_PATTERN = [\n '**/**.d.ts',\n '**/logs/**',\n '**/run/**',\n '**/public/**',\n '**/app/view/**',\n '**/app/views/**',\n '**/app/extend/**',\n '**/node_modules/**',\n '**/**.test.ts',\n '**/**.test.js',\n '**/__test__/**',\n];\n\nexport class DirectoryFileDetector extends AbstractFileDetector<{\n loadDir: string | string[];\n pattern: string | string[];\n ignore: string | string[];\n namespace: string;\n}> {\n private directoryFilterArray: ResolveFilter[] = [];\n\n run(container) {\n const loadDirs = [].concat(this.options.loadDir || []);\n\n for (const dir of loadDirs) {\n const fileResults = run(\n DEFAULT_PATTERN.concat(this.options.pattern || []),\n {\n cwd: dir,\n ignore: DEFAULT_IGNORE_PATTERN.concat(this.options.ignore || []),\n }\n );\n\n for (const file of fileResults) {\n if (this.directoryFilterArray.length) {\n for (const resolveFilter of this.directoryFilterArray) {\n if (typeof resolveFilter.pattern === 'string') {\n if (file.includes(resolveFilter.pattern)) {\n const exports = resolveFilter.ignoreRequire\n ? undefined\n : require(file);\n resolveFilter.filter(exports, file, this);\n continue;\n }\n } else if (Types.isRegExp(resolveFilter.pattern)) {\n if ((resolveFilter.pattern as RegExp).test(file)) {\n const exports = resolveFilter.ignoreRequire\n ? undefined\n : require(file);\n resolveFilter.filter(exports, file, this);\n continue;\n }\n }\n\n const exports = require(file);\n // add module to set\n container.bindClass(exports, {\n namespace: this.options.namespace,\n srcPath: file,\n createFrom: 'file',\n });\n }\n } else {\n const exports = require(file);\n // add module to set\n container.bindClass(exports, {\n namespace: this.options.namespace,\n srcPath: file,\n createFrom: 'file',\n });\n }\n }\n }\n }\n}\n\nexport class CustomModuleDetector extends AbstractFileDetector<{\n modules: any[];\n namespace: string;\n}> {\n run(container) {\n for (const module of this.options.modules) {\n container.bindClass(module, {\n namespace: this.options.namespace,\n createFrom: 'module',\n });\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterManager.js","sourceRoot":"","sources":["../../src/common/filterManager.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CATCH_KEY,\n getClassMetadata,\n MATCH_KEY,\n MatchPattern,\n} from '@midwayjs/decorator';\nimport {\n CommonFilterUnion,\n IFilter,\n IMidwayContainer,\n IMidwayContext,\n} from '../interface';\nimport { toPathMatch } from '../util';\n\nexport class FilterManager<\n CTX extends IMidwayContext = IMidwayContext,\n R = any,\n N = any\n> {\n private errFilterList: Array<new (...args) => IFilter<CTX, R, N>> = [];\n private successFilterList: Array<new (...args) => IFilter<CTX, R, N>> = [];\n private exceptionMap: WeakMap<Error, IFilter<CTX, R, N>> = new WeakMap();\n private defaultErrFilter = undefined;\n private matchFnList = [];\n\n public useFilter(Filters: CommonFilterUnion<CTX, R, N>) {\n if (!Array.isArray(Filters)) {\n Filters = [Filters];\n }\n for (const Filter of Filters) {\n if (getClassMetadata(CATCH_KEY, Filter)) {\n this.errFilterList.push(Filter);\n }\n if (getClassMetadata(MATCH_KEY, Filter)) {\n this.successFilterList.push(Filter);\n }\n }\n }\n\n public async init(applicationContext: IMidwayContainer) {\n // for catch exception\n for (const FilterClass of this.errFilterList) {\n const filter = await applicationContext.getAsync(FilterClass);\n const exceptionMetadata = getClassMetadata(CATCH_KEY, FilterClass);\n if (exceptionMetadata && exceptionMetadata.catchTargets) {\n for (const Exception of exceptionMetadata.catchTargets) {\n this.exceptionMap.set(Exception, filter);\n }\n } else {\n // default filter\n this.defaultErrFilter = filter;\n }\n }\n\n // for success return\n for (const FilterClass of this.successFilterList) {\n const filter = await applicationContext.getAsync(FilterClass);\n const matchMetadata: {\n matchPattern?: MatchPattern<CTX>;\n } = getClassMetadata(MATCH_KEY, FilterClass);\n if (matchMetadata && matchMetadata.matchPattern) {\n this.matchFnList.push({\n matchFn: toPathMatch(matchMetadata.matchPattern),\n target: filter,\n });\n }\n }\n }\n\n public async runErrorFilter(\n err: Error,\n ctx: CTX,\n res?: R,\n next?: N\n ): Promise<{\n result: any;\n error: any;\n }> {\n let result, error;\n if (this.exceptionMap.has((err as any).constructor)) {\n const filter = this.exceptionMap.get((err as any).constructor);\n result = await filter.catch(err, ctx, res, next);\n } else if (this.defaultErrFilter) {\n result = await this.defaultErrFilter.catch(err, ctx, res, next);\n } else {\n error = err;\n }\n return {\n result,\n error,\n };\n }\n\n public async runResultFilter(\n result: any,\n ctx: CTX,\n res?: R,\n next?: N\n ): Promise<{\n result: any;\n error: any;\n }> {\n let returnValue = result;\n\n for (const matchData of this.matchFnList) {\n if (matchData.matchFn(ctx, res)) {\n returnValue = await matchData.target.match(returnValue, ctx, res, next);\n }\n }\n\n return {\n result: returnValue,\n error: undefined,\n };\n }\n}\n"]}
@@ -151,8 +151,8 @@ class ContextMiddlewareManager extends Array {
151
151
  * @param middleware
152
152
  */
153
153
  getMiddlewareName(middleware) {
154
- var _a;
155
- return (_a = middleware._name) !== null && _a !== void 0 ? _a : middleware.name;
154
+ var _a, _b;
155
+ return ((_b = (_a = (middleware.getName && middleware.getName())) !== null && _a !== void 0 ? _a : middleware._name) !== null && _b !== void 0 ? _b : middleware.name);
156
156
  }
157
157
  /**
158
158
  * remove a middleware
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareManager.js","sourceRoot":"","sources":["../../src/common/middlewareManager.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CommonMiddleware,\n CommonMiddlewareUnion,\n IMidwayContext,\n} from '../interface';\n\nexport class ContextMiddlewareManager<\n CTX extends IMidwayContext,\n R,\n N\n> extends Array<CommonMiddleware<CTX, R, N>> {\n /**\n * insert a middleware or middleware array to first\n * @param middleware\n */\n public insertFirst(middleware: CommonMiddlewareUnion<CTX, R, N>) {\n if (Array.isArray(middleware)) {\n this.unshift(...middleware);\n } else {\n this.unshift(middleware);\n }\n }\n\n /**\n * insert a middleware or middleware array to last\n * @param middleware\n */\n public insertLast(middleware: CommonMiddlewareUnion<CTX, R, N>) {\n if (Array.isArray(middleware)) {\n this.push(...middleware);\n } else {\n this.push(middleware);\n }\n }\n\n /**\n * insert a middleware or middleware array to after another middleware\n * @param middleware\n * @param idxOrBeforeMiddleware\n */\n public insertBefore(\n middleware: CommonMiddlewareUnion<CTX, R, N>,\n idxOrBeforeMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n if (typeof idxOrBeforeMiddleware !== 'number') {\n idxOrBeforeMiddleware = this.findItemIndex(idxOrBeforeMiddleware);\n }\n if (Array.isArray(middleware)) {\n this.splice(idxOrBeforeMiddleware, 0, ...middleware);\n } else {\n this.splice(idxOrBeforeMiddleware, 0, middleware);\n }\n }\n\n /**\n * insert a middleware or middleware array to after another middleware\n * @param middleware\n * @param idxOrAfterMiddleware\n */\n public insertAfter(\n middleware: CommonMiddlewareUnion<CTX, R, N>,\n idxOrAfterMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n if (typeof idxOrAfterMiddleware !== 'number') {\n idxOrAfterMiddleware = this.findItemIndex(idxOrAfterMiddleware);\n }\n if (Array.isArray(middleware)) {\n this.splice(idxOrAfterMiddleware + 1, 0, ...middleware);\n } else {\n this.splice(idxOrAfterMiddleware + 1, 0, middleware);\n }\n }\n\n /**\n * move a middleware after another middleware\n * @param middlewareOrName\n * @param afterMiddleware\n */\n public findAndInsertAfter(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string,\n afterMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n middlewareOrName = this.findItem(middlewareOrName);\n afterMiddleware = this.findItem(afterMiddleware);\n if (\n !middlewareOrName ||\n !afterMiddleware ||\n middlewareOrName === afterMiddleware\n ) {\n return;\n }\n if (afterMiddleware) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertAfter(mw, afterMiddleware);\n }\n }\n }\n\n /**\n * move a middleware before another middleware\n * @param middlewareOrName\n * @param beforeMiddleware\n */\n public findAndInsertBefore(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string,\n beforeMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n middlewareOrName = this.findItem(middlewareOrName);\n beforeMiddleware = this.findItem(beforeMiddleware);\n if (\n !middlewareOrName ||\n !beforeMiddleware ||\n middlewareOrName === beforeMiddleware\n ) {\n return;\n }\n if (beforeMiddleware) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertBefore(mw, beforeMiddleware);\n }\n }\n }\n\n /**\n * find middleware and move to first\n * @param middlewareOrName\n */\n public findAndInsertFirst(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string\n ) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertFirst(mw);\n }\n }\n\n /**\n * find middleware and move to last\n * @param middlewareOrName\n */\n public findAndInsertLast(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string\n ) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertLast(mw);\n }\n }\n\n /**\n * find a middleware and return index\n * @param middlewareOrName\n */\n public findItemIndex(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string | number\n ): number {\n if (typeof middlewareOrName === 'number') {\n return middlewareOrName;\n } else if (typeof middlewareOrName === 'string') {\n return this.findIndex(\n item => this.getMiddlewareName(item) === middlewareOrName\n );\n } else {\n return this.findIndex(item => item === middlewareOrName);\n }\n }\n\n public findItem(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string | number\n ): CommonMiddleware<CTX, R, N> {\n if (typeof middlewareOrName === 'number') {\n if (middlewareOrName >= 0 && middlewareOrName <= this.length - 1) {\n return this[middlewareOrName as number];\n }\n } else if (typeof middlewareOrName === 'string') {\n return this.find(\n item => this.getMiddlewareName(item) === middlewareOrName\n );\n } else {\n return middlewareOrName;\n }\n }\n\n /**\n * get name from middleware\n * @param middleware\n */\n public getMiddlewareName(middleware: CommonMiddleware<CTX, R, N>): string {\n return (\n ((middleware as any).getName && (middleware as any).getName()) ??\n (middleware as any)._name ??\n middleware.name\n );\n }\n\n /**\n * remove a middleware\n * @param middlewareOrNameOrIdx\n */\n public remove(\n middlewareOrNameOrIdx: CommonMiddleware<CTX, R, N> | string | number\n ): CommonMiddleware<CTX, R, N> {\n if (\n typeof middlewareOrNameOrIdx === 'number' &&\n middlewareOrNameOrIdx !== -1\n ) {\n return this.splice(middlewareOrNameOrIdx, 1)[0];\n } else {\n const idx = this.findItemIndex(\n middlewareOrNameOrIdx as CommonMiddleware<CTX, R, N> | string\n );\n if (idx !== -1) {\n return this.splice(idx, 1)[0];\n }\n }\n }\n\n /**\n * get middleware name list\n */\n public getNames(): string[] {\n return this.map(item => {\n return this.getMiddlewareName(item);\n });\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceFactory.js","sourceRoot":"","sources":["../../src/common/serviceFactory.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC;;GAEG;AACH,MAAsB,cAAc;IAApC;QACY,YAAO,GAAmB,IAAI,GAAG,EAAE,CAAC;QACpC,YAAO,GAAG,EAAE,CAAC;IAgDzB,CAAC;IA9CW,KAAK,CAAC,WAAW,CAAC,UAAe,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,CACJ,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EACpC,UAAU,IAAI,CAAC,OAAO,EAAE,sDAAsD,CAC/E,CAAC;QAEF,qEAAqE;QACrE,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACrD,OAAO;SACR;QAED,8CAA8C;QAC9C,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;aACpD;SACF;IACH,CAAC;IAEM,GAAG,CAAQ,EAAE,GAAG,SAAS;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAiB,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,UAAW;QAC7C,0DAA0D;QAC1D,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE;YACV,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;aACtC;YACD,OAAO,MAAM,CAAC;SACf;IACH,CAAC;IAIS,KAAK,CAAC,aAAa,CAAC,MAAS,IAAkB,CAAC;IAEnD,KAAK,CAAC,IAAI;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YACzC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACjC;IACH,CAAC;CACF;AAlDD,wCAkDC","sourcesContent":["import * as assert from 'assert';\n\n/**\n * 多客户端工厂实现\n */\nexport abstract class ServiceFactory<T> {\n protected clients: Map<string, T> = new Map();\n protected options = {};\n\n protected async initClients(options: any = {}): Promise<void> {\n this.options = options;\n assert(\n !(options.client && options.clients),\n `midway:${this.getName()} can not set options.client and options.clients both`\n );\n\n // alias app[name] as client, but still support createInstance method\n if (options.client) {\n await this.createInstance(options.client, 'default');\n return;\n }\n\n // multi client, use app[name].getInstance(id)\n if (options.clients) {\n for (const id of Object.keys(options.clients)) {\n await this.createInstance(options.clients[id], id);\n }\n }\n }\n\n public get<U = T>(id = 'default'): U {\n return this.clients.get(id) as unknown as U;\n }\n\n public async createInstance(config, clientName?): Promise<T | void> {\n // options.default will be merge in to options.clients[id]\n config = Object.assign({}, this.options['default'], config);\n const client = await this.createClient(config, clientName);\n if (client) {\n if (clientName) {\n this.clients.set(clientName, client);\n }\n return client;\n }\n }\n\n public abstract getName(): string;\n protected abstract createClient(config, clientName): Promise<T | void>;\n protected async destroyClient(client: T): Promise<void> {}\n\n public async stop(): Promise<void> {\n for (const value of this.clients.values()) {\n await this.destroyClient(value);\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggerCollector.js","sourceRoot":"","sources":["../../src/common/triggerCollector.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAE1D,MAAa,0BAA2B,SAAQ,uCAAkB;IACtD,KAAK,CAAC,OAAO;QACrB,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAC1C,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,8CAA8C;QAC9C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YAC7C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;gBAC7B,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;oBAChC,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG;wBACpC,KAAK;wBACL,MAAM;wBACN,KAAK;wBACL,QAAQ;wBACR,MAAM;wBACN,OAAO;wBACP,SAAS;qBACV,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAES,YAAY,CAAC,MAAM;QAC3B,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAES,oBAAoB,CAAC,MAAM;QACnC,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;CACF;AAjCD,gEAiCC","sourcesContent":["import { WebRouterCollector } from './webRouterCollector';\n\nexport class ServerlessTriggerCollector extends WebRouterCollector {\n protected async analyze() {\n this.options.includeFunctionRouter = true;\n await super.analyze();\n // requestMethod all transform to other method\n for (const routerInfo of this.routes.values()) {\n for (const info of routerInfo) {\n if (info.requestMethod === 'all') {\n info.functionTriggerMetadata.method = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'head',\n 'patch',\n 'options',\n ];\n }\n }\n }\n }\n\n protected collectRoute(module) {\n super.collectRoute(module, true);\n }\n\n protected collectFunctionRoute(module) {\n super.collectFunctionRoute(module, true);\n }\n\n async getFunctionList(): Promise<any[]> {\n return this.getFlattenRouterTable();\n }\n}\n"]}
@@ -1,19 +1,9 @@
1
- /**
2
- * wrap controller string to middleware function
3
- * @param controllerMapping like FooController.index
4
- * @param routeArgsInfo
5
- * @param routerResponseData
6
- */
7
- import { MidwayFrameworkType } from '@midwayjs/decorator';
8
- import { IMidwayContainer, RouterInfo } from '../index';
9
- import { ILogger } from '@midwayjs/logger';
1
+ import { RouterInfo, IMidwayApplication } from '../index';
10
2
  export declare abstract class WebControllerGenerator<Router extends {
11
3
  use: (...args: any[]) => void;
12
4
  }> {
13
- readonly applicationContext: IMidwayContainer;
14
- readonly frameworkType: MidwayFrameworkType;
15
- readonly logger?: ILogger;
16
- protected constructor(applicationContext: IMidwayContainer, frameworkType: MidwayFrameworkType, logger?: ILogger);
5
+ readonly app: IMidwayApplication;
6
+ protected constructor(app: IMidwayApplication);
17
7
  /**
18
8
  * wrap controller string to middleware function
19
9
  * @param routeInfo
@@ -22,6 +12,5 @@ export declare abstract class WebControllerGenerator<Router extends {
22
12
  loadMidwayController(globalPrefix: string, routerHandler?: (newRouter: Router) => void): Promise<void>;
23
13
  abstract createRouter(routerOptions: any): Router;
24
14
  abstract generateController(routeInfo: RouterInfo): any;
25
- protected handlerWebMiddleware(middlewares: any[], handlerCallback: (middlewareImpl: any) => void): Promise<void>;
26
15
  }
27
16
  //# sourceMappingURL=webGenerator.d.ts.map
@@ -12,10 +12,8 @@ const index_1 = require("../index");
12
12
  const util = require("util");
13
13
  const debug = util.debuglog('midway:debug');
14
14
  class WebControllerGenerator {
15
- constructor(applicationContext, frameworkType, logger) {
16
- this.applicationContext = applicationContext;
17
- this.frameworkType = frameworkType;
18
- this.logger = logger;
15
+ constructor(app) {
16
+ this.app = app;
19
17
  }
20
18
  /**
21
19
  * wrap controller string to middleware function
@@ -65,30 +63,36 @@ class WebControllerGenerator {
65
63
  });
66
64
  const routerTable = await collector.getRouterTable();
67
65
  const routerList = await collector.getRoutePriorityList();
66
+ const applicationContext = this.app.getApplicationContext();
67
+ const logger = this.app.getCoreLogger();
68
+ const middlewareService = applicationContext.get(index_1.MidwayMiddlewareService);
68
69
  for (const routerInfo of routerList) {
69
70
  // bind controller first
70
- this.applicationContext.bindClass(routerInfo.routerModule);
71
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug(`Load Controller "${routerInfo.controllerId}", prefix=${routerInfo.prefix}`);
72
- debug(`[core:webGenerator]: Load Controller "${routerInfo.controllerId}", prefix=${routerInfo.prefix}`);
71
+ applicationContext.bindClass(routerInfo.routerModule);
72
+ logger.debug(`Load Controller "${routerInfo.controllerId}", prefix=${routerInfo.prefix}`);
73
+ debug(`[core]: Load Controller "${routerInfo.controllerId}", prefix=${routerInfo.prefix}`);
73
74
  // new router
74
75
  const newRouter = this.createRouter({
75
76
  prefix: routerInfo.prefix,
76
77
  ...routerInfo.routerOptions,
77
78
  });
78
79
  // add router middleware
79
- await this.handlerWebMiddleware(routerInfo.middleware, middlewareImpl => {
80
- newRouter.use(middlewareImpl);
81
- });
80
+ routerInfo.middleware = (_a = routerInfo.middleware) !== null && _a !== void 0 ? _a : [];
81
+ if (routerInfo.middleware.length) {
82
+ const routerMiddlewareFn = await middlewareService.compose(routerInfo.middleware, this.app);
83
+ newRouter.use(routerMiddlewareFn);
84
+ }
82
85
  // add route
83
86
  const routes = routerTable.get(routerInfo.prefix);
84
87
  for (const routeInfo of routes) {
85
88
  // get middleware
86
- const middlewares2 = routeInfo.middleware;
87
89
  const methodMiddlewares = [];
88
- await this.handlerWebMiddleware(middlewares2, middlewareImpl => {
89
- methodMiddlewares.push(middlewareImpl);
90
- });
91
- if (this.frameworkType === decorator_1.MidwayFrameworkType.WEB_KOA) {
90
+ routeInfo.middleware = (_b = routeInfo.middleware) !== null && _b !== void 0 ? _b : [];
91
+ if (routeInfo.middleware.length) {
92
+ const routeMiddlewareFn = await middlewareService.compose(routeInfo.middleware, this.app);
93
+ methodMiddlewares.push(routeMiddlewareFn);
94
+ }
95
+ if (this.app.getFrameworkType() === decorator_1.MidwayFrameworkType.WEB_KOA) {
92
96
  if (typeof routeInfo.url === 'string' && /\*$/.test(routeInfo.url)) {
93
97
  routeInfo.url = routeInfo.url.replace('*', '(.*)');
94
98
  }
@@ -99,8 +103,8 @@ class WebControllerGenerator {
99
103
  ...methodMiddlewares,
100
104
  this.generateController(routeInfo),
101
105
  ];
102
- (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Load Router "${routeInfo.requestMethod.toUpperCase()} ${routeInfo.url}"`);
103
- debug(`[core:webGenerator]: Load Router "${routeInfo.requestMethod.toUpperCase()} ${routeInfo.url}"`);
106
+ logger.debug(`Load Router "${routeInfo.requestMethod.toUpperCase()} ${routeInfo.url}"`);
107
+ debug(`[core]: Load Router "${routeInfo.requestMethod.toUpperCase()} ${routeInfo.url}"`);
104
108
  // apply controller from request context
105
109
  // eslint-disable-next-line prefer-spread
106
110
  newRouter[routeInfo.requestMethod].apply(newRouter, routerArgs);
@@ -108,22 +112,6 @@ class WebControllerGenerator {
108
112
  routerHandler && routerHandler(newRouter);
109
113
  }
110
114
  }
111
- async handlerWebMiddleware(middlewares, handlerCallback) {
112
- if (middlewares && middlewares.length) {
113
- for (const middleware of middlewares) {
114
- if (typeof middleware === 'function') {
115
- // web function middleware
116
- handlerCallback(middleware);
117
- }
118
- else {
119
- const middlewareImpl = await this.applicationContext.getAsync(middleware);
120
- if (middlewareImpl && typeof middlewareImpl.resolve === 'function') {
121
- handlerCallback(middlewareImpl.resolve());
122
- }
123
- }
124
- }
125
- }
126
- }
127
115
  }
128
116
  exports.WebControllerGenerator = WebControllerGenerator;
129
117
  //# sourceMappingURL=webGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webGenerator.js","sourceRoot":"","sources":["../../src/common/webGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * wrap controller string to middleware function\n * @param controllerMapping like FooController.index\n * @param routeArgsInfo\n * @param routerResponseData\n */\nimport {\n MidwayFrameworkType,\n WEB_RESPONSE_CONTENT_TYPE,\n WEB_RESPONSE_HEADER,\n WEB_RESPONSE_HTTP_CODE,\n WEB_RESPONSE_REDIRECT,\n} from '@midwayjs/decorator';\nimport {\n WebRouterCollector,\n RouterInfo,\n MidwayMiddlewareService,\n IMidwayApplication,\n} from '../index';\nimport * as util from 'util';\n\nconst debug = util.debuglog('midway:debug');\n\nexport abstract class WebControllerGenerator<\n Router extends { use: (...args) => void }\n> {\n protected constructor(readonly app: IMidwayApplication) {}\n\n /**\n * wrap controller string to middleware function\n * @param routeInfo\n */\n public generateKoaController(routeInfo: RouterInfo) {\n return async (ctx, next) => {\n const args = [ctx, next];\n const controller = await ctx.requestContext.getAsync(routeInfo.id);\n // eslint-disable-next-line prefer-spread\n const result = await controller[routeInfo.method].apply(controller, args);\n if (result !== undefined) {\n ctx.body = result;\n }\n\n if (ctx.body === undefined && !(ctx.response as any)._explicitStatus) {\n ctx.body = undefined;\n }\n\n // implement response decorator\n if (\n Array.isArray(routeInfo.responseMetadata) &&\n routeInfo.responseMetadata.length\n ) {\n for (const routerRes of routeInfo.responseMetadata) {\n switch (routerRes.type) {\n case WEB_RESPONSE_HTTP_CODE:\n ctx.status = routerRes.code;\n break;\n case WEB_RESPONSE_HEADER:\n for (const key in routerRes?.setHeaders || {}) {\n ctx.set(key, routerRes.setHeaders[key]);\n }\n break;\n case WEB_RESPONSE_CONTENT_TYPE:\n ctx.type = routerRes.contentType;\n break;\n case WEB_RESPONSE_REDIRECT:\n ctx.status = routerRes.code;\n ctx.redirect(routerRes.url);\n return;\n }\n }\n }\n };\n }\n\n public async loadMidwayController(\n globalPrefix: string,\n routerHandler?: (newRouter: Router) => void\n ): Promise<void> {\n const collector = new WebRouterCollector('', {\n globalPrefix,\n });\n const routerTable = await collector.getRouterTable();\n const routerList = await collector.getRoutePriorityList();\n const applicationContext = this.app.getApplicationContext();\n const logger = this.app.getCoreLogger();\n const middlewareService = applicationContext.get(MidwayMiddlewareService);\n\n for (const routerInfo of routerList) {\n // bind controller first\n applicationContext.bindClass(routerInfo.routerModule);\n\n logger.debug(\n `Load Controller \"${routerInfo.controllerId}\", prefix=${routerInfo.prefix}`\n );\n\n debug(\n `[core]: Load Controller \"${routerInfo.controllerId}\", prefix=${routerInfo.prefix}`\n );\n\n // new router\n const newRouter: Router = this.createRouter({\n prefix: routerInfo.prefix,\n ...routerInfo.routerOptions,\n });\n\n // add router middleware\n routerInfo.middleware = routerInfo.middleware ?? [];\n if (routerInfo.middleware.length) {\n const routerMiddlewareFn = await middlewareService.compose(\n routerInfo.middleware,\n this.app\n );\n newRouter.use(routerMiddlewareFn);\n }\n\n // add route\n const routes = routerTable.get(routerInfo.prefix);\n for (const routeInfo of routes) {\n // get middleware\n const methodMiddlewares = [];\n\n routeInfo.middleware = routeInfo.middleware ?? [];\n if (routeInfo.middleware.length) {\n const routeMiddlewareFn = await middlewareService.compose(\n routeInfo.middleware,\n this.app\n );\n methodMiddlewares.push(routeMiddlewareFn);\n }\n\n if (this.app.getFrameworkType() === MidwayFrameworkType.WEB_KOA) {\n if (typeof routeInfo.url === 'string' && /\\*$/.test(routeInfo.url)) {\n routeInfo.url = routeInfo.url.replace('*', '(.*)');\n }\n }\n\n const routerArgs = [\n routeInfo.routerName,\n routeInfo.url,\n ...methodMiddlewares,\n this.generateController(routeInfo),\n ];\n\n logger.debug(\n `Load Router \"${routeInfo.requestMethod.toUpperCase()} ${\n routeInfo.url\n }\"`\n );\n\n debug(\n `[core]: Load Router \"${routeInfo.requestMethod.toUpperCase()} ${\n routeInfo.url\n }\"`\n );\n\n // apply controller from request context\n // eslint-disable-next-line prefer-spread\n newRouter[routeInfo.requestMethod].apply(newRouter, routerArgs);\n }\n\n routerHandler && routerHandler(newRouter);\n }\n }\n\n abstract createRouter(routerOptions): Router;\n abstract generateController(routeInfo: RouterInfo);\n}\n"]}
@@ -6,6 +6,7 @@ const util_1 = require("../util");
6
6
  const container_1 = require("../context/container");
7
7
  const fileDetector_1 = require("./fileDetector");
8
8
  const util = require("util");
9
+ const error_1 = require("../error");
9
10
  const debug = util.debuglog('midway:debug');
10
11
  class WebRouterCollector {
11
12
  constructor(baseDir = '', options = {}) {
@@ -57,7 +58,7 @@ class WebRouterCollector {
57
58
  collectRoute(module, functionMeta = false) {
58
59
  var _a;
59
60
  const controllerId = (0, decorator_1.getProviderName)(module);
60
- debug(`[core:webCollector]: Found Controller ${controllerId}.`);
61
+ debug(`[core]: Found Controller ${controllerId}.`);
61
62
  const id = (0, decorator_1.getProviderUUId)(module);
62
63
  const controllerOption = (0, decorator_1.getClassMetadata)(decorator_1.CONTROLLER_KEY, module);
63
64
  let priority;
@@ -70,6 +71,9 @@ class WebRouterCollector {
70
71
  if (controllerIgnoreGlobalPrefix) {
71
72
  prefix = ignorePrefix;
72
73
  }
74
+ if (/\*/.test(prefix)) {
75
+ throw new error_1.MidwayCommonError(`Router prefix ${prefix} can't set string with *`);
76
+ }
73
77
  // set prefix
74
78
  if (!this.routes.has(prefix)) {
75
79
  this.routes.set(prefix, []);
@@ -228,7 +232,7 @@ class WebRouterCollector {
228
232
  return urlMatchList
229
233
  .map(item => {
230
234
  const urlString = item.url.toString();
231
- const weightArr = (0, decorator_1.isRegExp)(item.url)
235
+ const weightArr = decorator_1.Types.isRegExp(item.url)
232
236
  ? urlString.split('\\/')
233
237
  : urlString.split('/');
234
238
  let weight = 0;
@@ -315,7 +319,7 @@ class WebRouterCollector {
315
319
  item.requestMethod === routerInfo.requestMethod);
316
320
  });
317
321
  if (matched && matched.length) {
318
- throw new Error(`Duplicate router "${routerInfo.requestMethod} ${routerInfo.url}" at "${matched[0].handlerName}" and "${routerInfo.handlerName}"`);
322
+ throw new error_1.MidwayDuplicateRouteError(`${routerInfo.requestMethod} ${routerInfo.url}`, `${matched[0].handlerName}`, `${routerInfo.handlerName}`);
319
323
  }
320
324
  prefixList.push(routerInfo);
321
325
  }