@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
package/README.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# `@eggjs/tegg-runtime`
|
|
2
2
|
|
|
3
|
+
[![NPM version][npm-image]][npm-url]
|
|
4
|
+
[![Known Vulnerabilities][snyk-image]][snyk-url]
|
|
5
|
+
[![npm download][download-image]][download-url]
|
|
6
|
+
[](https://nodejs.org/en/download/)
|
|
7
|
+
|
|
8
|
+
[npm-image]: https://img.shields.io/npm/v/@eggjs/tegg-runtime.svg?style=flat-square
|
|
9
|
+
[npm-url]: https://npmjs.org/package/@eggjs/tegg-runtime
|
|
10
|
+
[snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-runtime/badge.svg?style=flat-square
|
|
11
|
+
[snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-runtime
|
|
12
|
+
[download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-runtime.svg?style=flat-square
|
|
13
|
+
[download-url]: https://npmjs.org/package/@eggjs/tegg-runtime
|
|
14
|
+
|
|
3
15
|
# Usage
|
|
4
16
|
|
|
5
17
|
This is an internal tegg library, you probably shouldn't use it directly.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import { EggPrototypeFactory } from '@eggjs/metadata';
|
|
3
|
+
import { PrototypeUtil } from '@eggjs/core-decorator';
|
|
4
|
+
import { NameUtil } from '@eggjs/tegg-common-util';
|
|
5
|
+
import { ContextHandler } from "../model/ContextHandler.js";
|
|
6
|
+
const debug = debuglog('tegg/core/runtime/EggContainerFactory');
|
|
7
|
+
export class EggContainerFactory {
|
|
8
|
+
static containerGetMethodMap = new Map();
|
|
9
|
+
static ContextInitiatorClass;
|
|
10
|
+
static registerContainerGetMethod(initType, method) {
|
|
11
|
+
if (debug.enabled) {
|
|
12
|
+
debug('registerContainerGetMethod %o %o, exists: %s', initType, method.toString(), this.containerGetMethodMap.has(initType));
|
|
13
|
+
}
|
|
14
|
+
this.containerGetMethodMap.set(initType, method);
|
|
15
|
+
}
|
|
16
|
+
static getContainer(proto) {
|
|
17
|
+
const method = this.containerGetMethodMap.get(proto.initType);
|
|
18
|
+
if (!method) {
|
|
19
|
+
throw new Error(`InitType ${proto.initType} has not register ContainerGetMethod`);
|
|
20
|
+
}
|
|
21
|
+
return method(proto);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* get or create egg object
|
|
25
|
+
* If get singleton egg object in context,
|
|
26
|
+
* will create context egg object for it.
|
|
27
|
+
*/
|
|
28
|
+
static async getOrCreateEggObject(proto, name) {
|
|
29
|
+
const container = this.getContainer(proto);
|
|
30
|
+
name = name || proto.name;
|
|
31
|
+
const obj = await container.getOrCreateEggObject(name, proto);
|
|
32
|
+
const ctx = ContextHandler.getContext();
|
|
33
|
+
if (ctx) {
|
|
34
|
+
if (!EggContainerFactory.ContextInitiatorClass) {
|
|
35
|
+
// Dependency cycle between ContextInitiator and EggContainerFactory
|
|
36
|
+
const { ContextInitiator } = await import('../impl/ContextInitiator.js');
|
|
37
|
+
debug('import ContextInitiator to fix dependency cycle');
|
|
38
|
+
EggContainerFactory.ContextInitiatorClass = ContextInitiator;
|
|
39
|
+
}
|
|
40
|
+
const initiator = EggContainerFactory.ContextInitiatorClass.createContextInitiator(ctx);
|
|
41
|
+
await initiator.init(obj);
|
|
42
|
+
debug('getOrCreateEggObject with context eggObject:%o, from proto:%o, name:%s', obj.name, proto.name, name);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
debug('getOrCreateEggObject without context, get eggObject:%o, from proto:%o, name:%s', obj.name, proto.name, name);
|
|
46
|
+
}
|
|
47
|
+
return obj;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* get or create egg object from the Class
|
|
51
|
+
* If get singleton egg object in context,
|
|
52
|
+
* will create context egg object for it.
|
|
53
|
+
*/
|
|
54
|
+
static async getOrCreateEggObjectFromClazz(clazz, name, qualifiers) {
|
|
55
|
+
let proto = PrototypeUtil.getClazzProto(clazz);
|
|
56
|
+
const isMultiInstance = PrototypeUtil.isEggMultiInstancePrototype(clazz);
|
|
57
|
+
debug('getOrCreateEggObjectFromClazz:%o, isMultiInstance:%s, proto:%o', clazz.name, isMultiInstance, !!proto);
|
|
58
|
+
if (isMultiInstance) {
|
|
59
|
+
const defaultName = NameUtil.getClassName(clazz);
|
|
60
|
+
name = name ?? defaultName;
|
|
61
|
+
proto = EggPrototypeFactory.instance.getPrototype(name, undefined, qualifiers);
|
|
62
|
+
}
|
|
63
|
+
else if (proto) {
|
|
64
|
+
name = name ?? proto.name;
|
|
65
|
+
}
|
|
66
|
+
if (!proto) {
|
|
67
|
+
debug('getOrCreateEggObjectFromClazz:%o not found, eggObjectName:%s, qualifiers:%o, proto:%o, isMultiInstance:%s', clazz.name, name, qualifiers, proto, isMultiInstance);
|
|
68
|
+
throw new Error(`can not get proto for clazz ${clazz.name}`);
|
|
69
|
+
}
|
|
70
|
+
return await this.getOrCreateEggObject(proto, name);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* get or create egg object from the Name
|
|
74
|
+
* If get singleton egg object in context,
|
|
75
|
+
* will create context egg object for it.
|
|
76
|
+
*/
|
|
77
|
+
static async getOrCreateEggObjectFromName(name, qualifiers) {
|
|
78
|
+
const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, qualifiers);
|
|
79
|
+
if (!proto) {
|
|
80
|
+
throw new Error(`can not get proto for clazz ${String(name)}`);
|
|
81
|
+
}
|
|
82
|
+
return await this.getOrCreateEggObject(proto, name);
|
|
83
|
+
}
|
|
84
|
+
static getEggObject(proto, name) {
|
|
85
|
+
const container = this.getContainer(proto);
|
|
86
|
+
name = name || proto.name;
|
|
87
|
+
return container.getEggObject(name, proto);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGFpbmVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3J5L0VnZ0NvbnRhaW5lckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVl0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsdUNBQXVDLENBQUMsQ0FBQztBQUVoRSxNQUFNLE9BQU8sbUJBQW1CO0lBQ3RCLE1BQU0sQ0FBQyxxQkFBcUIsR0FBZ0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN0RixNQUFNLENBQUMscUJBQXFCLENBQThCO0lBRWxFLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxRQUE0QixFQUFFLE1BQTBCO1FBQ3hGLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FDSCw4Q0FBOEMsRUFDOUMsUUFBUSxFQUNSLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FDekMsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFtQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxJ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
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { LoadUnitFactory } from '@eggjs/metadata';
|
|
2
|
+
import { EggObjectImpl } from "../impl/EggObjectImpl.js";
|
|
3
|
+
import { EggObjectLifecycleUtil } from "../model/EggObject.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3J5L0VnZ09iamVjdEZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU92RSxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLEdBQStCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFDLGtCQUFrQixHQUErQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTNFLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxVQUE2QixFQUFFLE1BQTBCO1FBQ25HLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsVUFBNkI7UUFDbEUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQW1CLEVBQUUsS0FBbUI7UUFDaEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0UsTUFBTSxnQkFBZ0IsR0FBOEI7WUFDbEQsUUFBUTtZQUNSLGdCQUFnQixFQUFFLGdCQUFpQjtTQUNwQyxDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxXQUFnQyxDQUFDLENBQUM7UUFDckYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDN0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQWM7UUFDdkMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUMifQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ObjectInitType } from '@eggjs/tegg-types';
|
|
2
|
+
import { IdenticalUtil } from '@eggjs/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRJbnN0YW5jZUZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFjdG9yeS9Mb2FkVW5pdEluc3RhbmNlRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFRbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUTdFLE1BQU0sT0FBTyx1QkFBdUI7SUFDMUIsTUFBTSxDQUFDLFVBQVUsR0FBc0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRixNQUFNLENBQUMsV0FBVyxHQUFzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTFFLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUF5QixFQUFFLE9BQWdDO1FBQzlGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxRQUFrQjtRQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsUUFBUSxDQUFDLElBQUksbUJBQW1CLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEdBQUcsR0FBcUM7Z0JBQzVDLFFBQVE7YUFDVCxDQUFDO1lBQ0YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQiw0Q0FBNEM7Z0JBQzVDLG9EQUFvRDtnQkFDcEQsOENBQThDO2dCQUM5QyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQWtCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsZ0JBQWtDO1FBQ3JFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUUsQ0FBQztRQUMzRCxNQUFNLDZCQUE2QixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVFLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLDZCQUE2QixDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFtQjtRQUNuRCxLQUFLLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7QUFHSCxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBbUIsRUFBRSxFQUFFO0lBQy9GLE9BQU8sdUJBQXVCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./EggContainerFactory.js";
|
|
2
|
+
export * from "./EggObjectFactory.js";
|
|
3
|
+
export * from "./LoadUnitInstanceFactory.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFjdG9yeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw4QkFBOEIsQ0FBQyJ9
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { LoadUnitFactory } from '@eggjs/metadata';
|
|
2
|
+
import { ContextObjectGraph } from "./ContextObjectGraph.js";
|
|
3
|
+
import { EggContainerFactory } from "../factory/EggContainerFactory.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dEluaXRpYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL0NvbnRleHRJbml0aWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXhFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFFaEUsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLFVBQVUsQ0FBb0I7SUFDOUIscUJBQXFCLENBQThCO0lBRXBFLFlBQVksVUFBNkI7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBYztRQUN2QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQyxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDNUMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUNELE1BQU0sbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxPQUEwQjtRQUN0RCxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ObjectInitType } from '@eggjs/tegg-types';
|
|
2
|
+
class InjectProtoHolder {
|
|
3
|
+
idSet = new Set();
|
|
4
|
+
injectProtos = [];
|
|
5
|
+
addInjectProto(injectObjectProto) {
|
|
6
|
+
const id = `${String(injectObjectProto.objName)}:${injectObjectProto.proto.id}`;
|
|
7
|
+
if (this.idSet.has(id)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
this.idSet.add(id);
|
|
11
|
+
this.injectProtos.push(injectObjectProto);
|
|
12
|
+
}
|
|
13
|
+
dumpProtos() {
|
|
14
|
+
return this.injectProtos;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class ContextObjectGraph {
|
|
18
|
+
static eggObjectInitRecorder = new WeakMap();
|
|
19
|
+
static getContextProto(proto) {
|
|
20
|
+
if (ContextObjectGraph.eggObjectInitRecorder.has(proto)) {
|
|
21
|
+
return ContextObjectGraph.eggObjectInitRecorder.get(proto);
|
|
22
|
+
}
|
|
23
|
+
const holder = new InjectProtoHolder();
|
|
24
|
+
this.doGetContextProto(proto, holder);
|
|
25
|
+
const injectObjectProtos = holder.dumpProtos();
|
|
26
|
+
ContextObjectGraph.eggObjectInitRecorder.set(proto, injectObjectProtos);
|
|
27
|
+
return injectObjectProtos;
|
|
28
|
+
}
|
|
29
|
+
static doGetContextProto(proto, holder) {
|
|
30
|
+
for (const injectObject of proto.injectObjects) {
|
|
31
|
+
if (injectObject.proto.initType === ObjectInitType.CONTEXT && proto.initType !== ObjectInitType.CONTEXT) {
|
|
32
|
+
holder.addInjectProto(injectObject);
|
|
33
|
+
}
|
|
34
|
+
ContextObjectGraph.doGetContextProto(injectObject.proto, holder);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dE9iamVjdEdyYXBoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcGwvQ29udGV4dE9iamVjdEdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUduRCxNQUFNLGlCQUFpQjtJQUNiLEtBQUssR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQixZQUFZLEdBQTZCLEVBQUUsQ0FBQztJQUVwRCxjQUFjLENBQUMsaUJBQW9DO1FBQ2pELE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsTUFBTSxDQUFDLHFCQUFxQixHQUFvRCxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXRHLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBbUI7UUFDeEMsSUFBSSxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0Msa0JBQWtCLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFtQixFQUFFLE1BQXlCO1FBQzdFLEtBQUssTUFBTSxZQUFZLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9DLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssY0FBYyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQ0Qsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ObjectInitType } from '@eggjs/tegg-types';
|
|
2
|
+
import { EggObjectFactory } from "../factory/EggObjectFactory.js";
|
|
3
|
+
import { EggContainerFactory } from "../factory/EggContainerFactory.js";
|
|
4
|
+
export class EggAlwaysNewObjectContainer {
|
|
5
|
+
static instance = new EggAlwaysNewObjectContainer();
|
|
6
|
+
id;
|
|
7
|
+
constructor() {
|
|
8
|
+
this.id = 'ALWAYS_NEW_OBJECT_CONTAINER';
|
|
9
|
+
}
|
|
10
|
+
addProtoToCreate() {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
deleteProtoToCreate() {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
iterateProtoToCreate() {
|
|
17
|
+
return new Map().entries();
|
|
18
|
+
}
|
|
19
|
+
getEggObject() {
|
|
20
|
+
throw new Error('Always Object can not use getEggObject, should use getOrCreateEggObject');
|
|
21
|
+
}
|
|
22
|
+
async getOrCreateEggObject(name, proto) {
|
|
23
|
+
return EggObjectFactory.createObject(name, proto);
|
|
24
|
+
}
|
|
25
|
+
async destroy() {
|
|
26
|
+
// do nothing
|
|
27
|
+
}
|
|
28
|
+
async init() {
|
|
29
|
+
// do nothing
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
EggContainerFactory.registerContainerGetMethod(ObjectInitType.ALWAYS_NEW, () => EggAlwaysNewObjectContainer.instance);
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQWx3YXlzTmV3T2JqZWN0Q29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcGwvRWdnQWx3YXlzTmV3T2JqZWN0Q29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV4RSxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLE1BQU0sQ0FBQyxRQUFRLEdBQWdDLElBQUksMkJBQTJCLEVBQUUsQ0FBQztJQUN4RSxFQUFFLENBQUs7SUFFaEI7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLDZCQUE2QixDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPO0lBQ1QsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPO0lBQ1QsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFZLEVBQUUsS0FBbUI7UUFDMUQsT0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLGFBQWE7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixhQUFhO0lBQ2YsQ0FBQzs7QUFHSCxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDIn0=
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { LoadUnitFactory } from '@eggjs/
|
|
1
|
+
import { LoadUnitFactory } from '@eggjs/metadata';
|
|
2
2
|
import { EggObjectStatus, InjectType, ObjectInitType } from '@eggjs/tegg-types';
|
|
3
|
-
import { IdenticalUtil } from '@eggjs/
|
|
4
|
-
import { EggObjectLifecycleUtil
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { IdenticalUtil } from '@eggjs/lifecycle';
|
|
4
|
+
import { EggObjectLifecycleUtil } from "../model/EggObject.js";
|
|
5
|
+
import { ContextHandler } from "../model/ContextHandler.js";
|
|
6
|
+
import { EggContainerFactory } from "../factory/EggContainerFactory.js";
|
|
7
|
+
import { EggObjectUtil } from "./EggObjectUtil.js";
|
|
7
8
|
export class EggObjectImpl {
|
|
8
9
|
_obj;
|
|
9
10
|
status = EggObjectStatus.PENDING;
|
|
@@ -42,7 +43,8 @@ export class EggObjectImpl {
|
|
|
42
43
|
if (!loadUnit) {
|
|
43
44
|
throw new Error(`can not find load unit: ${proto.loadUnitId}`);
|
|
44
45
|
}
|
|
45
|
-
if (this.proto.initType !== ObjectInitType.CONTEXT &&
|
|
46
|
+
if (this.proto.initType !== ObjectInitType.CONTEXT &&
|
|
47
|
+
injectObject.proto.initType === ObjectInitType.CONTEXT) {
|
|
46
48
|
this.injectProperty(injectObject.refName, EggObjectUtil.contextEggObjectGetProperty(proto, injectObject.objName));
|
|
47
49
|
}
|
|
48
50
|
else {
|
|
@@ -81,7 +83,8 @@ export class EggObjectImpl {
|
|
|
81
83
|
if (!loadUnit) {
|
|
82
84
|
throw new Error(`can not find load unit: ${proto.loadUnitId}`);
|
|
83
85
|
}
|
|
84
|
-
if (this.proto.initType !== ObjectInitType.CONTEXT &&
|
|
86
|
+
if (this.proto.initType !== ObjectInitType.CONTEXT &&
|
|
87
|
+
injectObject.proto.initType === ObjectInitType.CONTEXT) {
|
|
85
88
|
return EggObjectUtil.contextEggObjectProxy(proto, injectObject.objName);
|
|
86
89
|
}
|
|
87
90
|
const injectObj = await EggContainerFactory.getOrCreateEggObject(proto, injectObject.objName);
|
|
@@ -89,14 +92,13 @@ export class EggObjectImpl {
|
|
|
89
92
|
}));
|
|
90
93
|
if (typeof this.proto.multiInstanceConstructorIndex !== 'undefined') {
|
|
91
94
|
const qualifiers = this.proto.multiInstanceConstructorAttributes
|
|
92
|
-
?.map(t => {
|
|
95
|
+
?.map((t) => {
|
|
93
96
|
return {
|
|
94
97
|
attribute: t,
|
|
95
98
|
value: this.proto.getQualifier(t),
|
|
96
99
|
};
|
|
97
100
|
})
|
|
98
|
-
?.filter(t => typeof t.value !== 'undefined')
|
|
99
|
-
?? [];
|
|
101
|
+
?.filter((t) => typeof t.value !== 'undefined') ?? [];
|
|
100
102
|
const objInfo = {
|
|
101
103
|
name: this.proto.name,
|
|
102
104
|
qualifiers,
|
|
@@ -175,4 +177,4 @@ export class EggObjectImpl {
|
|
|
175
177
|
return obj;
|
|
176
178
|
}
|
|
177
179
|
}
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0SW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL0VnZ09iamVjdEltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE1BQU0sT0FBTyxhQUFhO0lBQ2hCLElBQUksQ0FBUztJQUNiLE1BQU0sR0FBb0IsZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUVqRCxLQUFLLENBQWU7SUFDcEIsSUFBSSxDQUFnQjtJQUNwQixFQUFFLENBQVM7SUFFcEIsWUFBWSxJQUFtQixFQUFFLEtBQW1CO1FBQ2xELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsR0FBOEI7UUFDekQsZ0JBQWdCO1FBQ2hCLGtDQUFrQztRQUNsQyxpQkFBaUI7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
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { EggContainerFactory } from "../factory/EggContainerFactory.js";
|
|
2
|
+
export class EggObjectUtil {
|
|
3
|
+
static eggObjectGetProperty(eggObject) {
|
|
4
|
+
return {
|
|
5
|
+
get() {
|
|
6
|
+
return eggObject.obj;
|
|
7
|
+
},
|
|
8
|
+
configurable: true,
|
|
9
|
+
enumerable: true,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
static contextEggObjectGetProperty(proto, objName) {
|
|
13
|
+
const PROTO_OBJ_GETTER = Symbol(`EggPrototype#objGetter#${String(objName)}`);
|
|
14
|
+
if (!proto[PROTO_OBJ_GETTER]) {
|
|
15
|
+
proto[PROTO_OBJ_GETTER] = {
|
|
16
|
+
get() {
|
|
17
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
18
|
+
return eggObject.obj;
|
|
19
|
+
},
|
|
20
|
+
configurable: true,
|
|
21
|
+
enumerable: true,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return proto[PROTO_OBJ_GETTER];
|
|
25
|
+
}
|
|
26
|
+
static eggObjectProxy(eggObject) {
|
|
27
|
+
let _obj;
|
|
28
|
+
function getObj() {
|
|
29
|
+
if (!_obj) {
|
|
30
|
+
_obj = eggObject.obj;
|
|
31
|
+
}
|
|
32
|
+
return _obj;
|
|
33
|
+
}
|
|
34
|
+
const proxy = new Proxy({}, {
|
|
35
|
+
defineProperty(_target, property, attributes) {
|
|
36
|
+
const obj = getObj();
|
|
37
|
+
Object.defineProperty(obj, property, attributes);
|
|
38
|
+
return true;
|
|
39
|
+
},
|
|
40
|
+
deleteProperty(_target, p) {
|
|
41
|
+
const obj = getObj();
|
|
42
|
+
delete obj[p];
|
|
43
|
+
return true;
|
|
44
|
+
},
|
|
45
|
+
get(target, p) {
|
|
46
|
+
// make get be lazy
|
|
47
|
+
if (p === 'then')
|
|
48
|
+
return;
|
|
49
|
+
if (Object.prototype[p]) {
|
|
50
|
+
return target[p];
|
|
51
|
+
}
|
|
52
|
+
const obj = getObj();
|
|
53
|
+
const val = obj[p];
|
|
54
|
+
if (typeof val === 'function') {
|
|
55
|
+
return val.bind(obj);
|
|
56
|
+
}
|
|
57
|
+
return val;
|
|
58
|
+
},
|
|
59
|
+
getOwnPropertyDescriptor(_target, p) {
|
|
60
|
+
const obj = getObj();
|
|
61
|
+
return Object.getOwnPropertyDescriptor(obj, p);
|
|
62
|
+
},
|
|
63
|
+
getPrototypeOf() {
|
|
64
|
+
const obj = getObj();
|
|
65
|
+
return Object.getPrototypeOf(obj);
|
|
66
|
+
},
|
|
67
|
+
has(_target, p) {
|
|
68
|
+
const obj = getObj();
|
|
69
|
+
return p in obj;
|
|
70
|
+
},
|
|
71
|
+
isExtensible() {
|
|
72
|
+
const obj = getObj();
|
|
73
|
+
return Object.isExtensible(obj);
|
|
74
|
+
},
|
|
75
|
+
ownKeys() {
|
|
76
|
+
const obj = getObj();
|
|
77
|
+
return Reflect.ownKeys(obj);
|
|
78
|
+
},
|
|
79
|
+
preventExtensions() {
|
|
80
|
+
const obj = getObj();
|
|
81
|
+
Object.preventExtensions(obj);
|
|
82
|
+
return true;
|
|
83
|
+
},
|
|
84
|
+
set(_target, p, newValue) {
|
|
85
|
+
const obj = getObj();
|
|
86
|
+
obj[p] = newValue;
|
|
87
|
+
return true;
|
|
88
|
+
},
|
|
89
|
+
setPrototypeOf(_target, v) {
|
|
90
|
+
const obj = getObj();
|
|
91
|
+
Object.setPrototypeOf(obj, v);
|
|
92
|
+
return true;
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
return proxy;
|
|
96
|
+
}
|
|
97
|
+
static contextEggObjectProxy(proto, objName) {
|
|
98
|
+
const PROTO_OBJ_PROXY = Symbol(`EggPrototype#objProxy#${String(objName)}`);
|
|
99
|
+
if (!proto[PROTO_OBJ_PROXY]) {
|
|
100
|
+
proto[PROTO_OBJ_PROXY] = new Proxy({}, {
|
|
101
|
+
defineProperty(_target, property, attributes) {
|
|
102
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
103
|
+
const obj = eggObject.obj;
|
|
104
|
+
Object.defineProperty(obj, property, attributes);
|
|
105
|
+
return true;
|
|
106
|
+
},
|
|
107
|
+
deleteProperty(_target, p) {
|
|
108
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
109
|
+
const obj = eggObject.obj;
|
|
110
|
+
delete obj[p];
|
|
111
|
+
return true;
|
|
112
|
+
},
|
|
113
|
+
get(target, p) {
|
|
114
|
+
// make get be lazy
|
|
115
|
+
if (p === 'then')
|
|
116
|
+
return;
|
|
117
|
+
if (Object.prototype[p]) {
|
|
118
|
+
return target[p];
|
|
119
|
+
}
|
|
120
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
121
|
+
const obj = eggObject.obj;
|
|
122
|
+
return obj[p];
|
|
123
|
+
},
|
|
124
|
+
getOwnPropertyDescriptor(_target, p) {
|
|
125
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
126
|
+
const obj = eggObject.obj;
|
|
127
|
+
return Object.getOwnPropertyDescriptor(obj, p);
|
|
128
|
+
},
|
|
129
|
+
getPrototypeOf() {
|
|
130
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
131
|
+
const obj = eggObject.obj;
|
|
132
|
+
return Object.getPrototypeOf(obj);
|
|
133
|
+
},
|
|
134
|
+
has(_target, p) {
|
|
135
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
136
|
+
const obj = eggObject.obj;
|
|
137
|
+
return p in obj;
|
|
138
|
+
},
|
|
139
|
+
isExtensible() {
|
|
140
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
141
|
+
const obj = eggObject.obj;
|
|
142
|
+
return Object.isExtensible(obj);
|
|
143
|
+
},
|
|
144
|
+
ownKeys() {
|
|
145
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
146
|
+
const obj = eggObject.obj;
|
|
147
|
+
return Reflect.ownKeys(obj);
|
|
148
|
+
},
|
|
149
|
+
preventExtensions() {
|
|
150
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
151
|
+
const obj = eggObject.obj;
|
|
152
|
+
Object.preventExtensions(obj);
|
|
153
|
+
return true;
|
|
154
|
+
},
|
|
155
|
+
set(_target, p, newValue) {
|
|
156
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
157
|
+
const obj = eggObject.obj;
|
|
158
|
+
obj[p] = newValue;
|
|
159
|
+
return true;
|
|
160
|
+
},
|
|
161
|
+
setPrototypeOf(_target, v) {
|
|
162
|
+
const eggObject = EggContainerFactory.getEggObject(proto, objName);
|
|
163
|
+
const obj = eggObject.obj;
|
|
164
|
+
Object.setPrototypeOf(obj, v);
|
|
165
|
+
return true;
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return proto[PROTO_OBJ_PROXY];
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBsL0VnZ09iamVjdFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFNBQW9CO1FBQzlDLE9BQU87WUFDTCxHQUFHO2dCQUNELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQztZQUN2QixDQUFDO1lBQ0QsWUFBWSxFQUFFLElBQUk7WUFDbEIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBbUIsRUFBRSxPQUFvQjtRQUMxRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUM3QixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRztnQkFDeEIsR0FBRztvQkFDRCxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNuRSxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFvQjtRQUN4QyxJQUFJLElBQVksQ0FBQztRQUNqQixTQUFTLE1BQU07WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxHQUFHLFNB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
|