@eggjs/tegg-runtime 4.0.0-beta.3 → 4.0.0-beta.31

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 (58) 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/dist/impl/EggAlwaysNewObjectContainer.js +33 -0
  10. package/{src → dist}/impl/EggObjectImpl.js +13 -11
  11. package/dist/impl/EggObjectUtil.js +172 -0
  12. package/dist/impl/ModuleLoadUnitInstance.js +88 -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.d.ts +1 -1
  20. package/dist/model/EggContext.js +3 -0
  21. package/{src → dist}/model/EggObject.d.ts +1 -1
  22. package/dist/model/EggObject.js +3 -0
  23. package/{src → dist}/model/LoadUnitInstance.d.ts +1 -1
  24. package/dist/model/LoadUnitInstance.js +3 -0
  25. package/dist/model/index.d.ts +5 -0
  26. package/dist/model/index.js +6 -0
  27. package/package.json +29 -29
  28. package/src/factory/EggContainerFactory.js +0 -77
  29. package/src/factory/EggObjectFactory.js +0 -46
  30. package/src/factory/LoadUnitInstanceFactory.js +0 -57
  31. package/src/factory/index.d.ts +0 -3
  32. package/src/factory/index.js +0 -4
  33. package/src/impl/ContextInitiator.js +0 -37
  34. package/src/impl/ContextObjectGraph.js +0 -38
  35. package/src/impl/EggAlwaysNewObjectContainer.js +0 -32
  36. package/src/impl/EggObjectUtil.js +0 -172
  37. package/src/impl/ModuleLoadUnitInstance.js +0 -90
  38. package/src/impl/index.d.ts +0 -6
  39. package/src/impl/index.js +0 -7
  40. package/src/index.js +0 -5
  41. package/src/model/AbstractEggContext.js +0 -89
  42. package/src/model/ContextHandler.js +0 -14
  43. package/src/model/EggContext.js +0 -3
  44. package/src/model/EggObject.js +0 -3
  45. package/src/model/LoadUnitInstance.js +0 -3
  46. package/src/model/index.d.ts +0 -5
  47. package/src/model/index.js +0 -6
  48. /package/{src → dist}/factory/EggContainerFactory.d.ts +0 -0
  49. /package/{src → dist}/factory/EggObjectFactory.d.ts +0 -0
  50. /package/{src → dist}/factory/LoadUnitInstanceFactory.d.ts +0 -0
  51. /package/{src → dist}/impl/ContextInitiator.d.ts +0 -0
  52. /package/{src → dist}/impl/ContextObjectGraph.d.ts +0 -0
  53. /package/{src → dist}/impl/EggAlwaysNewObjectContainer.d.ts +0 -0
  54. /package/{src → dist}/impl/EggObjectImpl.d.ts +0 -0
  55. /package/{src → dist}/impl/EggObjectUtil.d.ts +0 -0
  56. /package/{src → dist}/impl/ModuleLoadUnitInstance.d.ts +0 -0
  57. /package/{src → dist}/model/AbstractEggContext.d.ts +0 -0
  58. /package/{src → dist}/model/ContextHandler.d.ts +0 -0
@@ -0,0 +1,88 @@
1
+ import { MapUtil } from '@eggjs/tegg-common-util';
2
+ import { IdenticalUtil } from '@eggjs/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([proto.name, proto]);
21
+ }
22
+ }
23
+ this.id = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
24
+ }
25
+ iterateProtoToCreate() {
26
+ return this.protoToCreateMap[Symbol.iterator]();
27
+ }
28
+ addProtoToCreate(name, proto) {
29
+ this.protoToCreateMap.push([name, proto]);
30
+ }
31
+ deleteProtoToCreate(name) {
32
+ const index = this.protoToCreateMap.findIndex(([protoName]) => protoName === name);
33
+ if (index !== -1) {
34
+ this.protoToCreateMap.splice(index, 1);
35
+ }
36
+ }
37
+ async init(ctx) {
38
+ await LoadUnitInstanceLifecycleUtil.objectPreCreate(ctx, this);
39
+ for (const [name, proto] of this.protoToCreateMap) {
40
+ await this.getOrCreateEggObject(name, proto);
41
+ }
42
+ await LoadUnitInstanceLifecycleUtil.objectPostCreate(ctx, this);
43
+ }
44
+ async destroy() {
45
+ const objs = [];
46
+ for (const protoObjMap of this.eggObjectMap.values()) {
47
+ for (const obj of protoObjMap.values()) {
48
+ objs.push(obj);
49
+ }
50
+ }
51
+ this.eggObjectMap.clear();
52
+ await Promise.all(objs.map(async (obj) => {
53
+ await EggObjectFactory.destroyObject(obj);
54
+ }));
55
+ }
56
+ async getOrCreateEggObject(name, proto) {
57
+ if (!this.loadUnit.containPrototype(proto)) {
58
+ throw new Error('load unit not contain proto');
59
+ }
60
+ const protoObjMap = MapUtil.getOrStore(this.eggObjectMap, proto.id, new Map());
61
+ if (!protoObjMap.has(name)) {
62
+ const protoObjPromiseMap = MapUtil.getOrStore(this.eggObjectPromiseMap, proto.id, new Map());
63
+ if (!protoObjPromiseMap.has(name)) {
64
+ const objPromise = EggObjectFactory.createObject(name, proto);
65
+ protoObjPromiseMap.set(name, objPromise);
66
+ const obj = await objPromise;
67
+ protoObjPromiseMap.delete(name);
68
+ protoObjMap.set(name, obj);
69
+ }
70
+ else {
71
+ await protoObjPromiseMap.get(name);
72
+ }
73
+ }
74
+ return protoObjMap.get(name);
75
+ }
76
+ getEggObject(name, proto) {
77
+ const protoObjMap = this.eggObjectMap.get(proto.id);
78
+ if (!protoObjMap || !protoObjMap.has(name)) {
79
+ throw new Error(`EggObject ${String(proto.name)} not found`);
80
+ }
81
+ return protoObjMap.get(name);
82
+ }
83
+ static createModuleLoadUnitInstance(ctx) {
84
+ return new ModuleLoadUnitInstance(ctx.loadUnit);
85
+ }
86
+ }
87
+ LoadUnitInstanceFactory.registerLoadUnitInstanceClass(EggLoadUnitType.MODULE, ModuleLoadUnitInstance.createModuleLoadUnitInstance);
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlTG9hZFVuaXRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL01vZHVsZUxvYWRVbml0SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBWXBFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdFLE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsUUFBUSxDQUFXO0lBQ25CLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBUztJQUNkLGdCQUFnQixHQUF1QyxFQUFFLENBQUM7SUFDMUQsWUFBWSxHQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BFLG1CQUFtQixHQUF1RCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVGLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNyRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFB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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/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFZ2dDb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0Fic3RyYWN0RWdnQ29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUUvRCxNQUFNLE9BQWdCLGtCQUFrQjtJQUM5QixXQUFXLEdBQThCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkQsYUFBYSxHQUF3QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9ELFlBQVksR0FBOEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwRSxtQkFBbUIsR0FBdUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwRixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBSTFCLGdCQUFnQixDQUFDLElBQVksRUFBRSxLQUFtQjtRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxD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
@@ -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 type { EggRuntimeContext, EggContextLifecycleContext } from '@eggjs/tegg-types';
2
- import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
2
+ import { LifecycleUtil } from '@eggjs/lifecycle';
3
3
  export declare const EggContextLifecycleUtil: LifecycleUtil<EggContextLifecycleContext, EggRuntimeContext>;
@@ -0,0 +1,3 @@
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
+ export const EggContextLifecycleUtil = new LifecycleUtil();
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9FZ2dDb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FDbEMsSUFBSSxhQUFhLEVBQUUsQ0FBQyJ9
@@ -1,3 +1,3 @@
1
- import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
2
  import type { EggObject, EggObjectLifeCycleContext } from '@eggjs/tegg-types';
3
3
  export declare const EggObjectLifecycleUtil: LifecycleUtil<EggObjectLifeCycleContext, EggObject>;
@@ -0,0 +1,3 @@
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
+ export const EggObjectLifecycleUtil = new LifecycleUtil();
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0VnZ09iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXdELElBQUksYUFBYSxFQUFFLENBQUMifQ==
@@ -1,3 +1,3 @@
1
1
  import type { LoadUnitInstance, LoadUnitInstanceLifecycleContext } from '@eggjs/tegg-types';
2
- import { LifecycleUtil } from '@eggjs/tegg-lifecycle';
2
+ import { LifecycleUtil } from '@eggjs/lifecycle';
3
3
  export declare const LoadUnitInstanceLifecycleUtil: LifecycleUtil<LoadUnitInstanceLifecycleContext, LoadUnitInstance>;
@@ -0,0 +1,3 @@
1
+ import { LifecycleUtil } from '@eggjs/lifecycle';
2
+ export const LoadUnitInstanceLifecycleUtil = new LifecycleUtil();
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9Mb2FkVW5pdEluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxhQUFhLEVBQUUsQ0FBQyJ9
@@ -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.3",
3
+ "version": "4.0.0-beta.31",
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,41 +16,44 @@
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/egg/tree/next/tegg/core/runtime",
31
22
  "bugs": {
32
- "url": "https://github.com/eggjs/tegg/issues"
23
+ "url": "https://github.com/eggjs/egg/issues"
33
24
  },
34
25
  "repository": {
35
26
  "type": "git",
36
- "url": "git@github.com:eggjs/tegg.git",
37
- "directory": "core/runtime"
27
+ "url": "git@github.com:eggjs/egg.git",
28
+ "directory": "tegg/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.3",
44
- "@eggjs/tegg-common-util": "^4.0.0-beta.3",
45
- "@eggjs/tegg-lifecycle": "^4.0.0-beta.3",
46
- "@eggjs/tegg-metadata": "^4.0.0-beta.3",
47
- "@eggjs/tegg-types": "^4.0.0-beta.3"
34
+ "@eggjs/core-decorator": "4.0.0-beta.31",
35
+ "@eggjs/lifecycle": "4.0.0-beta.31",
36
+ "@eggjs/tegg-common-util": "4.0.0-beta.31",
37
+ "@eggjs/metadata": "4.0.0-beta.31",
38
+ "@eggjs/tegg-types": "4.0.0-beta.31"
48
39
  },
49
40
  "devDependencies": {
50
- "@eggjs/tegg-loader": "^4.0.0-beta.3",
51
- "@types/node": "22",
52
- "ts-node": "10",
53
- "typescript": "5"
41
+ "@types/node": "^24.9.1",
42
+ "typescript": "^5.9.3",
43
+ "tsdown": "0.15.10",
44
+ "unplugin-unused": "^0.5.4",
45
+ "@eggjs/module-test-util": "4.0.0-beta.29",
46
+ "@eggjs/tegg-loader": "4.0.0-beta.31"
54
47
  },
55
48
  "publishConfig": {
56
49
  "access": "public"
57
50
  },
58
- "gitHead": "6b84b0275fd728a4973746a5341236fe0481a33e"
59
- }
51
+ "main": "./dist/index.js",
52
+ "module": "./dist/index.js",
53
+ "types": "./dist/index.d.ts",
54
+ "scripts": {
55
+ "clean": "rimraf dist *.tsbuildinfo",
56
+ "build": "tsdown && npm run clean && tsc -p tsconfig.build.json",
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=