@eggjs/tegg-plugin 4.0.0-beta.9 → 4.0.2-beta.0
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 -49
- package/dist/app/extend/application.js +69 -79
- package/dist/app/extend/application.unittest.d.ts +9 -21
- package/dist/app/extend/application.unittest.js +39 -53
- package/dist/app/extend/context.d.ts +12 -19
- package/dist/app/extend/context.js +27 -34
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.d.ts +6 -3
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +7 -3
- package/dist/app.d.ts +20 -16
- package/dist/app.js +50 -56
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -3
- package/dist/lib/AppLoadUnit.d.ts +23 -18
- package/dist/lib/AppLoadUnit.js +77 -89
- package/dist/lib/AppLoadUnitInstance.d.ts +23 -19
- package/dist/lib/AppLoadUnitInstance.js +69 -81
- package/dist/lib/CompatibleUtil.d.ts +22 -13
- package/dist/lib/CompatibleUtil.js +99 -95
- package/dist/lib/ConfigSourceLoadUnitHook.d.ts +13 -8
- package/dist/lib/ConfigSourceLoadUnitHook.js +20 -20
- package/dist/lib/EggAppLoader.d.ts +19 -15
- package/dist/lib/EggAppLoader.js +104 -127
- package/dist/lib/EggCompatibleObject.d.ts +19 -17
- package/dist/lib/EggCompatibleObject.js +34 -40
- package/dist/lib/EggCompatibleProtoImpl.d.ts +25 -20
- 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 -26
- package/dist/lib/EggContextImpl.d.ts +9 -5
- package/dist/lib/EggContextImpl.js +18 -15
- package/dist/lib/EggModuleLoader.d.ts +16 -10
- package/dist/lib/EggModuleLoader.js +53 -53
- package/dist/lib/EggQualifierProtoHook.d.ts +13 -9
- package/dist/lib/EggQualifierProtoHook.js +46 -62
- package/dist/lib/ModuleConfigLoader.d.ts +11 -7
- package/dist/lib/ModuleConfigLoader.js +81 -80
- package/dist/lib/ModuleHandler.d.ts +17 -12
- package/dist/lib/ModuleHandler.js +47 -52
- 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 +36 -31
- 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 -8
- package/dist/types.js +3 -5
- package/package.json +49 -54
|
@@ -1,42 +1,36 @@
|
|
|
1
|
-
import { EggObjectFactory, } from '@eggjs/tegg-runtime';
|
|
2
|
-
import { IdenticalUtil, EggType, EggQualifierAttribute } from '@eggjs/tegg';
|
|
3
|
-
import {} from '@eggjs/tegg-metadata';
|
|
4
1
|
import { EggCompatibleProtoImpl } from "./EggCompatibleProtoImpl.js";
|
|
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
|
-
static async createObject(name, proto) {
|
|
38
|
-
return new EggCompatibleObject(name, proto);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
2
|
+
import { EggQualifierAttribute, EggType } from "@eggjs/core-decorator";
|
|
3
|
+
import { IdenticalUtil } from "@eggjs/lifecycle";
|
|
4
|
+
import { EggObjectFactory } from "@eggjs/tegg-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/EggCompatibleObject.ts
|
|
7
|
+
var EggCompatibleObject = class EggCompatibleObject {
|
|
8
|
+
isReady = true;
|
|
9
|
+
#obj;
|
|
10
|
+
proto;
|
|
11
|
+
name;
|
|
12
|
+
id;
|
|
13
|
+
isContext;
|
|
14
|
+
constructor(name, proto) {
|
|
15
|
+
this.proto = proto;
|
|
16
|
+
this.name = name;
|
|
17
|
+
this.id = IdenticalUtil.createObjectId(this.proto.id);
|
|
18
|
+
this.isContext = this.proto.verifyQualifier({
|
|
19
|
+
value: EggType.CONTEXT,
|
|
20
|
+
attribute: EggQualifierAttribute
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get obj() {
|
|
24
|
+
if (this.isContext) return this.proto.constructEggObject();
|
|
25
|
+
if (!this.#obj) this.#obj = this.proto.constructEggObject();
|
|
26
|
+
return this.#obj;
|
|
27
|
+
}
|
|
28
|
+
injectProperty() {}
|
|
29
|
+
static async createObject(name, proto) {
|
|
30
|
+
return new EggCompatibleObject(name, proto);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
41
33
|
EggObjectFactory.registerEggObjectCreateMethod(EggCompatibleProtoImpl, EggCompatibleObject.createObject);
|
|
42
|
-
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { EggCompatibleObject };
|
|
@@ -1,21 +1,26 @@
|
|
|
1
|
-
import { AccessLevel,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { AccessLevel, EggProtoImplClass, EggPrototypeName, MetaDataKey, ObjectInitTypeLike, QualifierInfo, QualifierValue } from "@eggjs/core-decorator";
|
|
2
|
+
import { EggPrototype, EggPrototypeLifecycleContext, InjectObjectProto } from "@eggjs/metadata";
|
|
3
|
+
import { Id } from "@eggjs/tegg-types";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/EggCompatibleProtoImpl.d.ts
|
|
6
|
+
declare const COMPATIBLE_PROTO_IMPLE_TYPE = "EGG_COMPATIBLE";
|
|
7
|
+
declare class EggCompatibleProtoImpl implements EggPrototype {
|
|
8
|
+
[key: symbol]: PropertyDescriptor;
|
|
9
|
+
private readonly clazz;
|
|
10
|
+
private readonly qualifiers;
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly name: EggPrototypeName;
|
|
13
|
+
readonly initType: ObjectInitTypeLike;
|
|
14
|
+
readonly accessLevel: AccessLevel;
|
|
15
|
+
readonly injectObjects: InjectObjectProto[];
|
|
16
|
+
readonly loadUnitId: Id;
|
|
17
|
+
constructor(id: string, name: EggPrototypeName, clazz: EggProtoImplClass, initType: ObjectInitTypeLike, loadUnitId: Id, qualifiers: QualifierInfo[]);
|
|
18
|
+
verifyQualifiers(qualifiers: QualifierInfo[]): boolean;
|
|
19
|
+
verifyQualifier(qualifier: QualifierInfo): boolean;
|
|
20
|
+
getQualifier(attribute: string): QualifierValue | undefined;
|
|
21
|
+
constructEggObject(): object;
|
|
22
|
+
getMetaData<T>(metadataKey: MetaDataKey): T | undefined;
|
|
23
|
+
static create(ctx: EggPrototypeLifecycleContext): EggPrototype;
|
|
21
24
|
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl };
|
|
@@ -1,52 +1,49 @@
|
|
|
1
|
-
import { AccessLevel, MetadataUtil, QualifierUtil
|
|
2
|
-
import {} from
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29tcGF0aWJsZVByb3RvSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRWdnQ29tcGF0aWJsZVByb3RvSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUdYLFlBQVksRUFHWixhQUFhLEVBRWIsYUFBYSxHQUVkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFJTixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLGdCQUFnQixDQUFDO0FBRTVELE1BQU0sT0FBTyxzQkFBc0I7SUFFaEIsS0FBSyxDQUFvQjtJQUN6QixVQUFVLENBQWtCO0lBRXBDLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBbUI7SUFDdkIsUUFBUSxDQUFxQjtJQUM3QixXQUFXLENBQWM7SUFDekIsYUFBYSxDQUFzQjtJQUNuQyxVQUFVLENBQUs7SUFFeEIsWUFDRSxFQUFVLEVBQ1YsSUFBc0IsRUFDdEIsS0FBd0IsRUFDeEIsUUFBNEIsRUFDNUIsVUFBYyxFQUNkLFVBQTJCO1FBRTNCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUEyQjtRQUMxQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUFJLFdBQXdCO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQWlDO1FBQzdDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxNQUFNLEtBQUssR0FBRyxJQUFJLHNCQUFzQixDQUN0QyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQ3JGLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFDdkMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FDckMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YifQ==
|
|
1
|
+
import { AccessLevel, MetadataUtil, QualifierUtil } from "@eggjs/core-decorator";
|
|
2
|
+
import { IdenticalUtil } from "@eggjs/lifecycle";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/EggCompatibleProtoImpl.ts
|
|
5
|
+
const COMPATIBLE_PROTO_IMPLE_TYPE = "EGG_COMPATIBLE";
|
|
6
|
+
var EggCompatibleProtoImpl = class EggCompatibleProtoImpl {
|
|
7
|
+
clazz;
|
|
8
|
+
qualifiers;
|
|
9
|
+
id;
|
|
10
|
+
name;
|
|
11
|
+
initType;
|
|
12
|
+
accessLevel;
|
|
13
|
+
injectObjects;
|
|
14
|
+
loadUnitId;
|
|
15
|
+
constructor(id, name, clazz, initType, loadUnitId, qualifiers) {
|
|
16
|
+
this.id = id;
|
|
17
|
+
this.clazz = clazz;
|
|
18
|
+
this.name = name;
|
|
19
|
+
this.initType = initType;
|
|
20
|
+
this.accessLevel = AccessLevel.PUBLIC;
|
|
21
|
+
this.injectObjects = [];
|
|
22
|
+
this.loadUnitId = loadUnitId;
|
|
23
|
+
this.qualifiers = qualifiers;
|
|
24
|
+
}
|
|
25
|
+
verifyQualifiers(qualifiers) {
|
|
26
|
+
for (const qualifier of qualifiers) if (!this.verifyQualifier(qualifier)) return false;
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
verifyQualifier(qualifier) {
|
|
30
|
+
return this.qualifiers.find((t) => t.attribute === qualifier.attribute)?.value === qualifier.value;
|
|
31
|
+
}
|
|
32
|
+
getQualifier(attribute) {
|
|
33
|
+
return this.qualifiers.find((t) => t.attribute === attribute)?.value;
|
|
34
|
+
}
|
|
35
|
+
constructEggObject() {
|
|
36
|
+
return Reflect.apply(this.clazz, null, []);
|
|
37
|
+
}
|
|
38
|
+
getMetaData(metadataKey) {
|
|
39
|
+
return MetadataUtil.getMetaData(metadataKey, this.clazz);
|
|
40
|
+
}
|
|
41
|
+
static create(ctx) {
|
|
42
|
+
const { clazz, loadUnit } = ctx;
|
|
43
|
+
const name = ctx.prototypeInfo.name;
|
|
44
|
+
return new EggCompatibleProtoImpl(IdenticalUtil.createProtoId(loadUnit.id, name), name, clazz, ctx.prototypeInfo.initType, loadUnit.id, QualifierUtil.mergeQualifiers(QualifierUtil.getProtoQualifiers(clazz), ctx.prototypeInfo.qualifiers ?? []));
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl };
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { ModuleHandler } from "./ModuleHandler.js";
|
|
2
|
+
import { LifecycleHook } from "@eggjs/lifecycle";
|
|
3
|
+
import { EggContext, EggContextLifecycleContext } from "@eggjs/tegg-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/EggContextCompatibleHook.d.ts
|
|
6
|
+
declare class EggContextCompatibleHook implements LifecycleHook<EggContextLifecycleContext, EggContext> {
|
|
7
|
+
private readonly moduleHandler;
|
|
8
|
+
private requestProtoList;
|
|
9
|
+
constructor(moduleHandler: ModuleHandler);
|
|
10
|
+
preCreate(_: unknown, ctx: EggContext): Promise<void>;
|
|
11
|
+
postCreate(_: unknown, ctx: EggContext): Promise<void>;
|
|
10
12
|
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { EggContextCompatibleHook };
|
|
@@ -1,44 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {} from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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
|
-
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
|
+
import "./ModuleHandler.js";
|
|
2
|
+
import { ObjectInitType, PrototypeUtil } from "@eggjs/core-decorator";
|
|
3
|
+
import { EggContainerFactory } from "@eggjs/tegg-runtime";
|
|
4
|
+
import { BackgroundTaskHelper } from "@eggjs/background-task";
|
|
5
|
+
import { ROOT_PROTO } from "@eggjs/module-common";
|
|
6
|
+
|
|
7
|
+
//#region src/lib/EggContextCompatibleHook.ts
|
|
8
|
+
var EggContextCompatibleHook = class {
|
|
9
|
+
moduleHandler;
|
|
10
|
+
requestProtoList = [];
|
|
11
|
+
constructor(moduleHandler) {
|
|
12
|
+
this.moduleHandler = moduleHandler;
|
|
13
|
+
for (const loadUnitInstance of this.moduleHandler.loadUnitInstances) {
|
|
14
|
+
const iterator = loadUnitInstance.loadUnit.iterateEggPrototype();
|
|
15
|
+
for (const proto of iterator) if (proto.initType === ObjectInitType.CONTEXT) this.requestProtoList.push(proto);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async preCreate(_, ctx) {
|
|
19
|
+
if (!ctx.get(ROOT_PROTO)) for (const proto of this.requestProtoList) ctx.addProtoToCreate(proto.name, proto);
|
|
20
|
+
else {
|
|
21
|
+
const protoObj = PrototypeUtil.getClazzProto(BackgroundTaskHelper);
|
|
22
|
+
await EggContainerFactory.getOrCreateEggObject(protoObj);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async postCreate(_, ctx) {
|
|
26
|
+
const rootProto = ctx.get(ROOT_PROTO);
|
|
27
|
+
if (rootProto) await EggContainerFactory.getOrCreateEggObject(rootProto);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { EggContextCompatibleHook };
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { EggContext } from "@eggjs/tegg-runtime";
|
|
2
|
+
import { Application } from "egg";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/EggContextHandler.d.ts
|
|
5
|
+
declare class EggContextHandler {
|
|
6
|
+
private readonly app;
|
|
7
|
+
constructor(app: Application);
|
|
8
|
+
getContextCallback(): EggContext | undefined;
|
|
9
|
+
run<R>(eggContext: EggContext, fn: () => Promise<R>): Promise<R>;
|
|
10
|
+
register(): void;
|
|
9
11
|
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { EggContextHandler };
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import {} from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
1
|
+
import { ContextHandler } from "@eggjs/tegg-runtime";
|
|
2
|
+
import { EGG_CONTEXT } from "@eggjs/module-common";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/EggContextHandler.ts
|
|
5
|
+
var EggContextHandler = class {
|
|
6
|
+
app;
|
|
7
|
+
constructor(app) {
|
|
8
|
+
this.app = app;
|
|
9
|
+
}
|
|
10
|
+
getContextCallback() {
|
|
11
|
+
return this.app.currentContext?.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
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { EggContextHandler };
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { AbstractEggContext } from "@eggjs/tegg-runtime";
|
|
2
|
+
import { Context } from "egg";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/EggContextImpl.d.ts
|
|
5
|
+
declare class EggContextImpl extends AbstractEggContext {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
constructor(ctx: Context);
|
|
6
8
|
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { EggContextImpl };
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { EGG_CONTEXT, TEGG_CONTEXT } from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
1
|
+
import { IdenticalUtil } from "@eggjs/lifecycle";
|
|
2
|
+
import { AbstractEggContext } from "@eggjs/tegg-runtime";
|
|
3
|
+
import { EGG_CONTEXT, TEGG_CONTEXT } from "@eggjs/module-common";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/EggContextImpl.ts
|
|
6
|
+
var EggContextImpl = class extends AbstractEggContext {
|
|
7
|
+
id;
|
|
8
|
+
constructor(ctx) {
|
|
9
|
+
super();
|
|
10
|
+
this.set(EGG_CONTEXT, ctx);
|
|
11
|
+
ctx[TEGG_CONTEXT] = this;
|
|
12
|
+
const tracer = ctx.tracer;
|
|
13
|
+
this.id = IdenticalUtil.createContextId(tracer?.traceId);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { EggContextImpl };
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import { GlobalGraph } from
|
|
2
|
-
import { Application } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { GlobalGraph, GlobalGraphBuildHook } from "@eggjs/metadata";
|
|
2
|
+
import { Application } from "egg";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/EggModuleLoader.d.ts
|
|
5
|
+
declare class EggModuleLoader {
|
|
6
|
+
app: Application;
|
|
7
|
+
globalGraph: GlobalGraph;
|
|
8
|
+
private pendingBuildHooks;
|
|
9
|
+
constructor(app: Application);
|
|
10
|
+
registerBuildHook(hook: GlobalGraphBuildHook): void;
|
|
11
|
+
private loadApp;
|
|
12
|
+
private buildAppGraph;
|
|
13
|
+
private loadModule;
|
|
14
|
+
load(): Promise<void>;
|
|
11
15
|
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { EggModuleLoader };
|
|
@@ -1,54 +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
1
|
import { EggAppLoader } from "./EggAppLoader.js";
|
|
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
|
-
|
|
2
|
+
import { EggLoadUnitType, GlobalGraph, LoadUnitFactory, ModuleDescriptorDumper } from "@eggjs/metadata";
|
|
3
|
+
import { LoaderFactory } from "@eggjs/tegg-loader";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/EggModuleLoader.ts
|
|
6
|
+
var EggModuleLoader = class {
|
|
7
|
+
app;
|
|
8
|
+
globalGraph;
|
|
9
|
+
pendingBuildHooks = [];
|
|
10
|
+
constructor(app) {
|
|
11
|
+
this.app = app;
|
|
12
|
+
}
|
|
13
|
+
registerBuildHook(hook) {
|
|
14
|
+
this.pendingBuildHooks.push(hook);
|
|
15
|
+
}
|
|
16
|
+
async loadApp() {
|
|
17
|
+
const loader = new EggAppLoader(this.app);
|
|
18
|
+
const loadUnit = await LoadUnitFactory.createLoadUnit(this.app.baseDir, EggLoadUnitType.APP, loader);
|
|
19
|
+
this.app.moduleHandler.loadUnits.push(loadUnit);
|
|
20
|
+
}
|
|
21
|
+
async buildAppGraph() {
|
|
22
|
+
for (const plugin of Object.values(this.app.plugins)) {
|
|
23
|
+
if (!plugin.enable) continue;
|
|
24
|
+
const modulePlugin = this.app.moduleReferences.find((t) => t.path === plugin.path);
|
|
25
|
+
if (modulePlugin) modulePlugin.optional = false;
|
|
26
|
+
}
|
|
27
|
+
const moduleDescriptors = await LoaderFactory.loadApp(this.app.moduleReferences);
|
|
28
|
+
for (const moduleDescriptor of moduleDescriptors) ModuleDescriptorDumper.dump(moduleDescriptor, { dumpDir: this.app.baseDir }).catch((e) => {
|
|
29
|
+
e.message = "dump module descriptor failed: " + e.message;
|
|
30
|
+
this.app.logger.warn(e);
|
|
31
|
+
});
|
|
32
|
+
return await GlobalGraph.create(moduleDescriptors);
|
|
33
|
+
}
|
|
34
|
+
async loadModule() {
|
|
35
|
+
this.globalGraph.build();
|
|
36
|
+
this.globalGraph.sort();
|
|
37
|
+
const moduleConfigList = this.globalGraph.moduleConfigList;
|
|
38
|
+
for (const moduleConfig of moduleConfigList) {
|
|
39
|
+
const modulePath = moduleConfig.path;
|
|
40
|
+
const loader = LoaderFactory.createLoader(modulePath, EggLoadUnitType.MODULE);
|
|
41
|
+
const loadUnit = await LoadUnitFactory.createLoadUnit(modulePath, EggLoadUnitType.MODULE, loader);
|
|
42
|
+
this.app.moduleHandler.loadUnits.push(loadUnit);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async load() {
|
|
46
|
+
GlobalGraph.instance = this.globalGraph = await this.buildAppGraph();
|
|
47
|
+
for (const hook of this.pendingBuildHooks) this.globalGraph.registerBuildHook(hook);
|
|
48
|
+
await this.loadApp();
|
|
49
|
+
await this.loadModule();
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { EggModuleLoader };
|