@midwayjs/core 3.0.0-beta.8 → 3.0.2

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 (97) hide show
  1. package/dist/baseFramework.d.ts +2 -1
  2. package/dist/baseFramework.js +13 -10
  3. package/dist/baseFramework.js.map +1 -0
  4. package/dist/common/applicationManager.d.ts +11 -0
  5. package/dist/common/applicationManager.js +70 -0
  6. package/dist/common/applicationManager.js.map +1 -0
  7. package/dist/common/constants.js.map +1 -0
  8. package/dist/common/dataListener.d.ts +11 -0
  9. package/dist/common/dataListener.js +43 -0
  10. package/dist/common/dataListener.js.map +1 -0
  11. package/dist/common/fileDetector.js +1 -1
  12. package/dist/common/fileDetector.js.map +1 -0
  13. package/dist/common/filterManager.js.map +1 -0
  14. package/dist/common/middlewareManager.js +2 -2
  15. package/dist/common/middlewareManager.js.map +1 -0
  16. package/dist/common/serviceFactory.js.map +1 -0
  17. package/dist/common/triggerCollector.js.map +1 -0
  18. package/dist/common/webGenerator.d.ts +3 -14
  19. package/dist/common/webGenerator.js +21 -33
  20. package/dist/common/webGenerator.js.map +1 -0
  21. package/dist/common/webRouterCollector.js +7 -3
  22. package/dist/common/webRouterCollector.js.map +1 -0
  23. package/dist/config/config.default.js.map +1 -0
  24. package/dist/context/container.js +28 -13
  25. package/dist/context/container.js.map +1 -0
  26. package/dist/context/definitionRegistry.js.map +1 -0
  27. package/dist/context/managedResolverFactory.d.ts +1 -0
  28. package/dist/context/managedResolverFactory.js +20 -5
  29. package/dist/context/managedResolverFactory.js.map +1 -0
  30. package/dist/context/providerWrapper.js.map +1 -0
  31. package/dist/context/requestContainer.js +2 -0
  32. package/dist/context/requestContainer.js.map +1 -0
  33. package/dist/definitions/functionDefinition.d.ts +1 -0
  34. package/dist/definitions/functionDefinition.js +1 -0
  35. package/dist/definitions/functionDefinition.js.map +1 -0
  36. package/dist/definitions/objectCreator.js +9 -8
  37. package/dist/definitions/objectCreator.js.map +1 -0
  38. package/dist/definitions/objectDefinition.d.ts +1 -0
  39. package/dist/definitions/objectDefinition.js +1 -0
  40. package/dist/definitions/objectDefinition.js.map +1 -0
  41. package/dist/definitions/properties.js.map +1 -0
  42. package/dist/error/base.d.ts +22 -3
  43. package/dist/error/base.js +34 -5
  44. package/dist/error/base.js.map +1 -0
  45. package/dist/error/framework.d.ts +27 -2
  46. package/dist/error/framework.js +51 -14
  47. package/dist/error/framework.js.map +1 -0
  48. package/dist/error/http.d.ts +146 -41
  49. package/dist/error/http.js +164 -31
  50. package/dist/error/http.js.map +1 -0
  51. package/dist/error/index.d.ts +1 -1
  52. package/dist/error/index.js +4 -1
  53. package/dist/error/index.js.map +1 -0
  54. package/dist/functional/configuration.d.ts +2 -0
  55. package/dist/functional/configuration.js +10 -0
  56. package/dist/functional/configuration.js.map +1 -0
  57. package/dist/index.d.ts +3 -0
  58. package/dist/index.js +5 -1
  59. package/dist/index.js.map +1 -0
  60. package/dist/interface.d.ts +51 -29
  61. package/dist/interface.js.map +1 -0
  62. package/dist/service/aspectService.js +1 -1
  63. package/dist/service/aspectService.js.map +1 -0
  64. package/dist/service/configService.d.ts +3 -1
  65. package/dist/service/configService.js +23 -17
  66. package/dist/service/configService.js.map +1 -0
  67. package/dist/service/decoratorService.js +25 -13
  68. package/dist/service/decoratorService.js.map +1 -0
  69. package/dist/service/environmentService.d.ts +1 -1
  70. package/dist/service/environmentService.js.map +1 -0
  71. package/dist/service/frameworkService.d.ts +3 -2
  72. package/dist/service/frameworkService.js +17 -12
  73. package/dist/service/frameworkService.js.map +1 -0
  74. package/dist/service/informationService.js.map +1 -0
  75. package/dist/service/lifeCycleService.js +5 -5
  76. package/dist/service/lifeCycleService.js.map +1 -0
  77. package/dist/service/loggerService.d.ts +1 -1
  78. package/dist/service/loggerService.js.map +1 -0
  79. package/dist/service/middlewareService.d.ts +3 -4
  80. package/dist/service/middlewareService.js +7 -11
  81. package/dist/service/middlewareService.js.map +1 -0
  82. package/dist/service/pipelineService.js.map +1 -0
  83. package/dist/setup.js +13 -5
  84. package/dist/setup.js.map +1 -0
  85. package/dist/util/contextUtil.js.map +1 -0
  86. package/dist/util/extend.d.ts +2 -0
  87. package/dist/util/extend.js +55 -0
  88. package/dist/util/extend.js.map +1 -0
  89. package/dist/util/index.js.map +1 -0
  90. package/dist/util/pathFileUtil.js.map +1 -0
  91. package/dist/util/pathToRegexp.js.map +1 -0
  92. package/dist/util/webRouterParam.js +24 -4
  93. package/dist/util/webRouterParam.js.map +1 -0
  94. package/package.json +12 -13
  95. package/CHANGELOG.md +0 -2197
  96. package/dist/error/code.d.ts +0 -60
  97. package/dist/error/code.js +0 -65
@@ -1,4 +1,4 @@
1
- import { IConfigService } from '../interface';
1
+ import { IConfigService, MidwayAppInfo } from '../interface';
2
2
  import { MidwayEnvironmentService } from './environmentService';
3
3
  import { MidwayInformationService } from './informationService';
4
4
  export declare class MidwayConfigService implements IConfigService {
@@ -7,8 +7,10 @@ export declare class MidwayConfigService implements IConfigService {
7
7
  protected configuration: any;
8
8
  protected isReady: boolean;
9
9
  protected externalObject: Record<string, unknown>[];
10
+ protected appInfo: MidwayAppInfo;
10
11
  protected environmentService: MidwayEnvironmentService;
11
12
  protected informationService: MidwayInformationService;
13
+ protected init(): Promise<void>;
12
14
  add(configFilePaths: any[]): void;
13
15
  addObject(obj: Record<string, unknown>): void;
14
16
  private getEnvSet;
@@ -10,7 +10,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.MidwayConfigService = void 0;
13
- const extend = require("extend2");
14
13
  const path_1 = require("path");
15
14
  const util_1 = require("../util");
16
15
  const fs_1 = require("fs");
@@ -18,6 +17,7 @@ const decorator_1 = require("@midwayjs/decorator");
18
17
  const util = require("util");
19
18
  const environmentService_1 = require("./environmentService");
20
19
  const informationService_1 = require("./informationService");
20
+ const extend_1 = require("../util/extend");
21
21
  const debug = util.debuglog('midway:debug');
22
22
  let MidwayConfigService = class MidwayConfigService {
23
23
  constructor() {
@@ -29,6 +29,17 @@ let MidwayConfigService = class MidwayConfigService {
29
29
  this.isReady = false;
30
30
  this.externalObject = [];
31
31
  }
32
+ async init() {
33
+ this.appInfo = {
34
+ pkg: this.informationService.getPkg(),
35
+ name: this.informationService.getProjectName(),
36
+ baseDir: this.informationService.getBaseDir(),
37
+ appDir: this.informationService.getAppDir(),
38
+ HOME: this.informationService.getHome(),
39
+ root: this.informationService.getRoot(),
40
+ env: this.environmentService.getCurrentEnvironment(),
41
+ };
42
+ }
32
43
  add(configFilePaths) {
33
44
  for (const dir of configFilePaths) {
34
45
  if (typeof dir === 'string') {
@@ -63,7 +74,7 @@ let MidwayConfigService = class MidwayConfigService {
63
74
  }
64
75
  addObject(obj) {
65
76
  if (this.isReady) {
66
- extend(true, this.configuration, obj);
77
+ (0, extend_1.extend)(true, this.configuration, obj);
67
78
  }
68
79
  else {
69
80
  this.externalObject.push(obj);
@@ -96,20 +107,9 @@ let MidwayConfigService = class MidwayConfigService {
96
107
  const target = {};
97
108
  for (const filename of [...defaultSet, ...currentEnvSet]) {
98
109
  let config = await this.loadConfig(filename);
99
- if ((0, decorator_1.isFunction)(config)) {
110
+ if (decorator_1.Types.isFunction(config)) {
100
111
  // eslint-disable-next-line prefer-spread
101
- config = config.apply(null, [
102
- {
103
- pkg: this.informationService.getPkg(),
104
- name: this.informationService.getProjectName(),
105
- baseDir: this.informationService.getBaseDir(),
106
- appDir: this.informationService.getAppDir(),
107
- HOME: this.informationService.getHome(),
108
- root: this.informationService.getRoot(),
109
- env: this.environmentService.getCurrentEnvironment(),
110
- },
111
- target,
112
- ]);
112
+ config = config.apply(null, [this.appInfo, target]);
113
113
  }
114
114
  if (!config) {
115
115
  continue;
@@ -120,13 +120,13 @@ let MidwayConfigService = class MidwayConfigService {
120
120
  else {
121
121
  debug('[config]: Loaded config %j', config);
122
122
  }
123
- extend(true, target, config);
123
+ (0, extend_1.extend)(true, target, config);
124
124
  }
125
125
  if (this.externalObject.length) {
126
126
  for (const externalObject of this.externalObject) {
127
127
  if (externalObject) {
128
128
  debug('[config]: Loaded external object %j', externalObject);
129
- extend(true, target, externalObject);
129
+ (0, extend_1.extend)(true, target, externalObject);
130
130
  }
131
131
  }
132
132
  }
@@ -160,6 +160,12 @@ __decorate([
160
160
  (0, decorator_1.Inject)(),
161
161
  __metadata("design:type", informationService_1.MidwayInformationService)
162
162
  ], MidwayConfigService.prototype, "informationService", void 0);
163
+ __decorate([
164
+ (0, decorator_1.Init)(),
165
+ __metadata("design:type", Function),
166
+ __metadata("design:paramtypes", []),
167
+ __metadata("design:returntype", Promise)
168
+ ], MidwayConfigService.prototype, "init", null);
163
169
  MidwayConfigService = __decorate([
164
170
  (0, decorator_1.Provide)(),
165
171
  (0, decorator_1.Scope)(decorator_1.ScopeEnum.Singleton)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configService.js","sourceRoot":"","sources":["../../src/service/configService.ts"],"names":[],"mappings":"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","sourcesContent":["import { basename, join } from 'path';\nimport { IConfigService, MidwayAppInfo } from '../interface';\nimport { safelyGet } from '../util';\nimport { readdirSync, statSync } from 'fs';\nimport {\n Init,\n Inject,\n Types,\n Provide,\n Scope,\n ScopeEnum,\n} from '@midwayjs/decorator';\nimport * as util from 'util';\nimport { MidwayEnvironmentService } from './environmentService';\nimport { MidwayInformationService } from './informationService';\nimport { extend } from '../util/extend';\n\nconst debug = util.debuglog('midway:debug');\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayConfigService implements IConfigService {\n private envDirMap: Map<string, Set<any>> = new Map();\n private aliasMap = {\n prod: 'production',\n unittest: 'test',\n };\n protected configuration;\n protected isReady = false;\n protected externalObject: Record<string, unknown>[] = [];\n protected appInfo: MidwayAppInfo;\n\n @Inject()\n protected environmentService: MidwayEnvironmentService;\n\n @Inject()\n protected informationService: MidwayInformationService;\n\n @Init()\n protected async init() {\n this.appInfo = {\n pkg: this.informationService.getPkg(),\n name: this.informationService.getProjectName(),\n baseDir: this.informationService.getBaseDir(),\n appDir: this.informationService.getAppDir(),\n HOME: this.informationService.getHome(),\n root: this.informationService.getRoot(),\n env: this.environmentService.getCurrentEnvironment(),\n };\n }\n\n add(configFilePaths: any[]) {\n for (const dir of configFilePaths) {\n if (typeof dir === 'string') {\n if (/\\.\\w+$/.test(dir)) {\n // file\n const env = this.getConfigEnv(dir);\n const envSet = this.getEnvSet(env);\n envSet.add(dir);\n if (this.aliasMap[env]) {\n this.getEnvSet(this.aliasMap[env]).add(dir);\n }\n } else {\n // directory\n const fileStat = statSync(dir);\n if (fileStat.isDirectory()) {\n const files = readdirSync(dir);\n this.add(\n files.map(file => {\n return join(dir, file);\n })\n );\n }\n }\n } else {\n // object add\n for (const env in dir) {\n const envSet = this.getEnvSet(env);\n envSet.add(dir[env]);\n }\n }\n }\n }\n\n addObject(obj: Record<string, unknown>) {\n if (this.isReady) {\n extend(true, this.configuration, obj);\n } else {\n this.externalObject.push(obj);\n }\n }\n\n private getEnvSet(env) {\n if (!this.envDirMap.has(env)) {\n this.envDirMap.set(env, new Set());\n }\n return this.envDirMap.get(env);\n }\n\n private getConfigEnv(configFilePath) {\n // parse env\n const configFileBaseName = basename(configFilePath);\n const splits = configFileBaseName.split('.');\n const suffix = splits.pop();\n if (suffix !== 'js' && suffix !== 'ts') {\n return suffix;\n }\n return splits.pop();\n }\n\n async load() {\n if (this.isReady) return;\n // get default\n const defaultSet = this.getEnvSet('default');\n // get current set\n const currentEnvSet = this.getEnvSet(\n this.environmentService.getCurrentEnvironment()\n );\n // merge set\n const target = {};\n for (const filename of [...defaultSet, ...currentEnvSet]) {\n let config = await this.loadConfig(filename);\n if (Types.isFunction(config)) {\n // eslint-disable-next-line prefer-spread\n config = config.apply(null, [this.appInfo, target]);\n }\n\n if (!config) {\n continue;\n }\n\n if (typeof filename === 'string') {\n debug('[config]: Loaded config %s, %j', filename, config);\n } else {\n debug('[config]: Loaded config %j', config);\n }\n\n extend(true, target, config);\n }\n if (this.externalObject.length) {\n for (const externalObject of this.externalObject) {\n if (externalObject) {\n debug('[config]: Loaded external object %j', externalObject);\n extend(true, target, externalObject);\n }\n }\n }\n this.configuration = target;\n this.isReady = true;\n }\n\n getConfiguration(configKey?: string) {\n if (configKey) {\n return safelyGet(configKey, this.configuration);\n }\n return this.configuration;\n }\n\n private async loadConfig(\n configFilename\n ): Promise<(...args) => any | Record<string, unknown>> {\n let exports =\n typeof configFilename === 'string'\n ? require(configFilename)\n : configFilename;\n if (exports && exports['default'] && Object.keys(exports).length === 1) {\n exports = exports['default'];\n }\n return exports;\n }\n\n clearAllConfig() {\n this.configuration.clear();\n }\n}\n"]}
@@ -30,7 +30,10 @@ let MidwayDecoratorService = class MidwayDecoratorService {
30
30
  if (methodDecoratorMetadataList) {
31
31
  // loop it, save this order for decorator run
32
32
  for (const meta of methodDecoratorMetadataList) {
33
- const { propertyName, key, metadata } = meta;
33
+ const { propertyName, key, metadata, impl } = meta;
34
+ if (!impl) {
35
+ continue;
36
+ }
34
37
  // add aspect implementation first
35
38
  this.aspectService.interceptPrototypeMethod(Clzz, propertyName, () => {
36
39
  const methodDecoratorHandler = this.methodDecoratorMap.get(key);
@@ -57,20 +60,29 @@ let MidwayDecoratorService = class MidwayDecoratorService {
57
60
  // joinPoint.args
58
61
  const newArgs = [...joinPoint.args];
59
62
  for (const meta of parameterDecoratorMetadata[methodName]) {
60
- const { propertyName, key, metadata, parameterIndex } = meta;
63
+ const { propertyName, key, metadata, parameterIndex, impl } = meta;
64
+ if (!impl) {
65
+ continue;
66
+ }
61
67
  const parameterDecoratorHandler = this.parameterDecoratorMap.get(key);
62
68
  if (!parameterDecoratorHandler) {
63
69
  throw new error_1.MidwayCommonError(`Parameter Decorator "${key}" handler not found, please register first.`);
64
70
  }
65
71
  const paramTypes = (0, decorator_1.getMethodParamTypes)(Clzz, propertyName);
66
- newArgs[parameterIndex] = await parameterDecoratorHandler({
67
- metadata,
68
- propertyName,
69
- parameterIndex,
70
- target: Clzz,
71
- originArgs: joinPoint.args,
72
- originParamType: paramTypes[parameterIndex],
73
- });
72
+ try {
73
+ newArgs[parameterIndex] = await parameterDecoratorHandler({
74
+ metadata,
75
+ propertyName,
76
+ parameterIndex,
77
+ target: Clzz,
78
+ originArgs: joinPoint.args,
79
+ originParamType: paramTypes[parameterIndex],
80
+ });
81
+ }
82
+ catch (err) {
83
+ // ignore
84
+ debug(`[core]: Parameter decorator throw error and use origin args, ${err.stack}`);
85
+ }
74
86
  }
75
87
  joinPoint.args = newArgs;
76
88
  },
@@ -95,15 +107,15 @@ let MidwayDecoratorService = class MidwayDecoratorService {
95
107
  });
96
108
  }
97
109
  registerPropertyHandler(decoratorKey, fn) {
98
- debug(`[core:decorator]: Register property decorator key="${decoratorKey}"`);
110
+ debug(`[core]: Register property decorator key="${decoratorKey}"`);
99
111
  this.propertyHandlerMap.set(decoratorKey, fn);
100
112
  }
101
113
  registerMethodHandler(decoratorKey, fn) {
102
- debug(`[core:decorator]: Register method decorator key="${decoratorKey}"`);
114
+ debug(`[core]: Register method decorator key="${decoratorKey}"`);
103
115
  this.methodDecoratorMap.set(decoratorKey, fn);
104
116
  }
105
117
  registerParameterHandler(decoratorKey, fn) {
106
- debug(`[core:decorator]: Register parameter decorator key="${decoratorKey}"`);
118
+ debug(`[core]: Register parameter decorator key="${decoratorKey}"`);
107
119
  this.parameterDecoratorMap.set(decoratorKey, fn);
108
120
  }
109
121
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoratorService.js","sourceRoot":"","sources":["../../src/service/decoratorService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getClassMetadata,\n Init,\n Inject,\n Provide,\n Scope,\n ScopeEnum,\n INJECT_CUSTOM_METHOD,\n APPLICATION_CONTEXT_KEY,\n INJECT_CUSTOM_PARAM,\n JoinPoint,\n getMethodParamTypes,\n} from '@midwayjs/decorator';\nimport {\n HandlerFunction,\n IMidwayContainer,\n MethodHandlerFunction,\n ParameterHandlerFunction,\n} from '../interface';\nimport { MidwayAspectService } from './aspectService';\nimport { MidwayCommonError } from '../error';\nimport * as util from 'util';\n\nconst debug = util.debuglog('midway:debug');\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayDecoratorService {\n private propertyHandlerMap = new Map<string, HandlerFunction>();\n private methodDecoratorMap: Map<string, (...args) => any> = new Map();\n private parameterDecoratorMap: Map<string, (...args) => any> = new Map();\n\n @Inject()\n private aspectService: MidwayAspectService;\n\n constructor(readonly applicationContext: IMidwayContainer) {}\n\n @Init()\n protected async init() {\n // add custom method decorator listener\n this.applicationContext.onBeforeBind(Clzz => {\n // find custom method decorator metadata, include method decorator information array\n const methodDecoratorMetadataList: Array<{\n propertyName: string;\n key: string;\n metadata: any;\n impl: boolean;\n }> = getClassMetadata(INJECT_CUSTOM_METHOD, Clzz);\n\n if (methodDecoratorMetadataList) {\n // loop it, save this order for decorator run\n for (const meta of methodDecoratorMetadataList) {\n const { propertyName, key, metadata, impl } = meta;\n if (!impl) {\n continue;\n }\n // add aspect implementation first\n this.aspectService.interceptPrototypeMethod(\n Clzz,\n propertyName,\n () => {\n const methodDecoratorHandler = this.methodDecoratorMap.get(key);\n if (!methodDecoratorHandler) {\n throw new MidwayCommonError(\n `Method Decorator \"${key}\" handler not found, please register first.`\n );\n }\n return this.methodDecoratorMap.get(key)({\n target: Clzz,\n propertyName,\n metadata,\n });\n }\n );\n }\n }\n\n // find custom param decorator metadata\n const parameterDecoratorMetadata: {\n [methodName: string]: Array<{\n key: string;\n parameterIndex: number;\n propertyName: string;\n metadata: any;\n impl: boolean;\n }>;\n } = getClassMetadata(INJECT_CUSTOM_PARAM, Clzz);\n\n if (parameterDecoratorMetadata) {\n // loop it, save this order for decorator run\n for (const methodName of Object.keys(parameterDecoratorMetadata)) {\n // add aspect implementation first\n this.aspectService.interceptPrototypeMethod(Clzz, methodName, () => {\n return {\n before: async (joinPoint: JoinPoint) => {\n // joinPoint.args\n const newArgs = [...joinPoint.args];\n for (const meta of parameterDecoratorMetadata[methodName]) {\n const { propertyName, key, metadata, parameterIndex, impl } =\n meta;\n if (!impl) {\n continue;\n }\n\n const parameterDecoratorHandler =\n this.parameterDecoratorMap.get(key);\n if (!parameterDecoratorHandler) {\n throw new MidwayCommonError(\n `Parameter Decorator \"${key}\" handler not found, please register first.`\n );\n }\n const paramTypes = getMethodParamTypes(Clzz, propertyName);\n try {\n newArgs[parameterIndex] = await parameterDecoratorHandler({\n metadata,\n propertyName,\n parameterIndex,\n target: Clzz,\n originArgs: joinPoint.args,\n originParamType: paramTypes[parameterIndex],\n });\n } catch (err) {\n // ignore\n debug(\n `[core]: Parameter decorator throw error and use origin args, ${err.stack}`\n );\n }\n }\n joinPoint.args = newArgs;\n },\n };\n });\n }\n }\n });\n\n // add custom property decorator listener\n this.applicationContext.onObjectCreated((instance, options) => {\n if (\n this.propertyHandlerMap.size > 0 &&\n Array.isArray(options.definition.handlerProps)\n ) {\n // has bind in container\n for (const item of options.definition.handlerProps) {\n this.defineGetterPropertyValue(\n item,\n instance,\n this.getHandler(item.key)\n );\n }\n }\n });\n\n // register @ApplicationContext\n this.registerPropertyHandler(\n APPLICATION_CONTEXT_KEY,\n (propertyName, mete) => {\n return this.applicationContext;\n }\n );\n }\n\n public registerPropertyHandler(decoratorKey: string, fn: HandlerFunction) {\n debug(`[core]: Register property decorator key=\"${decoratorKey}\"`);\n this.propertyHandlerMap.set(decoratorKey, fn);\n }\n\n public registerMethodHandler(\n decoratorKey: string,\n fn: MethodHandlerFunction\n ) {\n debug(`[core]: Register method decorator key=\"${decoratorKey}\"`);\n this.methodDecoratorMap.set(decoratorKey, fn);\n }\n\n public registerParameterHandler(\n decoratorKey: string,\n fn: ParameterHandlerFunction\n ) {\n debug(`[core]: Register parameter decorator key=\"${decoratorKey}\"`);\n this.parameterDecoratorMap.set(decoratorKey, fn);\n }\n\n /**\n * binding getter method for decorator\n *\n * @param prop\n * @param instance\n * @param getterHandler\n */\n private defineGetterPropertyValue(prop, instance, getterHandler) {\n if (prop && getterHandler) {\n if (prop.propertyName) {\n Object.defineProperty(instance, prop.propertyName, {\n get: () =>\n getterHandler(prop.propertyName, prop.metadata ?? {}, instance),\n configurable: true, // 继承对象有可能会有相同属性,这里需要配置成 true\n enumerable: true,\n });\n }\n }\n }\n\n private getHandler(key: string) {\n if (this.propertyHandlerMap.has(key)) {\n return this.propertyHandlerMap.get(key);\n }\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { IEnvironmentService } from '../interface';
2
2
  export declare class MidwayEnvironmentService implements IEnvironmentService {
3
- environment: string;
3
+ protected environment: string;
4
4
  getCurrentEnvironment(): string;
5
5
  setCurrentEnvironment(environment: string): void;
6
6
  isDevelopmentEnvironment(): boolean;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environmentService.js","sourceRoot":"","sources":["../../src/service/environmentService.ts"],"names":[],"mappings":";;;;;;;;;AACA,kCAA0E;AAC1E,mDAAgE;AAIhE,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAG5B,qBAAqB;QAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAA,4BAAqB,GAAE,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,qBAAqB,CAAC,WAAmB;QAC9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,wBAAwB;QAC7B,OAAO,IAAA,+BAAwB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACF,CAAA;AAjBY,wBAAwB;IAFpC,IAAA,mBAAO,GAAE;IACT,IAAA,iBAAK,EAAC,qBAAS,CAAC,SAAS,CAAC;GACd,wBAAwB,CAiBpC;AAjBY,4DAAwB","sourcesContent":["import { IEnvironmentService } from '../interface';\nimport { isDevelopmentEnvironment, getCurrentEnvironment } from '../util';\nimport { Provide, Scope, ScopeEnum } from '@midwayjs/decorator';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayEnvironmentService implements IEnvironmentService {\n protected environment: string;\n\n public getCurrentEnvironment() {\n if (!this.environment) {\n this.environment = getCurrentEnvironment();\n }\n return this.environment;\n }\n\n public setCurrentEnvironment(environment: string) {\n this.environment = environment;\n }\n\n public isDevelopmentEnvironment() {\n return isDevelopmentEnvironment(this.environment);\n }\n}\n"]}
@@ -4,6 +4,7 @@ import { MidwayConfigService } from './configService';
4
4
  import { MidwayLoggerService } from './loggerService';
5
5
  import { MidwayDecoratorService } from './decoratorService';
6
6
  import { MidwayAspectService } from './aspectService';
7
+ import { MidwayApplicationManager } from '../common/applicationManager';
7
8
  export declare class MidwayFrameworkService {
8
9
  readonly applicationContext: IMidwayContainer;
9
10
  readonly globalOptions: any;
@@ -11,14 +12,14 @@ export declare class MidwayFrameworkService {
11
12
  loggerService: MidwayLoggerService;
12
13
  aspectService: MidwayAspectService;
13
14
  decoratorService: MidwayDecoratorService;
15
+ applicationManager: MidwayApplicationManager;
14
16
  constructor(applicationContext: IMidwayContainer, globalOptions: any);
15
17
  private mainFramework;
16
- private globalFrameworkMap;
17
18
  private globalFrameworkList;
18
19
  protected init(): Promise<void>;
19
20
  getMainApp(): any;
20
21
  getMainFramework(): IMidwayFramework<any, any, any, unknown, unknown>;
21
- getFramework(type: MidwayFrameworkType): IMidwayFramework<any, any, any, unknown, unknown>;
22
+ getFramework(namespaceOrFrameworkType: string | MidwayFrameworkType): IMidwayFramework<any, any, any, unknown, unknown>;
22
23
  runFramework(): Promise<void>;
23
24
  stopFramework(): Promise<void>;
24
25
  }
@@ -18,6 +18,7 @@ const baseFramework_1 = require("../baseFramework");
18
18
  const pipelineService_1 = require("./pipelineService");
19
19
  const decoratorService_1 = require("./decoratorService");
20
20
  const aspectService_1 = require("./aspectService");
21
+ const applicationManager_1 = require("../common/applicationManager");
21
22
  const util = require("util");
22
23
  const error_1 = require("../error");
23
24
  const debug = util.debuglog('midway:debug');
@@ -25,10 +26,10 @@ let MidwayFrameworkService = class MidwayFrameworkService {
25
26
  constructor(applicationContext, globalOptions) {
26
27
  this.applicationContext = applicationContext;
27
28
  this.globalOptions = globalOptions;
28
- this.globalFrameworkMap = new WeakMap();
29
29
  this.globalFrameworkList = [];
30
30
  }
31
31
  async init() {
32
+ var _a;
32
33
  // register base config hook
33
34
  this.decoratorService.registerPropertyHandler(decorator_1.CONFIG_KEY, (propertyName, meta) => {
34
35
  var _a;
@@ -51,7 +52,7 @@ let MidwayFrameworkService = class MidwayFrameworkService {
51
52
  let frameworks = (0, decorator_1.listModule)(decorator_1.FRAMEWORK_KEY);
52
53
  // filter proto
53
54
  frameworks = filterProtoFramework(frameworks);
54
- debug(`[core:framework]: Found Framework length = ${frameworks.length}`);
55
+ debug(`[core]: Found Framework length = ${frameworks.length}`);
55
56
  if (frameworks.length) {
56
57
  for (const frameworkClz of frameworks) {
57
58
  const frameworkInstance = await this.applicationContext.getAsync(frameworkClz, [this.applicationContext]);
@@ -62,24 +63,24 @@ let MidwayFrameworkService = class MidwayFrameworkService {
62
63
  applicationContext: this.applicationContext,
63
64
  ...this.globalOptions,
64
65
  });
65
- debug(`[core:framework]: Found Framework "${frameworkInstance.getFrameworkName()}" and initialize.`);
66
+ debug(`[core]: Found Framework "${frameworkInstance.getFrameworkName()}" and initialize.`);
66
67
  }
67
68
  else {
68
- debug(`[core:framework]: Found Framework "${frameworkInstance.getFrameworkName()}" and delay initialize.`);
69
+ debug(`[core]: Found Framework "${frameworkInstance.getFrameworkName()}" and delay initialize.`);
69
70
  }
70
71
  // app init
71
- this.globalFrameworkMap.set(frameworkInstance.getFrameworkType(), frameworkInstance);
72
+ const definition = this.applicationContext.registry.getDefinition((0, decorator_1.getProviderUUId)(frameworkClz));
73
+ this.applicationManager.addFramework((_a = definition === null || definition === void 0 ? void 0 : definition.namespace) !== null && _a !== void 0 ? _a : frameworkInstance.getFrameworkName(), frameworkInstance);
72
74
  this.globalFrameworkList.push(frameworkInstance);
73
75
  }
74
76
  // register @App decorator handler
75
77
  this.decoratorService.registerPropertyHandler(decorator_1.APPLICATION_KEY, (propertyName, mete) => {
76
78
  if (mete.type) {
77
- if (this.globalFrameworkMap.has(mete.type)) {
78
- return this.globalFrameworkMap.get(mete.type).getApplication();
79
- }
80
- else {
79
+ const framework = this.applicationManager.getApplication(mete.type);
80
+ if (!framework) {
81
81
  throw new error_1.MidwayCommonError(`Framework ${mete.type} not Found`);
82
82
  }
83
+ return framework;
83
84
  }
84
85
  else {
85
86
  return this.getMainApp();
@@ -107,8 +108,8 @@ let MidwayFrameworkService = class MidwayFrameworkService {
107
108
  getMainFramework() {
108
109
  return this.mainFramework;
109
110
  }
110
- getFramework(type) {
111
- return this.globalFrameworkMap.get(type);
111
+ getFramework(namespaceOrFrameworkType) {
112
+ return this.applicationManager.getFramework(namespaceOrFrameworkType);
112
113
  }
113
114
  async runFramework() {
114
115
  for (const frameworkInstance of this.globalFrameworkList) {
@@ -116,7 +117,7 @@ let MidwayFrameworkService = class MidwayFrameworkService {
116
117
  if (frameworkInstance.isEnable()) {
117
118
  // app init
118
119
  await frameworkInstance.run();
119
- debug(`[core:framework]: Found Framework "${frameworkInstance.getFrameworkName()}" and run.`);
120
+ debug(`[core]: Found Framework "${frameworkInstance.getFrameworkName()}" and run.`);
120
121
  }
121
122
  }
122
123
  }
@@ -142,6 +143,10 @@ __decorate([
142
143
  (0, decorator_1.Inject)(),
143
144
  __metadata("design:type", decoratorService_1.MidwayDecoratorService)
144
145
  ], MidwayFrameworkService.prototype, "decoratorService", void 0);
146
+ __decorate([
147
+ (0, decorator_1.Inject)(),
148
+ __metadata("design:type", applicationManager_1.MidwayApplicationManager)
149
+ ], MidwayFrameworkService.prototype, "applicationManager", void 0);
145
150
  __decorate([
146
151
  (0, decorator_1.Init)(),
147
152
  __metadata("design:type", Function),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameworkService.js","sourceRoot":"","sources":["../../src/service/frameworkService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ALL,\n APPLICATION_KEY,\n CONFIG_KEY,\n FRAMEWORK_KEY,\n getProviderUUId,\n Init,\n Inject,\n listModule,\n listPreloadModule,\n LOGGER_KEY,\n MidwayFrameworkType,\n PIPELINE_IDENTIFIER,\n PLUGIN_KEY,\n Provide,\n Scope,\n ScopeEnum,\n} from '@midwayjs/decorator';\nimport {\n IMidwayContainer,\n IMidwayFramework,\n REQUEST_OBJ_CTX_KEY,\n} from '../interface';\nimport { MidwayConfigService } from './configService';\nimport { MidwayLoggerService } from './loggerService';\nimport { BaseFramework } from '../baseFramework';\nimport { MidwayPipelineService } from './pipelineService';\nimport { MidwayDecoratorService } from './decoratorService';\nimport { MidwayAspectService } from './aspectService';\nimport { MidwayApplicationManager } from '../common/applicationManager';\nimport * as util from 'util';\nimport { MidwayCommonError } from '../error';\n\nconst debug = util.debuglog('midway:debug');\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayFrameworkService {\n @Inject()\n configService: MidwayConfigService;\n\n @Inject()\n loggerService: MidwayLoggerService;\n\n @Inject()\n aspectService: MidwayAspectService;\n\n @Inject()\n decoratorService: MidwayDecoratorService;\n\n @Inject()\n applicationManager: MidwayApplicationManager;\n\n constructor(\n readonly applicationContext: IMidwayContainer,\n readonly globalOptions\n ) {}\n\n private mainFramework: IMidwayFramework<any, any, any>;\n\n private globalFrameworkList: Array<IMidwayFramework<any, any, any>> = [];\n\n @Init()\n protected async init() {\n // register base config hook\n this.decoratorService.registerPropertyHandler(\n CONFIG_KEY,\n (propertyName, meta) => {\n if (meta.identifier === ALL) {\n return this.configService.getConfiguration();\n } else {\n return this.configService.getConfiguration(\n meta.identifier ?? propertyName\n );\n }\n }\n );\n\n // register @Logger decorator handler\n this.decoratorService.registerPropertyHandler(\n LOGGER_KEY,\n (propertyName, meta) => {\n return this.loggerService.getLogger(meta.identifier ?? propertyName);\n }\n );\n\n this.decoratorService.registerPropertyHandler(\n PIPELINE_IDENTIFIER,\n (key, meta, instance) => {\n return new MidwayPipelineService(\n instance[REQUEST_OBJ_CTX_KEY]?.requestContext ??\n this.applicationContext,\n meta.valves\n );\n }\n );\n\n let frameworks: Array<new (...args) => any> = listModule(FRAMEWORK_KEY);\n // filter proto\n frameworks = filterProtoFramework(frameworks);\n\n debug(`[core]: Found Framework length = ${frameworks.length}`);\n\n if (frameworks.length) {\n for (const frameworkClz of frameworks) {\n const frameworkInstance = await this.applicationContext.getAsync<\n IMidwayFramework<any, any, any>\n >(frameworkClz, [this.applicationContext]);\n // if enable, just init framework\n if (frameworkInstance.isEnable()) {\n // app init\n await frameworkInstance.initialize({\n applicationContext: this.applicationContext,\n ...this.globalOptions,\n });\n\n debug(\n `[core]: Found Framework \"${frameworkInstance.getFrameworkName()}\" and initialize.`\n );\n } else {\n debug(\n `[core]: Found Framework \"${frameworkInstance.getFrameworkName()}\" and delay initialize.`\n );\n }\n // app init\n const definition = this.applicationContext.registry.getDefinition(\n getProviderUUId(frameworkClz)\n );\n this.applicationManager.addFramework(\n definition?.namespace ?? frameworkInstance.getFrameworkName(),\n frameworkInstance\n );\n this.globalFrameworkList.push(frameworkInstance);\n }\n\n // register @App decorator handler\n this.decoratorService.registerPropertyHandler(\n APPLICATION_KEY,\n (propertyName, mete) => {\n if (mete.type) {\n const framework = this.applicationManager.getApplication(mete.type);\n if (!framework) {\n throw new MidwayCommonError(`Framework ${mete.type} not Found`);\n }\n return framework;\n } else {\n return this.getMainApp();\n }\n }\n );\n\n this.decoratorService.registerPropertyHandler(\n PLUGIN_KEY,\n (key, target) => {\n return this.getMainApp()[key];\n }\n );\n\n global['MIDWAY_MAIN_FRAMEWORK'] = this.mainFramework =\n this.globalFrameworkList[0];\n }\n\n // init aspect module\n await this.aspectService.loadAspect();\n\n // some preload module init\n const modules = listPreloadModule();\n for (const module of modules) {\n // preload init context\n await this.applicationContext.getAsync(module);\n }\n }\n\n public getMainApp() {\n return this.mainFramework?.getApplication();\n }\n\n public getMainFramework() {\n return this.mainFramework;\n }\n\n public getFramework(namespaceOrFrameworkType: string | MidwayFrameworkType) {\n return this.applicationManager.getFramework(namespaceOrFrameworkType);\n }\n\n public async runFramework() {\n for (const frameworkInstance of this.globalFrameworkList) {\n // if enable, just init framework\n if (frameworkInstance.isEnable()) {\n // app init\n await frameworkInstance.run();\n debug(\n `[core]: Found Framework \"${frameworkInstance.getFrameworkName()}\" and run.`\n );\n }\n }\n }\n\n public async stopFramework() {\n await Promise.all(\n Array.from(this.globalFrameworkList).map(frameworkInstance => {\n return frameworkInstance.stop();\n })\n );\n }\n}\n\nfunction filterProtoFramework(frameworks) {\n const frameworkProtoArr = [];\n // 这里把继承的框架父类都找出来,然后排除掉,只取第一层\n for (const framework of frameworks) {\n let proto = Object.getPrototypeOf(framework);\n while (proto.name && proto.name !== BaseFramework.name) {\n frameworkProtoArr.push(proto);\n proto = Object.getPrototypeOf(proto);\n }\n }\n return frameworks.filter(framework => {\n return !frameworkProtoArr.includes(framework);\n });\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"informationService.js","sourceRoot":"","sources":["../../src/service/informationService.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,kCAKiB;AACjB,+BAAqC;AACrC,mDAA8E;AAI9E,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAUzB,IAAI;QACZ,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,MAAM,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrC;YACD,IAAI,CAAC,GAAG,GAAG,IAAA,kBAAW,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;SACjE;aAAM;YACL,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;SACf;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,IAAA,kBAAW,GAAE,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,cAAc;;QACZ,OAAO,CAAC,MAAA,IAAI,CAAC,GAAG,0CAAG,MAAM,CAAY,KAAI,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,MAAM,gBAAgB,GAAG,IAAA,+BAAwB,EAAC,IAAA,4BAAqB,GAAE,CAAC,CAAC;QAC3E,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;CACF,CAAA;AAzCC;IADC,IAAA,kBAAM,GAAE;;wDACgB;AAGzB;IADC,IAAA,kBAAM,GAAE;;yDACiB;AAG1B;IADC,IAAA,gBAAI,GAAE;;;;oDAUN;AAnBU,wBAAwB;IAFpC,IAAA,mBAAO,GAAE;IACT,IAAA,iBAAK,EAAC,qBAAS,CAAC,SAAS,CAAC;GACd,wBAAwB,CA6CpC;AA7CY,4DAAwB","sourcesContent":["import { IInformationService } from '../interface';\nimport {\n getCurrentEnvironment,\n getUserHome,\n isDevelopmentEnvironment,\n safeRequire,\n} from '../util';\nimport { dirname, join } from 'path';\nimport { Provide, Inject, Init, Scope, ScopeEnum } from '@midwayjs/decorator';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayInformationService implements IInformationService {\n private pkg: Record<string, unknown>;\n\n @Inject()\n protected appDir: string;\n\n @Inject()\n protected baseDir: string;\n\n @Init()\n protected init() {\n if (this.baseDir) {\n if (!this.appDir) {\n this.appDir = dirname(this.baseDir);\n }\n this.pkg = safeRequire(join(this.appDir, 'package.json')) || {};\n } else {\n this.pkg = {};\n }\n }\n\n getAppDir(): string {\n return this.appDir;\n }\n\n getBaseDir(): string {\n return this.baseDir;\n }\n\n getHome(): string {\n return getUserHome();\n }\n\n getPkg(): any {\n return this.pkg;\n }\n\n getProjectName(): string {\n return (this.pkg?.['name'] as string) || '';\n }\n\n getRoot(): string {\n const isDevelopmentEnv = isDevelopmentEnvironment(getCurrentEnvironment());\n return isDevelopmentEnv ? this.getAppDir() : this.getHome();\n }\n}\n"]}
@@ -23,7 +23,7 @@ let MidwayLifeCycleService = class MidwayLifeCycleService {
23
23
  async init() {
24
24
  // run lifecycle
25
25
  const cycles = (0, decorator_1.listModule)(decorator_1.CONFIGURATION_KEY);
26
- debug(`[core:lifecycle]: Found Configuration length = ${cycles.length}`);
26
+ debug(`[core]: Found Configuration length = ${cycles.length}`);
27
27
  const lifecycleInstanceList = [];
28
28
  for (const cycle of cycles) {
29
29
  if (cycle.target instanceof configuration_1.FunctionalConfiguration) {
@@ -32,7 +32,7 @@ let MidwayLifeCycleService = class MidwayLifeCycleService {
32
32
  }
33
33
  else {
34
34
  // 普通类写法
35
- debug(`[core:lifecycle]: run ${cycle.target.name} init`);
35
+ debug(`[core]: run ${cycle.target.name} init`);
36
36
  cycle.instance = await this.applicationContext.getAsync(cycle.target);
37
37
  }
38
38
  cycle.instance && lifecycleInstanceList.push(cycle);
@@ -80,7 +80,7 @@ let MidwayLifeCycleService = class MidwayLifeCycleService {
80
80
  if (Array.isArray(lifecycleInstanceOrList)) {
81
81
  for (const cycle of lifecycleInstanceOrList) {
82
82
  if (typeof cycle.instance[lifecycle] === 'function') {
83
- debug(`[core:lifecycle]: run ${cycle.instance.constructor.name} ${lifecycle}`);
83
+ debug(`[core]: run ${cycle.instance.constructor.name} ${lifecycle}`);
84
84
  const result = await cycle.instance[lifecycle](this.applicationContext, this.frameworkService.getMainApp());
85
85
  if (resultHandler) {
86
86
  resultHandler(result);
@@ -90,7 +90,7 @@ let MidwayLifeCycleService = class MidwayLifeCycleService {
90
90
  }
91
91
  else {
92
92
  if (typeof lifecycleInstanceOrList[lifecycle] === 'function') {
93
- debug(`[core:lifecycle]: run ${lifecycleInstanceOrList.constructor.name} ${lifecycle}`);
93
+ debug(`[core]: run ${lifecycleInstanceOrList.constructor.name} ${lifecycle}`);
94
94
  const result = await lifecycleInstanceOrList[lifecycle](this.applicationContext, this.frameworkService.getMainApp());
95
95
  if (resultHandler) {
96
96
  resultHandler(result);
@@ -101,7 +101,7 @@ let MidwayLifeCycleService = class MidwayLifeCycleService {
101
101
  async runObjectLifeCycle(lifecycleInstanceList, lifecycle) {
102
102
  for (const cycle of lifecycleInstanceList) {
103
103
  if (typeof cycle.instance[lifecycle] === 'function') {
104
- debug(`[core:lifecycle]: run ${cycle.instance.constructor.name} ${lifecycle}`);
104
+ debug(`[core]: run ${cycle.instance.constructor.name} ${lifecycle}`);
105
105
  return this.applicationContext[lifecycle](cycle.instance[lifecycle].bind(cycle.instance));
106
106
  }
107
107
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifeCycleService.js","sourceRoot":"","sources":["../../src/service/lifeCycleService.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,mDAQ6B;AAC7B,+DAAsE;AACtE,yDAA4D;AAC5D,mDAAsD;AACtD,+BAAgC;AAChC,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,cAAc,CAAC,CAAC;AAIvC,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAOjC,YAAqB,kBAAoC;QAApC,uBAAkB,GAAlB,kBAAkB,CAAkB;IAAG,CAAC;IAGnD,KAAK,CAAC,IAAI;QAClB,gBAAgB;QAChB,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,6BAAiB,CAAC,CAAC;QAE7C,KAAK,CAAC,wCAAwC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAE/D,MAAM,qBAAqB,GAAG,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,KAAK,CAAC,MAAM,YAAY,uCAAuB,EAAE;gBACnD,QAAQ;gBACR,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;aAC/B;iBAAM;gBACL,QAAQ;gBACR,KAAK,CAAC,eAAe,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;gBAC/C,KAAK,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CACrD,KAAK,CAAC,MAAM,CACb,CAAC;aACH;YAED,KAAK,CAAC,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrD;QAED,wBAAwB;QACxB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;YACvE,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;YACjE,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,cAAc,CAAC;YAC9D,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;SACxE,CAAC,CAAC;QAEH,2BAA2B;QAC3B,aAAa;QAEb,sBAAsB;QACtB,MAAM,IAAI,CAAC,qBAAqB,CAC9B,qBAAqB,EACrB,cAAc,EACd,UAAU,CAAC,EAAE;YACX,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;aAC1C;QACH,CAAC,CACF,CAAC;QAEF,iBAAiB;QACjB,MAAM,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;QAEnE,uBAAuB;QACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAE3C,uBAAuB;QACvB,MAAM,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,iBAAiB;QACjB,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,6BAAiB,CAAC,CAAC;QAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,IAAI,CAAC;YACT,IAAI,KAAK,CAAC,MAAM,YAAY,uCAAuB,EAAE;gBACnD,QAAQ;gBACR,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;aACrB;iBAAM;gBACL,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAa,KAAK,CAAC,MAAM,CAAC,CAAC;aACzE;YAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAClD;QAED,iBAAiB;QACjB,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,uBAAuB,EACvB,SAAS,EACT,aAAqC;QAErC,IAAI,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE;YAC1C,KAAK,MAAM,KAAK,IAAI,uBAAuB,EAAE;gBAC3C,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE;oBACnD,KAAK,CAAC,eAAe,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;oBACrE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC5C,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CACnC,CAAC;oBACF,IAAI,aAAa,EAAE;wBACjB,aAAa,CAAC,MAAM,CAAC,CAAC;qBACvB;iBACF;aACF;SACF;aAAM;YACL,IAAI,OAAO,uBAAuB,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE;gBAC5D,KAAK,CACH,eAAe,uBAAuB,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,EAAE,CACvE,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CACrD,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CACnC,CAAC;gBACF,IAAI,aAAa,EAAE;oBACjB,aAAa,CAAC,MAAM,CAAC,CAAC;iBACvB;aACF;SACF;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,SAAS;QAC/D,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE;YACzC,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE;gBACnD,KAAK,CAAC,eAAe,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CACvC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC/C,CAAC;aACH;SACF;IACH,CAAC;CACF,CAAA;AA9HC;IADC,IAAA,kBAAM,GAAE;8BACmB,yCAAsB;gEAAC;AAGnD;IADC,IAAA,kBAAM,GAAE;8BACgB,mCAAmB;6DAAC;AAK7C;IADC,IAAA,gBAAI,GAAE;;;;kDAqDN;AA9DU,sBAAsB;IAFlC,IAAA,mBAAO,GAAE;IACT,IAAA,iBAAK,EAAC,qBAAS,CAAC,SAAS,CAAC;;GACd,sBAAsB,CAgIlC;AAhIY,wDAAsB","sourcesContent":["import { ILifeCycle, IMidwayContainer } from '../interface';\nimport {\n CONFIGURATION_KEY,\n Init,\n Inject,\n listModule,\n Provide,\n Scope,\n ScopeEnum,\n} from '@midwayjs/decorator';\nimport { FunctionalConfiguration } from '../functional/configuration';\nimport { MidwayFrameworkService } from './frameworkService';\nimport { MidwayConfigService } from './configService';\nimport { debuglog } from 'util';\nconst debug = debuglog('midway:debug');\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayLifeCycleService {\n @Inject()\n protected frameworkService: MidwayFrameworkService;\n\n @Inject()\n protected configService: MidwayConfigService;\n\n constructor(readonly applicationContext: IMidwayContainer) {}\n\n @Init()\n protected async init() {\n // run lifecycle\n const cycles = listModule(CONFIGURATION_KEY);\n\n debug(`[core]: Found Configuration length = ${cycles.length}`);\n\n const lifecycleInstanceList = [];\n for (const cycle of cycles) {\n if (cycle.target instanceof FunctionalConfiguration) {\n // 函数式写法\n cycle.instance = cycle.target;\n } else {\n // 普通类写法\n debug(`[core]: run ${cycle.target.name} init`);\n cycle.instance = await this.applicationContext.getAsync<ILifeCycle>(\n cycle.target\n );\n }\n\n cycle.instance && lifecycleInstanceList.push(cycle);\n }\n\n // bind object lifecycle\n await Promise.all([\n this.runObjectLifeCycle(lifecycleInstanceList, 'onBeforeObjectCreated'),\n this.runObjectLifeCycle(lifecycleInstanceList, 'onObjectCreated'),\n this.runObjectLifeCycle(lifecycleInstanceList, 'onObjectInit'),\n this.runObjectLifeCycle(lifecycleInstanceList, 'onBeforeObjectDestroy'),\n ]);\n\n // bind framework lifecycle\n // onAppError\n\n // exec onConfigLoad()\n await this.runContainerLifeCycle(\n lifecycleInstanceList,\n 'onConfigLoad',\n configData => {\n if (configData) {\n this.configService.addObject(configData);\n }\n }\n );\n\n // exec onReady()\n await this.runContainerLifeCycle(lifecycleInstanceList, 'onReady');\n\n // exec framework.run()\n await this.frameworkService.runFramework();\n\n // exec onServerReady()\n await this.runContainerLifeCycle(lifecycleInstanceList, 'onServerReady');\n }\n\n public async stop() {\n // stop lifecycle\n const cycles = listModule(CONFIGURATION_KEY);\n\n for (const cycle of cycles) {\n let inst;\n if (cycle.target instanceof FunctionalConfiguration) {\n // 函数式写法\n inst = cycle.target;\n } else {\n inst = await this.applicationContext.getAsync<ILifeCycle>(cycle.target);\n }\n\n await this.runContainerLifeCycle(inst, 'onStop');\n }\n\n // stop framework\n await this.frameworkService.stopFramework();\n }\n\n private async runContainerLifeCycle(\n lifecycleInstanceOrList,\n lifecycle,\n resultHandler?: (result: any) => void\n ) {\n if (Array.isArray(lifecycleInstanceOrList)) {\n for (const cycle of lifecycleInstanceOrList) {\n if (typeof cycle.instance[lifecycle] === 'function') {\n debug(`[core]: run ${cycle.instance.constructor.name} ${lifecycle}`);\n const result = await cycle.instance[lifecycle](\n this.applicationContext,\n this.frameworkService.getMainApp()\n );\n if (resultHandler) {\n resultHandler(result);\n }\n }\n }\n } else {\n if (typeof lifecycleInstanceOrList[lifecycle] === 'function') {\n debug(\n `[core]: run ${lifecycleInstanceOrList.constructor.name} ${lifecycle}`\n );\n const result = await lifecycleInstanceOrList[lifecycle](\n this.applicationContext,\n this.frameworkService.getMainApp()\n );\n if (resultHandler) {\n resultHandler(result);\n }\n }\n }\n }\n\n private async runObjectLifeCycle(lifecycleInstanceList, lifecycle) {\n for (const cycle of lifecycleInstanceList) {\n if (typeof cycle.instance[lifecycle] === 'function') {\n debug(`[core]: run ${cycle.instance.constructor.name} ${lifecycle}`);\n return this.applicationContext[lifecycle](\n cycle.instance[lifecycle].bind(cycle.instance)\n );\n }\n }\n }\n}\n"]}
@@ -7,7 +7,7 @@ export declare class MidwayLoggerService extends ServiceFactory<ILogger> {
7
7
  configService: MidwayConfigService;
8
8
  constructor(applicationContext: IMidwayContainer);
9
9
  protected init(): Promise<void>;
10
- transformEggConfig(): {
10
+ protected transformEggConfig(): {
11
11
  midwayLogger: {
12
12
  default: {};
13
13
  clients: {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loggerService.js","sourceRoot":"","sources":["../../src/service/loggerService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Provide, Scope, ScopeEnum, Inject, Init } from '@midwayjs/decorator';\nimport { MidwayConfigService } from './configService';\nimport { ServiceFactory } from '../common/serviceFactory';\nimport { ILogger, loggers } from '@midwayjs/logger';\nimport { IMidwayContainer } from '../interface';\n\nconst levelTransform = level => {\n if (!level) {\n return undefined;\n }\n switch (level) {\n case 'NONE':\n case Infinity: // egg logger 的 none 是这个等级\n return null;\n case 0:\n case 'DEBUG':\n case 'debug':\n return 'debug';\n case 1:\n case 'INFO':\n case 'info':\n return 'info';\n case 2:\n case 'WARN':\n case 'warn':\n return 'warn';\n case 3:\n case 'ERROR':\n case 'error':\n return 'error';\n default:\n return 'silly';\n }\n};\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayLoggerService extends ServiceFactory<ILogger> {\n @Inject()\n public configService: MidwayConfigService;\n\n constructor(readonly applicationContext: IMidwayContainer) {\n super();\n }\n\n @Init()\n protected async init() {\n const eggLoggerConfig = this.transformEggConfig();\n if (eggLoggerConfig) {\n this.configService.addObject(eggLoggerConfig);\n }\n\n await this.initClients(this.configService.getConfiguration('midwayLogger'));\n // alias inject logger\n this.applicationContext?.registerObject(\n 'logger',\n this.getLogger('appLogger')\n );\n }\n\n protected transformEggConfig() {\n if (this.configService.getConfiguration('customLogger')) {\n // use egg module\n return this.transformEggLogger(this.configService.getConfiguration());\n } else {\n // it will be use other logger\n return;\n }\n }\n\n protected async createClient(config, name?: string) {\n loggers.createLogger(name, config);\n }\n\n getName() {\n return 'logger';\n }\n\n public createLogger(name, config) {\n return loggers.createLogger(name, config);\n }\n\n public getLogger(name: string) {\n return loggers.getLogger(name);\n }\n\n transformEggLogger(options) {\n const transformLoggerConfig = {\n midwayLogger: {\n default: {},\n clients: {},\n },\n };\n\n if (options.midwayLogger && !options.midwayLogger.default) {\n transformLoggerConfig.midwayLogger.default = {\n dir: options.logger.dir,\n level: levelTransform(options.logger.level),\n consoleLevel: levelTransform(options.logger.consoleLevel),\n };\n }\n\n const eggCustomLogger = options['customLogger'];\n\n for (const name in eggCustomLogger) {\n transformLoggerConfig.midwayLogger.clients[name] = {\n fileLogName: eggCustomLogger[name]?.file,\n level: levelTransform(eggCustomLogger[name]?.level),\n consoleLevel: levelTransform(eggCustomLogger[name]?.consoleLevel),\n };\n cleanUndefinedProperty(transformLoggerConfig.midwayLogger.clients[name]);\n }\n return transformLoggerConfig;\n }\n}\n\nfunction cleanUndefinedProperty(obj) {\n Object.keys(obj).forEach(key => {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n });\n}\n"]}
@@ -1,11 +1,10 @@
1
- import { CommonMiddleware, IMidwayContainer } from '../interface';
1
+ import { CommonMiddleware, IMidwayContainer, IMidwayApplication } from '../interface';
2
2
  export declare class MidwayMiddlewareService<T, R, N = unknown> {
3
3
  readonly applicationContext: IMidwayContainer;
4
4
  constructor(applicationContext: IMidwayContainer);
5
- compose(middleware: Array<CommonMiddleware<T, R, N> | string>, name?: string): Promise<{
6
- (context: any, next?: any): Promise<any>;
5
+ compose(middleware: Array<CommonMiddleware<T, R, N> | string>, app: IMidwayApplication, name?: string): Promise<{
6
+ (context: T, next?: any): Promise<any>;
7
7
  _name: string;
8
8
  }>;
9
- getMiddlewareName(mw: any): any;
10
9
  }
11
10
  //# sourceMappingURL=middlewareService.d.ts.map
@@ -17,20 +17,20 @@ let MidwayMiddlewareService = class MidwayMiddlewareService {
17
17
  constructor(applicationContext) {
18
18
  this.applicationContext = applicationContext;
19
19
  }
20
- async compose(middleware, name) {
20
+ async compose(middleware, app, name) {
21
21
  if (!Array.isArray(middleware)) {
22
22
  throw new error_1.MidwayParameterError('Middleware stack must be an array');
23
23
  }
24
24
  const newMiddlewareArr = [];
25
25
  for (let fn of middleware) {
26
- if ((0, decorator_1.isClass)(fn) || typeof fn === 'string') {
26
+ if (decorator_1.Types.isClass(fn) || typeof fn === 'string') {
27
27
  if (typeof fn === 'string' &&
28
28
  !this.applicationContext.hasDefinition(fn)) {
29
29
  throw new error_1.MidwayCommonError('Middleware definition not found in midway container');
30
30
  }
31
31
  const classMiddleware = await this.applicationContext.getAsync(fn);
32
32
  if (classMiddleware) {
33
- fn = classMiddleware.resolve();
33
+ fn = await classMiddleware.resolve(app);
34
34
  if (!classMiddleware.match && !classMiddleware.ignore) {
35
35
  if (!fn.name) {
36
36
  fn._name = classMiddleware.constructor.name;
@@ -88,11 +88,11 @@ let MidwayMiddlewareService = class MidwayMiddlewareService {
88
88
  index,
89
89
  })).then(result => {
90
90
  // need to set body
91
- if (context.body && !result) {
92
- result = context.body;
91
+ if (context['body'] && !result) {
92
+ result = context['body'];
93
93
  }
94
- else if (result && context.body !== result) {
95
- context.body = result;
94
+ else if (result && context['body'] !== result) {
95
+ context['body'] = result;
96
96
  }
97
97
  return result;
98
98
  });
@@ -113,10 +113,6 @@ let MidwayMiddlewareService = class MidwayMiddlewareService {
113
113
  }
114
114
  return composeFn;
115
115
  }
116
- getMiddlewareName(mw) {
117
- var _a;
118
- return (_a = mw.name) !== null && _a !== void 0 ? _a : mw._name;
119
- }
120
116
  };
121
117
  MidwayMiddlewareService = __decorate([
122
118
  (0, decorator_1.Provide)(),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareService.js","sourceRoot":"","sources":["../../src/service/middlewareService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Provide, Scope, ScopeEnum, Types } from '@midwayjs/decorator';\nimport {\n CommonMiddleware,\n IMiddleware,\n IMidwayContainer,\n FunctionMiddleware,\n IMidwayApplication,\n} from '../interface';\nimport { MidwayCommonError, MidwayParameterError } from '../error';\nimport { isIncludeProperty, pathMatching } from '../util';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayMiddlewareService<T, R, N = unknown> {\n constructor(readonly applicationContext: IMidwayContainer) {}\n\n async compose(\n middleware: Array<CommonMiddleware<T, R, N> | string>,\n app: IMidwayApplication,\n name?: string\n ) {\n if (!Array.isArray(middleware)) {\n throw new MidwayParameterError('Middleware stack must be an array');\n }\n\n const newMiddlewareArr = [];\n\n for (let fn of middleware) {\n if (Types.isClass(fn) || typeof fn === 'string') {\n if (\n typeof fn === 'string' &&\n !this.applicationContext.hasDefinition(fn)\n ) {\n throw new MidwayCommonError(\n 'Middleware definition not found in midway container'\n );\n }\n const classMiddleware = await this.applicationContext.getAsync<\n IMiddleware<T, R, N>\n >(fn as any);\n if (classMiddleware) {\n fn = await classMiddleware.resolve(app);\n if (!classMiddleware.match && !classMiddleware.ignore) {\n if (!fn.name) {\n (fn as any)._name = classMiddleware.constructor.name;\n }\n // just got fn\n newMiddlewareArr.push(fn);\n } else {\n // wrap ignore and match\n const mw = fn;\n const match = pathMatching({\n match: classMiddleware.match,\n ignore: classMiddleware.ignore,\n });\n (fn as any) = (ctx, next, options) => {\n if (!match(ctx)) return next();\n return mw(ctx, next, options);\n };\n (fn as any)._name = classMiddleware.constructor.name;\n newMiddlewareArr.push(fn);\n }\n } else {\n throw new MidwayCommonError('Middleware must have resolve method!');\n }\n } else {\n newMiddlewareArr.push(fn);\n }\n }\n\n /**\n * @param {Object} context\n * @param next\n * @return {Promise}\n * @api public\n */\n const composeFn = (context: T, next?) => {\n const supportBody = isIncludeProperty(context, 'body');\n // last called middleware #\n let index = -1;\n return dispatch(0);\n\n function dispatch(i) {\n if (i <= index)\n return Promise.reject(\n new MidwayCommonError('next() called multiple times')\n );\n index = i;\n let fn = (newMiddlewareArr as Array<FunctionMiddleware<T, R, N>>)[i];\n if (i === newMiddlewareArr.length) fn = next;\n if (!fn) return Promise.resolve();\n try {\n if (supportBody) {\n return Promise.resolve(\n fn(context, dispatch.bind(null, i + 1), {\n index,\n } as any)\n ).then(result => {\n // need to set body\n if (context['body'] && !result) {\n result = context['body'];\n } else if (result && context['body'] !== result) {\n context['body'] = result;\n }\n return result;\n });\n } else {\n return Promise.resolve(\n fn(context, dispatch.bind(null, i + 1), {\n index,\n } as any)\n );\n }\n } catch (err) {\n return Promise.reject(err);\n }\n }\n };\n if (name) {\n composeFn._name = name;\n }\n return composeFn;\n }\n}\n"]}