@eggjs/tegg-runtime 4.0.0-beta.34 → 4.0.0-beta.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/factory/EggContainerFactory.d.ts +29 -25
- package/dist/factory/EggContainerFactory.js +79 -89
- package/dist/factory/EggObjectFactory.d.ts +14 -11
- package/dist/factory/EggObjectFactory.js +47 -44
- package/dist/factory/LoadUnitInstanceFactory.d.ts +13 -10
- package/dist/factory/LoadUnitInstanceFactory.js +45 -53
- package/dist/factory/index.d.ts +3 -3
- package/dist/factory/index.js +5 -4
- package/dist/impl/ContextInitiator.d.ts +11 -7
- package/dist/impl/ContextInitiator.js +35 -36
- package/dist/impl/ContextObjectGraph.d.ts +9 -5
- package/dist/impl/ContextObjectGraph.js +36 -38
- package/dist/impl/EggAlwaysNewObjectContainer.d.ts +16 -12
- package/dist/impl/EggAlwaysNewObjectContainer.js +27 -31
- package/dist/impl/EggObjectImpl.d.ts +20 -16
- package/dist/impl/EggObjectImpl.js +121 -177
- package/dist/impl/EggObjectUtil.d.ts +10 -6
- package/dist/impl/EggObjectUtil.js +143 -171
- package/dist/impl/ModuleLoadUnitInstance.d.ts +21 -17
- package/dist/impl/ModuleLoadUnitInstance.js +71 -86
- package/dist/impl/index.d.ts +6 -6
- package/dist/impl/index.js +8 -7
- package/dist/index.d.ts +20 -5
- package/dist/index.js +21 -5
- package/dist/model/AbstractEggContext.d.ts +21 -17
- package/dist/model/AbstractEggContext.js +77 -88
- package/dist/model/ContextHandler.d.ts +10 -7
- package/dist/model/ContextHandler.js +18 -14
- package/dist/model/EggContext.d.ts +7 -3
- package/dist/model/EggContext.js +7 -3
- package/dist/model/EggObject.d.ts +7 -3
- package/dist/model/EggObject.js +7 -3
- package/dist/model/LoadUnitInstance.d.ts +7 -3
- package/dist/model/LoadUnitInstance.js +7 -3
- package/dist/model/index.d.ts +5 -5
- package/dist/model/index.js +7 -6
- package/package.json +29 -33
|
@@ -1,180 +1,124 @@
|
|
|
1
|
-
import { LoadUnitFactory } from '@eggjs/metadata';
|
|
2
|
-
import { EggObjectStatus, InjectType, ObjectInitType } from '@eggjs/tegg-types';
|
|
3
|
-
import { IdenticalUtil } from '@eggjs/lifecycle';
|
|
4
|
-
import { EggObjectLifecycleUtil } from "../model/EggObject.js";
|
|
5
1
|
import { ContextHandler } from "../model/ContextHandler.js";
|
|
6
2
|
import { EggContainerFactory } from "../factory/EggContainerFactory.js";
|
|
3
|
+
import { EggObjectLifecycleUtil } from "../model/EggObject.js";
|
|
7
4
|
import { EggObjectUtil } from "./EggObjectUtil.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const initMethod = EggObjectLifecycleUtil.getLifecycleHook('init', this.proto) ?? 'init';
|
|
129
|
-
if (objLifecycleHook[initMethod]) {
|
|
130
|
-
await objLifecycleHook[initMethod](ctx, this);
|
|
131
|
-
}
|
|
132
|
-
this.status = EggObjectStatus.READY;
|
|
133
|
-
}
|
|
134
|
-
catch (e) {
|
|
135
|
-
this.status = EggObjectStatus.ERROR;
|
|
136
|
-
throw e;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
async init(ctx) {
|
|
140
|
-
if (this.proto.injectType === InjectType.CONSTRUCTOR) {
|
|
141
|
-
await this.initWithInjectConstructor(ctx);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
await this.initWithInjectProperty(ctx);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
async destroy(ctx) {
|
|
148
|
-
if (this.status === EggObjectStatus.READY) {
|
|
149
|
-
this.status = EggObjectStatus.DESTROYING;
|
|
150
|
-
// global hook
|
|
151
|
-
await EggObjectLifecycleUtil.objectPreDestroy(ctx, this);
|
|
152
|
-
// self hook
|
|
153
|
-
const objLifecycleHook = this._obj;
|
|
154
|
-
const preDestroyMethod = EggObjectLifecycleUtil.getLifecycleHook('preDestroy', this.proto) ?? 'preDestroy';
|
|
155
|
-
if (objLifecycleHook[preDestroyMethod]) {
|
|
156
|
-
await objLifecycleHook[preDestroyMethod](ctx, this);
|
|
157
|
-
}
|
|
158
|
-
const destroyMethod = EggObjectLifecycleUtil.getLifecycleHook('destroy', this.proto) ?? 'destroy';
|
|
159
|
-
if (objLifecycleHook[destroyMethod]) {
|
|
160
|
-
await objLifecycleHook[destroyMethod](ctx, this);
|
|
161
|
-
}
|
|
162
|
-
this.status = EggObjectStatus.DESTROYED;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
injectProperty(name, descriptor) {
|
|
166
|
-
Reflect.defineProperty(this._obj, name, descriptor);
|
|
167
|
-
}
|
|
168
|
-
get obj() {
|
|
169
|
-
return this._obj;
|
|
170
|
-
}
|
|
171
|
-
get isReady() {
|
|
172
|
-
return this.status === EggObjectStatus.READY;
|
|
173
|
-
}
|
|
174
|
-
static async createObject(name, proto, lifecycleContext) {
|
|
175
|
-
const obj = new EggObjectImpl(name, proto);
|
|
176
|
-
await obj.init(lifecycleContext);
|
|
177
|
-
return obj;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0SW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL0VnZ09iamVjdEltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE1BQU0sT0FBTyxhQUFhO0lBQ2hCLElBQUksQ0FBUztJQUNiLE1BQU0sR0FBb0IsZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUVqRCxLQUFLLENBQWU7SUFDcEIsSUFBSSxDQUFnQjtJQUNwQixFQUFFLENBQVM7SUFFcEIsWUFBWSxJQUFtQixFQUFFLEtBQW1CO1FBQ2xELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsR0FBOEI7UUFDekQsZ0JBQWdCO1FBQ2hCLGtDQUFrQztRQUNsQyxpQkFBaUI7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
|
|
5
|
+
import { LoadUnitFactory } from "@eggjs/metadata";
|
|
6
|
+
import { EggObjectStatus, InjectType, ObjectInitType } from "@eggjs/tegg-types";
|
|
7
|
+
import { IdenticalUtil } from "@eggjs/lifecycle";
|
|
8
|
+
|
|
9
|
+
//#region src/impl/EggObjectImpl.ts
|
|
10
|
+
var EggObjectImpl = class EggObjectImpl {
|
|
11
|
+
_obj;
|
|
12
|
+
status = EggObjectStatus.PENDING;
|
|
13
|
+
proto;
|
|
14
|
+
name;
|
|
15
|
+
id;
|
|
16
|
+
constructor(name, proto) {
|
|
17
|
+
this.name = name;
|
|
18
|
+
this.proto = proto;
|
|
19
|
+
const ctx = ContextHandler.getContext();
|
|
20
|
+
this.id = IdenticalUtil.createObjectId(this.proto.id, ctx?.id);
|
|
21
|
+
}
|
|
22
|
+
async initWithInjectProperty(ctx) {
|
|
23
|
+
try {
|
|
24
|
+
this._obj = this.proto.constructEggObject();
|
|
25
|
+
const objLifecycleHook = this._obj;
|
|
26
|
+
await EggObjectLifecycleUtil.objectPreCreate(ctx, this);
|
|
27
|
+
const postConstructMethod = EggObjectLifecycleUtil.getLifecycleHook("postConstruct", this.proto) ?? "postConstruct";
|
|
28
|
+
if (objLifecycleHook[postConstructMethod]) await objLifecycleHook[postConstructMethod](ctx, this);
|
|
29
|
+
const preInjectMethod = EggObjectLifecycleUtil.getLifecycleHook("preInject", this.proto) ?? "preInject";
|
|
30
|
+
if (objLifecycleHook[preInjectMethod]) await objLifecycleHook[preInjectMethod](ctx, this);
|
|
31
|
+
await Promise.all(this.proto.injectObjects.map(async (injectObject) => {
|
|
32
|
+
const proto = injectObject.proto;
|
|
33
|
+
if (!LoadUnitFactory.getLoadUnitById(proto.loadUnitId)) throw new Error(`can not find load unit: ${proto.loadUnitId}`);
|
|
34
|
+
if (this.proto.initType !== ObjectInitType.CONTEXT && injectObject.proto.initType === ObjectInitType.CONTEXT) this.injectProperty(injectObject.refName, EggObjectUtil.contextEggObjectGetProperty(proto, injectObject.objName));
|
|
35
|
+
else {
|
|
36
|
+
const injectObj = await EggContainerFactory.getOrCreateEggObject(proto, injectObject.objName);
|
|
37
|
+
this.injectProperty(injectObject.refName, EggObjectUtil.eggObjectGetProperty(injectObj));
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
await EggObjectLifecycleUtil.objectPostCreate(ctx, this);
|
|
41
|
+
const postInjectMethod = EggObjectLifecycleUtil.getLifecycleHook("postInject", this.proto) ?? "postInject";
|
|
42
|
+
if (objLifecycleHook[postInjectMethod]) await objLifecycleHook[postInjectMethod](ctx, this);
|
|
43
|
+
const initMethod = EggObjectLifecycleUtil.getLifecycleHook("init", this.proto) ?? "init";
|
|
44
|
+
if (objLifecycleHook[initMethod]) await objLifecycleHook[initMethod](ctx, this);
|
|
45
|
+
this.status = EggObjectStatus.READY;
|
|
46
|
+
} catch (e) {
|
|
47
|
+
this.status = EggObjectStatus.ERROR;
|
|
48
|
+
throw e;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async initWithInjectConstructor(ctx) {
|
|
52
|
+
try {
|
|
53
|
+
const constructArgs = await Promise.all(this.proto.injectObjects.map(async (injectObject) => {
|
|
54
|
+
const proto = injectObject.proto;
|
|
55
|
+
if (!LoadUnitFactory.getLoadUnitById(proto.loadUnitId)) throw new Error(`can not find load unit: ${proto.loadUnitId}`);
|
|
56
|
+
if (this.proto.initType !== ObjectInitType.CONTEXT && injectObject.proto.initType === ObjectInitType.CONTEXT) return EggObjectUtil.contextEggObjectProxy(proto, injectObject.objName);
|
|
57
|
+
const injectObj = await EggContainerFactory.getOrCreateEggObject(proto, injectObject.objName);
|
|
58
|
+
return EggObjectUtil.eggObjectProxy(injectObj);
|
|
59
|
+
}));
|
|
60
|
+
if (typeof this.proto.multiInstanceConstructorIndex !== "undefined") {
|
|
61
|
+
const qualifiers = this.proto.multiInstanceConstructorAttributes?.map((t) => {
|
|
62
|
+
return {
|
|
63
|
+
attribute: t,
|
|
64
|
+
value: this.proto.getQualifier(t)
|
|
65
|
+
};
|
|
66
|
+
})?.filter((t) => typeof t.value !== "undefined") ?? [];
|
|
67
|
+
const objInfo = {
|
|
68
|
+
name: this.proto.name,
|
|
69
|
+
qualifiers
|
|
70
|
+
};
|
|
71
|
+
constructArgs.splice(this.proto.multiInstanceConstructorIndex, 0, objInfo);
|
|
72
|
+
}
|
|
73
|
+
this._obj = this.proto.constructEggObject(...constructArgs);
|
|
74
|
+
const objLifecycleHook = this._obj;
|
|
75
|
+
await EggObjectLifecycleUtil.objectPreCreate(ctx, this);
|
|
76
|
+
const postConstructMethod = EggObjectLifecycleUtil.getLifecycleHook("postConstruct", this.proto) ?? "postConstruct";
|
|
77
|
+
if (objLifecycleHook[postConstructMethod]) await objLifecycleHook[postConstructMethod](ctx, this);
|
|
78
|
+
const preInjectMethod = EggObjectLifecycleUtil.getLifecycleHook("preInject", this.proto) ?? "preInject";
|
|
79
|
+
if (objLifecycleHook[preInjectMethod]) await objLifecycleHook[preInjectMethod](ctx, this);
|
|
80
|
+
await EggObjectLifecycleUtil.objectPostCreate(ctx, this);
|
|
81
|
+
const postInjectMethod = EggObjectLifecycleUtil.getLifecycleHook("postInject", this.proto) ?? "postInject";
|
|
82
|
+
if (objLifecycleHook[postInjectMethod]) await objLifecycleHook[postInjectMethod](ctx, this);
|
|
83
|
+
const initMethod = EggObjectLifecycleUtil.getLifecycleHook("init", this.proto) ?? "init";
|
|
84
|
+
if (objLifecycleHook[initMethod]) await objLifecycleHook[initMethod](ctx, this);
|
|
85
|
+
this.status = EggObjectStatus.READY;
|
|
86
|
+
} catch (e) {
|
|
87
|
+
this.status = EggObjectStatus.ERROR;
|
|
88
|
+
throw e;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async init(ctx) {
|
|
92
|
+
if (this.proto.injectType === InjectType.CONSTRUCTOR) await this.initWithInjectConstructor(ctx);
|
|
93
|
+
else await this.initWithInjectProperty(ctx);
|
|
94
|
+
}
|
|
95
|
+
async destroy(ctx) {
|
|
96
|
+
if (this.status === EggObjectStatus.READY) {
|
|
97
|
+
this.status = EggObjectStatus.DESTROYING;
|
|
98
|
+
await EggObjectLifecycleUtil.objectPreDestroy(ctx, this);
|
|
99
|
+
const objLifecycleHook = this._obj;
|
|
100
|
+
const preDestroyMethod = EggObjectLifecycleUtil.getLifecycleHook("preDestroy", this.proto) ?? "preDestroy";
|
|
101
|
+
if (objLifecycleHook[preDestroyMethod]) await objLifecycleHook[preDestroyMethod](ctx, this);
|
|
102
|
+
const destroyMethod = EggObjectLifecycleUtil.getLifecycleHook("destroy", this.proto) ?? "destroy";
|
|
103
|
+
if (objLifecycleHook[destroyMethod]) await objLifecycleHook[destroyMethod](ctx, this);
|
|
104
|
+
this.status = EggObjectStatus.DESTROYED;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
injectProperty(name, descriptor) {
|
|
108
|
+
Reflect.defineProperty(this._obj, name, descriptor);
|
|
109
|
+
}
|
|
110
|
+
get obj() {
|
|
111
|
+
return this._obj;
|
|
112
|
+
}
|
|
113
|
+
get isReady() {
|
|
114
|
+
return this.status === EggObjectStatus.READY;
|
|
115
|
+
}
|
|
116
|
+
static async createObject(name, proto, lifecycleContext) {
|
|
117
|
+
const obj = new EggObjectImpl(name, proto);
|
|
118
|
+
await obj.init(lifecycleContext);
|
|
119
|
+
return obj;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
//#endregion
|
|
124
|
+
export { EggObjectImpl };
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { EggObject, EggPrototype } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/impl/EggObjectUtil.d.ts
|
|
4
|
+
declare class EggObjectUtil {
|
|
5
|
+
static eggObjectGetProperty(eggObject: EggObject): PropertyDescriptor;
|
|
6
|
+
static contextEggObjectGetProperty(proto: EggPrototype, objName: PropertyKey): PropertyDescriptor;
|
|
7
|
+
static eggObjectProxy(eggObject: EggObject): PropertyDescriptor;
|
|
8
|
+
static contextEggObjectProxy(proto: EggPrototype, objName: PropertyKey): PropertyDescriptor;
|
|
7
9
|
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { EggObjectUtil };
|