@eggjs/tegg-plugin 4.0.0-beta.1 → 4.0.0-beta.11
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 +50 -0
- package/dist/app/extend/application.js +79 -0
- package/dist/app/extend/application.unittest.d.ts +22 -0
- package/{app → dist/app}/extend/application.unittest.js +13 -9
- package/dist/app/extend/context.d.ts +20 -0
- package/dist/app/extend/context.js +35 -0
- package/{app → dist/app}/middleware/tegg_ctx_lifecycle_middleware.d.ts +1 -1
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +5 -0
- package/{app.d.ts → dist/app.d.ts} +4 -4
- package/dist/app.js +63 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/{lib → dist/lib}/AppLoadUnit.d.ts +2 -2
- package/dist/lib/AppLoadUnit.js +90 -0
- package/{lib → dist/lib}/AppLoadUnitInstance.d.ts +3 -3
- package/dist/lib/AppLoadUnitInstance.js +82 -0
- package/{lib → dist/lib}/CompatibleUtil.d.ts +2 -2
- package/dist/lib/CompatibleUtil.js +95 -0
- package/{lib → dist/lib}/ConfigSourceLoadUnitHook.d.ts +2 -2
- package/{lib → dist/lib}/ConfigSourceLoadUnitHook.js +2 -1
- package/{lib → dist/lib}/EggAppLoader.d.ts +2 -2
- package/dist/lib/EggAppLoader.js +128 -0
- package/{lib → dist/lib}/EggCompatibleObject.d.ts +4 -4
- package/{lib → dist/lib}/EggCompatibleObject.js +3 -2
- package/{lib → dist/lib}/EggCompatibleProtoImpl.d.ts +2 -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 +26 -0
- package/{lib → dist/lib}/EggContextImpl.d.ts +1 -1
- package/dist/lib/EggContextImpl.js +15 -0
- package/dist/lib/EggModuleLoader.js +54 -0
- package/{lib → dist/lib}/EggQualifierProtoHook.d.ts +2 -2
- package/dist/lib/EggQualifierProtoHook.js +62 -0
- package/{lib → dist/lib}/ModuleConfigLoader.d.ts +1 -1
- package/dist/lib/ModuleConfigLoader.js +81 -0
- package/{lib → dist/lib}/ModuleHandler.d.ts +2 -2
- package/dist/lib/ModuleHandler.js +53 -0
- package/dist/lib/Utils.js +36 -0
- package/dist/lib/ctx_lifecycle_middleware.d.ts +2 -0
- package/{lib → dist/lib}/ctx_lifecycle_middleware.js +7 -6
- package/dist/lib/run_in_background.js +58 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.js +5 -0
- package/package.json +63 -45
- 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/context.d.ts +0 -15
- package/app/extend/context.js +0 -32
- 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/EggAppLoader.js +0 -127
- 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/run_in_background.js +0 -55
- package/lib/types.d.ts +0 -43
- package/lib/types.js +0 -2
- package/typings/index.d.ts +0 -1
- /package/{lib → dist/lib}/EggModuleLoader.d.ts +0 -0
- /package/{lib → dist/lib}/Utils.d.ts +0 -0
- /package/{lib → dist/lib}/run_in_background.d.ts +0 -0
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { EggPrototypeCreatorFactory, EggPrototypeFactory, EggPrototypeLifecycleUtil, LoadUnitFactory, LoadUnitLifecycleUtil, } from '@eggjs/tegg-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/tegg';
|
|
5
|
-
export default {
|
|
6
|
-
// @eggjs/tegg-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 app = this;
|
|
54
|
-
const config = app.config;
|
|
55
|
-
return {
|
|
56
|
-
baseDir: config.baseDir,
|
|
57
|
-
env: config.env,
|
|
58
|
-
name: config.name,
|
|
59
|
-
};
|
|
60
|
-
},
|
|
61
|
-
async getEggObject(clazz, name, qualifiers) {
|
|
62
|
-
if (qualifiers) {
|
|
63
|
-
qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];
|
|
64
|
-
}
|
|
65
|
-
const eggObject = await EggContainerFactory.getOrCreateEggObjectFromClazz(clazz, name, qualifiers);
|
|
66
|
-
return eggObject.obj;
|
|
67
|
-
},
|
|
68
|
-
async getEggObjectFromName(name, qualifiers) {
|
|
69
|
-
if (qualifiers) {
|
|
70
|
-
qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];
|
|
71
|
-
}
|
|
72
|
-
const eggObject = await EggContainerFactory.getOrCreateEggObjectFromName(name, qualifiers);
|
|
73
|
-
return eggObject.obj;
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHFCQUFxQixHQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qiw2QkFBNkIsR0FDOUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFxQixhQUFhLEVBQWdDLE1BQU0sYUFBYSxDQUFDO0FBRzdGLGVBQWU7SUFDYiwrREFBK0Q7SUFDL0Qsc0NBQXNDO0lBQ3RDLDREQUE0RDtJQUM1RCxrQ0FBa0M7SUFDbEMsSUFBSSwwQkFBMEI7UUFDNUIsT0FBTywwQkFBMEIsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSw2QkFBNkI7UUFDL0IsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUkseUJBQXlCO1FBQzNCLE9BQU8seUJBQXlCLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sdUJBQXVCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixNQUFNLEdBQUcsR0FBRyxJQUE4QixDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDMUIsT0FBTztZQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7WUFDZixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQXdCLEVBQUUsSUFBYSxFQUFFLFVBQTRDO1FBQ3RHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFFLFVBQVUsQ0FBRSxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLG1CQUFtQixDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbkcsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBWSxFQUFFLFVBQTRDO1FBQ25GLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFFLFVBQVUsQ0FBRSxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLG1CQUFtQixDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRixPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDdkIsQ0FBQztDQUNGLENBQUMifQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { MockApplication } from '@eggjs/mock';
|
|
2
|
-
import type { Context } from '@eggjs/core';
|
|
3
|
-
declare const _default: {
|
|
4
|
-
mockModuleContext(this: MockApplication, data?: any): Promise<Context>;
|
|
5
|
-
destroyModuleContext(ctx: Context): Promise<void>;
|
|
6
|
-
mockModuleContextScope<R = any>(this: MockApplication, fn: (ctx: Context) => Promise<R>, data?: any): Promise<R>;
|
|
7
|
-
};
|
|
8
|
-
export default _default;
|
package/app/extend/context.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Context } from '@eggjs/core';
|
|
2
|
-
import type { EggContext as TEggContext } from '@eggjs/tegg-runtime';
|
|
3
|
-
import { TEGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
4
|
-
import { type EggProtoImplClass, type QualifierInfo } from '@eggjs/tegg';
|
|
5
|
-
export interface TEggPluginContext extends Context {
|
|
6
|
-
[TEGG_CONTEXT]: TEggContext;
|
|
7
|
-
}
|
|
8
|
-
declare const _default: {
|
|
9
|
-
[TEGG_CONTEXT]: TEggContext | undefined;
|
|
10
|
-
beginModuleScope(this: TEggPluginContext, func: () => Promise<void>): Promise<void>;
|
|
11
|
-
readonly teggContext: TEggContext;
|
|
12
|
-
getEggObject(this: Context, clazz: EggProtoImplClass, name?: string): Promise<Record<string | symbol, any>>;
|
|
13
|
-
getEggObjectFromName(this: Context, name: string, qualifiers?: QualifierInfo | QualifierInfo[]): Promise<Record<string | symbol, any>>;
|
|
14
|
-
};
|
|
15
|
-
export default _default;
|
package/app/extend/context.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { TEGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
2
|
-
import { PrototypeUtil } from '@eggjs/tegg';
|
|
3
|
-
import { ctxLifecycleMiddleware } from '../../lib/ctx_lifecycle_middleware.js';
|
|
4
|
-
export default {
|
|
5
|
-
[TEGG_CONTEXT]: undefined,
|
|
6
|
-
async beginModuleScope(func) {
|
|
7
|
-
await ctxLifecycleMiddleware(this, func);
|
|
8
|
-
},
|
|
9
|
-
get teggContext() {
|
|
10
|
-
if (!this[TEGG_CONTEXT]) {
|
|
11
|
-
throw new Error('tegg context have not ready, should call after teggCtxLifecycleMiddleware');
|
|
12
|
-
}
|
|
13
|
-
return this[TEGG_CONTEXT];
|
|
14
|
-
},
|
|
15
|
-
async getEggObject(clazz, name) {
|
|
16
|
-
const protoObj = PrototypeUtil.getClazzProto(clazz);
|
|
17
|
-
if (!protoObj) {
|
|
18
|
-
throw new Error(`can not get proto for clazz ${clazz.name}`);
|
|
19
|
-
}
|
|
20
|
-
const proto = protoObj;
|
|
21
|
-
const eggObject = await this.app.eggContainerFactory.getOrCreateEggObject(proto, name ?? proto.name);
|
|
22
|
-
return eggObject.obj;
|
|
23
|
-
},
|
|
24
|
-
async getEggObjectFromName(name, qualifiers) {
|
|
25
|
-
if (qualifiers) {
|
|
26
|
-
qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];
|
|
27
|
-
}
|
|
28
|
-
const eggObject = await this.app.eggContainerFactory.getOrCreateEggObjectFromName(name, qualifiers);
|
|
29
|
-
return eggObject.obj;
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBMEIsYUFBYSxFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUV4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU0vRSxlQUFlO0lBQ2IsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFvQztJQUVwRCxLQUFLLENBQUMsZ0JBQWdCLENBQTBCLElBQXlCO1FBQ3ZFLE1BQU0sc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBZ0IsS0FBd0IsRUFBRSxJQUFhO1FBQ3ZFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLFFBQXdCLENBQUM7UUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFnQixJQUFZLEVBQUUsVUFBNEM7UUFDbEcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsVUFBVSxDQUFFLENBQUM7UUFDdkUsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEcsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRixDQUFDIn0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ctxLifecycleMiddleware } from '../../lib/ctx_lifecycle_middleware.js';
|
|
2
|
-
export default () => {
|
|
3
|
-
return ctxLifecycleMiddleware;
|
|
4
|
-
};
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVnZ19jdHhfbGlmZWN5Y2xlX21pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZWdnX2N0eF9saWZlY3ljbGVfbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvRSxlQUFlLEdBQUcsRUFBRTtJQUNsQixPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUMsQ0FBQyJ9
|
package/app.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import './lib/AppLoadUnit.js';
|
|
2
|
-
import './lib/AppLoadUnitInstance.js';
|
|
3
|
-
import './lib/EggCompatibleObject.js';
|
|
4
|
-
import { LoadUnitMultiInstanceProtoHook } from '@eggjs/tegg-metadata';
|
|
5
|
-
import { EggContextCompatibleHook } from './lib/EggContextCompatibleHook.js';
|
|
6
|
-
import { CompatibleUtil } from './lib/CompatibleUtil.js';
|
|
7
|
-
import { ModuleHandler } from './lib/ModuleHandler.js';
|
|
8
|
-
import { EggContextHandler } from './lib/EggContextHandler.js';
|
|
9
|
-
import { hijackRunInBackground } from './lib/run_in_background.js';
|
|
10
|
-
import { EggQualifierProtoHook } from './lib/EggQualifierProtoHook.js';
|
|
11
|
-
import { ConfigSourceLoadUnitHook } from './lib/ConfigSourceLoadUnitHook.js';
|
|
12
|
-
export default class App {
|
|
13
|
-
app;
|
|
14
|
-
compatibleHook;
|
|
15
|
-
eggContextHandler;
|
|
16
|
-
eggQualifierProtoHook;
|
|
17
|
-
loadUnitMultiInstanceProtoHook;
|
|
18
|
-
configSourceEggPrototypeHook;
|
|
19
|
-
constructor(app) {
|
|
20
|
-
this.app = app;
|
|
21
|
-
}
|
|
22
|
-
configWillLoad() {
|
|
23
|
-
this.app.config.coreMiddleware.push('teggCtxLifecycleMiddleware');
|
|
24
|
-
}
|
|
25
|
-
configDidLoad() {
|
|
26
|
-
this.eggContextHandler = new EggContextHandler(this.app);
|
|
27
|
-
this.app.eggContextHandler = this.eggContextHandler;
|
|
28
|
-
this.eggContextHandler.register();
|
|
29
|
-
this.app.moduleHandler = new ModuleHandler(this.app);
|
|
30
|
-
}
|
|
31
|
-
async didLoad() {
|
|
32
|
-
hijackRunInBackground(this.app);
|
|
33
|
-
this.loadUnitMultiInstanceProtoHook = new LoadUnitMultiInstanceProtoHook();
|
|
34
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitMultiInstanceProtoHook);
|
|
35
|
-
// wait all file loaded, so app/ctx has all properties
|
|
36
|
-
this.eggQualifierProtoHook = new EggQualifierProtoHook(this.app);
|
|
37
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.eggQualifierProtoHook);
|
|
38
|
-
this.configSourceEggPrototypeHook = new ConfigSourceLoadUnitHook();
|
|
39
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.configSourceEggPrototypeHook);
|
|
40
|
-
// start load tegg objects
|
|
41
|
-
await this.app.moduleHandler.init();
|
|
42
|
-
this.compatibleHook = new EggContextCompatibleHook(this.app.moduleHandler);
|
|
43
|
-
this.app.eggContextLifecycleUtil.registerLifecycle(this.compatibleHook);
|
|
44
|
-
}
|
|
45
|
-
async beforeClose() {
|
|
46
|
-
CompatibleUtil.clean();
|
|
47
|
-
await this.app.moduleHandler.destroy();
|
|
48
|
-
if (this.compatibleHook) {
|
|
49
|
-
this.app.eggContextLifecycleUtil.deleteLifecycle(this.compatibleHook);
|
|
50
|
-
}
|
|
51
|
-
if (this.eggQualifierProtoHook) {
|
|
52
|
-
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.eggQualifierProtoHook);
|
|
53
|
-
}
|
|
54
|
-
if (this.configSourceEggPrototypeHook) {
|
|
55
|
-
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.configSourceEggPrototypeHook);
|
|
56
|
-
}
|
|
57
|
-
if (this.loadUnitMultiInstanceProtoHook) {
|
|
58
|
-
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitMultiInstanceProtoHook);
|
|
59
|
-
}
|
|
60
|
-
LoadUnitMultiInstanceProtoHook.clear();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0UsTUFBTSxDQUFDLE9BQU8sT0FBTyxHQUFHO0lBQ0wsR0FBRyxDQUFjO0lBQzFCLGNBQWMsQ0FBNEI7SUFDMUMsaUJBQWlCLENBQW9CO0lBQ3JDLHFCQUFxQixDQUF3QjtJQUM3Qyw4QkFBOEIsQ0FBaUM7SUFDL0QsNEJBQTRCLENBQTJCO0lBRS9ELFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsSUFBSSxD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
|
package/index.d.ts
DELETED
package/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import './lib/types.js';
|
|
2
|
-
export * from './app/extend/application.js';
|
|
3
|
-
export * from './app/extend/context.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGdCQUFnQixDQUFDO0FBRXhCLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQyJ9
|
package/lib/AppLoadUnit.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { EggLoadUnitType, EggPrototypeFactory, LoadUnitFactory, EggPrototypeCreatorFactory, } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { IdenticalUtil, PrototypeUtil, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, QualifierUtil, } from '@eggjs/tegg';
|
|
3
|
-
import { MapUtil } from '@eggjs/tegg-common-util';
|
|
4
|
-
export class AppLoadUnit {
|
|
5
|
-
loader;
|
|
6
|
-
id;
|
|
7
|
-
name;
|
|
8
|
-
type = EggLoadUnitType.APP;
|
|
9
|
-
unitPath;
|
|
10
|
-
protoMap = new Map();
|
|
11
|
-
constructor(name, unitPath, loader) {
|
|
12
|
-
this.id = IdenticalUtil.createLoadUnitId(name);
|
|
13
|
-
this.name = name;
|
|
14
|
-
this.unitPath = unitPath;
|
|
15
|
-
this.loader = loader;
|
|
16
|
-
}
|
|
17
|
-
async init() {
|
|
18
|
-
const clazzList = await this.loader.load();
|
|
19
|
-
for (const clazz of clazzList) {
|
|
20
|
-
// TODO duplicate code, same in ModuleLoadUnit
|
|
21
|
-
const initTypeQualifierAttributeValue = await PrototypeUtil.getInitType(clazz, {
|
|
22
|
-
unitPath: this.unitPath,
|
|
23
|
-
moduleName: this.name,
|
|
24
|
-
});
|
|
25
|
-
const defaultQualifier = [{
|
|
26
|
-
attribute: InitTypeQualifierAttribute,
|
|
27
|
-
value: initTypeQualifierAttributeValue,
|
|
28
|
-
}, {
|
|
29
|
-
attribute: LoadUnitNameQualifierAttribute,
|
|
30
|
-
value: this.name,
|
|
31
|
-
}];
|
|
32
|
-
defaultQualifier.forEach(qualifier => {
|
|
33
|
-
QualifierUtil.addProtoQualifier(clazz, qualifier.attribute, qualifier.value);
|
|
34
|
-
});
|
|
35
|
-
const protos = await EggPrototypeCreatorFactory.createProto(clazz, this);
|
|
36
|
-
for (const proto of protos) {
|
|
37
|
-
EggPrototypeFactory.instance.registerPrototype(proto, this);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
containPrototype(proto) {
|
|
42
|
-
return !!(this.protoMap.get(proto.name)?.find(t => t === proto));
|
|
43
|
-
}
|
|
44
|
-
getEggPrototype(name, qualifiers) {
|
|
45
|
-
const protos = this.protoMap.get(name);
|
|
46
|
-
return protos?.filter(proto => proto.verifyQualifiers(qualifiers)) || [];
|
|
47
|
-
}
|
|
48
|
-
registerEggPrototype(proto) {
|
|
49
|
-
const protoList = MapUtil.getOrStore(this.protoMap, proto.name, []);
|
|
50
|
-
protoList.push(proto);
|
|
51
|
-
}
|
|
52
|
-
deletePrototype(proto) {
|
|
53
|
-
const protos = this.protoMap.get(proto.name);
|
|
54
|
-
if (protos) {
|
|
55
|
-
const index = protos.indexOf(proto);
|
|
56
|
-
if (index !== -1) {
|
|
57
|
-
protos.splice(index, 1);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
async destroy() {
|
|
62
|
-
for (const namedProtos of this.protoMap.values()) {
|
|
63
|
-
// Delete prototype will delete item
|
|
64
|
-
// array iterator is not safe
|
|
65
|
-
const protos = namedProtos.slice();
|
|
66
|
-
for (const proto of protos) {
|
|
67
|
-
EggPrototypeFactory.instance.deletePrototype(proto, this);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
this.protoMap.clear();
|
|
71
|
-
}
|
|
72
|
-
iterateEggPrototype() {
|
|
73
|
-
const protos = Array.from(this.protoMap.values())
|
|
74
|
-
.reduce((p, c) => {
|
|
75
|
-
p = p.concat(c);
|
|
76
|
-
return p;
|
|
77
|
-
}, []);
|
|
78
|
-
return protos.values();
|
|
79
|
-
}
|
|
80
|
-
static createModule(ctx) {
|
|
81
|
-
return new AppLoadUnit('tegg-app', ctx.unitPath, ctx.loader);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
LoadUnitFactory.registerLoadUnitCreator(EggLoadUnitType.APP, AppLoadUnit.createModule);
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwTG9hZFVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBcHBMb2FkVW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUdmLG1CQUFtQixFQUduQixlQUFlLEVBRWYsMEJBQTBCLEdBQzNCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLGFBQWEsRUFHYixhQUFhLEVBQ2IsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsYUFBYSxHQUMxRSxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsTUFBTSxPQUFPLFdBQVc7SUFDTCxNQUFNLENBQVM7SUFDaEMsRUFBRSxDQUFLO0lBQ0UsSUFBSSxDQUFTO0lBQ2IsSUFBSSxHQUF3QixlQUFlLENBQUMsR0FBRyxDQUFDO0lBQ2hELFFBQVEsQ0FBUztJQUNsQixRQUFRLEdBQTBDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFcEUsWUFBWSxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxNQUFjO1FBQ3hELElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzlCLDhDQUE4QztZQUM5QyxNQUFNLCtCQUErQixHQUFHLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7Z0JBQzdFLFFBQVEsRUFBRSxJQUFJ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
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { EggLoadUnitType } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { ObjectInitType, IdenticalUtil } from '@eggjs/tegg';
|
|
3
|
-
import { MapUtil } from '@eggjs/tegg-common-util';
|
|
4
|
-
import { EggObjectFactory, LoadUnitInstanceFactory, LoadUnitInstanceLifecycleUtil, } from '@eggjs/tegg-runtime';
|
|
5
|
-
export class AppLoadUnitInstance {
|
|
6
|
-
loadUnit;
|
|
7
|
-
id;
|
|
8
|
-
name;
|
|
9
|
-
protoToCreateMap = new Map();
|
|
10
|
-
eggObjectMap = new Map();
|
|
11
|
-
eggObjectPromiseMap = new Map();
|
|
12
|
-
constructor(loadUnit) {
|
|
13
|
-
this.loadUnit = loadUnit;
|
|
14
|
-
this.name = loadUnit.name;
|
|
15
|
-
const iterator = this.loadUnit.iterateEggPrototype();
|
|
16
|
-
for (const proto of iterator) {
|
|
17
|
-
if (proto.initType === ObjectInitType.SINGLETON) {
|
|
18
|
-
this.protoToCreateMap.set(proto.name, proto);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
this.id = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
|
|
22
|
-
}
|
|
23
|
-
iterateProtoToCreate() {
|
|
24
|
-
return this.protoToCreateMap.entries();
|
|
25
|
-
}
|
|
26
|
-
addProtoToCreate(name, proto) {
|
|
27
|
-
this.protoToCreateMap.set(name, proto);
|
|
28
|
-
}
|
|
29
|
-
deleteProtoToCreate(name) {
|
|
30
|
-
this.protoToCreateMap.delete(name);
|
|
31
|
-
}
|
|
32
|
-
async init(ctx) {
|
|
33
|
-
await LoadUnitInstanceLifecycleUtil.objectPreCreate(ctx, this);
|
|
34
|
-
for (const [name, proto] of this.protoToCreateMap) {
|
|
35
|
-
await this.getOrCreateEggObject(name, proto);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
async destroy() {
|
|
39
|
-
const objs = [];
|
|
40
|
-
for (const protoObjMap of this.eggObjectMap.values()) {
|
|
41
|
-
for (const protoObj of protoObjMap.values()) {
|
|
42
|
-
objs.push(protoObj);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
this.eggObjectMap.clear();
|
|
46
|
-
await Promise.all(objs.map(async (obj) => {
|
|
47
|
-
await EggObjectFactory.destroyObject(obj);
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
async getOrCreateEggObject(name, proto) {
|
|
51
|
-
if (!this.loadUnit.containPrototype(proto)) {
|
|
52
|
-
throw new Error('load unit not contain proto');
|
|
53
|
-
}
|
|
54
|
-
const protoObjMap = MapUtil.getOrStore(this.eggObjectMap, proto.id, new Map());
|
|
55
|
-
if (!protoObjMap.has(name)) {
|
|
56
|
-
const protoObjPromiseMap = MapUtil.getOrStore(this.eggObjectPromiseMap, proto.id, new Map());
|
|
57
|
-
if (!protoObjPromiseMap.has(name)) {
|
|
58
|
-
const objPromise = EggObjectFactory.createObject(name, proto);
|
|
59
|
-
protoObjPromiseMap.set(name, objPromise);
|
|
60
|
-
const obj = await objPromise;
|
|
61
|
-
protoObjPromiseMap.delete(name);
|
|
62
|
-
protoObjMap.set(name, obj);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
await protoObjPromiseMap.get(name);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return protoObjMap.get(name);
|
|
69
|
-
}
|
|
70
|
-
getEggObject(name, proto) {
|
|
71
|
-
const protoObjMap = this.eggObjectMap.get(proto.id);
|
|
72
|
-
if (!protoObjMap || !protoObjMap.has(name)) {
|
|
73
|
-
throw new Error(`EggObject ${String(proto.name)} not found`);
|
|
74
|
-
}
|
|
75
|
-
return protoObjMap.get(name);
|
|
76
|
-
}
|
|
77
|
-
static createModuleLoadUnitInstance(ctx) {
|
|
78
|
-
return new AppLoadUnitInstance(ctx.loadUnit);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
LoadUnitInstanceFactory.registerLoadUnitInstanceClass(EggLoadUnitType.APP, AppLoadUnitInstance.createModuleLoadUnitInstance);
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwTG9hZFVuaXRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkFwcExvYWRVbml0SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBMEIsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQW1DLGNBQWMsRUFBTSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFDTSxnQkFBZ0IsRUFFM0IsdUJBQXVCLEVBQ1csNkJBQTZCLEdBQ2hFLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixRQUFRLENBQVc7SUFDbkIsRUFBRSxDQUFTO0lBQ1gsSUFBSSxDQUFTO0lBQ2QsZ0JBQWdCLEdBQXdDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbEUsWUFBWSxHQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BFLG1CQUFtQixHQUF1RCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVGLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNyRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLHdC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
|
package/lib/CompatibleUtil.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { EggPrototypeFactory } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { InitTypeQualifierAttribute, ObjectInitType } from '@eggjs/tegg';
|
|
3
|
-
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
4
|
-
import { ProxyUtil } from '@eggjs/tegg-common-util';
|
|
5
|
-
export class CompatibleUtil {
|
|
6
|
-
static singletonProtoCache = new Map();
|
|
7
|
-
static requestProtoCache = new Map();
|
|
8
|
-
static getSingletonProto(name) {
|
|
9
|
-
if (!this.singletonProtoCache.has(name)) {
|
|
10
|
-
const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, [{
|
|
11
|
-
attribute: InitTypeQualifierAttribute,
|
|
12
|
-
value: ObjectInitType.SINGLETON,
|
|
13
|
-
}]);
|
|
14
|
-
this.singletonProtoCache.set(name, proto);
|
|
15
|
-
}
|
|
16
|
-
return this.singletonProtoCache.get(name);
|
|
17
|
-
}
|
|
18
|
-
static getRequestProto(name) {
|
|
19
|
-
if (!this.requestProtoCache.has(name)) {
|
|
20
|
-
const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, [{
|
|
21
|
-
attribute: InitTypeQualifierAttribute,
|
|
22
|
-
value: ObjectInitType.CONTEXT,
|
|
23
|
-
}]);
|
|
24
|
-
this.requestProtoCache.set(name, proto);
|
|
25
|
-
}
|
|
26
|
-
return this.requestProtoCache.get(name);
|
|
27
|
-
}
|
|
28
|
-
static singletonModuleProxyFactory(app, loadUnitInstance) {
|
|
29
|
-
let deprecated = false;
|
|
30
|
-
return function (_, p) {
|
|
31
|
-
const proto = CompatibleUtil.getSingletonProto(p);
|
|
32
|
-
const eggObj = EggContainerFactory.getEggObject(proto);
|
|
33
|
-
if (!deprecated) {
|
|
34
|
-
deprecated = true;
|
|
35
|
-
app.deprecate(`[egg/module] Please use await app.getEggObject(clazzName) instead of app.${loadUnitInstance.name}.${String(p)}`);
|
|
36
|
-
}
|
|
37
|
-
return eggObj.obj;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
static appCompatible(app, loadUnitInstance) {
|
|
41
|
-
const moduleLoadUnitProxy = ProxyUtil.safeProxy(loadUnitInstance, CompatibleUtil.singletonModuleProxyFactory(app, loadUnitInstance));
|
|
42
|
-
Reflect.defineProperty(app.module, loadUnitInstance.name, {
|
|
43
|
-
configurable: true,
|
|
44
|
-
value: moduleLoadUnitProxy,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
static contextModuleProxyFactory(holder, ctx, loadUnitInstance) {
|
|
48
|
-
const cacheKey = `_${loadUnitInstance.name}Proxy`;
|
|
49
|
-
if (!holder[cacheKey]) {
|
|
50
|
-
let deprecated = false;
|
|
51
|
-
const getter = function (_, p) {
|
|
52
|
-
const proto = CompatibleUtil.getRequestProto(p);
|
|
53
|
-
const eggObj = EggContainerFactory.getEggObject(proto, p);
|
|
54
|
-
if (!deprecated) {
|
|
55
|
-
deprecated = true;
|
|
56
|
-
ctx.app.deprecate(`[egg/module] Please use await ctx.getEggObject(clazzName) instead of ctx.${loadUnitInstance.name}.${String(p)}`);
|
|
57
|
-
}
|
|
58
|
-
return eggObj.obj;
|
|
59
|
-
};
|
|
60
|
-
holder[cacheKey] = ProxyUtil.safeProxy(loadUnitInstance, getter);
|
|
61
|
-
}
|
|
62
|
-
return holder[cacheKey];
|
|
63
|
-
}
|
|
64
|
-
static contextModuleCompatible(ctx, loadUnitInstances) {
|
|
65
|
-
const loadUnitInstanceMap = loadUnitInstances.reduce((p, c) => {
|
|
66
|
-
p[c.name] = c;
|
|
67
|
-
return p;
|
|
68
|
-
}, {});
|
|
69
|
-
Reflect.defineProperty(ctx, 'module', {
|
|
70
|
-
configurable: true,
|
|
71
|
-
enumerable: true,
|
|
72
|
-
get() {
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
74
|
-
const ctx = this;
|
|
75
|
-
if (!this._moduleProxy) {
|
|
76
|
-
const ctxModule = Object.create(loadUnitInstanceMap);
|
|
77
|
-
this._moduleProxy = ProxyUtil.safeProxy(ctxModule, (_, p) => {
|
|
78
|
-
const loadUnitInstance = Reflect.get(ctxModule, p);
|
|
79
|
-
if (!loadUnitInstance) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
return CompatibleUtil.contextModuleProxyFactory(ctxModule, ctx, loadUnitInstance);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
return this._moduleProxy;
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
static clean() {
|
|
90
|
-
this.singletonProtoCache.clear();
|
|
91
|
-
this.requestProtoCache.clear();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGF0aWJsZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJDb21wYXRpYmxlVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWdCLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxtQkFBbUIsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2RSxNQUFNLENBQUMsaUJBQWlCLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7SUFFckUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQWlCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7b0JBQ3hFLFNBQVMsRUFBRSwwQkFBMEI7b0JBQ3JDLEtBQUssRUFBRSxjQUFjLENBQUMsU0FBUztpQkFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDSixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQWlCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUks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
|
package/lib/EggAppLoader.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { TeggError } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { AccessLevel, EggQualifierAttribute, EggType, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, ObjectInitType, PrototypeUtil, QualifierUtil, } from '@eggjs/tegg';
|
|
3
|
-
import { ObjectUtils } from '@eggjs/tegg-common-util';
|
|
4
|
-
import { BackgroundTaskHelper } from '@eggjs/tegg-background-task';
|
|
5
|
-
import { EggObjectFactory } from '@eggjs/tegg-dynamic-inject-runtime';
|
|
6
|
-
import { ModuleConfigLoader } from './ModuleConfigLoader.js';
|
|
7
|
-
import { COMPATIBLE_PROTO_IMPLE_TYPE } from './EggCompatibleProtoImpl.js';
|
|
8
|
-
export const APP_CLAZZ_BLACK_LIST = [
|
|
9
|
-
'eggObjectFactory',
|
|
10
|
-
'moduleConfigs',
|
|
11
|
-
];
|
|
12
|
-
export const CONTEXT_CLAZZ_BLACK_LIST = [
|
|
13
|
-
// just use the app.logger, ctx logger is deprecated.
|
|
14
|
-
'logger',
|
|
15
|
-
];
|
|
16
|
-
export const DEFAULT_APP_CLAZZ = [];
|
|
17
|
-
export const DEFAULT_CONTEXT_CLAZZ = [
|
|
18
|
-
'user',
|
|
19
|
-
];
|
|
20
|
-
export class EggAppLoader {
|
|
21
|
-
app;
|
|
22
|
-
moduleConfigLoader;
|
|
23
|
-
constructor(app) {
|
|
24
|
-
this.app = app;
|
|
25
|
-
this.moduleConfigLoader = new ModuleConfigLoader(this.app);
|
|
26
|
-
}
|
|
27
|
-
buildClazz(name, eggType) {
|
|
28
|
-
const app = this.app;
|
|
29
|
-
let func;
|
|
30
|
-
if (eggType === EggType.APP) {
|
|
31
|
-
func = function () {
|
|
32
|
-
return app[name];
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
func = function () {
|
|
37
|
-
const ctx = app.currentContext;
|
|
38
|
-
if (!ctx) {
|
|
39
|
-
// ctx has been destroyed, throw humanize error info
|
|
40
|
-
throw TeggError.create(`Can not read property \`${name}\` because egg ctx has been destroyed`, 'read_after_ctx_destroyed');
|
|
41
|
-
}
|
|
42
|
-
return ctx[name];
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
Object.defineProperty(func, 'name', {
|
|
46
|
-
value: name,
|
|
47
|
-
writable: false,
|
|
48
|
-
enumerable: false,
|
|
49
|
-
configurable: true,
|
|
50
|
-
});
|
|
51
|
-
PrototypeUtil.setIsEggPrototype(func);
|
|
52
|
-
PrototypeUtil.setFilePath(func, 'mock_file_path');
|
|
53
|
-
PrototypeUtil.setProperty(func, {
|
|
54
|
-
name,
|
|
55
|
-
initType: ObjectInitType.SINGLETON,
|
|
56
|
-
accessLevel: AccessLevel.PUBLIC,
|
|
57
|
-
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE,
|
|
58
|
-
});
|
|
59
|
-
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, 'app');
|
|
60
|
-
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
61
|
-
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, eggType);
|
|
62
|
-
return func;
|
|
63
|
-
}
|
|
64
|
-
buildAppLoggerClazz(name) {
|
|
65
|
-
const app = this.app;
|
|
66
|
-
const func = function () {
|
|
67
|
-
return app.getLogger(name);
|
|
68
|
-
};
|
|
69
|
-
Object.defineProperty(func, 'name', {
|
|
70
|
-
value: name,
|
|
71
|
-
writable: false,
|
|
72
|
-
enumerable: false,
|
|
73
|
-
configurable: true,
|
|
74
|
-
});
|
|
75
|
-
PrototypeUtil.setIsEggPrototype(func);
|
|
76
|
-
PrototypeUtil.setFilePath(func, 'mock_file_path');
|
|
77
|
-
PrototypeUtil.setProperty(func, {
|
|
78
|
-
name,
|
|
79
|
-
initType: ObjectInitType.SINGLETON,
|
|
80
|
-
accessLevel: AccessLevel.PUBLIC,
|
|
81
|
-
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE,
|
|
82
|
-
});
|
|
83
|
-
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, 'app');
|
|
84
|
-
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
85
|
-
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, EggType.APP);
|
|
86
|
-
return func;
|
|
87
|
-
}
|
|
88
|
-
getLoggerNames(ctxClazzNames, singletonClazzNames) {
|
|
89
|
-
const loggerNames = Array.from(this.app.loggers.keys());
|
|
90
|
-
// filter logger/coreLogger
|
|
91
|
-
return loggerNames.filter(t => !ctxClazzNames.includes(t) && !singletonClazzNames.includes(t));
|
|
92
|
-
}
|
|
93
|
-
async load() {
|
|
94
|
-
const app = this.app;
|
|
95
|
-
const appProperties = ObjectUtils.getProperties(app);
|
|
96
|
-
const contextProperties = ObjectUtils.getProperties(app.context);
|
|
97
|
-
// custom plugin may define property conflict with default list
|
|
98
|
-
const allSingletonClazzNameSet = new Set([
|
|
99
|
-
...appProperties,
|
|
100
|
-
...DEFAULT_APP_CLAZZ,
|
|
101
|
-
]);
|
|
102
|
-
APP_CLAZZ_BLACK_LIST.forEach(t => allSingletonClazzNameSet.delete(t));
|
|
103
|
-
const allSingletonClazzNames = Array.from(allSingletonClazzNameSet);
|
|
104
|
-
const allContextClazzNamesSet = new Set([
|
|
105
|
-
...contextProperties,
|
|
106
|
-
...DEFAULT_CONTEXT_CLAZZ,
|
|
107
|
-
]);
|
|
108
|
-
CONTEXT_CLAZZ_BLACK_LIST.forEach(t => allContextClazzNamesSet.delete(t));
|
|
109
|
-
const allContextClazzNames = Array.from(allContextClazzNamesSet);
|
|
110
|
-
const loggerNames = this.getLoggerNames(allContextClazzNames, allSingletonClazzNames);
|
|
111
|
-
const allSingletonClazzs = allSingletonClazzNames.map(name => this.buildClazz(name, EggType.APP));
|
|
112
|
-
const allContextClazzs = allContextClazzNames.map(name => this.buildClazz(name, EggType.CONTEXT));
|
|
113
|
-
const appLoggerClazzs = loggerNames.map(name => this.buildAppLoggerClazz(name));
|
|
114
|
-
const moduleConfigList = this.moduleConfigLoader.loadModuleConfigList();
|
|
115
|
-
return [
|
|
116
|
-
...allSingletonClazzs,
|
|
117
|
-
...allContextClazzs,
|
|
118
|
-
...appLoggerClazzs,
|
|
119
|
-
...moduleConfigList,
|
|
120
|
-
// inner helper class list
|
|
121
|
-
// TODO: should auto the inner class
|
|
122
|
-
BackgroundTaskHelper,
|
|
123
|
-
EggObjectFactory,
|
|
124
|
-
];
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQXBwTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRWdnQXBwTG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsV0FBVyxFQUVYLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsMEJBQTBCLEVBQzFCLDhCQUE4QixFQUM5QixjQUFjLEVBQ2QsYUFBYSxFQUNiLGFBQWEsR0FDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsa0JBQWtCO0lBQ2xCLGVBQWU7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLHFEQUFxRDtJQUNyRCxRQUFRO0NBQ1QsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztBQUM5QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxNQUFNO0NBQ1AsQ0FBQztBQUVGLE1BQU0sT0FBTyxZQUFZO0lBQ04sR0FBRyxDQUFjO0lBQ2pCLGtCQUFrQixDQUFxQjtJQUV4RCxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lB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
|