@midwayjs/core 3.0.2 → 3.0.4-beta.1

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 (50) hide show
  1. package/dist/context/container.js +1 -0
  2. package/dist/interface.d.ts +1 -1
  3. package/dist/service/lifeCycleService.js +4 -4
  4. package/dist/setup.js +1 -0
  5. package/package.json +4 -5
  6. package/dist/baseFramework.js.map +0 -1
  7. package/dist/common/applicationManager.js.map +0 -1
  8. package/dist/common/constants.js.map +0 -1
  9. package/dist/common/dataListener.js.map +0 -1
  10. package/dist/common/fileDetector.js.map +0 -1
  11. package/dist/common/filterManager.js.map +0 -1
  12. package/dist/common/middlewareManager.js.map +0 -1
  13. package/dist/common/serviceFactory.js.map +0 -1
  14. package/dist/common/triggerCollector.js.map +0 -1
  15. package/dist/common/webGenerator.js.map +0 -1
  16. package/dist/common/webRouterCollector.js.map +0 -1
  17. package/dist/config/config.default.js.map +0 -1
  18. package/dist/context/container.js.map +0 -1
  19. package/dist/context/definitionRegistry.js.map +0 -1
  20. package/dist/context/managedResolverFactory.js.map +0 -1
  21. package/dist/context/providerWrapper.js.map +0 -1
  22. package/dist/context/requestContainer.js.map +0 -1
  23. package/dist/definitions/functionDefinition.js.map +0 -1
  24. package/dist/definitions/objectCreator.js.map +0 -1
  25. package/dist/definitions/objectDefinition.js.map +0 -1
  26. package/dist/definitions/properties.js.map +0 -1
  27. package/dist/error/base.js.map +0 -1
  28. package/dist/error/framework.js.map +0 -1
  29. package/dist/error/http.js.map +0 -1
  30. package/dist/error/index.js.map +0 -1
  31. package/dist/functional/configuration.js.map +0 -1
  32. package/dist/index.js.map +0 -1
  33. package/dist/interface.js.map +0 -1
  34. package/dist/service/aspectService.js.map +0 -1
  35. package/dist/service/configService.js.map +0 -1
  36. package/dist/service/decoratorService.js.map +0 -1
  37. package/dist/service/environmentService.js.map +0 -1
  38. package/dist/service/frameworkService.js.map +0 -1
  39. package/dist/service/informationService.js.map +0 -1
  40. package/dist/service/lifeCycleService.js.map +0 -1
  41. package/dist/service/loggerService.js.map +0 -1
  42. package/dist/service/middlewareService.js.map +0 -1
  43. package/dist/service/pipelineService.js.map +0 -1
  44. package/dist/setup.js.map +0 -1
  45. package/dist/util/contextUtil.js.map +0 -1
  46. package/dist/util/extend.js.map +0 -1
  47. package/dist/util/index.js.map +0 -1
  48. package/dist/util/pathFileUtil.js.map +0 -1
  49. package/dist/util/pathToRegexp.js.map +0 -1
  50. package/dist/util/webRouterParam.js.map +0 -1
@@ -228,6 +228,7 @@ class MidwayContainer {
228
228
  configuration.load(module);
229
229
  for (const ns of configuration.getNamespaceList()) {
230
230
  this.namespaceSet.add(ns);
231
+ debug(`[core]: load configuration in namespace="${ns} complete"`);
231
232
  }
232
233
  }
233
234
  }
@@ -203,7 +203,7 @@ export declare type ParameterHandlerFunction = (options: {
203
203
  originArgs: Array<any>;
204
204
  originParamType: any;
205
205
  parameterIndex: number;
206
- }) => IMethodAspect;
206
+ }) => any;
207
207
  export interface IIdentifierRelationShip {
208
208
  saveClassRelation(module: any, namespace?: string): any;
209
209
  saveFunctionRelation(ObjectIdentifier: any, uuid: any): any;
@@ -32,7 +32,7 @@ let MidwayLifeCycleService = class MidwayLifeCycleService {
32
32
  }
33
33
  else {
34
34
  // 普通类写法
35
- debug(`[core]: run ${cycle.target.name} init`);
35
+ debug(`[core]: Lifecycle 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]: run ${cycle.instance.constructor.name} ${lifecycle}`);
83
+ debug(`[core]: Lifecycle 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]: run ${lifecycleInstanceOrList.constructor.name} ${lifecycle}`);
93
+ debug(`[core]: Lifecycle 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]: run ${cycle.instance.constructor.name} ${lifecycle}`);
104
+ debug(`[core]: Lifecycle run ${cycle.instance.constructor.name} ${lifecycle}`);
105
105
  return this.applicationContext[lifecycle](cycle.instance[lifecycle].bind(cycle.instance));
106
106
  }
107
107
  }
package/dist/setup.js CHANGED
@@ -11,6 +11,7 @@ const debug = util.debuglog('midway:debug');
11
11
  async function initializeGlobalApplicationContext(globalOptions) {
12
12
  var _a, _b, _c, _d;
13
13
  debug('[core]: start "initializeGlobalApplicationContext"');
14
+ debug(`[core]: bootstrap options = ${util.inspect(globalOptions)}`);
14
15
  const appDir = (_a = globalOptions.appDir) !== null && _a !== void 0 ? _a : '';
15
16
  const baseDir = (_b = globalOptions.baseDir) !== null && _b !== void 0 ? _b : '';
16
17
  // new container
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midwayjs/core",
3
- "version": "3.0.2",
3
+ "version": "3.0.4-beta.1",
4
4
  "description": "midway core",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index.d.ts",
@@ -17,12 +17,11 @@
17
17
  ],
18
18
  "files": [
19
19
  "dist/**/*.js",
20
- "dist/**/*.d.ts",
21
- "dist/**/*.js.map"
20
+ "dist/**/*.d.ts"
22
21
  ],
23
22
  "license": "MIT",
24
23
  "devDependencies": {
25
- "@midwayjs/decorator": "^3.0.2",
24
+ "@midwayjs/decorator": "^3.0.4-beta.1",
26
25
  "koa": "2.13.4",
27
26
  "midway-test-component": "*",
28
27
  "mm": "3.2.0",
@@ -45,5 +44,5 @@
45
44
  "engines": {
46
45
  "node": ">=12"
47
46
  },
48
- "gitHead": "ca77247d229978a736e79bb208579c014ed226fc"
47
+ "gitHead": "52bc37e7a570806c121b33a0e8ac1cd084445f5d"
49
48
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseFramework.js","sourceRoot":"","sources":["../src/baseFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CommonMiddlewareUnion,\n IConfigurationOptions,\n IMidwayApplication,\n IMidwayBootstrapOptions,\n IMidwayContainer,\n IMidwayContext,\n IMidwayFramework,\n MidwayProcessTypeEnum,\n CommonFilterUnion,\n CommonMiddleware,\n MiddlewareRespond,\n} from './interface';\nimport { Inject, Destroy, Init, FrameworkType } from '@midwayjs/decorator';\nimport { ILogger, LoggerOptions, MidwayContextLogger } from '@midwayjs/logger';\nimport { MidwayRequestContainer } from './context/requestContainer';\nimport { MidwayEnvironmentService } from './service/environmentService';\nimport { MidwayConfigService } from './service/configService';\nimport { MidwayInformationService } from './service/informationService';\nimport { MidwayLoggerService } from './service/loggerService';\nimport { ContextMiddlewareManager } from './common/middlewareManager';\nimport { MidwayMiddlewareService } from './service/middlewareService';\nimport { FilterManager } from './common/filterManager';\nimport * as util from 'util';\nconst debug = util.debuglog('midway:debug');\n\nexport abstract class BaseFramework<\n APP extends IMidwayApplication<CTX>,\n CTX extends IMidwayContext,\n OPT extends IConfigurationOptions,\n ResOrNext = unknown,\n Next = unknown\n> implements IMidwayFramework<APP, CTX, OPT, ResOrNext, Next>\n{\n public app: APP;\n public configurationOptions: OPT;\n protected logger: ILogger;\n protected appLogger: ILogger;\n protected defaultContext = {};\n protected BaseContextLoggerClass: any;\n protected ContextLoggerApplyLogger: string;\n protected middlewareManager = this.createMiddlewareManager();\n protected filterManager = this.createFilterManager();\n protected composeMiddleware = null;\n\n @Inject()\n loggerService: MidwayLoggerService;\n\n @Inject()\n environmentService: MidwayEnvironmentService;\n\n @Inject()\n configService: MidwayConfigService;\n\n @Inject()\n informationService: MidwayInformationService;\n\n @Inject()\n middlewareService: MidwayMiddlewareService<CTX, ResOrNext, Next>;\n\n constructor(readonly applicationContext: IMidwayContainer) {}\n\n @Init()\n async init() {\n this.configurationOptions = this.configure() ?? ({} as OPT);\n this.BaseContextLoggerClass =\n this.configurationOptions.ContextLoggerClass ??\n this.getDefaultContextLoggerClass();\n this.ContextLoggerApplyLogger =\n this.configurationOptions.ContextLoggerApplyLogger ?? 'appLogger';\n this.logger = this.loggerService.getLogger('coreLogger');\n this.appLogger = this.loggerService.getLogger('appLogger');\n return this;\n }\n\n abstract configure(options?: OPT);\n\n isEnable(): boolean {\n return true;\n }\n\n public async initialize(options?: IMidwayBootstrapOptions): Promise<void> {\n await this.beforeContainerInitialize(options);\n await this.containerInitialize(options);\n await this.afterContainerInitialize(options);\n await this.containerDirectoryLoad(options);\n await this.afterContainerDirectoryLoad(options);\n\n /**\n * Third party application initialization\n */\n await this.applicationInitialize(options);\n await this.containerReady(options);\n await this.afterContainerReady(options);\n }\n\n /**\n * @deprecated\n */\n protected async containerInitialize(options: IMidwayBootstrapOptions) {}\n /**\n * @deprecated\n */\n protected async containerDirectoryLoad(options: IMidwayBootstrapOptions) {}\n /**\n * @deprecated\n */\n protected async containerReady(options: IMidwayBootstrapOptions) {\n if (!this.app.getApplicationContext) {\n this.defineApplicationProperties();\n }\n }\n\n public getApplicationContext(): IMidwayContainer {\n return this.applicationContext;\n }\n\n public getConfiguration(key?: string): any {\n return this.configService.getConfiguration(key);\n }\n\n public getCurrentEnvironment() {\n return this.environmentService.getCurrentEnvironment();\n }\n\n public getApplication(): APP {\n return this.app;\n }\n\n public abstract applicationInitialize(options: IMidwayBootstrapOptions);\n\n public abstract getFrameworkType(): FrameworkType;\n\n public abstract run(): Promise<void>;\n\n public setContextLoggerClass(BaseContextLogger: any) {\n this.BaseContextLoggerClass = BaseContextLogger;\n }\n\n protected createContextLogger(ctx: CTX, name?: string): ILogger {\n const appLogger = this.getLogger(name ?? this.ContextLoggerApplyLogger);\n return new this.BaseContextLoggerClass(ctx, appLogger);\n }\n\n @Destroy()\n public async stop(): Promise<void> {\n await this.beforeStop();\n }\n\n public getAppDir(): string {\n return this.informationService.getAppDir();\n }\n\n public getBaseDir(): string {\n return this.informationService.getBaseDir();\n }\n\n protected defineApplicationProperties(\n applicationProperties = {},\n whiteList: string[] = []\n ) {\n const defaultApplicationProperties = {\n getBaseDir: () => {\n return this.getBaseDir();\n },\n\n getAppDir: () => {\n return this.getAppDir();\n },\n\n getEnv: () => {\n return this.getCurrentEnvironment();\n },\n\n getApplicationContext: () => {\n return this.getApplicationContext();\n },\n\n getConfig: (key?: string) => {\n return this.getConfiguration(key);\n },\n\n getFrameworkType: () => {\n return this.getFrameworkType();\n },\n\n getProcessType: () => {\n return MidwayProcessTypeEnum.APPLICATION;\n },\n\n getCoreLogger: () => {\n return this.getCoreLogger();\n },\n\n getLogger: (name?: string) => {\n return this.getLogger(name);\n },\n\n createLogger: (name: string, options: LoggerOptions = {}) => {\n return this.createLogger(name, options);\n },\n\n getProjectName: () => {\n return this.getProjectName();\n },\n\n createAnonymousContext: (extendCtx?: CTX) => {\n const ctx = extendCtx || Object.create(this.defaultContext);\n if (!ctx.startTime) {\n ctx.startTime = Date.now();\n }\n if (!ctx.logger) {\n ctx.logger = this.createContextLogger(ctx);\n }\n if (!ctx.requestContext) {\n ctx.requestContext = new MidwayRequestContainer(\n ctx,\n this.getApplicationContext()\n );\n ctx.requestContext.ready();\n }\n if (!ctx.getLogger) {\n ctx.getLogger = name => {\n return this.createContextLogger(ctx, name);\n };\n }\n ctx.setAttr = (key: string, value: any) => {\n ctx.requestContext.setAttr(key, value);\n };\n ctx.getAttr = <T>(key: string): T => {\n return ctx.requestContext.getAttr(key);\n };\n return ctx;\n },\n\n setContextLoggerClass: (BaseContextLogger: any) => {\n return this.setContextLoggerClass(BaseContextLogger);\n },\n\n addConfigObject: (obj: any) => {\n this.configService.addObject(obj);\n },\n\n setAttr: (key: string, value: any) => {\n this.getApplicationContext().setAttr(key, value);\n },\n\n getAttr: <T>(key: string): T => {\n return this.getApplicationContext().getAttr(key);\n },\n useMiddleware: (\n middleware: CommonMiddlewareUnion<CTX, ResOrNext, Next>\n ) => {\n return this.useMiddleware(middleware);\n },\n getMiddleware: (): ContextMiddlewareManager<CTX, ResOrNext, Next> => {\n return this.getMiddleware();\n },\n useFilter: (Filter: CommonFilterUnion<CTX, ResOrNext, Next>) => {\n return this.useFilter(Filter);\n },\n };\n for (const method of whiteList) {\n delete defaultApplicationProperties[method];\n }\n Object.assign(\n this.app,\n defaultApplicationProperties,\n applicationProperties\n );\n }\n\n protected async beforeStop(): Promise<void> {}\n /**\n * @deprecated\n */\n protected async beforeContainerInitialize(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n /**\n * @deprecated\n */\n protected async afterContainerInitialize(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n /**\n * @deprecated\n */\n protected async afterContainerDirectoryLoad(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n /**\n * @deprecated\n */\n protected async afterContainerReady(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {}\n\n public async applyMiddleware<R, N>(\n lastMiddleware?: CommonMiddleware<CTX, R, N>\n ): Promise<MiddlewareRespond<CTX, R, N>> {\n if (!this.composeMiddleware) {\n this.middlewareManager.insertFirst((async (ctx: any, next: any) => {\n let returnResult = undefined;\n try {\n const result = await next();\n returnResult = await this.filterManager.runResultFilter(result, ctx);\n } catch (err) {\n returnResult = await this.filterManager.runErrorFilter(err, ctx);\n }\n if (returnResult.error) {\n throw returnResult.error;\n }\n return returnResult.result;\n }) as any);\n debug(\n `[core]: Compose middleware = [${this.middlewareManager.getNames()}]`\n );\n this.composeMiddleware = await this.middlewareService.compose(\n this.middlewareManager,\n this.app\n );\n await this.filterManager.init(this.applicationContext);\n }\n if (lastMiddleware) {\n return await this.middlewareService.compose(\n [this.composeMiddleware, lastMiddleware],\n this.app\n );\n } else {\n return this.composeMiddleware;\n }\n }\n\n public getLogger(name?: string) {\n return this.loggerService.getLogger(name) ?? this.appLogger;\n }\n\n public getCoreLogger() {\n return this.logger;\n }\n\n public createLogger(name: string, option: LoggerOptions = {}) {\n return this.loggerService.createLogger(name, option);\n }\n\n public getProjectName() {\n return this.informationService.getProjectName();\n }\n\n public getFrameworkName() {\n return this.getFrameworkType().name;\n }\n\n public getDefaultContextLoggerClass(): any {\n return MidwayContextLogger;\n }\n\n public useMiddleware(\n Middleware: CommonMiddlewareUnion<CTX, ResOrNext, Next>\n ) {\n this.middlewareManager.insertLast(Middleware);\n }\n\n public getMiddleware(): ContextMiddlewareManager<CTX, ResOrNext, Next> {\n return this.middlewareManager;\n }\n\n public useFilter(Filter: CommonFilterUnion<CTX, ResOrNext, Next>) {\n return this.filterManager.useFilter(Filter);\n }\n\n protected createMiddlewareManager() {\n return new ContextMiddlewareManager<CTX, ResOrNext, Next>();\n }\n\n protected createFilterManager() {\n return new FilterManager<CTX, ResOrNext, Next>();\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"applicationManager.js","sourceRoot":"","sources":["../../src/common/applicationManager.ts"],"names":[],"mappings":";;;;;;;;;AACA,mDAA+E;AAI/E,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAArC;QACU,uBAAkB,GAAG,IAAI,GAAG,EAGjC,CAAC;QAEI,2BAAsB,GAAG,IAAI,OAAO,EAGzC,CAAC;IAsDN,CAAC;IApDQ,YAAY,CAAC,SAAS,EAAE,SAA0C;QACvE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAEM,YAAY,CAAC,wBAAgD;QAClE,IAAI,OAAO,wBAAwB,KAAK,QAAQ,EAAE;YAChD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;aAC9D;SACF;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBAC7D,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;aAClE;SACF;IACH,CAAC;IAEM,cAAc,CACnB,wBAAgD;QAEhD,IAAI,OAAO,wBAAwB,KAAK,QAAQ,EAAE;YAChD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC,kBAAkB;qBAC3B,GAAG,CAAC,wBAAwB,CAAC;qBAC7B,cAAc,EAAE,CAAC;aACrB;SACF;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;gBAC7D,OAAO,IAAI,CAAC,sBAAsB;qBAC/B,GAAG,CAAC,wBAAwB,CAAC;qBAC7B,cAAc,EAAE,CAAC;aACrB;SACF;IACH,CAAC;IAEM,eAAe,CACpB,UAA0C;QAE1C,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAClE,OAAO,SAAS,CAAC,cAAc,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,UAAU;iBACd,GAAG,CAAC,SAAS,CAAC,EAAE;gBACf,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC,CAAC;iBACD,MAAM,CAAC,GAAG,CAAC,EAAE;gBACZ,OAAO,CAAC,CAAC,GAAG,CAAC;YACf,CAAC,CAAC,CAAC;SACN;IACH,CAAC;CACF,CAAA;AA/DY,wBAAwB;IAFpC,IAAA,mBAAO,GAAE;IACT,IAAA,iBAAK,EAAC,qBAAS,CAAC,SAAS,CAAC;GACd,wBAAwB,CA+DpC;AA/DY,4DAAwB","sourcesContent":["import { IMidwayApplication, IMidwayFramework } from '../interface';\nimport { FrameworkType, Provide, Scope, ScopeEnum } from '@midwayjs/decorator';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayApplicationManager {\n private globalFrameworkMap = new Map<\n string,\n IMidwayFramework<any, any, any>\n >();\n\n private globalFrameworkTypeMap = new WeakMap<\n FrameworkType,\n IMidwayFramework<any, any, any>\n >();\n\n public addFramework(namespace, framework: IMidwayFramework<any, any, any>) {\n this.globalFrameworkMap.set(namespace, framework);\n this.globalFrameworkTypeMap.set(framework.getFrameworkType(), framework);\n }\n\n public getFramework(namespaceOrFrameworkType: string | FrameworkType) {\n if (typeof namespaceOrFrameworkType === 'string') {\n if (this.globalFrameworkMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkMap.get(namespaceOrFrameworkType);\n }\n } else {\n if (this.globalFrameworkTypeMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkTypeMap.get(namespaceOrFrameworkType);\n }\n }\n }\n\n public getApplication(\n namespaceOrFrameworkType: string | FrameworkType\n ): IMidwayApplication {\n if (typeof namespaceOrFrameworkType === 'string') {\n if (this.globalFrameworkMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkMap\n .get(namespaceOrFrameworkType)\n .getApplication();\n }\n } else {\n if (this.globalFrameworkTypeMap.has(namespaceOrFrameworkType)) {\n return this.globalFrameworkTypeMap\n .get(namespaceOrFrameworkType)\n .getApplication();\n }\n }\n }\n\n public getApplications(\n namespaces?: Array<string | FrameworkType>\n ): IMidwayApplication[] {\n if (!namespaces) {\n return Array.from(this.globalFrameworkMap.values()).map(framework => {\n return framework.getApplication();\n });\n } else {\n return namespaces\n .map(namespace => {\n return this.getApplication(namespace);\n })\n .filter(app => {\n return !!app;\n });\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,4BAA4B,CAAC;AAChE;;;GAGG;AAEU,QAAA,IAAI,GAAG;IAClB,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,OAAO;IACtB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,KAAK;IAClB,sBAAsB,EAAE,iBAAiB;IACzC,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;IACpB,qBAAqB,EAAE,eAAe;IAEtC,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,OAAO;IACxB,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,OAAO;IACxB,cAAc,EAAE,MAAM;IACtB,kBAAkB,EAAE,UAAU;IAC9B,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,OAAO;IAExB,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,oBAAoB,EAAE,YAAY;IAClC,iBAAiB,EAAE,SAAS;CAC7B,CAAC;AAEW,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC","sourcesContent":["export const FUNCTION_INJECT_KEY = 'midway:function_inject_key';\n/**\n * 静态参数\n *\n */\n\nexport const KEYS = {\n OBJECTS_ELEMENT: 'objects',\n OBJECT_ELEMENT: 'object',\n IMPORT_ELEMENT: 'import',\n PROPERTY_ELEMENT: 'property',\n LIST_ELEMENT: 'list',\n MAP_ELEMENT: 'map',\n ENTRY_ELEMENT: 'entry',\n VALUE_ELEMENT: 'value',\n PROPS_ELEMENT: 'props',\n PROP_ELEMENT: 'prop',\n SET_ELEMENT: 'set',\n CONSTRUCTORARG_ELEMENT: 'constructor-arg',\n REF_ELEMENT: 'ref',\n JSON_ELEMENT: 'json',\n CONFIGURATION_ELEMENT: 'configuration',\n\n ID_ATTRIBUTE: 'id',\n PATH_ATTRIBUTE: 'path',\n DIRECT_ATTRIBUTE: 'direct',\n AUTOWIRE_ATTRIBUTE: 'autowire',\n ASYNC_ATTRIBUTE: 'async',\n NAME_ATTRIBUTE: 'name',\n REF_ATTRIBUTE: 'ref',\n KEY_ATTRIBUTE: 'key',\n VALUE_ATTRIBUTE: 'value',\n TYPE_ATTRIBUTE: 'type',\n EXTERNAL_ATTRIBUTE: 'external',\n OBJECT_ATTRIBUTE: 'object',\n RESOURCE_ATTRIBUTE: 'resource',\n SCOPE_ATTRIBUTE: 'scope',\n\n ASPECT_ELEMENT: 'aspect',\n AROUND_ELEMENT: 'around',\n EXPRESSION_ATTRIBUTE: 'expression',\n EXECUTE_ATTRIBUTE: 'execute',\n};\n\nexport const VALUE_TYPE = {\n STRING: 'string',\n DATE: 'date',\n NUMBER: 'number',\n INTEGER: 'int',\n TEMPLATE: 'template',\n MANAGED: 'managed',\n OBJECT: 'object', // 仅仅在解析时使用\n BOOLEAN: 'boolean',\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dataListener.js","sourceRoot":"","sources":["../../src/common/dataListener.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAoD;AAEpD,MAAsB,YAAY;IAItB,KAAK,CAAC,IAAI;QAClB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAKS,OAAO,CAAC,IAAO;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAGM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,eAAe,KAAI,CAAC;CACrC;AAtBC;IADC,IAAA,gBAAI,GAAE;;;;wCAIN;AAcD;IADC,IAAA,mBAAO,GAAE;;;;wCAGT;AAvBH,oCA0BC","sourcesContent":["import { Destroy, Init } from '@midwayjs/decorator';\n\nexport abstract class DataListener<T> {\n private innerData: T;\n\n @Init()\n protected async init() {\n this.innerData = await this.initData();\n await this.onData(this.setData.bind(this));\n }\n\n abstract initData(): T;\n abstract onData(callback: (data: T) => void);\n\n protected setData(data: T): void {\n this.innerData = data;\n }\n\n public getData(): T {\n return this.innerData;\n }\n\n @Destroy()\n public async stop() {\n await this.destroyListener();\n }\n\n protected async destroyListener() {}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileDetector.js","sourceRoot":"","sources":["../../src/common/fileDetector.ts"],"names":[],"mappings":"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","sourcesContent":["import { IFileDetector, IMidwayContainer } from '../interface';\nimport { Types, ResolveFilter } from '@midwayjs/decorator';\nimport { run } from '@midwayjs/glob';\n\nexport abstract class AbstractFileDetector<T> implements IFileDetector {\n options: T;\n constructor(options) {\n this.options = options;\n }\n\n abstract run(container: IMidwayContainer);\n}\n\nconst DEFAULT_PATTERN = ['**/**.ts', '**/**.tsx', '**/**.js'];\nconst DEFAULT_IGNORE_PATTERN = [\n '**/**.d.ts',\n '**/logs/**',\n '**/run/**',\n '**/public/**',\n '**/app/view/**',\n '**/app/views/**',\n '**/app/extend/**',\n '**/node_modules/**',\n '**/**.test.ts',\n '**/**.test.js',\n '**/__test__/**',\n];\n\nexport class DirectoryFileDetector extends AbstractFileDetector<{\n loadDir: string | string[];\n pattern: string | string[];\n ignore: string | string[];\n namespace: string;\n}> {\n private directoryFilterArray: ResolveFilter[] = [];\n\n run(container) {\n const loadDirs = [].concat(this.options.loadDir || []);\n\n for (const dir of loadDirs) {\n const fileResults = run(\n DEFAULT_PATTERN.concat(this.options.pattern || []),\n {\n cwd: dir,\n ignore: DEFAULT_IGNORE_PATTERN.concat(this.options.ignore || []),\n }\n );\n\n for (const file of fileResults) {\n if (this.directoryFilterArray.length) {\n for (const resolveFilter of this.directoryFilterArray) {\n if (typeof resolveFilter.pattern === 'string') {\n if (file.includes(resolveFilter.pattern)) {\n const exports = resolveFilter.ignoreRequire\n ? undefined\n : require(file);\n resolveFilter.filter(exports, file, this);\n continue;\n }\n } else if (Types.isRegExp(resolveFilter.pattern)) {\n if ((resolveFilter.pattern as RegExp).test(file)) {\n const exports = resolveFilter.ignoreRequire\n ? undefined\n : require(file);\n resolveFilter.filter(exports, file, this);\n continue;\n }\n }\n\n const exports = require(file);\n // add module to set\n container.bindClass(exports, {\n namespace: this.options.namespace,\n srcPath: file,\n createFrom: 'file',\n });\n }\n } else {\n const exports = require(file);\n // add module to set\n container.bindClass(exports, {\n namespace: this.options.namespace,\n srcPath: file,\n createFrom: 'file',\n });\n }\n }\n }\n }\n}\n\nexport class CustomModuleDetector extends AbstractFileDetector<{\n modules: any[];\n namespace: string;\n}> {\n run(container) {\n for (const module of this.options.modules) {\n container.bindClass(module, {\n namespace: this.options.namespace,\n createFrom: 'module',\n });\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filterManager.js","sourceRoot":"","sources":["../../src/common/filterManager.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CATCH_KEY,\n getClassMetadata,\n MATCH_KEY,\n MatchPattern,\n} from '@midwayjs/decorator';\nimport {\n CommonFilterUnion,\n IFilter,\n IMidwayContainer,\n IMidwayContext,\n} from '../interface';\nimport { toPathMatch } from '../util';\n\nexport class FilterManager<\n CTX extends IMidwayContext = IMidwayContext,\n R = any,\n N = any\n> {\n private errFilterList: Array<new (...args) => IFilter<CTX, R, N>> = [];\n private successFilterList: Array<new (...args) => IFilter<CTX, R, N>> = [];\n private exceptionMap: WeakMap<Error, IFilter<CTX, R, N>> = new WeakMap();\n private defaultErrFilter = undefined;\n private matchFnList = [];\n\n public useFilter(Filters: CommonFilterUnion<CTX, R, N>) {\n if (!Array.isArray(Filters)) {\n Filters = [Filters];\n }\n for (const Filter of Filters) {\n if (getClassMetadata(CATCH_KEY, Filter)) {\n this.errFilterList.push(Filter);\n }\n if (getClassMetadata(MATCH_KEY, Filter)) {\n this.successFilterList.push(Filter);\n }\n }\n }\n\n public async init(applicationContext: IMidwayContainer) {\n // for catch exception\n for (const FilterClass of this.errFilterList) {\n const filter = await applicationContext.getAsync(FilterClass);\n const exceptionMetadata = getClassMetadata(CATCH_KEY, FilterClass);\n if (exceptionMetadata && exceptionMetadata.catchTargets) {\n for (const Exception of exceptionMetadata.catchTargets) {\n this.exceptionMap.set(Exception, filter);\n }\n } else {\n // default filter\n this.defaultErrFilter = filter;\n }\n }\n\n // for success return\n for (const FilterClass of this.successFilterList) {\n const filter = await applicationContext.getAsync(FilterClass);\n const matchMetadata: {\n matchPattern?: MatchPattern<CTX>;\n } = getClassMetadata(MATCH_KEY, FilterClass);\n if (matchMetadata && matchMetadata.matchPattern) {\n this.matchFnList.push({\n matchFn: toPathMatch(matchMetadata.matchPattern),\n target: filter,\n });\n }\n }\n }\n\n public async runErrorFilter(\n err: Error,\n ctx: CTX,\n res?: R,\n next?: N\n ): Promise<{\n result: any;\n error: any;\n }> {\n let result, error;\n if (this.exceptionMap.has((err as any).constructor)) {\n const filter = this.exceptionMap.get((err as any).constructor);\n result = await filter.catch(err, ctx, res, next);\n } else if (this.defaultErrFilter) {\n result = await this.defaultErrFilter.catch(err, ctx, res, next);\n } else {\n error = err;\n }\n return {\n result,\n error,\n };\n }\n\n public async runResultFilter(\n result: any,\n ctx: CTX,\n res?: R,\n next?: N\n ): Promise<{\n result: any;\n error: any;\n }> {\n let returnValue = result;\n\n for (const matchData of this.matchFnList) {\n if (matchData.matchFn(ctx, res)) {\n returnValue = await matchData.target.match(returnValue, ctx, res, next);\n }\n }\n\n return {\n result: returnValue,\n error: undefined,\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"middlewareManager.js","sourceRoot":"","sources":["../../src/common/middlewareManager.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CommonMiddleware,\n CommonMiddlewareUnion,\n IMidwayContext,\n} from '../interface';\n\nexport class ContextMiddlewareManager<\n CTX extends IMidwayContext,\n R,\n N\n> extends Array<CommonMiddleware<CTX, R, N>> {\n /**\n * insert a middleware or middleware array to first\n * @param middleware\n */\n public insertFirst(middleware: CommonMiddlewareUnion<CTX, R, N>) {\n if (Array.isArray(middleware)) {\n this.unshift(...middleware);\n } else {\n this.unshift(middleware);\n }\n }\n\n /**\n * insert a middleware or middleware array to last\n * @param middleware\n */\n public insertLast(middleware: CommonMiddlewareUnion<CTX, R, N>) {\n if (Array.isArray(middleware)) {\n this.push(...middleware);\n } else {\n this.push(middleware);\n }\n }\n\n /**\n * insert a middleware or middleware array to after another middleware\n * @param middleware\n * @param idxOrBeforeMiddleware\n */\n public insertBefore(\n middleware: CommonMiddlewareUnion<CTX, R, N>,\n idxOrBeforeMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n if (typeof idxOrBeforeMiddleware !== 'number') {\n idxOrBeforeMiddleware = this.findItemIndex(idxOrBeforeMiddleware);\n }\n if (Array.isArray(middleware)) {\n this.splice(idxOrBeforeMiddleware, 0, ...middleware);\n } else {\n this.splice(idxOrBeforeMiddleware, 0, middleware);\n }\n }\n\n /**\n * insert a middleware or middleware array to after another middleware\n * @param middleware\n * @param idxOrAfterMiddleware\n */\n public insertAfter(\n middleware: CommonMiddlewareUnion<CTX, R, N>,\n idxOrAfterMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n if (typeof idxOrAfterMiddleware !== 'number') {\n idxOrAfterMiddleware = this.findItemIndex(idxOrAfterMiddleware);\n }\n if (Array.isArray(middleware)) {\n this.splice(idxOrAfterMiddleware + 1, 0, ...middleware);\n } else {\n this.splice(idxOrAfterMiddleware + 1, 0, middleware);\n }\n }\n\n /**\n * move a middleware after another middleware\n * @param middlewareOrName\n * @param afterMiddleware\n */\n public findAndInsertAfter(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string,\n afterMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n middlewareOrName = this.findItem(middlewareOrName);\n afterMiddleware = this.findItem(afterMiddleware);\n if (\n !middlewareOrName ||\n !afterMiddleware ||\n middlewareOrName === afterMiddleware\n ) {\n return;\n }\n if (afterMiddleware) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertAfter(mw, afterMiddleware);\n }\n }\n }\n\n /**\n * move a middleware before another middleware\n * @param middlewareOrName\n * @param beforeMiddleware\n */\n public findAndInsertBefore(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string,\n beforeMiddleware: CommonMiddleware<CTX, R, N> | string | number\n ) {\n middlewareOrName = this.findItem(middlewareOrName);\n beforeMiddleware = this.findItem(beforeMiddleware);\n if (\n !middlewareOrName ||\n !beforeMiddleware ||\n middlewareOrName === beforeMiddleware\n ) {\n return;\n }\n if (beforeMiddleware) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertBefore(mw, beforeMiddleware);\n }\n }\n }\n\n /**\n * find middleware and move to first\n * @param middlewareOrName\n */\n public findAndInsertFirst(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string\n ) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertFirst(mw);\n }\n }\n\n /**\n * find middleware and move to last\n * @param middlewareOrName\n */\n public findAndInsertLast(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string\n ) {\n const mw = this.remove(middlewareOrName);\n if (mw) {\n this.insertLast(mw);\n }\n }\n\n /**\n * find a middleware and return index\n * @param middlewareOrName\n */\n public findItemIndex(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string | number\n ): number {\n if (typeof middlewareOrName === 'number') {\n return middlewareOrName;\n } else if (typeof middlewareOrName === 'string') {\n return this.findIndex(\n item => this.getMiddlewareName(item) === middlewareOrName\n );\n } else {\n return this.findIndex(item => item === middlewareOrName);\n }\n }\n\n public findItem(\n middlewareOrName: CommonMiddleware<CTX, R, N> | string | number\n ): CommonMiddleware<CTX, R, N> {\n if (typeof middlewareOrName === 'number') {\n if (middlewareOrName >= 0 && middlewareOrName <= this.length - 1) {\n return this[middlewareOrName as number];\n }\n } else if (typeof middlewareOrName === 'string') {\n return this.find(\n item => this.getMiddlewareName(item) === middlewareOrName\n );\n } else {\n return middlewareOrName;\n }\n }\n\n /**\n * get name from middleware\n * @param middleware\n */\n public getMiddlewareName(middleware: CommonMiddleware<CTX, R, N>): string {\n return (\n ((middleware as any).getName && (middleware as any).getName()) ??\n (middleware as any)._name ??\n middleware.name\n );\n }\n\n /**\n * remove a middleware\n * @param middlewareOrNameOrIdx\n */\n public remove(\n middlewareOrNameOrIdx: CommonMiddleware<CTX, R, N> | string | number\n ): CommonMiddleware<CTX, R, N> {\n if (\n typeof middlewareOrNameOrIdx === 'number' &&\n middlewareOrNameOrIdx !== -1\n ) {\n return this.splice(middlewareOrNameOrIdx, 1)[0];\n } else {\n const idx = this.findItemIndex(\n middlewareOrNameOrIdx as CommonMiddleware<CTX, R, N> | string\n );\n if (idx !== -1) {\n return this.splice(idx, 1)[0];\n }\n }\n }\n\n /**\n * get middleware name list\n */\n public getNames(): string[] {\n return this.map(item => {\n return this.getMiddlewareName(item);\n });\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serviceFactory.js","sourceRoot":"","sources":["../../src/common/serviceFactory.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC;;GAEG;AACH,MAAsB,cAAc;IAApC;QACY,YAAO,GAAmB,IAAI,GAAG,EAAE,CAAC;QACpC,YAAO,GAAG,EAAE,CAAC;IAgDzB,CAAC;IA9CW,KAAK,CAAC,WAAW,CAAC,UAAe,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,CACJ,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EACpC,UAAU,IAAI,CAAC,OAAO,EAAE,sDAAsD,CAC/E,CAAC;QAEF,qEAAqE;QACrE,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACrD,OAAO;SACR;QAED,8CAA8C;QAC9C,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;aACpD;SACF;IACH,CAAC;IAEM,GAAG,CAAQ,EAAE,GAAG,SAAS;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAiB,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,UAAW;QAC7C,0DAA0D;QAC1D,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE;YACV,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;aACtC;YACD,OAAO,MAAM,CAAC;SACf;IACH,CAAC;IAIS,KAAK,CAAC,aAAa,CAAC,MAAS,IAAkB,CAAC;IAEnD,KAAK,CAAC,IAAI;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YACzC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACjC;IACH,CAAC;CACF;AAlDD,wCAkDC","sourcesContent":["import * as assert from 'assert';\n\n/**\n * 多客户端工厂实现\n */\nexport abstract class ServiceFactory<T> {\n protected clients: Map<string, T> = new Map();\n protected options = {};\n\n protected async initClients(options: any = {}): Promise<void> {\n this.options = options;\n assert(\n !(options.client && options.clients),\n `midway:${this.getName()} can not set options.client and options.clients both`\n );\n\n // alias app[name] as client, but still support createInstance method\n if (options.client) {\n await this.createInstance(options.client, 'default');\n return;\n }\n\n // multi client, use app[name].getInstance(id)\n if (options.clients) {\n for (const id of Object.keys(options.clients)) {\n await this.createInstance(options.clients[id], id);\n }\n }\n }\n\n public get<U = T>(id = 'default'): U {\n return this.clients.get(id) as unknown as U;\n }\n\n public async createInstance(config, clientName?): Promise<T | void> {\n // options.default will be merge in to options.clients[id]\n config = Object.assign({}, this.options['default'], config);\n const client = await this.createClient(config, clientName);\n if (client) {\n if (clientName) {\n this.clients.set(clientName, client);\n }\n return client;\n }\n }\n\n public abstract getName(): string;\n protected abstract createClient(config, clientName): Promise<T | void>;\n protected async destroyClient(client: T): Promise<void> {}\n\n public async stop(): Promise<void> {\n for (const value of this.clients.values()) {\n await this.destroyClient(value);\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"triggerCollector.js","sourceRoot":"","sources":["../../src/common/triggerCollector.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAE1D,MAAa,0BAA2B,SAAQ,uCAAkB;IACtD,KAAK,CAAC,OAAO;QACrB,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAC1C,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,8CAA8C;QAC9C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YAC7C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;gBAC7B,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;oBAChC,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG;wBACpC,KAAK;wBACL,MAAM;wBACN,KAAK;wBACL,QAAQ;wBACR,MAAM;wBACN,OAAO;wBACP,SAAS;qBACV,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAES,YAAY,CAAC,MAAM;QAC3B,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAES,oBAAoB,CAAC,MAAM;QACnC,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;CACF;AAjCD,gEAiCC","sourcesContent":["import { WebRouterCollector } from './webRouterCollector';\n\nexport class ServerlessTriggerCollector extends WebRouterCollector {\n protected async analyze() {\n this.options.includeFunctionRouter = true;\n await super.analyze();\n // requestMethod all transform to other method\n for (const routerInfo of this.routes.values()) {\n for (const info of routerInfo) {\n if (info.requestMethod === 'all') {\n info.functionTriggerMetadata.method = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'head',\n 'patch',\n 'options',\n ];\n }\n }\n }\n }\n\n protected collectRoute(module) {\n super.collectRoute(module, true);\n }\n\n protected collectFunctionRoute(module) {\n super.collectFunctionRoute(module, true);\n }\n\n async getFunctionList(): Promise<any[]> {\n return this.getFlattenRouterTable();\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webGenerator.js","sourceRoot":"","sources":["../../src/common/webGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * wrap controller string to middleware function\n * @param controllerMapping like FooController.index\n * @param routeArgsInfo\n * @param routerResponseData\n */\nimport {\n MidwayFrameworkType,\n WEB_RESPONSE_CONTENT_TYPE,\n WEB_RESPONSE_HEADER,\n WEB_RESPONSE_HTTP_CODE,\n WEB_RESPONSE_REDIRECT,\n} from '@midwayjs/decorator';\nimport {\n WebRouterCollector,\n RouterInfo,\n MidwayMiddlewareService,\n IMidwayApplication,\n} from '../index';\nimport * as util from 'util';\n\nconst debug = util.debuglog('midway:debug');\n\nexport abstract class WebControllerGenerator<\n Router extends { use: (...args) => void }\n> {\n protected constructor(readonly app: IMidwayApplication) {}\n\n /**\n * wrap controller string to middleware function\n * @param routeInfo\n */\n public generateKoaController(routeInfo: RouterInfo) {\n return async (ctx, next) => {\n const args = [ctx, next];\n const controller = await ctx.requestContext.getAsync(routeInfo.id);\n // eslint-disable-next-line prefer-spread\n const result = await controller[routeInfo.method].apply(controller, args);\n if (result !== undefined) {\n ctx.body = result;\n }\n\n if (ctx.body === undefined && !(ctx.response as any)._explicitStatus) {\n ctx.body = undefined;\n }\n\n // implement response decorator\n if (\n Array.isArray(routeInfo.responseMetadata) &&\n routeInfo.responseMetadata.length\n ) {\n for (const routerRes of routeInfo.responseMetadata) {\n switch (routerRes.type) {\n case WEB_RESPONSE_HTTP_CODE:\n ctx.status = routerRes.code;\n break;\n case WEB_RESPONSE_HEADER:\n for (const key in routerRes?.setHeaders || {}) {\n ctx.set(key, routerRes.setHeaders[key]);\n }\n break;\n case WEB_RESPONSE_CONTENT_TYPE:\n ctx.type = routerRes.contentType;\n break;\n case WEB_RESPONSE_REDIRECT:\n ctx.status = routerRes.code;\n ctx.redirect(routerRes.url);\n return;\n }\n }\n }\n };\n }\n\n public async loadMidwayController(\n globalPrefix: string,\n routerHandler?: (newRouter: Router) => void\n ): Promise<void> {\n const collector = new WebRouterCollector('', {\n globalPrefix,\n });\n const routerTable = await collector.getRouterTable();\n const routerList = await collector.getRoutePriorityList();\n const applicationContext = this.app.getApplicationContext();\n const logger = this.app.getCoreLogger();\n const middlewareService = applicationContext.get(MidwayMiddlewareService);\n\n for (const routerInfo of routerList) {\n // bind controller first\n applicationContext.bindClass(routerInfo.routerModule);\n\n logger.debug(\n `Load Controller \"${routerInfo.controllerId}\", prefix=${routerInfo.prefix}`\n );\n\n debug(\n `[core]: Load Controller \"${routerInfo.controllerId}\", prefix=${routerInfo.prefix}`\n );\n\n // new router\n const newRouter: Router = this.createRouter({\n prefix: routerInfo.prefix,\n ...routerInfo.routerOptions,\n });\n\n // add router middleware\n routerInfo.middleware = routerInfo.middleware ?? [];\n if (routerInfo.middleware.length) {\n const routerMiddlewareFn = await middlewareService.compose(\n routerInfo.middleware,\n this.app\n );\n newRouter.use(routerMiddlewareFn);\n }\n\n // add route\n const routes = routerTable.get(routerInfo.prefix);\n for (const routeInfo of routes) {\n // get middleware\n const methodMiddlewares = [];\n\n routeInfo.middleware = routeInfo.middleware ?? [];\n if (routeInfo.middleware.length) {\n const routeMiddlewareFn = await middlewareService.compose(\n routeInfo.middleware,\n this.app\n );\n methodMiddlewares.push(routeMiddlewareFn);\n }\n\n if (this.app.getFrameworkType() === MidwayFrameworkType.WEB_KOA) {\n if (typeof routeInfo.url === 'string' && /\\*$/.test(routeInfo.url)) {\n routeInfo.url = routeInfo.url.replace('*', '(.*)');\n }\n }\n\n const routerArgs = [\n routeInfo.routerName,\n routeInfo.url,\n ...methodMiddlewares,\n this.generateController(routeInfo),\n ];\n\n logger.debug(\n `Load Router \"${routeInfo.requestMethod.toUpperCase()} ${\n routeInfo.url\n }\"`\n );\n\n debug(\n `[core]: Load Router \"${routeInfo.requestMethod.toUpperCase()} ${\n routeInfo.url\n }\"`\n );\n\n // apply controller from request context\n // eslint-disable-next-line prefer-spread\n newRouter[routeInfo.requestMethod].apply(newRouter, routerArgs);\n }\n\n routerHandler && routerHandler(newRouter);\n }\n }\n\n abstract createRouter(routerOptions): Router;\n abstract generateController(routeInfo: RouterInfo);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webRouterCollector.js","sourceRoot":"","sources":["../../src/common/webRouterCollector.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CONTROLLER_KEY,\n ControllerOption,\n FaaSMetadata,\n FUNC_KEY,\n getClassMetadata,\n getPropertyDataFromClass,\n getPropertyMetadata,\n getProviderName,\n getProviderUUId,\n Types,\n listModule,\n RouterOption,\n ServerlessTriggerType,\n SERVERLESS_FUNC_KEY,\n WEB_RESPONSE_KEY,\n WEB_ROUTER_KEY,\n WEB_ROUTER_PARAM_KEY,\n} from '@midwayjs/decorator';\nimport { joinURLPath } from '../util';\nimport { MidwayContainer } from '../context/container';\nimport { DirectoryFileDetector } from './fileDetector';\nimport * as util from 'util';\nimport { MidwayCommonError, MidwayDuplicateRouteError } from '../error';\n\nconst debug = util.debuglog('midway:debug');\n\nexport interface RouterInfo {\n /**\n * uuid\n */\n id: string;\n /**\n * router prefix from controller\n */\n prefix: string;\n /**\n * router alias name\n */\n routerName: string;\n /**\n * router path, without prefix\n */\n url: string | RegExp;\n /**\n * request method for http, like get/post/delete\n */\n requestMethod: string;\n /**\n * invoke function method\n */\n method: string;\n /**\n * router description\n */\n description: string;\n summary: string;\n /**\n * router handler function key,for IoC container load\n */\n handlerName: string;\n /**\n * serverless func load key\n */\n funcHandlerName: string;\n /**\n * controller provideId\n */\n controllerId: string;\n /**\n * router middleware\n */\n middleware: any[];\n /**\n * controller middleware in this router\n */\n controllerMiddleware: any[];\n /**\n * request args metadata\n */\n requestMetadata: any[];\n /**\n * response data metadata\n */\n responseMetadata: any[];\n /**\n * serverless function name\n */\n functionName?: string;\n /**\n * serverless trigger name\n */\n functionTriggerName?: string;\n /**\n * serverless function trigger metadata\n */\n functionTriggerMetadata?: any;\n /**\n * serverless function metadata\n */\n functionMetadata?: any;\n}\n\nexport interface RouterPriority {\n prefix: string;\n priority: number;\n middleware: any[];\n routerOptions: any;\n controllerId: string;\n /**\n * 路由控制器或者函数 module 本身\n */\n routerModule: any;\n}\n\nexport interface RouterCollectorOptions {\n includeFunctionRouter?: boolean;\n globalPrefix?: string;\n}\n\nexport class WebRouterCollector {\n protected readonly baseDir: string;\n private isReady = false;\n protected routes = new Map<string, RouterInfo[]>();\n private routesPriority: RouterPriority[] = [];\n protected options: RouterCollectorOptions;\n\n constructor(baseDir = '', options: RouterCollectorOptions = {}) {\n this.baseDir = baseDir;\n this.options = options;\n }\n\n protected async analyze() {\n if (this.baseDir) {\n const container = new MidwayContainer();\n container.setFileDetector(\n new DirectoryFileDetector({\n loadDir: this.baseDir,\n })\n );\n await container.ready();\n }\n const controllerModules = listModule(CONTROLLER_KEY);\n\n for (const module of controllerModules) {\n this.collectRoute(module);\n }\n\n if (this.options.includeFunctionRouter) {\n const fnModules = listModule(FUNC_KEY);\n for (const module of fnModules) {\n this.collectFunctionRoute(module);\n }\n }\n\n // filter empty prefix\n this.routesPriority = this.routesPriority.filter(item => {\n const prefixList = this.routes.get(item.prefix);\n if (prefixList.length > 0) {\n return true;\n } else {\n this.routes.delete(item.prefix);\n return false;\n }\n });\n\n // sort router\n for (const prefix of this.routes.keys()) {\n const routerInfo = this.routes.get(prefix);\n this.routes.set(prefix, this.sortRouter(routerInfo));\n }\n\n // sort prefix\n this.routesPriority = this.routesPriority.sort((routeA, routeB) => {\n return routeB.prefix.length - routeA.prefix.length;\n });\n }\n\n protected collectRoute(module, functionMeta = false) {\n const controllerId = getProviderName(module);\n debug(`[core]: Found Controller ${controllerId}.`);\n const id = getProviderUUId(module);\n const controllerOption: ControllerOption = getClassMetadata(\n CONTROLLER_KEY,\n module\n );\n\n let priority;\n // implement middleware in controller\n const middleware = controllerOption.routerOptions.middleware;\n const controllerIgnoreGlobalPrefix =\n !!controllerOption.routerOptions?.ignoreGlobalPrefix;\n\n let prefix = joinURLPath(\n this.options.globalPrefix,\n controllerOption.prefix || '/'\n );\n const ignorePrefix = controllerOption.prefix || '/';\n // if controller set ignore global prefix, all router will be ignore too.\n if (controllerIgnoreGlobalPrefix) {\n prefix = ignorePrefix;\n }\n\n if (/\\*/.test(prefix)) {\n throw new MidwayCommonError(\n `Router prefix ${prefix} can't set string with *`\n );\n }\n\n // set prefix\n if (!this.routes.has(prefix)) {\n this.routes.set(prefix, []);\n this.routesPriority.push({\n prefix,\n priority: prefix === '/' && priority === undefined ? -999 : 0,\n middleware,\n routerOptions: controllerOption.routerOptions,\n controllerId,\n routerModule: module,\n });\n }\n\n // set ignorePrefix\n if (!this.routes.has(ignorePrefix)) {\n this.routes.set(ignorePrefix, []);\n this.routesPriority.push({\n prefix: ignorePrefix,\n priority: ignorePrefix === '/' && priority === undefined ? -999 : 0,\n middleware,\n routerOptions: controllerOption.routerOptions,\n controllerId,\n routerModule: module,\n });\n }\n\n const webRouterInfo: RouterOption[] = getClassMetadata(\n WEB_ROUTER_KEY,\n module\n );\n\n if (webRouterInfo && typeof webRouterInfo[Symbol.iterator] === 'function') {\n for (const webRouter of webRouterInfo) {\n const routeArgsInfo =\n getPropertyDataFromClass(\n WEB_ROUTER_PARAM_KEY,\n module,\n webRouter.method\n ) || [];\n\n const routerResponseData =\n getPropertyMetadata(WEB_RESPONSE_KEY, module, webRouter.method) || [];\n\n const data: RouterInfo = {\n id,\n prefix: webRouter.ignoreGlobalPrefix ? ignorePrefix : prefix,\n routerName: webRouter.routerName || '',\n url: webRouter.path,\n requestMethod: webRouter.requestMethod,\n method: webRouter.method,\n description: webRouter.description || '',\n summary: webRouter.summary || '',\n handlerName: `${controllerId}.${webRouter.method}`,\n funcHandlerName: `${controllerId}.${webRouter.method}`,\n controllerId,\n middleware: webRouter.middleware || [],\n controllerMiddleware: middleware || [],\n requestMetadata: routeArgsInfo,\n responseMetadata: routerResponseData,\n };\n\n if (functionMeta) {\n // get function information\n data.functionName = controllerId + '-' + webRouter.method;\n data.functionTriggerName = ServerlessTriggerType.HTTP;\n data.functionTriggerMetadata = {\n path: joinURLPath(prefix, webRouter.path.toString()),\n method: webRouter.requestMethod,\n } as FaaSMetadata.HTTPTriggerOptions;\n data.functionMetadata = {\n functionName: data.functionName,\n };\n }\n\n this.checkDuplicateAndPush(data.prefix, data);\n }\n }\n }\n\n protected collectFunctionRoute(module, functionMeta = false) {\n // serverlessTrigger metadata\n const webRouterInfo: Array<FaaSMetadata.TriggerMetadata> = getClassMetadata(\n FUNC_KEY,\n module\n );\n\n const controllerId = getProviderName(module);\n const id = getProviderUUId(module);\n\n const prefix = '/';\n\n if (!this.routes.has(prefix)) {\n this.routes.set(prefix, []);\n this.routesPriority.push({\n prefix,\n priority: -999,\n middleware: [],\n routerOptions: {},\n controllerId,\n routerModule: module,\n });\n }\n\n for (const webRouter of webRouterInfo) {\n // 新的 @ServerlessTrigger 写法\n if (webRouter['metadata']?.['path']) {\n const routeArgsInfo =\n getPropertyDataFromClass(\n WEB_ROUTER_PARAM_KEY,\n module,\n webRouter['methodName']\n ) || [];\n\n const routerResponseData =\n getPropertyMetadata(\n WEB_RESPONSE_KEY,\n module,\n webRouter['methodName']\n ) || [];\n // 新 http/api gateway 函数\n const data: RouterInfo = {\n id,\n prefix,\n routerName: '',\n url: webRouter['metadata']['path'],\n requestMethod: webRouter['metadata']?.['method'] ?? 'get',\n method: webRouter['methodName'],\n description: '',\n summary: '',\n handlerName: `${controllerId}.${webRouter['methodName']}`,\n funcHandlerName: `${controllerId}.${webRouter['methodName']}`,\n controllerId,\n middleware: webRouter['metadata']?.['middleware'] || [],\n controllerMiddleware: [],\n requestMetadata: routeArgsInfo,\n responseMetadata: routerResponseData,\n };\n if (functionMeta) {\n const functionMeta =\n getPropertyMetadata(\n SERVERLESS_FUNC_KEY,\n module,\n webRouter['methodName']\n ) || {};\n const functionName =\n functionMeta['functionName'] ??\n webRouter['functionName'] ??\n createFunctionName(module, webRouter['methodName']);\n data.functionName = functionName;\n data.functionTriggerName = webRouter['type'];\n data.functionTriggerMetadata = webRouter['metadata'];\n data.functionMetadata = {\n functionName,\n ...functionMeta,\n };\n }\n this.checkDuplicateAndPush(prefix, data);\n } else {\n if (functionMeta) {\n const functionMeta =\n getPropertyMetadata(\n SERVERLESS_FUNC_KEY,\n module,\n webRouter['methodName']\n ) || {};\n const functionName =\n functionMeta['functionName'] ??\n webRouter['functionName'] ??\n createFunctionName(module, webRouter['methodName']);\n // 其他类型的函数\n this.checkDuplicateAndPush(prefix, {\n id,\n prefix,\n routerName: '',\n url: '',\n requestMethod: '',\n method: webRouter['methodName'],\n description: '',\n summary: '',\n handlerName: `${controllerId}.${webRouter['methodName']}`,\n funcHandlerName: `${controllerId}.${webRouter['methodName']}`,\n controllerId,\n middleware: webRouter['metadata']?.['middleware'] || [],\n controllerMiddleware: [],\n requestMetadata: [],\n responseMetadata: [],\n functionName,\n functionTriggerName: webRouter['type'],\n functionTriggerMetadata: webRouter['metadata'],\n functionMetadata: {\n functionName,\n ...functionMeta,\n },\n });\n }\n }\n }\n }\n\n public sortRouter(urlMatchList: RouterInfo[]) {\n // 1. 绝对路径规则优先级最高如 /ab/cb/e\n // 2. 星号只能出现最后且必须在/后面,如 /ab/cb/**\n // 3. 如果绝对路径和通配都能匹配一个路径时,绝对规则优先级高\n // 4. 有多个通配能匹配一个路径时,最长的规则匹配,如 /ab/** 和 /ab/cd/** 在匹配 /ab/cd/f 时命中 /ab/cd/**\n // 5. 如果 / 与 /* 都能匹配 / ,但 / 的优先级高于 /*\n return urlMatchList\n .map(item => {\n const urlString = item.url.toString();\n const weightArr = Types.isRegExp(item.url)\n ? urlString.split('\\\\/')\n : urlString.split('/');\n let weight = 0;\n // 权重,比如通配的不加权,非通配加权,防止通配出现在最前面\n for (const fragment of weightArr) {\n if (\n fragment === '' ||\n fragment.includes(':') ||\n fragment.includes('*')\n ) {\n weight += 0;\n } else {\n weight += 1;\n }\n }\n\n let category = 2;\n const paramString = urlString.includes(':')\n ? urlString.replace(/:.+$/, '')\n : '';\n if (paramString) {\n category = 1;\n }\n if (urlString.includes('*')) {\n category = 0;\n }\n return {\n ...item,\n _pureRouter: urlString.replace(/\\**$/, '').replace(/:\\w+/, '123'),\n _level: urlString.split('/').length - 1,\n _paramString: paramString,\n _category: category,\n _weight: weight,\n };\n })\n .sort((handlerA, handlerB) => {\n // 不同一层级的对比\n if (handlerA._category !== handlerB._category) {\n return handlerB._category - handlerA._category;\n }\n\n // 不同权重\n if (handlerA._weight !== handlerB._weight) {\n return handlerB._weight - handlerA._weight;\n }\n\n // 不同长度\n if (handlerA._level === handlerB._level) {\n if (handlerB._pureRouter === handlerA._pureRouter) {\n return (\n handlerA.url.toString().length - handlerB.url.toString().length\n );\n }\n return handlerB._pureRouter.length - handlerA._pureRouter.length;\n }\n return handlerB._level - handlerA._level;\n });\n }\n\n async getRoutePriorityList(): Promise<RouterPriority[]> {\n if (!this.isReady) {\n await this.analyze();\n this.isReady = true;\n }\n return this.routesPriority;\n }\n\n async getRouterTable(): Promise<Map<string, RouterInfo[]>> {\n if (!this.isReady) {\n await this.analyze();\n this.isReady = true;\n }\n return this.routes;\n }\n\n async getFlattenRouterTable(): Promise<RouterInfo[]> {\n if (!this.isReady) {\n await this.analyze();\n this.isReady = true;\n }\n let routeArr = [];\n for (const routerPriority of this.routesPriority) {\n routeArr = routeArr.concat(this.routes.get(routerPriority.prefix));\n }\n return routeArr;\n }\n\n private checkDuplicateAndPush(prefix, routerInfo: RouterInfo) {\n const prefixList = this.routes.get(prefix);\n const matched = prefixList.filter(item => {\n return (\n routerInfo.url &&\n routerInfo.requestMethod &&\n item.url === routerInfo.url &&\n item.requestMethod === routerInfo.requestMethod\n );\n });\n if (matched && matched.length) {\n throw new MidwayDuplicateRouteError(\n `${routerInfo.requestMethod} ${routerInfo.url}`,\n `${matched[0].handlerName}`,\n `${routerInfo.handlerName}`\n );\n }\n prefixList.push(routerInfo);\n }\n}\n\nfunction createFunctionName(target, functionName) {\n return getProviderName(target).replace(/[:#]/g, '-') + '-' + functionName;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.default.js","sourceRoot":"","sources":["../../src/config/config.default.ts"],"names":[],"mappings":";;AAAA,4CAIsB;AACtB,mCAA2E;AAC3E,+BAA4B;AAG5B,kBAAe,CACb,OAAsB,EAGtB,EAAE;;IACF,MAAM,aAAa,GAAG,IAAA,+BAAwB,EAAC,IAAA,4BAAqB,GAAE,CAAC,CAAC;IACxE,OAAO;QACL,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,GAAG,EAAE,IAAA,WAAI,EACP,MAAA,OAAO,CAAC,GAAG,CAAC,uCAA2B,CAAC,mCAAI,OAAO,CAAC,IAAI,EACxD,MAAM,EACN,OAAO,CAAC,IAAI,CACb;gBACD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBACtC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC9C;YACD,OAAO,EAAE;gBACP,UAAU,EAAE;oBACV,WAAW,EAAE,iBAAiB;iBAC/B;gBACD,SAAS,EAAE;oBACT,WAAW,EAAE,gBAAgB;oBAC7B,SAAS,EAAE,QAAQ;iBACpB;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n MIDWAY_LOGGER_WRITEABLE_DIR,\n MidwayAppInfo,\n ServiceFactoryConfigOption,\n} from '../interface';\nimport { getCurrentEnvironment, isDevelopmentEnvironment } from '../util/';\nimport { join } from 'path';\nimport type { LoggerOptions } from '@midwayjs/logger';\n\nexport default (\n appInfo: MidwayAppInfo\n): {\n midwayLogger?: ServiceFactoryConfigOption<LoggerOptions>;\n} => {\n const isDevelopment = isDevelopmentEnvironment(getCurrentEnvironment());\n return {\n midwayLogger: {\n default: {\n dir: join(\n process.env[MIDWAY_LOGGER_WRITEABLE_DIR] ?? appInfo.root,\n 'logs',\n appInfo.name\n ),\n level: isDevelopment ? 'info' : 'warn',\n consoleLevel: isDevelopment ? 'info' : 'warn',\n },\n clients: {\n coreLogger: {\n fileLogName: 'midway-core.log',\n },\n appLogger: {\n fileLogName: 'midway-app.log',\n aliasName: 'logger',\n },\n },\n },\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/context/container.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CONFIGURATION_KEY,\n getClassMetadata,\n IComponentInfo,\n InjectionConfigurationOptions,\n Types,\n listModule,\n MAIN_MODULE_KEY,\n ObjectIdentifier,\n saveModule,\n saveProviderId,\n ScopeEnum,\n getProviderUUId,\n getPropertyInject,\n getObjectDefinition,\n getClassExtendedMetadata,\n INJECT_CUSTOM_PROPERTY,\n getProviderName,\n IModuleStore,\n Utils,\n} from '@midwayjs/decorator';\nimport { FunctionalConfiguration } from '../functional/configuration';\nimport * as util from 'util';\nimport { ObjectDefinitionRegistry } from './definitionRegistry';\nimport {\n IFileDetector,\n IIdentifierRelationShip,\n IMidwayContainer,\n IObjectDefinition,\n IObjectDefinitionRegistry,\n ObjectContext,\n ObjectLifeCycleEvent,\n REQUEST_CTX_KEY,\n} from '../interface';\nimport { FUNCTION_INJECT_KEY } from '../common/constants';\nimport { ObjectDefinition } from '../definitions/objectDefinition';\nimport { FunctionDefinition } from '../definitions/functionDefinition';\nimport {\n ManagedReference,\n ManagedResolverFactory,\n} from './managedResolverFactory';\nimport { MidwayEnvironmentService } from '../service/environmentService';\nimport { MidwayConfigService } from '../service/configService';\nimport * as EventEmitter from 'events';\nimport { MidwayDefinitionNotFoundError } from '../error';\n\nconst debug = util.debuglog('midway:debug');\nconst debugBind = util.debuglog('midway:bind');\n\nclass ContainerConfiguration {\n private loadedMap = new WeakMap();\n private namespaceList = [];\n constructor(readonly container: IMidwayContainer) {}\n\n load(module) {\n let namespace = MAIN_MODULE_KEY;\n // 可能导出多个\n const configurationExports = this.getConfigurationExport(module);\n if (!configurationExports.length) return;\n // 多个的情况,数据交给第一个保存\n for (let i = 0; i < configurationExports.length; i++) {\n const configurationExport = configurationExports[i];\n\n if (this.loadedMap.get(configurationExport)) {\n // 已经加载过就跳过循环\n continue;\n }\n\n let configurationOptions: InjectionConfigurationOptions;\n if (configurationExport instanceof FunctionalConfiguration) {\n // 函数式写法\n configurationOptions = configurationExport.getConfigurationOptions();\n } else {\n // 普通类写法\n configurationOptions = getClassMetadata(\n CONFIGURATION_KEY,\n configurationExport\n );\n }\n\n // 已加载标记,防止死循环\n this.loadedMap.set(configurationExport, true);\n\n if (configurationOptions) {\n if (configurationOptions.namespace !== undefined) {\n namespace = configurationOptions.namespace;\n this.namespaceList.push(namespace);\n }\n debug(`[core]: load configuration in namespace=\"${namespace}\"`);\n this.addImports(configurationOptions.imports);\n this.addImportObjects(configurationOptions.importObjects);\n this.addImportConfigs(configurationOptions.importConfigs);\n this.bindConfigurationClass(configurationExport, namespace);\n }\n }\n\n // bind module\n this.container.bindClass(module, {\n namespace,\n });\n }\n\n addImportConfigs(\n importConfigs:\n | Array<{ [environmentName: string]: Record<string, any> }>\n | Record<string, any>\n ) {\n if (importConfigs) {\n if (Array.isArray(importConfigs)) {\n this.container.get(MidwayConfigService).add(importConfigs);\n } else {\n this.container.get(MidwayConfigService).addObject(importConfigs);\n }\n }\n }\n\n addImports(imports: any[] = []) {\n // 处理 imports\n for (let importPackage of imports) {\n if (!importPackage) continue;\n if (typeof importPackage === 'string') {\n importPackage = require(importPackage);\n }\n if ('Configuration' in importPackage) {\n // component is object\n this.load(importPackage);\n } else if ('component' in importPackage) {\n if ((importPackage as IComponentInfo)?.enabledEnvironment) {\n if (\n (importPackage as IComponentInfo)?.enabledEnvironment?.includes(\n this.container\n .get(MidwayEnvironmentService)\n .getCurrentEnvironment()\n )\n ) {\n this.load((importPackage as IComponentInfo).component);\n }\n } else {\n this.load((importPackage as IComponentInfo).component);\n }\n } else {\n this.load(importPackage);\n }\n }\n }\n\n /**\n * 注册 importObjects\n * @param objs configuration 中的 importObjects\n */\n addImportObjects(objs: any) {\n if (objs) {\n const keys = Object.keys(objs);\n for (const key of keys) {\n if (typeof objs[key] !== undefined) {\n this.container.registerObject(key, objs[key]);\n }\n }\n }\n }\n\n bindConfigurationClass(clzz, namespace) {\n if (clzz instanceof FunctionalConfiguration) {\n // 函数式写法不需要绑定到容器\n } else {\n // 普通类写法\n saveProviderId(undefined, clzz);\n const id = getProviderUUId(clzz);\n this.container.bind(id, clzz, {\n namespace: namespace,\n scope: ScopeEnum.Singleton,\n });\n }\n\n // configuration 手动绑定去重\n const configurationMods = listModule(CONFIGURATION_KEY);\n const exists = configurationMods.find(mod => {\n return mod.target === clzz;\n });\n if (!exists) {\n saveModule(CONFIGURATION_KEY, {\n target: clzz,\n namespace: namespace,\n });\n }\n }\n\n private getConfigurationExport(exports): any[] {\n const mods = [];\n if (\n Types.isClass(exports) ||\n Types.isFunction(exports) ||\n exports instanceof FunctionalConfiguration\n ) {\n mods.push(exports);\n } else {\n for (const m in exports) {\n const module = exports[m];\n if (\n Types.isClass(module) ||\n Types.isFunction(module) ||\n module instanceof FunctionalConfiguration\n ) {\n mods.push(module);\n }\n }\n }\n return mods;\n }\n\n public getNamespaceList() {\n return this.namespaceList;\n }\n}\n\nclass ObjectCreateEventTarget extends EventEmitter {}\n\nexport class MidwayContainer implements IMidwayContainer, IModuleStore {\n private _resolverFactory: ManagedResolverFactory = null;\n private _registry: IObjectDefinitionRegistry = null;\n private _identifierMapping = null;\n private moduleMap = null;\n private _objectCreateEventTarget: EventEmitter;\n public parent: IMidwayContainer = null;\n // 仅仅用于兼容requestContainer的ctx\n protected ctx = {};\n private fileDetector: IFileDetector;\n private attrMap: Map<string, any> = new Map();\n private _namespaceSet: Set<string> = null;\n private isLoad = false;\n\n constructor(parent?: IMidwayContainer) {\n this.parent = parent;\n this.init();\n }\n\n protected init() {\n // 防止直接从applicationContext.getAsync or get对象实例时依赖当前上下文信息出错\n // ctx is in requestContainer\n this.registerObject(REQUEST_CTX_KEY, this.ctx);\n }\n\n get objectCreateEventTarget() {\n if (!this._objectCreateEventTarget) {\n this._objectCreateEventTarget = new ObjectCreateEventTarget();\n }\n return this._objectCreateEventTarget;\n }\n\n get registry(): IObjectDefinitionRegistry {\n if (!this._registry) {\n this._registry = new ObjectDefinitionRegistry();\n }\n return this._registry;\n }\n\n set registry(registry) {\n this._registry = registry;\n }\n\n get managedResolverFactory() {\n if (!this._resolverFactory) {\n this._resolverFactory = new ManagedResolverFactory(this);\n }\n return this._resolverFactory;\n }\n\n get identifierMapping(): IIdentifierRelationShip {\n if (!this._identifierMapping) {\n this._identifierMapping = this.registry.getIdentifierRelation();\n }\n return this._identifierMapping;\n }\n\n get namespaceSet(): Set<string> {\n if (!this._namespaceSet) {\n this._namespaceSet = new Set();\n }\n return this._namespaceSet;\n }\n\n load(module?) {\n this.isLoad = true;\n if (module) {\n // load configuration\n const configuration = new ContainerConfiguration(this);\n configuration.load(module);\n for (const ns of configuration.getNamespaceList()) {\n this.namespaceSet.add(ns);\n }\n }\n }\n\n protected loadDefinitions() {\n if (!this.isLoad) {\n this.load();\n }\n // load project file\n this.fileDetector?.run(this);\n }\n\n bindClass(exports, options?: Partial<IObjectDefinition>) {\n if (Types.isClass(exports) || Types.isFunction(exports)) {\n this.bindModule(exports, options);\n } else {\n for (const m in exports) {\n const module = exports[m];\n if (Types.isClass(module) || Types.isFunction(module)) {\n this.bindModule(module, options);\n }\n }\n }\n }\n\n bind<T>(target: T, options?: Partial<IObjectDefinition>): void;\n bind<T>(\n identifier: ObjectIdentifier,\n target: T,\n options?: Partial<IObjectDefinition>\n ): void;\n bind<T>(identifier: any, target: any, options?: any): void {\n if (Types.isClass(identifier) || Types.isFunction(identifier)) {\n return this.bindModule(identifier, target);\n }\n\n if (this.registry.hasDefinition(identifier)) {\n // 如果 definition 存在就不再重复 bind\n return;\n }\n\n let definition;\n if (Types.isClass(target)) {\n definition = new ObjectDefinition();\n definition.name = getProviderName(target);\n } else {\n definition = new FunctionDefinition();\n if (!Types.isAsyncFunction(target)) {\n definition.asynchronous = false;\n }\n definition.name = definition.id;\n }\n\n definition.path = target;\n definition.id = identifier;\n definition.srcPath = options?.srcPath || null;\n definition.namespace = options?.namespace || '';\n definition.scope = options?.scope || ScopeEnum.Request;\n definition.createFrom = options?.createFrom;\n\n if (definition.srcPath) {\n debug(`[core]: bind id \"${definition.name} (${definition.srcPath})\"`);\n } else {\n debug(`[core]: bind id \"${definition.name}\"`);\n }\n\n // inject properties\n const props = getPropertyInject(target);\n\n for (const p in props) {\n const propertyMeta = props[p];\n debugBind(` inject properties => [${JSON.stringify(propertyMeta)}]`);\n const refManaged = new ManagedReference();\n refManaged.args = propertyMeta.args;\n refManaged.name = propertyMeta.value as any;\n definition.properties.set(propertyMeta['targetKey'], refManaged);\n }\n\n // inject custom properties\n const customProps = getClassExtendedMetadata(\n INJECT_CUSTOM_PROPERTY,\n target\n );\n\n for (const p in customProps) {\n const propertyMeta = customProps[p] as {\n propertyName: string;\n key: string;\n metadata: any;\n };\n definition.handlerProps.push(propertyMeta);\n }\n\n // @async, @init, @destroy @scope\n const objDefOptions = getObjectDefinition(target) ?? {};\n\n if (objDefOptions.initMethod) {\n debugBind(` register initMethod = ${objDefOptions.initMethod}`);\n definition.initMethod = objDefOptions.initMethod;\n }\n\n if (objDefOptions.destroyMethod) {\n debugBind(` register destroyMethod = ${objDefOptions.destroyMethod}`);\n definition.destroyMethod = objDefOptions.destroyMethod;\n }\n\n if (objDefOptions.scope) {\n debugBind(` register scope = ${objDefOptions.scope}`);\n definition.scope = objDefOptions.scope;\n }\n\n if (objDefOptions.allowDowngrade) {\n debugBind(` register allowDowngrade = ${objDefOptions.allowDowngrade}`);\n definition.allowDowngrade = objDefOptions.allowDowngrade;\n }\n\n this.objectCreateEventTarget.emit(\n ObjectLifeCycleEvent.BEFORE_BIND,\n target,\n {\n context: this,\n definition,\n replaceCallback: newDefinition => {\n definition = newDefinition;\n },\n }\n );\n\n if (definition) {\n this.registry.registerDefinition(definition.id, definition);\n }\n }\n\n protected bindModule(module: any, options: Partial<IObjectDefinition>) {\n if (Types.isClass(module)) {\n const providerId = getProviderUUId(module);\n if (providerId) {\n this.identifierMapping.saveClassRelation(module, options?.namespace);\n this.bind(providerId, module, options);\n } else {\n // no provide or js class must be skip\n }\n } else {\n const info: {\n id: ObjectIdentifier;\n provider: (context?: IMidwayContainer) => any;\n scope?: ScopeEnum;\n } = module[FUNCTION_INJECT_KEY];\n if (info && info.id) {\n if (!info.scope) {\n info.scope = ScopeEnum.Request;\n }\n const uuid = Utils.generateRandomId();\n this.identifierMapping.saveFunctionRelation(info.id, uuid);\n this.bind(uuid, module, {\n scope: info.scope,\n namespace: options.namespace,\n srcPath: options.srcPath,\n createFrom: options.createFrom,\n });\n }\n }\n }\n\n setFileDetector(fileDetector: IFileDetector) {\n this.fileDetector = fileDetector;\n }\n\n createChild(): IMidwayContainer {\n return new MidwayContainer(this);\n }\n\n public setAttr(key: string, value) {\n this.attrMap.set(key, value);\n }\n\n public getAttr<T>(key: string): T {\n return this.attrMap.get(key);\n }\n\n protected getIdentifier(target: any) {\n return getProviderUUId(target);\n }\n\n protected getManagedResolverFactory() {\n if (!this._resolverFactory) {\n this._resolverFactory = new ManagedResolverFactory(this);\n }\n return this._resolverFactory;\n }\n\n async stop(): Promise<void> {\n await this.getManagedResolverFactory().destroyCache();\n this.registry.clearAll();\n }\n\n async ready(): Promise<void> {\n await this.loadDefinitions();\n }\n\n get<T>(\n identifier: { new (...args): T },\n args?: any[],\n objectContext?: ObjectContext\n ): T;\n get<T>(\n identifier: ObjectIdentifier,\n args?: any[],\n objectContext?: ObjectContext\n ): T;\n get(identifier: any, args?: any[], objectContext?: ObjectContext): any {\n args = args ?? [];\n objectContext = objectContext ?? { originName: identifier };\n if (typeof identifier !== 'string') {\n objectContext.originName = identifier.name;\n identifier = this.getIdentifier(identifier);\n }\n if (this.registry.hasObject(identifier)) {\n return this.registry.getObject(identifier);\n }\n const definition = this.registry.getDefinition(identifier);\n if (!definition && this.parent) {\n return this.parent.get(identifier, args);\n }\n if (!definition) {\n throw new MidwayDefinitionNotFoundError(\n objectContext?.originName ?? identifier\n );\n }\n return this.getManagedResolverFactory().create({ definition, args });\n }\n\n async getAsync<T>(\n identifier: { new (...args): T },\n args?: any[],\n objectContext?: ObjectContext\n ): Promise<T>;\n async getAsync<T>(\n identifier: ObjectIdentifier,\n args?: any[],\n objectContext?: ObjectContext\n ): Promise<T>;\n async getAsync(\n identifier: any,\n args?: any[],\n objectContext?: ObjectContext\n ): Promise<any> {\n args = args ?? [];\n objectContext = objectContext ?? { originName: identifier };\n if (typeof identifier !== 'string') {\n objectContext.originName = identifier.name;\n identifier = this.getIdentifier(identifier);\n }\n if (this.registry.hasObject(identifier)) {\n return this.registry.getObject(identifier);\n }\n\n const definition = this.registry.getDefinition(identifier);\n if (!definition && this.parent) {\n return this.parent.getAsync(identifier, args);\n }\n\n if (!definition) {\n throw new MidwayDefinitionNotFoundError(\n objectContext?.originName ?? identifier\n );\n }\n\n return this.getManagedResolverFactory().createAsync({ definition, args });\n }\n\n /**\n * proxy registry.registerObject\n * @param {ObjectIdentifier} identifier\n * @param target\n */\n registerObject(identifier: ObjectIdentifier, target: any) {\n this.registry.registerObject(identifier, target);\n }\n\n onBeforeBind(\n fn: (\n Clzz: any,\n options: {\n context: IMidwayContainer;\n definition: IObjectDefinition;\n replaceCallback: (newDefinition: IObjectDefinition) => void;\n }\n ) => void\n ) {\n this.objectCreateEventTarget.on(ObjectLifeCycleEvent.BEFORE_BIND, fn);\n }\n\n onBeforeObjectCreated(\n fn: (\n Clzz: any,\n options: {\n context: IMidwayContainer;\n definition: IObjectDefinition;\n constructorArgs: any[];\n }\n ) => void\n ) {\n this.objectCreateEventTarget.on(ObjectLifeCycleEvent.BEFORE_CREATED, fn);\n }\n\n onObjectCreated<T>(\n fn: (\n ins: T,\n options: {\n context: IMidwayContainer;\n definition: IObjectDefinition;\n replaceCallback: (ins: T) => void;\n }\n ) => void\n ) {\n this.objectCreateEventTarget.on(ObjectLifeCycleEvent.AFTER_CREATED, fn);\n }\n\n onObjectInit<T>(\n fn: (\n ins: T,\n options: {\n context: IMidwayContainer;\n definition: IObjectDefinition;\n }\n ) => void\n ) {\n this.objectCreateEventTarget.on(ObjectLifeCycleEvent.AFTER_INIT, fn);\n }\n\n onBeforeObjectDestroy<T>(\n fn: (\n ins: T,\n options: {\n context: IMidwayContainer;\n definition: IObjectDefinition;\n }\n ) => void\n ) {\n this.objectCreateEventTarget.on(ObjectLifeCycleEvent.BEFORE_DESTROY, fn);\n }\n\n saveModule(key, module) {\n if (!this.moduleMap.has(key)) {\n this.moduleMap.set(key, new Set());\n }\n this.moduleMap.get(key).add(module);\n }\n\n listModule(key: string) {\n return Array.from(this.moduleMap.get(key) || {});\n }\n\n transformModule(moduleMap: Map<string, Set<any>>) {\n this.moduleMap = new Map(moduleMap);\n }\n\n hasNamespace(ns: string) {\n return this.namespaceSet.has(ns);\n }\n\n hasDefinition(identifier: ObjectIdentifier) {\n return this.registry.hasDefinition(identifier);\n }\n\n hasObject(identifier: ObjectIdentifier) {\n return this.registry.hasObject(identifier);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"definitionRegistry.js","sourceRoot":"","sources":["../../src/context/definitionRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Object Definition Registry 实现\n */\nimport {\n getProviderId,\n getProviderName,\n getProviderUUId,\n ObjectIdentifier,\n} from '@midwayjs/decorator';\nimport {\n IIdentifierRelationShip,\n IObjectDefinition,\n IObjectDefinitionRegistry,\n} from '../interface';\n\nconst PREFIX = '_id_default_';\n\nclass LegacyIdentifierRelation\n extends Map<ObjectIdentifier, string>\n implements IIdentifierRelationShip\n{\n saveClassRelation(module: any, namespace?: string) {\n const providerId = getProviderUUId(module);\n // save uuid\n this.set(providerId, providerId);\n if (providerId) {\n // save alias id\n const aliasId = getProviderId(module);\n if (aliasId) {\n // save alias Id\n this.set(aliasId, providerId);\n }\n // save className alias\n this.set(getProviderName(module), providerId);\n // save namespace alias\n if (namespace) {\n this.set(namespace + ':' + getProviderName(module), providerId);\n }\n }\n }\n\n saveFunctionRelation(id: ObjectIdentifier, uuid: string) {\n this.set(uuid, uuid);\n this.set(id, uuid);\n }\n\n hasRelation(id: ObjectIdentifier): boolean {\n return this.has(id);\n }\n\n getRelation(id: ObjectIdentifier): string {\n return this.get(id);\n }\n}\n\nexport class ObjectDefinitionRegistry\n extends Map\n implements IObjectDefinitionRegistry\n{\n private singletonIds = [];\n private _identifierRelation: IIdentifierRelationShip =\n new LegacyIdentifierRelation();\n\n get identifierRelation() {\n if (!this._identifierRelation) {\n this._identifierRelation = new LegacyIdentifierRelation();\n }\n return this._identifierRelation;\n }\n\n set identifierRelation(identifierRelation) {\n this._identifierRelation = identifierRelation;\n }\n\n get identifiers() {\n const ids = [];\n for (const key of this.keys()) {\n if (key.indexOf(PREFIX) === -1) {\n ids.push(key);\n }\n }\n return ids;\n }\n\n get count() {\n return this.size;\n }\n\n getSingletonDefinitionIds(): ObjectIdentifier[] {\n return this.singletonIds;\n }\n\n getDefinitionByName(name: string): IObjectDefinition[] {\n const definitions = [];\n for (const v of this.values()) {\n const definition = v as IObjectDefinition;\n if (definition.name === name) {\n definitions.push(definition);\n }\n }\n return definitions;\n }\n\n registerDefinition(\n identifier: ObjectIdentifier,\n definition: IObjectDefinition\n ) {\n if (definition.isSingletonScope()) {\n this.singletonIds.push(identifier);\n }\n this.set(identifier, definition);\n }\n\n getDefinition(identifier: ObjectIdentifier): IObjectDefinition {\n identifier = this.identifierRelation.getRelation(identifier) ?? identifier;\n return this.get(identifier);\n }\n\n removeDefinition(identifier: ObjectIdentifier): void {\n this.delete(identifier);\n }\n\n hasDefinition(identifier: ObjectIdentifier): boolean {\n identifier = this.identifierRelation.getRelation(identifier) ?? identifier;\n return this.has(identifier);\n }\n\n clearAll(): void {\n this.singletonIds = [];\n this.clear();\n }\n\n hasObject(identifier: ObjectIdentifier): boolean {\n identifier = this.identifierRelation.getRelation(identifier) ?? identifier;\n return this.has(PREFIX + identifier);\n }\n\n registerObject(identifier: ObjectIdentifier, target: any) {\n this.set(PREFIX + identifier, target);\n }\n\n getObject(identifier: ObjectIdentifier): any {\n identifier = this.identifierRelation.getRelation(identifier) ?? identifier;\n return this.get(PREFIX + identifier);\n }\n\n getIdentifierRelation(): IIdentifierRelationShip {\n return this.identifierRelation;\n }\n\n setIdentifierRelation(identifierRelation: IIdentifierRelationShip) {\n this.identifierRelation = identifierRelation;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"managedResolverFactory.js","sourceRoot":"","sources":["../../src/context/managedResolverFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 管理对象解析构建\n */\nimport { IManagedInstance, ObjectIdentifier } from '@midwayjs/decorator';\nimport { KEYS } from '../common/constants';\nimport {\n IManagedResolver,\n IObjectDefinition,\n REQUEST_CTX_KEY,\n REQUEST_OBJ_CTX_KEY,\n IManagedResolverFactoryCreateOptions,\n IMidwayContainer,\n ObjectLifeCycleEvent,\n} from '../interface';\n\nimport * as util from 'util';\nimport * as EventEmitter from 'events';\nimport {\n MidwayCommonError,\n MidwayDefinitionNotFoundError,\n MidwayResolverMissingError,\n MidwaySingletonInjectRequestError,\n} from '../error';\n\nconst debug = util.debuglog('midway:managedresolver');\nconst debugLog = util.debuglog('midway:debug');\n\nexport class ManagedReference implements IManagedInstance {\n type = KEYS.REF_ELEMENT;\n name: string;\n args?: any;\n}\n\n/**\n * 解析ref\n */\nclass RefResolver {\n constructor(readonly factory: ManagedResolverFactory) {}\n get type(): string {\n return KEYS.REF_ELEMENT;\n }\n\n resolve(managed: IManagedInstance, originName: string): any {\n const mr = managed as ManagedReference;\n return this.factory.context.get(mr.name, mr.args, {\n originName,\n });\n }\n\n async resolveAsync(\n managed: IManagedInstance,\n originName: string\n ): Promise<any> {\n const mr = managed as ManagedReference;\n return this.factory.context.getAsync(mr.name, mr.args, {\n originName,\n });\n }\n}\n\n/**\n * 解析工厂\n */\nexport class ManagedResolverFactory {\n private resolvers = {};\n private creating = new Map<string, boolean>();\n singletonCache = new Map<ObjectIdentifier, any>();\n context: IMidwayContainer;\n\n constructor(context: IMidwayContainer) {\n this.context = context;\n\n // 初始化解析器\n this.resolvers = {\n ref: new RefResolver(this),\n };\n }\n\n registerResolver(resolver: IManagedResolver) {\n this.resolvers[resolver.type] = resolver;\n }\n\n resolveManaged(managed: IManagedInstance, originPropertyName: string): any {\n const resolver = this.resolvers[managed.type];\n if (!resolver || resolver.type !== managed.type) {\n throw new MidwayResolverMissingError(managed.type);\n }\n return resolver.resolve(managed, originPropertyName);\n }\n\n async resolveManagedAsync(\n managed: IManagedInstance,\n originPropertyName: string\n ): Promise<any> {\n const resolver = this.resolvers[managed.type];\n if (!resolver || resolver.type !== managed.type) {\n throw new MidwayResolverMissingError(managed.type);\n }\n return resolver.resolveAsync(managed, originPropertyName);\n }\n\n /**\n * 同步创建对象\n * @param opt\n */\n create(opt: IManagedResolverFactoryCreateOptions): any {\n const { definition, args } = opt;\n if (\n definition.isSingletonScope() &&\n this.singletonCache.has(definition.id)\n ) {\n return this.singletonCache.get(definition.id);\n }\n // 如果非 null 表示已经创建 proxy\n let inst = this.createProxyReference(definition);\n if (inst) {\n return inst;\n }\n\n this.compareAndSetCreateStatus(definition);\n // 预先初始化依赖\n if (definition.hasDependsOn()) {\n for (const dep of definition.dependsOn) {\n this.context.get(dep, args);\n }\n }\n\n debugLog(`[core]: Create id = \"${definition.name}\" ${definition.id}.`);\n\n const Clzz = definition.creator.load();\n\n let constructorArgs = [];\n if (args && Array.isArray(args) && args.length > 0) {\n constructorArgs = args;\n }\n\n this.getObjectEventTarget().emit(\n ObjectLifeCycleEvent.BEFORE_CREATED,\n Clzz,\n {\n constructorArgs,\n definition,\n context: this.context,\n }\n );\n\n inst = definition.creator.doConstruct(Clzz, constructorArgs, this.context);\n\n // binding ctx object\n if (\n definition.isRequestScope() &&\n definition.constructor.name === 'ObjectDefinition'\n ) {\n Object.defineProperty(inst, REQUEST_OBJ_CTX_KEY, {\n value: this.context.get(REQUEST_CTX_KEY),\n writable: false,\n enumerable: false,\n });\n }\n\n if (definition.properties) {\n const keys = definition.properties.propertyKeys() as string[];\n for (const key of keys) {\n this.checkSingletonInvokeRequest(definition, key);\n try {\n inst[key] = this.resolveManaged(definition.properties.get(key), key);\n } catch (error) {\n if (MidwayDefinitionNotFoundError.isClosePrototypeOf(error)) {\n const className = definition.path.name;\n error.updateErrorMsg(className);\n }\n this.removeCreateStatus(definition, true);\n throw error;\n }\n }\n }\n\n this.getObjectEventTarget().emit(ObjectLifeCycleEvent.AFTER_CREATED, inst, {\n context: this.context,\n definition,\n replaceCallback: ins => {\n inst = ins;\n },\n });\n\n // after properties set then do init\n definition.creator.doInit(inst);\n\n this.getObjectEventTarget().emit(ObjectLifeCycleEvent.AFTER_INIT, inst, {\n context: this.context,\n definition,\n });\n\n if (definition.isSingletonScope() && definition.id) {\n this.singletonCache.set(definition.id, inst);\n }\n\n // for request scope\n if (definition.isRequestScope() && definition.id) {\n this.context.registerObject(definition.id, inst);\n }\n this.removeCreateStatus(definition, true);\n\n return inst;\n }\n\n /**\n * 异步创建对象\n * @param opt\n */\n async createAsync(opt: IManagedResolverFactoryCreateOptions): Promise<any> {\n const { definition, args } = opt;\n if (\n definition.isSingletonScope() &&\n this.singletonCache.has(definition.id)\n ) {\n debug(\n `id = ${definition.id}(${definition.name}) get from singleton cache.`\n );\n return this.singletonCache.get(definition.id);\n }\n\n // 如果非 null 表示已经创建 proxy\n let inst = this.createProxyReference(definition);\n if (inst) {\n debug(`id = ${definition.id}(${definition.name}) from proxy reference.`);\n return inst;\n }\n\n this.compareAndSetCreateStatus(definition);\n // 预先初始化依赖\n if (definition.hasDependsOn()) {\n for (const dep of definition.dependsOn) {\n debug('id = %s init depend %s.', definition.id, dep);\n await this.context.getAsync(dep, args);\n }\n }\n\n debugLog(`[core]: Create id = \"${definition.name}\" ${definition.id}.`);\n\n const Clzz = definition.creator.load();\n let constructorArgs = [];\n if (args && Array.isArray(args) && args.length > 0) {\n constructorArgs = args;\n }\n\n this.getObjectEventTarget().emit(\n ObjectLifeCycleEvent.BEFORE_CREATED,\n Clzz,\n {\n constructorArgs,\n context: this.context,\n }\n );\n\n inst = await definition.creator.doConstructAsync(\n Clzz,\n constructorArgs,\n this.context\n );\n if (!inst) {\n this.removeCreateStatus(definition, false);\n throw new MidwayCommonError(\n `${definition.id} construct return undefined`\n );\n }\n\n // binding ctx object\n if (\n definition.isRequestScope() &&\n definition.constructor.name === 'ObjectDefinition'\n ) {\n debug('id = %s inject ctx', definition.id);\n Object.defineProperty(inst, REQUEST_OBJ_CTX_KEY, {\n value: this.context.get(REQUEST_CTX_KEY),\n writable: false,\n enumerable: false,\n });\n }\n\n if (definition.properties) {\n const keys = definition.properties.propertyKeys() as string[];\n for (const key of keys) {\n this.checkSingletonInvokeRequest(definition, key);\n try {\n inst[key] = await this.resolveManagedAsync(\n definition.properties.get(key),\n key\n );\n } catch (error) {\n if (MidwayDefinitionNotFoundError.isClosePrototypeOf(error)) {\n const className = definition.path.name;\n error.updateErrorMsg(className);\n }\n this.removeCreateStatus(definition, false);\n throw error;\n }\n }\n }\n\n this.getObjectEventTarget().emit(ObjectLifeCycleEvent.AFTER_CREATED, inst, {\n context: this.context,\n definition,\n replaceCallback: ins => {\n inst = ins;\n },\n });\n\n // after properties set then do init\n await definition.creator.doInitAsync(inst);\n\n this.getObjectEventTarget().emit(ObjectLifeCycleEvent.AFTER_INIT, inst, {\n context: this.context,\n definition,\n });\n\n if (definition.isSingletonScope() && definition.id) {\n debug(`id = ${definition.id}(${definition.name}) set to singleton cache`);\n this.singletonCache.set(definition.id, inst);\n }\n\n // for request scope\n if (definition.isRequestScope() && definition.id) {\n debug(`id = ${definition.id}(${definition.name}) set to register object`);\n this.context.registerObject(definition.id, inst);\n }\n this.removeCreateStatus(definition, true);\n\n return inst;\n }\n\n async destroyCache(): Promise<void> {\n for (const key of this.singletonCache.keys()) {\n const definition = this.context.registry.getDefinition(key);\n if (definition.creator) {\n const inst = this.singletonCache.get(key);\n this.getObjectEventTarget().emit(\n ObjectLifeCycleEvent.BEFORE_DESTROY,\n inst,\n {\n context: this.context,\n definition,\n }\n );\n await definition.creator.doDestroyAsync(inst);\n }\n }\n this.singletonCache.clear();\n this.creating.clear();\n }\n\n /**\n * 触发单例初始化结束事件\n * @param definition 单例定义\n * @param success 成功 or 失败\n */\n private removeCreateStatus(\n definition: IObjectDefinition,\n success: boolean\n ): boolean {\n // 如果map中存在表示需要设置状态\n if (this.creating.has(definition.id)) {\n this.creating.set(definition.id, false);\n }\n return true;\n }\n\n public isCreating(definition: IObjectDefinition) {\n return this.creating.has(definition.id) && this.creating.get(definition.id);\n }\n\n private compareAndSetCreateStatus(definition: IObjectDefinition) {\n if (\n !this.creating.has(definition.id) ||\n !this.creating.get(definition.id)\n ) {\n this.creating.set(definition.id, true);\n }\n }\n /**\n * 创建对象定义的代理访问逻辑\n * @param definition 对象定义\n */\n private createProxyReference(definition: IObjectDefinition): any {\n if (this.isCreating(definition)) {\n debug('create proxy for %s.', definition.id);\n // 非循环依赖的允许重新创建对象\n if (!this.depthFirstSearch(definition.id, definition)) {\n debug('id = %s after dfs return null', definition.id);\n return null;\n }\n // 创建代理对象\n return new Proxy(\n { __is_proxy__: true, __target_id__: definition.id },\n {\n get: (obj, prop) => {\n let target;\n if (definition.isRequestScope()) {\n target = this.context.registry.getObject(definition.id);\n } else if (definition.isSingletonScope()) {\n target = this.singletonCache.get(definition.id);\n } else {\n target = this.context.get(definition.id);\n }\n\n if (target) {\n if (typeof target[prop] === 'function') {\n return target[prop].bind(target);\n }\n return target[prop];\n }\n\n return undefined;\n },\n }\n );\n }\n return null;\n }\n /**\n * 遍历依赖树判断是否循环依赖\n * @param identifier 目标id\n * @param definition 定义描述\n * @param depth\n */\n public depthFirstSearch(\n identifier: string,\n definition: IObjectDefinition,\n depth?: string[]\n ): boolean {\n if (definition) {\n debug('dfs for %s == %s start.', identifier, definition.id);\n if (definition.properties) {\n const keys = definition.properties.propertyKeys() as string[];\n if (keys.indexOf(identifier) > -1) {\n debug('dfs exist in properties %s == %s.', identifier, definition.id);\n return true;\n }\n for (const key of keys) {\n if (!Array.isArray(depth)) {\n depth = [identifier];\n }\n let iden = key;\n const ref: ManagedReference = definition.properties.get(key);\n if (ref && ref.name) {\n iden =\n this.context.identifierMapping.getRelation(ref.name) ?? ref.name;\n }\n if (iden === identifier) {\n debug(\n 'dfs exist in properties key %s == %s.',\n identifier,\n definition.id\n );\n return true;\n }\n if (depth.indexOf(iden) > -1) {\n debug(\n 'dfs depth circular %s == %s, %s, %j.',\n identifier,\n definition.id,\n iden,\n depth\n );\n continue;\n } else {\n depth.push(iden);\n debug('dfs depth push %s == %s, %j.', identifier, iden, depth);\n }\n let subDefinition = this.context.registry.getDefinition(iden);\n if (!subDefinition && this.context.parent) {\n subDefinition = this.context.parent.registry.getDefinition(iden);\n }\n if (this.depthFirstSearch(identifier, subDefinition, depth)) {\n debug(\n 'dfs exist in sub tree %s == %s subId = %s.',\n identifier,\n definition.id,\n subDefinition.id\n );\n return true;\n }\n }\n }\n debug('dfs for %s == %s end.', identifier, definition.id);\n }\n return false;\n }\n\n private getObjectEventTarget(): EventEmitter {\n if (this.context.parent) {\n return this.context.parent.objectCreateEventTarget;\n }\n return this.context.objectCreateEventTarget;\n }\n\n private checkSingletonInvokeRequest(definition, key) {\n if (definition.isSingletonScope()) {\n const managedRef = definition.properties.get(key);\n if (this.context.hasDefinition(managedRef?.name)) {\n const propertyDefinition = this.context.registry.getDefinition(\n managedRef.name\n );\n if (\n propertyDefinition.isRequestScope() &&\n !propertyDefinition.allowDowngrade\n ) {\n throw new MidwaySingletonInjectRequestError(\n definition.path.name,\n propertyDefinition.path.name\n );\n }\n }\n }\n return true;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"providerWrapper.js","sourceRoot":"","sources":["../../src/context/providerWrapper.ts"],"names":[],"mappings":";;;AAEA,mDAA0D;AAE1D,SAAgB,eAAe,CAC7B,WAIE;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;QAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,+BAAmB,EAAE;YACxD,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;KACJ;AACH,CAAC;AAbD,0CAaC","sourcesContent":["import { ObjectIdentifier, ScopeEnum } from '@midwayjs/decorator';\nimport { IMidwayContainer } from '../interface';\nimport { FUNCTION_INJECT_KEY } from '../common/constants';\n\nexport function providerWrapper(\n wrapperInfo: Array<{\n id: ObjectIdentifier;\n provider: (context: IMidwayContainer, args?: any) => any;\n scope?: ScopeEnum;\n }>\n): void {\n for (const info of wrapperInfo) {\n Object.defineProperty(info.provider, FUNCTION_INJECT_KEY, {\n value: info,\n writable: false,\n });\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"requestContainer.js","sourceRoot":"","sources":["../../src/context/requestContainer.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAC9C,4CAAiE;AACjE,mDAA0D;AAE1D,MAAa,sBAAuB,SAAQ,2BAAe;IAGzD,YAAY,GAAG,EAAE,kBAAoC;QACnD,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAE7C,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CACjC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CACzD,CAAC;QAEF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,2BAAe,EAAE,GAAG,CAAC,CAAC;QAC1C,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,yBAAyB;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SAC3C;IACH,CAAC;IAED,IAAI;QACF,aAAa;IACf,CAAC;IAED,GAAG,CAAU,UAAe,EAAE,IAAU;QACtC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAC5C;QAED,MAAM,UAAU,GACd,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,UAAU,EAAE;YACd,IACE,UAAU,CAAC,cAAc,EAAE;gBAC3B,UAAU,CAAC,EAAE,KAAK,+BAAmB,EACrC;gBACA,oEAAoE;gBACpE,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC,MAAM,CAAC;oBAC7C,UAAU;oBACV,IAAI;iBACL,CAAC,CAAC;aACJ;SACF;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SAC1C;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAU,UAAe,EAAE,IAAU;QACjD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAC5C;QAED,MAAM,UAAU,GACd,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,UAAU,EAAE;YACd,IACE,UAAU,CAAC,cAAc,EAAE;gBAC3B,UAAU,CAAC,EAAE,KAAK,+BAAmB,EACrC;gBACA,oEAAoE;gBACpE,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC,WAAW,CAAC;oBAClD,UAAU;oBACV,IAAI;iBACL,CAAC,CAAC;aACJ;SACF;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAI,UAAU,EAAE,IAAI,CAAC,CAAC;SAClD;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,sBAAsB;IACxB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AA7FD,wDA6FC","sourcesContent":["import { MidwayContainer } from './container';\nimport { REQUEST_CTX_KEY, IMidwayContainer } from '../interface';\nimport { PIPELINE_IDENTIFIER } from '@midwayjs/decorator';\n\nexport class MidwayRequestContainer extends MidwayContainer {\n private readonly applicationContext: IMidwayContainer;\n\n constructor(ctx, applicationContext: IMidwayContainer) {\n super(applicationContext);\n this.applicationContext = applicationContext;\n\n // update legacy relationship\n this.registry.setIdentifierRelation(\n this.applicationContext.registry.getIdentifierRelation()\n );\n\n this.ctx = ctx;\n // register ctx\n this.registerObject(REQUEST_CTX_KEY, ctx);\n // register res\n this.registerObject('res', {});\n\n if (ctx.logger) {\n // register contextLogger\n this.registerObject('logger', ctx.logger);\n }\n }\n\n init() {\n // do nothing\n }\n\n get<T = any>(identifier: any, args?: any): T {\n if (typeof identifier !== 'string') {\n identifier = this.getIdentifier(identifier);\n }\n\n if (this.registry.hasObject(identifier)) {\n return this.registry.getObject(identifier);\n }\n\n const definition =\n this.applicationContext.registry.getDefinition(identifier);\n if (definition) {\n if (\n definition.isRequestScope() ||\n definition.id === PIPELINE_IDENTIFIER\n ) {\n // create object from applicationContext definition for requestScope\n return this.getManagedResolverFactory().create({\n definition,\n args,\n });\n }\n }\n\n if (this.parent) {\n return this.parent.get(identifier, args);\n }\n }\n\n async getAsync<T = any>(identifier: any, args?: any): Promise<T> {\n if (typeof identifier !== 'string') {\n identifier = this.getIdentifier(identifier);\n }\n\n if (this.registry.hasObject(identifier)) {\n return this.registry.getObject(identifier);\n }\n\n const definition =\n this.applicationContext.registry.getDefinition(identifier);\n if (definition) {\n if (\n definition.isRequestScope() ||\n definition.id === PIPELINE_IDENTIFIER\n ) {\n // create object from applicationContext definition for requestScope\n return this.getManagedResolverFactory().createAsync({\n definition,\n args,\n });\n }\n }\n\n if (this.parent) {\n return this.parent.getAsync<T>(identifier, args);\n }\n }\n\n async ready() {\n // ignore other things\n }\n\n getContext() {\n return this.ctx;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"functionDefinition.js","sourceRoot":"","sources":["../../src/definitions/functionDefinition.ts"],"names":[],"mappings":";;;AAAA,mDAI6B;AAO7B,mDAAgD;AAEhD,MAAM,sBAAuB,SAAQ,6BAAa;IAChD,WAAW,CAAC,IAAS,EAAE,IAAU,EAAE,OAA0B;QAC3D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,IAAS,EACT,IAAU,EACV,OAA0B;QAE1B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAa,kBAAkB;IAC7B;QAKA,oBAAe,GAAuB,EAAE,CAAC;QAWzC,cAAS,GAAG,EAAE,CAAC;QACf,iBAAY,GAAG,IAAI,CAAC;QACpB,iBAAY,GAAG,EAAE,CAAC;QAElB,mBAAc,GAAG,KAAK,CAAC;QACvB,qBAAqB;QACX,kBAAa,GAAG,KAAK,CAAC;QACtB,eAAU,GAAc,qBAAS,CAAC,SAAS,CAAC;QAtBpD,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAuBD,OAAO,CAAC,GAAqB,IAAQ,CAAC;IAEtC,OAAO,CAAC,GAAqB;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,KAAgB;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,KAAK,qBAAS,CAAC,SAAS,CAAC;IACjD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,KAAK,qBAAS,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,GAAqB,EAAE,KAAU,IAAS,CAAC;CACpD;AAjED,gDAiEC","sourcesContent":["import {\n IManagedInstance,\n ObjectIdentifier,\n ScopeEnum,\n} from '@midwayjs/decorator';\nimport {\n IProperties,\n IObjectCreator,\n IObjectDefinition,\n IMidwayContainer,\n} from '../interface';\nimport { ObjectCreator } from './objectCreator';\n\nclass FunctionWrapperCreator extends ObjectCreator {\n doConstruct(Clzz: any, args?: any, context?: IMidwayContainer): any {\n if (!Clzz) {\n return null;\n }\n return Clzz(context, args);\n }\n\n async doConstructAsync(\n Clzz: any,\n args?: any,\n context?: IMidwayContainer\n ): Promise<any> {\n if (!Clzz) {\n return null;\n }\n\n return Clzz(context, args);\n }\n}\n\nexport class FunctionDefinition implements IObjectDefinition {\n constructor() {\n this.creator = new FunctionWrapperCreator(this);\n }\n\n constructMethod: string;\n constructorArgs: IManagedInstance[] = [];\n creator: IObjectCreator;\n dependsOn: ObjectIdentifier[];\n destroyMethod: string;\n export: string;\n id: string;\n name: string;\n initMethod: string;\n srcPath: string;\n path: any;\n properties: IProperties;\n namespace = '';\n asynchronous = true;\n handlerProps = [];\n createFrom;\n allowDowngrade = false;\n // 函数工厂创建的对象默认不需要自动装配\n protected innerAutowire = false;\n protected innerScope: ScopeEnum = ScopeEnum.Singleton;\n\n getAttr(key: ObjectIdentifier): any {}\n\n hasAttr(key: ObjectIdentifier): boolean {\n return false;\n }\n\n hasConstructorArgs(): boolean {\n return false;\n }\n\n hasDependsOn(): boolean {\n return false;\n }\n\n isAsync(): boolean {\n return this.asynchronous;\n }\n\n isDirect(): boolean {\n return false;\n }\n\n isExternal(): boolean {\n return false;\n }\n\n set scope(scope: ScopeEnum) {\n this.innerScope = scope;\n }\n\n isSingletonScope(): boolean {\n return this.innerScope === ScopeEnum.Singleton;\n }\n\n isRequestScope(): boolean {\n return this.innerScope === ScopeEnum.Request;\n }\n\n setAttr(key: ObjectIdentifier, value: any): void {}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectCreator.js","sourceRoot":"","sources":["../../src/definitions/objectCreator.ts"],"names":[],"mappings":";;;AAAA,mDAA4C;AAE5C,oCAAqD;AAErD,MAAa,aAAa;IAGxB,YAAY,UAA6B;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5C,+BAA+B;YAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;gBACzB,OAAO,IAAI,CAAC;aACb;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC9C;iBAAM;gBACL,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;aACtB;SACF;aAAM;YACL,mCAAmC;YACnC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,IAAS,EAAE,IAAU;QAC/B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YACnC,yCAAyC;YACzC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAChE;aAAM;YACL,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACtC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAS,EAAE,IAAU;QAC1C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACjD,IAAI,iBAAK,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE;gBAC7B,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACnC;iBAAM;gBACL,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC7B;SACF;aAAM;YACL,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACtC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAQ;QACb,MAAM,IAAI,GAAG,GAAG,CAAC;QACjB,oCAAoC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAClE,IACE,iBAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC3D,iBAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EACvD;gBACA,MAAM,IAAI,iCAAyB,CACjC,aAAa,EACb,kBAAkB,EAClB,IAAI,CAAC,UAAU,CAAC,EAAE,CACnB,CAAC;aACH;iBAAM;gBACL,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,iBAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;oBACvB,MAAM,IAAI,iCAAyB,CACjC,aAAa,EACb,kBAAkB,EAClB,IAAI,CAAC,UAAU,CAAC,EAAE,CACnB,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,GAAQ;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC;QACjB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,iBAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;gBACjC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;wBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAC7B,CAAC,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnB;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,GAAQ;QAChB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACvE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC9C;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,GAAQ;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACvE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC9C,IAAI,iBAAK,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE;gBAC7B,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpB;iBAAM;gBACL,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;oBACnB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;wBAC1B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;iBACJ;qBAAM;oBACL,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACd;aACF;SACF;IACH,CAAC;CACF;AAnKD,sCAmKC","sourcesContent":["import { Types } from '@midwayjs/decorator';\nimport { IObjectCreator, IObjectDefinition } from '../interface';\nimport { MidwayUseWrongMethodError } from '../error';\n\nexport class ObjectCreator implements IObjectCreator {\n protected definition: IObjectDefinition;\n\n constructor(definition: IObjectDefinition) {\n this.definition = definition;\n }\n\n /**\n * 加载对象class\n * @returns {class} Clzz对象的Class\n */\n load(): any {\n let Clzz = null;\n if (typeof this.definition.path === 'string') {\n // 解析xml结果 默认 path = '' 需要兼容处理掉\n if (!this.definition.path) {\n return Clzz;\n }\n const path = this.definition.path;\n if (this.definition.export) {\n Clzz = require(path)[this.definition.export];\n } else {\n Clzz = require(path);\n }\n } else {\n // if it is class and return direct\n Clzz = this.definition.path;\n }\n return Clzz;\n }\n\n /**\n * 构建对象实例\n * @param Clzz 对象class,通过load加载\n * @param args 对象初始化参数\n * @returns {any} 返回创建的对象实例\n */\n doConstruct(Clzz: any, args?: any): any {\n if (!Clzz) {\n return Object.create(null);\n }\n\n let inst;\n if (this.definition.constructMethod) {\n // eslint-disable-next-line prefer-spread\n inst = Clzz[this.definition.constructMethod].apply(Clzz, args);\n } else {\n inst = Reflect.construct(Clzz, args);\n }\n return inst;\n }\n\n /**\n * 异步构造对象\n * @param Clzz 对象class,通过load加载\n * @param args 对象初始化参数\n * @returns {any} 返回创建的对象实例\n */\n async doConstructAsync(Clzz: any, args?: any): Promise<any> {\n if (!Clzz) {\n return Object.create(null);\n }\n\n let inst;\n if (this.definition.constructMethod) {\n const fn = Clzz[this.definition.constructMethod];\n if (Types.isAsyncFunction(fn)) {\n inst = await fn.apply(Clzz, args);\n } else {\n inst = fn.apply(Clzz, args);\n }\n } else {\n inst = Reflect.construct(Clzz, args);\n }\n return inst;\n }\n\n /**\n * 调用对象初始化方法进行初始化\n * @param obj 对象,由doConstruct返回\n * @returns {void}\n */\n doInit(obj: any): void {\n const inst = obj;\n // after properties set then do init\n if (this.definition.initMethod && inst[this.definition.initMethod]) {\n if (\n Types.isGeneratorFunction(inst[this.definition.initMethod]) ||\n Types.isAsyncFunction(inst[this.definition.initMethod])\n ) {\n throw new MidwayUseWrongMethodError(\n 'context.get',\n 'context.getAsync',\n this.definition.id\n );\n } else {\n const rt = inst[this.definition.initMethod].call(inst);\n if (Types.isPromise(rt)) {\n throw new MidwayUseWrongMethodError(\n 'context.get',\n 'context.getAsync',\n this.definition.id\n );\n }\n }\n }\n }\n\n /**\n * 调用对象初始化方法进行初始化\n * @param obj 对象,由doConstructAsync返回\n * @returns {void}\n */\n async doInitAsync(obj: any): Promise<void> {\n const inst = obj;\n if (this.definition.initMethod && inst[this.definition.initMethod]) {\n const initFn = inst[this.definition.initMethod];\n if (Types.isAsyncFunction(initFn)) {\n await initFn.call(inst);\n } else {\n if (initFn.length === 1) {\n await new Promise(resolve => {\n initFn.call(inst, resolve);\n });\n } else {\n initFn.call(inst);\n }\n }\n }\n }\n\n /**\n * 对象销毁\n * @param obj 对象,由doConstruct返回\n * @returns {void}\n */\n doDestroy(obj: any): void {\n if (this.definition.destroyMethod && obj[this.definition.destroyMethod]) {\n obj[this.definition.destroyMethod].call(obj);\n }\n }\n\n /**\n * 对象销毁\n * @param obj 对象,由doConstructAsync返回\n * @returns {void}\n */\n async doDestroyAsync(obj: any): Promise<void> {\n if (this.definition.destroyMethod && obj[this.definition.destroyMethod]) {\n const fn = obj[this.definition.destroyMethod];\n if (Types.isAsyncFunction(fn)) {\n await fn.call(obj);\n } else {\n if (fn.length === 1) {\n await new Promise(resolve => {\n fn.call(obj, resolve);\n });\n } else {\n fn.call(obj);\n }\n }\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectDefinition.js","sourceRoot":"","sources":["../../src/definitions/objectDefinition.ts"],"names":[],"mappings":";;;AACA,mDAAkE;AAClE,6CAAgD;AAChD,mDAAgD;AAEhD,kCAAkC;AAClC,MAAa,gBAAgB;IAqB3B;QApBU,WAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC1C,kBAAa,GAAG,KAAK,CAAC;QAChC,UAAK,GAAc,qBAAS,CAAC,SAAS,CAAC;QACvC,YAAO,GAAmB,IAAI,CAAC;QAC/B,OAAE,GAAW,IAAI,CAAC;QAClB,SAAI,GAAW,IAAI,CAAC;QACpB,eAAU,GAAW,IAAI,CAAC;QAC1B,kBAAa,GAAW,IAAI,CAAC;QAC7B,oBAAe,GAAW,IAAI,CAAC;QAC/B,oBAAe,GAAU,EAAE,CAAC;QAE5B,SAAI,GAAQ,IAAI,CAAC;QACjB,WAAM,GAAW,IAAI,CAAC;QACtB,cAAS,GAAuB,EAAE,CAAC;QACnC,eAAU,GAAG,IAAI,6BAAgB,EAAE,CAAC;QACpC,cAAS,GAAG,EAAE,CAAC;QACf,iBAAY,GAAG,EAAE,CAAC;QAElB,mBAAc,GAAG,KAAK,CAAC;QAGrB,IAAI,CAAC,OAAO,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,YAAqB;QACpC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,KAAK,qBAAS,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,KAAK,qBAAS,CAAC,OAAO,CAAC;IAC1C,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,GAAqB;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,GAAqB;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,GAAqB,EAAE,KAAU;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AA5DD,4CA4DC;AACD,iCAAiC","sourcesContent":["import { IObjectCreator, IObjectDefinition } from '../interface';\nimport { ScopeEnum, ObjectIdentifier } from '@midwayjs/decorator';\nimport { ObjectProperties } from './properties';\nimport { ObjectCreator } from './objectCreator';\n\n/* tslint:disable:variable-name */\nexport class ObjectDefinition implements IObjectDefinition {\n protected _attrs = new Map<ObjectIdentifier, any>();\n protected _asynchronous = false;\n scope: ScopeEnum = ScopeEnum.Singleton;\n creator: IObjectCreator = null;\n id: string = null;\n name: string = null;\n initMethod: string = null;\n destroyMethod: string = null;\n constructMethod: string = null;\n constructorArgs: any[] = [];\n srcPath: string;\n path: any = null;\n export: string = null;\n dependsOn: ObjectIdentifier[] = [];\n properties = new ObjectProperties();\n namespace = '';\n handlerProps = [];\n createFrom;\n allowDowngrade = false;\n\n constructor() {\n this.creator = new ObjectCreator(this);\n }\n\n set asynchronous(asynchronous: boolean) {\n this._asynchronous = asynchronous;\n }\n\n isAsync(): boolean {\n return this._asynchronous;\n }\n\n isSingletonScope(): boolean {\n return this.scope === ScopeEnum.Singleton;\n }\n\n isRequestScope(): boolean {\n return this.scope === ScopeEnum.Request;\n }\n\n hasDependsOn(): boolean {\n return this.dependsOn.length > 0;\n }\n\n hasConstructorArgs(): boolean {\n return this.constructorArgs.length > 0;\n }\n\n getAttr(key: ObjectIdentifier): any {\n return this._attrs.get(key);\n }\n\n hasAttr(key: ObjectIdentifier): boolean {\n return this._attrs.has(key);\n }\n\n setAttr(key: ObjectIdentifier, value: any): void {\n this._attrs.set(key, value);\n }\n}\n/* tslint:enable:variable-name */\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/definitions/properties.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBACX,SAAQ,GAA0B;IAGlC,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,GAAqB,EAAE,YAAkB;QACnD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,GAAqB,EAAE,KAAU;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAnBD,4CAmBC","sourcesContent":["import { ObjectIdentifier } from '@midwayjs/decorator';\nimport { IProperties } from '../interface';\n\nexport class ObjectProperties\n extends Map<ObjectIdentifier, any>\n implements IProperties\n{\n propertyKeys(): ObjectIdentifier[] {\n return Array.from(this.keys());\n }\n\n getProperty(key: ObjectIdentifier, defaultValue?: any): any {\n if (this.has(key)) {\n return this.get(key);\n }\n\n return defaultValue;\n }\n\n setProperty(key: ObjectIdentifier, value: any): any {\n return this.set(key, value);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/error/base.ts"],"names":[],"mappings":";;;AAiBA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAE5B;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,UAAa,EACb,gBAAmB;IAEnB,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QAC7B,MAAM,IAAI,WAAW,CACnB,eAAe,UAAU,6CAA6C,CACvE,CAAC;KACH;SAAM;QACL,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KAC3B;IACD,MAAM,WAAW,GAAG,EAAiB,CAAC;IACtC,uBAAuB;IACvB,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;QACrC,WAAW,CAAC,MAAgB,CAAC;YAC3B,UAAU,CAAC,WAAW,EAAE;gBACxB,GAAG;gBACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAClD;IACD,OAAO,WAAkC,CAAC;AAC5C,CAAC;AApBD,8CAoBC;AAED,MAAa,WAAY,SAAQ,KAAK;IAMpC,YAAY,OAAe,EAAE,IAAS,EAAE,OAAqB;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACrC,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,cAAc,CAAC;SACvB;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;IAC9B,CAAC;CACF;AAhBD,kCAgBC;AAID,MAAa,eAAgB,SAAQ,WAAW;IAU9C,YACE,YAAiB,EACjB,MAAc,EACd,IAAa,EACb,OAAqB;QAErB,KAAK,CACH,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EACtE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,CAAC,MAAM,CAAC,EACtB,OAAO,CACR,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAvBD,0CAuBC","sourcesContent":["interface ErrorOption {\n cause?: Error;\n status?: number;\n}\n\ninterface Convertable {\n [key: string]: string | number;\n}\n\ntype ConvertString<T extends Convertable, Group extends string> = {\n [P in keyof T]: P extends string\n ? T[P] extends number\n ? `${Uppercase<Group>}_${T[P]}`\n : never\n : never;\n};\n\nconst codeGroup = new Set();\n\n/**\n * Register error group and code, return the standard ErrorCode\n * @param errorGroup\n * @param errorCodeMapping\n */\nexport function registerErrorCode<T extends Convertable, G extends string>(\n errorGroup: G,\n errorCodeMapping: T\n): ConvertString<T, G> {\n if (codeGroup.has(errorGroup)) {\n throw new MidwayError(\n `Error group ${errorGroup} is duplicated, please check before adding.`\n );\n } else {\n codeGroup.add(errorGroup);\n }\n const newCodeEnum = {} as Convertable;\n // ERROR => GROUP_10000\n for (const errKey in errorCodeMapping) {\n newCodeEnum[errKey as string] =\n errorGroup.toUpperCase() +\n '_' +\n String(errorCodeMapping[errKey]).toUpperCase();\n }\n return newCodeEnum as ConvertString<T, G>;\n}\n\nexport class MidwayError extends Error {\n code: number | string;\n cause: Error;\n\n constructor(message: string, options?: ErrorOption);\n constructor(message: string, code: string, options?: ErrorOption);\n constructor(message: string, code: any, options?: ErrorOption) {\n super(message);\n if (!code || typeof code === 'object') {\n options = code;\n code = 'MIDWAY_10000';\n }\n this.name = this.constructor.name;\n this.code = code;\n this.cause = options?.cause;\n }\n}\n\nexport type ResOrMessage = string | { message: string };\n\nexport class MidwayHttpError extends MidwayError {\n status: number;\n\n constructor(resOrMessage: ResOrMessage, status: number);\n constructor(\n resOrMessage: ResOrMessage,\n status: number,\n code: string,\n options?: ErrorOption\n );\n constructor(\n resOrMessage: any,\n status: number,\n code?: string,\n options?: ErrorOption\n ) {\n super(\n typeof resOrMessage === 'string' ? resOrMessage : resOrMessage.message,\n code ?? String(status),\n options\n );\n this.status = status;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/error/framework.ts"],"names":[],"mappings":"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","sourcesContent":["import { MidwayError, registerErrorCode } from './base';\nimport { ObjectIdentifier } from '@midwayjs/decorator';\n\nexport const FrameworkErrorEnum = registerErrorCode('midway', {\n UNKNOWN: 10000,\n COMMON: 10001,\n PARAM_TYPE: 10002,\n DEFINITION_NOT_FOUND: 10003,\n FEATURE_NO_LONGER_SUPPORTED: 10004,\n FEATURE_NOT_IMPLEMENTED: 10004,\n MISSING_CONFIG: 10006,\n MISSING_RESOLVER: 10007,\n DUPLICATE_ROUTER: 10008,\n USE_WRONG_METHOD: 10009,\n SINGLETON_INJECT_REQUEST: 10010,\n} as const);\n\nexport class MidwayCommonError extends MidwayError {\n constructor(message: string) {\n super(message, FrameworkErrorEnum.COMMON);\n }\n}\n\nexport class MidwayParameterError extends MidwayError {\n constructor(message?: string) {\n super(message ?? 'Parameter type not match', FrameworkErrorEnum.PARAM_TYPE);\n }\n}\n\nexport class MidwayDefinitionNotFoundError extends MidwayError {\n static readonly type = Symbol.for('#NotFoundError');\n static isClosePrototypeOf(ins: MidwayDefinitionNotFoundError): boolean {\n return ins\n ? ins[MidwayDefinitionNotFoundError.type] ===\n MidwayDefinitionNotFoundError.type\n : false;\n }\n constructor(identifier: ObjectIdentifier) {\n super(\n `${identifier} is not valid in current context`,\n FrameworkErrorEnum.DEFINITION_NOT_FOUND\n );\n this[MidwayDefinitionNotFoundError.type] =\n MidwayDefinitionNotFoundError.type;\n }\n updateErrorMsg(className: string): void {\n const identifier = this.message.split(\n ' is not valid in current context'\n )[0];\n this.message = `${identifier} in class ${className} is not valid in current context`;\n }\n}\n\nexport class MidwayFeatureNoLongerSupportedError extends MidwayError {\n constructor(message?: string) {\n super(\n 'This feature no longer supported \\n' + message,\n FrameworkErrorEnum.FEATURE_NO_LONGER_SUPPORTED\n );\n }\n}\n\nexport class MidwayFeatureNotImplementedError extends MidwayError {\n constructor(message?: string) {\n super(\n 'This feature not implemented \\n' + message,\n FrameworkErrorEnum.FEATURE_NOT_IMPLEMENTED\n );\n }\n}\n\nexport class MidwayConfigMissingError extends MidwayError {\n constructor(configKey: string) {\n super(\n `Can't found config key \"${configKey}\" in your config, please set it first`,\n FrameworkErrorEnum.MISSING_CONFIG\n );\n }\n}\n\nexport class MidwayResolverMissingError extends MidwayError {\n constructor(type: string) {\n super(\n `${type} resolver is not exists!`,\n FrameworkErrorEnum.MISSING_RESOLVER\n );\n }\n}\n\nexport class MidwayDuplicateRouteError extends MidwayError {\n constructor(routerUrl: string, existPos: string, existPosOther: string) {\n super(\n `Duplicate router \"${routerUrl}\" at \"${existPos}\" and \"${existPosOther}\"`,\n FrameworkErrorEnum.DUPLICATE_ROUTER\n );\n }\n}\n\nexport class MidwayUseWrongMethodError extends MidwayError {\n constructor(\n wrongMethod: string,\n replacedMethod: string,\n describeKey?: string\n ) {\n const text = describeKey\n ? `${describeKey} not valid by ${wrongMethod}, Use ${replacedMethod} instead!`\n : `You should not invoked by ${wrongMethod}, Use ${replacedMethod} instead!`;\n super(text, FrameworkErrorEnum.USE_WRONG_METHOD);\n }\n}\n\nexport class MidwaySingletonInjectRequestError extends MidwayError {\n constructor(singletonScopeName: string, requestScopeName: string) {\n const text = `${singletonScopeName} with singleton scope can't implicitly inject ${requestScopeName} with request scope directly, please add \"@Scope(ScopeEnum.Request, { allowDowngrade: true })\" in ${requestScopeName} or use \"ctx.requestContext.getAsync(${requestScopeName})\".`;\n super(text, FrameworkErrorEnum.SINGLETON_INJECT_REQUEST);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/error/http.ts"],"names":[],"mappings":"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","sourcesContent":["import { MidwayHttpError, ResOrMessage } from './base';\n\nexport enum HttpStatus {\n CONTINUE = 100,\n SWITCHING_PROTOCOLS = 101,\n PROCESSING = 102,\n EARLYHINTS = 103,\n OK = 200,\n CREATED = 201,\n ACCEPTED = 202,\n NON_AUTHORITATIVE_INFORMATION = 203,\n NO_CONTENT = 204,\n RESET_CONTENT = 205,\n PARTIAL_CONTENT = 206,\n AMBIGUOUS = 300,\n MOVED_PERMANENTLY = 301,\n FOUND = 302,\n SEE_OTHER = 303,\n NOT_MODIFIED = 304,\n TEMPORARY_REDIRECT = 307,\n PERMANENT_REDIRECT = 308,\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n PAYMENT_REQUIRED = 402,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n NOT_ACCEPTABLE = 406,\n PROXY_AUTHENTICATION_REQUIRED = 407,\n REQUEST_TIMEOUT = 408,\n CONFLICT = 409,\n GONE = 410,\n LENGTH_REQUIRED = 411,\n PRECONDITION_FAILED = 412,\n PAYLOAD_TOO_LARGE = 413,\n URI_TOO_LONG = 414,\n UNSUPPORTED_MEDIA_TYPE = 415,\n REQUESTED_RANGE_NOT_SATISFIABLE = 416,\n EXPECTATION_FAILED = 417,\n I_AM_A_TEAPOT = 418,\n MISDIRECTED = 421,\n UNPROCESSABLE_ENTITY = 422,\n FAILED_DEPENDENCY = 424,\n PRECONDITION_REQUIRED = 428,\n TOO_MANY_REQUESTS = 429,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n HTTP_VERSION_NOT_SUPPORTED = 505,\n}\n\n/**\n * 400 http error, Means that the request can be fulfilled because of the bad syntax.\n */\nexport class BadRequestError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Bad Request') {\n super(resOrMessage, HttpStatus.BAD_REQUEST);\n }\n}\n\n/**\n * 401 http error, Means that the request was legal, but the server is rejecting to answer it. For the use when authentication is required and has failed or has not yet been provided.\n */\nexport class UnauthorizedError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Unauthorized') {\n super(resOrMessage, HttpStatus.UNAUTHORIZED);\n }\n}\n\n/**\n * \t4o4 http error, Means that the requested page cannot be found at the moment, but it may be available again in the future.\n */\nexport class NotFoundError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Not Found') {\n super(resOrMessage, HttpStatus.NOT_FOUND);\n }\n}\n\n/**\n * 403 http error, Means that the request is legal, but the server is rejecting to answer it.\n */\nexport class ForbiddenError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Forbidden') {\n super(resOrMessage, HttpStatus.FORBIDDEN);\n }\n}\n\n/**\n * 406 http error, Means that the server can only generate an answer which the client doesn't accept.\n */\nexport class NotAcceptableError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Not Acceptable') {\n super(resOrMessage, HttpStatus.NOT_ACCEPTABLE);\n }\n}\n\n/**\n * 408 http error, Means that the server timed out waiting for the request.\n */\nexport class RequestTimeoutError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Request Timeout') {\n super(resOrMessage, HttpStatus.REQUEST_TIMEOUT);\n }\n}\n\n/**\n * 409 http error, Means that the request cannot be completed, because of a conflict in the request.\n */\nexport class ConflictError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Conflict') {\n super(resOrMessage, HttpStatus.CONFLICT);\n }\n}\n\n/**\n * 410 http error, Means that the requested page is not available anymore.\n */\nexport class GoneError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Gone') {\n super(resOrMessage, HttpStatus.GONE);\n }\n}\n\n/**\n * 413 http error, Means that the request entity is too large and that's why the server won't accept the request.\n */\nexport class PayloadTooLargeError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Request Entity Too Large') {\n super(resOrMessage, HttpStatus.PAYLOAD_TOO_LARGE);\n }\n}\n\n/**\n * 415 http error, Means that the media type is not supported and that's why the server won't accept the request.\n */\nexport class UnsupportedMediaTypeError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Unsupported Media Type') {\n super(resOrMessage, HttpStatus.UNSUPPORTED_MEDIA_TYPE);\n }\n}\n\nexport class UnprocessableEntityError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Unprocessable Entity') {\n super(resOrMessage, HttpStatus.UNPROCESSABLE_ENTITY);\n }\n}\n\n/**\n * 500 http error, Is a generic error and users receive this error message when there is no more suitable specific message.\n */\nexport class InternalServerErrorError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Internal Server Error') {\n super(resOrMessage, HttpStatus.INTERNAL_SERVER_ERROR);\n }\n}\n\n/**\n * 501 http error, Means that the server doesn't recognize the request method or it lacks the ability to fulfill the request.\n */\nexport class NotImplementedError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Not Implemented') {\n super(resOrMessage, HttpStatus.NOT_IMPLEMENTED);\n }\n}\n\n/**\n * 502 http error, Means that the server was acting as a gateway or proxy and it received an invalid answer from the upstream server.\n */\nexport class BadGatewayError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Bad Gateway') {\n super(resOrMessage, HttpStatus.BAD_GATEWAY);\n }\n}\n\n/**\n * 503 http error, Means that the server is not available now (It may be overloaded or down).\n */\nexport class ServiceUnavailableError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Service Unavailable') {\n super(resOrMessage, HttpStatus.SERVICE_UNAVAILABLE);\n }\n}\n\n/**\n * 504 http error, Means that the server was acting as a gateway or proxy and it didn't get answer on time from the upstream server.\n */\nexport class GatewayTimeoutError extends MidwayHttpError {\n constructor(resOrMessage: ResOrMessage = 'Gateway Timeout') {\n super(resOrMessage, HttpStatus.GATEWAY_TIMEOUT);\n }\n}\n\nexport const httpError = {\n BadRequestError,\n UnauthorizedError,\n NotFoundError,\n ForbiddenError,\n NotAcceptableError,\n RequestTimeoutError,\n ConflictError,\n GoneError,\n PayloadTooLargeError,\n UnsupportedMediaTypeError,\n UnprocessableEntityError,\n InternalServerErrorError,\n NotImplementedError,\n BadGatewayError,\n ServiceUnavailableError,\n GatewayTimeoutError,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/error/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yCAAuB;AACvB,+BAA+C;AAAtC,kGAAA,UAAU,OAAA;AAAE,iGAAA,SAAS,OAAA;AAC9B,8CAA4B","sourcesContent":["export * from './base';\nexport { HttpStatus, httpError } from './http';\nexport * from './framework';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/functional/configuration.ts"],"names":[],"mappings":";;;AAGA,MAAa,uBAAuB;IAOlC,YAAY,OAAsC;QAChD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACrC,CAAC;IAED,YAAY,CACV,iBAEoB,EACpB,GAAwB;QAExB,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;YAC3C,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;SAC5C;aAAM;YACL,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;SACvD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,YAEoB,EACpB,GAAwB;QAExB,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;YACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;SAClC;aAAM;YACL,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CACX,kBAEoB,EACpB,GAAwB;QAExB,IAAI,OAAO,kBAAkB,KAAK,UAAU,EAAE;YAC5C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;SAC9C;aAAM;YACL,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;SACzD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CACJ,WAEoB,EACpB,GAAwB;QAExB,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;YACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAChC;aAAM;YACL,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AA1ED,0DA0EC;AAEM,MAAM,mBAAmB,GAAG,CAAC,OAAsC,EAAE,EAAE;IAC5E,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B","sourcesContent":["import { IMidwayApplication, IMidwayContainer } from '../interface';\nimport { InjectionConfigurationOptions } from '@midwayjs/decorator';\n\nexport class FunctionalConfiguration {\n private readyHandler;\n private stopHandler;\n private configLoadHandler;\n private serverReadyHandler;\n private options: InjectionConfigurationOptions;\n\n constructor(options: InjectionConfigurationOptions) {\n this.options = options;\n this.readyHandler = () => {};\n this.stopHandler = () => {};\n this.configLoadHandler = () => {};\n this.serverReadyHandler = () => {};\n }\n\n onConfigLoad(\n configLoadHandler:\n | ((container: IMidwayContainer, app: IMidwayApplication) => any)\n | IMidwayContainer,\n app?: IMidwayApplication\n ) {\n if (typeof configLoadHandler === 'function') {\n this.configLoadHandler = configLoadHandler;\n } else {\n return this.configLoadHandler(configLoadHandler, app);\n }\n return this;\n }\n\n onReady(\n readyHandler:\n | ((container: IMidwayContainer, app: IMidwayApplication) => void)\n | IMidwayContainer,\n app?: IMidwayApplication\n ) {\n if (typeof readyHandler === 'function') {\n this.readyHandler = readyHandler;\n } else {\n return this.readyHandler(readyHandler, app);\n }\n return this;\n }\n\n onServerReady(\n serverReadyHandler:\n | ((container: IMidwayContainer, app: IMidwayApplication) => void)\n | IMidwayContainer,\n app?: IMidwayApplication\n ) {\n if (typeof serverReadyHandler === 'function') {\n this.serverReadyHandler = serverReadyHandler;\n } else {\n return this.serverReadyHandler(serverReadyHandler, app);\n }\n return this;\n }\n\n onStop(\n stopHandler:\n | ((container: IMidwayContainer, app: IMidwayApplication) => void)\n | IMidwayContainer,\n app?: IMidwayApplication\n ) {\n if (typeof stopHandler === 'function') {\n this.stopHandler = stopHandler;\n } else {\n return this.stopHandler(stopHandler, app);\n }\n return this;\n }\n\n getConfigurationOptions() {\n return this.options;\n }\n}\n\nexport const createConfiguration = (options: InjectionConfigurationOptions) => {\n return new FunctionalConfiguration(options);\n};\n"]}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,sDAAoC;AACpC,+DAAoE;AAA3D,0HAAA,sBAAsB,OAAA;AAC/B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,4DAA0C;AAC1C,qDAAmC;AACnC,gCAUiB;AATf,iGAAA,SAAS,OAAA;AACT,mGAAA,WAAW,OAAA;AACX,qHAAA,6BAA6B,OAAA;AAC7B,4GAAA,oBAAoB,OAAA;AACpB,gHAAA,wBAAwB,OAAA;AACxB,wGAAA,gBAAgB,OAAA;AAChB,oHAAA,4BAA4B,OAAA;AAC5B,oGAAA,YAAY,OAAA;AACZ,sGAAA,cAAc,OAAA;AAEhB,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,sDAAoC;AACpC,wDAAsC;AACtC,8DAA4C;AAC5C,4DAA0C;AAC1C,4DAAiE;AAAxD,oHAAA,mBAAmB,OAAA;AAC5B,yDAA8D;AAArD,oHAAA,mBAAmB,OAAA;AAC5B,mEAAwE;AAA/D,8HAAA,wBAAwB,OAAA;AACjC,mEAAwE;AAA/D,8HAAA,wBAAwB,OAAA;AACjC,yDAA8D;AAArD,oHAAA,mBAAmB,OAAA;AAC5B,+DAAoE;AAA3D,0HAAA,sBAAsB,OAAA;AAC/B,yDAA8D;AAArD,oHAAA,mBAAmB,OAAA;AAC5B,+DAAoE;AAA3D,0HAAA,sBAAsB,OAAA;AAC/B,iEAAsE;AAA7D,4HAAA,uBAAuB,OAAA;AAChC,+DAAoE;AAA3D,0HAAA,sBAAsB,OAAA;AAC/B,4DAA0C;AAC1C,qDAAmC;AACnC,0DAAwC;AACxC,wDAAsC;AACtC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAC3C,sDAAoC;AACpC,yDAAuC;AACvC,8DAA4C;AAC5C,0CAAwB;AACxB,0CAAwB;AAExB;;GAEG;AACH,iDAA0D;AAAjD,gHAAA,mBAAmB,OAAA","sourcesContent":["export * from './interface';\nexport * from './context/container';\nexport { MidwayRequestContainer } from './context/requestContainer';\nexport { BaseFramework } from './baseFramework';\nexport * from './context/providerWrapper';\nexport * from './common/constants';\nexport {\n safelyGet,\n safeRequire,\n delegateTargetPrototypeMethod,\n delegateTargetMethod,\n delegateTargetProperties,\n deprecatedOutput,\n transformRequestObjectByType,\n pathMatching,\n wrapMiddleware,\n} from './util/';\nexport { extend } from './util/extend';\nexport * from './util/pathFileUtil';\nexport * from './util/webRouterParam';\nexport * from './common/webRouterCollector';\nexport * from './common/triggerCollector';\nexport { createConfiguration } from './functional/configuration';\nexport { MidwayConfigService } from './service/configService';\nexport { MidwayEnvironmentService } from './service/environmentService';\nexport { MidwayInformationService } from './service/informationService';\nexport { MidwayLoggerService } from './service/loggerService';\nexport { MidwayFrameworkService } from './service/frameworkService';\nexport { MidwayAspectService } from './service/aspectService';\nexport { MidwayLifeCycleService } from './service/lifeCycleService';\nexport { MidwayMiddlewareService } from './service/middlewareService';\nexport { MidwayDecoratorService } from './service/decoratorService';\nexport * from './service/pipelineService';\nexport * from './util/contextUtil';\nexport * from './common/serviceFactory';\nexport * from './common/dataListener';\nexport * from './common/fileDetector';\nexport * from './common/webGenerator';\nexport * from './common/middlewareManager';\nexport * from './util/pathToRegexp';\nexport * from './common/filterManager';\nexport * from './common/applicationManager';\nexport * from './setup';\nexport * from './error';\n\n/**\n * proxy\n */\nexport { MidwayFrameworkType } from '@midwayjs/decorator';\nexport { ILogger, IMidwayLogger } from '@midwayjs/logger';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":";;;AAiGA,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,kDAA0B,CAAA;IAC1B,8DAAsC,CAAA;IACtC,4DAAoC,CAAA;IACpC,sDAA8B,CAAA;IAC9B,8DAAsC,CAAA;AACxC,CAAC,EANW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAM/B;AAkJY,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,mBAAmB,GAAG,UAAU,CAAC;AACjC,QAAA,eAAe,GAAG,qBAAqB,CAAC;AAqGrD,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oDAA2B,CAAA;IAC3B,wCAAe,CAAA;AACjB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC;AAkPY,QAAA,2BAA2B,GAAG,6BAA6B,CAAC","sourcesContent":["import {\n ObjectIdentifier,\n IManagedInstance,\n IMethodAspect,\n ScopeEnum,\n FrameworkType,\n} from '@midwayjs/decorator';\nimport { ILogger, LoggerOptions } from '@midwayjs/logger';\nimport * as EventEmitter from 'events';\nimport { ContextMiddlewareManager } from './common/middlewareManager';\nimport _default from './config/config.default';\n\nexport type PowerPartial<T> = {\n [U in keyof T]?: T[U] extends {} ? PowerPartial<T[U]> : T[U];\n};\n\nexport type ServiceFactoryConfigOption<OPTIONS> = {\n default?: PowerPartial<OPTIONS>;\n client?: PowerPartial<OPTIONS>;\n clients?: {\n [key: string]: PowerPartial<OPTIONS>;\n };\n};\n\ntype ConfigType<T> = T extends (...args: any[]) => any\n ? Writable<PowerPartial<ReturnType<T>>>\n : Writable<PowerPartial<T>>;\n\n/**\n * Get definition from config\n */\nexport type FileConfigOption<T, K = unknown> = K extends keyof ConfigType<T>\n ? Pick<ConfigType<T>, K>\n : ConfigType<T>;\n\n/**\n * Make object property writeable\n */\nexport type Writable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Lifecycle Definition\n * 生命周期定义\n */\nexport interface ILifeCycle extends Partial<IObjectLifeCycle> {\n onConfigLoad?(\n container: IMidwayContainer,\n mainApp?: IMidwayApplication\n ): Promise<any>;\n onReady?(\n container: IMidwayContainer,\n mainApp?: IMidwayApplication\n ): Promise<void>;\n onServerReady?(\n container: IMidwayContainer,\n mainApp?: IMidwayApplication\n ): Promise<void>;\n onStop?(\n container: IMidwayContainer,\n mainApp?: IMidwayApplication\n ): Promise<void>;\n}\n\nexport type ObjectContext = {\n originName?: string;\n};\n\n/**\n * Abstract Object Factory\n * 对象容器抽象\n */\nexport interface IObjectFactory {\n registry: IObjectDefinitionRegistry;\n get<T>(\n identifier: new (...args) => T,\n args?: any[],\n objectContext?: ObjectContext\n ): T;\n get<T>(\n identifier: ObjectIdentifier,\n args?: any[],\n objectContext?: ObjectContext\n ): T;\n getAsync<T>(\n identifier: new (...args) => T,\n args?: any[],\n objectContext?: ObjectContext\n ): Promise<T>;\n getAsync<T>(\n identifier: ObjectIdentifier,\n args?: any[],\n objectContext?: ObjectContext\n ): Promise<T>;\n}\n\nexport enum ObjectLifeCycleEvent {\n BEFORE_BIND = 'beforeBind',\n BEFORE_CREATED = 'beforeObjectCreated',\n AFTER_CREATED = 'afterObjectCreated',\n AFTER_INIT = 'afterObjectInit',\n BEFORE_DESTROY = 'beforeObjectDestroy',\n}\n\ninterface ObjectLifeCycleOptions {\n context: IMidwayContainer;\n definition: IObjectDefinition;\n}\n\nexport interface ObjectBeforeBindOptions extends ObjectLifeCycleOptions {\n replaceCallback: (newDefinition: IObjectDefinition) => void;\n}\n\nexport interface ObjectBeforeCreatedOptions extends ObjectLifeCycleOptions {\n constructorArgs: any[];\n}\n\nexport interface ObjectCreatedOptions<T> extends ObjectLifeCycleOptions {\n replaceCallback: (ins: T) => void;\n}\n\nexport interface ObjectInitOptions extends ObjectLifeCycleOptions {}\n\nexport interface ObjectBeforeDestroyOptions extends ObjectLifeCycleOptions {}\n\n/**\n * Object Lifecycle\n * 对象生命周期\n */\nexport interface IObjectLifeCycle {\n onBeforeBind(fn: (Clzz: any, options: ObjectBeforeBindOptions) => void);\n onBeforeObjectCreated(\n fn: (Clzz: any, options: ObjectBeforeCreatedOptions) => void\n );\n onObjectCreated<T>(fn: (ins: T, options: ObjectCreatedOptions<T>) => void);\n onObjectInit<T>(fn: (ins: T, options: ObjectInitOptions) => void);\n onBeforeObjectDestroy<T>(\n fn: (ins: T, options: ObjectBeforeDestroyOptions) => void\n );\n}\n\n/**\n * Object Definition\n * 对象描述定义\n */\nexport interface IObjectDefinition {\n namespace?: string;\n creator: IObjectCreator;\n id: string;\n name: string;\n initMethod: string;\n destroyMethod: string;\n constructMethod: string;\n srcPath: string;\n path: any;\n export: string;\n dependsOn: ObjectIdentifier[];\n constructorArgs: IManagedInstance[];\n properties: IProperties;\n scope: ScopeEnum;\n isAsync(): boolean;\n isSingletonScope(): boolean;\n isRequestScope(): boolean;\n hasDependsOn(): boolean;\n hasConstructorArgs(): boolean;\n getAttr(key: ObjectIdentifier): any;\n hasAttr(key: ObjectIdentifier): boolean;\n setAttr(key: ObjectIdentifier, value: any): void;\n // 自定义装饰器的 key、propertyName\n handlerProps: Array<{\n /**\n * decorator property name set\n */\n propertyName: string;\n /**\n * decorator uuid key\n */\n key: string;\n /**\n * custom decorator set metadata\n */\n metadata: any;\n }>;\n createFrom: 'framework' | 'file' | 'module';\n allowDowngrade: boolean;\n}\n\nexport interface IObjectCreator {\n load(): any;\n doConstruct(Clzz: any, args?: any, context?: IMidwayContainer): any;\n doConstructAsync(\n Clzz: any,\n args?: any,\n context?: IMidwayContainer\n ): Promise<any>;\n doInit(obj: any): void;\n doInitAsync(obj: any): Promise<void>;\n doDestroy(obj: any): void;\n doDestroyAsync(obj: any): Promise<void>;\n}\n/**\n * Object Definition Registry\n * 对象定义存储容器\n */\nexport interface IObjectDefinitionRegistry {\n readonly identifiers: ObjectIdentifier[];\n readonly count: number;\n registerDefinition(\n identifier: ObjectIdentifier,\n definition: IObjectDefinition\n );\n getSingletonDefinitionIds(): ObjectIdentifier[];\n getDefinition(identifier: ObjectIdentifier): IObjectDefinition;\n getDefinitionByName(name: string): IObjectDefinition[];\n removeDefinition(identifier: ObjectIdentifier): void;\n hasDefinition(identifier: ObjectIdentifier): boolean;\n clearAll(): void;\n hasObject(identifier: ObjectIdentifier): boolean;\n registerObject(identifier: ObjectIdentifier, target: any);\n getObject(identifier: ObjectIdentifier): any;\n getIdentifierRelation(): IIdentifierRelationShip;\n setIdentifierRelation(identifierRelation: IIdentifierRelationShip);\n}\n/**\n * 属性配置抽象\n */\nexport interface IProperties extends Map<ObjectIdentifier, any> {\n getProperty(key: ObjectIdentifier, defaultValue?: any): any;\n setProperty(key: ObjectIdentifier, value: any): any;\n propertyKeys(): ObjectIdentifier[];\n}\n\n/**\n * 解析内部管理的属性、json、ref等实例的解析器\n * 同时创建这些对象的实际使用的对象\n */\nexport interface IManagedResolver {\n type: string;\n resolve(managed: IManagedInstance): any;\n resolveAsync(managed: IManagedInstance): Promise<any>;\n}\n\nexport interface IManagedResolverFactoryCreateOptions {\n definition: IObjectDefinition;\n args?: any;\n namespace?: string;\n}\n\nexport const REQUEST_CTX_KEY = 'ctx';\nexport const REQUEST_OBJ_CTX_KEY = '_req_ctx';\nexport const HTTP_SERVER_KEY = '_midway_http_server';\n\nexport type HandlerFunction = (\n /**\n * decorator uuid key\n */\n key: string,\n /**\n * decorator set metadata\n */\n meta: any,\n instance: any\n) => any;\n\nexport type MethodHandlerFunction = (options: {\n target: new (...args) => any;\n propertyName: string;\n metadata: any;\n}) => IMethodAspect;\nexport type ParameterHandlerFunction = (options: {\n target: new (...args) => any;\n propertyName: string;\n metadata: any;\n originArgs: Array<any>;\n originParamType: any;\n parameterIndex: number;\n}) => IMethodAspect;\n\nexport interface IIdentifierRelationShip {\n saveClassRelation(module: any, namespace?: string);\n saveFunctionRelation(ObjectIdentifier, uuid);\n hasRelation(id: ObjectIdentifier): boolean;\n getRelation(id: ObjectIdentifier): string;\n}\n\nexport interface IMidwayContainer extends IObjectFactory, IObjectLifeCycle {\n parent: IMidwayContainer;\n identifierMapping: IIdentifierRelationShip;\n objectCreateEventTarget: EventEmitter;\n ready();\n stop(): Promise<void>;\n registerObject(identifier: ObjectIdentifier, target: any);\n load(module?: any);\n hasNamespace(namespace: string): boolean;\n hasDefinition(identifier: ObjectIdentifier);\n hasObject(identifier: ObjectIdentifier);\n bind<T>(target: T, options?: Partial<IObjectDefinition>): void;\n bind<T>(\n identifier: ObjectIdentifier,\n target: T,\n options?: Partial<IObjectDefinition>\n ): void;\n bindClass(exports, options?: Partial<IObjectDefinition>);\n setFileDetector(fileDetector: IFileDetector);\n createChild(): IMidwayContainer;\n /**\n * Set value to app attribute map\n * @param key\n * @param value\n */\n setAttr(key: string, value: any);\n\n /**\n * Get value from app attribute map\n * @param key\n */\n getAttr<T>(key: string): T;\n}\n\n/**\n * @deprecated\n */\nexport type IApplicationContext = IMidwayContainer;\n\nexport interface IFileDetector {\n run(container: IMidwayContainer);\n}\n\nexport interface IConfigService {\n add(configFilePaths: any[]);\n addObject(obj: object);\n load();\n getConfiguration(configKey?: string);\n clearAllConfig();\n}\n\nexport interface IInformationService {\n getPkg(): any;\n getProjectName(): any;\n getBaseDir(): string;\n getAppDir(): string;\n getHome(): string;\n getRoot(): string;\n}\n\nexport interface IEnvironmentService {\n getCurrentEnvironment(): string;\n setCurrentEnvironment(environment: string);\n isDevelopmentEnvironment(): boolean;\n}\n\nexport enum MidwayProcessTypeEnum {\n APPLICATION = 'APPLICATION',\n AGENT = 'AGENT',\n}\n\nexport interface Context {\n /**\n * Custom properties.\n */\n requestContext: IMidwayContainer;\n logger: ILogger;\n getLogger(name?: string): ILogger;\n startTime: number;\n /**\n * Set value to app attribute map\n * @param key\n * @param value\n */\n setAttr(key: string, value: any);\n\n /**\n * Get value from app attribute map\n * @param key\n */\n getAttr<T>(key: string): T;\n}\n\nexport type IMidwayContext<FrameworkContext = unknown> = Context &\n FrameworkContext;\nexport type NextFunction = () => Promise<any>;\n\n/**\n * Common middleware definition\n */\nexport interface IMiddleware<CTX, R, N = unknown> {\n resolve: (app?: IMidwayApplication) => FunctionMiddleware<CTX, R, N> | Promise<FunctionMiddleware<CTX, R, N>>;\n match?: (ctx?: CTX) => boolean;\n ignore?: (ctx?: CTX) => boolean;\n}\nexport type FunctionMiddleware<CTX, R, N = unknown> = N extends true\n ? (req: CTX, res: R, next: N) => any\n : (context: CTX, next: R, options?: any) => any;\nexport type ClassMiddleware<CTX, R, N> = new (...args) => IMiddleware<\n CTX,\n R,\n N\n>;\nexport type CommonMiddleware<CTX, R, N> =\n | ClassMiddleware<CTX, R, N>\n | FunctionMiddleware<CTX, R, N>;\nexport type CommonMiddlewareUnion<CTX, R, N> =\n | CommonMiddleware<CTX, R, N>\n | Array<CommonMiddleware<CTX, R, N>>;\nexport type MiddlewareRespond<CTX, R, N> = (\n context: CTX,\n nextOrRes?: N extends true ? R : NextFunction,\n next?: N\n) => Promise<{ result: any; error: Error | undefined }>;\n\n/**\n * Common Exception Filter definition\n */\nexport interface IFilter<CTX, R, N> {\n catch?(err: Error, ctx: CTX, res?: R, next?: N): any;\n match?(result: any, ctx: CTX, res?: R, next?: N): any;\n}\nexport type CommonFilterUnion<CTX, R, N> =\n | (new (...args) => IFilter<CTX, R, N>)\n | Array<new (...args) => IFilter<CTX, R, N>>;\n\nexport interface IMidwayBaseApplication<CTX extends IMidwayContext> {\n /**\n * Get a base directory for project, with src or dist\n */\n getBaseDir(): string;\n\n /**\n * Get a project root directory, without src or dist\n */\n getAppDir(): string;\n\n /**\n * Get a environment value, read from MIDWAY_SERVER_ENV\n */\n getEnv(): string;\n\n /**\n * Get current framework type in MidwayFrameworkType enum\n */\n getFrameworkType(): FrameworkType;\n\n /**\n * Get current running process type, app or agent, just for egg\n */\n getProcessType(): MidwayProcessTypeEnum;\n\n /**\n * Get global Midway IoC Container\n */\n getApplicationContext(): IMidwayContainer;\n\n /**\n * Get all configuration values or get the specified configuration through parameters\n * @param key config key\n */\n getConfig(key?: string): any;\n\n /**\n * Get default logger object or get the specified logger through parameters\n * @param name\n */\n getLogger(name?: string): ILogger;\n\n /**\n * Get core logger\n */\n getCoreLogger(): ILogger;\n\n /**\n * Create a logger by name and options\n * @param name\n * @param options\n */\n createLogger(name: string, options: LoggerOptions): ILogger;\n\n /**\n * Get project name, just package.json name\n */\n getProjectName(): string;\n\n /**\n * create a context with RequestContainer\n * @param args\n */\n createAnonymousContext(...args): CTX;\n\n /**\n * Set a context logger class to change default context logger format\n * @param BaseContextLoggerClass\n */\n setContextLoggerClass(BaseContextLoggerClass: any): void;\n\n /**\n * Add new value to current config\n * @param obj\n */\n addConfigObject(obj: any);\n\n /**\n * Set value to app attribute map\n * @param key\n * @param value\n */\n setAttr(key: string, value: any);\n\n /**\n * Get value from app attribute map\n * @param key\n */\n getAttr<T>(key: string): T;\n\n /**\n * add global filter to app\n * @param Middleware\n */\n useMiddleware<R, N>(Middleware: CommonMiddlewareUnion<CTX, R, N>): void;\n\n /**\n * get global middleware\n */\n getMiddleware<R, N>(): ContextMiddlewareManager<CTX, R, N>;\n\n /**\n * add exception filter\n * @param Filter\n */\n useFilter<R, N>(Filter: CommonFilterUnion<CTX, R, N>): void;\n}\n\nexport type IMidwayApplication<\n T extends IMidwayContext = IMidwayContext,\n FrameworkApplication = unknown\n> = IMidwayBaseApplication<T> & FrameworkApplication;\n\nexport interface IMidwayBootstrapOptions {\n [customPropertyKey: string]: any;\n baseDir?: string;\n appDir?: string;\n applicationContext?: IMidwayContainer;\n preloadModules?: any[];\n /**\n * @deprecated please use 'imports'\n */\n configurationModule?: any | any[];\n imports?: any | any[];\n moduleDetector?: 'file' | IFileDetector | false;\n logger?: boolean | ILogger;\n ignore?: string[];\n globalConfig?:\n | Array<{ [environmentName: string]: Record<string, any> }>\n | Record<string, any>;\n}\n\nexport interface IConfigurationOptions {\n logger?: ILogger;\n appLogger?: ILogger;\n ContextLoggerClass?: any;\n ContextLoggerApplyLogger?: string;\n}\n\nexport interface IMidwayFramework<\n APP extends IMidwayApplication<CTX>,\n CTX extends IMidwayContext,\n CONFIG extends IConfigurationOptions,\n ResOrNext = unknown,\n Next = unknown\n> {\n app: APP;\n configurationOptions: CONFIG;\n configure(options?: CONFIG);\n isEnable(): boolean;\n initialize(options: Partial<IMidwayBootstrapOptions>): Promise<void>;\n run(): Promise<void>;\n stop(): Promise<void>;\n getApplication(): APP;\n getApplicationContext(): IMidwayContainer;\n getConfiguration(key?: string): any;\n getCurrentEnvironment(): string;\n getFrameworkType(): FrameworkType;\n getFrameworkName(): string;\n getAppDir(): string;\n getBaseDir(): string;\n getLogger(name?: string): ILogger;\n getCoreLogger(): ILogger;\n createLogger(name: string, options: LoggerOptions): ILogger;\n getProjectName(): string;\n getDefaultContextLoggerClass(): any;\n useMiddleware(Middleware: CommonMiddlewareUnion<CTX, ResOrNext, Next>): void;\n getMiddleware(): ContextMiddlewareManager<CTX, ResOrNext, Next>;\n applyMiddleware(\n lastMiddleware?: CommonMiddleware<CTX, ResOrNext, Next>\n ): Promise<MiddlewareRespond<CTX, ResOrNext, Next>>;\n useFilter(Filter: CommonFilterUnion<CTX, ResOrNext, Next>);\n}\n\nexport const MIDWAY_LOGGER_WRITEABLE_DIR = 'MIDWAY_LOGGER_WRITEABLE_DIR';\n\nexport interface MidwayAppInfo {\n pkg: Record<string, any>;\n name: string;\n baseDir: string;\n appDir: string;\n HOME: string;\n root: string;\n env: string;\n}\n\n/**\n * midway global config definition\n */\nexport interface MidwayConfig extends FileConfigOption<typeof _default> {\n [customConfigKey: string]: unknown;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"aspectService.js","sourceRoot":"","sources":["../../src/service/aspectService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ASPECT_KEY,\n AspectMetadata,\n getClassMetadata,\n IMethodAspect,\n Types,\n listModule,\n Provide,\n Scope,\n ScopeEnum,\n JoinPoint,\n} from '@midwayjs/decorator';\nimport * as pm from 'picomatch';\nimport { IMidwayContainer } from '../interface';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayAspectService {\n constructor(readonly applicationContext: IMidwayContainer) {}\n\n /**\n * load aspect method for container\n */\n public async loadAspect() {\n // for aop implementation\n const aspectModules = listModule(ASPECT_KEY);\n // sort for aspect target\n let aspectDataList = [];\n for (const module of aspectModules) {\n const data = getClassMetadata(ASPECT_KEY, module);\n aspectDataList = aspectDataList.concat(\n data.map(el => {\n el.aspectModule = module;\n return el;\n })\n );\n }\n\n // sort priority\n aspectDataList.sort((pre, next) => {\n return (next.priority || 0) - (pre.priority || 0);\n });\n\n for (const aspectData of aspectDataList) {\n // aspect instance init\n const aspectIns = await this.applicationContext.getAsync<IMethodAspect>(\n aspectData.aspectModule\n );\n await this.addAspect(aspectIns, aspectData);\n }\n }\n\n private async addAspect(\n aspectIns: IMethodAspect,\n aspectData: AspectMetadata\n ) {\n const module = aspectData.aspectTarget;\n const names = Object.getOwnPropertyNames(module.prototype);\n const isMatch = aspectData.match ? pm(aspectData.match) : () => true;\n\n for (const name of names) {\n if (name === 'constructor' || !isMatch(name)) {\n continue;\n }\n const descriptor = Object.getOwnPropertyDescriptor(\n module.prototype,\n name\n );\n if (!descriptor || descriptor.writable === false) {\n continue;\n }\n\n this.interceptPrototypeMethod(module, name, aspectIns);\n }\n }\n\n /**\n * intercept class method in prototype\n * @param Clz class you want to intercept\n * @param methodName method name you want to intercept\n * @param aspectObject aspect object, before, round, etc.\n */\n public interceptPrototypeMethod(\n Clz: new (...args) => any,\n methodName: string,\n aspectObject: IMethodAspect | (() => IMethodAspect)\n ) {\n const originMethod = Clz.prototype[methodName];\n\n if (Types.isAsyncFunction(Clz.prototype[methodName])) {\n Clz.prototype[methodName] = async function (...args) {\n let error, result;\n const newProceed = (...args) => {\n return originMethod.apply(this, args);\n };\n const joinPoint = {\n methodName,\n target: this,\n args: args,\n proceed: newProceed,\n } as JoinPoint;\n\n if (typeof aspectObject === 'function') {\n aspectObject = aspectObject();\n }\n\n try {\n await aspectObject.before?.(joinPoint);\n if (aspectObject.around) {\n result = await aspectObject.around(joinPoint);\n } else {\n result = await originMethod.call(this, ...joinPoint.args);\n }\n joinPoint.proceed = undefined;\n const resultTemp = await aspectObject.afterReturn?.(\n joinPoint,\n result\n );\n result = typeof resultTemp === 'undefined' ? result : resultTemp;\n return result;\n } catch (err) {\n joinPoint.proceed = undefined;\n error = err;\n if (aspectObject.afterThrow) {\n await aspectObject.afterThrow(joinPoint, error);\n } else {\n throw err;\n }\n } finally {\n await aspectObject.after?.(joinPoint, result, error);\n }\n };\n } else {\n Clz.prototype[methodName] = function (...args) {\n let error, result;\n const newProceed = (...args) => {\n return originMethod.apply(this, args);\n };\n const joinPoint = {\n methodName,\n target: this,\n args: args,\n proceed: newProceed,\n } as JoinPoint;\n\n if (typeof aspectObject === 'function') {\n aspectObject = aspectObject();\n }\n\n try {\n aspectObject.before?.(joinPoint);\n if (aspectObject.around) {\n result = aspectObject.around(joinPoint);\n } else {\n result = originMethod.call(this, ...joinPoint.args);\n }\n joinPoint.proceed = undefined;\n const resultTemp = aspectObject.afterReturn?.(joinPoint, result);\n result = typeof resultTemp === 'undefined' ? result : resultTemp;\n return result;\n } catch (err) {\n joinPoint.proceed = undefined;\n error = err;\n if (aspectObject.afterThrow) {\n aspectObject.afterThrow(joinPoint, error);\n } else {\n throw err;\n }\n } finally {\n aspectObject.after?.(joinPoint, result, error);\n }\n };\n }\n }\n}\n"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifeCycleService.js","sourceRoot":"","sources":["../../src/service/lifeCycleService.ts"],"names":[],"mappings":"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","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"]}
@@ -1 +0,0 @@
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 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipelineService.js","sourceRoot":"","sources":["../../src/service/pipelineService.ts"],"names":[],"mappings":"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","sourcesContent":["import { IMidwayContainer } from '../interface';\nimport { getProviderName, ObjectIdentifier } from '@midwayjs/decorator';\n\ninterface IPipelineInfo {\n /**\n * 上次执行结果(只有在执行 waterfall 时才有值)\n */\n prevValue?: any;\n /**\n * 当前执行的 valve 类\n */\n current: IValveHandler;\n /**\n * 当前执行的 valve 名称(类名)\n */\n currentName: string;\n /**\n * 之前执行的 valve 类\n */\n prev?: IValveHandler;\n /**\n * 之前执行的 valve 名称(类名)\n */\n prevName?: string;\n /**\n * 后一个将执行的 valve 类\n */\n next?: IValveHandler;\n /**\n * 后一个将执行的 valve 名称(类名)\n */\n nextName?: string;\n}\n\n/**\n * 执行pipeline 时当前上下文存储内容\n */\nexport interface IPipelineContext {\n /**\n * pipeline 执行原始参数\n */\n args: any;\n /**\n * valve 执行信息\n */\n info?: IPipelineInfo;\n /**\n * 用于缓存当前 pipeline 执行中的中间过程参数\n * @param key 关键词\n */\n get(key: string): any;\n /**\n * 用于缓存当前 pipeline 执行中的中间过程参数\n * @param key 关键词\n * @param val 值\n */\n set(key: string, val: any): void;\n /**\n * 返回存在的所有 key\n */\n keys(): string[];\n}\n/**\n * 每个具体的 valve 需要继承实现该接口\n */\nexport interface IValveHandler {\n /**\n * 最终合并结果object中的key,默认为 valve 名称\n */\n alias?: string;\n /**\n * 执行当前 valve\n * @param ctx 上下文\n */\n invoke(ctx: IPipelineContext): Promise<any>;\n}\n/**\n * pipeline 执行参数\n */\nexport interface IPipelineOptions {\n /**\n * pipeline 原始参数\n */\n args?: any;\n /**\n * 这次 pipeline 执行那几个 valve 白名单\n */\n valves?: valvesType;\n}\n/**\n * pipeline 执行返回结果\n */\nexport interface IPipelineResult<T> {\n /**\n * 是否成功\n */\n success: boolean;\n /**\n * 异常信息(如果有则返回)\n */\n error?: {\n /**\n * 异常出在那个 valve 上\n */\n valveName?: string;\n /**\n * 异常信息\n */\n message?: string;\n /**\n * 原始 Error\n */\n error?: Error;\n };\n /**\n * 返回结果\n */\n result: T;\n}\n\nexport interface IPipelineHandler {\n parallel<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>>;\n concat<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>>;\n series<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>>;\n concatSeries<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>>;\n waterfall<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>>;\n}\n\ninterface IValveResult {\n error?: Error;\n valveName: string;\n dataKey: string;\n data: any;\n}\n\ntype valvesType = Array<ObjectIdentifier | (new (...args: any[]) => any)>;\n\n////////////// implements ///////////////////////\n\nexport class PipelineContext implements IPipelineContext {\n args: any;\n info: IPipelineInfo = { current: null, currentName: null };\n\n constructor(args?: any) {\n this.args = args;\n }\n\n private data = new Map<string, any>();\n\n get(key: string): any {\n return this.data.get(key);\n }\n\n set(key: string, val: any): void {\n this.data.set(key, val);\n }\n\n keys(): string[] {\n const keys: string[] = [];\n const iter = this.data.keys();\n for (const k of iter) {\n keys.push(k);\n }\n return keys;\n }\n}\n\nexport class MidwayPipelineService implements IPipelineHandler {\n // 默认的 valves (@Pipeline(['test1', 'test2']))\n constructor(\n readonly applicationContext: IMidwayContainer,\n readonly valves?: valvesType\n ) {}\n\n /**\n * 并行执行,使用 Promise.all\n * @param opts 执行参数\n */\n async parallel<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>> {\n const valves = this.prepareParallelValves(opts);\n const res = await Promise.all(valves);\n return this.packResult<T>(res, false);\n }\n\n /**\n * 并行执行,最终 result 为数组\n * @param opts 执行参数\n */\n async concat<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>> {\n const valves = this.prepareParallelValves(opts);\n const res = await Promise.all(valves);\n return this.packResult<T>(res, true);\n }\n\n /**\n * 串行执行,使用 foreach await\n * @param opts 执行参数\n */\n async series<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>> {\n const valves = this.mergeValves(opts.valves);\n const ctx = new PipelineContext(opts.args);\n\n const result: IPipelineResult<T> = { success: true, result: null };\n const data = {};\n\n const info = {\n prevValue: null,\n current: null,\n currentName: null,\n prev: null,\n prevName: null,\n next: null,\n nextName: null,\n };\n let nextIdx = 1;\n for (const v of valves) {\n info.prev = info.current;\n info.prevName = getName(info.prev);\n info.current = v;\n info.currentName = getName(info.current);\n if (nextIdx < valves.length) {\n info.next = valves[nextIdx];\n info.nextName = getName(info.next);\n } else {\n info.next = undefined;\n info.nextName = undefined;\n }\n nextIdx += 1;\n ctx.info = info;\n\n try {\n const inst: IValveHandler = await this.applicationContext.getAsync(v);\n const tmpValue = await inst.invoke(ctx);\n let key = v;\n if (inst.alias) {\n key = inst.alias;\n }\n data[key] = tmpValue;\n info.prevValue = tmpValue;\n } catch (e) {\n result.success = false;\n result.error = {\n valveName: typeof v === 'string' ? v : v.name,\n message: e.message,\n error: e,\n };\n\n return result;\n }\n }\n result.result = data as any;\n\n return result;\n }\n\n /**\n * 串行执行,使用 foreach await,最终 result 为数组\n * @param opts 执行参数\n */\n async concatSeries<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>> {\n const valves = this.mergeValves(opts.valves);\n const ctx = new PipelineContext(opts.args);\n\n const result: IPipelineResult<T> = { success: true, result: null };\n const data = [];\n\n const info = {\n prevValue: null,\n current: null,\n currentName: null,\n prev: null,\n prevName: null,\n next: null,\n nextName: null,\n };\n let nextIdx = 1;\n for (const v of valves) {\n info.prev = info.current;\n info.prevName = getName(info.prev);\n info.current = v;\n info.currentName = getName(info.current);\n if (nextIdx < valves.length) {\n info.next = valves[nextIdx];\n info.nextName = getName(info.next);\n } else {\n info.next = undefined;\n info.nextName = undefined;\n }\n nextIdx += 1;\n ctx.info = info;\n\n try {\n const inst: IValveHandler = await this.applicationContext.getAsync(v);\n const tmpValue = await inst.invoke(ctx);\n data.push(tmpValue);\n info.prevValue = tmpValue;\n } catch (e) {\n result.success = false;\n result.error = {\n valveName: typeof v === 'string' ? v : v.name,\n message: e.message,\n error: e,\n };\n\n return result;\n }\n }\n result.result = data as any;\n\n return result;\n }\n\n /**\n * 串行执行,但是会把前者执行结果当成入参,传入到下一个执行中去,最后一个执行的 valve 结果会被返回\n * @param opts 执行参数\n */\n async waterfall<T>(opts: IPipelineOptions): Promise<IPipelineResult<T>> {\n const result = await this.concatSeries<T>(opts);\n if (result.success) {\n const data = result.result;\n result.result = data[(data as any).length - 1];\n }\n return result;\n }\n\n private mergeValves(valves: valvesType) {\n let items = [];\n if (this.valves && this.valves.length > 0) {\n items = this.valves;\n }\n\n let newItems = [];\n if (valves) {\n for (const v of valves) {\n if (items.includes(v)) {\n newItems.push(v);\n }\n }\n } else {\n newItems = items;\n }\n\n return newItems;\n }\n\n private prepareParallelValves(\n opts: IPipelineOptions\n ): Array<Promise<IValveResult>> {\n const valves = this.mergeValves(opts.valves);\n const ctx = new PipelineContext(opts.args);\n\n return valves.map(async v => {\n const rt: IValveResult = { valveName: v, dataKey: v, data: null };\n try {\n const inst: IValveHandler = await this.applicationContext.getAsync(v);\n if (inst.alias) {\n rt.dataKey = inst.alias;\n }\n rt.data = await inst.invoke(ctx);\n } catch (e) {\n rt.error = e;\n }\n return rt;\n });\n }\n\n private packResult<T>(res, resultIsArray = false) {\n const result: IPipelineResult<T> = { success: true, result: null };\n let data;\n if (resultIsArray) {\n data = [];\n } else {\n data = {};\n }\n\n for (const r of res) {\n if (r.error) {\n result.success = false;\n result.error = {\n valveName:\n typeof r.valveName === 'string' ? r.valveName : r.valveName.name,\n message: r.error.message,\n error: r.error,\n };\n\n return result;\n } else {\n if (resultIsArray) {\n data.push(r.data);\n } else {\n data[r.dataKey] = r.data;\n }\n }\n }\n result.result = data as any;\n return result;\n }\n}\n\nfunction getName(target) {\n if (target) {\n if (typeof target === 'string') {\n return target;\n } else {\n return getProviderName(target);\n }\n }\n return null;\n}\n"]}
package/dist/setup.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DirectoryFileDetector,\n MidwayConfigService,\n MidwayContainer,\n MidwayEnvironmentService,\n MidwayInformationService,\n IMidwayBootstrapOptions,\n IMidwayContainer,\n MidwayLoggerService,\n MidwayFrameworkService,\n MidwayAspectService,\n MidwayLifeCycleService,\n MidwayMiddlewareService,\n MidwayDecoratorService,\n MidwayApplicationManager,\n safeRequire,\n} from './';\nimport defaultConfig from './config/config.default';\nimport { bindContainer, clearBindContainer } from '@midwayjs/decorator';\nimport * as util from 'util';\nimport { join } from 'path';\nimport { loggers } from '@midwayjs/logger';\nconst debug = util.debuglog('midway:debug');\n\nexport async function initializeGlobalApplicationContext(\n globalOptions: IMidwayBootstrapOptions\n) {\n debug('[core]: start \"initializeGlobalApplicationContext\"');\n const appDir = globalOptions.appDir ?? '';\n const baseDir = globalOptions.baseDir ?? '';\n\n // new container\n const applicationContext =\n globalOptions.applicationContext ?? new MidwayContainer();\n // bind container to decoratorManager\n debug('[core]: delegate module map from decoratorManager');\n bindContainer(applicationContext);\n\n global['MIDWAY_APPLICATION_CONTEXT'] = applicationContext;\n\n // register baseDir and appDir\n applicationContext.registerObject('baseDir', baseDir);\n applicationContext.registerObject('appDir', appDir);\n\n if (globalOptions.moduleDetector !== false) {\n if (\n globalOptions.moduleDetector === undefined ||\n globalOptions.moduleDetector === 'file'\n ) {\n applicationContext.setFileDetector(\n new DirectoryFileDetector({\n loadDir: baseDir,\n ignore: globalOptions.ignore ?? [],\n })\n );\n } else if (globalOptions.moduleDetector) {\n applicationContext.setFileDetector(globalOptions.moduleDetector);\n }\n }\n\n // bind inner service\n applicationContext.bindClass(MidwayEnvironmentService);\n applicationContext.bindClass(MidwayInformationService);\n applicationContext.bindClass(MidwayDecoratorService);\n applicationContext.bindClass(MidwayConfigService);\n applicationContext.bindClass(MidwayAspectService);\n applicationContext.bindClass(MidwayLoggerService);\n applicationContext.bindClass(MidwayFrameworkService);\n applicationContext.bindClass(MidwayMiddlewareService);\n applicationContext.bindClass(MidwayLifeCycleService);\n applicationContext.bindClass(MidwayApplicationManager);\n\n // bind preload module\n if (globalOptions.preloadModules && globalOptions.preloadModules.length) {\n for (const preloadModule of globalOptions.preloadModules) {\n applicationContext.bindClass(preloadModule);\n }\n }\n\n // init default config\n const configService = await applicationContext.getAsync(MidwayConfigService);\n configService.add([\n {\n default: defaultConfig,\n },\n ]);\n\n // init aop support\n await applicationContext.getAsync(MidwayAspectService, [applicationContext]);\n\n // init decorator service\n await applicationContext.getAsync(MidwayDecoratorService, [\n applicationContext,\n ]);\n\n if (!globalOptions.imports) {\n globalOptions.imports = [\n safeRequire(join(globalOptions.baseDir, 'configuration')),\n ];\n }\n\n for (const configurationModule of []\n .concat(globalOptions.imports)\n .concat(globalOptions.configurationModule)) {\n // load configuration and component\n applicationContext.load(configurationModule);\n }\n\n // bind user code module\n await applicationContext.ready();\n\n if (globalOptions.globalConfig) {\n if (Array.isArray(globalOptions.globalConfig)) {\n configService.add(globalOptions.globalConfig);\n } else {\n configService.addObject(globalOptions.globalConfig);\n }\n }\n\n // merge config\n await configService.load();\n debug('[core]: Current config = %j', configService.getConfiguration());\n\n // init logger\n await applicationContext.getAsync(MidwayLoggerService, [applicationContext]);\n\n // middleware support\n await applicationContext.getAsync(MidwayMiddlewareService, [\n applicationContext,\n ]);\n\n // framework/config/plugin/logger/app decorator support\n await applicationContext.getAsync(MidwayFrameworkService, [\n applicationContext,\n globalOptions,\n ]);\n\n // lifecycle support\n await applicationContext.getAsync(MidwayLifeCycleService, [\n applicationContext,\n ]);\n\n return applicationContext;\n}\n\nexport async function destroyGlobalApplicationContext(\n applicationContext: IMidwayContainer\n) {\n // stop lifecycle\n const lifecycleService = await applicationContext.getAsync(\n MidwayLifeCycleService\n );\n await lifecycleService.stop();\n // stop container\n await applicationContext.stop();\n clearBindContainer();\n loggers.close();\n global['MIDWAY_APPLICATION_CONTEXT'] = undefined;\n global['MIDWAY_MAIN_FRAMEWORK'] = undefined;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextUtil.js","sourceRoot":"","sources":["../../src/util/contextUtil.ts"],"names":[],"mappings":";;;AAQO,MAAM,4BAA4B,GAAG,GAAqB,EAAE;IACjE,OAAO,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAC9C,CAAC,CAAC;AAFW,QAAA,4BAA4B,gCAEvC;AAEK,MAAM,uBAAuB,GAAG,GAIC,EAAE;IACxC,OAAO,MAAM,CAAC,uBAAuB,CAAuC,CAAC;AAC/E,CAAC,CAAC;AANW,QAAA,uBAAuB,2BAMlC;AAEK,MAAM,iBAAiB,GAAG,GAAwC,EAAE;IACzE,OAAO,IAAA,+BAAuB,GAAE,CAAC,cAAc,EAAS,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B","sourcesContent":["import {\n IConfigurationOptions,\n IMidwayApplication,\n IMidwayContainer,\n IMidwayFramework,\n IMidwayContext,\n} from '../interface';\n\nexport const getCurrentApplicationContext = (): IMidwayContainer => {\n return global['MIDWAY_APPLICATION_CONTEXT'];\n};\n\nexport const getCurrentMainFramework = <\n APP extends IMidwayApplication<CTX>,\n CTX extends IMidwayContext,\n CONFIG extends IConfigurationOptions\n>(): IMidwayFramework<APP, CTX, CONFIG> => {\n return global['MIDWAY_MAIN_FRAMEWORK'] as IMidwayFramework<APP, CTX, CONFIG>;\n};\n\nexport const getCurrentMainApp = <APP extends IMidwayApplication>(): APP => {\n return getCurrentMainFramework().getApplication() as APP;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/util/extend.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,mDAA4C;AAE5C,SAAgB,MAAM,CAAC,GAAG,IAAI;IAC5B,IAAI,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC;IACpC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,+BAA+B;IAC/B,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;QAC/B,IAAI,GAAG,MAAM,CAAC;QACd,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,kCAAkC;QAClC,CAAC,GAAG,CAAC,CAAC;KACP;SAAM,IACL,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC;QAC5D,MAAM,IAAI,IAAI,EACd;QACA,MAAM,GAAG,EAAE,CAAC;KACb;IAED,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QACtB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,2CAA2C;QAC3C,IAAI,OAAO,IAAI,IAAI;YAAE,SAAS;QAE9B,yBAAyB;QACzB,KAAK,IAAI,IAAI,OAAO,EAAE;YACpB,IAAI,IAAI,KAAK,WAAW;gBAAE,SAAS;YAEnC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAErB,4BAA4B;YAC5B,IAAI,MAAM,KAAK,IAAI;gBAAE,SAAS;YAE9B,yCAAyC;YACzC,IAAI,IAAI,IAAI,IAAI,IAAI,iBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gBAC7C,KAAK,GAAG,GAAG,IAAI,iBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,0CAA0C;gBAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAEzC,kCAAkC;aACnC;iBAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;gBACtC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;aACrB;SACF;KACF;IAED,6BAA6B;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAlDD,wBAkDC","sourcesContent":["/**\n * fork from https://github.com/eggjs/extend2\n */\nimport { Types } from '@midwayjs/decorator';\n\nexport function extend(...args) {\n let options, name, src, copy, clone;\n let target = args[0];\n let i = 1;\n const length = args.length;\n let deep = false;\n\n // Handle a deep copy situation\n if (typeof target === 'boolean') {\n deep = target;\n target = args[1] || {};\n // skip the boolean and the target\n i = 2;\n } else if (\n (typeof target !== 'object' && typeof target !== 'function') ||\n target == null\n ) {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = args[i];\n // Only deal with non-null/undefined values\n if (options == null) continue;\n\n // Extend the base object\n for (name in options) {\n if (name === '__proto__') continue;\n\n src = target[name];\n copy = options[name];\n\n // Prevent never-ending loop\n if (target === copy) continue;\n\n // Recurse if we're merging plain objects\n if (deep && copy && Types.isPlainObject(copy)) {\n clone = src && Types.isPlainObject(src) ? src : {};\n // Never move original objects, clone them\n target[name] = extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n target[name] = copy;\n }\n }\n }\n\n // Return the modified object\n return target;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname, resolve, sep, posix } from 'path';\nimport { readFileSync } from 'fs';\nimport { debuglog } from 'util';\nimport * as transformer from 'class-transformer';\nimport { pathToRegexp } from './pathToRegexp';\nimport { MidwayCommonError } from '../error';\nimport { FunctionMiddleware } from '../interface';\n\nconst debug = debuglog('midway:container:util');\n\n/**\n * @since 2.0.0\n * @param env\n */\nexport const isDevelopmentEnvironment = env => {\n return ['local', 'test', 'unittest'].includes(env);\n};\n\n/**\n * @since 2.0.0\n */\nexport const getCurrentEnvironment = () => {\n return process.env['MIDWAY_SERVER_ENV'] || process.env['NODE_ENV'] || 'prod';\n};\n\n/**\n * @param p\n * @param enabledCache\n * @since 2.0.0\n */\nexport const safeRequire = (p, enabledCache = true) => {\n if (p.startsWith(`.${sep}`) || p.startsWith(`..${sep}`)) {\n p = resolve(dirname(module.parent.filename), p);\n }\n try {\n if (enabledCache) {\n return require(p);\n } else {\n const content = readFileSync(p, {\n encoding: 'utf-8',\n });\n return JSON.parse(content);\n }\n } catch (err) {\n debug(`SafeRequire Warning, message = ${err.message}`);\n return undefined;\n }\n};\n\n/**\n * safelyGet(['a','b'],{a: {b: 2}}) // => 2\n * safelyGet(['a','b'],{c: {b: 2}}) // => undefined\n * safelyGet(['a','1'],{a: {\"1\": 2}}) // => 2\n * safelyGet(['a','1'],{a: {b: 2}}) // => undefined\n * safelyGet('a.b',{a: {b: 2}}) // => 2\n * safelyGet('a.b',{c: {b: 2}}) // => undefined\n * @since 2.0.0\n */\nexport function safelyGet(\n list: string | string[],\n obj?: Record<string, unknown>\n): any {\n if (arguments.length === 1) {\n return (_obj: Record<string, unknown>) => safelyGet(list, _obj);\n }\n\n if (typeof obj === 'undefined' || typeof obj !== 'object' || obj === null) {\n return void 0;\n }\n const pathArrValue = typeof list === 'string' ? list.split('.') : list;\n let willReturn: any = obj;\n\n for (const key of pathArrValue) {\n if (typeof willReturn === 'undefined' || willReturn === null) {\n return void 0;\n } else if (typeof willReturn !== 'object') {\n return void 0;\n }\n willReturn = willReturn[key];\n }\n\n return willReturn;\n}\n\n/**\n * 剔除 @ 符号\n * @param provideId provideId\n * @since 2.0.0\n */\nexport function parsePrefix(provideId: string) {\n if (provideId.includes('@')) {\n return provideId.substr(1);\n }\n return provideId;\n}\n\nexport function getUserHome() {\n return process.env[process.platform === 'win32' ? 'USERPROFILE' : 'HOME'];\n}\n\nexport function joinURLPath(...strArray) {\n strArray = strArray.filter(item => !!item);\n if (strArray.length === 0) {\n return '';\n }\n let p = posix.join(...strArray);\n p = p.replace(/\\/+$/, '');\n if (!/^\\//.test(p)) {\n p = '/' + p;\n }\n return p;\n}\n\n/**\n * 代理目标所有的原型方法,不包括构造器和内部隐藏方法\n * @param derivedCtor\n * @param constructors\n * @since 2.0.0\n */\nexport function delegateTargetPrototypeMethod(\n derivedCtor: any,\n constructors: any[]\n) {\n constructors.forEach(baseCtor => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {\n if (name !== 'constructor' && !/^_/.test(name)) {\n derivedCtor.prototype[name] = function (...args) {\n return this.instance[name](...args);\n };\n }\n });\n });\n}\n\n/**\n * 代理目标原型上的特定方法\n * @param derivedCtor\n * @param methods\n * @since 2.0.0\n */\nexport function delegateTargetMethod(derivedCtor: any, methods: string[]) {\n methods.forEach(name => {\n derivedCtor.prototype[name] = function (...args) {\n return this.instance[name](...args);\n };\n });\n}\n\n/**\n * 代理目标原型属性\n * @param derivedCtor\n * @param properties\n * @since 2.0.0\n */\nexport function delegateTargetProperties(\n derivedCtor: any,\n properties: string[]\n) {\n properties.forEach(name => {\n Object.defineProperty(derivedCtor.prototype, name, {\n get() {\n return this.instance[name];\n },\n });\n });\n}\n\n/**\n * 代理目标原型属性\n * @since 2.0.0\n * @param timestamp\n */\nexport const getCurrentDateString = (timestamp: number = Date.now()) => {\n const d = new Date(timestamp);\n return `${d.getFullYear()}-${(d.getMonth() + 1)\n .toString()\n .padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;\n};\n\n/**\n *\n * @param message\n * @since 3.0.0\n */\nexport const deprecatedOutput = (message: string) => {\n console.warn('DeprecationWarning: ' + message);\n};\n\n/**\n * transform request object to definition type\n *\n * @param originValue\n * @param targetType\n * @since 3.0.0\n */\nexport const transformRequestObjectByType = (originValue: any, targetType?) => {\n if (\n targetType === undefined ||\n targetType === null ||\n targetType === Object\n ) {\n return originValue;\n }\n\n switch (targetType) {\n case Number:\n return Number(originValue);\n case String:\n return String(originValue);\n case Boolean:\n if (originValue === '0' || originValue === 'false') {\n return false;\n }\n return Boolean(originValue);\n default:\n if (originValue instanceof targetType) {\n return originValue;\n } else {\n const transformToInstance =\n transformer['plainToClass'] || transformer['plainToInstance'];\n return transformToInstance(\n targetType,\n originValue\n ) as typeof originValue;\n }\n }\n};\n\nexport function toPathMatch(pattern) {\n if (typeof pattern === 'boolean') {\n return ctx => pattern;\n }\n if (typeof pattern === 'string') {\n const reg = pathToRegexp(pattern, [], { end: false });\n if (reg.global) reg.lastIndex = 0;\n return ctx => reg.test(ctx.path);\n }\n if (pattern instanceof RegExp) {\n return ctx => {\n if (pattern.global) pattern.lastIndex = 0;\n return pattern.test(ctx.path);\n };\n }\n if (typeof pattern === 'function') return pattern;\n if (Array.isArray(pattern)) {\n const matchs = pattern.map(item => toPathMatch(item));\n return ctx => matchs.some(match => match(ctx));\n }\n throw new MidwayCommonError(\n 'match/ignore pattern must be RegExp, Array or String, but got ' + pattern\n );\n}\n\nexport function pathMatching(options) {\n options = options || {};\n if (options.match && options.ignore)\n throw new MidwayCommonError(\n 'options.match and options.ignore can not both present'\n );\n if (!options.match && !options.ignore) return () => true;\n\n const matchFn = options.match\n ? toPathMatch(options.match)\n : toPathMatch(options.ignore);\n\n return function pathMatch(ctx?) {\n const matched = matchFn(ctx);\n return options.match ? matched : !matched;\n };\n}\n\n/**\n * wrap function middleware with match and ignore\n * @param mw\n * @param options\n */\nexport function wrapMiddleware(mw: FunctionMiddleware<any, any>, options) {\n // support options.enable\n if (options.enable === false) return null;\n\n // support options.match and options.ignore\n if (!options.match && !options.ignore) return mw;\n const match = pathMatching(options);\n\n const fn = (ctx, next) => {\n if (!match(ctx)) return next();\n return mw(ctx, next);\n };\n fn._name = (mw as any)._name + 'middlewareWrapper';\n return fn;\n}\n\nfunction isOwnPropertyWritable(obj: any, prop: string): boolean {\n if (obj == null) return false;\n const type = typeof obj;\n if (type !== 'object' && type !== 'function') return false;\n return !!Object.getOwnPropertyDescriptor(obj, prop);\n}\n\nexport function isIncludeProperty(obj: any, prop: string): boolean {\n while (obj) {\n if (isOwnPropertyWritable(obj, prop)) return true;\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pathFileUtil.js","sourceRoot":"","sources":["../../src/util/pathFileUtil.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,2BAAkC;AAErB,QAAA,YAAY,GAAG;IAC1B,MAAM,CAAC,CAAC;QACN,6CAA6C;QAC7C,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,GAAW;QAClC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QACD,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC;IACtC,CAAC;IAED,kBAAkB,CAAC,QAAa,EAAE,QAAyB;QACzD,OAAO,OAAO,QAAQ,KAAK,QAAQ;YACjC,CAAC,CAAC,IAAA,iBAAY,EAAC,QAAQ,EAAE;gBACrB,QAAQ;aACT,CAAC;YACJ,CAAC,CAAC,QAAQ,CAAC;IACf,CAAC;CACF,CAAC","sourcesContent":["import { extname } from 'path';\nimport { readFileSync } from 'fs';\n\nexport const PathFileUtil = {\n isPath(p): boolean {\n // eslint-disable-next-line no-useless-escape\n if (/(^[\\.\\/])|:|\\\\/.test(p)) {\n return true;\n }\n return false;\n },\n\n isPathEqual(one: string, two: string) {\n if (!one || !two) {\n return false;\n }\n const ext = extname(one);\n return one.replace(ext, '') === two;\n },\n\n getFileContentSync(filePath: any, encoding?: BufferEncoding) {\n return typeof filePath === 'string'\n ? readFileSync(filePath, {\n encoding,\n })\n : filePath;\n },\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pathToRegexp.js","sourceRoot":"","sources":["../../src/util/pathToRegexp.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * this file fork from path-to-regexp package v1.8.0\n */\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nconst PATH_REGEXP = new RegExp(\n [\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))',\n ].join('|'),\n 'g'\n);\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse(str, options) {\n const tokens = [];\n let key = 0;\n let index = 0;\n let path = '';\n const defaultDelimiter = (options && options.delimiter) || '/';\n let res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n const m = res[0];\n const escaped = res[1];\n const offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue;\n }\n\n const next = str[index];\n const prefix = res[2];\n const name = res[3];\n const capture = res[4];\n const group = res[5];\n const modifier = res[6];\n const asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n const partial = prefix != null && next != null && next !== prefix;\n const repeat = modifier === '+' || modifier === '*';\n const optional = modifier === '?' || modifier === '*';\n const delimiter = res[2] || defaultDelimiter;\n const pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern\n ? escapeGroup(pattern)\n : asterisk\n ? '.*'\n : '[^' + escapeString(delimiter) + ']+?',\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens;\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup(group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys(re, keys) {\n re.keys = keys;\n return re;\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags(options) {\n return options && options.sensitive ? '' : 'i';\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp(path, keys) {\n // Use a negative lookahead to match only capturing groups.\n const groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (let i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null,\n });\n }\n }\n\n return attachKeys(path, keys);\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp(path, keys, options) {\n const parts = [];\n\n for (let i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n const regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys);\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options);\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp(tokens, keys, options) {\n if (!Array.isArray(keys)) {\n options = /** @type {!Object} */ keys || options;\n keys = [];\n }\n\n options = options || {};\n\n const strict = options.strict;\n const end = options.end !== false;\n let route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n const prefix = escapeString(token.prefix);\n let capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n const delimiter = escapeString(options.delimiter || '/');\n const endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route =\n (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) +\n '(?:' +\n delimiter +\n '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys);\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nexport function pathToRegexp(path, keys, options) {\n if (!Array.isArray(keys)) {\n options = /** @type {!Object} */ keys || options;\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ keys);\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(\n /** @type {!Array} */ path,\n /** @type {!Array} */ keys,\n options\n );\n }\n\n return stringToRegexp(\n /** @type {string} */ path,\n /** @type {!Array} */ keys,\n options\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webRouterParam.js","sourceRoot":"","sources":["../../src/util/webRouterParam.ts"],"names":[],"mappings":"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","sourcesContent":["import { ALL, RouteParamTypes } from '@midwayjs/decorator';\nimport { transformRequestObjectByType } from './index';\n\nexport const extractKoaLikeValue = (key, data, paramType?) => {\n if (ALL === data) {\n data = undefined;\n }\n return function (ctx, next) {\n switch (key) {\n case RouteParamTypes.NEXT:\n return next;\n case RouteParamTypes.BODY:\n return transformRequestObjectByType(\n data && ctx.request.body ? ctx.request.body[data] : ctx.request.body,\n paramType\n );\n case RouteParamTypes.PARAM:\n return transformRequestObjectByType(\n data ? ctx.params[data] : ctx.params,\n paramType\n );\n case RouteParamTypes.QUERY:\n return transformRequestObjectByType(\n data ? ctx.query[data] : ctx.query,\n paramType\n );\n case RouteParamTypes.HEADERS:\n return transformRequestObjectByType(\n data ? ctx.get(data) : ctx.headers,\n paramType\n );\n case RouteParamTypes.SESSION:\n return transformRequestObjectByType(\n data ? ctx.session[data] : ctx.session,\n paramType\n );\n case RouteParamTypes.FILESTREAM:\n if (ctx.getFileStream) {\n return ctx.getFileStream(data);\n } else if (ctx.files) {\n return ctx.files[0];\n } else {\n return undefined;\n }\n case RouteParamTypes.FILESSTREAM:\n if (ctx.multipart) {\n return ctx.multipart(data);\n } else if (ctx.files) {\n return ctx.files;\n } else {\n return undefined;\n }\n case RouteParamTypes.REQUEST_PATH:\n return ctx['path'];\n case RouteParamTypes.REQUEST_IP:\n return ctx['ip'];\n case RouteParamTypes.QUERIES:\n if (ctx.queries) {\n return transformRequestObjectByType(\n data ? ctx.queries[data] : ctx.queries,\n paramType\n );\n } else {\n return transformRequestObjectByType(\n data ? ctx.query[data] : ctx.query,\n paramType\n );\n }\n case RouteParamTypes.FIELDS:\n return data ? ctx.fields[data] : ctx.fields;\n default:\n return null;\n }\n };\n};\n\nexport const extractExpressLikeValue = (key, data, paramType?) => {\n if (ALL === data) {\n data = undefined;\n }\n return function (req, res, next) {\n switch (key) {\n case RouteParamTypes.NEXT:\n return next;\n case RouteParamTypes.BODY:\n return transformRequestObjectByType(\n data && req.body ? req.body[data] : req.body,\n paramType\n );\n case RouteParamTypes.PARAM:\n return transformRequestObjectByType(\n data ? req.params[data] : req.params,\n paramType\n );\n case RouteParamTypes.QUERY:\n return transformRequestObjectByType(\n data ? req.query[data] : req.query,\n paramType\n );\n case RouteParamTypes.HEADERS:\n return transformRequestObjectByType(\n data ? req.get(data) : req.headers,\n paramType\n );\n case RouteParamTypes.SESSION:\n return transformRequestObjectByType(\n data ? req.session[data] : req.session,\n paramType\n );\n case RouteParamTypes.FILESTREAM:\n return req.files ? req.files[0] : undefined;\n case RouteParamTypes.FILESSTREAM:\n return req.files;\n case RouteParamTypes.REQUEST_PATH:\n return req['baseUrl'];\n case RouteParamTypes.REQUEST_IP:\n return req['ip'];\n case RouteParamTypes.QUERIES:\n if (req.queries) {\n return transformRequestObjectByType(\n data ? req.queries[data] : req.queries,\n paramType\n );\n } else {\n return transformRequestObjectByType(\n data ? req.query[data] : req.query,\n paramType\n );\n }\n case RouteParamTypes.FIELDS:\n return data ? req.fields[data] : req.fields;\n default:\n return null;\n }\n };\n};\n"]}