@midwayjs/core 3.0.2 → 3.0.7

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 (56) hide show
  1. package/dist/baseFramework.d.ts +3 -5
  2. package/dist/baseFramework.js +8 -17
  3. package/dist/context/container.js +3 -3
  4. package/dist/context/managedResolverFactory.d.ts +2 -1
  5. package/dist/context/managedResolverFactory.js +14 -0
  6. package/dist/error/framework.d.ts +4 -0
  7. package/dist/error/framework.js +9 -1
  8. package/dist/interface.d.ts +4 -5
  9. package/dist/service/lifeCycleService.js +4 -4
  10. package/dist/setup.js +3 -2
  11. package/package.json +6 -7
  12. package/dist/baseFramework.js.map +0 -1
  13. package/dist/common/applicationManager.js.map +0 -1
  14. package/dist/common/constants.js.map +0 -1
  15. package/dist/common/dataListener.js.map +0 -1
  16. package/dist/common/fileDetector.js.map +0 -1
  17. package/dist/common/filterManager.js.map +0 -1
  18. package/dist/common/middlewareManager.js.map +0 -1
  19. package/dist/common/serviceFactory.js.map +0 -1
  20. package/dist/common/triggerCollector.js.map +0 -1
  21. package/dist/common/webGenerator.js.map +0 -1
  22. package/dist/common/webRouterCollector.js.map +0 -1
  23. package/dist/config/config.default.js.map +0 -1
  24. package/dist/context/container.js.map +0 -1
  25. package/dist/context/definitionRegistry.js.map +0 -1
  26. package/dist/context/managedResolverFactory.js.map +0 -1
  27. package/dist/context/providerWrapper.js.map +0 -1
  28. package/dist/context/requestContainer.js.map +0 -1
  29. package/dist/definitions/functionDefinition.js.map +0 -1
  30. package/dist/definitions/objectCreator.js.map +0 -1
  31. package/dist/definitions/objectDefinition.js.map +0 -1
  32. package/dist/definitions/properties.js.map +0 -1
  33. package/dist/error/base.js.map +0 -1
  34. package/dist/error/framework.js.map +0 -1
  35. package/dist/error/http.js.map +0 -1
  36. package/dist/error/index.js.map +0 -1
  37. package/dist/functional/configuration.js.map +0 -1
  38. package/dist/index.js.map +0 -1
  39. package/dist/interface.js.map +0 -1
  40. package/dist/service/aspectService.js.map +0 -1
  41. package/dist/service/configService.js.map +0 -1
  42. package/dist/service/decoratorService.js.map +0 -1
  43. package/dist/service/environmentService.js.map +0 -1
  44. package/dist/service/frameworkService.js.map +0 -1
  45. package/dist/service/informationService.js.map +0 -1
  46. package/dist/service/lifeCycleService.js.map +0 -1
  47. package/dist/service/loggerService.js.map +0 -1
  48. package/dist/service/middlewareService.js.map +0 -1
  49. package/dist/service/pipelineService.js.map +0 -1
  50. package/dist/setup.js.map +0 -1
  51. package/dist/util/contextUtil.js.map +0 -1
  52. package/dist/util/extend.js.map +0 -1
  53. package/dist/util/index.js.map +0 -1
  54. package/dist/util/pathFileUtil.js.map +0 -1
  55. package/dist/util/pathToRegexp.js.map +0 -1
  56. package/dist/util/webRouterParam.js.map +0 -1
@@ -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":"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","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"]}