@midwayjs/core 3.19.0 → 4.0.0-alpha.1
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 +7 -35
- package/dist/baseFramework.js +10 -52
- package/dist/common/applicationManager.d.ts +6 -6
- package/dist/common/applicationManager.js +18 -35
- package/dist/common/asyncContextManager.d.ts +15 -0
- package/dist/common/asyncContextManager.js +51 -2
- package/dist/common/dataListener.js +1 -1
- package/dist/common/dataSourceManager.js +3 -4
- package/dist/common/fileDetector.d.ts +9 -9
- package/dist/common/fileDetector.js +30 -28
- package/dist/common/filterManager.js +5 -4
- package/dist/common/guardManager.js +3 -2
- package/dist/common/middlewareManager.js +4 -3
- package/dist/common/performanceManager.js +1 -1
- package/dist/common/priorityManager.js +2 -2
- package/dist/common/serviceFactory.js +1 -1
- package/dist/common/webGenerator.js +4 -6
- package/dist/config/config.default.js +1 -1
- package/dist/constants.d.ts +2 -32
- package/dist/constants.js +3 -33
- package/dist/context/componentLoader.d.ts +20 -0
- package/dist/context/componentLoader.js +193 -0
- package/dist/context/container.d.ts +14 -29
- package/dist/context/container.js +68 -306
- package/dist/context/definitionRegistry.d.ts +3 -0
- package/dist/context/definitionRegistry.js +8 -15
- package/dist/context/managedResolverFactory.d.ts +15 -40
- package/dist/context/managedResolverFactory.js +263 -348
- package/dist/context/requestContainer.d.ts +22 -12
- package/dist/context/requestContainer.js +43 -51
- package/dist/decorator/common/aspect.js +4 -4
- package/dist/decorator/common/autoload.js +1 -1
- package/dist/decorator/common/configuration.d.ts +1 -24
- package/dist/decorator/common/configuration.js +6 -1
- package/dist/decorator/common/filter.js +6 -6
- package/dist/decorator/common/framework.d.ts +46 -3
- package/dist/decorator/common/framework.js +43 -9
- package/dist/decorator/common/guard.js +4 -9
- package/dist/decorator/common/inject.d.ts +4 -2
- package/dist/decorator/common/inject.js +87 -4
- package/dist/decorator/common/mock.js +1 -1
- package/dist/decorator/common/objectDef.d.ts +0 -5
- package/dist/decorator/common/objectDef.js +8 -20
- package/dist/decorator/common/provide.d.ts +1 -1
- package/dist/decorator/common/provide.js +1 -1
- package/dist/decorator/common/scope.d.ts +6 -0
- package/dist/decorator/common/scope.js +21 -0
- package/dist/decorator/constant.d.ts +14 -17
- package/dist/decorator/constant.js +23 -35
- package/dist/decorator/decoratorManager.d.ts +21 -294
- package/dist/decorator/decoratorManager.js +127 -694
- package/dist/decorator/faas/serverlessTrigger.js +5 -5
- package/dist/decorator/index.d.ts +2 -3
- package/dist/decorator/index.js +6 -4
- package/dist/decorator/metadataManager.d.ts +127 -0
- package/dist/decorator/metadataManager.js +465 -0
- package/dist/decorator/microservice/consumer.js +3 -2
- package/dist/decorator/microservice/kafkaListener.js +2 -1
- package/dist/decorator/microservice/provider.js +6 -5
- package/dist/decorator/microservice/rabbitmqListener.js +2 -1
- package/dist/decorator/task/queue.js +3 -2
- package/dist/decorator/task/schedule.js +3 -2
- package/dist/decorator/task/task.js +4 -3
- package/dist/decorator/task/taskLocal.js +4 -3
- package/dist/decorator/web/controller.js +3 -2
- package/dist/decorator/web/paramMapping.js +2 -2
- package/dist/decorator/web/requestMapping.js +5 -5
- package/dist/decorator/web/response.js +6 -5
- package/dist/decorator/ws/webSocketController.js +3 -2
- package/dist/decorator/ws/webSocketEvent.js +7 -6
- package/dist/definitions/functionDefinition.d.ts +3 -3
- package/dist/definitions/functionDefinition.js +12 -11
- package/dist/definitions/objectCreator.d.ts +5 -11
- package/dist/definitions/objectCreator.js +3 -27
- package/dist/definitions/objectDefinition.d.ts +2 -3
- package/dist/definitions/objectDefinition.js +1 -3
- package/dist/error/base.js +2 -2
- package/dist/error/framework.d.ts +1 -8
- package/dist/error/framework.js +9 -25
- package/dist/error/http.js +1 -1
- package/dist/functional/configuration.d.ts +14 -15
- package/dist/functional/configuration.js +37 -47
- package/dist/functional/hooks.d.ts +10 -0
- package/dist/functional/hooks.js +68 -0
- package/dist/functional/index.d.ts +3 -0
- package/dist/functional/index.js +22 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -6
- package/dist/interface.d.ts +80 -114
- package/dist/interface.js +9 -33
- package/dist/legacy/constants.d.ts +29 -0
- package/dist/legacy/constants.js +33 -0
- package/dist/legacy/decorator.d.ts +255 -0
- package/dist/legacy/decorator.js +468 -0
- package/dist/legacy/index.d.ts +3 -0
- package/dist/legacy/index.js +19 -0
- package/dist/legacy/types.d.ts +2 -0
- package/dist/legacy/types.js +3 -0
- package/dist/response/base.d.ts +1 -0
- package/dist/response/http.d.ts +1 -0
- package/dist/service/aspectService.js +11 -12
- package/dist/service/configService.js +2 -2
- package/dist/service/decoratorService.d.ts +3 -3
- package/dist/service/decoratorService.js +14 -10
- package/dist/service/environmentService.js +2 -2
- package/dist/service/frameworkService.d.ts +5 -4
- package/dist/service/frameworkService.js +30 -28
- package/dist/service/healthService.js +4 -4
- package/dist/service/informationService.js +3 -4
- package/dist/service/lifeCycleService.js +6 -17
- package/dist/service/loggerService.js +3 -4
- package/dist/service/middlewareService.js +7 -8
- package/dist/service/mockService.js +9 -15
- package/dist/service/slsFunctionService.d.ts +1 -14
- package/dist/service/slsFunctionService.js +33 -81
- package/dist/service/webRouterService.js +11 -11
- package/dist/setup.d.ts +5 -5
- package/dist/setup.js +75 -93
- package/dist/util/contextUtil.d.ts +2 -2
- package/dist/util/httpclient.d.ts +3 -2
- package/dist/util/index.d.ts +14 -0
- package/dist/util/index.js +159 -25
- package/dist/util/pathFileUtil.d.ts +14 -1
- package/dist/util/pathFileUtil.js +27 -6
- package/dist/util/webRouterParam.js +2 -2
- package/package.json +24 -6
- package/dist/decorator/common/pipeline.d.ts +0 -3
- package/dist/decorator/common/pipeline.js +0 -12
- package/dist/decorator/rpc/hsf.d.ts +0 -13
- package/dist/decorator/rpc/hsf.js +0 -20
- package/dist/definitions/properties.d.ts +0 -7
- package/dist/definitions/properties.js +0 -19
- package/dist/service/pipelineService.d.ts +0 -168
- package/dist/service/pipelineService.js +0 -254
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GuardManager = void 0;
|
|
4
4
|
const decorator_1 = require("../decorator");
|
|
5
|
+
const metadataManager_1 = require("../decorator/metadataManager");
|
|
5
6
|
class GuardManager extends Array {
|
|
6
7
|
addGlobalGuard(guards) {
|
|
7
8
|
if (!Array.isArray(guards)) {
|
|
@@ -21,7 +22,7 @@ class GuardManager extends Array {
|
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
// check class Guard
|
|
24
|
-
const classGuardList =
|
|
25
|
+
const classGuardList = metadataManager_1.MetadataManager.getOwnMetadata(decorator_1.GUARD_KEY, supplierClz);
|
|
25
26
|
if (classGuardList) {
|
|
26
27
|
for (const Guard of classGuardList) {
|
|
27
28
|
const guard = await ctx.requestContext.getAsync(Guard);
|
|
@@ -32,7 +33,7 @@ class GuardManager extends Array {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
// check method Guard
|
|
35
|
-
const methodGuardList =
|
|
36
|
+
const methodGuardList = metadataManager_1.MetadataManager.getOwnMetadata(decorator_1.GUARD_KEY, supplierClz, methodName);
|
|
36
37
|
if (methodGuardList) {
|
|
37
38
|
for (const Guard of methodGuardList) {
|
|
38
39
|
const guard = await ctx.requestContext.getAsync(Guard);
|
|
@@ -151,11 +151,12 @@ class ContextMiddlewareManager extends Array {
|
|
|
151
151
|
* @param middleware
|
|
152
152
|
*/
|
|
153
153
|
getMiddlewareName(middleware) {
|
|
154
|
-
var _a, _b, _c;
|
|
155
154
|
if (middleware['middleware']) {
|
|
156
|
-
return (
|
|
155
|
+
return (middleware.name ?? this.getMiddlewareName(middleware['middleware']));
|
|
157
156
|
}
|
|
158
|
-
return ((
|
|
157
|
+
return ((middleware.getName && middleware.getName()) ??
|
|
158
|
+
middleware._name ??
|
|
159
|
+
middleware.name);
|
|
159
160
|
}
|
|
160
161
|
/**
|
|
161
162
|
* remove a middleware
|
|
@@ -82,7 +82,7 @@ class MidwayPerformanceManager {
|
|
|
82
82
|
}
|
|
83
83
|
static getInitialPerformanceEntries() {
|
|
84
84
|
const entries = [];
|
|
85
|
-
perf_hooks_1.performance
|
|
85
|
+
perf_hooks_1.performance?.getEntries().forEach(entry => {
|
|
86
86
|
if (entry.name.startsWith(this.DEFAULT_GROUP.INITIALIZE)) {
|
|
87
87
|
entries.push(entry.toJSON());
|
|
88
88
|
}
|
|
@@ -38,9 +38,9 @@ let MidwayPriorityManager = class MidwayPriorityManager {
|
|
|
38
38
|
return priority || this.getDefaultPriority();
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
|
-
MidwayPriorityManager =
|
|
41
|
+
exports.MidwayPriorityManager = MidwayPriorityManager;
|
|
42
|
+
exports.MidwayPriorityManager = MidwayPriorityManager = __decorate([
|
|
42
43
|
(0, decorator_1.Provide)(),
|
|
43
44
|
(0, decorator_1.Scope)(interface_1.ScopeEnum.Singleton)
|
|
44
45
|
], MidwayPriorityManager);
|
|
45
|
-
exports.MidwayPriorityManager = MidwayPriorityManager;
|
|
46
46
|
//# sourceMappingURL=priorityManager.js.map
|
|
@@ -83,9 +83,9 @@ class ServiceFactory {
|
|
|
83
83
|
return this.priorityManager.isLowPriority(this.clientPriority[name]);
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
+
exports.ServiceFactory = ServiceFactory;
|
|
86
87
|
__decorate([
|
|
87
88
|
(0, decorator_1.Inject)(),
|
|
88
89
|
__metadata("design:type", priorityManager_1.MidwayPriorityManager)
|
|
89
90
|
], ServiceFactory.prototype, "priorityManager", void 0);
|
|
90
|
-
exports.ServiceFactory = ServiceFactory;
|
|
91
91
|
//# sourceMappingURL=serviceFactory.js.map
|
|
@@ -9,7 +9,6 @@ exports.WebControllerGenerator = void 0;
|
|
|
9
9
|
*/
|
|
10
10
|
const decorator_1 = require("../decorator");
|
|
11
11
|
const util = require("util");
|
|
12
|
-
const interface_1 = require("../interface");
|
|
13
12
|
const error_1 = require("../error");
|
|
14
13
|
const middlewareService_1 = require("../service/middlewareService");
|
|
15
14
|
const debug = util.debuglog('midway:debug');
|
|
@@ -61,7 +60,7 @@ class WebControllerGenerator {
|
|
|
61
60
|
ctx.status = routerRes.code;
|
|
62
61
|
break;
|
|
63
62
|
case decorator_1.WEB_RESPONSE_HEADER:
|
|
64
|
-
for (const key in
|
|
63
|
+
for (const key in routerRes?.setHeaders || {}) {
|
|
65
64
|
ctx.set(key, routerRes.setHeaders[key]);
|
|
66
65
|
}
|
|
67
66
|
break;
|
|
@@ -78,7 +77,6 @@ class WebControllerGenerator {
|
|
|
78
77
|
};
|
|
79
78
|
}
|
|
80
79
|
async loadMidwayController(routerHandler) {
|
|
81
|
-
var _a, _b;
|
|
82
80
|
const routerTable = await this.midwayWebRouterService.getRouterTable();
|
|
83
81
|
const routerList = await this.midwayWebRouterService.getRoutePriorityList();
|
|
84
82
|
const applicationContext = this.app.getApplicationContext();
|
|
@@ -95,7 +93,7 @@ class WebControllerGenerator {
|
|
|
95
93
|
...routerInfo.routerOptions,
|
|
96
94
|
});
|
|
97
95
|
// add router middleware
|
|
98
|
-
routerInfo.middleware =
|
|
96
|
+
routerInfo.middleware = routerInfo.middleware ?? [];
|
|
99
97
|
if (routerInfo.middleware.length) {
|
|
100
98
|
const routerMiddlewareFn = await middlewareService.compose(routerInfo.middleware, this.app);
|
|
101
99
|
newRouter.use(routerMiddlewareFn);
|
|
@@ -105,12 +103,12 @@ class WebControllerGenerator {
|
|
|
105
103
|
for (const routeInfo of routes) {
|
|
106
104
|
// get middleware
|
|
107
105
|
const methodMiddlewares = [];
|
|
108
|
-
routeInfo.middleware =
|
|
106
|
+
routeInfo.middleware = routeInfo.middleware ?? [];
|
|
109
107
|
if (routeInfo.middleware.length) {
|
|
110
108
|
const routeMiddlewareFn = await middlewareService.compose(routeInfo.middleware, this.app);
|
|
111
109
|
methodMiddlewares.push(routeMiddlewareFn);
|
|
112
110
|
}
|
|
113
|
-
if (this.app.
|
|
111
|
+
if (this.app.getNamespace() === 'koa') {
|
|
114
112
|
// egg use path-to-regexp v1 but koa use v6
|
|
115
113
|
if (typeof routeInfo.url === 'string' && /\*$/.test(routeInfo.url)) {
|
|
116
114
|
routeInfo.url = routeInfo.url.replace('*', '(.*)');
|
package/dist/constants.d.ts
CHANGED
|
@@ -3,39 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
*/
|
|
5
5
|
export declare const KEYS: {
|
|
6
|
-
OBJECTS_ELEMENT: string;
|
|
7
|
-
OBJECT_ELEMENT: string;
|
|
8
|
-
IMPORT_ELEMENT: string;
|
|
9
|
-
PROPERTY_ELEMENT: string;
|
|
10
|
-
LIST_ELEMENT: string;
|
|
11
|
-
MAP_ELEMENT: string;
|
|
12
|
-
ENTRY_ELEMENT: string;
|
|
13
|
-
VALUE_ELEMENT: string;
|
|
14
|
-
PROPS_ELEMENT: string;
|
|
15
|
-
PROP_ELEMENT: string;
|
|
16
|
-
SET_ELEMENT: string;
|
|
17
|
-
CONSTRUCTOR_ARG_ELEMENT: string;
|
|
18
6
|
REF_ELEMENT: string;
|
|
19
|
-
|
|
20
|
-
CONFIGURATION_ELEMENT: string;
|
|
21
|
-
ID_ATTRIBUTE: string;
|
|
22
|
-
PATH_ATTRIBUTE: string;
|
|
23
|
-
DIRECT_ATTRIBUTE: string;
|
|
24
|
-
AUTOWIRE_ATTRIBUTE: string;
|
|
25
|
-
ASYNC_ATTRIBUTE: string;
|
|
26
|
-
NAME_ATTRIBUTE: string;
|
|
27
|
-
REF_ATTRIBUTE: string;
|
|
28
|
-
KEY_ATTRIBUTE: string;
|
|
29
|
-
VALUE_ATTRIBUTE: string;
|
|
30
|
-
TYPE_ATTRIBUTE: string;
|
|
31
|
-
EXTERNAL_ATTRIBUTE: string;
|
|
32
|
-
OBJECT_ATTRIBUTE: string;
|
|
33
|
-
RESOURCE_ATTRIBUTE: string;
|
|
34
|
-
SCOPE_ATTRIBUTE: string;
|
|
35
|
-
ASPECT_ELEMENT: string;
|
|
36
|
-
AROUND_ELEMENT: string;
|
|
37
|
-
EXPRESSION_ATTRIBUTE: string;
|
|
38
|
-
EXECUTE_ATTRIBUTE: string;
|
|
7
|
+
REF_CUSTOM: string;
|
|
39
8
|
};
|
|
40
9
|
export declare const FUNCTION_INJECT_KEY = "midway:function_inject_key";
|
|
41
10
|
export declare const MIDWAY_LOGGER_WRITEABLE_DIR = "MIDWAY_LOGGER_WRITEABLE_DIR";
|
|
@@ -44,6 +13,7 @@ export declare const REQUEST_OBJ_CTX_KEY = "_req_ctx";
|
|
|
44
13
|
export declare const CONTAINER_OBJ_SCOPE = "_obj_scope";
|
|
45
14
|
export declare const HTTP_SERVER_KEY = "_midway_http_server";
|
|
46
15
|
export declare const REQUEST_CTX_LOGGER_CACHE_KEY = "_midway_ctx_logger_cache";
|
|
16
|
+
export declare const REQUEST_CTX_UNIQUE_KEY = "_midway_ctx_unique_key";
|
|
47
17
|
export declare const ASYNC_CONTEXT_KEY: unique symbol;
|
|
48
18
|
export declare const ASYNC_CONTEXT_MANAGER_KEY = "MIDWAY_ASYNC_CONTEXT_MANAGER_KEY";
|
|
49
19
|
export declare const DEFAULT_PATTERN: string[];
|
package/dist/constants.js
CHANGED
|
@@ -1,44 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SINGLETON_CONTAINER_CTX = exports.IGNORE_PATTERN = exports.DEFAULT_PATTERN = exports.ASYNC_CONTEXT_MANAGER_KEY = exports.ASYNC_CONTEXT_KEY = exports.REQUEST_CTX_LOGGER_CACHE_KEY = exports.HTTP_SERVER_KEY = exports.CONTAINER_OBJ_SCOPE = exports.REQUEST_OBJ_CTX_KEY = exports.REQUEST_CTX_KEY = exports.MIDWAY_LOGGER_WRITEABLE_DIR = exports.FUNCTION_INJECT_KEY = exports.KEYS = void 0;
|
|
3
|
+
exports.SINGLETON_CONTAINER_CTX = exports.IGNORE_PATTERN = exports.DEFAULT_PATTERN = exports.ASYNC_CONTEXT_MANAGER_KEY = exports.ASYNC_CONTEXT_KEY = exports.REQUEST_CTX_UNIQUE_KEY = exports.REQUEST_CTX_LOGGER_CACHE_KEY = exports.HTTP_SERVER_KEY = exports.CONTAINER_OBJ_SCOPE = exports.REQUEST_OBJ_CTX_KEY = exports.REQUEST_CTX_KEY = exports.MIDWAY_LOGGER_WRITEABLE_DIR = exports.FUNCTION_INJECT_KEY = exports.KEYS = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* 静态参数
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
exports.KEYS = {
|
|
9
|
-
OBJECTS_ELEMENT: 'objects',
|
|
10
|
-
OBJECT_ELEMENT: 'object',
|
|
11
|
-
IMPORT_ELEMENT: 'import',
|
|
12
|
-
PROPERTY_ELEMENT: 'property',
|
|
13
|
-
LIST_ELEMENT: 'list',
|
|
14
|
-
MAP_ELEMENT: 'map',
|
|
15
|
-
ENTRY_ELEMENT: 'entry',
|
|
16
|
-
VALUE_ELEMENT: 'value',
|
|
17
|
-
PROPS_ELEMENT: 'props',
|
|
18
|
-
PROP_ELEMENT: 'prop',
|
|
19
|
-
SET_ELEMENT: 'set',
|
|
20
|
-
CONSTRUCTOR_ARG_ELEMENT: 'constructor-arg',
|
|
21
9
|
REF_ELEMENT: 'ref',
|
|
22
|
-
|
|
23
|
-
CONFIGURATION_ELEMENT: 'configuration',
|
|
24
|
-
ID_ATTRIBUTE: 'id',
|
|
25
|
-
PATH_ATTRIBUTE: 'path',
|
|
26
|
-
DIRECT_ATTRIBUTE: 'direct',
|
|
27
|
-
AUTOWIRE_ATTRIBUTE: 'autowire',
|
|
28
|
-
ASYNC_ATTRIBUTE: 'async',
|
|
29
|
-
NAME_ATTRIBUTE: 'name',
|
|
30
|
-
REF_ATTRIBUTE: 'ref',
|
|
31
|
-
KEY_ATTRIBUTE: 'key',
|
|
32
|
-
VALUE_ATTRIBUTE: 'value',
|
|
33
|
-
TYPE_ATTRIBUTE: 'type',
|
|
34
|
-
EXTERNAL_ATTRIBUTE: 'external',
|
|
35
|
-
OBJECT_ATTRIBUTE: 'object',
|
|
36
|
-
RESOURCE_ATTRIBUTE: 'resource',
|
|
37
|
-
SCOPE_ATTRIBUTE: 'scope',
|
|
38
|
-
ASPECT_ELEMENT: 'aspect',
|
|
39
|
-
AROUND_ELEMENT: 'around',
|
|
40
|
-
EXPRESSION_ATTRIBUTE: 'expression',
|
|
41
|
-
EXECUTE_ATTRIBUTE: 'execute',
|
|
10
|
+
REF_CUSTOM: 'ref_custom',
|
|
42
11
|
};
|
|
43
12
|
exports.FUNCTION_INJECT_KEY = 'midway:function_inject_key';
|
|
44
13
|
exports.MIDWAY_LOGGER_WRITEABLE_DIR = 'MIDWAY_LOGGER_WRITEABLE_DIR';
|
|
@@ -47,6 +16,7 @@ exports.REQUEST_OBJ_CTX_KEY = '_req_ctx';
|
|
|
47
16
|
exports.CONTAINER_OBJ_SCOPE = '_obj_scope';
|
|
48
17
|
exports.HTTP_SERVER_KEY = '_midway_http_server';
|
|
49
18
|
exports.REQUEST_CTX_LOGGER_CACHE_KEY = '_midway_ctx_logger_cache';
|
|
19
|
+
exports.REQUEST_CTX_UNIQUE_KEY = '_midway_ctx_unique_key';
|
|
50
20
|
exports.ASYNC_CONTEXT_KEY = Symbol('ASYNC_CONTEXT_KEY');
|
|
51
21
|
exports.ASYNC_CONTEXT_MANAGER_KEY = 'MIDWAY_ASYNC_CONTEXT_MANAGER_KEY';
|
|
52
22
|
exports.DEFAULT_PATTERN = [
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IMidwayGlobalContainer } from '../interface';
|
|
2
|
+
export declare class ComponentConfigurationLoader {
|
|
3
|
+
readonly container: IMidwayGlobalContainer;
|
|
4
|
+
private loadedMap;
|
|
5
|
+
private namespaceList;
|
|
6
|
+
constructor(container: IMidwayGlobalContainer);
|
|
7
|
+
load(module: any): Promise<void>;
|
|
8
|
+
loadSync(module: any): void;
|
|
9
|
+
private addImportConfigs;
|
|
10
|
+
private addImportConfigFilter;
|
|
11
|
+
private addImports;
|
|
12
|
+
/**
|
|
13
|
+
* 注册 importObjects
|
|
14
|
+
* @param objs configuration 中的 importObjects
|
|
15
|
+
*/
|
|
16
|
+
private addImportObjects;
|
|
17
|
+
private getConfigurationExport;
|
|
18
|
+
getNamespaceList(): any[];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=componentLoader.d.ts.map
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComponentConfigurationLoader = void 0;
|
|
4
|
+
const decorator_1 = require("../decorator");
|
|
5
|
+
const metadataManager_1 = require("../decorator/metadataManager");
|
|
6
|
+
const configService_1 = require("../service/configService");
|
|
7
|
+
const environmentService_1 = require("../service/environmentService");
|
|
8
|
+
const util = require("util");
|
|
9
|
+
const util_1 = require("../util");
|
|
10
|
+
const debug = util.debuglog('midway:debug');
|
|
11
|
+
class ComponentConfigurationLoader {
|
|
12
|
+
constructor(container) {
|
|
13
|
+
this.container = container;
|
|
14
|
+
this.loadedMap = new WeakMap();
|
|
15
|
+
this.namespaceList = [];
|
|
16
|
+
}
|
|
17
|
+
async load(module) {
|
|
18
|
+
let namespace = decorator_1.MAIN_MODULE_KEY;
|
|
19
|
+
// 可能导出多个
|
|
20
|
+
const configurationExports = this.getConfigurationExport(module);
|
|
21
|
+
if (!configurationExports.length)
|
|
22
|
+
return;
|
|
23
|
+
// 多个的情况,数据交给第一个保存
|
|
24
|
+
for (let i = 0; i < configurationExports.length; i++) {
|
|
25
|
+
const configurationExport = configurationExports[i];
|
|
26
|
+
if (this.loadedMap.get(configurationExport)) {
|
|
27
|
+
// 已经加载过就跳过循环
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
let configurationOptions;
|
|
31
|
+
// 函数式写法
|
|
32
|
+
if (metadataManager_1.MetadataManager.hasOwnMetadata(decorator_1.CONFIGURATION_OBJECT_KEY, configurationExport)) {
|
|
33
|
+
// 函数式写法
|
|
34
|
+
configurationOptions = metadataManager_1.MetadataManager.getOwnMetadata(decorator_1.CONFIGURATION_OBJECT_KEY, configurationExport);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// 普通类写法
|
|
38
|
+
configurationOptions = metadataManager_1.MetadataManager.getOwnMetadata(decorator_1.CONFIGURATION_KEY, configurationExport);
|
|
39
|
+
}
|
|
40
|
+
// 已加载标记,防止死循环
|
|
41
|
+
this.loadedMap.set(configurationExport, true);
|
|
42
|
+
if (configurationOptions) {
|
|
43
|
+
if (configurationOptions.namespace !== undefined) {
|
|
44
|
+
namespace = configurationOptions.namespace;
|
|
45
|
+
this.namespaceList.push(namespace);
|
|
46
|
+
}
|
|
47
|
+
debug(`[core]: load configuration in namespace="${namespace}"`);
|
|
48
|
+
this.addImports(configurationOptions.imports);
|
|
49
|
+
this.addImportObjects(configurationOptions.importObjects);
|
|
50
|
+
this.addImportConfigs(configurationOptions.importConfigs);
|
|
51
|
+
this.addImportConfigFilter(configurationOptions.importConfigFilter);
|
|
52
|
+
if (configurationOptions.detector) {
|
|
53
|
+
await configurationOptions.detector.run(this.container, namespace);
|
|
54
|
+
}
|
|
55
|
+
decorator_1.DecoratorManager.saveModule(decorator_1.CONFIGURATION_KEY, {
|
|
56
|
+
target: configurationExport,
|
|
57
|
+
namespace,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// bind module
|
|
62
|
+
this.container.bindClass(module, {
|
|
63
|
+
namespace,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
loadSync(module) {
|
|
67
|
+
let namespace = decorator_1.MAIN_MODULE_KEY;
|
|
68
|
+
// 可能导出多个
|
|
69
|
+
const configurationExports = this.getConfigurationExport(module);
|
|
70
|
+
if (!configurationExports.length)
|
|
71
|
+
return;
|
|
72
|
+
// 多个的情况,数据交给第一个保存
|
|
73
|
+
for (let i = 0; i < configurationExports.length; i++) {
|
|
74
|
+
const configurationExport = configurationExports[i];
|
|
75
|
+
if (this.loadedMap.get(configurationExport)) {
|
|
76
|
+
// 已经加载过就跳过循环
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
let configurationOptions;
|
|
80
|
+
// 函数式写法
|
|
81
|
+
if (metadataManager_1.MetadataManager.hasOwnMetadata(decorator_1.CONFIGURATION_OBJECT_KEY, configurationExport)) {
|
|
82
|
+
// 函数式写法
|
|
83
|
+
configurationOptions = metadataManager_1.MetadataManager.getOwnMetadata(decorator_1.CONFIGURATION_OBJECT_KEY, configurationExport);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// 普通类写法
|
|
87
|
+
configurationOptions = metadataManager_1.MetadataManager.getOwnMetadata(decorator_1.CONFIGURATION_KEY, configurationExport);
|
|
88
|
+
}
|
|
89
|
+
// 已加载标记,防止死循环
|
|
90
|
+
this.loadedMap.set(configurationExport, true);
|
|
91
|
+
if (configurationOptions) {
|
|
92
|
+
if (configurationOptions.namespace !== undefined) {
|
|
93
|
+
namespace = configurationOptions.namespace;
|
|
94
|
+
this.namespaceList.push(namespace);
|
|
95
|
+
}
|
|
96
|
+
debug(`[core]: load configuration in namespace="${namespace}"`);
|
|
97
|
+
this.addImports(configurationOptions.imports);
|
|
98
|
+
this.addImportObjects(configurationOptions.importObjects);
|
|
99
|
+
this.addImportConfigs(configurationOptions.importConfigs);
|
|
100
|
+
this.addImportConfigFilter(configurationOptions.importConfigFilter);
|
|
101
|
+
if (configurationOptions.detector) {
|
|
102
|
+
configurationOptions.detector.runSync(this.container, namespace);
|
|
103
|
+
}
|
|
104
|
+
decorator_1.DecoratorManager.saveModule(decorator_1.CONFIGURATION_KEY, {
|
|
105
|
+
target: configurationExport,
|
|
106
|
+
namespace,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// bind module
|
|
111
|
+
this.container.bindClass(module, {
|
|
112
|
+
namespace,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
addImportConfigs(importConfigs) {
|
|
116
|
+
if (importConfigs) {
|
|
117
|
+
if (Array.isArray(importConfigs)) {
|
|
118
|
+
this.container.get(configService_1.MidwayConfigService).add(importConfigs);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.container.get(configService_1.MidwayConfigService).addObject(importConfigs);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
addImportConfigFilter(importConfigFilter) {
|
|
126
|
+
if (importConfigFilter) {
|
|
127
|
+
this.container.get(configService_1.MidwayConfigService).addFilter(importConfigFilter);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
addImports(imports = []) {
|
|
131
|
+
// 处理 imports
|
|
132
|
+
for (let importPackage of imports) {
|
|
133
|
+
if (!importPackage)
|
|
134
|
+
continue;
|
|
135
|
+
if (typeof importPackage === 'string') {
|
|
136
|
+
importPackage = require(importPackage);
|
|
137
|
+
}
|
|
138
|
+
if ('Configuration' in importPackage) {
|
|
139
|
+
// component is object
|
|
140
|
+
this.load(importPackage);
|
|
141
|
+
}
|
|
142
|
+
else if ('component' in importPackage) {
|
|
143
|
+
if (importPackage?.enabledEnvironment) {
|
|
144
|
+
if (importPackage?.enabledEnvironment?.includes(this.container
|
|
145
|
+
.get(environmentService_1.MidwayEnvironmentService)
|
|
146
|
+
.getCurrentEnvironment())) {
|
|
147
|
+
this.load(importPackage.component);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.load(importPackage.component);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.load(importPackage);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 注册 importObjects
|
|
161
|
+
* @param objs configuration 中的 importObjects
|
|
162
|
+
*/
|
|
163
|
+
addImportObjects(objs) {
|
|
164
|
+
if (objs) {
|
|
165
|
+
const keys = Object.keys(objs);
|
|
166
|
+
for (const key of keys) {
|
|
167
|
+
if (typeof objs[key] !== undefined) {
|
|
168
|
+
this.container.registerObject(key, objs[key]);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
getConfigurationExport(exports) {
|
|
174
|
+
const mods = [];
|
|
175
|
+
if ((0, util_1.isConfigurationExport)(exports)) {
|
|
176
|
+
mods.push(exports);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
for (const m in exports) {
|
|
180
|
+
const module = exports[m];
|
|
181
|
+
if ((0, util_1.isConfigurationExport)(module)) {
|
|
182
|
+
mods.push(module);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return mods;
|
|
187
|
+
}
|
|
188
|
+
getNamespaceList() {
|
|
189
|
+
return this.namespaceList;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
exports.ComponentConfigurationLoader = ComponentConfigurationLoader;
|
|
193
|
+
//# sourceMappingURL=componentLoader.js.map
|
|
@@ -1,50 +1,36 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
2
|
+
import { ClassType, IIdentifierRelationShip, IMidwayContainer, IMidwayGlobalContainer, IObjectDefinition, IObjectDefinitionRegistry, ObjectIdentifier, ScopeEnum } from '../interface';
|
|
3
3
|
import { ManagedResolverFactory } from './managedResolverFactory';
|
|
4
|
-
import
|
|
5
|
-
export declare class MidwayContainer implements
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
export declare class MidwayContainer implements IMidwayGlobalContainer {
|
|
6
6
|
private _resolverFactory;
|
|
7
7
|
private _registry;
|
|
8
8
|
private _identifierMapping;
|
|
9
|
-
private moduleMap;
|
|
10
9
|
private _objectCreateEventTarget;
|
|
11
|
-
parent: IMidwayContainer;
|
|
12
10
|
protected ctx: {
|
|
13
11
|
_MAIN_CTX_: boolean;
|
|
14
12
|
};
|
|
15
|
-
private fileDetector;
|
|
16
13
|
private attrMap;
|
|
17
|
-
private
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
private namespaceSet;
|
|
15
|
+
private _id;
|
|
16
|
+
get id(): string;
|
|
17
|
+
constructor();
|
|
20
18
|
get objectCreateEventTarget(): EventEmitter<[never]>;
|
|
21
19
|
get registry(): IObjectDefinitionRegistry;
|
|
22
20
|
set registry(registry: IObjectDefinitionRegistry);
|
|
23
|
-
get managedResolverFactory(): ManagedResolverFactory;
|
|
24
21
|
get identifierMapping(): IIdentifierRelationShip;
|
|
25
|
-
|
|
26
|
-
load(module: any): void;
|
|
27
|
-
protected loadDefinitions(): void | Promise<void>;
|
|
22
|
+
addNamespace(ns: string): void;
|
|
28
23
|
bindClass(exports: any, options?: Partial<IObjectDefinition>): void;
|
|
29
24
|
bind<T>(target: T, options?: Partial<IObjectDefinition>): void;
|
|
30
25
|
bind<T>(identifier: ObjectIdentifier, target: T, options?: Partial<IObjectDefinition>): void;
|
|
31
26
|
protected bindModule(module: any, options: Partial<IObjectDefinition>): void;
|
|
32
|
-
setFileDetector(fileDetector: IFileDetector): void;
|
|
33
|
-
createChild(): IMidwayContainer;
|
|
34
27
|
setAttr(key: string, value: any): void;
|
|
35
28
|
getAttr<T>(key: string): T;
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
getIdentifier(identifier: ClassType | string): string;
|
|
30
|
+
getManagedResolverFactory(): ManagedResolverFactory;
|
|
38
31
|
stop(): Promise<void>;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
new (...args: any[]): T;
|
|
42
|
-
}, args?: any[], objectContext?: ObjectContext): T;
|
|
43
|
-
get<T>(identifier: ObjectIdentifier, args?: any[], objectContext?: ObjectContext): T;
|
|
44
|
-
getAsync<T>(identifier: {
|
|
45
|
-
new (...args: any[]): T;
|
|
46
|
-
}, args?: any[], objectContext?: ObjectContext): Promise<T>;
|
|
47
|
-
getAsync<T>(identifier: ObjectIdentifier, args?: any[], objectContext?: ObjectContext): Promise<T>;
|
|
32
|
+
get<T>(identifier: ClassType<T> | string, args?: any[]): T;
|
|
33
|
+
getAsync<T>(identifier: ClassType<T> | string, args?: any[]): Promise<T>;
|
|
48
34
|
/**
|
|
49
35
|
* proxy registry.registerObject
|
|
50
36
|
* @param {ObjectIdentifier} identifier
|
|
@@ -74,13 +60,12 @@ export declare class MidwayContainer implements IMidwayContainer, IModuleStore {
|
|
|
74
60
|
context: IMidwayContainer;
|
|
75
61
|
definition: IObjectDefinition;
|
|
76
62
|
}) => void): void;
|
|
77
|
-
saveModule(key: any, module: any): void;
|
|
78
|
-
listModule(key: string): unknown[];
|
|
79
|
-
transformModule(moduleMap: Map<string, Set<any>>): void;
|
|
80
63
|
hasNamespace(ns: string): boolean;
|
|
81
64
|
getNamespaceList(): string[];
|
|
82
65
|
hasDefinition(identifier: ObjectIdentifier): boolean;
|
|
66
|
+
getDefinition(identifier: ObjectIdentifier): IObjectDefinition;
|
|
83
67
|
hasObject(identifier: ObjectIdentifier): boolean;
|
|
68
|
+
getObject<T>(identifier: ObjectIdentifier): T;
|
|
84
69
|
getInstanceScope(instance: any): ScopeEnum | undefined;
|
|
85
70
|
}
|
|
86
71
|
//# sourceMappingURL=container.d.ts.map
|