@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.
- package/dist/baseFramework.d.ts +2 -1
- package/dist/baseFramework.js +13 -10
- package/dist/baseFramework.js.map +1 -0
- package/dist/common/applicationManager.d.ts +11 -0
- package/dist/common/applicationManager.js +70 -0
- package/dist/common/applicationManager.js.map +1 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/dataListener.d.ts +11 -0
- package/dist/common/dataListener.js +43 -0
- package/dist/common/dataListener.js.map +1 -0
- package/dist/common/fileDetector.js +1 -1
- package/dist/common/fileDetector.js.map +1 -0
- package/dist/common/filterManager.js.map +1 -0
- package/dist/common/middlewareManager.js +2 -2
- package/dist/common/middlewareManager.js.map +1 -0
- package/dist/common/serviceFactory.js.map +1 -0
- package/dist/common/triggerCollector.js.map +1 -0
- package/dist/common/webGenerator.d.ts +3 -14
- package/dist/common/webGenerator.js +21 -33
- package/dist/common/webGenerator.js.map +1 -0
- package/dist/common/webRouterCollector.js +7 -3
- package/dist/common/webRouterCollector.js.map +1 -0
- package/dist/config/config.default.js.map +1 -0
- package/dist/context/container.js +28 -13
- package/dist/context/container.js.map +1 -0
- package/dist/context/definitionRegistry.js.map +1 -0
- package/dist/context/managedResolverFactory.d.ts +1 -0
- package/dist/context/managedResolverFactory.js +20 -5
- package/dist/context/managedResolverFactory.js.map +1 -0
- package/dist/context/providerWrapper.js.map +1 -0
- package/dist/context/requestContainer.js +2 -0
- package/dist/context/requestContainer.js.map +1 -0
- package/dist/definitions/functionDefinition.d.ts +1 -0
- package/dist/definitions/functionDefinition.js +1 -0
- package/dist/definitions/functionDefinition.js.map +1 -0
- package/dist/definitions/objectCreator.js +9 -8
- package/dist/definitions/objectCreator.js.map +1 -0
- package/dist/definitions/objectDefinition.d.ts +1 -0
- package/dist/definitions/objectDefinition.js +1 -0
- package/dist/definitions/objectDefinition.js.map +1 -0
- package/dist/definitions/properties.js.map +1 -0
- package/dist/error/base.d.ts +22 -3
- package/dist/error/base.js +34 -5
- package/dist/error/base.js.map +1 -0
- package/dist/error/framework.d.ts +27 -2
- package/dist/error/framework.js +51 -14
- package/dist/error/framework.js.map +1 -0
- package/dist/error/http.d.ts +146 -41
- package/dist/error/http.js +164 -31
- package/dist/error/http.js.map +1 -0
- package/dist/error/index.d.ts +1 -1
- package/dist/error/index.js +4 -1
- package/dist/error/index.js.map +1 -0
- package/dist/functional/configuration.d.ts +2 -0
- package/dist/functional/configuration.js +10 -0
- package/dist/functional/configuration.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -0
- package/dist/interface.d.ts +51 -29
- package/dist/interface.js.map +1 -0
- package/dist/service/aspectService.js +1 -1
- package/dist/service/aspectService.js.map +1 -0
- package/dist/service/configService.d.ts +3 -1
- package/dist/service/configService.js +23 -17
- package/dist/service/configService.js.map +1 -0
- package/dist/service/decoratorService.js +25 -13
- package/dist/service/decoratorService.js.map +1 -0
- package/dist/service/environmentService.d.ts +1 -1
- package/dist/service/environmentService.js.map +1 -0
- package/dist/service/frameworkService.d.ts +3 -2
- package/dist/service/frameworkService.js +17 -12
- package/dist/service/frameworkService.js.map +1 -0
- package/dist/service/informationService.js.map +1 -0
- package/dist/service/lifeCycleService.js +5 -5
- package/dist/service/lifeCycleService.js.map +1 -0
- package/dist/service/loggerService.d.ts +1 -1
- package/dist/service/loggerService.js.map +1 -0
- package/dist/service/middlewareService.d.ts +3 -4
- package/dist/service/middlewareService.js +7 -11
- package/dist/service/middlewareService.js.map +1 -0
- package/dist/service/pipelineService.js.map +1 -0
- package/dist/setup.js +13 -5
- package/dist/setup.js.map +1 -0
- package/dist/util/contextUtil.js.map +1 -0
- package/dist/util/extend.d.ts +2 -0
- package/dist/util/extend.js +55 -0
- package/dist/util/extend.js.map +1 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/pathFileUtil.js.map +1 -0
- package/dist/util/pathToRegexp.js.map +1 -0
- package/dist/util/webRouterParam.js +24 -4
- package/dist/util/webRouterParam.js.map +1 -0
- package/package.json +12 -13
- package/CHANGELOG.md +0 -2197
- package/dist/error/code.d.ts +0 -60
- package/dist/error/code.js +0 -65
package/dist/baseFramework.d.ts
CHANGED
|
@@ -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
|
-
|
|
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>;
|
package/dist/baseFramework.js
CHANGED
|
@@ -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.
|
|
178
|
+
return this.useMiddleware(middleware);
|
|
177
179
|
},
|
|
178
180
|
getMiddleware: () => {
|
|
179
|
-
return this.
|
|
181
|
+
return this.getMiddleware();
|
|
180
182
|
},
|
|
181
183
|
useFilter: (Filter) => {
|
|
182
|
-
this.
|
|
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
|
|
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
|
-
|
|
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 (
|
|
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.
|
|
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
|
|
14
|
-
|
|
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(
|
|
16
|
-
this.
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
debug(`[core
|
|
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
|
-
|
|
80
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
103
|
-
debug(`[core
|
|
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
|
|
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 =
|
|
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
|
|
322
|
+
throw new error_1.MidwayDuplicateRouteError(`${routerInfo.requestMethod} ${routerInfo.url}`, `${matched[0].handlerName}`, `${routerInfo.handlerName}`);
|
|
319
323
|
}
|
|
320
324
|
prefixList.push(routerInfo);
|
|
321
325
|
}
|