@eggjs/tegg-plugin 4.0.0-beta.3 → 4.0.0-beta.30
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 +13 -1
- package/dist/app/extend/application.d.ts +25 -0
- package/dist/app/extend/application.js +75 -0
- package/dist/app/extend/application.unittest.d.ts +6 -0
- package/dist/app/extend/application.unittest.js +52 -0
- package/dist/app/extend/context.d.ts +9 -0
- package/dist/app/extend/context.js +33 -0
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.d.ts +3 -0
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +5 -0
- package/{app.d.ts → dist/app.d.ts} +5 -5
- package/dist/app.js +64 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/{lib → dist/lib}/AppLoadUnit.d.ts +3 -2
- package/dist/lib/AppLoadUnit.js +93 -0
- package/{lib → dist/lib}/AppLoadUnitInstance.d.ts +3 -3
- package/dist/lib/AppLoadUnitInstance.js +83 -0
- package/{lib → dist/lib}/CompatibleUtil.d.ts +9 -4
- package/dist/lib/CompatibleUtil.js +104 -0
- package/{lib → dist/lib}/ConfigSourceLoadUnitHook.d.ts +2 -2
- package/dist/lib/ConfigSourceLoadUnitHook.js +20 -0
- package/dist/lib/EggAppLoader.d.ts +16 -0
- package/dist/lib/EggAppLoader.js +116 -0
- package/{lib → dist/lib}/EggCompatibleObject.d.ts +5 -7
- package/dist/lib/EggCompatibleObject.js +43 -0
- package/{lib → dist/lib}/EggCompatibleProtoImpl.d.ts +3 -2
- package/dist/lib/EggCompatibleProtoImpl.js +52 -0
- package/{lib → dist/lib}/EggContextCompatibleHook.d.ts +3 -3
- package/dist/lib/EggContextCompatibleHook.js +44 -0
- package/{lib → dist/lib}/EggContextHandler.d.ts +3 -3
- package/dist/lib/EggContextHandler.js +25 -0
- package/{lib → dist/lib}/EggContextImpl.d.ts +1 -1
- package/dist/lib/EggContextImpl.js +15 -0
- package/{lib → dist/lib}/EggModuleLoader.d.ts +2 -2
- package/dist/lib/EggModuleLoader.js +53 -0
- package/{lib → dist/lib}/EggQualifierProtoHook.d.ts +3 -3
- package/dist/lib/EggQualifierProtoHook.js +60 -0
- package/{lib → dist/lib}/ModuleConfigLoader.d.ts +2 -2
- package/dist/lib/ModuleConfigLoader.js +80 -0
- package/{lib → dist/lib}/ModuleHandler.d.ts +3 -3
- package/dist/lib/ModuleHandler.js +52 -0
- package/{lib → dist/lib}/Utils.d.ts +1 -1
- package/dist/lib/Utils.js +36 -0
- package/dist/lib/ctx_lifecycle_middleware.d.ts +2 -0
- package/dist/lib/ctx_lifecycle_middleware.js +32 -0
- package/{lib → dist/lib}/run_in_background.d.ts +1 -1
- package/dist/lib/run_in_background.js +58 -0
- package/{lib → dist}/types.d.ts +22 -12
- package/{lib → dist}/types.js +2 -2
- package/package.json +65 -49
- package/app/extend/application.d.ts +0 -24
- package/app/extend/application.js +0 -76
- package/app/extend/application.unittest.d.ts +0 -8
- package/app/extend/application.unittest.js +0 -51
- package/app/extend/context.d.ts +0 -15
- package/app/extend/context.js +0 -32
- package/app/middleware/tegg_ctx_lifecycle_middleware.d.ts +0 -3
- package/app/middleware/tegg_ctx_lifecycle_middleware.js +0 -5
- package/app.js +0 -63
- package/index.d.ts +0 -3
- package/index.js +0 -4
- package/lib/AppLoadUnit.js +0 -85
- package/lib/AppLoadUnitInstance.js +0 -82
- package/lib/CompatibleUtil.js +0 -94
- package/lib/ConfigSourceLoadUnitHook.js +0 -20
- package/lib/EggAppLoader.d.ts +0 -16
- package/lib/EggAppLoader.js +0 -127
- package/lib/EggCompatibleObject.js +0 -41
- package/lib/EggCompatibleProtoImpl.js +0 -51
- package/lib/EggContextCompatibleHook.js +0 -42
- package/lib/EggContextHandler.js +0 -25
- package/lib/EggContextImpl.js +0 -15
- package/lib/EggModuleLoader.js +0 -53
- package/lib/EggQualifierProtoHook.js +0 -50
- package/lib/ModuleConfigLoader.js +0 -80
- package/lib/ModuleHandler.js +0 -53
- package/lib/Utils.js +0 -36
- package/lib/ctx_lifecycle_middleware.d.ts +0 -2
- package/lib/ctx_lifecycle_middleware.js +0 -32
- package/lib/run_in_background.js +0 -55
- package/typings/index.d.ts +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# `@eggjs/tegg-plugin`
|
|
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-plugin.svg?style=flat-square
|
|
9
|
+
[npm-url]: https://npmjs.org/package/@eggjs/tegg-plugin
|
|
10
|
+
[snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-plugin/badge.svg?style=flat-square
|
|
11
|
+
[snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-plugin
|
|
12
|
+
[download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-plugin.svg?style=flat-square
|
|
13
|
+
[download-url]: https://npmjs.org/package/@eggjs/tegg-plugin
|
|
14
|
+
|
|
3
15
|
## Usage
|
|
4
16
|
|
|
5
|
-
Please read [../../README.md](
|
|
17
|
+
Please read [../../README.md](../../README.md)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EggPrototypeCreatorFactory, EggPrototypeFactory, EggPrototypeLifecycleUtil, LoadUnitFactory, LoadUnitLifecycleUtil } from '@eggjs/metadata';
|
|
2
|
+
import { AbstractEggContext, EggContainerFactory, EggObjectFactory, LoadUnitInstanceFactory, EggContextLifecycleUtil, EggObjectLifecycleUtil, LoadUnitInstanceLifecycleUtil } from '@eggjs/tegg-runtime';
|
|
3
|
+
import { LoaderFactory } from '@eggjs/tegg-loader';
|
|
4
|
+
import type { EggProtoImplClass, QualifierInfo } from '@eggjs/core-decorator';
|
|
5
|
+
import type { RuntimeConfig } from '@eggjs/tegg-types';
|
|
6
|
+
import { IdenticalUtil } from '@eggjs/lifecycle';
|
|
7
|
+
export default class TEggPluginApplication {
|
|
8
|
+
get eggPrototypeCreatorFactory(): typeof EggPrototypeCreatorFactory;
|
|
9
|
+
get eggPrototypeFactory(): EggPrototypeFactory;
|
|
10
|
+
get loadUnitLifecycleUtil(): typeof LoadUnitLifecycleUtil;
|
|
11
|
+
get loadUnitFactory(): typeof LoadUnitFactory;
|
|
12
|
+
get eggObjectFactory(): typeof EggObjectFactory;
|
|
13
|
+
get loadUnitInstanceFactory(): typeof LoadUnitInstanceFactory;
|
|
14
|
+
get loadUnitInstanceLifecycleUtil(): typeof LoadUnitInstanceLifecycleUtil;
|
|
15
|
+
get eggContainerFactory(): typeof EggContainerFactory;
|
|
16
|
+
get loaderFactory(): typeof LoaderFactory;
|
|
17
|
+
get eggPrototypeLifecycleUtil(): typeof EggPrototypeLifecycleUtil;
|
|
18
|
+
get eggContextLifecycleUtil(): typeof EggContextLifecycleUtil;
|
|
19
|
+
get eggObjectLifecycleUtil(): typeof EggObjectLifecycleUtil;
|
|
20
|
+
get abstractEggContext(): typeof AbstractEggContext;
|
|
21
|
+
get identicalUtil(): typeof IdenticalUtil;
|
|
22
|
+
get runtimeConfig(): RuntimeConfig;
|
|
23
|
+
getEggObject<T>(clazz: EggProtoImplClass<T>, name?: string, qualifiers?: QualifierInfo | QualifierInfo[]): Promise<T>;
|
|
24
|
+
getEggObjectFromName<T extends object>(name: string, qualifiers?: QualifierInfo | QualifierInfo[]): Promise<T>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { EggPrototypeCreatorFactory, EggPrototypeFactory, EggPrototypeLifecycleUtil, LoadUnitFactory, LoadUnitLifecycleUtil, } from '@eggjs/metadata';
|
|
2
|
+
import { AbstractEggContext, EggContainerFactory, EggObjectFactory, LoadUnitInstanceFactory, EggContextLifecycleUtil, EggObjectLifecycleUtil, LoadUnitInstanceLifecycleUtil, } from '@eggjs/tegg-runtime';
|
|
3
|
+
import { LoaderFactory } from '@eggjs/tegg-loader';
|
|
4
|
+
import { IdenticalUtil } from '@eggjs/lifecycle';
|
|
5
|
+
export default class TEggPluginApplication {
|
|
6
|
+
// @eggjs/metadata should not depend by other egg plugins.
|
|
7
|
+
// May make multi singleton instances.
|
|
8
|
+
// So tegg-compatible should delegate the metadata factories
|
|
9
|
+
// TODO delegate all the singleton
|
|
10
|
+
get eggPrototypeCreatorFactory() {
|
|
11
|
+
return EggPrototypeCreatorFactory;
|
|
12
|
+
}
|
|
13
|
+
get eggPrototypeFactory() {
|
|
14
|
+
return EggPrototypeFactory.instance;
|
|
15
|
+
}
|
|
16
|
+
get loadUnitLifecycleUtil() {
|
|
17
|
+
return LoadUnitLifecycleUtil;
|
|
18
|
+
}
|
|
19
|
+
get loadUnitFactory() {
|
|
20
|
+
return LoadUnitFactory;
|
|
21
|
+
}
|
|
22
|
+
get eggObjectFactory() {
|
|
23
|
+
return EggObjectFactory;
|
|
24
|
+
}
|
|
25
|
+
get loadUnitInstanceFactory() {
|
|
26
|
+
return LoadUnitInstanceFactory;
|
|
27
|
+
}
|
|
28
|
+
get loadUnitInstanceLifecycleUtil() {
|
|
29
|
+
return LoadUnitInstanceLifecycleUtil;
|
|
30
|
+
}
|
|
31
|
+
get eggContainerFactory() {
|
|
32
|
+
return EggContainerFactory;
|
|
33
|
+
}
|
|
34
|
+
get loaderFactory() {
|
|
35
|
+
return LoaderFactory;
|
|
36
|
+
}
|
|
37
|
+
get eggPrototypeLifecycleUtil() {
|
|
38
|
+
return EggPrototypeLifecycleUtil;
|
|
39
|
+
}
|
|
40
|
+
get eggContextLifecycleUtil() {
|
|
41
|
+
return EggContextLifecycleUtil;
|
|
42
|
+
}
|
|
43
|
+
get eggObjectLifecycleUtil() {
|
|
44
|
+
return EggObjectLifecycleUtil;
|
|
45
|
+
}
|
|
46
|
+
get abstractEggContext() {
|
|
47
|
+
return AbstractEggContext;
|
|
48
|
+
}
|
|
49
|
+
get identicalUtil() {
|
|
50
|
+
return IdenticalUtil;
|
|
51
|
+
}
|
|
52
|
+
get runtimeConfig() {
|
|
53
|
+
const config = this.config;
|
|
54
|
+
return {
|
|
55
|
+
baseDir: config.baseDir,
|
|
56
|
+
env: config.env,
|
|
57
|
+
name: config.name,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async getEggObject(clazz, name, qualifiers) {
|
|
61
|
+
if (qualifiers) {
|
|
62
|
+
qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];
|
|
63
|
+
}
|
|
64
|
+
const eggObject = await EggContainerFactory.getOrCreateEggObjectFromClazz(clazz, name, qualifiers);
|
|
65
|
+
return eggObject.obj;
|
|
66
|
+
}
|
|
67
|
+
async getEggObjectFromName(name, qualifiers) {
|
|
68
|
+
if (qualifiers) {
|
|
69
|
+
qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];
|
|
70
|
+
}
|
|
71
|
+
const eggObject = await EggContainerFactory.getOrCreateEggObjectFromName(name, qualifiers);
|
|
72
|
+
return eggObject.obj;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHFCQUFxQixHQUN0QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qiw2QkFBNkIsR0FDOUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXFCO0lBQ3hDLDBEQUEwRDtJQUMxRCxzQ0FBc0M7SUFDdEMsNERBQTREO0lBQzVELGtDQUFrQztJQUNsQyxJQUFJLDBCQUEwQjtRQUM1QixPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLHVCQUF1QjtRQUN6QixPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLDZCQUE2QjtRQUMvQixPQUFPLDZCQUE2QixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyx5QkFBeUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE1BQU0sTUFBTSxHQUFJLElBQStCLENBQUMsTUFBTSxDQUFDO1FBQ3ZELE9BQU87WUFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO1lBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FDaEIsS0FBMkIsRUFDM0IsSUFBYSxFQUNiLFVBQTRDO1FBRTVDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLG1CQUFtQixDQUFDLDZCQUE2QixDQUN2RSxLQUEwQixFQUMxQixJQUFJLEVBQ0osVUFBNkIsQ0FDOUIsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDLEdBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFtQixJQUFZLEVBQUUsVUFBNEM7UUFDckcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLFVBQTZCLENBQUMsQ0FBQztRQUM5RyxPQUFPLFNBQVMsQ0FBQyxHQUFRLENBQUM7SUFDNUIsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Context, Application } from 'egg';
|
|
2
|
+
export default class TEggPluginApplicationUnittest {
|
|
3
|
+
mockModuleContext(this: Application, data?: any): Promise<Context>;
|
|
4
|
+
destroyModuleContext(this: Application, ctx: Context): Promise<void>;
|
|
5
|
+
mockModuleContextScope<R = any>(fn: (ctx: Context) => Promise<R>, data?: any): Promise<R>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { EggContextImpl } from "../../lib/EggContextImpl.js";
|
|
2
|
+
const TEGG_LIFECYCLE_CACHE = new Map();
|
|
3
|
+
let hasMockModuleContext = false;
|
|
4
|
+
export default class TEggPluginApplicationUnittest {
|
|
5
|
+
async mockModuleContext(data) {
|
|
6
|
+
this.deprecate('app.mockModuleContext is deprecated, use mockModuleContextScope.');
|
|
7
|
+
if (hasMockModuleContext) {
|
|
8
|
+
throw new Error('should not call mockModuleContext twice.');
|
|
9
|
+
}
|
|
10
|
+
// @ts-expect-error mockContext is not typed
|
|
11
|
+
const ctx = this.mockContext(data);
|
|
12
|
+
const teggCtx = new EggContextImpl(ctx);
|
|
13
|
+
const lifecycle = {};
|
|
14
|
+
TEGG_LIFECYCLE_CACHE.set(teggCtx, lifecycle);
|
|
15
|
+
if (teggCtx.init) {
|
|
16
|
+
await teggCtx.init(lifecycle);
|
|
17
|
+
}
|
|
18
|
+
hasMockModuleContext = true;
|
|
19
|
+
return ctx;
|
|
20
|
+
}
|
|
21
|
+
async destroyModuleContext(ctx) {
|
|
22
|
+
hasMockModuleContext = false;
|
|
23
|
+
const teggCtx = ctx.teggContext;
|
|
24
|
+
if (!teggCtx) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const lifecycle = TEGG_LIFECYCLE_CACHE.get(teggCtx);
|
|
28
|
+
if (teggCtx.destroy && lifecycle) {
|
|
29
|
+
await teggCtx.destroy(lifecycle);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async mockModuleContextScope(fn, data) {
|
|
33
|
+
if (hasMockModuleContext) {
|
|
34
|
+
throw new Error('mockModuleContextScope can not use with mockModuleContext, should use mockModuleContextScope only.');
|
|
35
|
+
}
|
|
36
|
+
// @ts-expect-error mockContextScope only exists in MockApplication
|
|
37
|
+
return this.mockContextScope(async (ctx) => {
|
|
38
|
+
const teggCtx = new EggContextImpl(ctx);
|
|
39
|
+
const lifecycle = {};
|
|
40
|
+
if (teggCtx.init) {
|
|
41
|
+
await teggCtx.init(lifecycle);
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
return await fn(ctx);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
await teggCtx.destroy(lifecycle);
|
|
48
|
+
}
|
|
49
|
+
}, data);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24udW5pdHRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi51bml0dGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsTUFBTSxvQkFBb0IsR0FBZ0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVwRixJQUFJLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUVqQyxNQUFNLENBQUMsT0FBTyxPQUFPLDZCQUE2QjtJQUNoRCxLQUFLLENBQUMsaUJBQWlCLENBQW9CLElBQVU7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQ25GLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELDRDQUE0QztRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBWSxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNyQixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0Qsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBb0IsR0FBWTtRQUN4RCxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFN0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFVLEVBQWdDLEVBQUUsSUFBVTtRQUNoRixJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixvR0FBb0csQ0FDckcsQ0FBQztRQUNKLENBQUM7UUFDRCxtRUFBbUU7UUFDbkUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQVksRUFBRSxFQUFFO1lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixDQUFDO29CQUFTLENBQUM7Z0JBQ1QsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Context } from 'egg';
|
|
2
|
+
import type { EggContext as TEggContext } from '@eggjs/tegg-runtime';
|
|
3
|
+
import { type EggProtoImplClass, type QualifierInfo } from '@eggjs/core-decorator';
|
|
4
|
+
export default class TEggPluginContext {
|
|
5
|
+
beginModuleScope(this: Context, func: () => Promise<void>): Promise<void>;
|
|
6
|
+
get teggContext(): TEggContext;
|
|
7
|
+
getEggObject<T>(this: Context, clazz: EggProtoImplClass<T>, name?: string): Promise<T>;
|
|
8
|
+
getEggObjectFromName<T>(this: Context, name: string, qualifiers?: QualifierInfo | QualifierInfo[]): Promise<T>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TEGG_CONTEXT } from '@eggjs/module-common';
|
|
2
|
+
import { PrototypeUtil } from '@eggjs/core-decorator';
|
|
3
|
+
import { ctxLifecycleMiddleware } from "../../lib/ctx_lifecycle_middleware.js";
|
|
4
|
+
export default class TEggPluginContext {
|
|
5
|
+
// [TEGG_CONTEXT]: TEggContext | undefined;
|
|
6
|
+
async beginModuleScope(func) {
|
|
7
|
+
await ctxLifecycleMiddleware(this, func);
|
|
8
|
+
}
|
|
9
|
+
get teggContext() {
|
|
10
|
+
const ctx = this;
|
|
11
|
+
if (!ctx[TEGG_CONTEXT]) {
|
|
12
|
+
throw new Error('tegg context have not ready, should call after teggCtxLifecycleMiddleware');
|
|
13
|
+
}
|
|
14
|
+
return ctx[TEGG_CONTEXT];
|
|
15
|
+
}
|
|
16
|
+
async getEggObject(clazz, name) {
|
|
17
|
+
const protoObj = PrototypeUtil.getClazzProto(clazz);
|
|
18
|
+
if (!protoObj) {
|
|
19
|
+
throw new Error(`can not get proto for clazz ${clazz.name}`);
|
|
20
|
+
}
|
|
21
|
+
const proto = protoObj;
|
|
22
|
+
const eggObject = await this.app.eggContainerFactory.getOrCreateEggObject(proto, name ?? proto.name);
|
|
23
|
+
return eggObject.obj;
|
|
24
|
+
}
|
|
25
|
+
async getEggObjectFromName(name, qualifiers) {
|
|
26
|
+
if (qualifiers) {
|
|
27
|
+
qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];
|
|
28
|
+
}
|
|
29
|
+
const eggObject = await this.app.eggContainerFactory.getOrCreateEggObjectFromName(name, qualifiers);
|
|
30
|
+
return eggObject.obj;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBMEIsYUFBYSxFQUFzQixNQUFNLHVCQUF1QixDQUFDO0FBR2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRS9FLE1BQU0sQ0FBQyxPQUFPLE9BQU8saUJBQWlCO0lBQ3BDLDJDQUEyQztJQUUzQyxLQUFLLENBQUMsZ0JBQWdCLENBQWdCLElBQXlCO1FBQzdELE1BQU0sc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixNQUFNLEdBQUcsR0FBRyxJQUEwQixDQUFDO1FBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBZ0IsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBbUIsS0FBMkIsRUFBRSxJQUFhO1FBQzdFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBMEIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxRQUF3QixDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRyxPQUFPLFNBQVMsQ0FBQyxHQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBbUIsSUFBWSxFQUFFLFVBQTRDO1FBQ3JHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQy9FLElBQUksRUFDSixVQUE2QixDQUM5QixDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUMsR0FBUSxDQUFDO0lBQzVCLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ctxLifecycleMiddleware } from "../../lib/ctx_lifecycle_middleware.js";
|
|
2
|
+
export default () => {
|
|
3
|
+
return ctxLifecycleMiddleware;
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVnZ19jdHhfbGlmZWN5Y2xlX21pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL21pZGRsZXdhcmUvdGVnZ19jdHhfbGlmZWN5Y2xlX21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsZUFBZSxHQUFtQixFQUFFO0lBQ2xDLE9BQU8sc0JBQXNCLENBQUM7QUFDaEMsQ0FBQyxDQUFDIn0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import './lib/AppLoadUnit.
|
|
2
|
-
import './lib/AppLoadUnitInstance.
|
|
3
|
-
import './lib/EggCompatibleObject.
|
|
4
|
-
import { Application, ILifecycleBoot } from 'egg';
|
|
5
|
-
export default class
|
|
1
|
+
import './lib/AppLoadUnit.ts';
|
|
2
|
+
import './lib/AppLoadUnitInstance.ts';
|
|
3
|
+
import './lib/EggCompatibleObject.ts';
|
|
4
|
+
import type { Application, ILifecycleBoot } from 'egg';
|
|
5
|
+
export default class TeggAppBoot implements ILifecycleBoot {
|
|
6
6
|
private readonly app;
|
|
7
7
|
private compatibleHook?;
|
|
8
8
|
private eggContextHandler;
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// init loader
|
|
2
|
+
import "./lib/AppLoadUnit.js";
|
|
3
|
+
import "./lib/AppLoadUnitInstance.js";
|
|
4
|
+
import "./lib/EggCompatibleObject.js";
|
|
5
|
+
import { LoadUnitMultiInstanceProtoHook } from '@eggjs/metadata';
|
|
6
|
+
import { EggContextCompatibleHook } from "./lib/EggContextCompatibleHook.js";
|
|
7
|
+
import { CompatibleUtil } from "./lib/CompatibleUtil.js";
|
|
8
|
+
import { ModuleHandler } from "./lib/ModuleHandler.js";
|
|
9
|
+
import { EggContextHandler } from "./lib/EggContextHandler.js";
|
|
10
|
+
import { hijackRunInBackground } from "./lib/run_in_background.js";
|
|
11
|
+
import { EggQualifierProtoHook } from "./lib/EggQualifierProtoHook.js";
|
|
12
|
+
import { ConfigSourceLoadUnitHook } from "./lib/ConfigSourceLoadUnitHook.js";
|
|
13
|
+
export default class TeggAppBoot {
|
|
14
|
+
app;
|
|
15
|
+
compatibleHook;
|
|
16
|
+
eggContextHandler;
|
|
17
|
+
eggQualifierProtoHook;
|
|
18
|
+
loadUnitMultiInstanceProtoHook;
|
|
19
|
+
configSourceEggPrototypeHook;
|
|
20
|
+
constructor(app) {
|
|
21
|
+
this.app = app;
|
|
22
|
+
}
|
|
23
|
+
configWillLoad() {
|
|
24
|
+
this.app.config.coreMiddleware.push('teggCtxLifecycleMiddleware');
|
|
25
|
+
}
|
|
26
|
+
configDidLoad() {
|
|
27
|
+
this.eggContextHandler = new EggContextHandler(this.app);
|
|
28
|
+
this.app.eggContextHandler = this.eggContextHandler;
|
|
29
|
+
this.eggContextHandler.register();
|
|
30
|
+
this.app.moduleHandler = new ModuleHandler(this.app);
|
|
31
|
+
}
|
|
32
|
+
async didLoad() {
|
|
33
|
+
hijackRunInBackground(this.app);
|
|
34
|
+
this.loadUnitMultiInstanceProtoHook = new LoadUnitMultiInstanceProtoHook();
|
|
35
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitMultiInstanceProtoHook);
|
|
36
|
+
// wait all file loaded, so app/ctx has all properties
|
|
37
|
+
this.eggQualifierProtoHook = new EggQualifierProtoHook(this.app);
|
|
38
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.eggQualifierProtoHook);
|
|
39
|
+
this.configSourceEggPrototypeHook = new ConfigSourceLoadUnitHook();
|
|
40
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.configSourceEggPrototypeHook);
|
|
41
|
+
// start load tegg objects
|
|
42
|
+
await this.app.moduleHandler.init();
|
|
43
|
+
this.compatibleHook = new EggContextCompatibleHook(this.app.moduleHandler);
|
|
44
|
+
this.app.eggContextLifecycleUtil.registerLifecycle(this.compatibleHook);
|
|
45
|
+
}
|
|
46
|
+
async beforeClose() {
|
|
47
|
+
CompatibleUtil.clean();
|
|
48
|
+
await this.app.moduleHandler.destroy();
|
|
49
|
+
if (this.compatibleHook) {
|
|
50
|
+
this.app.eggContextLifecycleUtil.deleteLifecycle(this.compatibleHook);
|
|
51
|
+
}
|
|
52
|
+
if (this.eggQualifierProtoHook) {
|
|
53
|
+
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.eggQualifierProtoHook);
|
|
54
|
+
}
|
|
55
|
+
if (this.configSourceEggPrototypeHook) {
|
|
56
|
+
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.configSourceEggPrototypeHook);
|
|
57
|
+
}
|
|
58
|
+
if (this.loadUnitMultiInstanceProtoHook) {
|
|
59
|
+
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitMultiInstanceProtoHook);
|
|
60
|
+
}
|
|
61
|
+
LoadUnitMultiInstanceProtoHook.clear();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsT0FBTyxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sOEJBQThCLENBQUM7QUFHdEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsT0FBTyxPQUFPLFdBQVc7SUFDYixHQUFHLENBQWM7SUFDMUIsY0FBYyxDQUE0QjtJQUMxQyxpQkFBaUIsQ0FBb0I7SUFDckMscUJBQXFCLENBQXdCO0lBQzdDLDhCQUE4QixDQUFpQztJQUMvRCw0QkFBNEIsQ0FBMkI7SUFFL0QsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMs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
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import "./types.js";
|
|
2
|
+
export * from "./app/extend/application.js";
|
|
3
|
+
export * from "./app/extend/context.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUM7QUFFcEIsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDIn0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { EggLoadUnitTypeLike, EggPrototype, Loader, LoadUnit, LoadUnitLifecycleContext } from '@eggjs/
|
|
2
|
-
import {
|
|
1
|
+
import { type EggLoadUnitTypeLike, type EggPrototype, type Loader, type LoadUnit, type LoadUnitLifecycleContext } from '@eggjs/metadata';
|
|
2
|
+
import { type QualifierInfo } from '@eggjs/core-decorator';
|
|
3
|
+
import type { Id } from '@eggjs/tegg-types';
|
|
3
4
|
export declare class AppLoadUnit implements LoadUnit {
|
|
4
5
|
private readonly loader;
|
|
5
6
|
id: Id;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import { EggLoadUnitType, EggPrototypeFactory, LoadUnitFactory, EggPrototypeCreatorFactory, } from '@eggjs/metadata';
|
|
3
|
+
import { PrototypeUtil, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, QualifierUtil, } from '@eggjs/core-decorator';
|
|
4
|
+
import { IdenticalUtil } from '@eggjs/lifecycle';
|
|
5
|
+
import { MapUtil } from '@eggjs/tegg-common-util';
|
|
6
|
+
const debug = debuglog('egg/tegg/plugin/tegg/lib/AppLoadUnit');
|
|
7
|
+
export class AppLoadUnit {
|
|
8
|
+
loader;
|
|
9
|
+
id;
|
|
10
|
+
name;
|
|
11
|
+
type = EggLoadUnitType.APP;
|
|
12
|
+
unitPath;
|
|
13
|
+
protoMap = new Map();
|
|
14
|
+
constructor(name, unitPath, loader) {
|
|
15
|
+
this.id = IdenticalUtil.createLoadUnitId(name);
|
|
16
|
+
this.name = name;
|
|
17
|
+
this.unitPath = unitPath;
|
|
18
|
+
this.loader = loader;
|
|
19
|
+
}
|
|
20
|
+
async init() {
|
|
21
|
+
const clazzList = await this.loader.load();
|
|
22
|
+
if (debug.enabled) {
|
|
23
|
+
debug('init, get clazzList:%j, from unitPath:%o:%o:%o', clazzList.map((t) => t.name), this.type, this.name, this.unitPath);
|
|
24
|
+
}
|
|
25
|
+
for (const clazz of clazzList) {
|
|
26
|
+
// TODO duplicate code, same in ModuleLoadUnit
|
|
27
|
+
const initTypeQualifierAttributeValue = await PrototypeUtil.getInitType(clazz, {
|
|
28
|
+
unitPath: this.unitPath,
|
|
29
|
+
moduleName: this.name,
|
|
30
|
+
});
|
|
31
|
+
const defaultQualifier = [
|
|
32
|
+
{
|
|
33
|
+
attribute: InitTypeQualifierAttribute,
|
|
34
|
+
value: initTypeQualifierAttributeValue,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
attribute: LoadUnitNameQualifierAttribute,
|
|
38
|
+
value: this.name,
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
defaultQualifier.forEach((qualifier) => {
|
|
42
|
+
QualifierUtil.addProtoQualifier(clazz, qualifier.attribute, qualifier.value);
|
|
43
|
+
});
|
|
44
|
+
const protos = await EggPrototypeCreatorFactory.createProto(clazz, this);
|
|
45
|
+
for (const proto of protos) {
|
|
46
|
+
EggPrototypeFactory.instance.registerPrototype(proto, this);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
containPrototype(proto) {
|
|
51
|
+
return !!this.protoMap.get(proto.name)?.find((t) => t === proto);
|
|
52
|
+
}
|
|
53
|
+
getEggPrototype(name, qualifiers) {
|
|
54
|
+
const protos = this.protoMap.get(name);
|
|
55
|
+
return protos?.filter((proto) => proto.verifyQualifiers(qualifiers)) || [];
|
|
56
|
+
}
|
|
57
|
+
registerEggPrototype(proto) {
|
|
58
|
+
const protoList = MapUtil.getOrStore(this.protoMap, proto.name, []);
|
|
59
|
+
protoList.push(proto);
|
|
60
|
+
}
|
|
61
|
+
deletePrototype(proto) {
|
|
62
|
+
const protos = this.protoMap.get(proto.name);
|
|
63
|
+
if (protos) {
|
|
64
|
+
const index = protos.indexOf(proto);
|
|
65
|
+
if (index !== -1) {
|
|
66
|
+
protos.splice(index, 1);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async destroy() {
|
|
71
|
+
for (const namedProtos of this.protoMap.values()) {
|
|
72
|
+
// Delete prototype will delete item
|
|
73
|
+
// array iterator is not safe
|
|
74
|
+
const protos = namedProtos.slice();
|
|
75
|
+
for (const proto of protos) {
|
|
76
|
+
EggPrototypeFactory.instance.deletePrototype(proto, this);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.protoMap.clear();
|
|
80
|
+
}
|
|
81
|
+
iterateEggPrototype() {
|
|
82
|
+
const protos = Array.from(this.protoMap.values()).reduce((p, c) => {
|
|
83
|
+
p = p.concat(c);
|
|
84
|
+
return p;
|
|
85
|
+
}, []);
|
|
86
|
+
return protos.values();
|
|
87
|
+
}
|
|
88
|
+
static createModule(ctx) {
|
|
89
|
+
return new AppLoadUnit('tegg-app', ctx.unitPath, ctx.loader);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
LoadUnitFactory.registerLoadUnitCreator(EggLoadUnitType.APP, AppLoadUnit.createModule);
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwTG9hZFVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0FwcExvYWRVbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxFQUNMLGVBQWUsRUFHZixtQkFBbUIsRUFHbkIsZUFBZSxFQUVmLDBCQUEwQixHQUMzQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsMEJBQTBCLEVBQzFCLDhCQUE4QixFQUM5QixhQUFhLEdBQ2QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRS9ELE1BQU0sT0FBTyxXQUFXO0lBQ0wsTUFBTSxDQUFTO0lBQ2hDLEVBQUUsQ0FBSztJQUNFLElBQUksQ0FBUztJQUNiLElBQUksR0FBd0IsZUFBZSxDQUFDLEdBQUcsQ0FBQztJQUNoRCxRQUFRLENBQVM7SUFDbEIsUUFBUSxHQUEwQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXBFLFlBQVksSUFBWSxFQUFFLFFBQWdCLEVBQUUsTUFBYztRQUN4RCxJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFF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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EggPrototype, LoadUnit } from '@eggjs/
|
|
2
|
-
import { EggObjectName, EggPrototypeName } from '@eggjs/
|
|
3
|
-
import { EggObject, LoadUnitInstance, LoadUnitInstanceLifecycleContext } from '@eggjs/tegg-runtime';
|
|
1
|
+
import { type EggPrototype, type LoadUnit } from '@eggjs/metadata';
|
|
2
|
+
import { type EggObjectName, type EggPrototypeName } from '@eggjs/core-decorator';
|
|
3
|
+
import { type EggObject, type LoadUnitInstance, type LoadUnitInstanceLifecycleContext } from '@eggjs/tegg-runtime';
|
|
4
4
|
export declare class AppLoadUnitInstance implements LoadUnitInstance {
|
|
5
5
|
readonly loadUnit: LoadUnit;
|
|
6
6
|
readonly id: string;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { EggLoadUnitType } from '@eggjs/metadata';
|
|
2
|
+
import { ObjectInitType } from '@eggjs/core-decorator';
|
|
3
|
+
import { IdenticalUtil } from '@eggjs/lifecycle';
|
|
4
|
+
import { MapUtil } from '@eggjs/tegg-common-util';
|
|
5
|
+
import { EggObjectFactory, LoadUnitInstanceFactory, LoadUnitInstanceLifecycleUtil, } from '@eggjs/tegg-runtime';
|
|
6
|
+
export class AppLoadUnitInstance {
|
|
7
|
+
loadUnit;
|
|
8
|
+
id;
|
|
9
|
+
name;
|
|
10
|
+
protoToCreateMap = new Map();
|
|
11
|
+
eggObjectMap = new Map();
|
|
12
|
+
eggObjectPromiseMap = new Map();
|
|
13
|
+
constructor(loadUnit) {
|
|
14
|
+
this.loadUnit = loadUnit;
|
|
15
|
+
this.name = loadUnit.name;
|
|
16
|
+
const iterator = this.loadUnit.iterateEggPrototype();
|
|
17
|
+
for (const proto of iterator) {
|
|
18
|
+
if (proto.initType === ObjectInitType.SINGLETON) {
|
|
19
|
+
this.protoToCreateMap.set(proto.name, proto);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
this.id = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
|
|
23
|
+
}
|
|
24
|
+
iterateProtoToCreate() {
|
|
25
|
+
return this.protoToCreateMap.entries();
|
|
26
|
+
}
|
|
27
|
+
addProtoToCreate(name, proto) {
|
|
28
|
+
this.protoToCreateMap.set(name, proto);
|
|
29
|
+
}
|
|
30
|
+
deleteProtoToCreate(name) {
|
|
31
|
+
this.protoToCreateMap.delete(name);
|
|
32
|
+
}
|
|
33
|
+
async init(ctx) {
|
|
34
|
+
await LoadUnitInstanceLifecycleUtil.objectPreCreate(ctx, this);
|
|
35
|
+
for (const [name, proto] of this.protoToCreateMap) {
|
|
36
|
+
await this.getOrCreateEggObject(name, proto);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async destroy() {
|
|
40
|
+
const objs = [];
|
|
41
|
+
for (const protoObjMap of this.eggObjectMap.values()) {
|
|
42
|
+
for (const protoObj of protoObjMap.values()) {
|
|
43
|
+
objs.push(protoObj);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this.eggObjectMap.clear();
|
|
47
|
+
await Promise.all(objs.map(async (obj) => {
|
|
48
|
+
await EggObjectFactory.destroyObject(obj);
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
async getOrCreateEggObject(name, proto) {
|
|
52
|
+
if (!this.loadUnit.containPrototype(proto)) {
|
|
53
|
+
throw new Error('load unit not contain proto');
|
|
54
|
+
}
|
|
55
|
+
const protoObjMap = MapUtil.getOrStore(this.eggObjectMap, proto.id, new Map());
|
|
56
|
+
if (!protoObjMap.has(name)) {
|
|
57
|
+
const protoObjPromiseMap = MapUtil.getOrStore(this.eggObjectPromiseMap, proto.id, new Map());
|
|
58
|
+
if (!protoObjPromiseMap.has(name)) {
|
|
59
|
+
const objPromise = EggObjectFactory.createObject(name, proto);
|
|
60
|
+
protoObjPromiseMap.set(name, objPromise);
|
|
61
|
+
const obj = await objPromise;
|
|
62
|
+
protoObjPromiseMap.delete(name);
|
|
63
|
+
protoObjMap.set(name, obj);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
await protoObjPromiseMap.get(name);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return protoObjMap.get(name);
|
|
70
|
+
}
|
|
71
|
+
getEggObject(name, proto) {
|
|
72
|
+
const protoObjMap = this.eggObjectMap.get(proto.id);
|
|
73
|
+
if (!protoObjMap || !protoObjMap.has(name)) {
|
|
74
|
+
throw new Error(`EggObject ${String(proto.name)} not found`);
|
|
75
|
+
}
|
|
76
|
+
return protoObjMap.get(name);
|
|
77
|
+
}
|
|
78
|
+
static createModuleLoadUnitInstance(ctx) {
|
|
79
|
+
return new AppLoadUnitInstance(ctx.loadUnit);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
LoadUnitInstanceFactory.registerLoadUnitInstanceClass(EggLoadUnitType.APP, AppLoadUnitInstance.createModuleLoadUnitInstance);
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwTG9hZFVuaXRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvQXBwTG9hZFVuaXRJbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFvQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BGLE9BQU8sRUFBNkMsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsZ0JBQWdCLEVBRWhCLHVCQUF1QixFQUV2Qiw2QkFBNkIsR0FDOUIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFFBQVEsQ0FBVztJQUNuQixFQUFFLENBQVM7SUFDWCxJQUFJLENBQVM7SUFDZCxnQkFBZ0IsR0FBd0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNsRSxZQUFZLEdBQThDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDcEUsbUJBQW1CLEdBQXVELElBQUksR0FBRyxFQUFFLENBQUM7SUFFNUYsWUFBWSxRQUFrQjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JELEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLENB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Application, Context } from 'egg';
|
|
2
|
-
import { EggPrototype } from '@eggjs/
|
|
3
|
-
import { LoadUnitInstance } from '@eggjs/tegg-runtime';
|
|
1
|
+
import type { Application, Context } from 'egg';
|
|
2
|
+
import { type EggPrototype } from '@eggjs/metadata';
|
|
3
|
+
import { type LoadUnitInstance } from '@eggjs/tegg-runtime';
|
|
4
4
|
export declare class CompatibleUtil {
|
|
5
5
|
static singletonProtoCache: Map<PropertyKey, EggPrototype>;
|
|
6
6
|
static requestProtoCache: Map<PropertyKey, EggPrototype>;
|
|
@@ -9,6 +9,11 @@ export declare class CompatibleUtil {
|
|
|
9
9
|
private static singletonModuleProxyFactory;
|
|
10
10
|
static appCompatible(app: Application, loadUnitInstance: LoadUnitInstance): void;
|
|
11
11
|
static contextModuleProxyFactory(holder: Record<string, any>, ctx: Context, loadUnitInstance: LoadUnitInstance): any;
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Compatible the context module, only for koa application
|
|
14
|
+
* @param contextPrototype - The prototype of the context
|
|
15
|
+
* @param loadUnitInstances - The load unit instances
|
|
16
|
+
*/
|
|
17
|
+
static contextModuleCompatible(contextPrototype: any, loadUnitInstances: LoadUnitInstance[]): void;
|
|
13
18
|
static clean(): void;
|
|
14
19
|
}
|