@eggjs/tegg-metadata 3.51.2 → 4.0.0-beta.1

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 (80) hide show
  1. package/package.json +22 -21
  2. package/src/errors.js +27 -0
  3. package/{dist/src → src}/factory/EggPrototypeCreatorFactory.d.ts +1 -1
  4. package/src/factory/EggPrototypeCreatorFactory.js +103 -0
  5. package/src/factory/EggPrototypeFactory.js +52 -0
  6. package/src/factory/LoadUnitFactory.js +59 -0
  7. package/src/factory/index.d.ts +3 -0
  8. package/src/factory/index.js +4 -0
  9. package/src/impl/EggPrototypeBuilder.js +124 -0
  10. package/{dist/src → src}/impl/EggPrototypeImpl.d.ts +1 -0
  11. package/src/impl/EggPrototypeImpl.js +53 -0
  12. package/src/impl/LoadUnitMultiInstanceProtoHook.js +18 -0
  13. package/{dist/src → src}/impl/ModuleLoadUnit.d.ts +2 -2
  14. package/src/impl/ModuleLoadUnit.js +268 -0
  15. package/src/impl/index.d.ts +4 -0
  16. package/src/impl/index.js +5 -0
  17. package/src/index.d.ts +6 -0
  18. package/src/index.js +7 -0
  19. package/{dist/src → src}/model/AppGraph.d.ts +4 -3
  20. package/src/model/AppGraph.js +264 -0
  21. package/src/model/EggPrototype.js +3 -0
  22. package/src/model/LoadUnit.js +3 -0
  23. package/src/model/ModuleDescriptor.js +38 -0
  24. package/src/model/ProtoDescriptor/AbstractProtoDescriptor.js +30 -0
  25. package/{dist/src → src}/model/ProtoDescriptor/ClassProtoDescriptor.d.ts +1 -1
  26. package/src/model/ProtoDescriptor/ClassProtoDescriptor.js +30 -0
  27. package/src/model/ProtoDescriptor/index.d.ts +2 -0
  28. package/src/model/ProtoDescriptor/index.js +3 -0
  29. package/{dist/src → src}/model/ProtoDescriptorHelper.d.ts +3 -3
  30. package/src/model/ProtoDescriptorHelper.js +129 -0
  31. package/{dist/src → src}/model/graph/GlobalGraph.d.ts +4 -4
  32. package/src/model/graph/GlobalGraph.js +233 -0
  33. package/{dist/src → src}/model/graph/GlobalModuleNode.d.ts +1 -1
  34. package/src/model/graph/GlobalModuleNode.js +38 -0
  35. package/{dist/src → src}/model/graph/GlobalModuleNodeBuilder.d.ts +2 -2
  36. package/src/model/graph/GlobalModuleNodeBuilder.js +53 -0
  37. package/{dist/src → src}/model/graph/ProtoNode.d.ts +1 -1
  38. package/src/model/graph/ProtoNode.js +37 -0
  39. package/src/model/graph/ProtoSelector.js +2 -0
  40. package/src/model/graph/index.d.ts +5 -0
  41. package/src/model/graph/index.js +6 -0
  42. package/src/model/index.d.ts +7 -0
  43. package/src/model/index.js +8 -0
  44. package/src/util/ClassUtil.js +17 -0
  45. package/src/util/index.d.ts +1 -0
  46. package/src/util/index.js +2 -0
  47. package/dist/index.d.ts +0 -21
  48. package/dist/index.js +0 -38
  49. package/dist/src/errors.js +0 -34
  50. package/dist/src/factory/EggPrototypeCreatorFactory.js +0 -104
  51. package/dist/src/factory/EggPrototypeFactory.js +0 -58
  52. package/dist/src/factory/LoadUnitFactory.js +0 -63
  53. package/dist/src/impl/EggPrototypeBuilder.js +0 -128
  54. package/dist/src/impl/EggPrototypeImpl.js +0 -45
  55. package/dist/src/impl/LoadUnitMultiInstanceProtoHook.js +0 -24
  56. package/dist/src/impl/ModuleLoadUnit.js +0 -259
  57. package/dist/src/model/AppGraph.js +0 -262
  58. package/dist/src/model/EggPrototype.js +0 -6
  59. package/dist/src/model/LoadUnit.js +0 -6
  60. package/dist/src/model/ModuleDescriptor.js +0 -46
  61. package/dist/src/model/ProtoDescriptor/AbstractProtoDescriptor.js +0 -21
  62. package/dist/src/model/ProtoDescriptor/ClassProtoDescriptor.js +0 -32
  63. package/dist/src/model/ProtoDescriptorHelper.js +0 -143
  64. package/dist/src/model/graph/GlobalGraph.js +0 -213
  65. package/dist/src/model/graph/GlobalModuleNode.js +0 -36
  66. package/dist/src/model/graph/GlobalModuleNodeBuilder.js +0 -53
  67. package/dist/src/model/graph/ProtoNode.js +0 -39
  68. package/dist/src/model/graph/ProtoSelector.js +0 -3
  69. package/dist/src/util/ClassUtil.js +0 -21
  70. /package/{dist/src → src}/errors.d.ts +0 -0
  71. /package/{dist/src → src}/factory/EggPrototypeFactory.d.ts +0 -0
  72. /package/{dist/src → src}/factory/LoadUnitFactory.d.ts +0 -0
  73. /package/{dist/src → src}/impl/EggPrototypeBuilder.d.ts +0 -0
  74. /package/{dist/src → src}/impl/LoadUnitMultiInstanceProtoHook.d.ts +0 -0
  75. /package/{dist/src → src}/model/EggPrototype.d.ts +0 -0
  76. /package/{dist/src → src}/model/LoadUnit.d.ts +0 -0
  77. /package/{dist/src → src}/model/ModuleDescriptor.d.ts +0 -0
  78. /package/{dist/src → src}/model/ProtoDescriptor/AbstractProtoDescriptor.d.ts +0 -0
  79. /package/{dist/src → src}/model/graph/ProtoSelector.d.ts +0 -0
  80. /package/{dist/src → src}/util/ClassUtil.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/tegg-metadata",
3
- "version": "3.51.2",
3
+ "version": "4.0.0-beta.1",
4
4
  "description": "tegg metadata",
5
5
  "keywords": [
6
6
  "egg",
@@ -8,16 +8,20 @@
8
8
  "metadata",
9
9
  "tegg"
10
10
  ],
11
- "main": "dist/index.js",
11
+ "type": "module",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./src/index.d.ts",
15
+ "default": "./src/index.js"
16
+ }
17
+ },
12
18
  "files": [
13
- "dist/**/*.js",
14
- "dist/**/*.d.ts"
19
+ "src/**/*.js",
20
+ "src/**/*.d.ts"
15
21
  ],
16
- "typings": "dist/index.d.ts",
17
22
  "scripts": {
18
- "test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
19
23
  "clean": "tsc -b --clean",
20
- "tsc:pub": "npm run clean && tsc -p ./tsconfig.pub.json",
24
+ "tsc:pub": "npm run clean && tsc -p ./tsconfig.json",
21
25
  "prepublishOnly": "npm run tsc:pub"
22
26
  },
23
27
  "author": "killagu <killa123@126.com>",
@@ -32,27 +36,24 @@
32
36
  "directory": "core/metadata"
33
37
  },
34
38
  "engines": {
35
- "node": ">=14.0.0"
39
+ "node": ">=20.0.0"
36
40
  },
37
41
  "dependencies": {
38
- "@eggjs/core-decorator": "^3.51.2",
39
- "@eggjs/tegg-common-util": "^3.51.2",
40
- "@eggjs/tegg-lifecycle": "^3.51.2",
41
- "@eggjs/tegg-types": "^3.51.2",
42
+ "@eggjs/core-decorator": "^4.0.0-beta.1",
43
+ "@eggjs/tegg-common-util": "^4.0.0-beta.1",
44
+ "@eggjs/tegg-lifecycle": "^4.0.0-beta.1",
45
+ "@eggjs/tegg-types": "^4.0.0-beta.1",
42
46
  "egg-errors": "^2.2.3"
43
47
  },
44
48
  "devDependencies": {
45
- "@types/mocha": "^10.0.1",
46
- "@types/node": "^20.2.4",
47
- "cross-env": "^7.0.3",
48
- "globby": "^11.1.0",
49
- "is-type-of": "^1.2.1",
50
- "mocha": "^10.2.0",
51
- "ts-node": "^10.9.1",
52
- "typescript": "^5.0.4"
49
+ "@types/node": "22",
50
+ "globby": "14",
51
+ "is-type-of": "2",
52
+ "ts-node": "10",
53
+ "typescript": "5"
53
54
  },
54
55
  "publishConfig": {
55
56
  "access": "public"
56
57
  },
57
- "gitHead": "b310ec3c772067b98b4f91342d877bebcee4e673"
58
+ "gitHead": "79a22905272d6de7fe06152231dff65d213d9166"
58
59
  }
package/src/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHL0MsTUFBTSxPQUFPLFNBQVUsU0FBUSxrQkFBa0I7SUFDL0MsSUFBSSxNQUFNO1FBQ1IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFDakQsWUFBWSxTQUEyQixFQUFFLFVBQThCO1FBQ3JFLE1BQU0sR0FBRyxHQUFHLFVBQVU7WUFDcEIsQ0FBQyxDQUFDLFVBQVUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsVUFBVSxFQUFFO1lBQzFELENBQUMsQ0FBQyxVQUFVLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQzVDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFNBQVM7SUFDaEQsWUFBWSxJQUFzQixFQUFFLFNBQTBCLEVBQUUsTUFBZTtRQUM3RSxNQUFNLEdBQUcsR0FBRyw4QkFBOEIsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdJLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFDcEQsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGIn0=
@@ -1,5 +1,5 @@
1
1
  import type { EggProtoImplClass, EggPrototypeCreator, LoadUnit, EggPrototype } from '@eggjs/tegg-types';
2
- import { ClassProtoDescriptor } from '../model/ProtoDescriptor/ClassProtoDescriptor';
2
+ import { ClassProtoDescriptor } from '../model/index.js';
3
3
  export declare class EggPrototypeCreatorFactory {
4
4
  private static creatorMap;
5
5
  static registerPrototypeCreator(type: string, creator: EggPrototypeCreator): void;
@@ -0,0 +1,103 @@
1
+ import assert from 'node:assert';
2
+ import { InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, PrototypeUtil } from '@eggjs/core-decorator';
3
+ import { EggPrototypeLifecycleUtil } from '../model/index.js';
4
+ export class EggPrototypeCreatorFactory {
5
+ static creatorMap = new Map();
6
+ static registerPrototypeCreator(type, creator) {
7
+ this.creatorMap.set(type, creator);
8
+ }
9
+ static getPrototypeCreator(type) {
10
+ return this.creatorMap.get(type);
11
+ }
12
+ static async createProto(clazz, loadUnit) {
13
+ let properties = [];
14
+ const initTypeQualifierAttributeValue = await PrototypeUtil.getInitType(clazz, {
15
+ unitPath: loadUnit.unitPath,
16
+ moduleName: loadUnit.name,
17
+ });
18
+ const defaultQualifier = [{
19
+ attribute: InitTypeQualifierAttribute,
20
+ value: initTypeQualifierAttributeValue,
21
+ }, {
22
+ attribute: LoadUnitNameQualifierAttribute,
23
+ value: loadUnit.name,
24
+ }];
25
+ if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
26
+ const multiInstanceProtoInfo = await PrototypeUtil.getMultiInstanceProperty(clazz, {
27
+ unitPath: loadUnit.unitPath,
28
+ moduleName: loadUnit.name,
29
+ });
30
+ assert(multiInstanceProtoInfo, `multiInstanceProtoInfo is undefined, clazz: ${clazz.name}, unitPath: ${loadUnit.unitPath}, moduleName: ${loadUnit.name}`);
31
+ for (const obj of multiInstanceProtoInfo.objects) {
32
+ defaultQualifier.forEach(qualifier => {
33
+ if (!obj.qualifiers.find(t => t.attribute === qualifier.attribute)) {
34
+ obj.qualifiers.push(qualifier);
35
+ }
36
+ });
37
+ properties.push({
38
+ name: obj.name,
39
+ protoImplType: multiInstanceProtoInfo.protoImplType,
40
+ initType: multiInstanceProtoInfo.initType,
41
+ accessLevel: multiInstanceProtoInfo.accessLevel,
42
+ qualifiers: obj.qualifiers,
43
+ properQualifiers: obj.properQualifiers,
44
+ className: multiInstanceProtoInfo.className,
45
+ });
46
+ }
47
+ }
48
+ else {
49
+ const property = PrototypeUtil.getProperty(clazz);
50
+ if (!property.qualifiers) {
51
+ property.qualifiers = [];
52
+ }
53
+ defaultQualifier.forEach(qualifier => {
54
+ if (!property.qualifiers.find(t => t.attribute === qualifier.attribute)) {
55
+ property.qualifiers.push(qualifier);
56
+ }
57
+ });
58
+ properties = [property];
59
+ }
60
+ const protos = [];
61
+ for (const property of properties) {
62
+ const creator = this.getPrototypeCreator(property.protoImplType);
63
+ if (!creator) {
64
+ throw new Error(`not found proto creator for type: ${property.protoImplType}`);
65
+ }
66
+ const ctx = {
67
+ clazz,
68
+ loadUnit,
69
+ prototypeInfo: property,
70
+ };
71
+ const proto = creator(ctx);
72
+ // TODO release egg prototype
73
+ await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
74
+ if (proto.init) {
75
+ await proto.init(ctx);
76
+ }
77
+ await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
78
+ PrototypeUtil.setClazzProto(clazz, proto);
79
+ protos.push(proto);
80
+ }
81
+ return protos;
82
+ }
83
+ static async createProtoByDescriptor(protoDescriptor, loadUnit) {
84
+ const creator = this.getPrototypeCreator(protoDescriptor.protoImplType);
85
+ if (!creator) {
86
+ throw new Error(`not found proto creator for type: ${protoDescriptor.protoImplType}`);
87
+ }
88
+ const ctx = {
89
+ clazz: protoDescriptor.clazz,
90
+ loadUnit,
91
+ prototypeInfo: protoDescriptor,
92
+ };
93
+ const proto = creator(ctx);
94
+ await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
95
+ if (proto.init) {
96
+ await proto.init(ctx);
97
+ }
98
+ await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
99
+ PrototypeUtil.setClazzProto(protoDescriptor.clazz, proto);
100
+ return proto;
101
+ }
102
+ }
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlQ3JlYXRvckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJFZ2dQcm90b3R5cGVDcmVhdG9yRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDhCQUE4QixFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBU2xILE9BQU8sRUFBRSx5QkFBeUIsRUFBd0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRixNQUFNLE9BQU8sMEJBQTBCO0lBQzdCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFFbkUsTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQVksRUFBRSxPQUE0QjtRQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFZO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQXdCLEVBQUUsUUFBa0I7UUFDbkUsSUFBSSxVQUFVLEdBQXVCLEVBQUUsQ0FBQztRQUN4QyxNQUFNLCtCQUErQixHQUFHLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDN0UsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSTtTQUMxQixDQUFDLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUM7Z0JBQ3hCLFNBQVMsRUFBRSwwQkFBMEI7Z0JBQ3JDLEtBQUssRUFBRSwrQkFBZ0M7YUFDeEMsRUFBRTtnQkFDRCxTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUk7YUFDckIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxhQUFhLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sYUFBYSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRTtnQkFDakYsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUMzQixVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUk7YUFDMUIsQ0FBRSxDQUFDO1lBQ0osTUFBTSxDQUFDLHNCQUFzQixFQUFFLCtDQUErQyxLQUFLLENBQUMsSUFBSSxlQUFlLFFBQVEsQ0FBQyxRQUFRLGlCQUFpQixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxSixLQUFLLE1BQU0sR0FBRyxJQUFJLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqRCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7d0JBQ25FLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNqQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxhQUFhO29CQUNuRCxRQUFRLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtvQkFDekMsV0FBVyxFQUFFLHNCQUFzQixDQUFDLFdBQVc7b0JBQy9DLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTtvQkFDMUIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtvQkFDdEMsU0FBUyxFQUFFLHNCQUFzQixDQUFDLFNBQVM7aUJBQzVDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDekUsUUFBUSxDQUFDLFVBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILFVBQVUsR0FBRyxDQUFFLFFBQVEsQ0FBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDakYsQ0FBQztZQUNELE1BQU0sR0FBRyxHQUFpQztnQkFDeEMsS0FBSztnQkFDTCxRQUFRO2dCQUNSLGFBQWEsRUFBRSxRQUFRO2FBQ3hCLENBQUM7WUFDRixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsNkJBQTZCO1lBQzdCLE1BQU0seUJBQXlCLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1RCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQztZQUNELE1BQU0seUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdELGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGVBQXFDLEVBQUUsUUFBa0I7UUFDNUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQWlDO1lBQ3hDLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSztZQUM1QixRQUFRO1lBQ1IsYUFBYSxFQUFFLGVBQWU7U0FDL0IsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixNQUFNLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELE1BQU0seUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELGFBQWEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ1Byb3RvdHlwZUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdkIsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7SUFFbkQsMkRBQTJEO0lBQ25ELGNBQWMsR0FBMEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVuRSxpQkFBaUIsQ0FBQyxLQUFtQixFQUFFLFFBQWtCO1FBQzlELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBbUIsRUFBRSxRQUFrQjtRQUM1RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBaUIsRUFBRSxRQUFtQixFQUFFLFVBQTRCO1FBQ3RGLFVBQVUsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sc0JBQXNCLENBQUMsV0FBVyxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sc0JBQXNCLENBQUMsV0FBVyxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFzQixFQUFFLFVBQTJCLEVBQUUsUUFBbUI7UUFDN0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLHFDQUFxQztZQUNyQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMxRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUMifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTG9hZFVuaXRGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE1BQU0sT0FBTyxlQUFlO0lBQ2xCLE1BQU0sQ0FBQyxrQkFBa0IsR0FBOEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRixNQUFNLENBQUMsV0FBVyxHQUE4QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzFELE1BQU0sQ0FBQyxhQUFhLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBNkIsRUFBRSxJQUF5QjtRQUN6RixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQWdCLEVBQUUsSUFBeUIsRUFBRSxNQUFjO1FBQ3JGLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLGVBQWUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDLFFBQVEsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQTZCO1lBQ3BDLFFBQVE7WUFDUixNQUFNO1NBQ1AsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsTUFBTSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsTUFBTSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0QsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxRQUFnQixFQUFFLElBQXlCLEVBQUUsTUFBYztRQUM1RixNQUFNLEdBQUcsR0FBNkI7WUFDcEMsUUFBUTtZQUNSLE1BQU07U0FDUCxDQUFDO1FBQ0YsT0FBTyxNQUFNLGVBQWUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFrQjtRQUM3QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQztZQUNILE1BQU0scUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzVELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxlQUFlLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEQscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQU07UUFDM0IsT0FBTyxlQUFlLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLElBQXlCLEVBQUUsT0FBd0I7UUFDaEYsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ export * from './EggPrototypeFactory.js';
2
+ export * from './EggPrototypeCreatorFactory.js';
3
+ export * from './LoadUnitFactory.js';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxzQkFBc0IsQ0FBQyJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ1Byb3RvdHlwZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFzQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWFyRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUUxQixjQUFjLEdBQ2YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsS0FBSyxDQUFvQjtJQUN6QixJQUFJLENBQW1CO0lBQ3ZCLFFBQVEsQ0FBcUI7SUFDN0IsV0FBVyxDQUFjO0lBQ3pCLFFBQVEsQ0FBUztJQUNqQixVQUFVLENBQXlCO0lBQ25DLGFBQWEsR0FBNEMsRUFBRSxDQUFDO0lBQzVELFFBQVEsQ0FBVztJQUNuQixVQUFVLEdBQW9CLEVBQUUsQ0FBQztJQUNqQyxnQkFBZ0IsR0FBeUMsRUFBRSxDQUFDO0lBQzVELFNBQVMsQ0FBVTtJQUNuQiw2QkFBNkIsQ0FBVTtJQUN2QyxrQ0FBa0MsQ0FBd0I7SUFFbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFpQztRQUM3QyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FB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
@@ -14,6 +14,7 @@ export declare class EggPrototypeImpl implements EggPrototype {
14
14
  readonly className?: string;
15
15
  readonly multiInstanceConstructorIndex?: number;
16
16
  readonly multiInstanceConstructorAttributes?: QualifierAttribute[];
17
+ [key: symbol]: PropertyDescriptor;
17
18
  constructor(id: string, name: EggPrototypeName, clazz: EggProtoImplClass, filepath: string, initType: ObjectInitTypeLike, accessLevel: AccessLevel, injectObjectMap: Array<InjectObjectProto | InjectConstructorProto>, loadUnitId: Id, qualifiers: QualifierInfo[], className?: string, injectType?: InjectType, multiInstanceConstructorIndex?: number, multiInstanceConstructorAttributes?: QualifierAttribute[]);
18
19
  verifyQualifiers(qualifiers: QualifierInfo[]): boolean;
19
20
  verifyQualifier(qualifier: QualifierInfo): boolean;
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ1Byb3RvdHlwZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQXNCLE1BQU0sdUJBQXVCLENBQUM7QUFlckYsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLEtBQUssQ0FBb0I7SUFDekIsVUFBVSxDQUFrQjtJQUNwQyxRQUFRLENBQVM7SUFFakIsRUFBRSxDQUFTO0lBQ1gsSUFBSSxDQUFtQjtJQUN2QixRQUFRLENBQXFCO0lBQzdCLFdBQVcsQ0FBYztJQUN6QixhQUFhLENBQW9EO0lBQ2pFLFVBQVUsQ0FBYTtJQUN2QixVQUFVLENBQUs7SUFDZixTQUFTLENBQVU7SUFDbkIsNkJBQTZCLENBQVU7SUFDdkMsa0NBQWtDLENBQXdCO0lBR25FLFlBQ0UsRUFBVSxFQUNWLElBQXNCLEVBQ3RCLEtBQXdCLEVBQ3hCLFFBQWdCLEVBQ2hCLFFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGVBQWtFLEVBQ2xFLFVBQWMsRUFDZCxVQUEyQixFQUMzQixTQUFrQixFQUNsQixVQUF1QixFQUN2Qiw2QkFBc0MsRUFDdEMsa0NBQXlEO1FBRXpELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUNwRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsNkJBQTZCLENBQUM7UUFDbkUsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLGtDQUFrQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUEyQjtRQUMxQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBRyxJQUFTO1FBQzdCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUksV0FBd0I7UUFDckMsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGIn0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRNdWx0aUluc3RhbmNlUHJvdG9Ib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTG9hZFVuaXRNdWx0aUluc3RhbmNlUHJvdG9Ib29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RCxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDLE1BQU0sQ0FBQyxxQkFBcUIsR0FBMkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVqRSxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQXVDO1FBQzVELEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxhQUFhLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNWLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNO0lBQ1IsQ0FBQyJ9
@@ -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/graph/GlobalGraph';
3
+ import { GlobalGraph } from '../model/index.js';
4
4
  export declare class ModuleGraph {
5
5
  private graph;
6
6
  clazzList: EggProtoImplClass[];
@@ -8,7 +8,7 @@ export declare class ModuleGraph {
8
8
  readonly name: string;
9
9
  constructor(clazzList: EggProtoImplClass[], unitPath: string, name: string);
10
10
  private findInjectNode;
11
- private build;
11
+ build(): Promise<void>;
12
12
  sort(): void;
13
13
  }
14
14
  export declare class ModuleLoadUnit implements LoadUnit {