@eggjs/tegg-runtime 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 (54) hide show
  1. package/README.md +12 -0
  2. package/dist/factory/EggContainerFactory.js +90 -0
  3. package/dist/factory/EggObjectFactory.js +46 -0
  4. package/dist/factory/LoadUnitInstanceFactory.js +57 -0
  5. package/dist/factory/index.d.ts +3 -0
  6. package/dist/factory/index.js +4 -0
  7. package/dist/impl/ContextInitiator.js +37 -0
  8. package/dist/impl/ContextObjectGraph.js +38 -0
  9. package/{src → dist}/impl/EggAlwaysNewObjectContainer.js +3 -2
  10. package/{src → dist}/impl/EggObjectImpl.js +5 -4
  11. package/dist/impl/EggObjectUtil.js +172 -0
  12. package/dist/impl/ModuleLoadUnitInstance.js +90 -0
  13. package/dist/impl/index.d.ts +6 -0
  14. package/dist/impl/index.js +7 -0
  15. package/{src → dist}/index.d.ts +3 -3
  16. package/dist/index.js +5 -0
  17. package/dist/model/AbstractEggContext.js +93 -0
  18. package/dist/model/ContextHandler.js +14 -0
  19. package/{src → dist}/model/EggContext.js +1 -1
  20. package/{src → dist}/model/EggObject.js +1 -1
  21. package/{src → dist}/model/LoadUnitInstance.js +1 -1
  22. package/dist/model/index.d.ts +5 -0
  23. package/dist/model/index.js +6 -0
  24. package/package.json +26 -26
  25. package/src/factory/EggContainerFactory.js +0 -77
  26. package/src/factory/EggObjectFactory.js +0 -46
  27. package/src/factory/LoadUnitInstanceFactory.js +0 -57
  28. package/src/factory/index.d.ts +0 -3
  29. package/src/factory/index.js +0 -4
  30. package/src/impl/ContextInitiator.js +0 -37
  31. package/src/impl/ContextObjectGraph.js +0 -38
  32. package/src/impl/EggObjectUtil.js +0 -172
  33. package/src/impl/ModuleLoadUnitInstance.js +0 -90
  34. package/src/impl/index.d.ts +0 -6
  35. package/src/impl/index.js +0 -7
  36. package/src/index.js +0 -5
  37. package/src/model/AbstractEggContext.js +0 -89
  38. package/src/model/ContextHandler.js +0 -14
  39. package/src/model/index.d.ts +0 -5
  40. package/src/model/index.js +0 -6
  41. /package/{src → dist}/factory/EggContainerFactory.d.ts +0 -0
  42. /package/{src → dist}/factory/EggObjectFactory.d.ts +0 -0
  43. /package/{src → dist}/factory/LoadUnitInstanceFactory.d.ts +0 -0
  44. /package/{src → dist}/impl/ContextInitiator.d.ts +0 -0
  45. /package/{src → dist}/impl/ContextObjectGraph.d.ts +0 -0
  46. /package/{src → dist}/impl/EggAlwaysNewObjectContainer.d.ts +0 -0
  47. /package/{src → dist}/impl/EggObjectImpl.d.ts +0 -0
  48. /package/{src → dist}/impl/EggObjectUtil.d.ts +0 -0
  49. /package/{src → dist}/impl/ModuleLoadUnitInstance.d.ts +0 -0
  50. /package/{src → dist}/model/AbstractEggContext.d.ts +0 -0
  51. /package/{src → dist}/model/ContextHandler.d.ts +0 -0
  52. /package/{src → dist}/model/EggContext.d.ts +0 -0
  53. /package/{src → dist}/model/EggObject.d.ts +0 -0
  54. /package/{src → dist}/model/LoadUnitInstance.d.ts +0 -0
@@ -0,0 +1,90 @@
1
+ import { MapUtil } from '@eggjs/tegg-common-util';
2
+ import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
3
+ import { EggLoadUnitType, ObjectInitType } from '@eggjs/tegg-types';
4
+ import { EggObjectFactory } from "../factory/EggObjectFactory.js";
5
+ import { LoadUnitInstanceFactory } from "../factory/LoadUnitInstanceFactory.js";
6
+ import { LoadUnitInstanceLifecycleUtil } from "../model/LoadUnitInstance.js";
7
+ export class ModuleLoadUnitInstance {
8
+ loadUnit;
9
+ id;
10
+ name;
11
+ protoToCreateMap = [];
12
+ eggObjectMap = new Map();
13
+ eggObjectPromiseMap = new Map();
14
+ constructor(loadUnit) {
15
+ this.loadUnit = loadUnit;
16
+ this.name = loadUnit.name;
17
+ const iterator = this.loadUnit.iterateEggPrototype();
18
+ for (const proto of iterator) {
19
+ if (proto.initType === ObjectInitType.SINGLETON) {
20
+ this.protoToCreateMap.push([
21
+ proto.name, proto,
22
+ ]);
23
+ }
24
+ }
25
+ this.id = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
26
+ }
27
+ iterateProtoToCreate() {
28
+ return this.protoToCreateMap[Symbol.iterator]();
29
+ }
30
+ addProtoToCreate(name, proto) {
31
+ this.protoToCreateMap.push([name, proto]);
32
+ }
33
+ deleteProtoToCreate(name) {
34
+ const index = this.protoToCreateMap.findIndex(([protoName]) => protoName === name);
35
+ if (index !== -1) {
36
+ this.protoToCreateMap.splice(index, 1);
37
+ }
38
+ }
39
+ async init(ctx) {
40
+ await LoadUnitInstanceLifecycleUtil.objectPreCreate(ctx, this);
41
+ for (const [name, proto] of this.protoToCreateMap) {
42
+ await this.getOrCreateEggObject(name, proto);
43
+ }
44
+ await LoadUnitInstanceLifecycleUtil.objectPostCreate(ctx, this);
45
+ }
46
+ async destroy() {
47
+ const objs = [];
48
+ for (const protoObjMap of this.eggObjectMap.values()) {
49
+ for (const obj of protoObjMap.values()) {
50
+ objs.push(obj);
51
+ }
52
+ }
53
+ this.eggObjectMap.clear();
54
+ await Promise.all(objs.map(async (obj) => {
55
+ await EggObjectFactory.destroyObject(obj);
56
+ }));
57
+ }
58
+ async getOrCreateEggObject(name, proto) {
59
+ if (!this.loadUnit.containPrototype(proto)) {
60
+ throw new Error('load unit not contain proto');
61
+ }
62
+ const protoObjMap = MapUtil.getOrStore(this.eggObjectMap, proto.id, new Map());
63
+ if (!protoObjMap.has(name)) {
64
+ const protoObjPromiseMap = MapUtil.getOrStore(this.eggObjectPromiseMap, proto.id, new Map());
65
+ if (!protoObjPromiseMap.has(name)) {
66
+ const objPromise = EggObjectFactory.createObject(name, proto);
67
+ protoObjPromiseMap.set(name, objPromise);
68
+ const obj = await objPromise;
69
+ protoObjPromiseMap.delete(name);
70
+ protoObjMap.set(name, obj);
71
+ }
72
+ else {
73
+ await protoObjPromiseMap.get(name);
74
+ }
75
+ }
76
+ return protoObjMap.get(name);
77
+ }
78
+ getEggObject(name, proto) {
79
+ const protoObjMap = this.eggObjectMap.get(proto.id);
80
+ if (!protoObjMap || !protoObjMap.has(name)) {
81
+ throw new Error(`EggObject ${String(proto.name)} not found`);
82
+ }
83
+ return protoObjMap.get(name);
84
+ }
85
+ static createModuleLoadUnitInstance(ctx) {
86
+ return new ModuleLoadUnitInstance(ctx.loadUnit);
87
+ }
88
+ }
89
+ LoadUnitInstanceFactory.registerLoadUnitInstanceClass(EggLoadUnitType.MODULE, ModuleLoadUnitInstance.createModuleLoadUnitInstance);
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlTG9hZFVuaXRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL01vZHVsZUxvYWRVbml0SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBWXBFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdFLE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsUUFBUSxDQUFXO0lBQ25CLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBUztJQUNkLGdCQUFnQixHQUF1QyxFQUFFLENBQUM7SUFDMUQsWUFBWSxHQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BFLG1CQUFtQixHQUF1RCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVGLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNyRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3pCLEtBQUssQ0FBQyxJ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
@@ -0,0 +1,6 @@
1
+ export * from './ContextInitiator.ts';
2
+ export * from './ContextObjectGraph.ts';
3
+ export * from './EggAlwaysNewObjectContainer.ts';
4
+ export * from './EggObjectImpl.ts';
5
+ export * from './EggObjectUtil.ts';
6
+ export * from './ModuleLoadUnitInstance.ts';
@@ -0,0 +1,7 @@
1
+ export * from "./ContextInitiator.js";
2
+ export * from "./ContextObjectGraph.js";
3
+ export * from "./EggAlwaysNewObjectContainer.js";
4
+ export * from "./EggObjectImpl.js";
5
+ export * from "./EggObjectUtil.js";
6
+ export * from "./ModuleLoadUnitInstance.js";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQyJ9
@@ -1,5 +1,5 @@
1
1
  export * from '@eggjs/tegg-types/runtime';
2
2
  export type { EggRuntimeContext as EggContext } from '@eggjs/tegg-types/runtime';
3
- export * from './model/index.js';
4
- export * from './impl/index.js';
5
- export * from './factory/index.js';
3
+ export * from './model/index.ts';
4
+ export * from './impl/index.ts';
5
+ export * from './factory/index.ts';
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from '@eggjs/tegg-types/runtime';
2
+ export * from "./model/index.js";
3
+ export * from "./impl/index.js";
4
+ export * from "./factory/index.js";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUcxQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQyJ9
@@ -0,0 +1,93 @@
1
+ import { debuglog } from 'node:util';
2
+ import { ObjectInitType } from '@eggjs/tegg-types';
3
+ import { TeggError } from '@eggjs/tegg-metadata';
4
+ import { MapUtil } from '@eggjs/tegg-common-util';
5
+ import { EggContainerFactory } from "../factory/EggContainerFactory.js";
6
+ import { EggObjectFactory } from "../factory/EggObjectFactory.js";
7
+ import { ContextHandler } from "./ContextHandler.js";
8
+ import { EggContextLifecycleUtil } from "./EggContext.js";
9
+ const debug = debuglog('tegg/core/runtime/AbstractEggContext');
10
+ export class AbstractEggContext {
11
+ contextData = new Map();
12
+ protoToCreate = new Map();
13
+ eggObjectMap = new Map();
14
+ eggObjectPromiseMap = new Map();
15
+ destroyed = false;
16
+ addProtoToCreate(name, proto) {
17
+ this.protoToCreate.set(name, proto);
18
+ }
19
+ deleteProtoToCreate(name) {
20
+ this.protoToCreate.delete(name);
21
+ }
22
+ async destroy(ctx) {
23
+ await EggContextLifecycleUtil.objectPreDestroy(ctx, this);
24
+ const objs = [];
25
+ for (const protoObjMap of this.eggObjectMap.values()) {
26
+ for (const protoObj of protoObjMap.values()) {
27
+ objs.push(protoObj);
28
+ }
29
+ }
30
+ this.eggObjectMap.clear();
31
+ await Promise.all(objs.map(async (obj) => {
32
+ await EggObjectFactory.destroyObject(obj);
33
+ }));
34
+ this.contextData.clear();
35
+ this.destroyed = true;
36
+ await EggContextLifecycleUtil.clearObjectLifecycle(this);
37
+ }
38
+ get(key) {
39
+ return this.contextData.get(key);
40
+ }
41
+ getEggObject(name, proto) {
42
+ if (this.destroyed) {
43
+ throw TeggError.create(`Can not read property \`${String(name)}\` because egg ctx has been destroyed`, 'read_after_ctx_destroyed');
44
+ }
45
+ const protoObjMap = this.eggObjectMap.get(proto.id);
46
+ if (!protoObjMap || !protoObjMap.has(name)) {
47
+ throw new Error(`EggObject ${String(proto.name)} not found`);
48
+ }
49
+ return protoObjMap.get(name);
50
+ }
51
+ async getOrCreateEggObject(name, proto) {
52
+ const protoObjMap = MapUtil.getOrStore(this.eggObjectMap, proto.id, new Map());
53
+ if (!protoObjMap.has(name)) {
54
+ const protoObjPromiseMap = MapUtil.getOrStore(this.eggObjectPromiseMap, proto.id, new Map());
55
+ if (!protoObjPromiseMap.has(name)) {
56
+ const objPromise = EggObjectFactory.createObject(name, proto);
57
+ protoObjPromiseMap.set(name, objPromise);
58
+ const obj = await objPromise;
59
+ protoObjPromiseMap.delete(name);
60
+ if (!protoObjPromiseMap.size) {
61
+ this.eggObjectPromiseMap.delete(proto.id);
62
+ }
63
+ protoObjMap.set(name, obj);
64
+ }
65
+ else {
66
+ await protoObjPromiseMap.get(name);
67
+ }
68
+ }
69
+ return protoObjMap.get(name);
70
+ }
71
+ async init(ctx) {
72
+ await EggContextLifecycleUtil.objectPreCreate(ctx, this);
73
+ for (const [name, proto] of this.protoToCreate) {
74
+ await this.getOrCreateEggObject(name, proto);
75
+ }
76
+ await EggContextLifecycleUtil.objectPostCreate(ctx, this);
77
+ }
78
+ iterateProtoToCreate() {
79
+ return this.protoToCreate.entries();
80
+ }
81
+ set(key, val) {
82
+ this.contextData.set(key, val);
83
+ }
84
+ }
85
+ EggContainerFactory.registerContainerGetMethod(ObjectInitType.CONTEXT, () => {
86
+ const ctx = ContextHandler.getContext();
87
+ if (!ctx) {
88
+ debug('can not get teggCtx from ContextHandler');
89
+ throw new Error('ctx is required');
90
+ }
91
+ return ctx;
92
+ });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFZ2dDb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0Fic3RyYWN0RWdnQ29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUUvRCxNQUFNLE9BQWdCLGtCQUFrQjtJQUM5QixXQUFXLEdBQThCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkQsYUFBYSxHQUF3QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9ELFlBQVksR0FBOEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwRSxtQkFBbUIsR0FBdUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwRixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBSTFCLGdCQUFnQixDQUFDLElBQVksRUFBRSxLQUFtQjtRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBK0I7UUFDM0MsTUFBTSx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsTUFBTSxJQUFJLEdBQWdCLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7WUFDckMsTUFBTSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFzQixFQUFFLEtBQW1CO1FBQ3RELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQ3JJLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQXNCLEVBQUUsS0FBbUI7UUFDcEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzlELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDO2dCQUM3QixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBQ0QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQStCO1FBQ3hDLE1BQU0sdUJBQXVCLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxLQUFLLE1BQU0sQ0FBRSxJQUFJLEVBQUUsS0FBSyxDQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsTUFBTSx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFvQixFQUFFLEdBQVE7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQzFFLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUMifQ==
@@ -0,0 +1,14 @@
1
+ import assert from 'node:assert';
2
+ export class ContextHandler {
3
+ static getContextCallback;
4
+ static runInContextCallback;
5
+ static getContext() {
6
+ assert(this.getContextCallback, 'getContextCallback not set');
7
+ return this.getContextCallback ? this.getContextCallback() : undefined;
8
+ }
9
+ static run(context, fn) {
10
+ assert(this.runInContextCallback, 'runInContextCallback not set');
11
+ return this.runInContextCallback(context, fn);
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvQ29udGV4dEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBTWpDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBc0M7SUFDL0QsTUFBTSxDQUFDLG9CQUFvQixDQUF1QjtJQUVsRCxNQUFNLENBQUMsVUFBVTtRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBVSxPQUEwQixFQUFFLEVBQW9CO1FBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGIn0=
@@ -1,3 +1,3 @@
1
1
  import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
2
2
  export const EggContextLifecycleUtil = new LifecycleUtil();
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ0NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksYUFBYSxFQUFpRCxDQUFDIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9FZ2dDb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBaUQsQ0FBQyJ9
@@ -1,3 +1,3 @@
1
1
  import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
2
2
  export const EggObjectLifecycleUtil = new LifecycleUtil();
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRWdnT2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBd0MsQ0FBQyJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0VnZ09iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHdEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxhQUFhLEVBQXdDLENBQUMifQ==
@@ -1,3 +1,3 @@
1
1
  import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
2
2
  export const LoadUnitInstanceLifecycleUtil = new LifecycleUtil();
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkxvYWRVbml0SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksYUFBYSxFQUFzRCxDQUFDIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9Mb2FkVW5pdEluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGFBQWEsRUFBc0QsQ0FBQyJ9
@@ -0,0 +1,5 @@
1
+ export * from './AbstractEggContext.ts';
2
+ export * from './ContextHandler.ts';
3
+ export * from './EggContext.ts';
4
+ export * from './EggObject.ts';
5
+ export * from './LoadUnitInstance.ts';
@@ -0,0 +1,6 @@
1
+ export * from "./AbstractEggContext.js";
2
+ export * from "./ContextHandler.js";
3
+ export * from "./EggContext.js";
4
+ export * from "./EggObject.js";
5
+ export * from "./LoadUnitInstance.js";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHVCQUF1QixDQUFDIn0=
package/package.json CHANGED
@@ -1,17 +1,14 @@
1
1
  {
2
2
  "name": "@eggjs/tegg-runtime",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.0.0-beta.10",
4
4
  "description": "tegg runtime",
5
5
  "type": "module",
6
6
  "exports": {
7
- ".": {
8
- "types": "./src/index.d.ts",
9
- "default": "./src/index.js"
10
- }
7
+ ".": "./dist/index.js",
8
+ "./package.json": "./package.json"
11
9
  },
12
10
  "files": [
13
- "src/**/*.js",
14
- "src/**/*.d.ts"
11
+ "dist"
15
12
  ],
16
13
  "keywords": [
17
14
  "egg",
@@ -19,15 +16,9 @@
19
16
  "runtime",
20
17
  "tegg"
21
18
  ],
22
- "scripts": {
23
- "clean": "tsc -b --clean",
24
- "tsc": "npm run clean && tsc -p ./tsconfig.json",
25
- "tsc:pub": "npm run tsc",
26
- "prepublishOnly": "npm run tsc"
27
- },
28
19
  "author": "killagu <killa123@126.com>",
29
20
  "license": "MIT",
30
- "homepage": "https://github.com/eggjs/tegg",
21
+ "homepage": "https://github.com/eggjs/tegg/tree/next/core/runtime",
31
22
  "bugs": {
32
23
  "url": "https://github.com/eggjs/tegg/issues"
33
24
  },
@@ -37,23 +28,32 @@
37
28
  "directory": "core/runtime"
38
29
  },
39
30
  "engines": {
40
- "node": ">=20.0.0"
31
+ "node": ">=22.18.0"
41
32
  },
42
33
  "dependencies": {
43
- "@eggjs/core-decorator": "^4.0.0-beta.1",
44
- "@eggjs/tegg-common-util": "^4.0.0-beta.1",
45
- "@eggjs/tegg-lifecycle": "^4.0.0-beta.1",
46
- "@eggjs/tegg-metadata": "^4.0.0-beta.1",
47
- "@eggjs/tegg-types": "^4.0.0-beta.1"
34
+ "@eggjs/tegg-common-util": "4.0.0-beta.10",
35
+ "@eggjs/core-decorator": "4.0.0-beta.10",
36
+ "@eggjs/tegg-lifecycle": "4.0.0-beta.10",
37
+ "@eggjs/tegg-types": "4.0.0-beta.10",
38
+ "@eggjs/tegg-metadata": "4.0.0-beta.10"
48
39
  },
49
40
  "devDependencies": {
50
- "@eggjs/tegg-loader": "^4.0.0-beta.1",
51
- "@types/node": "22",
52
- "ts-node": "10",
53
- "typescript": "5"
41
+ "@types/node": "^22.10.5",
42
+ "typescript": "^5.9.3",
43
+ "tsdown": "^0.15.6",
44
+ "unplugin-unused": "^0.5.3",
45
+ "@eggjs/module-test-util": "4.0.0-beta.4",
46
+ "@eggjs/tegg-loader": "4.0.0-beta.10"
54
47
  },
55
48
  "publishConfig": {
56
49
  "access": "public"
57
50
  },
58
- "gitHead": "79a22905272d6de7fe06152231dff65d213d9166"
59
- }
51
+ "main": "./dist/index.js",
52
+ "module": "./dist/index.js",
53
+ "types": "./dist/index.d.ts",
54
+ "scripts": {
55
+ "clean": "rimraf dist",
56
+ "build": "tsdown && rimraf dist && tsc -b --clean && tsc",
57
+ "typecheck": "tsc --noEmit"
58
+ }
59
+ }
@@ -1,77 +0,0 @@
1
- import { EggPrototypeFactory } from '@eggjs/tegg-metadata';
2
- import { PrototypeUtil } from '@eggjs/core-decorator';
3
- import { NameUtil } from '@eggjs/tegg-common-util';
4
- import { ContextHandler } from '../model/index.js';
5
- export class EggContainerFactory {
6
- static containerGetMethodMap = new Map();
7
- static ContextInitiatorClass;
8
- static registerContainerGetMethod(initType, method) {
9
- this.containerGetMethodMap.set(initType, method);
10
- }
11
- static getContainer(proto) {
12
- const method = this.containerGetMethodMap.get(proto.initType);
13
- if (!method) {
14
- throw new Error(`InitType ${proto.initType} has not register ContainerGetMethod`);
15
- }
16
- return method(proto);
17
- }
18
- /**
19
- * get or create egg object
20
- * If get singleton egg object in context,
21
- * will create context egg object for it.
22
- */
23
- static async getOrCreateEggObject(proto, name) {
24
- const container = this.getContainer(proto);
25
- name = name || proto.name;
26
- const obj = await container.getOrCreateEggObject(name, proto);
27
- const ctx = ContextHandler.getContext();
28
- if (ctx) {
29
- if (!EggContainerFactory.ContextInitiatorClass) {
30
- // Dependency cycle between ContextInitiator and EggContainerFactory
31
- const { ContextInitiator } = await import('../impl/ContextInitiator.js');
32
- EggContainerFactory.ContextInitiatorClass = ContextInitiator;
33
- }
34
- const initiator = EggContainerFactory.ContextInitiatorClass.createContextInitiator(ctx);
35
- await initiator.init(obj);
36
- }
37
- return obj;
38
- }
39
- /**
40
- * get or create egg object from the Class
41
- * If get singleton egg object in context,
42
- * will create context egg object for it.
43
- */
44
- static async getOrCreateEggObjectFromClazz(clazz, name, qualifiers) {
45
- let proto = PrototypeUtil.getClazzProto(clazz);
46
- if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
47
- const defaultName = NameUtil.getClassName(clazz);
48
- name = name ?? defaultName;
49
- proto = EggPrototypeFactory.instance.getPrototype(name, undefined, qualifiers);
50
- }
51
- else if (proto) {
52
- name = name ?? proto.name;
53
- }
54
- if (!proto) {
55
- throw new Error(`can not get proto for clazz ${clazz.name}`);
56
- }
57
- return await this.getOrCreateEggObject(proto, name);
58
- }
59
- /**
60
- * get or create egg object from the Name
61
- * If get singleton egg object in context,
62
- * will create context egg object for it.
63
- */
64
- static async getOrCreateEggObjectFromName(name, qualifiers) {
65
- const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, qualifiers);
66
- if (!proto) {
67
- throw new Error(`can not get proto for clazz ${String(name)}`);
68
- }
69
- return await this.getOrCreateEggObject(proto, name);
70
- }
71
- static getEggObject(proto, name) {
72
- const container = this.getContainer(proto);
73
- name = name || proto.name;
74
- return container.getEggObject(name, proto);
75
- }
76
- }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGFpbmVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ0NvbnRhaW5lckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbkQsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixNQUFNLENBQUMscUJBQXFCLEdBQWdELElBQUksR0FBRyxFQUFFLENBQUM7SUFDdEYsTUFBTSxDQUFDLHFCQUFxQixDQUE4QjtJQUVsRSxNQUFNLENBQUMsMEJBQTBCLENBQUMsUUFBNEIsRUFBRSxNQUEwQjtRQUN4RixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFtQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxDQUFDLFFBQVEsc0NBQXNDLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQW1CLEVBQUUsSUFBb0I7UUFDekUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMz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
@@ -1,46 +0,0 @@
1
- import { LoadUnitFactory } from '@eggjs/tegg-metadata';
2
- import { EggObjectImpl } from '../impl/index.js';
3
- import { EggObjectLifecycleUtil } from '../model/index.js';
4
- import { LoadUnitInstanceFactory } from './LoadUnitInstanceFactory.js';
5
- export class EggObjectFactory {
6
- static eggObjectMap = new Map();
7
- static eggObjectCreateMap = new Map();
8
- static registerEggObjectCreateMethod(protoClass, method) {
9
- this.eggObjectCreateMap.set(protoClass, method);
10
- }
11
- static getEggObjectCreateMethod(protoClass) {
12
- if (this.eggObjectCreateMap.has(protoClass)) {
13
- return this.eggObjectCreateMap.get(protoClass);
14
- }
15
- return EggObjectImpl.createObject;
16
- }
17
- static async createObject(name, proto) {
18
- const loadUnit = LoadUnitFactory.getLoadUnitById(proto.loadUnitId);
19
- if (!loadUnit) {
20
- throw new Error(`not found load unit ${proto.loadUnitId}`);
21
- }
22
- const loadUnitInstance = LoadUnitInstanceFactory.getLoadUnitInstance(loadUnit);
23
- const lifecycleContext = {
24
- loadUnit,
25
- loadUnitInstance: loadUnitInstance,
26
- };
27
- const method = this.getEggObjectCreateMethod(proto.constructor);
28
- const args = [name, proto, lifecycleContext];
29
- const obj = await Reflect.apply(method, null, args);
30
- this.eggObjectMap.set(obj.id, { obj, ctx: lifecycleContext });
31
- return obj;
32
- }
33
- static async destroyObject(obj) {
34
- const { ctx } = this.eggObjectMap.get(obj.id);
35
- try {
36
- if (obj.destroy) {
37
- await obj.destroy(ctx);
38
- }
39
- }
40
- finally {
41
- this.eggObjectMap.delete(obj.id);
42
- EggObjectLifecycleUtil.clearObjectLifecycle(obj);
43
- }
44
- }
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ09iamVjdEZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU92RSxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLEdBQStCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFDLGtCQUFrQixHQUErQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTNFLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxVQUE2QixFQUFFLE1BQTBCO1FBQ25HLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsVUFBNkI7UUFDbEUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQW1CLEVBQUUsS0FBbUI7UUFDaEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0UsTUFBTSxnQkFBZ0IsR0FBOEI7WUFDbEQsUUFBUTtZQUNSLGdCQUFnQixFQUFFLGdCQUFpQjtTQUNwQyxDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxXQUFnQyxDQUFDLENBQUM7UUFDckYsTUFBTSxJQUFJLEdBQUcsQ0FBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFFLENBQUM7UUFDL0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQWM7UUFDdkMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUMifQ==
@@ -1,57 +0,0 @@
1
- import { ObjectInitType } from '@eggjs/tegg-types';
2
- import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
3
- import { EggContainerFactory } from './EggContainerFactory.js';
4
- import { LoadUnitInstanceLifecycleUtil } from '../model/LoadUnitInstance.js';
5
- export class LoadUnitInstanceFactory {
6
- static creatorMap = new Map();
7
- static instanceMap = new Map();
8
- static registerLoadUnitInstanceClass(type, creator) {
9
- this.creatorMap.set(type, creator);
10
- }
11
- static async createLoadUnitInstance(loadUnit) {
12
- const creator = this.creatorMap.get(loadUnit.type);
13
- if (!creator) {
14
- throw new Error(`load unit instance type ${loadUnit.type} is not implement`);
15
- }
16
- const instanceId = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
17
- if (!this.instanceMap.has(instanceId)) {
18
- const ctx = {
19
- loadUnit,
20
- };
21
- const instance = creator(ctx);
22
- this.instanceMap.set(instanceId, { instance, ctx });
23
- if (instance.init) {
24
- // Module init method will create egg object
25
- // When inject objects, will find load unit instance
26
- // so should add instance to instanceMap first
27
- await instance.init(ctx);
28
- }
29
- }
30
- return this.instanceMap.get(instanceId).instance;
31
- }
32
- static getLoadUnitInstance(loadUnit) {
33
- const instanceId = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
34
- return this.instanceMap.get(instanceId)?.instance;
35
- }
36
- static async destroyLoadUnitInstance(loadUnitInstance) {
37
- const { ctx } = this.instanceMap.get(loadUnitInstance.id);
38
- await LoadUnitInstanceLifecycleUtil.objectPreDestroy(ctx, loadUnitInstance);
39
- if (loadUnitInstance.destroy) {
40
- await loadUnitInstance.destroy(ctx);
41
- }
42
- this.instanceMap.delete(loadUnitInstance.id);
43
- LoadUnitInstanceLifecycleUtil.clearObjectLifecycle(loadUnitInstance);
44
- }
45
- static getLoadUnitInstanceByProto(proto) {
46
- for (const { instance } of this.instanceMap.values()) {
47
- if (instance.loadUnit.containPrototype(proto)) {
48
- return instance;
49
- }
50
- }
51
- throw new Error(`not found load unit for proto ${proto.id}`);
52
- }
53
- }
54
- EggContainerFactory.registerContainerGetMethod(ObjectInitType.SINGLETON, (proto) => {
55
- return LoadUnitInstanceFactory.getLoadUnitInstanceByProto(proto);
56
- });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRJbnN0YW5jZUZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJMb2FkVW5pdEluc3RhbmNlRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFRbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUTdFLE1BQU0sT0FBTyx1QkFBdUI7SUFDMUIsTUFBTSxDQUFDLFVBQVUsR0FBc0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRixNQUFNLENBQUMsV0FBVyxHQUFzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTFFLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUF5QixFQUFFLE9BQWdDO1FBQzlGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxRQUFrQjtRQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsUUFBUSxDQUFDLElBQUksbUJBQW1CLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEdBQUcsR0FBcUM7Z0JBQzVDLFFBQVE7YUFDVCxDQUFDO1lBQ0YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQiw0Q0FBNEM7Z0JBQzVDLG9EQUFvRDtnQkFDcEQsOENBQThDO2dCQUM5QyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQWtCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsZ0JBQWtDO1FBQ3JFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUUsQ0FBQztRQUMzRCxNQUFNLDZCQUE2QixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVFLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLDZCQUE2QixDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFtQjtRQUNuRCxLQUFLLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7QUFHSCxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBbUIsRUFBRSxFQUFFO0lBQy9GLE9BQU8sdUJBQXVCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDLENBQUMifQ==
@@ -1,3 +0,0 @@
1
- export * from './EggContainerFactory.js';
2
- export * from './EggObjectFactory.js';
3
- export * from './LoadUnitInstanceFactory.js';
@@ -1,4 +0,0 @@
1
- export * from './EggContainerFactory.js';
2
- export * from './EggObjectFactory.js';
3
- export * from './LoadUnitInstanceFactory.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw4QkFBOEIsQ0FBQyJ9
@@ -1,37 +0,0 @@
1
- import { LoadUnitFactory } from '@eggjs/tegg-metadata';
2
- import { ContextObjectGraph } from './ContextObjectGraph.js';
3
- import { EggContainerFactory } from '../factory/index.js';
4
- const CONTEXT_INITIATOR = Symbol('EggContext#ContextInitiator');
5
- export class ContextInitiator {
6
- eggContext;
7
- eggObjectInitRecorder;
8
- constructor(eggContext) {
9
- this.eggContext = eggContext;
10
- this.eggObjectInitRecorder = new WeakMap();
11
- this.eggContext.set(CONTEXT_INITIATOR, this);
12
- }
13
- async init(obj) {
14
- if (this.eggObjectInitRecorder.get(obj) === true) {
15
- return;
16
- }
17
- this.eggObjectInitRecorder.set(obj, true);
18
- const injectObjectProtos = ContextObjectGraph.getContextProto(obj.proto);
19
- await Promise.all(injectObjectProtos.map(async (injectObject) => {
20
- const proto = injectObject.proto;
21
- const loadUnit = LoadUnitFactory.getLoadUnitById(proto.loadUnitId);
22
- if (!loadUnit) {
23
- throw new Error(`can not find load unit: ${proto.loadUnitId}`);
24
- }
25
- await EggContainerFactory.getOrCreateEggObject(proto, injectObject.objName);
26
- }));
27
- }
28
- static createContextInitiator(context) {
29
- let initiator = context.get(CONTEXT_INITIATOR);
30
- if (!initiator) {
31
- initiator = new ContextInitiator(context);
32
- context.set(CONTEXT_INITIATOR, initiator);
33
- }
34
- return initiator;
35
- }
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dEluaXRpYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNvbnRleHRJbml0aWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFFaEUsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLFVBQVUsQ0FBb0I7SUFDOUIscUJBQXFCLENBQThCO0lBRXBFLFlBQVksVUFBNkI7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBYztRQUN2QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQyxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsWUFBWSxFQUFDLEVBQUU7WUFDNUQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUNELE1BQU0sbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxPQUEwQjtRQUN0RCxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=