@eggjs/tegg-plugin 4.0.0-beta.34 → 4.0.0-beta.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/extend/application.d.ts +28 -24
- package/dist/app/extend/application.js +69 -75
- package/dist/app/extend/application.unittest.d.ts +9 -5
- package/dist/app/extend/application.unittest.js +39 -50
- package/dist/app/extend/context.d.ts +12 -8
- package/dist/app/extend/context.js +27 -32
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.d.ts +5 -2
- package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +7 -3
- package/dist/app.d.ts +20 -16
- package/dist/app.js +50 -57
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -3
- package/dist/lib/AppLoadUnit.d.ts +23 -19
- package/dist/lib/AppLoadUnit.js +77 -92
- package/dist/lib/AppLoadUnitInstance.d.ts +23 -19
- package/dist/lib/AppLoadUnitInstance.js +69 -82
- package/dist/lib/CompatibleUtil.d.ts +22 -18
- package/dist/lib/CompatibleUtil.js +99 -104
- package/dist/lib/ConfigSourceLoadUnitHook.d.ts +13 -8
- package/dist/lib/ConfigSourceLoadUnitHook.js +20 -19
- package/dist/lib/EggAppLoader.d.ts +19 -15
- package/dist/lib/EggAppLoader.js +104 -115
- package/dist/lib/EggCompatibleObject.d.ts +19 -15
- package/dist/lib/EggCompatibleObject.js +34 -41
- package/dist/lib/EggCompatibleProtoImpl.d.ts +25 -21
- package/dist/lib/EggCompatibleProtoImpl.js +49 -52
- package/dist/lib/EggContextCompatibleHook.d.ts +13 -9
- package/dist/lib/EggContextCompatibleHook.js +32 -44
- package/dist/lib/EggContextHandler.d.ts +12 -8
- package/dist/lib/EggContextHandler.js +28 -25
- package/dist/lib/EggContextImpl.d.ts +9 -5
- package/dist/lib/EggContextImpl.js +18 -15
- package/dist/lib/EggModuleLoader.d.ts +14 -10
- package/dist/lib/EggModuleLoader.js +48 -52
- package/dist/lib/EggQualifierProtoHook.d.ts +13 -9
- package/dist/lib/EggQualifierProtoHook.js +46 -60
- package/dist/lib/ModuleConfigLoader.d.ts +11 -7
- package/dist/lib/ModuleConfigLoader.js +81 -79
- package/dist/lib/ModuleHandler.d.ts +16 -12
- package/dist/lib/ModuleHandler.js +44 -51
- package/dist/lib/Utils.d.ts +4 -1
- package/dist/lib/Utils.js +30 -33
- package/dist/lib/ctx_lifecycle_middleware.d.ts +6 -2
- package/dist/lib/ctx_lifecycle_middleware.js +24 -30
- package/dist/lib/run_in_background.d.ts +7 -3
- package/dist/lib/run_in_background.js +46 -54
- package/dist/types.d.ts +54 -53
- package/dist/types.js +3 -2
- package/package.json +47 -51
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { LifecycleHook } from "@eggjs/lifecycle";
|
|
2
|
+
import { LoadUnit, LoadUnitLifecycleContext } from "@eggjs/metadata";
|
|
3
|
+
import { Application } from "egg";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/EggQualifierProtoHook.d.ts
|
|
6
|
+
declare class EggQualifierProtoHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
7
|
+
private readonly app;
|
|
8
|
+
constructor(app: Application);
|
|
9
|
+
preCreate(ctx: LoadUnitLifecycleContext): Promise<void>;
|
|
10
|
+
private isAppObject;
|
|
11
|
+
private isCtxObject;
|
|
10
12
|
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { EggQualifierProtoHook };
|
|
@@ -1,60 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return appProperties.includes(name);
|
|
48
|
-
}
|
|
49
|
-
isCtxObject(name, ctxProperties) {
|
|
50
|
-
name = String(name);
|
|
51
|
-
if (CONTEXT_CLAZZ_BLACK_LIST.includes(name)) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
if (DEFAULT_CONTEXT_CLAZZ.includes(name)) {
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
return ctxProperties.includes(name);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUXVhbGlmaWVyUHJvdG9Ib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dRdWFsaWZpZXJQcm90b0hvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUlyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixHQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxxQkFBcUI7SUFDZixHQUFHLENBQWM7SUFFbEMsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUE2QjtRQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FDSCxtRkFBbUYsRUFDbkYsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUM1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
|
|
1
|
+
import { APP_CLAZZ_BLACK_LIST, CONTEXT_CLAZZ_BLACK_LIST, DEFAULT_APP_CLAZZ, DEFAULT_CONTEXT_CLAZZ } from "./EggAppLoader.js";
|
|
2
|
+
import { debuglog } from "node:util";
|
|
3
|
+
import { EggQualifierAttribute, EggType, PrototypeUtil, QualifierUtil } from "@eggjs/core-decorator";
|
|
4
|
+
import { ObjectUtils } from "@eggjs/tegg-common-util";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/EggQualifierProtoHook.ts
|
|
7
|
+
const debug = debuglog("egg/tegg/plugin/tegg/lib/EggQualifierProtoHook");
|
|
8
|
+
var EggQualifierProtoHook = class {
|
|
9
|
+
app;
|
|
10
|
+
constructor(app) {
|
|
11
|
+
this.app = app;
|
|
12
|
+
}
|
|
13
|
+
async preCreate(ctx) {
|
|
14
|
+
const clazzList = await ctx.loader.load();
|
|
15
|
+
const appProperties = ObjectUtils.getProperties(this.app);
|
|
16
|
+
const ctxProperties = ObjectUtils.getProperties(this.app.context);
|
|
17
|
+
if (debug.enabled) debug("preCreate, get clazzList:%o, appProperties:%o, ctxProperties:%o, from unitPath:%o", clazzList.map((t) => t.name), appProperties.length, ctxProperties.length, ctx.unitPath);
|
|
18
|
+
for (const clazz of clazzList) {
|
|
19
|
+
const inbjectObjects = PrototypeUtil.getInjectObjects(clazz) || [];
|
|
20
|
+
if (debug.enabled && inbjectObjects.length > 0) debug("preCreate, get injectObjects:%o, from clazz:%o, from unitPath:%o", inbjectObjects.map((t) => t.refName), clazz.name, ctx.unitPath);
|
|
21
|
+
for (const injectObject of inbjectObjects) {
|
|
22
|
+
if (QualifierUtil.getProperQualifiers(clazz, injectObject.refName).find((t) => t.attribute === EggQualifierAttribute)) continue;
|
|
23
|
+
if (this.isCtxObject(injectObject.objName, ctxProperties)) QualifierUtil.addProperQualifier(clazz, injectObject.refName, EggQualifierAttribute, EggType.CONTEXT);
|
|
24
|
+
else if (this.isAppObject(injectObject.objName, appProperties)) {
|
|
25
|
+
QualifierUtil.addProperQualifier(clazz, injectObject.refName, EggQualifierAttribute, EggType.APP);
|
|
26
|
+
debug("preCreate, add proper qualifier:%o to clazz:%o, from unitPath:%o", injectObject.refName, clazz.name, ctx.unitPath);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
isAppObject(name, appProperties) {
|
|
32
|
+
name = String(name);
|
|
33
|
+
if (APP_CLAZZ_BLACK_LIST.includes(name)) return false;
|
|
34
|
+
if (DEFAULT_APP_CLAZZ.includes(name)) return true;
|
|
35
|
+
return appProperties.includes(name);
|
|
36
|
+
}
|
|
37
|
+
isCtxObject(name, ctxProperties) {
|
|
38
|
+
name = String(name);
|
|
39
|
+
if (CONTEXT_CLAZZ_BLACK_LIST.includes(name)) return false;
|
|
40
|
+
if (DEFAULT_CONTEXT_CLAZZ.includes(name)) return true;
|
|
41
|
+
return ctxProperties.includes(name);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { EggQualifierProtoHook };
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { EggProtoImplClass } from "@eggjs/core-decorator";
|
|
2
|
+
import { Application } from "egg";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/ModuleConfigLoader.d.ts
|
|
5
|
+
declare class ModuleConfigLoader {
|
|
6
|
+
readonly app: Application;
|
|
7
|
+
constructor(app: Application);
|
|
8
|
+
private loadModuleConfigs;
|
|
9
|
+
loadModuleConfigList(): EggProtoImplClass[];
|
|
8
10
|
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { ModuleConfigLoader };
|
|
@@ -1,80 +1,82 @@
|
|
|
1
|
-
import { AccessLevel, EggQualifierAttribute, EggType, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, ObjectInitType, PrototypeUtil, QualifierUtil, ConfigSourceQualifierAttribute, } from '@eggjs/core-decorator';
|
|
2
|
-
import { ModuleConfigs, ModuleConfigUtil } from '@eggjs/tegg-common-util';
|
|
3
|
-
import { extend } from 'extend2';
|
|
4
1
|
import { COMPATIBLE_PROTO_IMPLE_TYPE } from "./EggCompatibleProtoImpl.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
2
|
+
import { AccessLevel, ConfigSourceQualifierAttribute, EggQualifierAttribute, EggType, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, ObjectInitType, PrototypeUtil, QualifierUtil } from "@eggjs/core-decorator";
|
|
3
|
+
import { ModuleConfigUtil, ModuleConfigs } from "@eggjs/tegg-common-util";
|
|
4
|
+
import { extend } from "extend2";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/ModuleConfigLoader.ts
|
|
7
|
+
var ModuleConfigLoader = class {
|
|
8
|
+
app;
|
|
9
|
+
constructor(app) {
|
|
10
|
+
this.app = app;
|
|
11
|
+
}
|
|
12
|
+
loadModuleConfigs(moduleConfigMap) {
|
|
13
|
+
const moduleConfigs = new ModuleConfigs(moduleConfigMap);
|
|
14
|
+
const func = function() {
|
|
15
|
+
return moduleConfigs;
|
|
16
|
+
};
|
|
17
|
+
const name = "moduleConfigs";
|
|
18
|
+
Object.defineProperty(func, "name", {
|
|
19
|
+
value: name,
|
|
20
|
+
writable: false,
|
|
21
|
+
enumerable: false,
|
|
22
|
+
configurable: true
|
|
23
|
+
});
|
|
24
|
+
PrototypeUtil.setIsEggPrototype(func);
|
|
25
|
+
PrototypeUtil.setFilePath(func, "mock_file_path");
|
|
26
|
+
PrototypeUtil.setProperty(func, {
|
|
27
|
+
name,
|
|
28
|
+
initType: ObjectInitType.SINGLETON,
|
|
29
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
30
|
+
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE
|
|
31
|
+
});
|
|
32
|
+
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, "app");
|
|
33
|
+
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
34
|
+
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, EggType.APP);
|
|
35
|
+
return func;
|
|
36
|
+
}
|
|
37
|
+
loadModuleConfigList() {
|
|
38
|
+
const result = [];
|
|
39
|
+
const moduleConfigMap = {};
|
|
40
|
+
for (const reference of this.app.moduleReferences) {
|
|
41
|
+
const moduleName = ModuleConfigUtil.readModuleNameSync(reference.path);
|
|
42
|
+
const config = extend(true, {}, ModuleConfigUtil.loadModuleConfigSync(reference.path, void 0, this.app.config.env), this.app.moduleConfigs[moduleName]?.config);
|
|
43
|
+
moduleConfigMap[moduleName] = {
|
|
44
|
+
name: moduleName,
|
|
45
|
+
reference: {
|
|
46
|
+
name: moduleName,
|
|
47
|
+
path: reference.path
|
|
48
|
+
},
|
|
49
|
+
config
|
|
50
|
+
};
|
|
51
|
+
const func = function() {
|
|
52
|
+
return config;
|
|
53
|
+
};
|
|
54
|
+
const name = "moduleConfig";
|
|
55
|
+
Object.defineProperty(func, "name", {
|
|
56
|
+
value: name,
|
|
57
|
+
writable: false,
|
|
58
|
+
enumerable: false,
|
|
59
|
+
configurable: true
|
|
60
|
+
});
|
|
61
|
+
PrototypeUtil.setIsEggPrototype(func);
|
|
62
|
+
PrototypeUtil.setFilePath(func, "mock_file_path");
|
|
63
|
+
PrototypeUtil.setProperty(func, {
|
|
64
|
+
name,
|
|
65
|
+
initType: ObjectInitType.SINGLETON,
|
|
66
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
67
|
+
protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE
|
|
68
|
+
});
|
|
69
|
+
QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, "app");
|
|
70
|
+
QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
|
|
71
|
+
QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, EggType.APP);
|
|
72
|
+
QualifierUtil.addProtoQualifier(func, ConfigSourceQualifierAttribute, moduleName);
|
|
73
|
+
result.push(func);
|
|
74
|
+
}
|
|
75
|
+
const moduleConfigs = this.loadModuleConfigs(moduleConfigMap);
|
|
76
|
+
result.push(moduleConfigs);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
export { ModuleConfigLoader };
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { LoadUnit } from "@eggjs/metadata";
|
|
2
|
+
import { LoadUnitInstance } from "@eggjs/tegg-runtime";
|
|
3
|
+
import { Base } from "sdk-base";
|
|
4
|
+
import { Application } from "egg";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/ModuleHandler.d.ts
|
|
7
|
+
declare class ModuleHandler extends Base {
|
|
8
|
+
loadUnits: LoadUnit[];
|
|
9
|
+
loadUnitInstances: LoadUnitInstance[];
|
|
10
|
+
private readonly loadUnitLoader;
|
|
11
|
+
private readonly app;
|
|
12
|
+
constructor(app: Application);
|
|
13
|
+
init(): Promise<void>;
|
|
14
|
+
destroy(): Promise<void>;
|
|
13
15
|
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { ModuleHandler };
|
|
@@ -1,52 +1,45 @@
|
|
|
1
|
-
import { Base } from 'sdk-base';
|
|
2
|
-
import { EggLoadUnitType, LoadUnitFactory } from '@eggjs/metadata';
|
|
3
|
-
import { LoadUnitInstanceFactory } from '@eggjs/tegg-runtime';
|
|
4
|
-
import { EggModuleLoader } from "./EggModuleLoader.js";
|
|
5
|
-
import { CompatibleUtil } from "./CompatibleUtil.js";
|
|
6
1
|
import { COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl } from "./EggCompatibleProtoImpl.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvTW9kdWxlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxlQUFlLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xGLE9BQU8sRUFBeUIsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWxHLE1BQU0sT0FBTyxhQUFjLFNBQVEsSUFBSTtJQUNyQyxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBQzNCLGlCQUFpQixHQUF1QixFQUFFLENBQUM7SUFFMUIsY0FBYyxDQUFrQjtJQUNoQyxHQUFHLENBQWM7SUFFbEMsWUFBWSxHQUFnQjtRQUMxQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyx3QkFBd0IsQ0FDMUQsMkJBQTJCLEVBQzNCLHNCQUFzQixDQUFDLE1BQU0sQ0FDOUIsQ0FBQztZQUVGLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFNBQVMsR0FBdUIsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQVMsQ0FBQztZQUU1QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ25ELGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDbkQsQ0FBQztnQkFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxjQUFjLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFVLENBQUMsQ0FBQztZQUN2QixNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzlDLE1BQU0sdUJBQXVCLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxlQUFlLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
2
|
+
import { CompatibleUtil } from "./CompatibleUtil.js";
|
|
3
|
+
import { EggModuleLoader } from "./EggModuleLoader.js";
|
|
4
|
+
import { EggLoadUnitType, LoadUnitFactory } from "@eggjs/metadata";
|
|
5
|
+
import { LoadUnitInstanceFactory } from "@eggjs/tegg-runtime";
|
|
6
|
+
import { Base } from "sdk-base";
|
|
7
|
+
|
|
8
|
+
//#region src/lib/ModuleHandler.ts
|
|
9
|
+
var ModuleHandler = class extends Base {
|
|
10
|
+
loadUnits = [];
|
|
11
|
+
loadUnitInstances = [];
|
|
12
|
+
loadUnitLoader;
|
|
13
|
+
app;
|
|
14
|
+
constructor(app) {
|
|
15
|
+
super();
|
|
16
|
+
this.app = app;
|
|
17
|
+
this.loadUnitLoader = new EggModuleLoader(this.app);
|
|
18
|
+
}
|
|
19
|
+
async init() {
|
|
20
|
+
try {
|
|
21
|
+
this.app.eggPrototypeCreatorFactory.registerPrototypeCreator(COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl.create);
|
|
22
|
+
await this.loadUnitLoader.load();
|
|
23
|
+
const instances = [];
|
|
24
|
+
this.app.module = {};
|
|
25
|
+
for (const loadUnit of this.loadUnits) {
|
|
26
|
+
const instance = await LoadUnitInstanceFactory.createLoadUnitInstance(loadUnit);
|
|
27
|
+
if (instance.loadUnit.type !== EggLoadUnitType.APP) CompatibleUtil.appCompatible(this.app, instance);
|
|
28
|
+
instances.push(instance);
|
|
29
|
+
}
|
|
30
|
+
CompatibleUtil.contextModuleCompatible(this.app.context, instances);
|
|
31
|
+
this.loadUnitInstances = instances;
|
|
32
|
+
this.ready(true);
|
|
33
|
+
} catch (e) {
|
|
34
|
+
this.ready(e);
|
|
35
|
+
throw e;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async destroy() {
|
|
39
|
+
if (this.loadUnitInstances) for (const instance of this.loadUnitInstances) await LoadUnitInstanceFactory.destroyLoadUnitInstance(instance);
|
|
40
|
+
if (this.loadUnits) for (const loadUnit of this.loadUnits) await LoadUnitFactory.destroyLoadUnit(loadUnit);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { ModuleHandler };
|
package/dist/lib/Utils.d.ts
CHANGED
package/dist/lib/Utils.js
CHANGED
|
@@ -1,36 +1,33 @@
|
|
|
1
|
+
//#region src/lib/Utils.ts
|
|
1
2
|
function prepareObjectStackTrace(_, stack) {
|
|
2
|
-
|
|
3
|
+
return stack;
|
|
3
4
|
}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/* istanbul ignore if */
|
|
30
|
-
if (!callSite || !fileName)
|
|
31
|
-
return '<anonymous>';
|
|
32
|
-
if (!withLine)
|
|
33
|
-
return fileName;
|
|
34
|
-
return `${fileName}:${callSite.getLineNumber()}:${callSite.getColumnNumber()}`;
|
|
5
|
+
function getCalleeFromStack(withLine, stackIndex) {
|
|
6
|
+
stackIndex = stackIndex === void 0 ? 2 : stackIndex;
|
|
7
|
+
const limit = Error.stackTraceLimit;
|
|
8
|
+
const prep = Error.prepareStackTrace;
|
|
9
|
+
Error.prepareStackTrace = prepareObjectStackTrace;
|
|
10
|
+
Error.stackTraceLimit = 5;
|
|
11
|
+
const obj = {};
|
|
12
|
+
Error.captureStackTrace(obj);
|
|
13
|
+
let callSite = obj.stack[stackIndex];
|
|
14
|
+
let fileName;
|
|
15
|
+
/* istanbul ignore else */
|
|
16
|
+
if (callSite) {
|
|
17
|
+
fileName = callSite.getFileName();
|
|
18
|
+
/* istanbul ignore if */
|
|
19
|
+
if (fileName && fileName.endsWith("egg-mock/lib/app.js")) {
|
|
20
|
+
callSite = obj.stack[stackIndex + 1];
|
|
21
|
+
fileName = callSite.getFileName();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
Error.prepareStackTrace = prep;
|
|
25
|
+
Error.stackTraceLimit = limit;
|
|
26
|
+
/* istanbul ignore if */
|
|
27
|
+
if (!callSite || !fileName) return "<anonymous>";
|
|
28
|
+
if (!withLine) return fileName;
|
|
29
|
+
return `${fileName}:${callSite.getLineNumber()}:${callSite.getColumnNumber()}`;
|
|
35
30
|
}
|
|
36
|
-
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
export { getCalleeFromStack };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { Context, Next } from "egg";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/ctx_lifecycle_middleware.d.ts
|
|
4
|
+
declare function ctxLifecycleMiddleware(ctx: Context, next: Next): Promise<void>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { ctxLifecycleMiddleware };
|
|
@@ -1,32 +1,26 @@
|
|
|
1
|
-
import { ROOT_PROTO, TEGG_CONTEXT } from '@eggjs/module-common';
|
|
2
1
|
import { EggContextImpl } from "./EggContextImpl.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (teggCtx.destroy) {
|
|
25
|
-
teggCtx.destroy(lifecycleCtx).catch((e) => {
|
|
26
|
-
e.message = `[tegg/ctxLifecycleMiddleware] destroy tegg ctx failed: ${e.message}`;
|
|
27
|
-
ctx.logger.error(e);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
2
|
+
import { ROOT_PROTO, TEGG_CONTEXT } from "@eggjs/module-common";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/ctx_lifecycle_middleware.ts
|
|
5
|
+
async function ctxLifecycleMiddleware(ctx, next) {
|
|
6
|
+
if (ctx[TEGG_CONTEXT]) {
|
|
7
|
+
await next();
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const lifecycleCtx = {};
|
|
11
|
+
const teggCtx = new EggContextImpl(ctx);
|
|
12
|
+
const rootProto = ctx[ROOT_PROTO];
|
|
13
|
+
if (rootProto) teggCtx.set(ROOT_PROTO, rootProto);
|
|
14
|
+
if (teggCtx.init) await teggCtx.init(lifecycleCtx);
|
|
15
|
+
try {
|
|
16
|
+
await next();
|
|
17
|
+
} finally {
|
|
18
|
+
if (teggCtx.destroy) teggCtx.destroy(lifecycleCtx).catch((e) => {
|
|
19
|
+
e.message = `[tegg/ctxLifecycleMiddleware] destroy tegg ctx failed: ${e.message}`;
|
|
20
|
+
ctx.logger.error(e);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
31
23
|
}
|
|
32
|
-
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ctxLifecycleMiddleware };
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Application } from "egg";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/run_in_background.d.ts
|
|
4
|
+
declare const LONG_STACK_DELIMITER = "\n --------------------\n";
|
|
5
|
+
declare function hijackRunInBackground(app: Application): void;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { LONG_STACK_DELIMITER, hijackRunInBackground };
|