@eggjs/tegg-plugin 4.0.0-beta.8 → 4.0.0-beta.9

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.
Files changed (81) hide show
  1. package/dist/app/extend/application.d.ts +50 -4
  2. package/dist/app/extend/application.js +79 -10
  3. package/dist/app/extend/application.unittest.d.ts +22 -2
  4. package/dist/app/extend/application.unittest.js +55 -4
  5. package/dist/app/extend/context.d.ts +20 -2
  6. package/dist/app/extend/context.js +35 -5
  7. package/dist/app/middleware/tegg_ctx_lifecycle_middleware.d.ts +2 -5
  8. package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +4 -9
  9. package/dist/app.d.ts +16 -21
  10. package/dist/app.js +63 -65
  11. package/dist/index.d.ts +3 -6
  12. package/dist/index.js +4 -15
  13. package/dist/lib/AppLoadUnit.d.ts +19 -2
  14. package/dist/lib/AppLoadUnit.js +90 -3
  15. package/dist/lib/AppLoadUnitInstance.d.ts +20 -2
  16. package/dist/lib/AppLoadUnitInstance.js +82 -3
  17. package/dist/lib/CompatibleUtil.d.ts +13 -17
  18. package/dist/lib/CompatibleUtil.js +95 -3
  19. package/dist/lib/ConfigSourceLoadUnitHook.d.ts +4 -9
  20. package/dist/lib/ConfigSourceLoadUnitHook.js +21 -3
  21. package/dist/lib/EggAppLoader.d.ts +15 -19
  22. package/dist/lib/EggAppLoader.js +128 -5
  23. package/dist/lib/EggCompatibleObject.d.ts +18 -3
  24. package/dist/lib/EggCompatibleObject.js +42 -4
  25. package/dist/lib/EggCompatibleProtoImpl.d.ts +21 -2
  26. package/dist/lib/EggCompatibleProtoImpl.js +52 -3
  27. package/dist/lib/EggContextCompatibleHook.d.ts +9 -13
  28. package/dist/lib/EggContextCompatibleHook.js +44 -9
  29. package/dist/lib/EggContextHandler.d.ts +9 -2
  30. package/dist/lib/EggContextHandler.js +26 -3
  31. package/dist/lib/EggContextImpl.d.ts +5 -9
  32. package/dist/lib/EggContextImpl.js +15 -3
  33. package/dist/lib/EggModuleLoader.d.ts +10 -14
  34. package/dist/lib/EggModuleLoader.js +54 -6
  35. package/dist/lib/EggQualifierProtoHook.d.ts +9 -13
  36. package/dist/lib/EggQualifierProtoHook.js +62 -6
  37. package/dist/lib/ModuleConfigLoader.d.ts +7 -11
  38. package/dist/lib/ModuleConfigLoader.js +81 -4
  39. package/dist/lib/ModuleHandler.d.ts +13 -2
  40. package/dist/lib/ModuleHandler.js +53 -8
  41. package/dist/lib/Utils.d.ts +1 -4
  42. package/dist/lib/Utils.js +36 -3
  43. package/dist/lib/ctx_lifecycle_middleware.d.ts +2 -2
  44. package/dist/lib/ctx_lifecycle_middleware.js +33 -4
  45. package/dist/lib/run_in_background.d.ts +3 -7
  46. package/dist/lib/run_in_background.js +58 -7
  47. package/dist/types.d.ts +8 -6
  48. package/dist/types.js +5 -15
  49. package/package.json +12 -12
  50. package/dist/AppLoadUnit-BOWdS4O9.d.ts +0 -23
  51. package/dist/AppLoadUnit-uyHgElRL.js +0 -78
  52. package/dist/AppLoadUnitInstance-4Z_vSQV3.js +0 -69
  53. package/dist/AppLoadUnitInstance-DQ-DxlmR.d.ts +0 -24
  54. package/dist/CompatibleUtil-CNhydb0E.js +0 -96
  55. package/dist/ConfigSourceLoadUnitHook-BV-R31vA.js +0 -22
  56. package/dist/EggAppLoader-DFYg65ry.js +0 -106
  57. package/dist/EggCompatibleObject-XfIZyirS.js +0 -37
  58. package/dist/EggCompatibleObject-lzUCfsIY.d.ts +0 -21
  59. package/dist/EggCompatibleProtoImpl-CPxLvSu4.js +0 -50
  60. package/dist/EggCompatibleProtoImpl-DpacWKFB.d.ts +0 -25
  61. package/dist/EggContextCompatibleHook-eFfN2xm6.js +0 -31
  62. package/dist/EggContextHandler-D8gfTbZs.js +0 -29
  63. package/dist/EggContextHandler-vGi67He5.d.ts +0 -13
  64. package/dist/EggContextImpl-DkCLPTzT.js +0 -18
  65. package/dist/EggModuleLoader-CCfQMmp5.js +0 -50
  66. package/dist/EggQualifierProtoHook-D5jNm-1y.js +0 -48
  67. package/dist/ModuleConfigLoader-CvZLf99E.js +0 -84
  68. package/dist/ModuleHandler-Dyx7JGj-.d.ts +0 -17
  69. package/dist/ModuleHandler-fKcUqWca.js +0 -46
  70. package/dist/Utils-11aRpnkd.js +0 -33
  71. package/dist/application-Ccljinuy.d.ts +0 -57
  72. package/dist/application-DFI1junS.js +0 -70
  73. package/dist/application.unittest-Cmia71Fx.js +0 -43
  74. package/dist/application.unittest-CpoCu6-E.d.ts +0 -26
  75. package/dist/context-BWYE1dif.js +0 -30
  76. package/dist/context-BoIt2G5h.d.ts +0 -24
  77. package/dist/ctx_lifecycle_middleware-CIeSrbVY.js +0 -27
  78. package/dist/ctx_lifecycle_middleware-DV7uN5PG.d.ts +0 -6
  79. package/dist/run_in_background-CEUPBmDB.js +0 -51
  80. package/dist/types-BHg5p4Xk.js +0 -3
  81. package/dist/types-CuoKQV4X.d.ts +0 -7
@@ -1,8 +1,53 @@
1
- import "../EggCompatibleProtoImpl-CPxLvSu4.js";
2
- import "../ModuleConfigLoader-CvZLf99E.js";
3
- import "../EggAppLoader-DFYg65ry.js";
4
- import "../EggModuleLoader-CCfQMmp5.js";
5
- import "../CompatibleUtil-CNhydb0E.js";
6
- import { ModuleHandler } from "../ModuleHandler-fKcUqWca.js";
7
-
8
- export { ModuleHandler };
1
+ import { Base } from 'sdk-base';
2
+ import { Application, Context } from 'egg';
3
+ import { EggLoadUnitType, LoadUnitFactory, } from '@eggjs/tegg-metadata';
4
+ import { LoadUnitInstanceFactory } from '@eggjs/tegg-runtime';
5
+ import { EggModuleLoader } from "./EggModuleLoader.js";
6
+ import { CompatibleUtil } from "./CompatibleUtil.js";
7
+ import { COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl } from "./EggCompatibleProtoImpl.js";
8
+ export class ModuleHandler extends Base {
9
+ loadUnits = [];
10
+ loadUnitInstances = [];
11
+ loadUnitLoader;
12
+ app;
13
+ constructor(app) {
14
+ super();
15
+ this.app = app;
16
+ this.loadUnitLoader = new EggModuleLoader(this.app);
17
+ }
18
+ async init() {
19
+ try {
20
+ this.app.eggPrototypeCreatorFactory.registerPrototypeCreator(COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl.create);
21
+ await this.loadUnitLoader.load();
22
+ const instances = [];
23
+ this.app.module = {};
24
+ for (const loadUnit of this.loadUnits) {
25
+ const instance = await LoadUnitInstanceFactory.createLoadUnitInstance(loadUnit);
26
+ if (instance.loadUnit.type !== EggLoadUnitType.APP) {
27
+ CompatibleUtil.appCompatible(this.app, instance);
28
+ }
29
+ instances.push(instance);
30
+ }
31
+ CompatibleUtil.contextModuleCompatible(this.app.context, instances);
32
+ this.loadUnitInstances = instances;
33
+ this.ready(true);
34
+ }
35
+ catch (e) {
36
+ this.ready(e);
37
+ throw e;
38
+ }
39
+ }
40
+ async destroy() {
41
+ if (this.loadUnitInstances) {
42
+ for (const instance of this.loadUnitInstances) {
43
+ await LoadUnitInstanceFactory.destroyLoadUnitInstance(instance);
44
+ }
45
+ }
46
+ if (this.loadUnits) {
47
+ for (const loadUnit of this.loadUnits) {
48
+ await LoadUnitFactory.destroyLoadUnit(loadUnit);
49
+ }
50
+ }
51
+ }
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvTW9kdWxlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBRWYsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBeUIsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWxHLE1BQU0sT0FBTyxhQUFjLFNBQVEsSUFBSTtJQUNyQyxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBQzNCLGlCQUFpQixHQUF1QixFQUFFLENBQUM7SUFFMUIsY0FBYyxDQUFrQjtJQUNoQyxHQUFHLENBQWM7SUFFbEMsWUFBWSxHQUFnQjtRQUMxQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyx3QkFBd0IsQ0FDMUQsMkJBQTJCLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFOUQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sU0FBUyxHQUF1QixFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBUyxDQUFDO1lBRTVCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLFFBQVEsR0FBRyxNQUFNLHVCQUF1QixDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDbkQsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO2dCQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELGNBQWMsQ0FBQyx1QkFBdUIsQ0FBRSxJQUFJLENBQUMsR0FBVyxDQUFDLE9BQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFVLENBQUMsQ0FBQztZQUN2QixNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzlDLE1BQU0sdUJBQXVCLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxlQUFlLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
@@ -1,4 +1 @@
1
- //#region src/lib/Utils.d.ts
2
- declare function getCalleeFromStack(withLine: boolean, stackIndex?: number): any;
3
- //#endregion
4
- export { getCalleeFromStack };
1
+ export declare function getCalleeFromStack(withLine: boolean, stackIndex?: number): any;
package/dist/lib/Utils.js CHANGED
@@ -1,3 +1,36 @@
1
- import { getCalleeFromStack } from "../Utils-11aRpnkd.js";
2
-
3
- export { getCalleeFromStack };
1
+ function prepareObjectStackTrace(_, stack) {
2
+ return stack;
3
+ }
4
+ export function getCalleeFromStack(withLine, stackIndex) {
5
+ stackIndex = stackIndex === undefined ? 2 : stackIndex;
6
+ const limit = Error.stackTraceLimit;
7
+ const prep = Error.prepareStackTrace;
8
+ Error.prepareStackTrace = prepareObjectStackTrace;
9
+ Error.stackTraceLimit = 5;
10
+ // capture the stack
11
+ const obj = {};
12
+ Error.captureStackTrace(obj);
13
+ let callSite = obj.stack[stackIndex];
14
+ let fileName;
15
+ /* istanbul ignore else */
16
+ if (callSite) {
17
+ // egg-mock will create a proxy
18
+ // https://github.com/eggjs/egg-mock/blob/master/lib/app.js#L174
19
+ fileName = callSite.getFileName();
20
+ /* istanbul ignore if */
21
+ if (fileName && fileName.endsWith('egg-mock/lib/app.js')) {
22
+ // TODO: add test
23
+ callSite = obj.stack[stackIndex + 1];
24
+ fileName = callSite.getFileName();
25
+ }
26
+ }
27
+ Error.prepareStackTrace = prep;
28
+ Error.stackTraceLimit = limit;
29
+ /* istanbul ignore if */
30
+ if (!callSite || !fileName)
31
+ return '<anonymous>';
32
+ if (!withLine)
33
+ return fileName;
34
+ return `${fileName}:${callSite.getLineNumber()}:${callSite.getColumnNumber()}`;
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsdUJBQXVCLENBQUMsQ0FBUSxFQUFFLEtBQXdCO0lBQ2pFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxRQUFpQixFQUFFLFVBQW1CO0lBQ3ZFLFVBQVUsR0FBRyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUN2RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3BDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUVyQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7SUFDbEQsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFFMUIsb0JBQW9CO0lBQ3BCLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxJQUFJLFFBQVEsQ0FBQztJQUNiLDBCQUEwQjtJQUMxQixJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsK0JBQStCO1FBQy9CLGdFQUFnRTtRQUNoRSxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLHdCQUF3QjtRQUN4QixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztZQUN6RCxpQkFBaUI7WUFDakIsUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRTlCLHdCQUF3QjtJQUN4QixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sYUFBYSxDQUFDO0lBQ2pELElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDL0IsT0FBTyxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7QUFDakYsQ0FBQyJ9
@@ -1,2 +1,2 @@
1
- import { ctxLifecycleMiddleware } from "../ctx_lifecycle_middleware-DV7uN5PG.js";
2
- export { ctxLifecycleMiddleware };
1
+ import type { Context, Next } from 'egg';
2
+ export declare function ctxLifecycleMiddleware(ctx: Context, next: Next): Promise<void>;
@@ -1,4 +1,33 @@
1
- import "../EggContextImpl-DkCLPTzT.js";
2
- import { ctxLifecycleMiddleware } from "../ctx_lifecycle_middleware-CIeSrbVY.js";
3
-
4
- export { ctxLifecycleMiddleware };
1
+ import { ROOT_PROTO, TEGG_CONTEXT } from '@eggjs/egg-module-common';
2
+ import {} from '@eggjs/tegg-runtime';
3
+ import { EggContextImpl } from "./EggContextImpl.js";
4
+ export async function ctxLifecycleMiddleware(ctx, next) {
5
+ // should not recreate teggContext
6
+ if (ctx[TEGG_CONTEXT]) {
7
+ await next();
8
+ return;
9
+ }
10
+ const lifecycleCtx = {};
11
+ const teggCtx = new EggContextImpl(ctx);
12
+ // rootProto is set by tegg-controller-plugin global middleware(teggRootProto)
13
+ // is used in EggControllerHook
14
+ const rootProto = ctx[ROOT_PROTO];
15
+ if (rootProto) {
16
+ teggCtx.set(ROOT_PROTO, rootProto);
17
+ }
18
+ if (teggCtx.init) {
19
+ await teggCtx.init(lifecycleCtx);
20
+ }
21
+ try {
22
+ await next();
23
+ }
24
+ finally {
25
+ if (teggCtx.destroy) {
26
+ teggCtx.destroy(lifecycleCtx).catch(e => {
27
+ e.message = `[tegg/ctxLifecycleMiddleware] destroy tegg ctx failed: ${e.message}`;
28
+ ctx.logger.error(e);
29
+ });
30
+ }
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3R4X2xpZmVjeWNsZV9taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jdHhfbGlmZWN5Y2xlX21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRSxPQUFPLEVBQW1DLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxLQUFLLFVBQVUsc0JBQXNCLENBQUMsR0FBWSxFQUFFLElBQVU7SUFDbkUsa0NBQWtDO0lBQ2xDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNiLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQStCLEVBQUUsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4Qyw4RUFBOEU7SUFDOUUsK0JBQStCO0lBQy9CLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7WUFBUyxDQUFDO1FBQ1QsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RDLENBQUMsQ0FBQyxPQUFPLEdBQUcsMERBQTBELENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMifQ==
@@ -1,7 +1,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 };
1
+ import { Application } from 'egg';
2
+ export declare const LONG_STACK_DELIMITER = "\n --------------------\n";
3
+ export declare function hijackRunInBackground(app: Application): void;
@@ -1,7 +1,58 @@
1
- import "../EggContextImpl-DkCLPTzT.js";
2
- import "../ctx_lifecycle_middleware-CIeSrbVY.js";
3
- import "../context-BWYE1dif.js";
4
- import "../Utils-11aRpnkd.js";
5
- import { LONG_STACK_DELIMITER, hijackRunInBackground } from "../run_in_background-CEUPBmDB.js";
6
-
7
- export { LONG_STACK_DELIMITER, hijackRunInBackground };
1
+ import { Application } from 'egg';
2
+ import { BackgroundTaskHelper, PrototypeUtil } from '@eggjs/tegg';
3
+ import {} from '@eggjs/tegg-metadata';
4
+ import { TEGG_CONTEXT } from '@eggjs/egg-module-common';
5
+ import TEggPluginContext from "../app/extend/context.js";
6
+ import { getCalleeFromStack } from "./Utils.js";
7
+ export const LONG_STACK_DELIMITER = '\n --------------------\n';
8
+ function addLongStackTrace(err, causeError) {
9
+ const callSiteStack = causeError.stack;
10
+ if (!callSiteStack || typeof callSiteStack !== 'string') {
11
+ return;
12
+ }
13
+ const index = callSiteStack.indexOf('\n');
14
+ if (index !== -1) {
15
+ err.stack += LONG_STACK_DELIMITER + callSiteStack.substring(index + 1);
16
+ }
17
+ }
18
+ export function hijackRunInBackground(app) {
19
+ const eggRunInBackground = app.context.runInBackground;
20
+ app.context.runInBackground = function runInBackground(scope) {
21
+ if (!this[TEGG_CONTEXT]) {
22
+ return Reflect.apply(eggRunInBackground, this, [scope]);
23
+ }
24
+ const caseError = new Error('cause');
25
+ let resolveBackgroundTask;
26
+ const backgroundTaskPromise = new Promise(resolve => {
27
+ resolveBackgroundTask = resolve;
28
+ });
29
+ const newScope = async () => {
30
+ try {
31
+ await scope(this);
32
+ }
33
+ catch (e) {
34
+ addLongStackTrace(e, caseError);
35
+ throw e;
36
+ }
37
+ finally {
38
+ resolveBackgroundTask();
39
+ }
40
+ };
41
+ const taskName = scope._name || scope.name || getCalleeFromStack(true, 2);
42
+ scope._name = taskName;
43
+ Object.defineProperty(newScope, 'name', {
44
+ value: taskName,
45
+ enumerable: false,
46
+ configurable: true,
47
+ writable: false,
48
+ });
49
+ Reflect.apply(eggRunInBackground, this, [newScope]);
50
+ const proto = PrototypeUtil.getClazzProto(BackgroundTaskHelper);
51
+ const eggObject = app.eggContainerFactory.getEggObject(proto);
52
+ const backgroundTaskHelper = eggObject.obj;
53
+ backgroundTaskHelper.run(async () => {
54
+ await backgroundTaskPromise;
55
+ });
56
+ };
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuX2luX2JhY2tncm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3J1bl9pbl9iYWNrZ3JvdW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWdCLE1BQU0sS0FBSyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLGlCQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQztBQUVoRSxTQUFTLGlCQUFpQixDQUFDLEdBQVUsRUFBRSxVQUFpQjtJQUN0RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxhQUFhLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEQsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakIsR0FBRyxDQUFDLEtBQUssSUFBSSxvQkFBb0IsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFnQjtJQUNwRCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ3ZELEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLFNBQVMsZUFBZSxDQUEwQixLQUFxQztRQUNuSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFFLEtBQUssQ0FBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLElBQUkscUJBQWlDLENBQUM7UUFDdEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRTtZQUN4RCxxQkFBcUIsR0FBRyxPQUFPLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRTtZQUMxQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsaUJBQWlCLENBQUMsQ0FBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7b0JBQVMsQ0FBQztnQkFDVCxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBSSxLQUFhLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLEtBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtZQUN0QyxLQUFLLEVBQUUsUUFBUTtZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUUsUUFBUSxDQUFFLENBQUMsQ0FBQztRQUV0RCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDaEUsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxLQUFxQixDQUFDLENBQUM7UUFDOUUsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBMkIsQ0FBQztRQUNuRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbEMsTUFBTSxxQkFBcUIsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
package/dist/types.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- import "./ModuleHandler-Dyx7JGj-.js";
2
- import "./EggContextHandler-vGi67He5.js";
3
- import "./application-Ccljinuy.js";
4
- import "./application.unittest-CpoCu6-E.js";
5
- import "./context-BoIt2G5h.js";
6
- import "./types-CuoKQV4X.js";
1
+ import '@eggjs/tegg-config/types';
2
+ import './app/extend/application.ts';
3
+ import './app/extend/application.unittest.ts';
4
+ import './app/extend/context.ts';
5
+ declare module 'egg' {
6
+ interface EggModule {
7
+ }
8
+ }
package/dist/types.js CHANGED
@@ -1,15 +1,5 @@
1
- import "./EggCompatibleProtoImpl-CPxLvSu4.js";
2
- import "./ModuleConfigLoader-CvZLf99E.js";
3
- import "./EggAppLoader-DFYg65ry.js";
4
- import "./EggModuleLoader-CCfQMmp5.js";
5
- import "./CompatibleUtil-CNhydb0E.js";
6
- import "./ModuleHandler-fKcUqWca.js";
7
- import "./EggContextHandler-D8gfTbZs.js";
8
- import "./EggContextImpl-DkCLPTzT.js";
9
- import "./ctx_lifecycle_middleware-CIeSrbVY.js";
10
- import "./context-BWYE1dif.js";
11
- import "./application-DFI1junS.js";
12
- import "./application.unittest-Cmia71Fx.js";
13
- import "./types-BHg5p4Xk.js";
14
-
15
- export { };
1
+ import '@eggjs/tegg-config/types';
2
+ import "./app/extend/application.js";
3
+ import "./app/extend/application.unittest.js";
4
+ import "./app/extend/context.js";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyx5QkFBeUIsQ0FBQyJ9
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "teggConfig"
7
7
  ]
8
8
  },
9
- "version": "4.0.0-beta.8",
9
+ "version": "4.0.0-beta.9",
10
10
  "description": "module plugin for egg",
11
11
  "keywords": [
12
12
  "egg",
@@ -61,18 +61,18 @@
61
61
  "dependencies": {
62
62
  "extend2": "^4.0.0",
63
63
  "sdk-base": "^5.0.1",
64
- "@eggjs/tegg": "4.0.0-beta.8",
65
- "@eggjs/tegg-background-task": "4.0.0-beta.8",
66
- "@eggjs/tegg-common-util": "4.0.0-beta.8",
67
- "@eggjs/tegg-dynamic-inject-runtime": "4.0.0-beta.8",
68
- "@eggjs/tegg-loader": "4.0.0-beta.8",
69
- "@eggjs/egg-module-common": "4.0.0-beta.8",
70
- "@eggjs/tegg-runtime": "4.0.0-beta.8",
71
- "@eggjs/tegg-metadata": "4.0.0-beta.8"
64
+ "@eggjs/egg-module-common": "4.0.0-beta.9",
65
+ "@eggjs/tegg-background-task": "4.0.0-beta.9",
66
+ "@eggjs/tegg": "4.0.0-beta.9",
67
+ "@eggjs/tegg-common-util": "4.0.0-beta.9",
68
+ "@eggjs/tegg-dynamic-inject-runtime": "4.0.0-beta.9",
69
+ "@eggjs/tegg-loader": "4.0.0-beta.9",
70
+ "@eggjs/tegg-metadata": "4.0.0-beta.9",
71
+ "@eggjs/tegg-runtime": "4.0.0-beta.9"
72
72
  },
73
73
  "peerDependencies": {
74
74
  "egg": "beta",
75
- "@eggjs/tegg-config": "4.0.0-beta.8"
75
+ "@eggjs/tegg-config": "4.0.0-beta.9"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@eggjs/bin": "beta",
@@ -86,7 +86,7 @@
86
86
  "typescript": "^5.9.3",
87
87
  "tsdown": "^0.15.6",
88
88
  "unplugin-unused": "^0.5.3",
89
- "@eggjs/tegg-config": "4.0.0-beta.8"
89
+ "@eggjs/tegg-config": "4.0.0-beta.9"
90
90
  },
91
91
  "publishConfig": {
92
92
  "access": "public"
@@ -99,6 +99,6 @@
99
99
  "test:mocha": "egg-bin test",
100
100
  "cov:mocha": "egg-bin cov",
101
101
  "clean": "rimraf dist",
102
- "build": "tsdown"
102
+ "build": "tsdown && rimraf dist && tsc -b --clean && tsc -p tsconfig.build.json"
103
103
  }
104
104
  }
@@ -1,23 +0,0 @@
1
- import { EggLoadUnitTypeLike, EggPrototype, LoadUnit, LoadUnitLifecycleContext, Loader } from "@eggjs/tegg-metadata";
2
- import { Id, QualifierInfo } from "@eggjs/tegg";
3
-
4
- //#region src/lib/AppLoadUnit.d.ts
5
- declare class AppLoadUnit implements LoadUnit {
6
- private readonly loader;
7
- id: Id;
8
- readonly name: string;
9
- readonly type: EggLoadUnitTypeLike;
10
- readonly unitPath: string;
11
- private protoMap;
12
- constructor(name: string, unitPath: string, loader: Loader);
13
- init(): Promise<void>;
14
- containPrototype(proto: EggPrototype): boolean;
15
- getEggPrototype(name: string, qualifiers: QualifierInfo[]): EggPrototype[];
16
- registerEggPrototype(proto: EggPrototype): void;
17
- deletePrototype(proto: EggPrototype): void;
18
- destroy(): Promise<void>;
19
- iterateEggPrototype(): IterableIterator<EggPrototype>;
20
- static createModule(ctx: LoadUnitLifecycleContext): AppLoadUnit;
21
- }
22
- //#endregion
23
- export { AppLoadUnit };
@@ -1,78 +0,0 @@
1
- import { debuglog } from "node:util";
2
- import { EggLoadUnitType, EggPrototypeCreatorFactory, EggPrototypeFactory, LoadUnitFactory } from "@eggjs/tegg-metadata";
3
- import { IdenticalUtil, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, PrototypeUtil, QualifierUtil } from "@eggjs/tegg";
4
- import { MapUtil } from "@eggjs/tegg-common-util";
5
-
6
- //#region src/lib/AppLoadUnit.ts
7
- const debug = debuglog("tegg/plugin/tegg/lib/AppLoadUnit");
8
- var AppLoadUnit = class AppLoadUnit {
9
- loader;
10
- id;
11
- name;
12
- type = EggLoadUnitType.APP;
13
- unitPath;
14
- protoMap = /* @__PURE__ */ new Map();
15
- constructor(name, unitPath, loader) {
16
- this.id = IdenticalUtil.createLoadUnitId(name);
17
- this.name = name;
18
- this.unitPath = unitPath;
19
- this.loader = loader;
20
- }
21
- async init() {
22
- const clazzList = await this.loader.load();
23
- if (debug.enabled) debug("init, get clazzList:%j, from unitPath:%o:%o:%o", clazzList.map((t) => t.name), this.type, this.name, this.unitPath);
24
- for (const clazz of clazzList) {
25
- const initTypeQualifierAttributeValue = await PrototypeUtil.getInitType(clazz, {
26
- unitPath: this.unitPath,
27
- moduleName: this.name
28
- });
29
- [{
30
- attribute: InitTypeQualifierAttribute,
31
- value: initTypeQualifierAttributeValue
32
- }, {
33
- attribute: LoadUnitNameQualifierAttribute,
34
- value: this.name
35
- }].forEach((qualifier) => {
36
- QualifierUtil.addProtoQualifier(clazz, qualifier.attribute, qualifier.value);
37
- });
38
- const protos = await EggPrototypeCreatorFactory.createProto(clazz, this);
39
- for (const proto of protos) EggPrototypeFactory.instance.registerPrototype(proto, this);
40
- }
41
- }
42
- containPrototype(proto) {
43
- return !!this.protoMap.get(proto.name)?.find((t) => t === proto);
44
- }
45
- getEggPrototype(name, qualifiers) {
46
- return this.protoMap.get(name)?.filter((proto) => proto.verifyQualifiers(qualifiers)) || [];
47
- }
48
- registerEggPrototype(proto) {
49
- MapUtil.getOrStore(this.protoMap, proto.name, []).push(proto);
50
- }
51
- deletePrototype(proto) {
52
- const protos = this.protoMap.get(proto.name);
53
- if (protos) {
54
- const index = protos.indexOf(proto);
55
- if (index !== -1) protos.splice(index, 1);
56
- }
57
- }
58
- async destroy() {
59
- for (const namedProtos of this.protoMap.values()) {
60
- const protos = namedProtos.slice();
61
- for (const proto of protos) EggPrototypeFactory.instance.deletePrototype(proto, this);
62
- }
63
- this.protoMap.clear();
64
- }
65
- iterateEggPrototype() {
66
- return Array.from(this.protoMap.values()).reduce((p, c) => {
67
- p = p.concat(c);
68
- return p;
69
- }, []).values();
70
- }
71
- static createModule(ctx) {
72
- return new AppLoadUnit("tegg-app", ctx.unitPath, ctx.loader);
73
- }
74
- };
75
- LoadUnitFactory.registerLoadUnitCreator(EggLoadUnitType.APP, AppLoadUnit.createModule);
76
-
77
- //#endregion
78
- export { AppLoadUnit };
@@ -1,69 +0,0 @@
1
- import { EggLoadUnitType } from "@eggjs/tegg-metadata";
2
- import { IdenticalUtil, ObjectInitType } from "@eggjs/tegg";
3
- import { MapUtil } from "@eggjs/tegg-common-util";
4
- import { EggObjectFactory, LoadUnitInstanceFactory, LoadUnitInstanceLifecycleUtil } from "@eggjs/tegg-runtime";
5
-
6
- //#region src/lib/AppLoadUnitInstance.ts
7
- var AppLoadUnitInstance = class AppLoadUnitInstance {
8
- loadUnit;
9
- id;
10
- name;
11
- protoToCreateMap = /* @__PURE__ */ new Map();
12
- eggObjectMap = /* @__PURE__ */ new Map();
13
- eggObjectPromiseMap = /* @__PURE__ */ new Map();
14
- constructor(loadUnit) {
15
- this.loadUnit = loadUnit;
16
- this.name = loadUnit.name;
17
- const iterator = this.loadUnit.iterateEggPrototype();
18
- for (const proto of iterator) if (proto.initType === ObjectInitType.SINGLETON) this.protoToCreateMap.set(proto.name, proto);
19
- this.id = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
20
- }
21
- iterateProtoToCreate() {
22
- return this.protoToCreateMap.entries();
23
- }
24
- addProtoToCreate(name, proto) {
25
- this.protoToCreateMap.set(name, proto);
26
- }
27
- deleteProtoToCreate(name) {
28
- this.protoToCreateMap.delete(name);
29
- }
30
- async init(ctx) {
31
- await LoadUnitInstanceLifecycleUtil.objectPreCreate(ctx, this);
32
- for (const [name, proto] of this.protoToCreateMap) await this.getOrCreateEggObject(name, proto);
33
- }
34
- async destroy() {
35
- const objs = [];
36
- for (const protoObjMap of this.eggObjectMap.values()) for (const protoObj of protoObjMap.values()) objs.push(protoObj);
37
- this.eggObjectMap.clear();
38
- await Promise.all(objs.map(async (obj) => {
39
- await EggObjectFactory.destroyObject(obj);
40
- }));
41
- }
42
- async getOrCreateEggObject(name, proto) {
43
- if (!this.loadUnit.containPrototype(proto)) throw new Error("load unit not contain proto");
44
- const protoObjMap = MapUtil.getOrStore(this.eggObjectMap, proto.id, /* @__PURE__ */ new Map());
45
- if (!protoObjMap.has(name)) {
46
- const protoObjPromiseMap = MapUtil.getOrStore(this.eggObjectPromiseMap, proto.id, /* @__PURE__ */ new Map());
47
- if (!protoObjPromiseMap.has(name)) {
48
- const objPromise = EggObjectFactory.createObject(name, proto);
49
- protoObjPromiseMap.set(name, objPromise);
50
- const obj = await objPromise;
51
- protoObjPromiseMap.delete(name);
52
- protoObjMap.set(name, obj);
53
- } else await protoObjPromiseMap.get(name);
54
- }
55
- return protoObjMap.get(name);
56
- }
57
- getEggObject(name, proto) {
58
- const protoObjMap = this.eggObjectMap.get(proto.id);
59
- if (!protoObjMap || !protoObjMap.has(name)) throw new Error(`EggObject ${String(proto.name)} not found`);
60
- return protoObjMap.get(name);
61
- }
62
- static createModuleLoadUnitInstance(ctx) {
63
- return new AppLoadUnitInstance(ctx.loadUnit);
64
- }
65
- };
66
- LoadUnitInstanceFactory.registerLoadUnitInstanceClass(EggLoadUnitType.APP, AppLoadUnitInstance.createModuleLoadUnitInstance);
67
-
68
- //#endregion
69
- export { AppLoadUnitInstance };
@@ -1,24 +0,0 @@
1
- import { EggPrototype, LoadUnit } from "@eggjs/tegg-metadata";
2
- import { EggObjectName, EggPrototypeName } from "@eggjs/tegg";
3
- import { EggObject, LoadUnitInstance, LoadUnitInstanceLifecycleContext } from "@eggjs/tegg-runtime";
4
-
5
- //#region src/lib/AppLoadUnitInstance.d.ts
6
- declare class AppLoadUnitInstance implements LoadUnitInstance {
7
- readonly loadUnit: LoadUnit;
8
- readonly id: string;
9
- readonly name: string;
10
- private protoToCreateMap;
11
- private eggObjectMap;
12
- private eggObjectPromiseMap;
13
- constructor(loadUnit: LoadUnit);
14
- iterateProtoToCreate(): IterableIterator<[EggObjectName, EggPrototype]>;
15
- addProtoToCreate(name: string, proto: EggPrototype): void;
16
- deleteProtoToCreate(name: string): void;
17
- init(ctx: LoadUnitInstanceLifecycleContext): Promise<void>;
18
- destroy(): Promise<void>;
19
- getOrCreateEggObject(name: EggPrototypeName, proto: EggPrototype): Promise<EggObject>;
20
- getEggObject(name: EggPrototypeName, proto: EggPrototype): EggObject;
21
- static createModuleLoadUnitInstance(ctx: LoadUnitInstanceLifecycleContext): LoadUnitInstance;
22
- }
23
- //#endregion
24
- export { AppLoadUnitInstance };
@@ -1,96 +0,0 @@
1
- import { EggPrototypeFactory } from "@eggjs/tegg-metadata";
2
- import { InitTypeQualifierAttribute, ObjectInitType } from "@eggjs/tegg";
3
- import { ProxyUtil } from "@eggjs/tegg-common-util";
4
- import { EggContainerFactory } from "@eggjs/tegg-runtime";
5
- import { Application, Context } from "egg";
6
-
7
- //#region src/lib/CompatibleUtil.ts
8
- var CompatibleUtil = class CompatibleUtil {
9
- static singletonProtoCache = /* @__PURE__ */ new Map();
10
- static requestProtoCache = /* @__PURE__ */ new Map();
11
- static getSingletonProto(name) {
12
- if (!this.singletonProtoCache.has(name)) {
13
- const proto = EggPrototypeFactory.instance.getPrototype(name, void 0, [{
14
- attribute: InitTypeQualifierAttribute,
15
- value: ObjectInitType.SINGLETON
16
- }]);
17
- this.singletonProtoCache.set(name, proto);
18
- }
19
- return this.singletonProtoCache.get(name);
20
- }
21
- static getRequestProto(name) {
22
- if (!this.requestProtoCache.has(name)) {
23
- const proto = EggPrototypeFactory.instance.getPrototype(name, void 0, [{
24
- attribute: InitTypeQualifierAttribute,
25
- value: ObjectInitType.CONTEXT
26
- }]);
27
- this.requestProtoCache.set(name, proto);
28
- }
29
- return this.requestProtoCache.get(name);
30
- }
31
- static singletonModuleProxyFactory(app, loadUnitInstance) {
32
- let deprecated = false;
33
- return function(_, p) {
34
- const proto = CompatibleUtil.getSingletonProto(p);
35
- const eggObj = EggContainerFactory.getEggObject(proto);
36
- if (!deprecated) {
37
- deprecated = true;
38
- app.deprecate(`[egg/module] Please use await app.getEggObject(clazzName) instead of app.${loadUnitInstance.name}.${String(p)}`);
39
- }
40
- return eggObj.obj;
41
- };
42
- }
43
- static appCompatible(app, loadUnitInstance) {
44
- const moduleLoadUnitProxy = ProxyUtil.safeProxy(loadUnitInstance, CompatibleUtil.singletonModuleProxyFactory(app, loadUnitInstance));
45
- Reflect.defineProperty(app.module, loadUnitInstance.name, {
46
- configurable: true,
47
- value: moduleLoadUnitProxy
48
- });
49
- }
50
- static contextModuleProxyFactory(holder, ctx, loadUnitInstance) {
51
- const cacheKey = `_${loadUnitInstance.name}Proxy`;
52
- if (!holder[cacheKey]) {
53
- let deprecated = false;
54
- const getter = function(_, p) {
55
- const proto = CompatibleUtil.getRequestProto(p);
56
- const eggObj = EggContainerFactory.getEggObject(proto, p);
57
- if (!deprecated) {
58
- deprecated = true;
59
- ctx.app.deprecate(`[egg/module] Please use await ctx.getEggObject(clazzName) instead of ctx.${loadUnitInstance.name}.${String(p)}`);
60
- }
61
- return eggObj.obj;
62
- };
63
- holder[cacheKey] = ProxyUtil.safeProxy(loadUnitInstance, getter);
64
- }
65
- return holder[cacheKey];
66
- }
67
- static contextModuleCompatible(ctx, loadUnitInstances) {
68
- const loadUnitInstanceMap = loadUnitInstances.reduce((p, c) => {
69
- p[c.name] = c;
70
- return p;
71
- }, {});
72
- Reflect.defineProperty(ctx, "module", {
73
- configurable: true,
74
- enumerable: true,
75
- get() {
76
- const ctx$1 = this;
77
- if (!this._moduleProxy) {
78
- const ctxModule = Object.create(loadUnitInstanceMap);
79
- this._moduleProxy = ProxyUtil.safeProxy(ctxModule, (_, p) => {
80
- const loadUnitInstance = Reflect.get(ctxModule, p);
81
- if (!loadUnitInstance) return;
82
- return CompatibleUtil.contextModuleProxyFactory(ctxModule, ctx$1, loadUnitInstance);
83
- });
84
- }
85
- return this._moduleProxy;
86
- }
87
- });
88
- }
89
- static clean() {
90
- this.singletonProtoCache.clear();
91
- this.requestProtoCache.clear();
92
- }
93
- };
94
-
95
- //#endregion
96
- export { CompatibleUtil };
@@ -1,22 +0,0 @@
1
- import "@eggjs/tegg-metadata";
2
- import { ConfigSourceQualifier, ConfigSourceQualifierAttribute, PrototypeUtil, QualifierUtil } from "@eggjs/tegg";
3
-
4
- //#region src/lib/ConfigSourceLoadUnitHook.ts
5
- /**
6
- * Copy from standalone/src/ConfigSourceLoadUnitHook
7
- * Hook for inject moduleConfig.
8
- * Add default qualifier value is current module name.
9
- */
10
- var ConfigSourceLoadUnitHook = class {
11
- async preCreate(ctx, loadUnit) {
12
- const classList = await ctx.loader.load();
13
- for (const clazz of classList) {
14
- const moduleConfigObject = PrototypeUtil.getInjectObjects(clazz).find((t) => t.objName === "moduleConfig");
15
- const configSourceQualifier = QualifierUtil.getProperQualifier(clazz, "moduleConfig", ConfigSourceQualifierAttribute);
16
- if (moduleConfigObject && !configSourceQualifier) ConfigSourceQualifier(loadUnit.name)(clazz.prototype, moduleConfigObject.refName);
17
- }
18
- }
19
- };
20
-
21
- //#endregion
22
- export { ConfigSourceLoadUnitHook };