@eggjs/tegg-metadata 4.0.0-beta.1 → 4.0.0-beta.10
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 +12 -0
- package/dist/errors.js +27 -0
- package/{src → dist}/factory/EggPrototypeCreatorFactory.d.ts +1 -1
- package/dist/factory/EggPrototypeCreatorFactory.js +108 -0
- package/dist/factory/EggPrototypeFactory.js +52 -0
- package/dist/factory/LoadUnitFactory.js +59 -0
- package/dist/factory/index.d.ts +3 -0
- package/dist/factory/index.js +4 -0
- package/dist/impl/EggPrototypeBuilder.js +124 -0
- package/{src → dist}/impl/EggPrototypeImpl.d.ts +1 -1
- package/dist/impl/EggPrototypeImpl.js +53 -0
- package/dist/impl/LoadUnitMultiInstanceProtoHook.js +18 -0
- package/{src → dist}/impl/ModuleLoadUnit.d.ts +1 -1
- package/dist/impl/ModuleLoadUnit.js +268 -0
- package/dist/impl/index.d.ts +4 -0
- package/dist/impl/index.js +5 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/model/AppGraph.js +264 -0
- package/{src → dist}/model/EggPrototype.js +1 -1
- package/{src → dist}/model/LoadUnit.js +1 -1
- package/{src → dist}/model/ModuleDescriptor.d.ts +1 -1
- package/dist/model/ModuleDescriptor.js +39 -0
- package/{src → dist}/model/ProtoDescriptor/AbstractProtoDescriptor.d.ts +1 -1
- package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.js +31 -0
- package/{src → dist}/model/ProtoDescriptor/ClassProtoDescriptor.d.ts +2 -2
- package/dist/model/ProtoDescriptor/ClassProtoDescriptor.js +30 -0
- package/dist/model/ProtoDescriptor/index.d.ts +2 -0
- package/dist/model/ProtoDescriptor/index.js +3 -0
- package/{src → dist}/model/ProtoDescriptorHelper.d.ts +2 -2
- package/dist/model/ProtoDescriptorHelper.js +130 -0
- package/{src → dist}/model/graph/GlobalGraph.d.ts +6 -6
- package/dist/model/graph/GlobalGraph.js +233 -0
- package/{src → dist}/model/graph/GlobalModuleNode.d.ts +3 -3
- package/dist/model/graph/GlobalModuleNode.js +39 -0
- package/{src → dist}/model/graph/GlobalModuleNodeBuilder.d.ts +2 -2
- package/dist/model/graph/GlobalModuleNodeBuilder.js +54 -0
- package/{src → dist}/model/graph/ProtoNode.d.ts +3 -3
- package/dist/model/graph/ProtoNode.js +40 -0
- package/{src → dist}/model/graph/ProtoSelector.d.ts +1 -1
- package/dist/model/graph/ProtoSelector.js +2 -0
- package/dist/model/graph/index.d.ts +5 -0
- package/dist/model/graph/index.js +6 -0
- package/dist/model/index.d.ts +7 -0
- package/dist/model/index.js +8 -0
- package/dist/util/ClassUtil.js +17 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.js +2 -0
- package/package.json +26 -26
- package/src/errors.js +0 -27
- package/src/factory/EggPrototypeCreatorFactory.js +0 -103
- package/src/factory/EggPrototypeFactory.js +0 -52
- package/src/factory/LoadUnitFactory.js +0 -59
- package/src/factory/index.d.ts +0 -3
- package/src/factory/index.js +0 -4
- package/src/impl/EggPrototypeBuilder.js +0 -124
- package/src/impl/EggPrototypeImpl.js +0 -53
- package/src/impl/LoadUnitMultiInstanceProtoHook.js +0 -18
- package/src/impl/ModuleLoadUnit.js +0 -268
- package/src/impl/index.d.ts +0 -4
- package/src/impl/index.js +0 -5
- package/src/index.d.ts +0 -6
- package/src/index.js +0 -7
- package/src/model/AppGraph.js +0 -264
- package/src/model/ModuleDescriptor.js +0 -38
- package/src/model/ProtoDescriptor/AbstractProtoDescriptor.js +0 -30
- package/src/model/ProtoDescriptor/ClassProtoDescriptor.js +0 -30
- package/src/model/ProtoDescriptor/index.d.ts +0 -2
- package/src/model/ProtoDescriptor/index.js +0 -3
- package/src/model/ProtoDescriptorHelper.js +0 -129
- package/src/model/graph/GlobalGraph.js +0 -233
- package/src/model/graph/GlobalModuleNode.js +0 -38
- package/src/model/graph/GlobalModuleNodeBuilder.js +0 -53
- package/src/model/graph/ProtoNode.js +0 -37
- package/src/model/graph/ProtoSelector.js +0 -2
- package/src/model/graph/index.d.ts +0 -5
- package/src/model/graph/index.js +0 -6
- package/src/model/index.d.ts +0 -7
- package/src/model/index.js +0 -8
- package/src/util/ClassUtil.js +0 -17
- package/src/util/index.d.ts +0 -1
- package/src/util/index.js +0 -2
- /package/{src → dist}/errors.d.ts +0 -0
- /package/{src → dist}/factory/EggPrototypeFactory.d.ts +0 -0
- /package/{src → dist}/factory/LoadUnitFactory.d.ts +0 -0
- /package/{src → dist}/impl/EggPrototypeBuilder.d.ts +0 -0
- /package/{src → dist}/impl/LoadUnitMultiInstanceProtoHook.d.ts +0 -0
- /package/{src → dist}/model/AppGraph.d.ts +0 -0
- /package/{src → dist}/model/EggPrototype.d.ts +0 -0
- /package/{src → dist}/model/LoadUnit.d.ts +0 -0
- /package/{src → dist}/util/ClassUtil.d.ts +0 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { debuglog } from 'node:util';
|
|
5
|
+
import { EggLoadUnitType, InitTypeQualifierAttribute, } from '@eggjs/tegg-types';
|
|
6
|
+
import { Graph, GraphNode, MapUtil } from '@eggjs/tegg-common-util';
|
|
7
|
+
import { IdenticalUtil, LifecycleUtil } from '@eggjs/tegg-lifecycle';
|
|
8
|
+
import { FrameworkErrorFormater } from 'egg-errors';
|
|
9
|
+
import { PrototypeUtil, QualifierUtil } from '@eggjs/core-decorator';
|
|
10
|
+
import { EggPrototypeFactory, LoadUnitFactory, EggPrototypeCreatorFactory } from "../factory/index.js";
|
|
11
|
+
import { ClassProtoDescriptor, GlobalGraph } from "../model/index.js";
|
|
12
|
+
import { MultiPrototypeFound } from "../errors.js";
|
|
13
|
+
const debug = debuglog('tegg/core/metadata/impl/ModuleLoadUnit');
|
|
14
|
+
let id = 0;
|
|
15
|
+
// TODO del ModuleGraph in next major version
|
|
16
|
+
class ProtoNode {
|
|
17
|
+
clazz;
|
|
18
|
+
name;
|
|
19
|
+
id;
|
|
20
|
+
qualifiers;
|
|
21
|
+
initType;
|
|
22
|
+
PrototypeUtil;
|
|
23
|
+
constructor(clazz, objName, initType, qualifiers) {
|
|
24
|
+
this.name = objName;
|
|
25
|
+
this.id = '' + (id++);
|
|
26
|
+
this.clazz = clazz;
|
|
27
|
+
this.qualifiers = qualifiers;
|
|
28
|
+
this.initType = initType;
|
|
29
|
+
}
|
|
30
|
+
verifyQualifiers(qualifiers) {
|
|
31
|
+
for (const qualifier of qualifiers) {
|
|
32
|
+
if (!this.verifyQualifier(qualifier)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
verifyQualifier(qualifier) {
|
|
39
|
+
const selfQualifiers = this.qualifiers.find(t => t.attribute === qualifier.attribute);
|
|
40
|
+
return selfQualifiers?.value === qualifier.value;
|
|
41
|
+
}
|
|
42
|
+
toString() {
|
|
43
|
+
return `${this.clazz.name}@${this.PrototypeUtil.getFilePath(this.clazz)}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export class ModuleGraph {
|
|
47
|
+
graph;
|
|
48
|
+
clazzList;
|
|
49
|
+
unitPath;
|
|
50
|
+
name;
|
|
51
|
+
constructor(clazzList, unitPath, name) {
|
|
52
|
+
this.clazzList = clazzList;
|
|
53
|
+
this.graph = new Graph();
|
|
54
|
+
this.unitPath = unitPath;
|
|
55
|
+
this.name = name;
|
|
56
|
+
debug('ModuleGraph constructor on moduleName: %o, unitPath: %o, clazzList size: %o', this.name, this.unitPath, this.clazzList.length);
|
|
57
|
+
}
|
|
58
|
+
findInjectNode(objName, qualifiers, parentInitTye) {
|
|
59
|
+
let nodes = Array.from(this.graph.nodes.values())
|
|
60
|
+
.filter(t => t.val.name === objName)
|
|
61
|
+
.filter(t => t.val.verifyQualifiers(qualifiers));
|
|
62
|
+
if (nodes.length === 0) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
if (nodes.length === 1) {
|
|
66
|
+
return nodes[0];
|
|
67
|
+
}
|
|
68
|
+
const initTypeQualifier = {
|
|
69
|
+
attribute: InitTypeQualifierAttribute,
|
|
70
|
+
value: parentInitTye,
|
|
71
|
+
};
|
|
72
|
+
nodes = nodes.filter(t => t.val.verifyQualifiers([initTypeQualifier]));
|
|
73
|
+
if (nodes.length === 1) {
|
|
74
|
+
return nodes[0];
|
|
75
|
+
}
|
|
76
|
+
const temp = new Map();
|
|
77
|
+
for (const node of nodes) {
|
|
78
|
+
temp.set(node.val.clazz, node);
|
|
79
|
+
}
|
|
80
|
+
nodes = Array.from(temp.values());
|
|
81
|
+
if (nodes.length === 1) {
|
|
82
|
+
return nodes[0];
|
|
83
|
+
}
|
|
84
|
+
const result = nodes.map(node => node.val.toString());
|
|
85
|
+
throw FrameworkErrorFormater.formatError(new MultiPrototypeFound(String(objName), qualifiers, JSON.stringify(result)));
|
|
86
|
+
}
|
|
87
|
+
async build() {
|
|
88
|
+
const protoGraphNodes = [];
|
|
89
|
+
for (const clazz of this.clazzList) {
|
|
90
|
+
if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
|
|
91
|
+
const properties = await PrototypeUtil.getMultiInstanceProperty(clazz, {
|
|
92
|
+
unitPath: this.unitPath,
|
|
93
|
+
moduleName: this.name,
|
|
94
|
+
});
|
|
95
|
+
if (properties) {
|
|
96
|
+
const qualifiers = QualifierUtil.getProtoQualifiers(clazz);
|
|
97
|
+
for (const obj of properties.objects || []) {
|
|
98
|
+
const instanceQualifiers = [
|
|
99
|
+
...qualifiers,
|
|
100
|
+
...obj.qualifiers,
|
|
101
|
+
];
|
|
102
|
+
protoGraphNodes.push(new GraphNode(new ProtoNode(clazz, obj.name, properties.initType, instanceQualifiers)));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const qualifiers = QualifierUtil.getProtoQualifiers(clazz);
|
|
108
|
+
const property = PrototypeUtil.getProperty(clazz);
|
|
109
|
+
if (property) {
|
|
110
|
+
protoGraphNodes.push(new GraphNode(new ProtoNode(clazz, property.name, property.initType, qualifiers)));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
for (const node of protoGraphNodes) {
|
|
115
|
+
if (!this.graph.addVertex(node)) {
|
|
116
|
+
throw new Error(`duplicate proto: ${node.val.id}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
for (const node of protoGraphNodes) {
|
|
120
|
+
if (PrototypeUtil.isEggMultiInstancePrototype(node.val.clazz)) {
|
|
121
|
+
const property = await PrototypeUtil.getMultiInstanceProperty(node.val.clazz, {
|
|
122
|
+
moduleName: this.name,
|
|
123
|
+
unitPath: this.unitPath,
|
|
124
|
+
});
|
|
125
|
+
for (const objectInfo of property?.objects || []) {
|
|
126
|
+
const injectObjects = PrototypeUtil.getInjectObjects(node.val.clazz);
|
|
127
|
+
for (const injectObject of injectObjects) {
|
|
128
|
+
const qualifiers = [
|
|
129
|
+
...QualifierUtil.getProperQualifiers(node.val.clazz, injectObject.refName),
|
|
130
|
+
...objectInfo.properQualifiers?.[injectObject.refName] ?? [],
|
|
131
|
+
];
|
|
132
|
+
const injectNode = this.findInjectNode(injectObject.objName, qualifiers, node.val.initType);
|
|
133
|
+
// If not found maybe in other module
|
|
134
|
+
if (injectNode) {
|
|
135
|
+
this.graph.addEdge(node, injectNode);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const injectObjects = PrototypeUtil.getInjectObjects(node.val.clazz);
|
|
142
|
+
for (const injectObject of injectObjects) {
|
|
143
|
+
const qualifiers = QualifierUtil.getProperQualifiers(node.val.clazz, injectObject.refName);
|
|
144
|
+
const injectNode = this.findInjectNode(injectObject.objName, qualifiers, node.val.initType);
|
|
145
|
+
// If not found maybe in other module
|
|
146
|
+
if (injectNode) {
|
|
147
|
+
this.graph.addEdge(node, injectNode);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
sort() {
|
|
154
|
+
const loopPath = this.graph.loopPath();
|
|
155
|
+
if (loopPath) {
|
|
156
|
+
throw new Error('proto has recursive deps: ' + loopPath);
|
|
157
|
+
}
|
|
158
|
+
const clazzSet = new Set();
|
|
159
|
+
for (const clazz of this.graph.sort()) {
|
|
160
|
+
clazzSet.add(clazz.val.clazz);
|
|
161
|
+
}
|
|
162
|
+
this.clazzList = Array.from(clazzSet);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export class ModuleLoadUnit {
|
|
166
|
+
// private loader: Loader;
|
|
167
|
+
protoMap = new Map();
|
|
168
|
+
protos;
|
|
169
|
+
clazzList;
|
|
170
|
+
id;
|
|
171
|
+
name;
|
|
172
|
+
unitPath;
|
|
173
|
+
type = EggLoadUnitType.MODULE;
|
|
174
|
+
get globalGraph() {
|
|
175
|
+
return GlobalGraph.instance;
|
|
176
|
+
}
|
|
177
|
+
constructor(name, unitPath) {
|
|
178
|
+
this.id = IdenticalUtil.createLoadUnitId(name);
|
|
179
|
+
this.name = name;
|
|
180
|
+
this.unitPath = unitPath;
|
|
181
|
+
debug('ModuleLoadUnit constructor on moduleName: %o, unitPath: %o, id: %o', this.name, this.unitPath, this.id);
|
|
182
|
+
}
|
|
183
|
+
doLoadClazz() {
|
|
184
|
+
const protos = this.globalGraph.moduleProtoDescriptorMap.get(this.name);
|
|
185
|
+
if (protos) {
|
|
186
|
+
// TODO ModuleLoadUnit should support all proto descriptor
|
|
187
|
+
this.protos = protos.filter(t => ClassProtoDescriptor.isClassProtoDescriptor(t));
|
|
188
|
+
this.clazzList = this.protos.map(t => t.clazz);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
this.protos = [];
|
|
192
|
+
this.clazzList = [];
|
|
193
|
+
}
|
|
194
|
+
debug('doLoadClazz on moduleName: %o, protos size: %o, clazzList size: %o', this.name, this.protos.length, this.clazzList.length);
|
|
195
|
+
}
|
|
196
|
+
loadClazz() {
|
|
197
|
+
if (!this.clazzList) {
|
|
198
|
+
this.doLoadClazz();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async preLoad() {
|
|
202
|
+
this.loadClazz();
|
|
203
|
+
for (const protoClass of this.clazzList) {
|
|
204
|
+
// TODO refactor lifecycle hook to ProtoDescriptor or EggPrototype
|
|
205
|
+
// ModuleLoadUnit should not use clazz list
|
|
206
|
+
const fnName = LifecycleUtil.getStaticLifecycleHook('preLoad', protoClass);
|
|
207
|
+
if (fnName) {
|
|
208
|
+
const lifecycleHook = Reflect.get(protoClass, fnName);
|
|
209
|
+
if (typeof lifecycleHook === 'function') {
|
|
210
|
+
await lifecycleHook();
|
|
211
|
+
}
|
|
212
|
+
// TODO(@fengmk2): lifecycleHook is not a function should throw error
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async init() {
|
|
217
|
+
this.loadClazz();
|
|
218
|
+
for (const protoDescriptor of this.protos) {
|
|
219
|
+
const proto = await EggPrototypeCreatorFactory.createProtoByDescriptor(protoDescriptor, this);
|
|
220
|
+
EggPrototypeFactory.instance.registerPrototype(proto, this);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
containPrototype(proto) {
|
|
224
|
+
return !!(this.protoMap.get(proto.name)?.find(t => t === proto));
|
|
225
|
+
}
|
|
226
|
+
getEggPrototype(name, qualifiers) {
|
|
227
|
+
const protos = this.protoMap.get(name);
|
|
228
|
+
return protos?.filter(proto => proto.verifyQualifiers(qualifiers)) || [];
|
|
229
|
+
}
|
|
230
|
+
registerEggPrototype(proto) {
|
|
231
|
+
const protoList = MapUtil.getOrStore(this.protoMap, proto.name, []);
|
|
232
|
+
protoList.push(proto);
|
|
233
|
+
}
|
|
234
|
+
deletePrototype(proto) {
|
|
235
|
+
const protos = this.protoMap.get(proto.name);
|
|
236
|
+
if (protos) {
|
|
237
|
+
const index = protos.indexOf(proto);
|
|
238
|
+
if (index !== -1) {
|
|
239
|
+
protos.splice(index, 1);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async destroy() {
|
|
244
|
+
for (const namedProtoMap of this.protoMap.values()) {
|
|
245
|
+
for (const proto of namedProtoMap.slice()) {
|
|
246
|
+
EggPrototypeFactory.instance.deletePrototype(proto, this);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
this.protoMap.clear();
|
|
250
|
+
}
|
|
251
|
+
iterateEggPrototype() {
|
|
252
|
+
const protos = Array.from(this.protoMap.values())
|
|
253
|
+
.reduce((p, c) => {
|
|
254
|
+
p = p.concat(c);
|
|
255
|
+
return p;
|
|
256
|
+
}, []);
|
|
257
|
+
return protos.values();
|
|
258
|
+
}
|
|
259
|
+
static createModule(ctx) {
|
|
260
|
+
const pkgPath = path.join(ctx.unitPath, 'package.json');
|
|
261
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
262
|
+
assert(pkg.eggModule, `module config not found in package ${pkgPath}`);
|
|
263
|
+
const { name } = pkg.eggModule;
|
|
264
|
+
return new ModuleLoadUnit(name, ctx.unitPath);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
LoadUnitFactory.registerLoadUnitCreator(EggLoadUnitType.MODULE, ModuleLoadUnit.createModule);
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlTG9hZFVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wbC9Nb2R1bGVMb2FkVW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUVmLDBCQUEwQixHQUUzQixNQUFNLG1CQUFtQixDQUFDO0FBUzNCLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFFakUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRVgsNkNBQTZDO0FBQzdDLE1BQU0sU0FBUztJQUNKLEtBQUssQ0FBb0I7SUFDekIsSUFBSSxDQUFtQjtJQUN2QixFQUFFLENBQVM7SUFDWCxVQUFVLENBQWtCO0lBQzVCLFFBQVEsQ0FBcUI7SUFDOUIsYUFB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./EggPrototypeBuilder.js";
|
|
2
|
+
export * from "./EggPrototypeImpl.js";
|
|
3
|
+
export * from "./LoadUnitMultiInstanceProtoHook.js";
|
|
4
|
+
export * from "./ModuleLoadUnit.js";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFCQUFxQixDQUFDIn0=
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from '@eggjs/tegg-types/metadata';
|
|
2
|
+
export * from "./factory/index.js";
|
|
3
|
+
export * from "./model/index.js";
|
|
4
|
+
export * from "./errors.js";
|
|
5
|
+
export * from "./util/index.js";
|
|
6
|
+
export * from "./impl/index.js";
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDIn0=
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import util from 'node:util';
|
|
3
|
+
import { Graph, GraphNode, ModuleConfigUtil } from '@eggjs/tegg-common-util';
|
|
4
|
+
import { PrototypeUtil, QualifierUtil } from '@eggjs/core-decorator';
|
|
5
|
+
import { AccessLevel, INIT_TYPE_TRY_ORDER, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute } from '@eggjs/tegg-types';
|
|
6
|
+
function verifyQualifier(clazzQualifiers, qualifier) {
|
|
7
|
+
const selfQualifiers = clazzQualifiers.find(t => t.attribute === qualifier.attribute);
|
|
8
|
+
return selfQualifiers?.value === qualifier.value;
|
|
9
|
+
}
|
|
10
|
+
function verifyQualifiers(clazzQualifiers, qualifiers) {
|
|
11
|
+
for (const qualifier of qualifiers) {
|
|
12
|
+
if (!verifyQualifier(clazzQualifiers, qualifier)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
export class ClazzMap {
|
|
19
|
+
clazzMap;
|
|
20
|
+
graph;
|
|
21
|
+
constructor(graph) {
|
|
22
|
+
this.graph = graph;
|
|
23
|
+
}
|
|
24
|
+
async build() {
|
|
25
|
+
const graph = this.graph;
|
|
26
|
+
/**
|
|
27
|
+
* 1. iterate all module get all MultiInstanceClazz
|
|
28
|
+
* 2. iterate MultiInstanceClazz and all module get object meta
|
|
29
|
+
* 3. iterate object meta and build clazz map
|
|
30
|
+
*/
|
|
31
|
+
const clazzMap = {};
|
|
32
|
+
for (const ownerNode of graph.nodes.values()) {
|
|
33
|
+
for (const clazz of ownerNode.val.getClazzList()) {
|
|
34
|
+
const qualifiers = QualifierUtil.getProtoQualifiers(clazz);
|
|
35
|
+
if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
|
|
36
|
+
for (const instanceNode of graph.nodes.values()) {
|
|
37
|
+
const property = await PrototypeUtil.getMultiInstanceProperty(clazz, {
|
|
38
|
+
unitPath: instanceNode.val.moduleConfig.path,
|
|
39
|
+
moduleName: instanceNode.val.moduleConfig.name,
|
|
40
|
+
});
|
|
41
|
+
assert(property, `multi instance property not found for ${clazz.name}`);
|
|
42
|
+
for (const info of property.objects) {
|
|
43
|
+
const instanceQualifiers = [
|
|
44
|
+
...qualifiers,
|
|
45
|
+
...info.qualifiers,
|
|
46
|
+
];
|
|
47
|
+
clazzMap[info.name] = clazzMap[info.name] || [];
|
|
48
|
+
clazzMap[info.name].push({
|
|
49
|
+
name: info.name,
|
|
50
|
+
accessLevel: await PrototypeUtil.getAccessLevel(clazz, {
|
|
51
|
+
unitPath: instanceNode.val.moduleConfig.path,
|
|
52
|
+
moduleName: instanceNode.val.moduleConfig.name,
|
|
53
|
+
}),
|
|
54
|
+
qualifiers: instanceQualifiers,
|
|
55
|
+
properQualifiers: info.properQualifiers || {},
|
|
56
|
+
instanceModule: instanceNode,
|
|
57
|
+
ownerModule: ownerNode,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const property = PrototypeUtil.getProperty(clazz);
|
|
64
|
+
assert(property, `property not found for ${clazz.name}`);
|
|
65
|
+
clazzMap[property.name] = clazzMap[property.name] || [];
|
|
66
|
+
clazzMap[property.name].push({
|
|
67
|
+
name: property.name,
|
|
68
|
+
accessLevel: await PrototypeUtil.getAccessLevel(clazz, {
|
|
69
|
+
unitPath: ownerNode.val.moduleConfig.path,
|
|
70
|
+
moduleName: ownerNode.val.moduleConfig.name,
|
|
71
|
+
}),
|
|
72
|
+
qualifiers,
|
|
73
|
+
properQualifiers: {},
|
|
74
|
+
ownerModule: ownerNode,
|
|
75
|
+
instanceModule: ownerNode,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
this.clazzMap = clazzMap;
|
|
81
|
+
}
|
|
82
|
+
findDependencyModule(objName, properQualifiers, intoModule) {
|
|
83
|
+
const result = new Set();
|
|
84
|
+
const objInfo = this.clazzMap[objName];
|
|
85
|
+
if (!objInfo) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
let mayObjs = objInfo.filter(obj => {
|
|
89
|
+
// 1. check accessLevel
|
|
90
|
+
if (obj.instanceModule !== intoModule && obj.accessLevel === AccessLevel.PRIVATE) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
// 2. check qualifier
|
|
94
|
+
return verifyQualifiers(obj.qualifiers, properQualifiers);
|
|
95
|
+
});
|
|
96
|
+
// 3. auto set init type qualifier
|
|
97
|
+
if (mayObjs.length > 1) {
|
|
98
|
+
const initTypeQualifiers = INIT_TYPE_TRY_ORDER.map(type => ({
|
|
99
|
+
attribute: InitTypeQualifierAttribute,
|
|
100
|
+
value: type,
|
|
101
|
+
}));
|
|
102
|
+
for (const initTypeQualifier of initTypeQualifiers) {
|
|
103
|
+
const mayInitTypeObjs = mayObjs.filter(obj => {
|
|
104
|
+
return verifyQualifiers(obj.qualifiers, [
|
|
105
|
+
...properQualifiers,
|
|
106
|
+
initTypeQualifier,
|
|
107
|
+
]);
|
|
108
|
+
});
|
|
109
|
+
if (mayInitTypeObjs.length > 0) {
|
|
110
|
+
mayObjs = mayInitTypeObjs;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// 4. auto set load unit name qualifier
|
|
115
|
+
if (mayObjs.length > 1) {
|
|
116
|
+
const moduleNameQualifiers = {
|
|
117
|
+
attribute: LoadUnitNameQualifierAttribute,
|
|
118
|
+
value: intoModule.val.name,
|
|
119
|
+
};
|
|
120
|
+
const mayLoadUnitNameObjs = mayObjs.filter(obj => {
|
|
121
|
+
return verifyQualifiers(obj.qualifiers, [
|
|
122
|
+
...properQualifiers,
|
|
123
|
+
moduleNameQualifiers,
|
|
124
|
+
]);
|
|
125
|
+
});
|
|
126
|
+
if (mayLoadUnitNameObjs.length > 0) {
|
|
127
|
+
mayObjs = mayLoadUnitNameObjs;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (mayObjs.length > 1) {
|
|
131
|
+
const message = util.format('multi class found for %s@%o in module %j', objName, properQualifiers, mayObjs.map(t => {
|
|
132
|
+
return t.instanceModule.val.moduleConfig.path;
|
|
133
|
+
}));
|
|
134
|
+
throw new Error(message);
|
|
135
|
+
}
|
|
136
|
+
for (const obj of mayObjs) {
|
|
137
|
+
result.add(obj.instanceModule);
|
|
138
|
+
// result.add(obj.ownerModule);
|
|
139
|
+
}
|
|
140
|
+
return Array.from(result);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export class ModuleNode {
|
|
144
|
+
id;
|
|
145
|
+
name;
|
|
146
|
+
moduleConfig;
|
|
147
|
+
clazzList;
|
|
148
|
+
constructor(moduleConfig) {
|
|
149
|
+
this.moduleConfig = moduleConfig;
|
|
150
|
+
this.id = moduleConfig.path;
|
|
151
|
+
this.name = ModuleConfigUtil.readModuleNameSync(moduleConfig.path);
|
|
152
|
+
this.clazzList = [];
|
|
153
|
+
}
|
|
154
|
+
async addClazz(clazz) {
|
|
155
|
+
if (!this.clazzList.includes(clazz)) {
|
|
156
|
+
this.clazzList.push(clazz);
|
|
157
|
+
}
|
|
158
|
+
if (!PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
|
|
159
|
+
const initTypeQualifierAttributeValue = await PrototypeUtil.getInitType(clazz, {
|
|
160
|
+
unitPath: this.moduleConfig.path,
|
|
161
|
+
moduleName: this.moduleConfig.name,
|
|
162
|
+
});
|
|
163
|
+
const defaultQualifier = [{
|
|
164
|
+
attribute: InitTypeQualifierAttribute,
|
|
165
|
+
value: initTypeQualifierAttributeValue,
|
|
166
|
+
}, {
|
|
167
|
+
attribute: LoadUnitNameQualifierAttribute,
|
|
168
|
+
value: this.name,
|
|
169
|
+
}];
|
|
170
|
+
for (const qualifier of defaultQualifier) {
|
|
171
|
+
QualifierUtil.addProtoQualifier(clazz, qualifier.attribute, qualifier.value);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
toString() {
|
|
176
|
+
return `${this.name}@${this.moduleConfig.path}`;
|
|
177
|
+
}
|
|
178
|
+
getClazzList() {
|
|
179
|
+
return this.clazzList;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export class AppGraph {
|
|
183
|
+
graph;
|
|
184
|
+
clazzMap;
|
|
185
|
+
moduleConfigList;
|
|
186
|
+
constructor() {
|
|
187
|
+
this.graph = new Graph();
|
|
188
|
+
}
|
|
189
|
+
addNode(moduleNode) {
|
|
190
|
+
if (!this.graph.addVertex(new GraphNode(moduleNode))) {
|
|
191
|
+
throw new Error(`duplicate module: ${moduleNode}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
getClazzList() {
|
|
195
|
+
const clazzSet = new Set();
|
|
196
|
+
for (const node of this.graph.nodes.values()) {
|
|
197
|
+
for (const clazz of node.val.getClazzList()) {
|
|
198
|
+
clazzSet.add(clazz);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return Array.from(clazzSet);
|
|
202
|
+
}
|
|
203
|
+
async build() {
|
|
204
|
+
this.clazzMap = new ClazzMap(this.graph);
|
|
205
|
+
await this.clazzMap.build();
|
|
206
|
+
// 1. iterate all modules
|
|
207
|
+
for (const node of this.graph.nodes.values()) {
|
|
208
|
+
// 2. iterate all class
|
|
209
|
+
for (const clazz of node.val.getClazzList()) {
|
|
210
|
+
const injectObjects = PrototypeUtil.getInjectObjects(clazz);
|
|
211
|
+
// 3. iterate all inject objects
|
|
212
|
+
for (const injectObject of injectObjects) {
|
|
213
|
+
if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
|
|
214
|
+
for (const instanceNode of this.graph.nodes.values()) {
|
|
215
|
+
const property = await PrototypeUtil.getMultiInstanceProperty(clazz, {
|
|
216
|
+
unitPath: instanceNode.val.moduleConfig.path,
|
|
217
|
+
moduleName: instanceNode.val.moduleConfig.name,
|
|
218
|
+
});
|
|
219
|
+
for (const info of property?.objects || []) {
|
|
220
|
+
const properQualifiers = [
|
|
221
|
+
...QualifierUtil.getProperQualifiers(clazz, injectObject.refName),
|
|
222
|
+
...info.properQualifiers?.[injectObject.refName] ?? [],
|
|
223
|
+
];
|
|
224
|
+
// 4. find dependency module
|
|
225
|
+
const dependencyModules = this.clazzMap.findDependencyModule(injectObject.objName, properQualifiers, node);
|
|
226
|
+
for (const moduleNode of dependencyModules) {
|
|
227
|
+
// 5. add edge
|
|
228
|
+
if (instanceNode !== moduleNode) {
|
|
229
|
+
this.graph.addEdge(instanceNode, moduleNode);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
const properQualifiers = [
|
|
237
|
+
...QualifierUtil.getProperQualifiers(clazz, injectObject.refName),
|
|
238
|
+
];
|
|
239
|
+
// 4. find dependency module
|
|
240
|
+
const dependencyModules = this.clazzMap.findDependencyModule(injectObject.objName, properQualifiers, node);
|
|
241
|
+
for (const moduleNode of dependencyModules) {
|
|
242
|
+
// 5. add edge
|
|
243
|
+
if (node !== moduleNode) {
|
|
244
|
+
this.graph.addEdge(node, moduleNode);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
sort() {
|
|
253
|
+
const loopPath = this.graph.loopPath();
|
|
254
|
+
if (loopPath) {
|
|
255
|
+
throw new Error('module has recursive deps: ' + loopPath);
|
|
256
|
+
}
|
|
257
|
+
this.moduleConfigList = this.graph.sort()
|
|
258
|
+
.filter(t => {
|
|
259
|
+
return t.val.moduleConfig.optional !== true || t.fromNodeMap.size > 0;
|
|
260
|
+
})
|
|
261
|
+
.map(t => t.val.moduleConfig);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwR3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvQXBwR3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBY2pJLFNBQVMsZUFBZSxDQUFDLGVBQWdDLEVBQUUsU0FBd0I7SUFDakYsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sY0FBYyxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQ25ELENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLGVBQWdDLEVBQUUsVUFBMkI7SUFDckYsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLE9BQU8sUUFBUTtJQUNYLFFBQVEsQ0FBZTtJQUN2QixLQUFLLENBQW9CO0lBRWpDLFlBQVksS0FBd0I7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FB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
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
|
|
2
2
|
export const EggPrototypeLifecycleUtil = new LifecycleUtil();
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0VnZ1Byb3RvdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHdEQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxhQUFhLEVBQThDLENBQUMifQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
|
|
2
2
|
export const LoadUnitLifecycleUtil = new LifecycleUtil();
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvTG9hZFVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3RELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksYUFBYSxFQUFzQyxDQUFDIn0=
|