@eggjs/metadata 4.0.0-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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/dist/errors.d.ts +14 -0
  4. package/dist/errors.js +27 -0
  5. package/dist/factory/EggPrototypeCreatorFactory.d.ts +9 -0
  6. package/dist/factory/EggPrototypeCreatorFactory.js +111 -0
  7. package/dist/factory/EggPrototypeFactory.d.ts +9 -0
  8. package/dist/factory/EggPrototypeFactory.js +52 -0
  9. package/dist/factory/LoadUnitFactory.d.ts +12 -0
  10. package/dist/factory/LoadUnitFactory.js +59 -0
  11. package/dist/factory/index.d.ts +3 -0
  12. package/dist/factory/index.js +4 -0
  13. package/dist/impl/EggPrototypeBuilder.d.ts +22 -0
  14. package/dist/impl/EggPrototypeBuilder.js +129 -0
  15. package/dist/impl/EggPrototypeImpl.d.ts +24 -0
  16. package/dist/impl/EggPrototypeImpl.js +53 -0
  17. package/dist/impl/LoadUnitMultiInstanceProtoHook.d.ts +7 -0
  18. package/dist/impl/LoadUnitMultiInstanceProtoHook.js +18 -0
  19. package/dist/impl/ModuleLoadUnit.d.ts +35 -0
  20. package/dist/impl/ModuleLoadUnit.js +264 -0
  21. package/dist/impl/index.d.ts +4 -0
  22. package/dist/impl/index.js +5 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.js +7 -0
  25. package/dist/model/AppGraph.d.ts +39 -0
  26. package/dist/model/AppGraph.js +257 -0
  27. package/dist/model/EggPrototype.d.ts +3 -0
  28. package/dist/model/EggPrototype.js +3 -0
  29. package/dist/model/LoadUnit.d.ts +3 -0
  30. package/dist/model/LoadUnit.js +3 -0
  31. package/dist/model/ModuleDescriptor.d.ts +18 -0
  32. package/dist/model/ModuleDescriptor.js +47 -0
  33. package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.d.ts +32 -0
  34. package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.js +31 -0
  35. package/dist/model/ProtoDescriptor/ClassProtoDescriptor.d.ts +12 -0
  36. package/dist/model/ProtoDescriptor/ClassProtoDescriptor.js +30 -0
  37. package/dist/model/ProtoDescriptor/index.d.ts +2 -0
  38. package/dist/model/ProtoDescriptor/index.js +3 -0
  39. package/dist/model/ProtoDescriptorHelper.d.ts +26 -0
  40. package/dist/model/ProtoDescriptorHelper.js +129 -0
  41. package/dist/model/graph/GlobalGraph.d.ts +63 -0
  42. package/dist/model/graph/GlobalGraph.js +240 -0
  43. package/dist/model/graph/GlobalModuleNode.d.ts +25 -0
  44. package/dist/model/graph/GlobalModuleNode.js +38 -0
  45. package/dist/model/graph/GlobalModuleNodeBuilder.d.ts +13 -0
  46. package/dist/model/graph/GlobalModuleNodeBuilder.js +54 -0
  47. package/dist/model/graph/ProtoNode.d.ts +19 -0
  48. package/dist/model/graph/ProtoNode.js +40 -0
  49. package/dist/model/graph/ProtoSelector.d.ts +6 -0
  50. package/dist/model/graph/ProtoSelector.js +2 -0
  51. package/dist/model/graph/index.d.ts +5 -0
  52. package/dist/model/graph/index.js +6 -0
  53. package/dist/model/index.d.ts +7 -0
  54. package/dist/model/index.js +8 -0
  55. package/dist/util/ClassUtil.d.ts +5 -0
  56. package/dist/util/ClassUtil.js +17 -0
  57. package/dist/util/index.d.ts +1 -0
  58. package/dist/util/index.js +2 -0
  59. package/package.json +59 -0
@@ -0,0 +1,257 @@
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 = [...qualifiers, ...info.qualifiers];
44
+ clazzMap[info.name] = clazzMap[info.name] || [];
45
+ clazzMap[info.name].push({
46
+ name: info.name,
47
+ accessLevel: (await PrototypeUtil.getAccessLevel(clazz, {
48
+ unitPath: instanceNode.val.moduleConfig.path,
49
+ moduleName: instanceNode.val.moduleConfig.name,
50
+ })),
51
+ qualifiers: instanceQualifiers,
52
+ properQualifiers: info.properQualifiers || {},
53
+ instanceModule: instanceNode,
54
+ ownerModule: ownerNode,
55
+ });
56
+ }
57
+ }
58
+ }
59
+ else {
60
+ const property = PrototypeUtil.getProperty(clazz);
61
+ assert(property, `property not found for ${clazz.name}`);
62
+ clazzMap[property.name] = clazzMap[property.name] || [];
63
+ clazzMap[property.name].push({
64
+ name: property.name,
65
+ accessLevel: (await PrototypeUtil.getAccessLevel(clazz, {
66
+ unitPath: ownerNode.val.moduleConfig.path,
67
+ moduleName: ownerNode.val.moduleConfig.name,
68
+ })),
69
+ qualifiers,
70
+ properQualifiers: {},
71
+ ownerModule: ownerNode,
72
+ instanceModule: ownerNode,
73
+ });
74
+ }
75
+ }
76
+ }
77
+ this.clazzMap = clazzMap;
78
+ }
79
+ findDependencyModule(objName, properQualifiers, intoModule) {
80
+ const result = new Set();
81
+ const objInfo = this.clazzMap[objName];
82
+ if (!objInfo) {
83
+ return [];
84
+ }
85
+ let mayObjs = objInfo.filter((obj) => {
86
+ // 1. check accessLevel
87
+ if (obj.instanceModule !== intoModule && obj.accessLevel === AccessLevel.PRIVATE) {
88
+ return false;
89
+ }
90
+ // 2. check qualifier
91
+ return verifyQualifiers(obj.qualifiers, properQualifiers);
92
+ });
93
+ // 3. auto set init type qualifier
94
+ if (mayObjs.length > 1) {
95
+ const initTypeQualifiers = INIT_TYPE_TRY_ORDER.map((type) => ({
96
+ attribute: InitTypeQualifierAttribute,
97
+ value: type,
98
+ }));
99
+ for (const initTypeQualifier of initTypeQualifiers) {
100
+ const mayInitTypeObjs = mayObjs.filter((obj) => {
101
+ return verifyQualifiers(obj.qualifiers, [...properQualifiers, initTypeQualifier]);
102
+ });
103
+ if (mayInitTypeObjs.length > 0) {
104
+ mayObjs = mayInitTypeObjs;
105
+ }
106
+ }
107
+ }
108
+ // 4. auto set load unit name qualifier
109
+ if (mayObjs.length > 1) {
110
+ const moduleNameQualifiers = {
111
+ attribute: LoadUnitNameQualifierAttribute,
112
+ value: intoModule.val.name,
113
+ };
114
+ const mayLoadUnitNameObjs = mayObjs.filter((obj) => {
115
+ return verifyQualifiers(obj.qualifiers, [...properQualifiers, moduleNameQualifiers]);
116
+ });
117
+ if (mayLoadUnitNameObjs.length > 0) {
118
+ mayObjs = mayLoadUnitNameObjs;
119
+ }
120
+ }
121
+ if (mayObjs.length > 1) {
122
+ const message = util.format('multi class found for %s@%o in module %j', objName, properQualifiers, mayObjs.map((t) => {
123
+ return t.instanceModule.val.moduleConfig.path;
124
+ }));
125
+ throw new Error(message);
126
+ }
127
+ for (const obj of mayObjs) {
128
+ result.add(obj.instanceModule);
129
+ // result.add(obj.ownerModule);
130
+ }
131
+ return Array.from(result);
132
+ }
133
+ }
134
+ export class ModuleNode {
135
+ id;
136
+ name;
137
+ moduleConfig;
138
+ clazzList;
139
+ constructor(moduleConfig) {
140
+ this.moduleConfig = moduleConfig;
141
+ this.id = moduleConfig.path;
142
+ this.name = ModuleConfigUtil.readModuleNameSync(moduleConfig.path);
143
+ this.clazzList = [];
144
+ }
145
+ async addClazz(clazz) {
146
+ if (!this.clazzList.includes(clazz)) {
147
+ this.clazzList.push(clazz);
148
+ }
149
+ if (!PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
150
+ const initTypeQualifierAttributeValue = await PrototypeUtil.getInitType(clazz, {
151
+ unitPath: this.moduleConfig.path,
152
+ moduleName: this.moduleConfig.name,
153
+ });
154
+ const defaultQualifier = [
155
+ {
156
+ attribute: InitTypeQualifierAttribute,
157
+ value: initTypeQualifierAttributeValue,
158
+ },
159
+ {
160
+ attribute: LoadUnitNameQualifierAttribute,
161
+ value: this.name,
162
+ },
163
+ ];
164
+ for (const qualifier of defaultQualifier) {
165
+ QualifierUtil.addProtoQualifier(clazz, qualifier.attribute, qualifier.value);
166
+ }
167
+ }
168
+ }
169
+ toString() {
170
+ return `${this.name}@${this.moduleConfig.path}`;
171
+ }
172
+ getClazzList() {
173
+ return this.clazzList;
174
+ }
175
+ }
176
+ export class AppGraph {
177
+ graph;
178
+ clazzMap;
179
+ moduleConfigList;
180
+ constructor() {
181
+ this.graph = new Graph();
182
+ }
183
+ addNode(moduleNode) {
184
+ if (!this.graph.addVertex(new GraphNode(moduleNode))) {
185
+ throw new Error(`duplicate module: ${moduleNode}`);
186
+ }
187
+ }
188
+ getClazzList() {
189
+ const clazzSet = new Set();
190
+ for (const node of this.graph.nodes.values()) {
191
+ for (const clazz of node.val.getClazzList()) {
192
+ clazzSet.add(clazz);
193
+ }
194
+ }
195
+ return Array.from(clazzSet);
196
+ }
197
+ async build() {
198
+ this.clazzMap = new ClazzMap(this.graph);
199
+ await this.clazzMap.build();
200
+ // 1. iterate all modules
201
+ for (const node of this.graph.nodes.values()) {
202
+ // 2. iterate all class
203
+ for (const clazz of node.val.getClazzList()) {
204
+ const injectObjects = PrototypeUtil.getInjectObjects(clazz);
205
+ // 3. iterate all inject objects
206
+ for (const injectObject of injectObjects) {
207
+ if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
208
+ for (const instanceNode of this.graph.nodes.values()) {
209
+ const property = await PrototypeUtil.getMultiInstanceProperty(clazz, {
210
+ unitPath: instanceNode.val.moduleConfig.path,
211
+ moduleName: instanceNode.val.moduleConfig.name,
212
+ });
213
+ for (const info of property?.objects || []) {
214
+ const properQualifiers = [
215
+ ...QualifierUtil.getProperQualifiers(clazz, injectObject.refName),
216
+ ...(info.properQualifiers?.[injectObject.refName] ?? []),
217
+ ];
218
+ // 4. find dependency module
219
+ const dependencyModules = this.clazzMap.findDependencyModule(injectObject.objName, properQualifiers, node);
220
+ for (const moduleNode of dependencyModules) {
221
+ // 5. add edge
222
+ if (instanceNode !== moduleNode) {
223
+ this.graph.addEdge(instanceNode, moduleNode);
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }
229
+ else {
230
+ const properQualifiers = [...QualifierUtil.getProperQualifiers(clazz, injectObject.refName)];
231
+ // 4. find dependency module
232
+ const dependencyModules = this.clazzMap.findDependencyModule(injectObject.objName, properQualifiers, node);
233
+ for (const moduleNode of dependencyModules) {
234
+ // 5. add edge
235
+ if (node !== moduleNode) {
236
+ this.graph.addEdge(node, moduleNode);
237
+ }
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+ sort() {
245
+ const loopPath = this.graph.loopPath();
246
+ if (loopPath) {
247
+ throw new Error('module has recursive deps: ' + loopPath);
248
+ }
249
+ this.moduleConfigList = this.graph
250
+ .sort()
251
+ .filter((t) => {
252
+ return t.val.moduleConfig.optional !== true || t.fromNodeMap.size > 0;
253
+ })
254
+ .map((t) => t.val.moduleConfig);
255
+ }
256
+ }
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwR3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvQXBwR3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUNMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDhCQUE4QixHQUMvQixNQUFNLG1CQUFtQixDQUFDO0FBb0IzQixTQUFTLGVBQWUsQ0FBQyxlQUFnQyxFQUFFLFNBQXdCO0lBQ2pGLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hGLE9BQU8sY0FBYyxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQ25ELENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLGVBQWdDLEVBQUUsVUFBMkI7SUFDckYsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLE9BQU8sUUFBUTtJQUNYLFFBQVEsQ0FBZTtJQUN2QixLQUFLLENBQW9CO0lBRWpDLFlBQVksS0FBd0I7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7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
@@ -0,0 +1,3 @@
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
+ import type { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/tegg-types';
3
+ export declare const EggPrototypeLifecycleUtil: LifecycleUtil<EggPrototypeLifecycleContext, EggPrototype>;
@@ -0,0 +1,3 @@
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
+ export const EggPrototypeLifecycleUtil = new LifecycleUtil();
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0VnZ1Byb3RvdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQThELElBQUksYUFBYSxFQUFFLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
+ import type { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-types';
3
+ export declare const LoadUnitLifecycleUtil: LifecycleUtil<LoadUnitLifecycleContext, LoadUnit>;
@@ -0,0 +1,3 @@
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
+ export const LoadUnitLifecycleUtil = new LifecycleUtil();
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvTG9hZFVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFzRCxJQUFJLGFBQWEsRUFBRSxDQUFDIn0=
@@ -0,0 +1,18 @@
1
+ import { type EggProtoImplClass, type ProtoDescriptor } from '@eggjs/tegg-types';
2
+ export interface ModuleDescriptor {
3
+ name: string;
4
+ unitPath: string;
5
+ optional?: boolean;
6
+ clazzList: EggProtoImplClass[];
7
+ multiInstanceClazzList: EggProtoImplClass[];
8
+ protos: ProtoDescriptor[];
9
+ }
10
+ export interface ModuleDumpOptions {
11
+ dumpDir?: string;
12
+ }
13
+ export declare class ModuleDescriptorDumper {
14
+ static stringifyDescriptor(moduleDescriptor: ModuleDescriptor): string;
15
+ static stringifyClazz(clazz: EggProtoImplClass, moduleDescriptor: ModuleDescriptor): string;
16
+ static dumpPath(desc: ModuleDescriptor, options?: ModuleDumpOptions): string;
17
+ static dump(desc: ModuleDescriptor, options?: ModuleDumpOptions): Promise<void>;
18
+ }
@@ -0,0 +1,47 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs/promises';
3
+ import {} from '@eggjs/tegg-types';
4
+ import { PrototypeUtil } from '@eggjs/core-decorator';
5
+ const DUMP_PATH = process.env.MODULE_DUMP_PATH;
6
+ export class ModuleDescriptorDumper {
7
+ static stringifyDescriptor(moduleDescriptor) {
8
+ return ('{' +
9
+ `"name": "${moduleDescriptor.name}",` +
10
+ `"unitPath": "${moduleDescriptor.unitPath}",` +
11
+ (typeof moduleDescriptor.optional !== 'undefined' ? `"optional": ${moduleDescriptor.optional},` : '') +
12
+ `"clazzList": [${moduleDescriptor.clazzList
13
+ .map((t) => {
14
+ return ModuleDescriptorDumper.stringifyClazz(t, moduleDescriptor);
15
+ })
16
+ .join(',')}],` +
17
+ `"multiInstanceClazzList": [${moduleDescriptor.multiInstanceClazzList
18
+ .map((t) => {
19
+ return ModuleDescriptorDumper.stringifyClazz(t, moduleDescriptor);
20
+ })
21
+ .join(',')}],` +
22
+ `"protos": [${moduleDescriptor.protos
23
+ .map((t) => {
24
+ return JSON.stringify(t);
25
+ })
26
+ .join(',')}]` +
27
+ '}');
28
+ }
29
+ static stringifyClazz(clazz, moduleDescriptor) {
30
+ return ('{' +
31
+ `"name": "${clazz.name}",` +
32
+ (PrototypeUtil.getFilePath(clazz)
33
+ ? `"filePath": "${path.relative(moduleDescriptor.unitPath, PrototypeUtil.getFilePath(clazz))}"`
34
+ : '') +
35
+ '}');
36
+ }
37
+ static dumpPath(desc, options) {
38
+ const dumpDir = DUMP_PATH ?? options?.dumpDir ?? desc.unitPath;
39
+ return path.join(dumpDir, '.egg', `${desc.name}_module_desc.json`);
40
+ }
41
+ static async dump(desc, options) {
42
+ const dumpPath = ModuleDescriptorDumper.dumpPath(desc, options);
43
+ await fs.mkdir(path.dirname(dumpPath), { recursive: true });
44
+ await fs.writeFile(dumpPath, ModuleDescriptorDumper.stringifyDescriptor(desc));
45
+ }
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlRGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9Nb2R1bGVEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsQyxPQUFPLEVBQWdELE1BQU0sbUJBQW1CLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFlL0MsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsZ0JBQWtDO1FBQzNELE9BQU8sQ0FDTCxHQUFHO1lBQ0gsWUFBWSxnQkFBZ0IsQ0FBQyxJQUFJLElBQUk7WUFDckMsZ0JBQWdCLGdCQUFnQixDQUFDLFFBQVEsSUFBSTtZQUM3QyxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsZUFBZSxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JHLGlCQUFpQixnQkFBZ0IsQ0FBQyxTQUFTO2lCQUN4QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDVCxPQUFPLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNwRSxDQUFDLENBQUM7aUJBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJO1lBQ2hCLDhCQUE4QixnQkFBZ0IsQ0FBQyxzQkFBc0I7aUJBQ2xFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNULE9BQU8sc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BFLENBQUMsQ0FBQztpQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUk7WUFDaEIsY0FBYyxnQkFBZ0IsQ0FBQyxNQUFNO2lCQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNmLEdBQUcsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBd0IsRUFBRSxnQkFBa0M7UUFDaEYsT0FBTyxDQUNMLEdBQUc7WUFDSCxZQUFZLEtBQUssQ0FBQyxJQUFJLElBQUk7WUFDMUIsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBRSxDQUFDLEdBQUc7Z0JBQ2hHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLENBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQXNCLEVBQUUsT0FBMkI7UUFDakUsTUFBTSxPQUFPLEdBQUcsU0FBUyxJQUFJLE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLG1CQUFtQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQXNCLEVBQUUsT0FBMkI7UUFDbkUsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,32 @@
1
+ import { AccessLevel, type InjectObjectDescriptor, type ObjectInitTypeLike, type ProtoDescriptor, type ProtoDescriptorTypeLike, type QualifierInfo } from '@eggjs/tegg-types';
2
+ export interface AbstractProtoDescriptorOptions {
3
+ name: PropertyKey;
4
+ accessLevel: AccessLevel;
5
+ initType: ObjectInitTypeLike;
6
+ qualifiers: QualifierInfo[];
7
+ protoImplType: string;
8
+ injectObjects: InjectObjectDescriptor[];
9
+ defineModuleName: string;
10
+ defineUnitPath: string;
11
+ instanceModuleName: string;
12
+ instanceDefineUnitPath: string;
13
+ type: ProtoDescriptorTypeLike;
14
+ properQualifiers: Record<PropertyKey, QualifierInfo[]>;
15
+ }
16
+ export declare abstract class AbstractProtoDescriptor implements ProtoDescriptor {
17
+ name: PropertyKey;
18
+ accessLevel: AccessLevel;
19
+ initType: ObjectInitTypeLike;
20
+ qualifiers: QualifierInfo[];
21
+ injectObjects: InjectObjectDescriptor[];
22
+ protoImplType: string;
23
+ defineModuleName: string;
24
+ defineUnitPath: string;
25
+ instanceModuleName: string;
26
+ instanceDefineUnitPath: string;
27
+ className?: string;
28
+ properQualifiers: Record<PropertyKey, QualifierInfo[]>;
29
+ type: ProtoDescriptorTypeLike;
30
+ protected constructor(options: AbstractProtoDescriptorOptions);
31
+ abstract equal(protoDescriptor: ProtoDescriptor): boolean;
32
+ }
@@ -0,0 +1,31 @@
1
+ import { AccessLevel, } from '@eggjs/tegg-types';
2
+ export class AbstractProtoDescriptor {
3
+ name;
4
+ accessLevel;
5
+ initType;
6
+ qualifiers;
7
+ injectObjects;
8
+ protoImplType;
9
+ defineModuleName;
10
+ defineUnitPath;
11
+ instanceModuleName;
12
+ instanceDefineUnitPath;
13
+ className;
14
+ properQualifiers;
15
+ type;
16
+ constructor(options) {
17
+ this.name = options.name;
18
+ this.accessLevel = options.accessLevel;
19
+ this.initType = options.initType;
20
+ this.qualifiers = options.qualifiers;
21
+ this.protoImplType = options.protoImplType;
22
+ this.injectObjects = options.injectObjects;
23
+ this.defineModuleName = options.defineModuleName;
24
+ this.defineUnitPath = options.defineUnitPath;
25
+ this.instanceModuleName = options.instanceModuleName;
26
+ this.instanceDefineUnitPath = options.instanceDefineUnitPath;
27
+ this.type = options.type;
28
+ this.properQualifiers = options.properQualifiers;
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RQcm90b0Rlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvUHJvdG9EZXNjcmlwdG9yL0Fic3RyYWN0UHJvdG9EZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEdBTVosTUFBTSxtQkFBbUIsQ0FBQztBQWlCM0IsTUFBTSxPQUFnQix1QkFBdUI7SUFDM0MsSUFBSSxDQUFjO0lBQ2xCLFdBQVcsQ0FBYztJQUN6QixRQUFRLENBQXFCO0lBQzdCLFVBQVUsQ0FBa0I7SUFDNUIsYUFBYSxDQUEyQjtJQUN4QyxhQUFhLENBQVM7SUFDdEIsZ0JBQWdCLENBQVM7SUFDekIsY0FBYyxDQUFTO0lBQ3ZCLGtCQUFrQixDQUFTO0lBQzNCLHNCQUFzQixDQUFTO0lBQy9CLFNBQVMsQ0FBVTtJQUNuQixnQkFBZ0IsQ0FBdUM7SUFDdkQsSUFBSSxDQUEwQjtJQUU5QixZQUFzQixPQUF1QztRQUMzRCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1FBQ3JELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztDQUdGIn0=
@@ -0,0 +1,12 @@
1
+ import { type EggProtoImplClass, type ProtoDescriptor } from '@eggjs/tegg-types';
2
+ import { AbstractProtoDescriptor, type AbstractProtoDescriptorOptions } from './AbstractProtoDescriptor.ts';
3
+ export interface ClassProtoDescriptorOptions extends Omit<AbstractProtoDescriptorOptions, 'type'> {
4
+ clazz: EggProtoImplClass;
5
+ }
6
+ export declare class ClassProtoDescriptor extends AbstractProtoDescriptor {
7
+ clazz: EggProtoImplClass;
8
+ clazzName: string;
9
+ static isClassProtoDescriptor(descriptor: ProtoDescriptor): descriptor is ClassProtoDescriptor;
10
+ constructor(options: ClassProtoDescriptorOptions);
11
+ equal(protoDescriptor: ProtoDescriptor): boolean;
12
+ }
@@ -0,0 +1,30 @@
1
+ import { QualifierUtil } from '@eggjs/core-decorator';
2
+ import { ProtoDescriptorType } from '@eggjs/tegg-types';
3
+ import { AbstractProtoDescriptor } from "./AbstractProtoDescriptor.js";
4
+ export class ClassProtoDescriptor extends AbstractProtoDescriptor {
5
+ clazz;
6
+ clazzName;
7
+ static isClassProtoDescriptor(descriptor) {
8
+ return descriptor.type === ProtoDescriptorType.CLASS;
9
+ }
10
+ constructor(options) {
11
+ super({
12
+ type: ProtoDescriptorType.CLASS,
13
+ ...options,
14
+ });
15
+ this.clazz = options.clazz;
16
+ this.className = this.clazz.name;
17
+ }
18
+ equal(protoDescriptor) {
19
+ if (!ClassProtoDescriptor.isClassProtoDescriptor(protoDescriptor)) {
20
+ return false;
21
+ }
22
+ return (this.clazz === protoDescriptor.clazz &&
23
+ this.name === protoDescriptor.name &&
24
+ this.accessLevel === protoDescriptor.accessLevel &&
25
+ this.initType === protoDescriptor.initType &&
26
+ this.instanceModuleName === protoDescriptor.instanceModuleName &&
27
+ QualifierUtil.equalQualifiers(this.qualifiers, protoDescriptor.qualifiers));
28
+ }
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc3NQcm90b0Rlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvUHJvdG9EZXNjcmlwdG9yL0NsYXNzUHJvdG9EZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQWdELG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdEcsT0FBTyxFQUFFLHVCQUF1QixFQUF1QyxNQUFNLDhCQUE4QixDQUFDO0FBTTVHLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx1QkFBdUI7SUFDL0QsS0FBSyxDQUFvQjtJQUN6QixTQUFTLENBQVM7SUFFbEIsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFVBQTJCO1FBQ3ZELE9BQVEsVUFBc0MsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxZQUFZLE9BQW9DO1FBQzlDLEtBQUssQ0FBQztZQUNKLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxLQUFLO1lBQy9CLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZ0M7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDbEUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUs7WUFDcEMsSUFBSSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsSUFBSTtZQUNsQyxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxXQUFXO1lBQ2hELElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLFFBQVE7WUFDMUMsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGVBQWUsQ0FBQyxrQkFBa0I7WUFDOUQsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
@@ -0,0 +1,2 @@
1
+ export * from './AbstractProtoDescriptor.ts';
2
+ export * from './ClassProtoDescriptor.ts';
@@ -0,0 +1,3 @@
1
+ export * from "./AbstractProtoDescriptor.js";
2
+ export * from "./ClassProtoDescriptor.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvUHJvdG9EZXNjcmlwdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQyJ9
@@ -0,0 +1,26 @@
1
+ import { type EggProtoImplClass, type ObjectInitTypeLike, type ProtoDescriptor, type QualifierInfo, type MultiInstancePrototypeGetObjectsContext } from '@eggjs/tegg-types';
2
+ import { type ProtoSelectorContext } from './graph/index.ts';
3
+ export declare class ProtoDescriptorHelper {
4
+ #private;
5
+ static addDefaultQualifier(qualifiers: QualifierInfo[], initType: ObjectInitTypeLike, loadUnitName: string): QualifierInfo[];
6
+ static createByMultiInstanceClazz(clazz: EggProtoImplClass, options: {
7
+ defineModuleName: string;
8
+ defineUnitPath: string;
9
+ instanceModuleName: string;
10
+ instanceDefineUnitPath: string;
11
+ }): Promise<ProtoDescriptor[]>;
12
+ static createByDynamicMultiInstanceClazz(clazz: EggProtoImplClass, options: {
13
+ defineModuleName: string;
14
+ defineUnitPath: string;
15
+ instanceModuleName: string;
16
+ instanceDefineUnitPath: string;
17
+ }): Promise<ProtoDescriptor[]>;
18
+ static createByStaticMultiInstanceClazz(clazz: EggProtoImplClass, options: {
19
+ defineModuleName: string;
20
+ defineUnitPath: string;
21
+ instanceModuleName: string;
22
+ instanceDefineUnitPath: string;
23
+ }): ProtoDescriptor[];
24
+ static createByInstanceClazz(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): ProtoDescriptor;
25
+ static selectProto(proto: ProtoDescriptor, ctx: ProtoSelectorContext): boolean;
26
+ }