@eggjs/tegg-plugin 4.0.0-beta.1 → 4.0.0-beta.11
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/README.md +13 -1
- package/dist/app/extend/application.d.ts +50 -0
- package/dist/app/extend/application.js +79 -0
- package/dist/app/extend/application.unittest.d.ts +22 -0
- package/{app → dist/app}/extend/application.unittest.js +13 -9
- package/dist/app/extend/context.d.ts +20 -0
- package/dist/app/extend/context.js +35 -0
- package/{app → dist/app}/middleware/tegg_ctx_lifecycle_middleware.d.ts +1 -1
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +5 -0
- package/{app.d.ts → dist/app.d.ts} +4 -4
- package/dist/app.js +63 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/{lib → dist/lib}/AppLoadUnit.d.ts +2 -2
- package/dist/lib/AppLoadUnit.js +90 -0
- package/{lib → dist/lib}/AppLoadUnitInstance.d.ts +3 -3
- package/dist/lib/AppLoadUnitInstance.js +82 -0
- package/{lib → dist/lib}/CompatibleUtil.d.ts +2 -2
- package/dist/lib/CompatibleUtil.js +95 -0
- package/{lib → dist/lib}/ConfigSourceLoadUnitHook.d.ts +2 -2
- package/{lib → dist/lib}/ConfigSourceLoadUnitHook.js +2 -1
- package/{lib → dist/lib}/EggAppLoader.d.ts +2 -2
- package/dist/lib/EggAppLoader.js +128 -0
- package/{lib → dist/lib}/EggCompatibleObject.d.ts +4 -4
- package/{lib → dist/lib}/EggCompatibleObject.js +3 -2
- package/{lib → dist/lib}/EggCompatibleProtoImpl.d.ts +2 -2
- package/dist/lib/EggCompatibleProtoImpl.js +52 -0
- package/{lib → dist/lib}/EggContextCompatibleHook.d.ts +3 -3
- package/dist/lib/EggContextCompatibleHook.js +44 -0
- package/{lib → dist/lib}/EggContextHandler.d.ts +3 -3
- package/dist/lib/EggContextHandler.js +26 -0
- package/{lib → dist/lib}/EggContextImpl.d.ts +1 -1
- package/dist/lib/EggContextImpl.js +15 -0
- package/dist/lib/EggModuleLoader.js +54 -0
- package/{lib → dist/lib}/EggQualifierProtoHook.d.ts +2 -2
- package/dist/lib/EggQualifierProtoHook.js +62 -0
- package/{lib → dist/lib}/ModuleConfigLoader.d.ts +1 -1
- package/dist/lib/ModuleConfigLoader.js +81 -0
- package/{lib → dist/lib}/ModuleHandler.d.ts +2 -2
- package/dist/lib/ModuleHandler.js +53 -0
- package/dist/lib/Utils.js +36 -0
- package/dist/lib/ctx_lifecycle_middleware.d.ts +2 -0
- package/{lib → dist/lib}/ctx_lifecycle_middleware.js +7 -6
- package/dist/lib/run_in_background.js +58 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.js +5 -0
- package/package.json +63 -45
- package/app/extend/application.d.ts +0 -24
- package/app/extend/application.js +0 -76
- package/app/extend/application.unittest.d.ts +0 -8
- package/app/extend/context.d.ts +0 -15
- package/app/extend/context.js +0 -32
- package/app/middleware/tegg_ctx_lifecycle_middleware.js +0 -5
- package/app.js +0 -63
- package/index.d.ts +0 -3
- package/index.js +0 -4
- package/lib/AppLoadUnit.js +0 -85
- package/lib/AppLoadUnitInstance.js +0 -82
- package/lib/CompatibleUtil.js +0 -94
- package/lib/EggAppLoader.js +0 -127
- package/lib/EggCompatibleProtoImpl.js +0 -51
- package/lib/EggContextCompatibleHook.js +0 -42
- package/lib/EggContextHandler.js +0 -25
- package/lib/EggContextImpl.js +0 -15
- package/lib/EggModuleLoader.js +0 -53
- package/lib/EggQualifierProtoHook.js +0 -50
- package/lib/ModuleConfigLoader.js +0 -80
- package/lib/ModuleHandler.js +0 -53
- package/lib/Utils.js +0 -36
- package/lib/ctx_lifecycle_middleware.d.ts +0 -2
- package/lib/run_in_background.js +0 -55
- package/lib/types.d.ts +0 -43
- package/lib/types.js +0 -2
- package/typings/index.d.ts +0 -1
- /package/{lib → dist/lib}/EggModuleLoader.d.ts +0 -0
- /package/{lib → dist/lib}/Utils.d.ts +0 -0
- /package/{lib → dist/lib}/run_in_background.d.ts +0 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Application, Context } from 'egg';
|
|
2
|
+
import { EggPrototypeFactory } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { InitTypeQualifierAttribute, ObjectInitType } from '@eggjs/tegg';
|
|
4
|
+
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
5
|
+
import { ProxyUtil } from '@eggjs/tegg-common-util';
|
|
6
|
+
export class CompatibleUtil {
|
|
7
|
+
static singletonProtoCache = new Map();
|
|
8
|
+
static requestProtoCache = new Map();
|
|
9
|
+
static getSingletonProto(name) {
|
|
10
|
+
if (!this.singletonProtoCache.has(name)) {
|
|
11
|
+
const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, [{
|
|
12
|
+
attribute: InitTypeQualifierAttribute,
|
|
13
|
+
value: ObjectInitType.SINGLETON,
|
|
14
|
+
}]);
|
|
15
|
+
this.singletonProtoCache.set(name, proto);
|
|
16
|
+
}
|
|
17
|
+
return this.singletonProtoCache.get(name);
|
|
18
|
+
}
|
|
19
|
+
static getRequestProto(name) {
|
|
20
|
+
if (!this.requestProtoCache.has(name)) {
|
|
21
|
+
const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, [{
|
|
22
|
+
attribute: InitTypeQualifierAttribute,
|
|
23
|
+
value: ObjectInitType.CONTEXT,
|
|
24
|
+
}]);
|
|
25
|
+
this.requestProtoCache.set(name, proto);
|
|
26
|
+
}
|
|
27
|
+
return this.requestProtoCache.get(name);
|
|
28
|
+
}
|
|
29
|
+
static singletonModuleProxyFactory(app, loadUnitInstance) {
|
|
30
|
+
let deprecated = false;
|
|
31
|
+
return function (_, p) {
|
|
32
|
+
const proto = CompatibleUtil.getSingletonProto(p);
|
|
33
|
+
const eggObj = EggContainerFactory.getEggObject(proto);
|
|
34
|
+
if (!deprecated) {
|
|
35
|
+
deprecated = true;
|
|
36
|
+
app.deprecate(`[egg/module] Please use await app.getEggObject(clazzName) instead of app.${loadUnitInstance.name}.${String(p)}`);
|
|
37
|
+
}
|
|
38
|
+
return eggObj.obj;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
static appCompatible(app, loadUnitInstance) {
|
|
42
|
+
const moduleLoadUnitProxy = ProxyUtil.safeProxy(loadUnitInstance, CompatibleUtil.singletonModuleProxyFactory(app, loadUnitInstance));
|
|
43
|
+
Reflect.defineProperty(app.module, loadUnitInstance.name, {
|
|
44
|
+
configurable: true,
|
|
45
|
+
value: moduleLoadUnitProxy,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
static contextModuleProxyFactory(holder, ctx, loadUnitInstance) {
|
|
49
|
+
const cacheKey = `_${loadUnitInstance.name}Proxy`;
|
|
50
|
+
if (!holder[cacheKey]) {
|
|
51
|
+
let deprecated = false;
|
|
52
|
+
const getter = function (_, p) {
|
|
53
|
+
const proto = CompatibleUtil.getRequestProto(p);
|
|
54
|
+
const eggObj = EggContainerFactory.getEggObject(proto, p);
|
|
55
|
+
if (!deprecated) {
|
|
56
|
+
deprecated = true;
|
|
57
|
+
ctx.app.deprecate(`[egg/module] Please use await ctx.getEggObject(clazzName) instead of ctx.${loadUnitInstance.name}.${String(p)}`);
|
|
58
|
+
}
|
|
59
|
+
return eggObj.obj;
|
|
60
|
+
};
|
|
61
|
+
holder[cacheKey] = ProxyUtil.safeProxy(loadUnitInstance, getter);
|
|
62
|
+
}
|
|
63
|
+
return holder[cacheKey];
|
|
64
|
+
}
|
|
65
|
+
static contextModuleCompatible(ctx, loadUnitInstances) {
|
|
66
|
+
const loadUnitInstanceMap = loadUnitInstances.reduce((p, c) => {
|
|
67
|
+
p[c.name] = c;
|
|
68
|
+
return p;
|
|
69
|
+
}, {});
|
|
70
|
+
Reflect.defineProperty(ctx, 'module', {
|
|
71
|
+
configurable: true,
|
|
72
|
+
enumerable: true,
|
|
73
|
+
get() {
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
75
|
+
const ctx = this;
|
|
76
|
+
if (!this._moduleProxy) {
|
|
77
|
+
const ctxModule = Object.create(loadUnitInstanceMap);
|
|
78
|
+
this._moduleProxy = ProxyUtil.safeProxy(ctxModule, (_, p) => {
|
|
79
|
+
const loadUnitInstance = Reflect.get(ctxModule, p);
|
|
80
|
+
if (!loadUnitInstance) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
return CompatibleUtil.contextModuleProxyFactory(ctxModule, ctx, loadUnitInstance);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return this._moduleProxy;
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
static clean() {
|
|
91
|
+
this.singletonProtoCache.clear();
|
|
92
|
+
this.requestProtoCache.clear();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGF0aWJsZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0NvbXBhdGlibGVVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQzNDLE9BQU8sRUFBcUIsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLG1CQUFtQixHQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxpQkFBaUIsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVyRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBaUI7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztvQkFDeEUsU0FBUyxFQUFFLDBCQUEwQjtvQkFDckMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxTQUFTO2lCQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFl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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
1
|
+
import { type LoadUnit, type LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
3
3
|
/**
|
|
4
4
|
* Copy from standalone/src/ConfigSourceLoadUnitHook
|
|
5
5
|
* Hook for inject moduleConfig.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {} from '@eggjs/tegg-metadata';
|
|
1
2
|
import { PrototypeUtil, QualifierUtil, ConfigSourceQualifier, ConfigSourceQualifierAttribute, } from '@eggjs/tegg';
|
|
2
3
|
/**
|
|
3
4
|
* Copy from standalone/src/ConfigSourceLoadUnitHook
|
|
@@ -17,4 +18,4 @@ export class ConfigSourceLoadUnitHook {
|
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnU291cmNlTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9Db25maWdTb3VyY2VMb2FkVW5pdEhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnRCxNQUFNLHNCQUFzQixDQUFDO0FBQ3BGLE9BQU8sRUFFTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSxhQUFhLENBQUM7QUFFckI7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUE2QixFQUFFLFFBQWtCO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLGNBQWMsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUN0SCxJQUFJLGtCQUFrQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDakQscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEYsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Application } from 'egg';
|
|
2
|
-
import { Loader } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { EggProtoImplClass } from '@eggjs/tegg';
|
|
2
|
+
import { type Loader } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { type EggProtoImplClass } from '@eggjs/tegg';
|
|
4
4
|
export declare const APP_CLAZZ_BLACK_LIST: string[];
|
|
5
5
|
export declare const CONTEXT_CLAZZ_BLACK_LIST: string[];
|
|
6
6
|
export declare const DEFAULT_APP_CLAZZ: string[];
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Application } from 'egg';
|
|
2
|
+
import { TeggError } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { AccessLevel, EggQualifierAttribute, EggType, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, ObjectInitType, PrototypeUtil, QualifierUtil, } from '@eggjs/tegg';
|
|
4
|
+
import { ObjectUtils } from '@eggjs/tegg-common-util';
|
|
5
|
+
import { BackgroundTaskHelper } from '@eggjs/tegg-background-task';
|
|
6
|
+
import { EggObjectFactory } from '@eggjs/tegg-dynamic-inject-runtime';
|
|
7
|
+
import { ModuleConfigLoader } from "./ModuleConfigLoader.js";
|
|
8
|
+
import { COMPATIBLE_PROTO_IMPLE_TYPE } from "./EggCompatibleProtoImpl.js";
|
|
9
|
+
export const APP_CLAZZ_BLACK_LIST = [
|
|
10
|
+
'eggObjectFactory',
|
|
11
|
+
'moduleConfigs',
|
|
12
|
+
];
|
|
13
|
+
export const CONTEXT_CLAZZ_BLACK_LIST = [
|
|
14
|
+
// just use the app.logger, ctx logger is deprecated.
|
|
15
|
+
'logger',
|
|
16
|
+
];
|
|
17
|
+
export const DEFAULT_APP_CLAZZ = [];
|
|
18
|
+
export const DEFAULT_CONTEXT_CLAZZ = [
|
|
19
|
+
'user',
|
|
20
|
+
];
|
|
21
|
+
export class EggAppLoader {
|
|
22
|
+
app;
|
|
23
|
+
moduleConfigLoader;
|
|
24
|
+
constructor(app) {
|
|
25
|
+
this.app = app;
|
|
26
|
+
this.moduleConfigLoader = new ModuleConfigLoader(this.app);
|
|
27
|
+
}
|
|
28
|
+
buildClazz(name, eggType) {
|
|
29
|
+
const app = this.app;
|
|
30
|
+
let func;
|
|
31
|
+
if (eggType === EggType.APP) {
|
|
32
|
+
func = function () {
|
|
33
|
+
return app[name];
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
func = function () {
|
|
38
|
+
const ctx = app.currentContext;
|
|
39
|
+
if (!ctx) {
|
|
40
|
+
// ctx has been destroyed, throw humanize error info
|
|
41
|
+
throw TeggError.create(`Can not read property \`${name}\` because egg ctx has been destroyed`, 'read_after_ctx_destroyed');
|
|
42
|
+
}
|
|
43
|
+
return ctx[name];
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
Object.defineProperty(func, 'name', {
|
|
47
|
+
value: name,
|
|
48
|
+
writable: false,
|
|
49
|
+
enumerable: false,
|
|
50
|
+
configurable: true,
|
|
51
|
+
});
|
|
52
|
+
PrototypeUtil.setIsEggPrototype(func);
|
|
53
|
+
PrototypeUtil.setFilePath(func, 'mock_file_path');
|
|
54
|
+
PrototypeUtil.setProperty(func, {
|
|
55
|
+
name,
|
|
56
|
+
initType: ObjectInitType.SINGLETON,
|
|
57
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
58
|
+
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE,
|
|
59
|
+
});
|
|
60
|
+
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, 'app');
|
|
61
|
+
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
62
|
+
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, eggType);
|
|
63
|
+
return func;
|
|
64
|
+
}
|
|
65
|
+
buildAppLoggerClazz(name) {
|
|
66
|
+
const app = this.app;
|
|
67
|
+
const func = function () {
|
|
68
|
+
return app.getLogger(name);
|
|
69
|
+
};
|
|
70
|
+
Object.defineProperty(func, 'name', {
|
|
71
|
+
value: name,
|
|
72
|
+
writable: false,
|
|
73
|
+
enumerable: false,
|
|
74
|
+
configurable: true,
|
|
75
|
+
});
|
|
76
|
+
PrototypeUtil.setIsEggPrototype(func);
|
|
77
|
+
PrototypeUtil.setFilePath(func, 'mock_file_path');
|
|
78
|
+
PrototypeUtil.setProperty(func, {
|
|
79
|
+
name,
|
|
80
|
+
initType: ObjectInitType.SINGLETON,
|
|
81
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
82
|
+
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE,
|
|
83
|
+
});
|
|
84
|
+
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, 'app');
|
|
85
|
+
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
86
|
+
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, EggType.APP);
|
|
87
|
+
return func;
|
|
88
|
+
}
|
|
89
|
+
getLoggerNames(ctxClazzNames, singletonClazzNames) {
|
|
90
|
+
const loggerNames = Array.from(this.app.loggers.keys());
|
|
91
|
+
// filter logger/coreLogger
|
|
92
|
+
return loggerNames.filter(t => !ctxClazzNames.includes(t) && !singletonClazzNames.includes(t));
|
|
93
|
+
}
|
|
94
|
+
async load() {
|
|
95
|
+
const app = this.app;
|
|
96
|
+
const appProperties = ObjectUtils.getProperties(app);
|
|
97
|
+
const contextProperties = ObjectUtils.getProperties(app.context);
|
|
98
|
+
// custom plugin may define property conflict with default list
|
|
99
|
+
const allSingletonClazzNameSet = new Set([
|
|
100
|
+
...appProperties,
|
|
101
|
+
...DEFAULT_APP_CLAZZ,
|
|
102
|
+
]);
|
|
103
|
+
APP_CLAZZ_BLACK_LIST.forEach(t => allSingletonClazzNameSet.delete(t));
|
|
104
|
+
const allSingletonClazzNames = Array.from(allSingletonClazzNameSet);
|
|
105
|
+
const allContextClazzNamesSet = new Set([
|
|
106
|
+
...contextProperties,
|
|
107
|
+
...DEFAULT_CONTEXT_CLAZZ,
|
|
108
|
+
]);
|
|
109
|
+
CONTEXT_CLAZZ_BLACK_LIST.forEach(t => allContextClazzNamesSet.delete(t));
|
|
110
|
+
const allContextClazzNames = Array.from(allContextClazzNamesSet);
|
|
111
|
+
const loggerNames = this.getLoggerNames(allContextClazzNames, allSingletonClazzNames);
|
|
112
|
+
const allSingletonClazzs = allSingletonClazzNames.map(name => this.buildClazz(name, EggType.APP));
|
|
113
|
+
const allContextClazzs = allContextClazzNames.map(name => this.buildClazz(name, EggType.CONTEXT));
|
|
114
|
+
const appLoggerClazzs = loggerNames.map(name => this.buildAppLoggerClazz(name));
|
|
115
|
+
const moduleConfigList = this.moduleConfigLoader.loadModuleConfigList();
|
|
116
|
+
return [
|
|
117
|
+
...allSingletonClazzs,
|
|
118
|
+
...allContextClazzs,
|
|
119
|
+
...appLoggerClazzs,
|
|
120
|
+
...moduleConfigList,
|
|
121
|
+
// inner helper class list
|
|
122
|
+
// TODO: should auto the inner class
|
|
123
|
+
BackgroundTaskHelper,
|
|
124
|
+
EggObjectFactory,
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQXBwTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dBcHBMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNsQyxPQUFPLEVBQWUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFFWCxxQkFBcUIsRUFDckIsT0FBTyxFQUNQLDBCQUEwQixFQUMxQiw4QkFBOEIsRUFDOUIsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGtCQUFrQjtJQUNsQixlQUFlO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxxREFBcUQ7SUFDckQsUUFBUTtDQUNULENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsTUFBTTtDQUNQLENBQUM7QUFFRixNQUFNLE9BQU8sWUFBWTtJQUNOLEdBQUcsQ0FBYztJQUNqQixrQkFBa0IsQ0FBcUI7SUFFeEQsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxr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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { type EggObject } from '@eggjs/tegg-runtime';
|
|
2
|
+
import { type EggObjectName } from '@eggjs/tegg';
|
|
3
|
+
import { type EggPrototype } from '@eggjs/tegg-metadata';
|
|
4
|
+
import { EggCompatibleProtoImpl } from './EggCompatibleProtoImpl.ts';
|
|
5
5
|
declare const OBJ: unique symbol;
|
|
6
6
|
export declare class EggCompatibleObject implements EggObject {
|
|
7
7
|
readonly isReady: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { EggCompatibleProtoImpl } from './EggCompatibleProtoImpl.js';
|
|
2
1
|
import { EggObjectFactory, } from '@eggjs/tegg-runtime';
|
|
3
2
|
import { IdenticalUtil, EggType, EggQualifierAttribute } from '@eggjs/tegg';
|
|
3
|
+
import {} from '@eggjs/tegg-metadata';
|
|
4
|
+
import { EggCompatibleProtoImpl } from "./EggCompatibleProtoImpl.js";
|
|
4
5
|
const OBJ = Symbol('EggCompatibleObject#obj');
|
|
5
6
|
export class EggCompatibleObject {
|
|
6
7
|
isReady = true;
|
|
@@ -38,4 +39,4 @@ export class EggCompatibleObject {
|
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
EggObjectFactory.registerEggObjectCreateMethod(EggCompatibleProtoImpl, EggCompatibleObject.createObject);
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29tcGF0aWJsZU9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRWdnQ29tcGF0aWJsZU9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBc0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUU5QyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDekIsQ0FBQyxHQUFHLENBQUMsQ0FBUztJQUNiLEtBQUssQ0FBeUI7SUFDOUIsSUFBSSxDQUFnQjtJQUNwQixFQUFFLENBQVM7SUFDWCxTQUFTLENBQVU7SUFFNUIsWUFBWSxJQUFtQixFQUFFLEtBQTZCO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3RCLFNBQVMsRUFBRSxxQkFBcUI7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlDQUFpQztJQUNqQywrQkFBK0I7SUFDL0IsNkJBQTZCO0lBQzdCLElBQUksR0FBRztRQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBbUIsRUFBRSxLQUFtQjtRQUNoRSxPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQStCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFFRCxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AccessLevel, EggProtoImplClass, EggPrototypeName, MetaDataKey, ObjectInitTypeLike, QualifierInfo, Id, QualifierValue } from '@eggjs/tegg';
|
|
2
|
-
import { EggPrototype, InjectObjectProto, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
1
|
+
import { AccessLevel, type EggProtoImplClass, type EggPrototypeName, type MetaDataKey, type ObjectInitTypeLike, type QualifierInfo, type Id, type QualifierValue } from '@eggjs/tegg';
|
|
2
|
+
import { type EggPrototype, type InjectObjectProto, type EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
3
|
export declare const COMPATIBLE_PROTO_IMPLE_TYPE = "EGG_COMPATIBLE";
|
|
4
4
|
export declare class EggCompatibleProtoImpl implements EggPrototype {
|
|
5
5
|
[key: symbol]: PropertyDescriptor;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { AccessLevel, MetadataUtil, QualifierUtil, IdenticalUtil, } from '@eggjs/tegg';
|
|
2
|
+
import {} from '@eggjs/tegg-metadata';
|
|
3
|
+
export const COMPATIBLE_PROTO_IMPLE_TYPE = 'EGG_COMPATIBLE';
|
|
4
|
+
export class EggCompatibleProtoImpl {
|
|
5
|
+
clazz;
|
|
6
|
+
qualifiers;
|
|
7
|
+
id;
|
|
8
|
+
name;
|
|
9
|
+
initType;
|
|
10
|
+
accessLevel;
|
|
11
|
+
injectObjects;
|
|
12
|
+
loadUnitId;
|
|
13
|
+
constructor(id, name, clazz, initType, loadUnitId, qualifiers) {
|
|
14
|
+
this.id = id;
|
|
15
|
+
this.clazz = clazz;
|
|
16
|
+
this.name = name;
|
|
17
|
+
this.initType = initType;
|
|
18
|
+
this.accessLevel = AccessLevel.PUBLIC;
|
|
19
|
+
this.injectObjects = [];
|
|
20
|
+
this.loadUnitId = loadUnitId;
|
|
21
|
+
this.qualifiers = qualifiers;
|
|
22
|
+
}
|
|
23
|
+
verifyQualifiers(qualifiers) {
|
|
24
|
+
for (const qualifier of qualifiers) {
|
|
25
|
+
if (!this.verifyQualifier(qualifier)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
verifyQualifier(qualifier) {
|
|
32
|
+
const selfQualifiers = this.qualifiers.find(t => t.attribute === qualifier.attribute);
|
|
33
|
+
return selfQualifiers?.value === qualifier.value;
|
|
34
|
+
}
|
|
35
|
+
getQualifier(attribute) {
|
|
36
|
+
return this.qualifiers.find(t => t.attribute === attribute)?.value;
|
|
37
|
+
}
|
|
38
|
+
constructEggObject() {
|
|
39
|
+
return Reflect.apply(this.clazz, null, []);
|
|
40
|
+
}
|
|
41
|
+
getMetaData(metadataKey) {
|
|
42
|
+
return MetadataUtil.getMetaData(metadataKey, this.clazz);
|
|
43
|
+
}
|
|
44
|
+
static create(ctx) {
|
|
45
|
+
const { clazz, loadUnit } = ctx;
|
|
46
|
+
const name = ctx.prototypeInfo.name;
|
|
47
|
+
const id = IdenticalUtil.createProtoId(loadUnit.id, name);
|
|
48
|
+
const proto = new EggCompatibleProtoImpl(id, name, clazz, ctx.prototypeInfo.initType, loadUnit.id, QualifierUtil.mergeQualifiers(QualifierUtil.getProtoQualifiers(clazz), (ctx.prototypeInfo.qualifiers ?? [])));
|
|
49
|
+
return proto;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29tcGF0aWJsZVByb3RvSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRWdnQ29tcGF0aWJsZVByb3RvSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUdYLFlBQVksRUFHWixhQUFhLEVBRWIsYUFBYSxHQUVkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFJTixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLGdCQUFnQixDQUFDO0FBRTVELE1BQU0sT0FBTyxzQkFBc0I7SUFFaEIsS0FBSyxDQUFvQjtJQUN6QixVQUFVLENBQWtCO0lBRXBDLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBbUI7SUFDdkIsUUFBUSxDQUFxQjtJQUM3QixXQUFXLENBQWM7SUFDekIsYUFBYSxDQUFzQjtJQUNuQyxVQUFVLENBQUs7SUFFeEIsWUFDRSxFQUFVLEVBQ1YsSUFBc0IsRUFDdEIsS0FBd0IsRUFDeEIsUUFBNEIsRUFDNUIsVUFBYyxFQUNkLFVBQTJCO1FBRTNCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUEyQjtRQUMxQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUFJLFdBQXdCO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQWlDO1FBQzdDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxNQUFNLEtBQUssR0FBRyxJQUFJLHNCQUFzQixDQUN0QyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQ3JGLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFDdkMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FDckMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
2
|
-
import { EggContext, EggContextLifecycleContext } from '@eggjs/tegg-runtime';
|
|
3
|
-
import { ModuleHandler } from './ModuleHandler.
|
|
1
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
2
|
+
import { type EggContext, type EggContextLifecycleContext } from '@eggjs/tegg-runtime';
|
|
3
|
+
import { ModuleHandler } from './ModuleHandler.ts';
|
|
4
4
|
export declare class EggContextCompatibleHook implements LifecycleHook<EggContextLifecycleContext, EggContext> {
|
|
5
5
|
private readonly moduleHandler;
|
|
6
6
|
private requestProtoList;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { BackgroundTaskHelper, ObjectInitType, PrototypeUtil } from '@eggjs/tegg';
|
|
2
|
+
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
3
|
+
import {} from '@eggjs/tegg-metadata';
|
|
4
|
+
import { ROOT_PROTO } from '@eggjs/egg-module-common';
|
|
5
|
+
import { ModuleHandler } from "./ModuleHandler.js";
|
|
6
|
+
export class EggContextCompatibleHook {
|
|
7
|
+
moduleHandler;
|
|
8
|
+
requestProtoList = [];
|
|
9
|
+
constructor(moduleHandler) {
|
|
10
|
+
this.moduleHandler = moduleHandler;
|
|
11
|
+
for (const loadUnitInstance of this.moduleHandler.loadUnitInstances) {
|
|
12
|
+
const iterator = loadUnitInstance.loadUnit.iterateEggPrototype();
|
|
13
|
+
for (const proto of iterator) {
|
|
14
|
+
if (proto.initType === ObjectInitType.CONTEXT) {
|
|
15
|
+
this.requestProtoList.push(proto);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async preCreate(_, ctx) {
|
|
21
|
+
// root proto added in ctxLifecycleMiddleware
|
|
22
|
+
if (!ctx.get(ROOT_PROTO)) {
|
|
23
|
+
for (const proto of this.requestProtoList) {
|
|
24
|
+
ctx.addProtoToCreate(proto.name, proto);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Use for ctx.runInBackground.
|
|
29
|
+
// BackgroundTaskHelper should get by sync,
|
|
30
|
+
// or tegg context may be destroyed before background task run.
|
|
31
|
+
// So create it in preCreate.
|
|
32
|
+
const protoObj = PrototypeUtil.getClazzProto(BackgroundTaskHelper);
|
|
33
|
+
await EggContainerFactory.getOrCreateEggObject(protoObj);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async postCreate(_, ctx) {
|
|
37
|
+
const rootProto = ctx.get(ROOT_PROTO);
|
|
38
|
+
if (rootProto) {
|
|
39
|
+
// Ensure ContextInitiator be called.
|
|
40
|
+
await EggContainerFactory.getOrCreateEggObject(rootProto);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dENvbXBhdGlibGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dDb250ZXh0Q29tcGF0aWJsZUhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFzQixjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0QsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RyxPQUFPLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2xCLGFBQWEsQ0FBZ0I7SUFDdEMsZ0JBQWdCLEdBQXdCLEVBQUUsQ0FBQztJQUVuRCxZQUFZLGFBQTRCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDcEUsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBVSxFQUFFLEdBQWU7UUFDekMsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDekIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sK0JBQStCO1lBQy9CLDJDQUEyQztZQUMzQywrREFBK0Q7WUFDL0QsNkJBQTZCO1lBQzdCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNuRSxNQUFNLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLFFBQXdCLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBVSxFQUFFLEdBQWU7UUFDMUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QscUNBQXFDO1lBQ3JDLE1BQU0sbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsU0FBeUIsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Application } from 'egg';
|
|
2
|
-
import { EggContext } from '@eggjs/tegg-runtime';
|
|
1
|
+
import { type Application } from 'egg';
|
|
2
|
+
import { type EggContext } from '@eggjs/tegg-runtime';
|
|
3
3
|
export declare class EggContextHandler {
|
|
4
4
|
private readonly app;
|
|
5
5
|
constructor(app: Application);
|
|
6
|
-
getContextCallback(): EggContext;
|
|
6
|
+
getContextCallback(): EggContext | undefined;
|
|
7
7
|
run<R>(eggContext: EggContext, fn: () => Promise<R>): Promise<R>;
|
|
8
8
|
register(): void;
|
|
9
9
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {} from 'egg';
|
|
2
|
+
import { ContextHandler } from '@eggjs/tegg-runtime';
|
|
3
|
+
import { EGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
4
|
+
export class EggContextHandler {
|
|
5
|
+
app;
|
|
6
|
+
constructor(app) {
|
|
7
|
+
this.app = app;
|
|
8
|
+
}
|
|
9
|
+
getContextCallback() {
|
|
10
|
+
const ctx = this.app.currentContext;
|
|
11
|
+
return ctx?.teggContext;
|
|
12
|
+
}
|
|
13
|
+
async run(eggContext, fn) {
|
|
14
|
+
const ctx = eggContext.get(EGG_CONTEXT);
|
|
15
|
+
return await this.app.ctxStorage.run(ctx, fn);
|
|
16
|
+
}
|
|
17
|
+
register() {
|
|
18
|
+
ContextHandler.getContextCallback = () => {
|
|
19
|
+
return this.getContextCallback();
|
|
20
|
+
};
|
|
21
|
+
ContextHandler.runInContextCallback = async (context, fn) => {
|
|
22
|
+
return await this.run(context, fn);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0VnZ0NvbnRleHRIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLEdBQUcsQ0FBYztJQUVsQyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDcEMsT0FBTyxHQUFHLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFJLFVBQXNCLEVBQUUsRUFBb0I7UUFDdkQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsUUFBUTtRQUNOLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDdkMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFDRixjQUFjLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxFQUFFLE9BQW1CLEVBQUUsRUFBc0IsRUFBRSxFQUFFO1lBQzFGLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AbstractEggContext } from '@eggjs/tegg-runtime';
|
|
2
|
+
import { IdenticalUtil } from '@eggjs/tegg';
|
|
3
|
+
import { EGG_CONTEXT, TEGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
4
|
+
// TEggContext 的实现
|
|
5
|
+
export class EggContextImpl extends AbstractEggContext {
|
|
6
|
+
id;
|
|
7
|
+
constructor(ctx) {
|
|
8
|
+
super();
|
|
9
|
+
this.set(EGG_CONTEXT, ctx);
|
|
10
|
+
ctx[TEGG_CONTEXT] = this;
|
|
11
|
+
const tracer = ctx.tracer;
|
|
12
|
+
this.id = IdenticalUtil.createContextId(tracer?.traceId);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dEltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0VnZ0NvbnRleHRJbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRSxrQkFBa0I7QUFDbEIsTUFBTSxPQUFPLGNBQWUsU0FBUSxrQkFBa0I7SUFDM0MsRUFBRSxDQUFTO0lBRXBCLFlBQVksR0FBWTtRQUN0QixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQXlDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EggLoadUnitType, LoadUnitFactory, GlobalGraph, ModuleDescriptorDumper, } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { LoaderFactory } from '@eggjs/tegg-loader';
|
|
3
|
+
import { Application } from 'egg';
|
|
4
|
+
import { EggAppLoader } from "./EggAppLoader.js";
|
|
5
|
+
export class EggModuleLoader {
|
|
6
|
+
app;
|
|
7
|
+
globalGraph;
|
|
8
|
+
constructor(app) {
|
|
9
|
+
this.app = app;
|
|
10
|
+
}
|
|
11
|
+
async loadApp() {
|
|
12
|
+
const loader = new EggAppLoader(this.app);
|
|
13
|
+
const loadUnit = await LoadUnitFactory.createLoadUnit(this.app.baseDir, EggLoadUnitType.APP, loader);
|
|
14
|
+
this.app.moduleHandler.loadUnits.push(loadUnit);
|
|
15
|
+
}
|
|
16
|
+
async buildAppGraph() {
|
|
17
|
+
for (const plugin of Object.values(this.app.plugins)) {
|
|
18
|
+
if (!plugin.enable)
|
|
19
|
+
continue;
|
|
20
|
+
const modulePlugin = this.app.moduleReferences.find(t => t.path === plugin.path);
|
|
21
|
+
if (modulePlugin) {
|
|
22
|
+
modulePlugin.optional = false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const moduleDescriptors = await LoaderFactory.loadApp(this.app.moduleReferences);
|
|
26
|
+
for (const moduleDescriptor of moduleDescriptors) {
|
|
27
|
+
ModuleDescriptorDumper.dump(moduleDescriptor, {
|
|
28
|
+
dumpDir: this.app.baseDir,
|
|
29
|
+
}).catch(e => {
|
|
30
|
+
e.message = 'dump module descriptor failed: ' + e.message;
|
|
31
|
+
this.app.logger.warn(e);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const graph = await GlobalGraph.create(moduleDescriptors);
|
|
35
|
+
return graph;
|
|
36
|
+
}
|
|
37
|
+
async loadModule() {
|
|
38
|
+
this.globalGraph.build();
|
|
39
|
+
this.globalGraph.sort();
|
|
40
|
+
const moduleConfigList = this.globalGraph.moduleConfigList;
|
|
41
|
+
for (const moduleConfig of moduleConfigList) {
|
|
42
|
+
const modulePath = moduleConfig.path;
|
|
43
|
+
const loader = LoaderFactory.createLoader(modulePath, EggLoadUnitType.MODULE);
|
|
44
|
+
const loadUnit = await LoadUnitFactory.createLoadUnit(modulePath, EggLoadUnitType.MODULE, loader);
|
|
45
|
+
this.app.moduleHandler.loadUnits.push(loadUnit);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async load() {
|
|
49
|
+
GlobalGraph.instance = this.globalGraph = await this.buildAppGraph();
|
|
50
|
+
await this.loadApp();
|
|
51
|
+
await this.loadModule();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnTW9kdWxlTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dNb2R1bGVMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsV0FBVyxFQUFFLHNCQUFzQixHQUNwQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixHQUFHLENBQWM7SUFDakIsV0FBVyxDQUFjO0lBRXpCLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYTtRQUN6QixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFBRSxTQUFTO1lBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakYsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsWUFBWSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakYsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDakQsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPO2FBQzFCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1gsQ0FBQyxDQUFDLE9BQU8sR0FBRyxpQ0FBaUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMzRCxLQUFLLE1BQU0sWUFBWSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNyQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyRSxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMxQixDQUFDO0NBQ0YifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LoadUnitLifecycleContext, LoadUnit } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
1
|
+
import { type LoadUnitLifecycleContext, type LoadUnit } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
3
3
|
import { Application } from 'egg';
|
|
4
4
|
export declare class EggQualifierProtoHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
5
5
|
private readonly app;
|