@eggjs/tegg-metadata 4.0.0-beta.7 → 4.0.0-beta.9
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/errors.d.ts +10 -14
- package/dist/errors.js +27 -29
- package/dist/factory/EggPrototypeCreatorFactory.d.ts +8 -12
- package/dist/factory/EggPrototypeCreatorFactory.js +108 -95
- package/dist/factory/EggPrototypeFactory.d.ts +8 -12
- package/dist/factory/EggPrototypeFactory.js +51 -40
- package/dist/factory/LoadUnitFactory.d.ts +11 -15
- package/dist/factory/LoadUnitFactory.js +59 -58
- package/dist/factory/index.d.ts +3 -0
- package/dist/factory/index.js +4 -5
- package/dist/impl/EggPrototypeBuilder.d.ts +21 -25
- package/dist/impl/EggPrototypeBuilder.js +122 -113
- package/dist/impl/EggPrototypeImpl.d.ts +23 -27
- package/dist/impl/EggPrototypeImpl.js +53 -52
- package/dist/impl/LoadUnitMultiInstanceProtoHook.d.ts +6 -10
- package/dist/impl/LoadUnitMultiInstanceProtoHook.js +18 -16
- package/dist/impl/ModuleLoadUnit.d.ts +33 -36
- package/dist/impl/ModuleLoadUnit.js +265 -208
- package/dist/impl/index.d.ts +4 -0
- package/dist/impl/index.js +5 -6
- package/dist/index.d.ts +6 -23
- package/dist/index.js +7 -28
- package/dist/model/AppGraph.d.ts +35 -38
- package/dist/model/AppGraph.js +260 -191
- package/dist/model/EggPrototype.d.ts +3 -7
- package/dist/model/EggPrototype.js +3 -7
- package/dist/model/LoadUnit.d.ts +3 -7
- package/dist/model/LoadUnit.js +3 -7
- package/dist/model/ModuleDescriptor.d.ts +15 -19
- package/dist/model/ModuleDescriptor.js +38 -32
- package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.d.ts +30 -34
- package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.js +31 -35
- package/dist/model/ProtoDescriptor/ClassProtoDescriptor.d.ts +10 -14
- package/dist/model/ProtoDescriptor/ClassProtoDescriptor.js +29 -26
- package/dist/model/ProtoDescriptor/index.d.ts +2 -0
- package/dist/model/ProtoDescriptor/index.js +3 -4
- package/dist/model/ProtoDescriptorHelper.d.ts +25 -29
- package/dist/model/ProtoDescriptorHelper.js +130 -113
- package/dist/model/graph/GlobalGraph.d.ts +48 -52
- package/dist/model/graph/GlobalGraph.js +229 -172
- package/dist/model/graph/GlobalModuleNode.d.ts +22 -26
- package/dist/model/graph/GlobalModuleNode.js +39 -42
- package/dist/model/graph/GlobalModuleNodeBuilder.d.ts +12 -16
- package/dist/model/graph/GlobalModuleNodeBuilder.js +52 -54
- package/dist/model/graph/ProtoNode.d.ts +16 -22
- package/dist/model/graph/ProtoNode.js +39 -42
- package/dist/model/graph/ProtoSelector.d.ts +5 -9
- package/dist/model/graph/ProtoSelector.js +2 -3
- package/dist/model/graph/index.d.ts +5 -0
- package/dist/model/graph/index.js +6 -7
- package/dist/model/index.d.ts +7 -0
- package/dist/model/index.js +8 -15
- package/dist/util/ClassUtil.d.ts +4 -8
- package/dist/util/ClassUtil.js +17 -18
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.js +2 -3
- package/package.json +6 -6
|
@@ -1,113 +1,130 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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
|
-
|
|
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
|
-
|
|
113
|
-
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { PrototypeUtil, QualifierUtil, } from '@eggjs/core-decorator';
|
|
3
|
+
import { InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, AccessLevel, MultiInstanceType, } from '@eggjs/tegg-types';
|
|
4
|
+
import {} from "./graph/index.js";
|
|
5
|
+
import { ClassProtoDescriptor } from "./ProtoDescriptor/index.js";
|
|
6
|
+
export class ProtoDescriptorHelper {
|
|
7
|
+
static addDefaultQualifier(qualifiers, initType, loadUnitName) {
|
|
8
|
+
const defaultQualifiers = [{
|
|
9
|
+
attribute: InitTypeQualifierAttribute,
|
|
10
|
+
value: initType,
|
|
11
|
+
}, {
|
|
12
|
+
attribute: LoadUnitNameQualifierAttribute,
|
|
13
|
+
value: loadUnitName,
|
|
14
|
+
}];
|
|
15
|
+
const res = [
|
|
16
|
+
...qualifiers,
|
|
17
|
+
];
|
|
18
|
+
for (const defaultQualifier of defaultQualifiers) {
|
|
19
|
+
if (!qualifiers.find(t => t.attribute === defaultQualifier.attribute)) {
|
|
20
|
+
res.push(defaultQualifier);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return res;
|
|
24
|
+
}
|
|
25
|
+
static async createByMultiInstanceClazz(clazz, options) {
|
|
26
|
+
assert(PrototypeUtil.isEggMultiInstancePrototype(clazz), `clazz ${clazz.name} is not MultiInstancePrototype`);
|
|
27
|
+
const type = PrototypeUtil.getEggMultiInstancePrototypeType(clazz);
|
|
28
|
+
if (type === MultiInstanceType.DYNAMIC) {
|
|
29
|
+
return await ProtoDescriptorHelper.createByDynamicMultiInstanceClazz(clazz, options);
|
|
30
|
+
}
|
|
31
|
+
else if (type === MultiInstanceType.STATIC) {
|
|
32
|
+
// static multi instance proto create only in self module
|
|
33
|
+
if (options.defineModuleName === options.instanceModuleName) {
|
|
34
|
+
return ProtoDescriptorHelper.createByStaticMultiInstanceClazz(clazz, options);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
static async createByDynamicMultiInstanceClazz(clazz, options) {
|
|
40
|
+
assert(PrototypeUtil.isEggMultiInstancePrototype(clazz), `clazz ${clazz.name} is not MultiInstancePrototype`);
|
|
41
|
+
const instanceProperty = await PrototypeUtil.getDynamicMultiInstanceProperty(clazz, {
|
|
42
|
+
moduleName: options.instanceModuleName,
|
|
43
|
+
unitPath: options.instanceDefineUnitPath,
|
|
44
|
+
});
|
|
45
|
+
assert(instanceProperty, `not found PrototypeInfo for clazz ${clazz.name}`);
|
|
46
|
+
return ProtoDescriptorHelper.#createByMultiInstanceClazz(clazz, instanceProperty, options);
|
|
47
|
+
}
|
|
48
|
+
static createByStaticMultiInstanceClazz(clazz, options) {
|
|
49
|
+
assert(PrototypeUtil.isEggMultiInstancePrototype(clazz), `clazz ${clazz.name} is not MultiInstancePrototype`);
|
|
50
|
+
const instanceProperty = PrototypeUtil.getStaticMultiInstanceProperty(clazz);
|
|
51
|
+
assert(instanceProperty, `not found PrototypeInfo for clazz ${clazz.name}`);
|
|
52
|
+
return ProtoDescriptorHelper.#createByMultiInstanceClazz(clazz, instanceProperty, options);
|
|
53
|
+
}
|
|
54
|
+
static #createByMultiInstanceClazz(clazz, instanceProperty, options) {
|
|
55
|
+
const res = [];
|
|
56
|
+
for (const obj of instanceProperty.objects) {
|
|
57
|
+
let qualifiers = QualifierUtil.mergeQualifiers(QualifierUtil.getProtoQualifiers(clazz), obj.qualifiers);
|
|
58
|
+
qualifiers = ProtoDescriptorHelper.addDefaultQualifier(qualifiers, instanceProperty.initType, options.instanceModuleName);
|
|
59
|
+
const injectObjects = PrototypeUtil.getInjectObjects(clazz)
|
|
60
|
+
.map(t => {
|
|
61
|
+
const qualifiers = QualifierUtil.getProperQualifiers(clazz, t.refName);
|
|
62
|
+
const instanceQualifier = obj.properQualifiers?.[t.refName] ?? [];
|
|
63
|
+
return {
|
|
64
|
+
...t,
|
|
65
|
+
qualifiers: QualifierUtil.mergeQualifiers(qualifiers, instanceQualifier),
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
res.push(new ClassProtoDescriptor({
|
|
69
|
+
name: obj.name,
|
|
70
|
+
accessLevel: instanceProperty.accessLevel,
|
|
71
|
+
initType: instanceProperty.initType,
|
|
72
|
+
protoImplType: instanceProperty.protoImplType,
|
|
73
|
+
qualifiers,
|
|
74
|
+
injectObjects,
|
|
75
|
+
instanceModuleName: options.instanceModuleName,
|
|
76
|
+
instanceDefineUnitPath: options.instanceDefineUnitPath,
|
|
77
|
+
defineModuleName: options.defineModuleName,
|
|
78
|
+
defineUnitPath: options.defineUnitPath,
|
|
79
|
+
clazz,
|
|
80
|
+
properQualifiers: obj.properQualifiers || {},
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
return res;
|
|
84
|
+
}
|
|
85
|
+
static createByInstanceClazz(clazz, ctx) {
|
|
86
|
+
assert(PrototypeUtil.isEggPrototype(clazz), `clazz ${clazz.name} is not EggPrototype`);
|
|
87
|
+
assert(!PrototypeUtil.isEggMultiInstancePrototype(clazz), `clazz ${clazz.name} is not Prototype`);
|
|
88
|
+
const property = PrototypeUtil.getProperty(clazz);
|
|
89
|
+
assert(property, `not found PrototypeInfo for clazz ${clazz.name}`);
|
|
90
|
+
const protoQualifiers = ProtoDescriptorHelper.addDefaultQualifier(QualifierUtil.getProtoQualifiers(clazz), property.initType, ctx.moduleName);
|
|
91
|
+
const injectObjects = PrototypeUtil.getInjectObjects(clazz)
|
|
92
|
+
.map(t => {
|
|
93
|
+
const qualifiers = QualifierUtil.getProperQualifiers(clazz, t.refName);
|
|
94
|
+
return {
|
|
95
|
+
...t,
|
|
96
|
+
qualifiers,
|
|
97
|
+
};
|
|
98
|
+
});
|
|
99
|
+
return new ClassProtoDescriptor({
|
|
100
|
+
name: property.name,
|
|
101
|
+
protoImplType: property.protoImplType,
|
|
102
|
+
accessLevel: property.accessLevel,
|
|
103
|
+
initType: property.initType,
|
|
104
|
+
qualifiers: protoQualifiers,
|
|
105
|
+
injectObjects,
|
|
106
|
+
instanceDefineUnitPath: ctx.unitPath,
|
|
107
|
+
instanceModuleName: ctx.moduleName,
|
|
108
|
+
defineUnitPath: ctx.unitPath,
|
|
109
|
+
defineModuleName: ctx.moduleName,
|
|
110
|
+
clazz,
|
|
111
|
+
properQualifiers: {},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
static selectProto(proto, ctx) {
|
|
115
|
+
// 1. name match
|
|
116
|
+
if (proto.name !== ctx.name) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// 2. access level match
|
|
120
|
+
if (proto.accessLevel !== AccessLevel.PUBLIC && proto.instanceModuleName !== ctx.moduleName) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
// 3. qualifier match
|
|
124
|
+
if (!QualifierUtil.matchQualifiers(proto.qualifiers, ctx.qualifiers)) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdG9EZXNjcmlwdG9ySGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL1Byb3RvRGVzY3JpcHRvckhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxFQUVMLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUwsMEJBQTBCLEVBQzFCLDhCQUE4QixFQUk5QixXQUFXLEVBRVgsaUJBQWlCLEdBQ2xCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUE2QixNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQTJCLEVBQUUsUUFBNEIsRUFBRSxZQUFvQjtRQUN4RyxNQUFNLGlCQUFpQixHQUFHLENBQUM7Z0JBQ3pCLFNBQVMsRUFBRSwwQkFBMEI7Z0JBQ3JDLEtBQUssRUFBRSxRQUFRO2FBQ2hCLEVBQUU7Z0JBQ0QsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsS0FBSyxFQUFFLFlBQVk7YUFDcEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUc7WUFDVixHQUFHLFVBQVU7U0FDZCxDQUFDO1FBQ0YsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsS0FBd0IsRUFBRSxPQUtqRTtRQUNDLE1BQU0sQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxLQUFLLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzlHLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxJQUFJLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QyxPQUFPLE1BQU0scUJBQXFCLENBQUMsaUNBQWlDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3Qyx5REFBeUQ7WUFDekQsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEtBQUssT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVELE9BQU8scUJBQXFCLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hGLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxLQUF3QixFQUFFLE9BS3hFO1FBQ0MsTUFBTSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEtBQUssQ0FBQyxJQUFJLGdDQUFnQyxDQUFDLENBQUM7UUFFOUcsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLGFBQWEsQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLEVBQUU7WUFDbEYsVUFBVSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7WUFDdEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxzQkFBc0I7U0FDekMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHFDQUFxQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RSxPQUFPLHFCQUFxQixDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLEtBQXdCLEVBQUUsT0FLakU7UUFDQyxNQUFNLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsS0FBSyxDQUFDLElBQUksZ0NBQWdDLENBQUMsQ0FBQztRQUU5RyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUscUNBQXFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLE9BQU8scUJBQXFCLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBd0IsRUFBRSxnQkFBK0MsRUFBRSxPQUs3RztRQUNDLE1BQU0sR0FBRyxHQUFzQixFQUFFLENBQUM7UUFFbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxJQUFJLFVBQVUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUM1QyxhQUFhLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQ3ZDLEdBQUcsQ0FBQyxVQUFVLENBQ2YsQ0FBQztZQUNGLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzFILE1BQU0sYUFBYSxHQUE2QixhQUFhLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2lCQUNsRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1AsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEUsT0FBTztvQkFDTCxHQUFHLENBQUM7b0JBQ0osVUFBVSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQ3ZDLFVBQVUsRUFDVixpQkFBaUIsQ0FDbEI7aUJBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDO2dCQUNoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVc7Z0JBQ3pDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUNuQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsYUFBYTtnQkFDN0MsVUFBVTtnQkFDVixhQUFhO2dCQUNiLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7Z0JBQzlDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0I7Z0JBQ3RELGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQzFDLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDdEMsS0FBSztnQkFDTCxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRTthQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBd0IsRUFBRSxHQUE0QztRQUNqRyxNQUFNLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEtBQUssQ0FBQyxJQUFJLHNCQUFzQixDQUFDLENBQUM7UUFDdkYsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsS0FBSyxDQUFDLElBQUksbUJBQW1CLENBQUMsQ0FBQztRQUVsRyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxRQUFRLEVBQUUscUNBQXFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5SSxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2FBQ3hELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNQLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZFLE9BQU87Z0JBQ0wsR0FBRyxDQUFDO2dCQUNKLFVBQVU7YUFDWCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLElBQUksb0JBQW9CLENBQUM7WUFDOUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ25CLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTtZQUNyQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDakMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLFVBQVUsRUFBRSxlQUFlO1lBQzNCLGFBQWE7WUFDYixzQkFBc0IsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUNwQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsVUFBVTtZQUNsQyxjQUFjLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDNUIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLFVBQVU7WUFDaEMsS0FBSztZQUNMLGdCQUFnQixFQUFFLEVBQUU7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBc0IsRUFBRSxHQUF5QjtRQUNsRSxnQkFBZ0I7UUFDaEIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCx3QkFBd0I7UUFDeEIsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixLQUFLLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1RixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiJ9
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
interface GlobalGraphOptions {
|
|
9
|
-
strict?: boolean;
|
|
1
|
+
import { Graph, GraphNode, type ModuleReference } from '@eggjs/tegg-common-util';
|
|
2
|
+
import { type InjectObjectDescriptor, type ProtoDescriptor } from '@eggjs/tegg-types';
|
|
3
|
+
import { ModuleDependencyMeta, GlobalModuleNode } from './GlobalModuleNode.ts';
|
|
4
|
+
import { ProtoDependencyMeta, ProtoNode } from './ProtoNode.ts';
|
|
5
|
+
import type { ModuleDescriptor } from '../ModuleDescriptor.ts';
|
|
6
|
+
export interface GlobalGraphOptions {
|
|
7
|
+
strict?: boolean;
|
|
10
8
|
}
|
|
11
|
-
type GlobalGraphBuildHook = (globalGraph: GlobalGraph) => void;
|
|
9
|
+
export type GlobalGraphBuildHook = (globalGraph: GlobalGraph) => void;
|
|
12
10
|
/**
|
|
13
11
|
* Sort all prototypes and modules in app.
|
|
14
12
|
* - 1. LoaderFactory.loadApp: get ModuleDescriptors
|
|
@@ -22,46 +20,44 @@ type GlobalGraphBuildHook = (globalGraph: GlobalGraph) => void;
|
|
|
22
20
|
* )
|
|
23
21
|
* - 4. graph.sort: build moduleConfigList and moduleProtoDescriptorMap
|
|
24
22
|
*/
|
|
25
|
-
declare class GlobalGraph {
|
|
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
|
-
|
|
23
|
+
export declare class GlobalGraph {
|
|
24
|
+
#private;
|
|
25
|
+
/**
|
|
26
|
+
* Vertex: ModuleNode, collect prototypes in module
|
|
27
|
+
* Edge: ModuleDependencyMeta, prototype and it's inject object
|
|
28
|
+
* @private
|
|
29
|
+
*/
|
|
30
|
+
moduleGraph: Graph<GlobalModuleNode, ModuleDependencyMeta>;
|
|
31
|
+
/**
|
|
32
|
+
* Vertex: ProtoNode, collect all prototypes in app
|
|
33
|
+
* Edge: ProtoDependencyMeta, inject object
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
protoGraph: Graph<ProtoNode, ProtoDependencyMeta>;
|
|
37
|
+
/**
|
|
38
|
+
* The order of the moduleConfigList is the order in which they are instantiated
|
|
39
|
+
*/
|
|
40
|
+
moduleConfigList: readonly ModuleReference[];
|
|
41
|
+
/**
|
|
42
|
+
* key: module name
|
|
43
|
+
* value: ProtoDescriptor in module, the order is the order in which they are instantiated
|
|
44
|
+
*/
|
|
45
|
+
moduleProtoDescriptorMap: Map<string, ProtoDescriptor[]>;
|
|
46
|
+
strict: boolean;
|
|
47
|
+
private buildHooks;
|
|
48
|
+
/**
|
|
49
|
+
* The global instance used in ModuleLoadUnit
|
|
50
|
+
*/
|
|
51
|
+
static instance?: GlobalGraph;
|
|
52
|
+
constructor(options?: GlobalGraphOptions);
|
|
53
|
+
registerBuildHook(hook: GlobalGraphBuildHook): void;
|
|
54
|
+
addModuleNode(moduleNode: GlobalModuleNode): void;
|
|
55
|
+
build(): void;
|
|
56
|
+
buildInjectEdge(moduleNode: GraphNode<GlobalModuleNode, ModuleDependencyMeta>, protoNode: GraphNode<ProtoNode, ProtoDependencyMeta>, injectObj: InjectObjectDescriptor): void;
|
|
57
|
+
addInject(moduleNode: GraphNode<GlobalModuleNode, ModuleDependencyMeta>, protoNode: GraphNode<ProtoNode, ProtoDependencyMeta>, injectNode: GraphNode<ProtoNode, ProtoDependencyMeta>, injectName: PropertyKey): void;
|
|
58
|
+
findInjectProto(proto: ProtoDescriptor, injectObject: InjectObjectDescriptor): ProtoDescriptor | undefined;
|
|
59
|
+
findDependencyProtoNode(proto: ProtoDescriptor, injectObject: InjectObjectDescriptor): GraphNode<ProtoNode, ProtoDependencyMeta> | undefined;
|
|
60
|
+
findModuleNode(moduleName: string): GraphNode<GlobalModuleNode, ModuleDependencyMeta>;
|
|
61
|
+
sort(): void;
|
|
62
|
+
static create(moduleDescriptors: ModuleDescriptor[], options?: GlobalGraphOptions): Promise<GlobalGraph>;
|
|
65
63
|
}
|
|
66
|
-
//#endregion
|
|
67
|
-
export { GlobalGraph, GlobalGraphBuildHook, GlobalGraphOptions };
|