@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.
- package/README.md +12 -0
- package/dist/factory/EggContainerFactory.js +90 -0
- package/dist/factory/EggObjectFactory.js +46 -0
- package/dist/factory/LoadUnitInstanceFactory.js +57 -0
- package/dist/factory/index.d.ts +3 -0
- package/dist/factory/index.js +4 -0
- package/dist/impl/ContextInitiator.js +37 -0
- package/dist/impl/ContextObjectGraph.js +38 -0
- package/dist/impl/EggAlwaysNewObjectContainer.js +33 -0
- package/{src → dist}/impl/EggObjectImpl.js +13 -11
- package/dist/impl/EggObjectUtil.js +172 -0
- package/dist/impl/ModuleLoadUnitInstance.js +88 -0
- package/dist/impl/index.d.ts +6 -0
- package/dist/impl/index.js +7 -0
- package/{src → dist}/index.d.ts +3 -3
- package/dist/index.js +5 -0
- package/dist/model/AbstractEggContext.js +93 -0
- package/dist/model/ContextHandler.js +14 -0
- package/{src → dist}/model/EggContext.d.ts +1 -1
- package/dist/model/EggContext.js +3 -0
- package/{src → dist}/model/EggObject.d.ts +1 -1
- package/dist/model/EggObject.js +3 -0
- package/{src → dist}/model/LoadUnitInstance.d.ts +1 -1
- package/dist/model/LoadUnitInstance.js +3 -0
- package/dist/model/index.d.ts +5 -0
- package/dist/model/index.js +6 -0
- package/package.json +29 -29
- package/src/factory/EggContainerFactory.js +0 -77
- package/src/factory/EggObjectFactory.js +0 -46
- package/src/factory/LoadUnitInstanceFactory.js +0 -57
- package/src/factory/index.d.ts +0 -3
- package/src/factory/index.js +0 -4
- package/src/impl/ContextInitiator.js +0 -37
- package/src/impl/ContextObjectGraph.js +0 -38
- package/src/impl/EggAlwaysNewObjectContainer.js +0 -32
- package/src/impl/EggObjectUtil.js +0 -172
- package/src/impl/ModuleLoadUnitInstance.js +0 -90
- package/src/impl/index.d.ts +0 -6
- package/src/impl/index.js +0 -7
- package/src/index.js +0 -5
- package/src/model/AbstractEggContext.js +0 -89
- package/src/model/ContextHandler.js +0 -14
- package/src/model/EggContext.js +0 -3
- package/src/model/EggObject.js +0 -3
- package/src/model/LoadUnitInstance.js +0 -3
- package/src/model/index.d.ts +0 -5
- package/src/model/index.js +0 -6
- /package/{src → dist}/factory/EggContainerFactory.d.ts +0 -0
- /package/{src → dist}/factory/EggObjectFactory.d.ts +0 -0
- /package/{src → dist}/factory/LoadUnitInstanceFactory.d.ts +0 -0
- /package/{src → dist}/impl/ContextInitiator.d.ts +0 -0
- /package/{src → dist}/impl/ContextObjectGraph.d.ts +0 -0
- /package/{src → dist}/impl/EggAlwaysNewObjectContainer.d.ts +0 -0
- /package/{src → dist}/impl/EggObjectImpl.d.ts +0 -0
- /package/{src → dist}/impl/EggObjectUtil.d.ts +0 -0
- /package/{src → dist}/impl/ModuleLoadUnitInstance.d.ts +0 -0
- /package/{src → dist}/model/AbstractEggContext.d.ts +0 -0
- /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,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
|
package/{src → dist}/index.d.ts
RENAMED
|
@@ -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.
|
|
4
|
-
export * from './impl/index.
|
|
5
|
-
export * from './factory/index.
|
|
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/
|
|
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/
|
|
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/
|
|
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,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
|
+
"version": "4.0.0-beta.31",
|
|
4
4
|
"description": "tegg runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
|
-
".":
|
|
8
|
-
|
|
9
|
-
"default": "./src/index.js"
|
|
10
|
-
}
|
|
7
|
+
".": "./dist/index.js",
|
|
8
|
+
"./package.json": "./package.json"
|
|
11
9
|
},
|
|
12
10
|
"files": [
|
|
13
|
-
"
|
|
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/
|
|
23
|
+
"url": "https://github.com/eggjs/egg/issues"
|
|
33
24
|
},
|
|
34
25
|
"repository": {
|
|
35
26
|
"type": "git",
|
|
36
|
-
"url": "git@github.com:eggjs/
|
|
37
|
-
"directory": "core/runtime"
|
|
27
|
+
"url": "git@github.com:eggjs/egg.git",
|
|
28
|
+
"directory": "tegg/core/runtime"
|
|
38
29
|
},
|
|
39
30
|
"engines": {
|
|
40
|
-
"node": ">=
|
|
31
|
+
"node": ">=22.18.0"
|
|
41
32
|
},
|
|
42
33
|
"dependencies": {
|
|
43
|
-
"@eggjs/core-decorator": "
|
|
44
|
-
"@eggjs/
|
|
45
|
-
"@eggjs/tegg-
|
|
46
|
-
"@eggjs/
|
|
47
|
-
"@eggjs/tegg-types": "
|
|
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
|
-
"@
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
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
|
-
"
|
|
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==
|
package/src/factory/index.d.ts
DELETED
package/src/factory/index.js
DELETED
|
@@ -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=
|