@eggjs/tegg-plugin 4.0.0-beta.34 → 4.0.0-beta.36
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/app/extend/application.d.ts +28 -24
- package/dist/app/extend/application.js +69 -75
- package/dist/app/extend/application.unittest.d.ts +9 -5
- package/dist/app/extend/application.unittest.js +39 -50
- package/dist/app/extend/context.d.ts +12 -8
- package/dist/app/extend/context.js +27 -32
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.d.ts +5 -2
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +7 -3
- package/dist/app.d.ts +20 -16
- package/dist/app.js +50 -57
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -3
- package/dist/lib/AppLoadUnit.d.ts +23 -19
- package/dist/lib/AppLoadUnit.js +77 -92
- package/dist/lib/AppLoadUnitInstance.d.ts +23 -19
- package/dist/lib/AppLoadUnitInstance.js +69 -82
- package/dist/lib/CompatibleUtil.d.ts +22 -18
- package/dist/lib/CompatibleUtil.js +99 -104
- package/dist/lib/ConfigSourceLoadUnitHook.d.ts +13 -8
- package/dist/lib/ConfigSourceLoadUnitHook.js +20 -19
- package/dist/lib/EggAppLoader.d.ts +19 -15
- package/dist/lib/EggAppLoader.js +104 -115
- package/dist/lib/EggCompatibleObject.d.ts +19 -15
- package/dist/lib/EggCompatibleObject.js +34 -41
- package/dist/lib/EggCompatibleProtoImpl.d.ts +25 -21
- package/dist/lib/EggCompatibleProtoImpl.js +49 -52
- package/dist/lib/EggContextCompatibleHook.d.ts +13 -9
- package/dist/lib/EggContextCompatibleHook.js +32 -44
- package/dist/lib/EggContextHandler.d.ts +12 -8
- package/dist/lib/EggContextHandler.js +28 -25
- package/dist/lib/EggContextImpl.d.ts +9 -5
- package/dist/lib/EggContextImpl.js +18 -15
- package/dist/lib/EggModuleLoader.d.ts +14 -10
- package/dist/lib/EggModuleLoader.js +48 -52
- package/dist/lib/EggQualifierProtoHook.d.ts +13 -9
- package/dist/lib/EggQualifierProtoHook.js +46 -60
- package/dist/lib/ModuleConfigLoader.d.ts +11 -7
- package/dist/lib/ModuleConfigLoader.js +81 -79
- package/dist/lib/ModuleHandler.d.ts +16 -12
- package/dist/lib/ModuleHandler.js +44 -51
- package/dist/lib/Utils.d.ts +4 -1
- package/dist/lib/Utils.js +30 -33
- package/dist/lib/ctx_lifecycle_middleware.d.ts +6 -2
- package/dist/lib/ctx_lifecycle_middleware.js +24 -30
- package/dist/lib/run_in_background.d.ts +7 -3
- package/dist/lib/run_in_background.js +46 -54
- package/dist/types.d.ts +54 -53
- package/dist/types.js +3 -2
- package/package.json +47 -51
|
@@ -1,104 +1,99 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
this.singletonProtoCache.clear();
|
|
101
|
-
this.requestProtoCache.clear();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGF0aWJsZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0NvbXBhdGlibGVVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsbUJBQW1CLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdkUsTUFBTSxDQUFDLGlCQUFpQixHQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFpQjtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtnQkFDdkU7b0JBQ0UsU0FBUyxFQUFFLDBCQUEwQjtvQkFDckMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxTQUFTO2lCQUNoQzthQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBaUI7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FB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
|
|
1
|
+
import { InitTypeQualifierAttribute, ObjectInitType } from "@eggjs/core-decorator";
|
|
2
|
+
import { EggPrototypeFactory } from "@eggjs/metadata";
|
|
3
|
+
import { ProxyUtil } from "@eggjs/tegg-common-util";
|
|
4
|
+
import { EggContainerFactory } from "@eggjs/tegg-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/CompatibleUtil.ts
|
|
7
|
+
var CompatibleUtil = class CompatibleUtil {
|
|
8
|
+
static singletonProtoCache = /* @__PURE__ */ new Map();
|
|
9
|
+
static requestProtoCache = /* @__PURE__ */ new Map();
|
|
10
|
+
static getSingletonProto(name) {
|
|
11
|
+
if (!this.singletonProtoCache.has(name)) {
|
|
12
|
+
const proto = EggPrototypeFactory.instance.getPrototype(name, void 0, [{
|
|
13
|
+
attribute: InitTypeQualifierAttribute,
|
|
14
|
+
value: ObjectInitType.SINGLETON
|
|
15
|
+
}]);
|
|
16
|
+
this.singletonProtoCache.set(name, proto);
|
|
17
|
+
}
|
|
18
|
+
return this.singletonProtoCache.get(name);
|
|
19
|
+
}
|
|
20
|
+
static getRequestProto(name) {
|
|
21
|
+
if (!this.requestProtoCache.has(name)) {
|
|
22
|
+
const proto = EggPrototypeFactory.instance.getPrototype(name, void 0, [{
|
|
23
|
+
attribute: InitTypeQualifierAttribute,
|
|
24
|
+
value: ObjectInitType.CONTEXT
|
|
25
|
+
}]);
|
|
26
|
+
this.requestProtoCache.set(name, proto);
|
|
27
|
+
}
|
|
28
|
+
return this.requestProtoCache.get(name);
|
|
29
|
+
}
|
|
30
|
+
static singletonModuleProxyFactory(app, loadUnitInstance) {
|
|
31
|
+
let deprecated = false;
|
|
32
|
+
return function(_, p) {
|
|
33
|
+
const proto = CompatibleUtil.getSingletonProto(p);
|
|
34
|
+
const eggObj = EggContainerFactory.getEggObject(proto);
|
|
35
|
+
if (!deprecated) {
|
|
36
|
+
deprecated = true;
|
|
37
|
+
app.deprecate(`[egg/module] Please use await app.getEggObject(clazzName) instead of app.${loadUnitInstance.name}.${String(p)}`);
|
|
38
|
+
}
|
|
39
|
+
return eggObj.obj;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
static appCompatible(app, loadUnitInstance) {
|
|
43
|
+
const moduleLoadUnitProxy = ProxyUtil.safeProxy(loadUnitInstance, CompatibleUtil.singletonModuleProxyFactory(app, loadUnitInstance));
|
|
44
|
+
Reflect.defineProperty(app.module, loadUnitInstance.name, {
|
|
45
|
+
configurable: true,
|
|
46
|
+
value: moduleLoadUnitProxy
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
static contextModuleProxyFactory(holder, ctx, loadUnitInstance) {
|
|
50
|
+
const cacheKey = `_${loadUnitInstance.name}Proxy`;
|
|
51
|
+
if (!holder[cacheKey]) {
|
|
52
|
+
let deprecated = false;
|
|
53
|
+
const getter = function(_, p) {
|
|
54
|
+
const proto = CompatibleUtil.getRequestProto(p);
|
|
55
|
+
const eggObj = EggContainerFactory.getEggObject(proto, p);
|
|
56
|
+
if (!deprecated) {
|
|
57
|
+
deprecated = true;
|
|
58
|
+
ctx.app.deprecate(`[egg/module] Please use await ctx.getEggObject(clazzName) instead of ctx.${loadUnitInstance.name}.${String(p)}`);
|
|
59
|
+
}
|
|
60
|
+
return eggObj.obj;
|
|
61
|
+
};
|
|
62
|
+
holder[cacheKey] = ProxyUtil.safeProxy(loadUnitInstance, getter);
|
|
63
|
+
}
|
|
64
|
+
return holder[cacheKey];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Compatible the context module, only for koa application
|
|
68
|
+
* @param contextPrototype - The prototype of the context
|
|
69
|
+
* @param loadUnitInstances - The load unit instances
|
|
70
|
+
*/
|
|
71
|
+
static contextModuleCompatible(contextPrototype, loadUnitInstances) {
|
|
72
|
+
const loadUnitInstanceMap = loadUnitInstances.reduce((p, c) => {
|
|
73
|
+
p[c.name] = c;
|
|
74
|
+
return p;
|
|
75
|
+
}, {});
|
|
76
|
+
Reflect.defineProperty(contextPrototype, "module", {
|
|
77
|
+
configurable: true,
|
|
78
|
+
enumerable: true,
|
|
79
|
+
get() {
|
|
80
|
+
if (!this._moduleProxy) {
|
|
81
|
+
const ctxModule = Object.create(loadUnitInstanceMap);
|
|
82
|
+
this._moduleProxy = ProxyUtil.safeProxy(ctxModule, (_, p) => {
|
|
83
|
+
const loadUnitInstance = Reflect.get(ctxModule, p);
|
|
84
|
+
if (!loadUnitInstance) return;
|
|
85
|
+
return CompatibleUtil.contextModuleProxyFactory(ctxModule, this, loadUnitInstance);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return this._moduleProxy;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
static clean() {
|
|
93
|
+
this.singletonProtoCache.clear();
|
|
94
|
+
this.requestProtoCache.clear();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
//#endregion
|
|
99
|
+
export { CompatibleUtil };
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { LifecycleHook } from "@eggjs/lifecycle";
|
|
2
|
+
import { LoadUnit, LoadUnitLifecycleContext } from "@eggjs/metadata";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/ConfigSourceLoadUnitHook.d.ts
|
|
5
|
+
|
|
3
6
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
* Copy from standalone/src/ConfigSourceLoadUnitHook
|
|
8
|
+
* Hook for inject moduleConfig.
|
|
9
|
+
* Add default qualifier value is current module name.
|
|
10
|
+
*/
|
|
11
|
+
declare class ConfigSourceLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
12
|
+
preCreate(ctx: LoadUnitLifecycleContext, loadUnit: LoadUnit): Promise<void>;
|
|
10
13
|
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { ConfigSourceLoadUnitHook };
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConfigSourceQualifier, ConfigSourceQualifierAttribute, PrototypeUtil, QualifierUtil } from "@eggjs/core-decorator";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/ConfigSourceLoadUnitHook.ts
|
|
2
4
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnU291cmNlTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9Db25maWdTb3VyY2VMb2FkVW5pdEhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLDhCQUE4QixHQUMvQixNQUFNLHVCQUF1QixDQUFDO0FBRy9COzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBNkIsRUFBRSxRQUFrQjtRQUMvRCxNQUFNLFNBQVMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsS0FBSyxNQUFNLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM5QixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLGNBQWMsQ0FBQyxDQUFDO1lBQ25GLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUM1RCxLQUFLLEVBQ0wsY0FBYyxFQUNkLDhCQUE4QixDQUMvQixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2pELHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
5
|
+
* Copy from standalone/src/ConfigSourceLoadUnitHook
|
|
6
|
+
* Hook for inject moduleConfig.
|
|
7
|
+
* Add default qualifier value is current module name.
|
|
8
|
+
*/
|
|
9
|
+
var ConfigSourceLoadUnitHook = class {
|
|
10
|
+
async preCreate(ctx, loadUnit) {
|
|
11
|
+
const classList = await ctx.loader.load();
|
|
12
|
+
for (const clazz of classList) {
|
|
13
|
+
const moduleConfigObject = PrototypeUtil.getInjectObjects(clazz).find((t) => t.objName === "moduleConfig");
|
|
14
|
+
const configSourceQualifier = QualifierUtil.getProperQualifier(clazz, "moduleConfig", ConfigSourceQualifierAttribute);
|
|
15
|
+
if (moduleConfigObject && !configSourceQualifier) ConfigSourceQualifier(loadUnit.name)(clazz.prototype, moduleConfigObject.refName);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { ConfigSourceLoadUnitHook };
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { EggProtoImplClass } from "@eggjs/core-decorator";
|
|
2
|
+
import { Loader } from "@eggjs/metadata";
|
|
3
|
+
import { Application } from "egg";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/EggAppLoader.d.ts
|
|
6
|
+
declare const APP_CLAZZ_BLACK_LIST: readonly string[];
|
|
7
|
+
declare const CONTEXT_CLAZZ_BLACK_LIST: readonly string[];
|
|
8
|
+
declare const DEFAULT_APP_CLAZZ: readonly string[];
|
|
9
|
+
declare const DEFAULT_CONTEXT_CLAZZ: readonly string[];
|
|
10
|
+
declare class EggAppLoader implements Loader {
|
|
11
|
+
private readonly app;
|
|
12
|
+
private readonly moduleConfigLoader;
|
|
13
|
+
constructor(app: Application);
|
|
14
|
+
private buildClazz;
|
|
15
|
+
private buildAppLoggerClazz;
|
|
16
|
+
private getLoggerNames;
|
|
17
|
+
load(): Promise<EggProtoImplClass[]>;
|
|
16
18
|
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { APP_CLAZZ_BLACK_LIST, CONTEXT_CLAZZ_BLACK_LIST, DEFAULT_APP_CLAZZ, DEFAULT_CONTEXT_CLAZZ, EggAppLoader };
|
package/dist/lib/EggAppLoader.js
CHANGED
|
@@ -1,116 +1,105 @@
|
|
|
1
|
-
import { TeggError } from '@eggjs/metadata';
|
|
2
|
-
import { AccessLevel, EggQualifierAttribute, EggType, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, ObjectInitType, PrototypeUtil, QualifierUtil, } from '@eggjs/core-decorator';
|
|
3
|
-
import { ObjectUtils } from '@eggjs/tegg-common-util';
|
|
4
|
-
import { BackgroundTaskHelper } from '@eggjs/background-task';
|
|
5
|
-
import { EggObjectFactory } from '@eggjs/dynamic-inject-runtime';
|
|
6
|
-
import { ModuleConfigLoader } from "./ModuleConfigLoader.js";
|
|
7
1
|
import { COMPATIBLE_PROTO_IMPLE_TYPE } from "./EggCompatibleProtoImpl.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
EggObjectFactory,
|
|
113
|
-
];
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQXBwTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dBcHBMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxXQUFXLEVBRVgscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCwwQkFBMEIsRUFDMUIsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFzQixDQUFDLGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRTdGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQjtJQUN6RCxxREFBcUQ7SUFDckQsUUFBUTtDQUNULENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBc0IsRUFBRSxDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxZQUFZO0lBQ04sR0FBRyxDQUFjO0lBQ2pCLGtCQUFrQixDQUFxQjtJQUV4RCxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFD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
|
|
2
|
+
import { ModuleConfigLoader } from "./ModuleConfigLoader.js";
|
|
3
|
+
import { AccessLevel, EggQualifierAttribute, EggType, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, ObjectInitType, PrototypeUtil, QualifierUtil } from "@eggjs/core-decorator";
|
|
4
|
+
import { TeggError } from "@eggjs/metadata";
|
|
5
|
+
import { ObjectUtils } from "@eggjs/tegg-common-util";
|
|
6
|
+
import { BackgroundTaskHelper } from "@eggjs/background-task";
|
|
7
|
+
import { EggObjectFactory } from "@eggjs/dynamic-inject-runtime";
|
|
8
|
+
|
|
9
|
+
//#region src/lib/EggAppLoader.ts
|
|
10
|
+
const APP_CLAZZ_BLACK_LIST = ["eggObjectFactory", "moduleConfigs"];
|
|
11
|
+
const CONTEXT_CLAZZ_BLACK_LIST = ["logger"];
|
|
12
|
+
const DEFAULT_APP_CLAZZ = [];
|
|
13
|
+
const DEFAULT_CONTEXT_CLAZZ = ["user"];
|
|
14
|
+
var EggAppLoader = class {
|
|
15
|
+
app;
|
|
16
|
+
moduleConfigLoader;
|
|
17
|
+
constructor(app) {
|
|
18
|
+
this.app = app;
|
|
19
|
+
this.moduleConfigLoader = new ModuleConfigLoader(this.app);
|
|
20
|
+
}
|
|
21
|
+
buildClazz(name, eggType) {
|
|
22
|
+
const app = this.app;
|
|
23
|
+
let func;
|
|
24
|
+
if (eggType === EggType.APP) func = function() {
|
|
25
|
+
return app[name];
|
|
26
|
+
};
|
|
27
|
+
else func = function() {
|
|
28
|
+
const ctx = app.currentContext;
|
|
29
|
+
if (!ctx) throw TeggError.create(`Can not read property \`${name}\` because egg ctx has been destroyed`, "read_after_ctx_destroyed");
|
|
30
|
+
return ctx[name];
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(func, "name", {
|
|
33
|
+
value: name,
|
|
34
|
+
writable: false,
|
|
35
|
+
enumerable: false,
|
|
36
|
+
configurable: true
|
|
37
|
+
});
|
|
38
|
+
PrototypeUtil.setIsEggPrototype(func);
|
|
39
|
+
PrototypeUtil.setFilePath(func, "mock_file_path");
|
|
40
|
+
PrototypeUtil.setProperty(func, {
|
|
41
|
+
name,
|
|
42
|
+
initType: ObjectInitType.SINGLETON,
|
|
43
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
44
|
+
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE
|
|
45
|
+
});
|
|
46
|
+
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, "app");
|
|
47
|
+
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
48
|
+
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, eggType);
|
|
49
|
+
return func;
|
|
50
|
+
}
|
|
51
|
+
buildAppLoggerClazz(name) {
|
|
52
|
+
const app = this.app;
|
|
53
|
+
const func = function() {
|
|
54
|
+
return app.getLogger(name);
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(func, "name", {
|
|
57
|
+
value: name,
|
|
58
|
+
writable: false,
|
|
59
|
+
enumerable: false,
|
|
60
|
+
configurable: true
|
|
61
|
+
});
|
|
62
|
+
PrototypeUtil.setIsEggPrototype(func);
|
|
63
|
+
PrototypeUtil.setFilePath(func, "mock_file_path");
|
|
64
|
+
PrototypeUtil.setProperty(func, {
|
|
65
|
+
name,
|
|
66
|
+
initType: ObjectInitType.SINGLETON,
|
|
67
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
68
|
+
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE
|
|
69
|
+
});
|
|
70
|
+
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, "app");
|
|
71
|
+
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
72
|
+
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, EggType.APP);
|
|
73
|
+
return func;
|
|
74
|
+
}
|
|
75
|
+
getLoggerNames(ctxClazzNames, singletonClazzNames) {
|
|
76
|
+
return Array.from(this.app.loggers.keys()).filter((t) => !ctxClazzNames.includes(t) && !singletonClazzNames.includes(t));
|
|
77
|
+
}
|
|
78
|
+
async load() {
|
|
79
|
+
const app = this.app;
|
|
80
|
+
const appProperties = ObjectUtils.getProperties(app);
|
|
81
|
+
const contextProperties = ObjectUtils.getProperties(app.context);
|
|
82
|
+
const allSingletonClazzNameSet = new Set([...appProperties, ...DEFAULT_APP_CLAZZ]);
|
|
83
|
+
APP_CLAZZ_BLACK_LIST.forEach((t) => allSingletonClazzNameSet.delete(t));
|
|
84
|
+
const allSingletonClazzNames = Array.from(allSingletonClazzNameSet);
|
|
85
|
+
const allContextClazzNamesSet = new Set([...contextProperties, ...DEFAULT_CONTEXT_CLAZZ]);
|
|
86
|
+
CONTEXT_CLAZZ_BLACK_LIST.forEach((t) => allContextClazzNamesSet.delete(t));
|
|
87
|
+
const allContextClazzNames = Array.from(allContextClazzNamesSet);
|
|
88
|
+
const loggerNames = this.getLoggerNames(allContextClazzNames, allSingletonClazzNames);
|
|
89
|
+
const allSingletonClazzs = allSingletonClazzNames.map((name) => this.buildClazz(name, EggType.APP));
|
|
90
|
+
const allContextClazzs = allContextClazzNames.map((name) => this.buildClazz(name, EggType.CONTEXT));
|
|
91
|
+
const appLoggerClazzs = loggerNames.map((name) => this.buildAppLoggerClazz(name));
|
|
92
|
+
const moduleConfigList = this.moduleConfigLoader.loadModuleConfigList();
|
|
93
|
+
return [
|
|
94
|
+
...allSingletonClazzs,
|
|
95
|
+
...allContextClazzs,
|
|
96
|
+
...appLoggerClazzs,
|
|
97
|
+
...moduleConfigList,
|
|
98
|
+
BackgroundTaskHelper,
|
|
99
|
+
EggObjectFactory
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
export { APP_CLAZZ_BLACK_LIST, CONTEXT_CLAZZ_BLACK_LIST, DEFAULT_APP_CLAZZ, DEFAULT_CONTEXT_CLAZZ, EggAppLoader };
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { EggCompatibleProtoImpl } from "./EggCompatibleProtoImpl.js";
|
|
2
|
+
import { EggObjectName } from "@eggjs/core-decorator";
|
|
3
|
+
import { EggPrototype } from "@eggjs/metadata";
|
|
4
|
+
import { EggObject } from "@eggjs/tegg-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/EggCompatibleObject.d.ts
|
|
7
|
+
declare class EggCompatibleObject implements EggObject {
|
|
8
|
+
#private;
|
|
9
|
+
readonly isReady: boolean;
|
|
10
|
+
readonly proto: EggCompatibleProtoImpl;
|
|
11
|
+
readonly name: EggObjectName;
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly isContext: boolean;
|
|
14
|
+
constructor(name: EggObjectName, proto: EggCompatibleProtoImpl);
|
|
15
|
+
get obj(): object;
|
|
16
|
+
injectProperty(): void;
|
|
17
|
+
static createObject(name: EggObjectName, proto: EggPrototype): Promise<EggCompatibleObject>;
|
|
16
18
|
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { EggCompatibleObject };
|