@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.
Files changed (91) hide show
  1. package/README.md +12 -0
  2. package/dist/errors.js +27 -0
  3. package/{src → dist}/factory/EggPrototypeCreatorFactory.d.ts +1 -1
  4. package/dist/factory/EggPrototypeCreatorFactory.js +108 -0
  5. package/dist/factory/EggPrototypeFactory.js +52 -0
  6. package/dist/factory/LoadUnitFactory.js +59 -0
  7. package/dist/factory/index.d.ts +3 -0
  8. package/dist/factory/index.js +4 -0
  9. package/dist/impl/EggPrototypeBuilder.js +124 -0
  10. package/{src → dist}/impl/EggPrototypeImpl.d.ts +1 -1
  11. package/dist/impl/EggPrototypeImpl.js +53 -0
  12. package/dist/impl/LoadUnitMultiInstanceProtoHook.js +18 -0
  13. package/{src → dist}/impl/ModuleLoadUnit.d.ts +1 -1
  14. package/dist/impl/ModuleLoadUnit.js +268 -0
  15. package/dist/impl/index.d.ts +4 -0
  16. package/dist/impl/index.js +5 -0
  17. package/dist/index.d.ts +6 -0
  18. package/dist/index.js +7 -0
  19. package/dist/model/AppGraph.js +264 -0
  20. package/{src → dist}/model/EggPrototype.js +1 -1
  21. package/{src → dist}/model/LoadUnit.js +1 -1
  22. package/{src → dist}/model/ModuleDescriptor.d.ts +1 -1
  23. package/dist/model/ModuleDescriptor.js +39 -0
  24. package/{src → dist}/model/ProtoDescriptor/AbstractProtoDescriptor.d.ts +1 -1
  25. package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.js +31 -0
  26. package/{src → dist}/model/ProtoDescriptor/ClassProtoDescriptor.d.ts +2 -2
  27. package/dist/model/ProtoDescriptor/ClassProtoDescriptor.js +30 -0
  28. package/dist/model/ProtoDescriptor/index.d.ts +2 -0
  29. package/dist/model/ProtoDescriptor/index.js +3 -0
  30. package/{src → dist}/model/ProtoDescriptorHelper.d.ts +2 -2
  31. package/dist/model/ProtoDescriptorHelper.js +130 -0
  32. package/{src → dist}/model/graph/GlobalGraph.d.ts +6 -6
  33. package/dist/model/graph/GlobalGraph.js +233 -0
  34. package/{src → dist}/model/graph/GlobalModuleNode.d.ts +3 -3
  35. package/dist/model/graph/GlobalModuleNode.js +39 -0
  36. package/{src → dist}/model/graph/GlobalModuleNodeBuilder.d.ts +2 -2
  37. package/dist/model/graph/GlobalModuleNodeBuilder.js +54 -0
  38. package/{src → dist}/model/graph/ProtoNode.d.ts +3 -3
  39. package/dist/model/graph/ProtoNode.js +40 -0
  40. package/{src → dist}/model/graph/ProtoSelector.d.ts +1 -1
  41. package/dist/model/graph/ProtoSelector.js +2 -0
  42. package/dist/model/graph/index.d.ts +5 -0
  43. package/dist/model/graph/index.js +6 -0
  44. package/dist/model/index.d.ts +7 -0
  45. package/dist/model/index.js +8 -0
  46. package/dist/util/ClassUtil.js +17 -0
  47. package/dist/util/index.d.ts +1 -0
  48. package/dist/util/index.js +2 -0
  49. package/package.json +26 -26
  50. package/src/errors.js +0 -27
  51. package/src/factory/EggPrototypeCreatorFactory.js +0 -103
  52. package/src/factory/EggPrototypeFactory.js +0 -52
  53. package/src/factory/LoadUnitFactory.js +0 -59
  54. package/src/factory/index.d.ts +0 -3
  55. package/src/factory/index.js +0 -4
  56. package/src/impl/EggPrototypeBuilder.js +0 -124
  57. package/src/impl/EggPrototypeImpl.js +0 -53
  58. package/src/impl/LoadUnitMultiInstanceProtoHook.js +0 -18
  59. package/src/impl/ModuleLoadUnit.js +0 -268
  60. package/src/impl/index.d.ts +0 -4
  61. package/src/impl/index.js +0 -5
  62. package/src/index.d.ts +0 -6
  63. package/src/index.js +0 -7
  64. package/src/model/AppGraph.js +0 -264
  65. package/src/model/ModuleDescriptor.js +0 -38
  66. package/src/model/ProtoDescriptor/AbstractProtoDescriptor.js +0 -30
  67. package/src/model/ProtoDescriptor/ClassProtoDescriptor.js +0 -30
  68. package/src/model/ProtoDescriptor/index.d.ts +0 -2
  69. package/src/model/ProtoDescriptor/index.js +0 -3
  70. package/src/model/ProtoDescriptorHelper.js +0 -129
  71. package/src/model/graph/GlobalGraph.js +0 -233
  72. package/src/model/graph/GlobalModuleNode.js +0 -38
  73. package/src/model/graph/GlobalModuleNodeBuilder.js +0 -53
  74. package/src/model/graph/ProtoNode.js +0 -37
  75. package/src/model/graph/ProtoSelector.js +0 -2
  76. package/src/model/graph/index.d.ts +0 -5
  77. package/src/model/graph/index.js +0 -6
  78. package/src/model/index.d.ts +0 -7
  79. package/src/model/index.js +0 -8
  80. package/src/util/ClassUtil.js +0 -17
  81. package/src/util/index.d.ts +0 -1
  82. package/src/util/index.js +0 -2
  83. /package/{src → dist}/errors.d.ts +0 -0
  84. /package/{src → dist}/factory/EggPrototypeFactory.d.ts +0 -0
  85. /package/{src → dist}/factory/LoadUnitFactory.d.ts +0 -0
  86. /package/{src → dist}/impl/EggPrototypeBuilder.d.ts +0 -0
  87. /package/{src → dist}/impl/LoadUnitMultiInstanceProtoHook.d.ts +0 -0
  88. /package/{src → dist}/model/AppGraph.d.ts +0 -0
  89. /package/{src → dist}/model/EggPrototype.d.ts +0 -0
  90. /package/{src → dist}/model/LoadUnit.d.ts +0 -0
  91. /package/{src → dist}/util/ClassUtil.d.ts +0 -0
package/README.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # `@eggjs/tegg-metadata`
2
2
 
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![Known Vulnerabilities][snyk-image]][snyk-url]
5
+ [![npm download][download-image]][download-url]
6
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/tegg-metadata.svg?style=flat)](https://nodejs.org/en/download/)
7
+
8
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/tegg-metadata.svg?style=flat-square
9
+ [npm-url]: https://npmjs.org/package/@eggjs/tegg-metadata
10
+ [snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-metadata/badge.svg?style=flat-square
11
+ [snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-metadata
12
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-metadata.svg?style=flat-square
13
+ [download-url]: https://npmjs.org/package/@eggjs/tegg-metadata
14
+
3
15
  # Usage
4
16
 
5
17
  This is an internal tegg library, you probably shouldn't use it directly.
package/dist/errors.js ADDED
@@ -0,0 +1,27 @@
1
+ import { FrameworkBaseError } from 'egg-errors';
2
+ import { ErrorCodes } from '@eggjs/tegg-types';
3
+ export class TeggError extends FrameworkBaseError {
4
+ get module() {
5
+ return 'TEGG';
6
+ }
7
+ }
8
+ export class EggPrototypeNotFound extends TeggError {
9
+ constructor(protoName, loadUnitId) {
10
+ const msg = loadUnitId
11
+ ? `Object ${String(protoName)} not found in ${loadUnitId}`
12
+ : `Object ${String(protoName)} not found`;
13
+ super(msg, ErrorCodes.EGG_PROTO_NOT_FOUND);
14
+ }
15
+ }
16
+ export class MultiPrototypeFound extends TeggError {
17
+ constructor(name, qualifier, result) {
18
+ const msg = `multi proto found for name:${String(name)} and qualifiers ${JSON.stringify(qualifier)}${result ? `, result is ${result}` : ''}`;
19
+ super(msg, ErrorCodes.MULTI_PROTO_FOUND);
20
+ }
21
+ }
22
+ export class IncompatibleProtoInject extends TeggError {
23
+ constructor(msg) {
24
+ super(msg, ErrorCodes.INCOMPATIBLE_PROTO_INJECT);
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRy9DLE1BQU0sT0FBTyxTQUFVLFNBQVEsa0JBQWtCO0lBQy9DLElBQUksTUFBTTtRQUNSLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUFTO0lBQ2pELFlBQVksU0FBMkIsRUFBRSxVQUE4QjtRQUNyRSxNQUFNLEdBQUcsR0FBRyxVQUFVO1lBQ3BCLENBQUMsQ0FBQyxVQUFVLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLFVBQVUsRUFBRTtZQUMxRCxDQUFDLENBQUMsVUFBVSxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUM1QyxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxTQUFTO0lBQ2hELFlBQVksSUFBc0IsRUFBRSxTQUEwQixFQUFFLE1BQWU7UUFDN0UsTUFBTSxHQUFHLEdBQUcsOEJBQThCLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3SSxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxTQUFTO0lBQ3BELFlBQVksR0FBVztRQUNyQixLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FDRiJ9
@@ -1,5 +1,5 @@
1
1
  import type { EggProtoImplClass, EggPrototypeCreator, LoadUnit, EggPrototype } from '@eggjs/tegg-types';
2
- import { ClassProtoDescriptor } from '../model/index.js';
2
+ import { ClassProtoDescriptor } from '../model/index.ts';
3
3
  export declare class EggPrototypeCreatorFactory {
4
4
  private static creatorMap;
5
5
  static registerPrototypeCreator(type: string, creator: EggPrototypeCreator): void;
@@ -0,0 +1,108 @@
1
+ import assert from 'node:assert';
2
+ import { debuglog } from 'node:util';
3
+ import { InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, PrototypeUtil } from '@eggjs/core-decorator';
4
+ import { EggPrototypeLifecycleUtil, ClassProtoDescriptor } from "../model/index.js";
5
+ const debug = debuglog('tegg/core/metadata/factory/EggPrototypeCreatorFactory');
6
+ export class EggPrototypeCreatorFactory {
7
+ static creatorMap = new Map();
8
+ static registerPrototypeCreator(type, creator) {
9
+ this.creatorMap.set(type, creator);
10
+ }
11
+ static getPrototypeCreator(type) {
12
+ return this.creatorMap.get(type);
13
+ }
14
+ static async createProto(clazz, loadUnit) {
15
+ let properties = [];
16
+ const initTypeQualifierAttributeValue = await PrototypeUtil.getInitType(clazz, {
17
+ unitPath: loadUnit.unitPath,
18
+ moduleName: loadUnit.name,
19
+ });
20
+ const defaultQualifier = [{
21
+ attribute: InitTypeQualifierAttribute,
22
+ value: initTypeQualifierAttributeValue,
23
+ }, {
24
+ attribute: LoadUnitNameQualifierAttribute,
25
+ value: loadUnit.name,
26
+ }];
27
+ if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
28
+ const multiInstanceProtoInfo = await PrototypeUtil.getMultiInstanceProperty(clazz, {
29
+ unitPath: loadUnit.unitPath,
30
+ moduleName: loadUnit.name,
31
+ });
32
+ assert(multiInstanceProtoInfo, `multiInstanceProtoInfo is undefined, clazz: ${clazz.name}, unitPath: ${loadUnit.unitPath}, moduleName: ${loadUnit.name}`);
33
+ for (const obj of multiInstanceProtoInfo.objects) {
34
+ defaultQualifier.forEach(qualifier => {
35
+ if (!obj.qualifiers.find(t => t.attribute === qualifier.attribute)) {
36
+ obj.qualifiers.push(qualifier);
37
+ }
38
+ });
39
+ properties.push({
40
+ name: obj.name,
41
+ protoImplType: multiInstanceProtoInfo.protoImplType,
42
+ initType: multiInstanceProtoInfo.initType,
43
+ accessLevel: multiInstanceProtoInfo.accessLevel,
44
+ qualifiers: obj.qualifiers,
45
+ properQualifiers: obj.properQualifiers,
46
+ className: multiInstanceProtoInfo.className,
47
+ });
48
+ }
49
+ }
50
+ else {
51
+ const property = PrototypeUtil.getProperty(clazz);
52
+ if (!property.qualifiers) {
53
+ property.qualifiers = [];
54
+ }
55
+ defaultQualifier.forEach(qualifier => {
56
+ if (!property.qualifiers.find(t => t.attribute === qualifier.attribute)) {
57
+ property.qualifiers.push(qualifier);
58
+ }
59
+ });
60
+ properties = [property];
61
+ }
62
+ const protos = [];
63
+ for (const property of properties) {
64
+ const creator = this.getPrototypeCreator(property.protoImplType);
65
+ if (!creator) {
66
+ throw new Error(`not found proto creator for type: ${property.protoImplType}`);
67
+ }
68
+ const ctx = {
69
+ clazz,
70
+ loadUnit,
71
+ prototypeInfo: property,
72
+ };
73
+ const proto = creator(ctx);
74
+ // TODO release egg prototype
75
+ await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
76
+ if (proto.init) {
77
+ await proto.init(ctx);
78
+ }
79
+ await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
80
+ PrototypeUtil.setClazzProto(clazz, proto);
81
+ protos.push(proto);
82
+ }
83
+ if (debug.enabled && loadUnit.name === 'egg-app') {
84
+ debug('createProto, get protos:%o, from clazz:%o, from loadUnit:%o:%o:%o', protos.map(t => t.name), clazz.name, loadUnit.type, loadUnit.name, loadUnit.unitPath);
85
+ }
86
+ return protos;
87
+ }
88
+ static async createProtoByDescriptor(protoDescriptor, loadUnit) {
89
+ const creator = this.getPrototypeCreator(protoDescriptor.protoImplType);
90
+ if (!creator) {
91
+ throw new Error(`not found proto creator for type: ${protoDescriptor.protoImplType}`);
92
+ }
93
+ const ctx = {
94
+ clazz: protoDescriptor.clazz,
95
+ loadUnit,
96
+ prototypeInfo: protoDescriptor,
97
+ };
98
+ const proto = creator(ctx);
99
+ await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
100
+ if (proto.init) {
101
+ await proto.init(ctx);
102
+ }
103
+ await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
104
+ PrototypeUtil.setClazzProto(protoDescriptor.clazz, proto);
105
+ return proto;
106
+ }
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlQ3JlYXRvckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFjdG9yeS9FZ2dQcm90b3R5cGVDcmVhdG9yRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFVbEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEYsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7QUFFaEYsTUFBTSxPQUFPLDBCQUEwQjtJQUM3QixNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBRW5FLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFZLEVBQUUsT0FBNEI7UUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBWTtRQUNyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUF3QixFQUFFLFFBQWtCO1FBQ25FLElBQUksVUFBVSxHQUF1QixFQUFFLENBQUM7UUFDeEMsTUFBTSwrQkFBK0IsR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO1lBQzdFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUk7U0FDMUIsQ0FBQyxDQUFD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
@@ -0,0 +1,52 @@
1
+ import { MapUtil } from '@eggjs/tegg-common-util';
2
+ import { AccessLevel } from '@eggjs/tegg-types';
3
+ import { FrameworkErrorFormater } from 'egg-errors';
4
+ import { EggPrototypeNotFound, MultiPrototypeFound } from "../errors.js";
5
+ export class EggPrototypeFactory {
6
+ static instance = new EggPrototypeFactory();
7
+ // Map<EggObjectInitTypeLike, Map<protoName, EggPrototype>>
8
+ publicProtoMap = new Map();
9
+ registerPrototype(proto, loadUnit) {
10
+ if (proto.accessLevel === AccessLevel.PUBLIC) {
11
+ const protoList = MapUtil.getOrStore(this.publicProtoMap, proto.name, []);
12
+ protoList.push(proto);
13
+ }
14
+ loadUnit.registerEggPrototype(proto);
15
+ }
16
+ deletePrototype(proto, loadUnit) {
17
+ if (proto.accessLevel === AccessLevel.PUBLIC) {
18
+ const protos = this.publicProtoMap.get(proto.name);
19
+ if (protos) {
20
+ const index = protos.indexOf(proto);
21
+ if (index !== -1) {
22
+ protos.splice(index, 1);
23
+ }
24
+ }
25
+ }
26
+ loadUnit.deletePrototype(proto);
27
+ }
28
+ getPrototype(name, loadUnit, qualifiers) {
29
+ qualifiers = qualifiers || [];
30
+ const protos = this.doGetPrototype(name, qualifiers, loadUnit);
31
+ if (!protos.length) {
32
+ throw FrameworkErrorFormater.formatError(new EggPrototypeNotFound(name, loadUnit?.id));
33
+ }
34
+ if (protos.length === 1) {
35
+ return protos[0];
36
+ }
37
+ throw FrameworkErrorFormater.formatError(new MultiPrototypeFound(name, qualifiers));
38
+ }
39
+ doGetPrototype(name, qualifiers, loadUnit) {
40
+ if (loadUnit) {
41
+ // 1. find private proto in load unit
42
+ const protos = loadUnit.getEggPrototype(name, qualifiers);
43
+ if (protos.length) {
44
+ return protos;
45
+ }
46
+ }
47
+ // 2. find public proto in global
48
+ const protos = this.publicProtoMap.get(name);
49
+ return protos?.filter(proto => proto.verifyQualifiers(qualifiers)) || [];
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3J5L0VnZ1Byb3RvdHlwZUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdkIsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7SUFFbkQsMkRBQTJEO0lBQ25ELGNBQWMsR0FBMEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVuRSxpQkFBaUIsQ0FBQyxLQUFtQixFQUFFLFFBQWtCO1FBQzlELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBbUIsRUFBRSxRQUFrQjtRQUM1RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBaUIsRUFBRSxRQUFtQixFQUFFLFVBQTRCO1FBQ3RGLFVBQVUsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sc0JBQXNCLENBQUMsV0FBVyxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sc0JBQXNCLENBQUMsV0FBVyxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFzQixFQUFFLFVBQTJCLEVBQUUsUUFBbUI7UUFDN0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLHFDQUFxQztZQUNyQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMxRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUMifQ==
@@ -0,0 +1,59 @@
1
+ import { LoadUnitLifecycleUtil } from "../model/index.js";
2
+ export class LoadUnitFactory {
3
+ static loadUnitCreatorMap = new Map();
4
+ static loadUnitMap = new Map();
5
+ static loadUnitIdMap = new Map();
6
+ static async getLoanUnit(ctx, type) {
7
+ const creator = LoadUnitFactory.loadUnitCreatorMap.get(type);
8
+ if (!creator) {
9
+ throw new Error(`not find creator for load unit type ${type}`);
10
+ }
11
+ return await creator(ctx);
12
+ }
13
+ static async createLoadUnit(unitPath, type, loader) {
14
+ if (LoadUnitFactory.loadUnitMap.has(unitPath)) {
15
+ return LoadUnitFactory.loadUnitMap.get(unitPath).loadUnit;
16
+ }
17
+ const ctx = {
18
+ unitPath,
19
+ loader,
20
+ };
21
+ const loadUnit = await LoadUnitFactory.getLoanUnit(ctx, type);
22
+ await LoadUnitLifecycleUtil.objectPreCreate(ctx, loadUnit);
23
+ if (loadUnit.init) {
24
+ await loadUnit.init(ctx);
25
+ }
26
+ await LoadUnitLifecycleUtil.objectPostCreate(ctx, loadUnit);
27
+ LoadUnitFactory.loadUnitMap.set(unitPath, { loadUnit, ctx });
28
+ LoadUnitFactory.loadUnitIdMap.set(loadUnit.id, loadUnit);
29
+ return loadUnit;
30
+ }
31
+ static async createPreloadLoadUnit(unitPath, type, loader) {
32
+ const ctx = {
33
+ unitPath,
34
+ loader,
35
+ };
36
+ return await LoadUnitFactory.getLoanUnit(ctx, type);
37
+ }
38
+ static async destroyLoadUnit(loadUnit) {
39
+ const { ctx } = LoadUnitFactory.loadUnitMap.get(loadUnit.unitPath);
40
+ try {
41
+ await LoadUnitLifecycleUtil.objectPreDestroy(ctx, loadUnit);
42
+ if (loadUnit.destroy) {
43
+ await loadUnit.destroy(ctx);
44
+ }
45
+ }
46
+ finally {
47
+ LoadUnitFactory.loadUnitMap.delete(loadUnit.unitPath);
48
+ LoadUnitFactory.loadUnitIdMap.delete(loadUnit.id);
49
+ LoadUnitLifecycleUtil.clearObjectLifecycle(loadUnit);
50
+ }
51
+ }
52
+ static getLoadUnitById(id) {
53
+ return LoadUnitFactory.loadUnitIdMap.get(id);
54
+ }
55
+ static registerLoadUnitCreator(type, creator) {
56
+ LoadUnitFactory.loadUnitCreatorMap.set(type, creator);
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhY3RvcnkvTG9hZFVuaXRGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE1BQU0sT0FBTyxlQUFlO0lBQ2xCLE1BQU0sQ0FBQyxrQkFBa0IsR0FBOEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRixNQUFNLENBQUMsV0FBVyxHQUE4QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzFELE1BQU0sQ0FBQyxhQUFhLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBNkIsRUFBRSxJQUF5QjtRQUN6RixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQWdCLEVBQUUsSUFBeUIsRUFBRSxNQUFjO1FBQ3JGLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLGVBQWUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDLFFBQVEsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQTZCO1lBQ3BDLFFBQVE7WUFDUixNQUFNO1NBQ1AsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsTUFBTSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsTUFBTSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0QsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxRQUFnQixFQUFFLElBQXlCLEVBQUUsTUFBYztRQUM1RixNQUFNLEdBQUcsR0FBNkI7WUFDcEMsUUFBUTtZQUNSLE1BQU07U0FDUCxDQUFDO1FBQ0YsT0FBTyxNQUFNLGVBQWUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFrQjtRQUM3QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQztZQUNILE1BQU0scUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzVELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxlQUFlLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEQscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQU07UUFDM0IsT0FBTyxlQUFlLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLElBQXlCLEVBQUUsT0FBd0I7UUFDaEYsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ export * from './EggPrototypeFactory.ts';
2
+ export * from './EggPrototypeCreatorFactory.ts';
3
+ export * from './LoadUnitFactory.ts';
@@ -0,0 +1,4 @@
1
+ export * from "./EggPrototypeFactory.js";
2
+ export * from "./EggPrototypeCreatorFactory.js";
3
+ export * from "./LoadUnitFactory.js";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFjdG9yeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxzQkFBc0IsQ0FBQyJ9
@@ -0,0 +1,124 @@
1
+ import assert from 'node:assert';
2
+ import { InjectType, PrototypeUtil, QualifierUtil } from '@eggjs/core-decorator';
3
+ import { DEFAULT_PROTO_IMPL_TYPE, InitTypeQualifierAttribute, ObjectInitType, } from '@eggjs/tegg-types';
4
+ import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
5
+ import { EggPrototypeFactory, EggPrototypeCreatorFactory } from "../factory/index.js";
6
+ import { EggPrototypeImpl } from "./EggPrototypeImpl.js";
7
+ import { EggPrototypeNotFound, MultiPrototypeFound } from "../errors.js";
8
+ export class EggPrototypeBuilder {
9
+ clazz;
10
+ name;
11
+ initType;
12
+ accessLevel;
13
+ filepath;
14
+ injectType;
15
+ injectObjects = [];
16
+ loadUnit;
17
+ qualifiers = [];
18
+ properQualifiers = {};
19
+ className;
20
+ multiInstanceConstructorIndex;
21
+ multiInstanceConstructorAttributes;
22
+ static create(ctx) {
23
+ const { clazz, loadUnit } = ctx;
24
+ const filepath = PrototypeUtil.getFilePath(clazz);
25
+ assert(filepath, 'not find filepath');
26
+ const builder = new EggPrototypeBuilder();
27
+ builder.clazz = clazz;
28
+ builder.name = ctx.prototypeInfo.name;
29
+ builder.className = ctx.prototypeInfo.className;
30
+ builder.initType = ctx.prototypeInfo.initType;
31
+ builder.accessLevel = ctx.prototypeInfo.accessLevel;
32
+ builder.filepath = filepath;
33
+ builder.injectType = PrototypeUtil.getInjectType(clazz);
34
+ builder.injectObjects = PrototypeUtil.getInjectObjects(clazz) || [];
35
+ builder.loadUnit = loadUnit;
36
+ builder.qualifiers = QualifierUtil.mergeQualifiers(QualifierUtil.getProtoQualifiers(clazz), (ctx.prototypeInfo.qualifiers ?? []));
37
+ builder.properQualifiers = ctx.prototypeInfo.properQualifiers ?? {};
38
+ builder.multiInstanceConstructorIndex = PrototypeUtil.getMultiInstanceConstructorIndex(clazz);
39
+ builder.multiInstanceConstructorAttributes = PrototypeUtil.getMultiInstanceConstructorAttributes(clazz);
40
+ return builder.build();
41
+ }
42
+ tryFindDefaultPrototype(injectObject) {
43
+ const propertyQualifiers = QualifierUtil.getProperQualifiers(this.clazz, injectObject.refName);
44
+ const multiInstancePropertyQualifiers = this.properQualifiers[injectObject.refName] ?? [];
45
+ return EggPrototypeFactory.instance.getPrototype(injectObject.objName, this.loadUnit, QualifierUtil.mergeQualifiers(propertyQualifiers, multiInstancePropertyQualifiers));
46
+ }
47
+ tryFindContextPrototype(injectObject) {
48
+ const propertyQualifiers = QualifierUtil.getProperQualifiers(this.clazz, injectObject.refName);
49
+ const multiInstancePropertyQualifiers = this.properQualifiers[injectObject.refName] ?? [];
50
+ return EggPrototypeFactory.instance.getPrototype(injectObject.objName, this.loadUnit, QualifierUtil.mergeQualifiers(propertyQualifiers, multiInstancePropertyQualifiers, [{
51
+ attribute: InitTypeQualifierAttribute,
52
+ value: ObjectInitType.CONTEXT,
53
+ }]));
54
+ }
55
+ tryFindSelfInitTypePrototype(injectObject) {
56
+ const propertyQualifiers = QualifierUtil.getProperQualifiers(this.clazz, injectObject.refName);
57
+ const multiInstancePropertyQualifiers = this.properQualifiers[injectObject.refName] ?? [];
58
+ return EggPrototypeFactory.instance.getPrototype(injectObject.objName, this.loadUnit, QualifierUtil.mergeQualifiers(propertyQualifiers, multiInstancePropertyQualifiers, [{
59
+ attribute: InitTypeQualifierAttribute,
60
+ value: this.initType,
61
+ }]));
62
+ }
63
+ findInjectObjectPrototype(injectObject) {
64
+ const propertyQualifiers = QualifierUtil.getProperQualifiers(this.clazz, injectObject.refName);
65
+ try {
66
+ return this.tryFindDefaultPrototype(injectObject);
67
+ }
68
+ catch (e) {
69
+ if (!(e instanceof MultiPrototypeFound && !propertyQualifiers.find(t => t.attribute === InitTypeQualifierAttribute))) {
70
+ throw e;
71
+ }
72
+ }
73
+ try {
74
+ return this.tryFindContextPrototype(injectObject);
75
+ }
76
+ catch (e) {
77
+ if (!(e instanceof EggPrototypeNotFound)) {
78
+ throw e;
79
+ }
80
+ }
81
+ return this.tryFindSelfInitTypePrototype(injectObject);
82
+ }
83
+ build() {
84
+ const injectObjectProtos = [];
85
+ for (const injectObject of this.injectObjects) {
86
+ const propertyQualifiers = QualifierUtil.getProperQualifiers(this.clazz, injectObject.refName);
87
+ try {
88
+ const proto = this.findInjectObjectPrototype(injectObject);
89
+ let injectObjectProto;
90
+ if (this.injectType === InjectType.PROPERTY) {
91
+ injectObjectProto = {
92
+ refName: injectObject.refName,
93
+ objName: injectObject.objName,
94
+ qualifiers: propertyQualifiers,
95
+ proto,
96
+ };
97
+ }
98
+ else {
99
+ injectObjectProto = {
100
+ refIndex: injectObject.refIndex,
101
+ refName: injectObject.refName,
102
+ objName: injectObject.objName,
103
+ qualifiers: propertyQualifiers,
104
+ proto,
105
+ };
106
+ }
107
+ if (injectObject.optional) {
108
+ injectObject.optional = true;
109
+ }
110
+ injectObjectProtos.push(injectObjectProto);
111
+ }
112
+ catch (e) {
113
+ if (e instanceof EggPrototypeNotFound && injectObject.optional) {
114
+ continue;
115
+ }
116
+ throw e;
117
+ }
118
+ }
119
+ const id = IdenticalUtil.createProtoId(this.loadUnit.id, this.name);
120
+ return new EggPrototypeImpl(id, this.name, this.clazz, this.filepath, this.initType, this.accessLevel, injectObjectProtos, this.loadUnit.id, this.qualifiers, this.className, this.injectType, this.multiInstanceConstructorIndex, this.multiInstanceConstructorAttributes);
121
+ }
122
+ }
123
+ EggPrototypeCreatorFactory.registerPrototypeCreator(DEFAULT_PROTO_IMPL_TYPE, EggPrototypeBuilder.create);
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL0VnZ1Byb3RvdHlwZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUEyQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWExRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUUxQixjQUFjLEdBQ2YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsS0FBSyxDQUFvQjtJQUN6QixJQUFJLENBQW1CO0lBQ3ZCLFFBQVEsQ0FBcUI7SUFDN0IsV0FBVyxDQUFjO0lBQ3pCLFFBQVEsQ0FBUztJQUNqQixVQUFVLENBQXlCO0lBQ25DLGFBQWEsR0FBNEMsRUFBRSxDQUFDO0lBQzVELFFBQVEsQ0FBVztJQUNuQixVQUFVLEdBQW9CLEVBQUUsQ0FBQztJQUNqQyxnQkFBZ0IsR0FBeUMsRUFBRSxDQUFDO0lBQzVELFNBQVMsQ0FBVTtJQUNuQiw2QkFBNkIsQ0FBVTtJQUN2QyxrQ0FBa0MsQ0FBd0I7SUFFbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFpQztRQUM3QyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLEtB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
@@ -1,4 +1,4 @@
1
- import { InjectType, QualifierAttribute } from '@eggjs/core-decorator';
1
+ import { InjectType, type QualifierAttribute } from '@eggjs/core-decorator';
2
2
  import type { AccessLevel, EggProtoImplClass, EggPrototype, EggPrototypeName, Id, InjectConstructorProto, InjectObjectProto, MetaDataKey, ObjectInitTypeLike, QualifierInfo, QualifierValue } from '@eggjs/tegg-types';
3
3
  export declare class EggPrototypeImpl implements EggPrototype {
4
4
  private readonly clazz;
@@ -0,0 +1,53 @@
1
+ import { InjectType, MetadataUtil } from '@eggjs/core-decorator';
2
+ export class EggPrototypeImpl {
3
+ clazz;
4
+ qualifiers;
5
+ filepath;
6
+ id;
7
+ name;
8
+ initType;
9
+ accessLevel;
10
+ injectObjects;
11
+ injectType;
12
+ loadUnitId;
13
+ className;
14
+ multiInstanceConstructorIndex;
15
+ multiInstanceConstructorAttributes;
16
+ constructor(id, name, clazz, filepath, initType, accessLevel, injectObjectMap, loadUnitId, qualifiers, className, injectType, multiInstanceConstructorIndex, multiInstanceConstructorAttributes) {
17
+ this.id = id;
18
+ this.clazz = clazz;
19
+ this.name = name;
20
+ this.filepath = filepath;
21
+ this.initType = initType;
22
+ this.accessLevel = accessLevel;
23
+ this.injectObjects = injectObjectMap;
24
+ this.loadUnitId = loadUnitId;
25
+ this.qualifiers = qualifiers;
26
+ this.className = className;
27
+ this.injectType = injectType || InjectType.PROPERTY;
28
+ this.multiInstanceConstructorIndex = multiInstanceConstructorIndex;
29
+ this.multiInstanceConstructorAttributes = multiInstanceConstructorAttributes;
30
+ }
31
+ verifyQualifiers(qualifiers) {
32
+ for (const qualifier of qualifiers) {
33
+ if (!this.verifyQualifier(qualifier)) {
34
+ return false;
35
+ }
36
+ }
37
+ return true;
38
+ }
39
+ verifyQualifier(qualifier) {
40
+ const selfQualifiers = this.qualifiers.find(t => t.attribute === qualifier.attribute);
41
+ return selfQualifiers?.value === qualifier.value;
42
+ }
43
+ getQualifier(attribute) {
44
+ return this.qualifiers.find(t => t.attribute === attribute)?.value;
45
+ }
46
+ constructEggObject(...args) {
47
+ return Reflect.construct(this.clazz, args);
48
+ }
49
+ getMetaData(metadataKey) {
50
+ return MetadataUtil.getMetaData(metadataKey, this.clazz);
51
+ }
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL0VnZ1Byb3RvdHlwZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQTJCLE1BQU0sdUJBQXVCLENBQUM7QUFlMUYsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLEtBQUssQ0FBb0I7SUFDekIsVUFBVSxDQUFrQjtJQUNwQyxRQUFRLENBQVM7SUFFakIsRUFBRSxDQUFTO0lBQ1gsSUFBSSxDQUFtQjtJQUN2QixRQUFRLENBQXFCO0lBQzdCLFdBQVcsQ0FBYztJQUN6QixhQUFhLENBQW9EO0lBQ2pFLFVBQVUsQ0FBYTtJQUN2QixVQUFVLENBQUs7SUFDZixTQUFTLENBQVU7SUFDbkIsNkJBQTZCLENBQVU7SUFDdkMsa0NBQWtDLENBQXdCO0lBR25FLFlBQ0UsRUFBVSxFQUNWLElBQXNCLEVBQ3RCLEtBQXdCLEVBQ3hCLFFBQWdCLEVBQ2hCLFFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGVBQWtFLEVBQ2xFLFVBQWMsRUFDZCxVQUEyQixFQUMzQixTQUFrQixFQUNsQixVQUF1QixFQUN2Qiw2QkFBc0MsRUFDdEMsa0NBQXlEO1FBRXpELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUNwRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsNkJBQTZCLENBQUM7UUFDbkUsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLGtDQUFrQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUEyQjtRQUMxQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBRyxJQUFTO1FBQzdCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUksV0FBd0I7UUFDckMsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGIn0=
@@ -0,0 +1,18 @@
1
+ import { PrototypeUtil } from '@eggjs/core-decorator';
2
+ export class LoadUnitMultiInstanceProtoHook {
3
+ static multiInstanceClazzSet = new Set();
4
+ static setAllClassList(clazzList) {
5
+ for (const clazz of clazzList) {
6
+ if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
7
+ this.multiInstanceClazzSet.add(clazz);
8
+ }
9
+ }
10
+ }
11
+ static clear() {
12
+ this.multiInstanceClazzSet.clear();
13
+ }
14
+ async preCreate() {
15
+ // ...
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRNdWx0aUluc3RhbmNlUHJvdG9Ib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcGwvTG9hZFVuaXRNdWx0aUluc3RhbmNlUHJvdG9Ib29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RCxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDLE1BQU0sQ0FBQyxxQkFBcUIsR0FBMkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVqRSxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQXVDO1FBQzVELEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxhQUFhLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNWLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNO0lBQ1IsQ0FBQyJ9
@@ -1,6 +1,6 @@
1
1
  import { EggLoadUnitType } from '@eggjs/tegg-types';
2
2
  import type { EggProtoImplClass, EggPrototype, LoadUnit, LoadUnitLifecycleContext, QualifierInfo } from '@eggjs/tegg-types';
3
- import { GlobalGraph } from '../model/index.js';
3
+ import { GlobalGraph } from '../model/index.ts';
4
4
  export declare class ModuleGraph {
5
5
  private graph;
6
6
  clazzList: EggProtoImplClass[];