@eggjs/metadata 4.0.0-beta.34 → 4.0.0-beta.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/errors.d.ts +14 -10
  2. package/dist/errors.js +29 -27
  3. package/dist/factory/EggPrototypeCreatorFactory.d.ts +13 -8
  4. package/dist/factory/EggPrototypeCreatorFactory.js +94 -111
  5. package/dist/factory/EggPrototypeFactory.d.ts +12 -8
  6. package/dist/factory/EggPrototypeFactory.js +40 -51
  7. package/dist/factory/LoadUnitFactory.d.ts +15 -11
  8. package/dist/factory/LoadUnitFactory.js +58 -59
  9. package/dist/factory/index.d.ts +3 -3
  10. package/dist/factory/index.js +5 -4
  11. package/dist/impl/EggPrototypeBuilder.d.ts +25 -21
  12. package/dist/impl/EggPrototypeBuilder.js +112 -127
  13. package/dist/impl/EggPrototypeImpl.d.ts +27 -23
  14. package/dist/impl/EggPrototypeImpl.js +52 -53
  15. package/dist/impl/LoadUnitMultiInstanceProtoHook.d.ts +10 -6
  16. package/dist/impl/LoadUnitMultiInstanceProtoHook.js +16 -18
  17. package/dist/impl/ModuleLoadUnit.d.ts +37 -33
  18. package/dist/impl/ModuleLoadUnit.js +208 -261
  19. package/dist/impl/index.d.ts +4 -4
  20. package/dist/impl/index.js +6 -5
  21. package/dist/index.d.ts +27 -6
  22. package/dist/index.js +28 -7
  23. package/dist/model/AppGraph.d.ts +38 -35
  24. package/dist/model/AppGraph.js +190 -253
  25. package/dist/model/EggPrototype.d.ts +7 -3
  26. package/dist/model/EggPrototype.js +7 -3
  27. package/dist/model/LoadUnit.d.ts +7 -3
  28. package/dist/model/LoadUnit.js +7 -3
  29. package/dist/model/ModuleDescriptor.d.ts +19 -15
  30. package/dist/model/ModuleDescriptor.js +32 -46
  31. package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.d.ts +34 -30
  32. package/dist/model/ProtoDescriptor/AbstractProtoDescriptor.js +35 -31
  33. package/dist/model/ProtoDescriptor/ClassProtoDescriptor.d.ts +14 -10
  34. package/dist/model/ProtoDescriptor/ClassProtoDescriptor.js +26 -29
  35. package/dist/model/ProtoDescriptor/index.d.ts +2 -2
  36. package/dist/model/ProtoDescriptor/index.js +4 -3
  37. package/dist/model/ProtoDescriptorHelper.d.ts +30 -25
  38. package/dist/model/ProtoDescriptorHelper.js +113 -129
  39. package/dist/model/graph/GlobalGraph.d.ts +64 -60
  40. package/dist/model/graph/GlobalGraph.js +172 -236
  41. package/dist/model/graph/GlobalModuleNode.d.ts +26 -22
  42. package/dist/model/graph/GlobalModuleNode.js +42 -38
  43. package/dist/model/graph/GlobalModuleNodeBuilder.d.ts +16 -12
  44. package/dist/model/graph/GlobalModuleNodeBuilder.js +53 -52
  45. package/dist/model/graph/ProtoNode.d.ts +22 -16
  46. package/dist/model/graph/ProtoNode.js +42 -39
  47. package/dist/model/graph/ProtoSelector.d.ts +9 -5
  48. package/dist/model/graph/ProtoSelector.js +3 -2
  49. package/dist/model/graph/index.d.ts +5 -5
  50. package/dist/model/graph/index.js +7 -6
  51. package/dist/model/index.d.ts +14 -7
  52. package/dist/model/index.js +15 -8
  53. package/dist/util/ClassUtil.d.ts +8 -4
  54. package/dist/util/ClassUtil.js +18 -17
  55. package/dist/util/index.d.ts +1 -1
  56. package/dist/util/index.js +3 -2
  57. package/package.json +29 -33
package/dist/errors.d.ts CHANGED
@@ -1,14 +1,18 @@
1
- import { FrameworkBaseError } from '@eggjs/errors';
2
- import type { EggPrototypeName, QualifierInfo } from '@eggjs/tegg-types';
3
- export declare class TeggError extends FrameworkBaseError {
4
- get module(): string;
1
+ import { FrameworkBaseError } from "@eggjs/errors";
2
+ import { EggPrototypeName, QualifierInfo } from "@eggjs/tegg-types";
3
+
4
+ //#region src/errors.d.ts
5
+ declare class TeggError extends FrameworkBaseError {
6
+ get module(): string;
5
7
  }
6
- export declare class EggPrototypeNotFound extends TeggError {
7
- constructor(protoName: EggPrototypeName, loadUnitId: string | undefined);
8
+ declare class EggPrototypeNotFound extends TeggError {
9
+ constructor(protoName: EggPrototypeName, loadUnitId: string | undefined);
8
10
  }
9
- export declare class MultiPrototypeFound extends TeggError {
10
- constructor(name: EggPrototypeName, qualifier: QualifierInfo[], result?: string);
11
+ declare class MultiPrototypeFound extends TeggError {
12
+ constructor(name: EggPrototypeName, qualifier: QualifierInfo[], result?: string);
11
13
  }
12
- export declare class IncompatibleProtoInject extends TeggError {
13
- constructor(msg: string);
14
+ declare class IncompatibleProtoInject extends TeggError {
15
+ constructor(msg: string);
14
16
  }
17
+ //#endregion
18
+ export { EggPrototypeNotFound, IncompatibleProtoInject, MultiPrototypeFound, TeggError };
package/dist/errors.js CHANGED
@@ -1,27 +1,29 @@
1
- import { FrameworkBaseError } from '@eggjs/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRy9DLE1BQU0sT0FBTyxTQUFVLFNBQVEsa0JBQWtCO0lBQy9DLElBQUksTUFBTTtRQUNSLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUFTO0lBQ2pELFlBQVksU0FBMkIsRUFBRSxVQUE4QjtRQUNyRSxNQUFNLEdBQUcsR0FBRyxVQUFVO1lBQ3BCLENBQUMsQ0FBQyxVQUFVLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLFVBQVUsRUFBRTtZQUMxRCxDQUFDLENBQUMsVUFBVSxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUM1QyxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxTQUFTO0lBQ2hELFlBQVksSUFBc0IsRUFBRSxTQUEwQixFQUFFLE1BQWU7UUFDN0UsTUFBTSxHQUFHLEdBQUcsOEJBQThCLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQ2hHLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDckMsRUFBRSxDQUFDO1FBQ0gsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsU0FBUztJQUNwRCxZQUFZLEdBQVc7UUFDckIsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0YifQ==
1
+ import { FrameworkBaseError } from "@eggjs/errors";
2
+ import { ErrorCodes } from "@eggjs/tegg-types";
3
+
4
+ //#region src/errors.ts
5
+ var TeggError = class extends FrameworkBaseError {
6
+ get module() {
7
+ return "TEGG";
8
+ }
9
+ };
10
+ var EggPrototypeNotFound = class extends TeggError {
11
+ constructor(protoName, loadUnitId) {
12
+ const msg = loadUnitId ? `Object ${String(protoName)} not found in ${loadUnitId}` : `Object ${String(protoName)} not found`;
13
+ super(msg, ErrorCodes.EGG_PROTO_NOT_FOUND);
14
+ }
15
+ };
16
+ var MultiPrototypeFound = class 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
+ var IncompatibleProtoInject = class extends TeggError {
23
+ constructor(msg) {
24
+ super(msg, ErrorCodes.INCOMPATIBLE_PROTO_INJECT);
25
+ }
26
+ };
27
+
28
+ //#endregion
29
+ export { EggPrototypeNotFound, IncompatibleProtoInject, MultiPrototypeFound, TeggError };
@@ -1,9 +1,14 @@
1
- import type { EggProtoImplClass, EggPrototypeCreator, LoadUnit, EggPrototype } from '@eggjs/tegg-types';
2
- import { ClassProtoDescriptor } from '../model/index.ts';
3
- export declare class EggPrototypeCreatorFactory {
4
- private static creatorMap;
5
- static registerPrototypeCreator(type: string, creator: EggPrototypeCreator): void;
6
- static getPrototypeCreator(type: string): EggPrototypeCreator | undefined;
7
- static createProto(clazz: EggProtoImplClass, loadUnit: LoadUnit): Promise<EggPrototype[]>;
8
- static createProtoByDescriptor(protoDescriptor: ClassProtoDescriptor, loadUnit: LoadUnit): Promise<EggPrototype>;
1
+ import { ClassProtoDescriptor } from "../model/ProtoDescriptor/ClassProtoDescriptor.js";
2
+ import "../model/index.js";
3
+ import { EggProtoImplClass, EggPrototype, EggPrototypeCreator, LoadUnit } from "@eggjs/tegg-types";
4
+
5
+ //#region src/factory/EggPrototypeCreatorFactory.d.ts
6
+ declare class EggPrototypeCreatorFactory {
7
+ private static creatorMap;
8
+ static registerPrototypeCreator(type: string, creator: EggPrototypeCreator): void;
9
+ static getPrototypeCreator(type: string): EggPrototypeCreator | undefined;
10
+ static createProto(clazz: EggProtoImplClass, loadUnit: LoadUnit): Promise<EggPrototype[]>;
11
+ static createProtoByDescriptor(protoDescriptor: ClassProtoDescriptor, loadUnit: LoadUnit): Promise<EggPrototype>;
9
12
  }
13
+ //#endregion
14
+ export { EggPrototypeCreatorFactory };
@@ -1,111 +1,94 @@
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('egg/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
- {
22
- attribute: InitTypeQualifierAttribute,
23
- value: initTypeQualifierAttributeValue,
24
- },
25
- {
26
- attribute: LoadUnitNameQualifierAttribute,
27
- value: loadUnit.name,
28
- },
29
- ];
30
- if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
31
- const multiInstanceProtoInfo = await PrototypeUtil.getMultiInstanceProperty(clazz, {
32
- unitPath: loadUnit.unitPath,
33
- moduleName: loadUnit.name,
34
- });
35
- assert(multiInstanceProtoInfo, `multiInstanceProtoInfo is undefined, clazz: ${clazz.name}, unitPath: ${loadUnit.unitPath}, moduleName: ${loadUnit.name}`);
36
- for (const obj of multiInstanceProtoInfo.objects) {
37
- defaultQualifier.forEach((qualifier) => {
38
- if (!obj.qualifiers.find((t) => t.attribute === qualifier.attribute)) {
39
- obj.qualifiers.push(qualifier);
40
- }
41
- });
42
- properties.push({
43
- name: obj.name,
44
- protoImplType: multiInstanceProtoInfo.protoImplType,
45
- initType: multiInstanceProtoInfo.initType,
46
- accessLevel: multiInstanceProtoInfo.accessLevel,
47
- qualifiers: obj.qualifiers,
48
- properQualifiers: obj.properQualifiers,
49
- className: multiInstanceProtoInfo.className,
50
- });
51
- }
52
- }
53
- else {
54
- const property = PrototypeUtil.getProperty(clazz);
55
- if (!property.qualifiers) {
56
- property.qualifiers = [];
57
- }
58
- defaultQualifier.forEach((qualifier) => {
59
- if (!property.qualifiers.find((t) => t.attribute === qualifier.attribute)) {
60
- property.qualifiers.push(qualifier);
61
- }
62
- });
63
- properties = [property];
64
- }
65
- const protos = [];
66
- for (const property of properties) {
67
- const creator = this.getPrototypeCreator(property.protoImplType);
68
- if (!creator) {
69
- throw new Error(`not found proto creator for type: ${property.protoImplType}`);
70
- }
71
- const ctx = {
72
- clazz,
73
- loadUnit,
74
- prototypeInfo: property,
75
- };
76
- const proto = creator(ctx);
77
- // TODO release egg prototype
78
- await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
79
- if (proto.init) {
80
- await proto.init(ctx);
81
- }
82
- await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
83
- PrototypeUtil.setClazzProto(clazz, proto);
84
- protos.push(proto);
85
- }
86
- if (debug.enabled && loadUnit.name === 'egg-app') {
87
- 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);
88
- }
89
- return protos;
90
- }
91
- static async createProtoByDescriptor(protoDescriptor, loadUnit) {
92
- const creator = this.getPrototypeCreator(protoDescriptor.protoImplType);
93
- if (!creator) {
94
- throw new Error(`not found proto creator for type: ${protoDescriptor.protoImplType}`);
95
- }
96
- const ctx = {
97
- clazz: protoDescriptor.clazz,
98
- loadUnit,
99
- prototypeInfo: protoDescriptor,
100
- };
101
- const proto = creator(ctx);
102
- await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
103
- if (proto.init) {
104
- await proto.init(ctx);
105
- }
106
- await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
107
- PrototypeUtil.setClazzProto(protoDescriptor.clazz, proto);
108
- return proto;
109
- }
110
- }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlQ3JlYXRvckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFjdG9yeS9FZ2dQcm90b3R5cGVDcmVhdG9yRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFVbEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEYsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7QUFFcEYsTUFBTSxPQUFPLDBCQUEwQjtJQUM3QixNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBRW5FLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFZLEVBQUUsT0FBNEI7UUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBWTtRQUNyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUF3QixFQUFFLFFBQWtCO1FBQ25FLElBQUksVUFBVSxHQUF1QixFQUFFLENBQUM7UUFDeEMsTUFBTSwrQkFBK0IsR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO1lBQzdFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUk7U0FDMUIsQ0FBQyxDQUFD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
1
+ import { EggPrototypeLifecycleUtil } from "../model/EggPrototype.js";
2
+ import "../model/index.js";
3
+ import assert from "node:assert";
4
+ import { debuglog } from "node:util";
5
+ import { InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, PrototypeUtil } from "@eggjs/core-decorator";
6
+
7
+ //#region src/factory/EggPrototypeCreatorFactory.ts
8
+ const debug = debuglog("egg/tegg/core/metadata/factory/EggPrototypeCreatorFactory");
9
+ var EggPrototypeCreatorFactory = class {
10
+ static creatorMap = /* @__PURE__ */ new Map();
11
+ static registerPrototypeCreator(type, creator) {
12
+ this.creatorMap.set(type, creator);
13
+ }
14
+ static getPrototypeCreator(type) {
15
+ return this.creatorMap.get(type);
16
+ }
17
+ static async createProto(clazz, loadUnit) {
18
+ let properties = [];
19
+ const defaultQualifier = [{
20
+ attribute: InitTypeQualifierAttribute,
21
+ value: await PrototypeUtil.getInitType(clazz, {
22
+ unitPath: loadUnit.unitPath,
23
+ moduleName: loadUnit.name
24
+ })
25
+ }, {
26
+ attribute: LoadUnitNameQualifierAttribute,
27
+ value: loadUnit.name
28
+ }];
29
+ if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
30
+ const multiInstanceProtoInfo = await PrototypeUtil.getMultiInstanceProperty(clazz, {
31
+ unitPath: loadUnit.unitPath,
32
+ moduleName: loadUnit.name
33
+ });
34
+ assert(multiInstanceProtoInfo, `multiInstanceProtoInfo is undefined, clazz: ${clazz.name}, unitPath: ${loadUnit.unitPath}, moduleName: ${loadUnit.name}`);
35
+ for (const obj of multiInstanceProtoInfo.objects) {
36
+ defaultQualifier.forEach((qualifier) => {
37
+ if (!obj.qualifiers.find((t) => t.attribute === qualifier.attribute)) obj.qualifiers.push(qualifier);
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
+ } else {
50
+ const property = PrototypeUtil.getProperty(clazz);
51
+ if (!property.qualifiers) property.qualifiers = [];
52
+ defaultQualifier.forEach((qualifier) => {
53
+ if (!property.qualifiers.find((t) => t.attribute === qualifier.attribute)) property.qualifiers.push(qualifier);
54
+ });
55
+ properties = [property];
56
+ }
57
+ const protos = [];
58
+ for (const property of properties) {
59
+ const creator = this.getPrototypeCreator(property.protoImplType);
60
+ if (!creator) throw new Error(`not found proto creator for type: ${property.protoImplType}`);
61
+ const ctx = {
62
+ clazz,
63
+ loadUnit,
64
+ prototypeInfo: property
65
+ };
66
+ const proto = creator(ctx);
67
+ await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
68
+ if (proto.init) await proto.init(ctx);
69
+ await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
70
+ PrototypeUtil.setClazzProto(clazz, proto);
71
+ protos.push(proto);
72
+ }
73
+ if (debug.enabled && loadUnit.name === "egg-app") 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);
74
+ return protos;
75
+ }
76
+ static async createProtoByDescriptor(protoDescriptor, loadUnit) {
77
+ const creator = this.getPrototypeCreator(protoDescriptor.protoImplType);
78
+ if (!creator) throw new Error(`not found proto creator for type: ${protoDescriptor.protoImplType}`);
79
+ const ctx = {
80
+ clazz: protoDescriptor.clazz,
81
+ loadUnit,
82
+ prototypeInfo: protoDescriptor
83
+ };
84
+ const proto = creator(ctx);
85
+ await EggPrototypeLifecycleUtil.objectPreCreate(ctx, proto);
86
+ if (proto.init) await proto.init(ctx);
87
+ await EggPrototypeLifecycleUtil.objectPostCreate(ctx, proto);
88
+ PrototypeUtil.setClazzProto(protoDescriptor.clazz, proto);
89
+ return proto;
90
+ }
91
+ };
92
+
93
+ //#endregion
94
+ export { EggPrototypeCreatorFactory };
@@ -1,9 +1,13 @@
1
- import type { EggPrototype, LoadUnit, QualifierInfo } from '@eggjs/tegg-types';
2
- export declare class EggPrototypeFactory {
3
- static instance: EggPrototypeFactory;
4
- private publicProtoMap;
5
- registerPrototype(proto: EggPrototype, loadUnit: LoadUnit): void;
6
- deletePrototype(proto: EggPrototype, loadUnit: LoadUnit): void;
7
- getPrototype(name: PropertyKey, loadUnit?: LoadUnit, qualifiers?: QualifierInfo[]): EggPrototype;
8
- private doGetPrototype;
1
+ import { EggPrototype, LoadUnit, QualifierInfo } from "@eggjs/tegg-types";
2
+
3
+ //#region src/factory/EggPrototypeFactory.d.ts
4
+ declare class EggPrototypeFactory {
5
+ static instance: EggPrototypeFactory;
6
+ private publicProtoMap;
7
+ registerPrototype(proto: EggPrototype, loadUnit: LoadUnit): void;
8
+ deletePrototype(proto: EggPrototype, loadUnit: LoadUnit): void;
9
+ getPrototype(name: PropertyKey, loadUnit?: LoadUnit, qualifiers?: QualifierInfo[]): EggPrototype;
10
+ private doGetPrototype;
9
11
  }
12
+ //#endregion
13
+ export { EggPrototypeFactory };
@@ -1,52 +1,41 @@
1
- import { MapUtil } from '@eggjs/tegg-common-util';
2
- import { AccessLevel } from '@eggjs/tegg-types';
3
- import { FrameworkErrorFormatter } from '@eggjs/errors';
4
1
  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 FrameworkErrorFormatter.formatError(new EggPrototypeNotFound(name, loadUnit?.id));
33
- }
34
- if (protos.length === 1) {
35
- return protos[0];
36
- }
37
- throw FrameworkErrorFormatter.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3J5L0VnZ1Byb3RvdHlwZUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdkIsTUFBTSxDQUFDLFFBQVEsR0FBd0IsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO0lBRXhFLDJEQUEyRDtJQUNuRCxjQUFjLEdBQTBDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFbkUsaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxRQUFrQjtRQUM5RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQW1CLEVBQUUsUUFBa0I7UUFDNUQsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNqQixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQWlCLEVBQUUsUUFBbUIsRUFBRSxVQUE0QjtRQUN0RixVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFDRCxNQUFNLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBc0IsRUFBRSxVQUEyQixFQUFFLFFBQW1CO1FBQzdGLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixxQ0FBcUM7WUFDckMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUQsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdFLENBQUMifQ==
2
+ import { FrameworkErrorFormatter } from "@eggjs/errors";
3
+ import { MapUtil } from "@eggjs/tegg-common-util";
4
+ import { AccessLevel } from "@eggjs/tegg-types";
5
+
6
+ //#region src/factory/EggPrototypeFactory.ts
7
+ var EggPrototypeFactory = class EggPrototypeFactory {
8
+ static instance = new EggPrototypeFactory();
9
+ publicProtoMap = /* @__PURE__ */ new Map();
10
+ registerPrototype(proto, loadUnit) {
11
+ if (proto.accessLevel === AccessLevel.PUBLIC) MapUtil.getOrStore(this.publicProtoMap, proto.name, []).push(proto);
12
+ loadUnit.registerEggPrototype(proto);
13
+ }
14
+ deletePrototype(proto, loadUnit) {
15
+ if (proto.accessLevel === AccessLevel.PUBLIC) {
16
+ const protos = this.publicProtoMap.get(proto.name);
17
+ if (protos) {
18
+ const index = protos.indexOf(proto);
19
+ if (index !== -1) protos.splice(index, 1);
20
+ }
21
+ }
22
+ loadUnit.deletePrototype(proto);
23
+ }
24
+ getPrototype(name, loadUnit, qualifiers) {
25
+ qualifiers = qualifiers || [];
26
+ const protos = this.doGetPrototype(name, qualifiers, loadUnit);
27
+ if (!protos.length) throw FrameworkErrorFormatter.formatError(new EggPrototypeNotFound(name, loadUnit?.id));
28
+ if (protos.length === 1) return protos[0];
29
+ throw FrameworkErrorFormatter.formatError(new MultiPrototypeFound(name, qualifiers));
30
+ }
31
+ doGetPrototype(name, qualifiers, loadUnit) {
32
+ if (loadUnit) {
33
+ const protos = loadUnit.getEggPrototype(name, qualifiers);
34
+ if (protos.length) return protos;
35
+ }
36
+ return this.publicProtoMap.get(name)?.filter((proto) => proto.verifyQualifiers(qualifiers)) || [];
37
+ }
38
+ };
39
+
40
+ //#endregion
41
+ export { EggPrototypeFactory };
@@ -1,12 +1,16 @@
1
- import type { EggLoadUnitTypeLike, Id, LoadUnit, LoadUnitLifecycleContext, Loader, LoadUnitCreator } from '@eggjs/tegg-types';
2
- export declare class LoadUnitFactory {
3
- private static loadUnitCreatorMap;
4
- private static loadUnitMap;
5
- private static loadUnitIdMap;
6
- protected static getLoanUnit(ctx: LoadUnitLifecycleContext, type: EggLoadUnitTypeLike): Promise<LoadUnit>;
7
- static createLoadUnit(unitPath: string, type: EggLoadUnitTypeLike, loader: Loader): Promise<LoadUnit>;
8
- static createPreloadLoadUnit(unitPath: string, type: EggLoadUnitTypeLike, loader: Loader): Promise<LoadUnit>;
9
- static destroyLoadUnit(loadUnit: LoadUnit): Promise<void>;
10
- static getLoadUnitById(id: Id): LoadUnit | undefined;
11
- static registerLoadUnitCreator(type: EggLoadUnitTypeLike, creator: LoadUnitCreator): void;
1
+ import { EggLoadUnitTypeLike, Id, LoadUnit, LoadUnitCreator, LoadUnitLifecycleContext, Loader } from "@eggjs/tegg-types";
2
+
3
+ //#region src/factory/LoadUnitFactory.d.ts
4
+ declare class LoadUnitFactory {
5
+ private static loadUnitCreatorMap;
6
+ private static loadUnitMap;
7
+ private static loadUnitIdMap;
8
+ protected static getLoanUnit(ctx: LoadUnitLifecycleContext, type: EggLoadUnitTypeLike): Promise<LoadUnit>;
9
+ static createLoadUnit(unitPath: string, type: EggLoadUnitTypeLike, loader: Loader): Promise<LoadUnit>;
10
+ static createPreloadLoadUnit(unitPath: string, type: EggLoadUnitTypeLike, loader: Loader): Promise<LoadUnit>;
11
+ static destroyLoadUnit(loadUnit: LoadUnit): Promise<void>;
12
+ static getLoadUnitById(id: Id): LoadUnit | undefined;
13
+ static registerLoadUnitCreator(type: EggLoadUnitTypeLike, creator: LoadUnitCreator): void;
12
14
  }
15
+ //#endregion
16
+ export { LoadUnitFactory };
@@ -1,59 +1,58 @@
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
1
+ import { LoadUnitLifecycleUtil } from "../model/LoadUnit.js";
2
+ import "../model/index.js";
3
+
4
+ //#region src/factory/LoadUnitFactory.ts
5
+ var LoadUnitFactory = class LoadUnitFactory {
6
+ static loadUnitCreatorMap = /* @__PURE__ */ new Map();
7
+ static loadUnitMap = /* @__PURE__ */ new Map();
8
+ static loadUnitIdMap = /* @__PURE__ */ new Map();
9
+ static async getLoanUnit(ctx, type) {
10
+ const creator = LoadUnitFactory.loadUnitCreatorMap.get(type);
11
+ if (!creator) throw new Error(`not find creator for load unit type ${type}`);
12
+ return await creator(ctx);
13
+ }
14
+ static async createLoadUnit(unitPath, type, loader) {
15
+ if (LoadUnitFactory.loadUnitMap.has(unitPath)) return LoadUnitFactory.loadUnitMap.get(unitPath).loadUnit;
16
+ const ctx = {
17
+ unitPath,
18
+ loader
19
+ };
20
+ const loadUnit = await LoadUnitFactory.getLoanUnit(ctx, type);
21
+ await LoadUnitLifecycleUtil.objectPreCreate(ctx, loadUnit);
22
+ if (loadUnit.init) await loadUnit.init(ctx);
23
+ await LoadUnitLifecycleUtil.objectPostCreate(ctx, loadUnit);
24
+ LoadUnitFactory.loadUnitMap.set(unitPath, {
25
+ loadUnit,
26
+ ctx
27
+ });
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) await loadUnit.destroy(ctx);
43
+ } finally {
44
+ LoadUnitFactory.loadUnitMap.delete(loadUnit.unitPath);
45
+ LoadUnitFactory.loadUnitIdMap.delete(loadUnit.id);
46
+ LoadUnitLifecycleUtil.clearObjectLifecycle(loadUnit);
47
+ }
48
+ }
49
+ static getLoadUnitById(id) {
50
+ return LoadUnitFactory.loadUnitIdMap.get(id);
51
+ }
52
+ static registerLoadUnitCreator(type, creator) {
53
+ LoadUnitFactory.loadUnitCreatorMap.set(type, creator);
54
+ }
55
+ };
56
+
57
+ //#endregion
58
+ export { LoadUnitFactory };
@@ -1,3 +1,3 @@
1
- export * from './EggPrototypeFactory.ts';
2
- export * from './EggPrototypeCreatorFactory.ts';
3
- export * from './LoadUnitFactory.ts';
1
+ import { EggPrototypeFactory } from "./EggPrototypeFactory.js";
2
+ import { EggPrototypeCreatorFactory } from "./EggPrototypeCreatorFactory.js";
3
+ import { LoadUnitFactory } from "./LoadUnitFactory.js";