@eggjs/tegg-plugin 4.0.0-beta.1 → 4.0.0-beta.10

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 (77) hide show
  1. package/README.md +13 -1
  2. package/dist/app/extend/application.d.ts +50 -0
  3. package/dist/app/extend/application.js +79 -0
  4. package/dist/app/extend/application.unittest.d.ts +22 -0
  5. package/{app → dist/app}/extend/application.unittest.js +13 -9
  6. package/dist/app/extend/context.d.ts +20 -0
  7. package/dist/app/extend/context.js +35 -0
  8. package/{app → dist/app}/middleware/tegg_ctx_lifecycle_middleware.d.ts +1 -1
  9. package/dist/app/middleware/tegg_ctx_lifecycle_middleware.js +5 -0
  10. package/{app.d.ts → dist/app.d.ts} +4 -4
  11. package/dist/app.js +63 -0
  12. package/dist/index.d.ts +3 -0
  13. package/dist/index.js +4 -0
  14. package/{lib → dist/lib}/AppLoadUnit.d.ts +2 -2
  15. package/dist/lib/AppLoadUnit.js +90 -0
  16. package/{lib → dist/lib}/AppLoadUnitInstance.d.ts +3 -3
  17. package/dist/lib/AppLoadUnitInstance.js +82 -0
  18. package/{lib → dist/lib}/CompatibleUtil.d.ts +2 -2
  19. package/dist/lib/CompatibleUtil.js +95 -0
  20. package/{lib → dist/lib}/ConfigSourceLoadUnitHook.d.ts +2 -2
  21. package/{lib → dist/lib}/ConfigSourceLoadUnitHook.js +2 -1
  22. package/{lib → dist/lib}/EggAppLoader.d.ts +2 -2
  23. package/dist/lib/EggAppLoader.js +128 -0
  24. package/{lib → dist/lib}/EggCompatibleObject.d.ts +4 -4
  25. package/{lib → dist/lib}/EggCompatibleObject.js +3 -2
  26. package/{lib → dist/lib}/EggCompatibleProtoImpl.d.ts +2 -2
  27. package/dist/lib/EggCompatibleProtoImpl.js +52 -0
  28. package/{lib → dist/lib}/EggContextCompatibleHook.d.ts +3 -3
  29. package/dist/lib/EggContextCompatibleHook.js +44 -0
  30. package/{lib → dist/lib}/EggContextHandler.d.ts +3 -3
  31. package/dist/lib/EggContextHandler.js +26 -0
  32. package/{lib → dist/lib}/EggContextImpl.d.ts +1 -1
  33. package/dist/lib/EggContextImpl.js +15 -0
  34. package/dist/lib/EggModuleLoader.js +54 -0
  35. package/{lib → dist/lib}/EggQualifierProtoHook.d.ts +2 -2
  36. package/dist/lib/EggQualifierProtoHook.js +62 -0
  37. package/{lib → dist/lib}/ModuleConfigLoader.d.ts +1 -1
  38. package/dist/lib/ModuleConfigLoader.js +81 -0
  39. package/{lib → dist/lib}/ModuleHandler.d.ts +2 -2
  40. package/dist/lib/ModuleHandler.js +53 -0
  41. package/dist/lib/Utils.js +36 -0
  42. package/dist/lib/ctx_lifecycle_middleware.d.ts +2 -0
  43. package/{lib → dist/lib}/ctx_lifecycle_middleware.js +7 -6
  44. package/dist/lib/run_in_background.js +58 -0
  45. package/dist/types.d.ts +8 -0
  46. package/dist/types.js +5 -0
  47. package/package.json +63 -45
  48. package/app/extend/application.d.ts +0 -24
  49. package/app/extend/application.js +0 -76
  50. package/app/extend/application.unittest.d.ts +0 -8
  51. package/app/extend/context.d.ts +0 -15
  52. package/app/extend/context.js +0 -32
  53. package/app/middleware/tegg_ctx_lifecycle_middleware.js +0 -5
  54. package/app.js +0 -63
  55. package/index.d.ts +0 -3
  56. package/index.js +0 -4
  57. package/lib/AppLoadUnit.js +0 -85
  58. package/lib/AppLoadUnitInstance.js +0 -82
  59. package/lib/CompatibleUtil.js +0 -94
  60. package/lib/EggAppLoader.js +0 -127
  61. package/lib/EggCompatibleProtoImpl.js +0 -51
  62. package/lib/EggContextCompatibleHook.js +0 -42
  63. package/lib/EggContextHandler.js +0 -25
  64. package/lib/EggContextImpl.js +0 -15
  65. package/lib/EggModuleLoader.js +0 -53
  66. package/lib/EggQualifierProtoHook.js +0 -50
  67. package/lib/ModuleConfigLoader.js +0 -80
  68. package/lib/ModuleHandler.js +0 -53
  69. package/lib/Utils.js +0 -36
  70. package/lib/ctx_lifecycle_middleware.d.ts +0 -2
  71. package/lib/run_in_background.js +0 -55
  72. package/lib/types.d.ts +0 -43
  73. package/lib/types.js +0 -2
  74. package/typings/index.d.ts +0 -1
  75. /package/{lib → dist/lib}/EggModuleLoader.d.ts +0 -0
  76. /package/{lib → dist/lib}/Utils.d.ts +0 -0
  77. /package/{lib → dist/lib}/run_in_background.d.ts +0 -0
@@ -0,0 +1,95 @@
1
+ import { Application, Context } from 'egg';
2
+ import { EggPrototypeFactory } from '@eggjs/tegg-metadata';
3
+ import { InitTypeQualifierAttribute, ObjectInitType } from '@eggjs/tegg';
4
+ import { EggContainerFactory } from '@eggjs/tegg-runtime';
5
+ import { ProxyUtil } from '@eggjs/tegg-common-util';
6
+ export class CompatibleUtil {
7
+ static singletonProtoCache = new Map();
8
+ static requestProtoCache = new Map();
9
+ static getSingletonProto(name) {
10
+ if (!this.singletonProtoCache.has(name)) {
11
+ const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, [{
12
+ attribute: InitTypeQualifierAttribute,
13
+ value: ObjectInitType.SINGLETON,
14
+ }]);
15
+ this.singletonProtoCache.set(name, proto);
16
+ }
17
+ return this.singletonProtoCache.get(name);
18
+ }
19
+ static getRequestProto(name) {
20
+ if (!this.requestProtoCache.has(name)) {
21
+ const proto = EggPrototypeFactory.instance.getPrototype(name, undefined, [{
22
+ attribute: InitTypeQualifierAttribute,
23
+ value: ObjectInitType.CONTEXT,
24
+ }]);
25
+ this.requestProtoCache.set(name, proto);
26
+ }
27
+ return this.requestProtoCache.get(name);
28
+ }
29
+ static singletonModuleProxyFactory(app, loadUnitInstance) {
30
+ let deprecated = false;
31
+ return function (_, p) {
32
+ const proto = CompatibleUtil.getSingletonProto(p);
33
+ const eggObj = EggContainerFactory.getEggObject(proto);
34
+ if (!deprecated) {
35
+ deprecated = true;
36
+ app.deprecate(`[egg/module] Please use await app.getEggObject(clazzName) instead of app.${loadUnitInstance.name}.${String(p)}`);
37
+ }
38
+ return eggObj.obj;
39
+ };
40
+ }
41
+ static appCompatible(app, loadUnitInstance) {
42
+ const moduleLoadUnitProxy = ProxyUtil.safeProxy(loadUnitInstance, CompatibleUtil.singletonModuleProxyFactory(app, loadUnitInstance));
43
+ Reflect.defineProperty(app.module, loadUnitInstance.name, {
44
+ configurable: true,
45
+ value: moduleLoadUnitProxy,
46
+ });
47
+ }
48
+ static contextModuleProxyFactory(holder, ctx, loadUnitInstance) {
49
+ const cacheKey = `_${loadUnitInstance.name}Proxy`;
50
+ if (!holder[cacheKey]) {
51
+ let deprecated = false;
52
+ const getter = function (_, p) {
53
+ const proto = CompatibleUtil.getRequestProto(p);
54
+ const eggObj = EggContainerFactory.getEggObject(proto, p);
55
+ if (!deprecated) {
56
+ deprecated = true;
57
+ ctx.app.deprecate(`[egg/module] Please use await ctx.getEggObject(clazzName) instead of ctx.${loadUnitInstance.name}.${String(p)}`);
58
+ }
59
+ return eggObj.obj;
60
+ };
61
+ holder[cacheKey] = ProxyUtil.safeProxy(loadUnitInstance, getter);
62
+ }
63
+ return holder[cacheKey];
64
+ }
65
+ static contextModuleCompatible(ctx, loadUnitInstances) {
66
+ const loadUnitInstanceMap = loadUnitInstances.reduce((p, c) => {
67
+ p[c.name] = c;
68
+ return p;
69
+ }, {});
70
+ Reflect.defineProperty(ctx, 'module', {
71
+ configurable: true,
72
+ enumerable: true,
73
+ get() {
74
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
75
+ const ctx = this;
76
+ if (!this._moduleProxy) {
77
+ const ctxModule = Object.create(loadUnitInstanceMap);
78
+ this._moduleProxy = ProxyUtil.safeProxy(ctxModule, (_, p) => {
79
+ const loadUnitInstance = Reflect.get(ctxModule, p);
80
+ if (!loadUnitInstance) {
81
+ return;
82
+ }
83
+ return CompatibleUtil.contextModuleProxyFactory(ctxModule, ctx, loadUnitInstance);
84
+ });
85
+ }
86
+ return this._moduleProxy;
87
+ },
88
+ });
89
+ }
90
+ static clean() {
91
+ this.singletonProtoCache.clear();
92
+ this.requestProtoCache.clear();
93
+ }
94
+ }
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGF0aWJsZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0NvbXBhdGlibGVVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQzNDLE9BQU8sRUFBcUIsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLG1CQUFtQixHQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxpQkFBaUIsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVyRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBaUI7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztvQkFDeEUsU0FBUyxFQUFFLDBCQUEwQjtvQkFDckMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxTQUFTO2lCQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBaUI7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztvQkFDeEUsU0FBUyxFQUFFLDBCQUEwQjtvQkFDckMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxPQUFPO2lCQUM5QixDQUFDLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVPLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxHQUFnQixFQUFFLGdCQUFrQztRQUM3RixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsT0FBTyxVQUFTLENBQVUsRUFBRSxDQUFjO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixHQUFHLENBQUMsU0FBUyxDQUNYLDRFQUE0RSxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0SCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3BCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQWdCLEVBQUUsZ0JBQWtDO1FBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsMkJBQTJCLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUNySSxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQ3hELFlBQVksRUFBRSxJQUFJO1lBQ2xCLEtBQUssRUFBRSxtQkFBbUI7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxNQUEyQixFQUFFLEdBQVksRUFBRSxnQkFBa0M7UUFDNUcsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLFVBQVMsQ0FBVSxFQUFFLENBQWM7Z0JBQ2hELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDaEIsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDbEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQ2YsNEVBQTRFLGdCQUFnQixDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0SCxDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNwQixDQUFDLENBQUM7WUFDRixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFZLEVBQUUsaUJBQXFDO1FBQ2hGLE1BQU0sbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLEVBQUUsRUFBMkMsQ0FBQyxDQUFDO1FBRWhELE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtZQUNwQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixHQUFHO2dCQUNELDREQUE0RDtnQkFDNUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUN2QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBYyxFQUFFLEVBQUU7d0JBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ25ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOzRCQUN0QixPQUFPO3dCQUNULENBQUM7d0JBQ0QsT0FBTyxjQUFjLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO29CQUNwRixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQyxDQUFDIn0=
@@ -1,5 +1,5 @@
1
- import { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
2
- import { LifecycleHook } from '@eggjs/tegg';
1
+ import { type LoadUnit, type LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
2
+ import { type LifecycleHook } from '@eggjs/tegg';
3
3
  /**
4
4
  * Copy from standalone/src/ConfigSourceLoadUnitHook
5
5
  * Hook for inject moduleConfig.
@@ -1,3 +1,4 @@
1
+ import {} from '@eggjs/tegg-metadata';
1
2
  import { PrototypeUtil, QualifierUtil, ConfigSourceQualifier, ConfigSourceQualifierAttribute, } from '@eggjs/tegg';
2
3
  /**
3
4
  * Copy from standalone/src/ConfigSourceLoadUnitHook
@@ -17,4 +18,4 @@ export class ConfigSourceLoadUnitHook {
17
18
  }
18
19
  }
19
20
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnU291cmNlTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQ29uZmlnU291cmNlTG9hZFVuaXRIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSxhQUFhLENBQUM7QUFFckI7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUE2QixFQUFFLFFBQWtCO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLGNBQWMsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUN0SCxJQUFJLGtCQUFrQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDakQscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEYsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnU291cmNlTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9Db25maWdTb3VyY2VMb2FkVW5pdEhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnRCxNQUFNLHNCQUFzQixDQUFDO0FBQ3BGLE9BQU8sRUFFTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSxhQUFhLENBQUM7QUFFckI7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUE2QixFQUFFLFFBQWtCO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLGNBQWMsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUN0SCxJQUFJLGtCQUFrQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDakQscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEYsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1,6 +1,6 @@
1
1
  import { Application } from 'egg';
2
- import { Loader } from '@eggjs/tegg-metadata';
3
- import { EggProtoImplClass } from '@eggjs/tegg';
2
+ import { type Loader } from '@eggjs/tegg-metadata';
3
+ import { type EggProtoImplClass } from '@eggjs/tegg';
4
4
  export declare const APP_CLAZZ_BLACK_LIST: string[];
5
5
  export declare const CONTEXT_CLAZZ_BLACK_LIST: string[];
6
6
  export declare const DEFAULT_APP_CLAZZ: string[];
@@ -0,0 +1,128 @@
1
+ import { Application } from 'egg';
2
+ import { TeggError } from '@eggjs/tegg-metadata';
3
+ import { AccessLevel, EggQualifierAttribute, EggType, InitTypeQualifierAttribute, LoadUnitNameQualifierAttribute, ObjectInitType, PrototypeUtil, QualifierUtil, } from '@eggjs/tegg';
4
+ import { ObjectUtils } from '@eggjs/tegg-common-util';
5
+ import { BackgroundTaskHelper } from '@eggjs/tegg-background-task';
6
+ import { EggObjectFactory } from '@eggjs/tegg-dynamic-inject-runtime';
7
+ import { ModuleConfigLoader } from "./ModuleConfigLoader.js";
8
+ import { COMPATIBLE_PROTO_IMPLE_TYPE } from "./EggCompatibleProtoImpl.js";
9
+ export const APP_CLAZZ_BLACK_LIST = [
10
+ 'eggObjectFactory',
11
+ 'moduleConfigs',
12
+ ];
13
+ export const CONTEXT_CLAZZ_BLACK_LIST = [
14
+ // just use the app.logger, ctx logger is deprecated.
15
+ 'logger',
16
+ ];
17
+ export const DEFAULT_APP_CLAZZ = [];
18
+ export const DEFAULT_CONTEXT_CLAZZ = [
19
+ 'user',
20
+ ];
21
+ export class EggAppLoader {
22
+ app;
23
+ moduleConfigLoader;
24
+ constructor(app) {
25
+ this.app = app;
26
+ this.moduleConfigLoader = new ModuleConfigLoader(this.app);
27
+ }
28
+ buildClazz(name, eggType) {
29
+ const app = this.app;
30
+ let func;
31
+ if (eggType === EggType.APP) {
32
+ func = function () {
33
+ return app[name];
34
+ };
35
+ }
36
+ else {
37
+ func = function () {
38
+ const ctx = app.currentContext;
39
+ if (!ctx) {
40
+ // ctx has been destroyed, throw humanize error info
41
+ throw TeggError.create(`Can not read property \`${name}\` because egg ctx has been destroyed`, 'read_after_ctx_destroyed');
42
+ }
43
+ return ctx[name];
44
+ };
45
+ }
46
+ Object.defineProperty(func, 'name', {
47
+ value: name,
48
+ writable: false,
49
+ enumerable: false,
50
+ configurable: true,
51
+ });
52
+ PrototypeUtil.setIsEggPrototype(func);
53
+ PrototypeUtil.setFilePath(func, 'mock_file_path');
54
+ PrototypeUtil.setProperty(func, {
55
+ name,
56
+ initType: ObjectInitType.SINGLETON,
57
+ accessLevel: AccessLevel.PUBLIC,
58
+ protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE,
59
+ });
60
+ QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, 'app');
61
+ QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
62
+ QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, eggType);
63
+ return func;
64
+ }
65
+ buildAppLoggerClazz(name) {
66
+ const app = this.app;
67
+ const func = function () {
68
+ return app.getLogger(name);
69
+ };
70
+ Object.defineProperty(func, 'name', {
71
+ value: name,
72
+ writable: false,
73
+ enumerable: false,
74
+ configurable: true,
75
+ });
76
+ PrototypeUtil.setIsEggPrototype(func);
77
+ PrototypeUtil.setFilePath(func, 'mock_file_path');
78
+ PrototypeUtil.setProperty(func, {
79
+ name,
80
+ initType: ObjectInitType.SINGLETON,
81
+ accessLevel: AccessLevel.PUBLIC,
82
+ protoImplType: COMPATIBLE_PROTO_IMPLE_TYPE,
83
+ });
84
+ QualifierUtil.addProtoQualifier(func, LoadUnitNameQualifierAttribute, 'app');
85
+ QualifierUtil.addProtoQualifier(func, InitTypeQualifierAttribute, ObjectInitType.SINGLETON);
86
+ QualifierUtil.addProtoQualifier(func, EggQualifierAttribute, EggType.APP);
87
+ return func;
88
+ }
89
+ getLoggerNames(ctxClazzNames, singletonClazzNames) {
90
+ const loggerNames = Array.from(this.app.loggers.keys());
91
+ // filter logger/coreLogger
92
+ return loggerNames.filter(t => !ctxClazzNames.includes(t) && !singletonClazzNames.includes(t));
93
+ }
94
+ async load() {
95
+ const app = this.app;
96
+ const appProperties = ObjectUtils.getProperties(app);
97
+ const contextProperties = ObjectUtils.getProperties(app.context);
98
+ // custom plugin may define property conflict with default list
99
+ const allSingletonClazzNameSet = new Set([
100
+ ...appProperties,
101
+ ...DEFAULT_APP_CLAZZ,
102
+ ]);
103
+ APP_CLAZZ_BLACK_LIST.forEach(t => allSingletonClazzNameSet.delete(t));
104
+ const allSingletonClazzNames = Array.from(allSingletonClazzNameSet);
105
+ const allContextClazzNamesSet = new Set([
106
+ ...contextProperties,
107
+ ...DEFAULT_CONTEXT_CLAZZ,
108
+ ]);
109
+ CONTEXT_CLAZZ_BLACK_LIST.forEach(t => allContextClazzNamesSet.delete(t));
110
+ const allContextClazzNames = Array.from(allContextClazzNamesSet);
111
+ const loggerNames = this.getLoggerNames(allContextClazzNames, allSingletonClazzNames);
112
+ const allSingletonClazzs = allSingletonClazzNames.map(name => this.buildClazz(name, EggType.APP));
113
+ const allContextClazzs = allContextClazzNames.map(name => this.buildClazz(name, EggType.CONTEXT));
114
+ const appLoggerClazzs = loggerNames.map(name => this.buildAppLoggerClazz(name));
115
+ const moduleConfigList = this.moduleConfigLoader.loadModuleConfigList();
116
+ return [
117
+ ...allSingletonClazzs,
118
+ ...allContextClazzs,
119
+ ...appLoggerClazzs,
120
+ ...moduleConfigList,
121
+ // inner helper class list
122
+ // TODO: should auto the inner class
123
+ BackgroundTaskHelper,
124
+ EggObjectFactory,
125
+ ];
126
+ }
127
+ }
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQXBwTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dBcHBMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNsQyxPQUFPLEVBQWUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFFWCxxQkFBcUIsRUFDckIsT0FBTyxFQUNQLDBCQUEwQixFQUMxQiw4QkFBOEIsRUFDOUIsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGtCQUFrQjtJQUNsQixlQUFlO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxxREFBcUQ7SUFDckQsUUFBUTtDQUNULENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsTUFBTTtDQUNQLENBQUM7QUFFRixNQUFNLE9BQU8sWUFBWTtJQUNOLEdBQUcsQ0FBYztJQUNqQixrQkFBa0IsQ0FBcUI7SUFFeEQsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxr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
@@ -1,7 +1,7 @@
1
- import { EggCompatibleProtoImpl } from './EggCompatibleProtoImpl.js';
2
- import { EggObject } from '@eggjs/tegg-runtime';
3
- import { EggObjectName } from '@eggjs/tegg';
4
- import { EggPrototype } from '@eggjs/tegg-metadata';
1
+ import { type EggObject } from '@eggjs/tegg-runtime';
2
+ import { type EggObjectName } from '@eggjs/tegg';
3
+ import { type EggPrototype } from '@eggjs/tegg-metadata';
4
+ import { EggCompatibleProtoImpl } from './EggCompatibleProtoImpl.ts';
5
5
  declare const OBJ: unique symbol;
6
6
  export declare class EggCompatibleObject implements EggObject {
7
7
  readonly isReady: boolean;
@@ -1,6 +1,7 @@
1
- import { EggCompatibleProtoImpl } from './EggCompatibleProtoImpl.js';
2
1
  import { EggObjectFactory, } from '@eggjs/tegg-runtime';
3
2
  import { IdenticalUtil, EggType, EggQualifierAttribute } from '@eggjs/tegg';
3
+ import {} from '@eggjs/tegg-metadata';
4
+ import { EggCompatibleProtoImpl } from "./EggCompatibleProtoImpl.js";
4
5
  const OBJ = Symbol('EggCompatibleObject#obj');
5
6
  export class EggCompatibleObject {
6
7
  isReady = true;
@@ -38,4 +39,4 @@ export class EggCompatibleObject {
38
39
  }
39
40
  }
40
41
  EggObjectFactory.registerEggObjectCreateMethod(EggCompatibleProtoImpl, EggCompatibleObject.createObject);
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29tcGF0aWJsZU9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ0NvbXBhdGlibGVPYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUVMLGdCQUFnQixHQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQWlCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUczRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUU5QyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDekIsQ0FBQyxHQUFHLENBQUMsQ0FBUztJQUNiLEtBQUssQ0FBeUI7SUFDOUIsSUFBSSxDQUFnQjtJQUNwQixFQUFFLENBQVM7SUFDWCxTQUFTLENBQVU7SUFFNUIsWUFBWSxJQUFtQixFQUFFLEtBQTZCO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3RCLFNBQVMsRUFBRSxxQkFBcUI7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlDQUFpQztJQUNqQywrQkFBK0I7SUFDL0IsNkJBQTZCO0lBQzdCLElBQUksR0FBRztRQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBbUIsRUFBRSxLQUFtQjtRQUNoRSxPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQStCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFFRCxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyJ9
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29tcGF0aWJsZU9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRWdnQ29tcGF0aWJsZU9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBc0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUU5QyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDekIsQ0FBQyxHQUFHLENBQUMsQ0FBUztJQUNiLEtBQUssQ0FBeUI7SUFDOUIsSUFBSSxDQUFnQjtJQUNwQixFQUFFLENBQVM7SUFDWCxTQUFTLENBQVU7SUFFNUIsWUFBWSxJQUFtQixFQUFFLEtBQTZCO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3RCLFNBQVMsRUFBRSxxQkFBcUI7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlDQUFpQztJQUNqQywrQkFBK0I7SUFDL0IsNkJBQTZCO0lBQzdCLElBQUksR0FBRztRQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBbUIsRUFBRSxLQUFtQjtRQUNoRSxPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQStCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFFRCxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyJ9
@@ -1,5 +1,5 @@
1
- import { AccessLevel, EggProtoImplClass, EggPrototypeName, MetaDataKey, ObjectInitTypeLike, QualifierInfo, Id, QualifierValue } from '@eggjs/tegg';
2
- import { EggPrototype, InjectObjectProto, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
1
+ import { AccessLevel, type EggProtoImplClass, type EggPrototypeName, type MetaDataKey, type ObjectInitTypeLike, type QualifierInfo, type Id, type QualifierValue } from '@eggjs/tegg';
2
+ import { type EggPrototype, type InjectObjectProto, type EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
3
3
  export declare const COMPATIBLE_PROTO_IMPLE_TYPE = "EGG_COMPATIBLE";
4
4
  export declare class EggCompatibleProtoImpl implements EggPrototype {
5
5
  [key: symbol]: PropertyDescriptor;
@@ -0,0 +1,52 @@
1
+ import { AccessLevel, MetadataUtil, QualifierUtil, IdenticalUtil, } from '@eggjs/tegg';
2
+ import {} from '@eggjs/tegg-metadata';
3
+ export const COMPATIBLE_PROTO_IMPLE_TYPE = 'EGG_COMPATIBLE';
4
+ export class EggCompatibleProtoImpl {
5
+ clazz;
6
+ qualifiers;
7
+ id;
8
+ name;
9
+ initType;
10
+ accessLevel;
11
+ injectObjects;
12
+ loadUnitId;
13
+ constructor(id, name, clazz, initType, loadUnitId, qualifiers) {
14
+ this.id = id;
15
+ this.clazz = clazz;
16
+ this.name = name;
17
+ this.initType = initType;
18
+ this.accessLevel = AccessLevel.PUBLIC;
19
+ this.injectObjects = [];
20
+ this.loadUnitId = loadUnitId;
21
+ this.qualifiers = qualifiers;
22
+ }
23
+ verifyQualifiers(qualifiers) {
24
+ for (const qualifier of qualifiers) {
25
+ if (!this.verifyQualifier(qualifier)) {
26
+ return false;
27
+ }
28
+ }
29
+ return true;
30
+ }
31
+ verifyQualifier(qualifier) {
32
+ const selfQualifiers = this.qualifiers.find(t => t.attribute === qualifier.attribute);
33
+ return selfQualifiers?.value === qualifier.value;
34
+ }
35
+ getQualifier(attribute) {
36
+ return this.qualifiers.find(t => t.attribute === attribute)?.value;
37
+ }
38
+ constructEggObject() {
39
+ return Reflect.apply(this.clazz, null, []);
40
+ }
41
+ getMetaData(metadataKey) {
42
+ return MetadataUtil.getMetaData(metadataKey, this.clazz);
43
+ }
44
+ static create(ctx) {
45
+ const { clazz, loadUnit } = ctx;
46
+ const name = ctx.prototypeInfo.name;
47
+ const id = IdenticalUtil.createProtoId(loadUnit.id, name);
48
+ const proto = new EggCompatibleProtoImpl(id, name, clazz, ctx.prototypeInfo.initType, loadUnit.id, QualifierUtil.mergeQualifiers(QualifierUtil.getProtoQualifiers(clazz), (ctx.prototypeInfo.qualifiers ?? [])));
49
+ return proto;
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29tcGF0aWJsZVByb3RvSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRWdnQ29tcGF0aWJsZVByb3RvSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUdYLFlBQVksRUFHWixhQUFhLEVBRWIsYUFBYSxHQUVkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFJTixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLGdCQUFnQixDQUFDO0FBRTVELE1BQU0sT0FBTyxzQkFBc0I7SUFFaEIsS0FBSyxDQUFvQjtJQUN6QixVQUFVLENBQWtCO0lBRXBDLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBbUI7SUFDdkIsUUFBUSxDQUFxQjtJQUM3QixXQUFXLENBQWM7SUFDekIsYUFBYSxDQUFzQjtJQUNuQyxVQUFVLENBQUs7SUFFeEIsWUFDRSxFQUFVLEVBQ1YsSUFBc0IsRUFDdEIsS0FBd0IsRUFDeEIsUUFBNEIsRUFDNUIsVUFBYyxFQUNkLFVBQTJCO1FBRTNCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUEyQjtRQUMxQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUFJLFdBQXdCO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQWlDO1FBQzdDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxNQUFNLEtBQUssR0FBRyxJQUFJLHNCQUFzQixDQUN0QyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQ3JGLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFDdkMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FDckMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YifQ==
@@ -1,6 +1,6 @@
1
- import { LifecycleHook } from '@eggjs/tegg';
2
- import { EggContext, EggContextLifecycleContext } from '@eggjs/tegg-runtime';
3
- import { ModuleHandler } from './ModuleHandler.js';
1
+ import { type LifecycleHook } from '@eggjs/tegg';
2
+ import { type EggContext, type EggContextLifecycleContext } from '@eggjs/tegg-runtime';
3
+ import { ModuleHandler } from './ModuleHandler.ts';
4
4
  export declare class EggContextCompatibleHook implements LifecycleHook<EggContextLifecycleContext, EggContext> {
5
5
  private readonly moduleHandler;
6
6
  private requestProtoList;
@@ -0,0 +1,44 @@
1
+ import { BackgroundTaskHelper, ObjectInitType, PrototypeUtil } from '@eggjs/tegg';
2
+ import { EggContainerFactory } from '@eggjs/tegg-runtime';
3
+ import {} from '@eggjs/tegg-metadata';
4
+ import { ROOT_PROTO } from '@eggjs/egg-module-common';
5
+ import { ModuleHandler } from "./ModuleHandler.js";
6
+ export class EggContextCompatibleHook {
7
+ moduleHandler;
8
+ requestProtoList = [];
9
+ constructor(moduleHandler) {
10
+ this.moduleHandler = moduleHandler;
11
+ for (const loadUnitInstance of this.moduleHandler.loadUnitInstances) {
12
+ const iterator = loadUnitInstance.loadUnit.iterateEggPrototype();
13
+ for (const proto of iterator) {
14
+ if (proto.initType === ObjectInitType.CONTEXT) {
15
+ this.requestProtoList.push(proto);
16
+ }
17
+ }
18
+ }
19
+ }
20
+ async preCreate(_, ctx) {
21
+ // root proto added in ctxLifecycleMiddleware
22
+ if (!ctx.get(ROOT_PROTO)) {
23
+ for (const proto of this.requestProtoList) {
24
+ ctx.addProtoToCreate(proto.name, proto);
25
+ }
26
+ }
27
+ else {
28
+ // Use for ctx.runInBackground.
29
+ // BackgroundTaskHelper should get by sync,
30
+ // or tegg context may be destroyed before background task run.
31
+ // So create it in preCreate.
32
+ const protoObj = PrototypeUtil.getClazzProto(BackgroundTaskHelper);
33
+ await EggContainerFactory.getOrCreateEggObject(protoObj);
34
+ }
35
+ }
36
+ async postCreate(_, ctx) {
37
+ const rootProto = ctx.get(ROOT_PROTO);
38
+ if (rootProto) {
39
+ // Ensure ContextInitiator be called.
40
+ await EggContainerFactory.getOrCreateEggObject(rootProto);
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dENvbXBhdGlibGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dDb250ZXh0Q29tcGF0aWJsZUhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFzQixjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0QsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RyxPQUFPLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2xCLGFBQWEsQ0FBZ0I7SUFDdEMsZ0JBQWdCLEdBQXdCLEVBQUUsQ0FBQztJQUVuRCxZQUFZLGFBQTRCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDcEUsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBVSxFQUFFLEdBQWU7UUFDekMsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDekIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sK0JBQStCO1lBQy9CLDJDQUEyQztZQUMzQywrREFBK0Q7WUFDL0QsNkJBQTZCO1lBQzdCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNuRSxNQUFNLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLFFBQXdCLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBVSxFQUFFLEdBQWU7UUFDMUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QscUNBQXFDO1lBQ3JDLE1BQU0sbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsU0FBeUIsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1,9 +1,9 @@
1
- import { Application } from 'egg';
2
- import { EggContext } from '@eggjs/tegg-runtime';
1
+ import { type Application } from 'egg';
2
+ import { type EggContext } from '@eggjs/tegg-runtime';
3
3
  export declare class EggContextHandler {
4
4
  private readonly app;
5
5
  constructor(app: Application);
6
- getContextCallback(): EggContext;
6
+ getContextCallback(): EggContext | undefined;
7
7
  run<R>(eggContext: EggContext, fn: () => Promise<R>): Promise<R>;
8
8
  register(): void;
9
9
  }
@@ -0,0 +1,26 @@
1
+ import {} from 'egg';
2
+ import { ContextHandler } from '@eggjs/tegg-runtime';
3
+ import { EGG_CONTEXT } from '@eggjs/egg-module-common';
4
+ export class EggContextHandler {
5
+ app;
6
+ constructor(app) {
7
+ this.app = app;
8
+ }
9
+ getContextCallback() {
10
+ const ctx = this.app.currentContext;
11
+ return ctx?.teggContext;
12
+ }
13
+ async run(eggContext, fn) {
14
+ const ctx = eggContext.get(EGG_CONTEXT);
15
+ return await this.app.ctxStorage.run(ctx, fn);
16
+ }
17
+ register() {
18
+ ContextHandler.getContextCallback = () => {
19
+ return this.getContextCallback();
20
+ };
21
+ ContextHandler.runInContextCallback = async (context, fn) => {
22
+ return await this.run(context, fn);
23
+ };
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0VnZ0NvbnRleHRIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLEdBQUcsQ0FBYztJQUVsQyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDcEMsT0FBTyxHQUFHLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFJLFVBQXNCLEVBQUUsRUFBb0I7UUFDdkQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsUUFBUTtRQUNOLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDdkMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFDRixjQUFjLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxFQUFFLE9BQW1CLEVBQUUsRUFBc0IsRUFBRSxFQUFFO1lBQzFGLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
@@ -1,4 +1,4 @@
1
- import type { Context } from '@eggjs/core';
1
+ import type { Context } from 'egg';
2
2
  import { AbstractEggContext } from '@eggjs/tegg-runtime';
3
3
  export declare class EggContextImpl extends AbstractEggContext {
4
4
  readonly id: string;
@@ -0,0 +1,15 @@
1
+ import { AbstractEggContext } from '@eggjs/tegg-runtime';
2
+ import { IdenticalUtil } from '@eggjs/tegg';
3
+ import { EGG_CONTEXT, TEGG_CONTEXT } from '@eggjs/egg-module-common';
4
+ // TEggContext 的实现
5
+ export class EggContextImpl extends AbstractEggContext {
6
+ id;
7
+ constructor(ctx) {
8
+ super();
9
+ this.set(EGG_CONTEXT, ctx);
10
+ ctx[TEGG_CONTEXT] = this;
11
+ const tracer = ctx.tracer;
12
+ this.id = IdenticalUtil.createContextId(tracer?.traceId);
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQ29udGV4dEltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0VnZ0NvbnRleHRJbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRSxrQkFBa0I7QUFDbEIsTUFBTSxPQUFPLGNBQWUsU0FBUSxrQkFBa0I7SUFDM0MsRUFBRSxDQUFTO0lBRXBCLFlBQVksR0FBWTtRQUN0QixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQXlDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,54 @@
1
+ import { EggLoadUnitType, LoadUnitFactory, GlobalGraph, ModuleDescriptorDumper, } from '@eggjs/tegg-metadata';
2
+ import { LoaderFactory } from '@eggjs/tegg-loader';
3
+ import { Application } from 'egg';
4
+ import { EggAppLoader } from "./EggAppLoader.js";
5
+ export class EggModuleLoader {
6
+ app;
7
+ globalGraph;
8
+ constructor(app) {
9
+ this.app = app;
10
+ }
11
+ async loadApp() {
12
+ const loader = new EggAppLoader(this.app);
13
+ const loadUnit = await LoadUnitFactory.createLoadUnit(this.app.baseDir, EggLoadUnitType.APP, loader);
14
+ this.app.moduleHandler.loadUnits.push(loadUnit);
15
+ }
16
+ async buildAppGraph() {
17
+ for (const plugin of Object.values(this.app.plugins)) {
18
+ if (!plugin.enable)
19
+ continue;
20
+ const modulePlugin = this.app.moduleReferences.find(t => t.path === plugin.path);
21
+ if (modulePlugin) {
22
+ modulePlugin.optional = false;
23
+ }
24
+ }
25
+ const moduleDescriptors = await LoaderFactory.loadApp(this.app.moduleReferences);
26
+ for (const moduleDescriptor of moduleDescriptors) {
27
+ ModuleDescriptorDumper.dump(moduleDescriptor, {
28
+ dumpDir: this.app.baseDir,
29
+ }).catch(e => {
30
+ e.message = 'dump module descriptor failed: ' + e.message;
31
+ this.app.logger.warn(e);
32
+ });
33
+ }
34
+ const graph = await GlobalGraph.create(moduleDescriptors);
35
+ return graph;
36
+ }
37
+ async loadModule() {
38
+ this.globalGraph.build();
39
+ this.globalGraph.sort();
40
+ const moduleConfigList = this.globalGraph.moduleConfigList;
41
+ for (const moduleConfig of moduleConfigList) {
42
+ const modulePath = moduleConfig.path;
43
+ const loader = LoaderFactory.createLoader(modulePath, EggLoadUnitType.MODULE);
44
+ const loadUnit = await LoadUnitFactory.createLoadUnit(modulePath, EggLoadUnitType.MODULE, loader);
45
+ this.app.moduleHandler.loadUnits.push(loadUnit);
46
+ }
47
+ }
48
+ async load() {
49
+ GlobalGraph.instance = this.globalGraph = await this.buildAppGraph();
50
+ await this.loadApp();
51
+ await this.loadModule();
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnTW9kdWxlTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dNb2R1bGVMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsV0FBVyxFQUFFLHNCQUFzQixHQUNwQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixHQUFHLENBQWM7SUFDakIsV0FBVyxDQUFjO0lBRXpCLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYTtRQUN6QixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFBRSxTQUFTO1lBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakYsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsWUFBWSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakYsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDakQsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPO2FBQzFCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1gsQ0FBQyxDQUFDLE9BQU8sR0FBRyxpQ0FBaUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMzRCxLQUFLLE1BQU0sWUFBWSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNyQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyRSxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMxQixDQUFDO0NBQ0YifQ==
@@ -1,5 +1,5 @@
1
- import { LoadUnitLifecycleContext, LoadUnit } from '@eggjs/tegg-metadata';
2
- import { LifecycleHook } from '@eggjs/tegg';
1
+ import { type LoadUnitLifecycleContext, type LoadUnit } from '@eggjs/tegg-metadata';
2
+ import { type LifecycleHook } from '@eggjs/tegg';
3
3
  import { Application } from 'egg';
4
4
  export declare class EggQualifierProtoHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
5
5
  private readonly app;