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

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