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