@tsed/di 8.11.0 → 8.11.2-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/common/constants/constants.js +0 -1
- package/lib/esm/common/decorators/autoInjectable.js +0 -1
- package/lib/esm/common/decorators/configuration.js +0 -1
- package/lib/esm/common/decorators/constant.js +0 -1
- package/lib/esm/common/decorators/controller.js +0 -1
- package/lib/esm/common/decorators/inject.js +0 -1
- package/lib/esm/common/decorators/injectable.js +0 -1
- package/lib/esm/common/decorators/intercept.js +0 -1
- package/lib/esm/common/decorators/interceptor.js +0 -1
- package/lib/esm/common/decorators/lazyInject.js +0 -1
- package/lib/esm/common/decorators/module.js +0 -1
- package/lib/esm/common/decorators/opts.js +0 -1
- package/lib/esm/common/decorators/overrideProvider.js +0 -1
- package/lib/esm/common/decorators/scope.js +0 -1
- package/lib/esm/common/decorators/service.js +0 -1
- package/lib/esm/common/decorators/useOpts.js +0 -1
- package/lib/esm/common/decorators/value.js +0 -1
- package/lib/esm/common/domain/Container.js +0 -1
- package/lib/esm/common/domain/ControllerProvider.js +0 -1
- package/lib/esm/common/domain/InjectablePropertyType.js +0 -1
- package/lib/esm/common/domain/LocalsContainer.js +0 -1
- package/lib/esm/common/domain/Provider.js +0 -1
- package/lib/esm/common/domain/ProviderScope.js +0 -1
- package/lib/esm/common/domain/ProviderType.js +0 -1
- package/lib/esm/common/errors/InjectionError.js +0 -1
- package/lib/esm/common/errors/InvalidPropertyTokenError.js +0 -1
- package/lib/esm/common/fn/configuration.js +0 -1
- package/lib/esm/common/fn/constant.js +0 -1
- package/lib/esm/common/fn/inject.js +0 -1
- package/lib/esm/common/fn/injectMany.js +0 -1
- package/lib/esm/common/fn/injectable.js +0 -1
- package/lib/esm/common/fn/injector.js +0 -1
- package/lib/esm/common/fn/lazyInject.js +0 -1
- package/lib/esm/common/fn/localsContainer.js +0 -1
- package/lib/esm/common/fn/logger.js +0 -1
- package/lib/esm/common/fn/refValue.js +0 -1
- package/lib/esm/common/index.js +0 -1
- package/lib/esm/common/interfaces/DIConfigurationOptions.js +0 -1
- package/lib/esm/common/interfaces/DILogger.js +0 -1
- package/lib/esm/common/interfaces/DILoggerOptions.js +0 -1
- package/lib/esm/common/interfaces/ImportTokenProviderOpts.js +0 -1
- package/lib/esm/common/interfaces/InterceptorContext.js +0 -1
- package/lib/esm/common/interfaces/InterceptorMethods.js +0 -1
- package/lib/esm/common/interfaces/InvokeOptions.js +0 -1
- package/lib/esm/common/interfaces/OnDestroy.js +0 -1
- package/lib/esm/common/interfaces/OnInit.js +0 -1
- package/lib/esm/common/interfaces/ProviderOpts.js +0 -1
- package/lib/esm/common/interfaces/RegistrySettings.js +0 -1
- package/lib/esm/common/interfaces/ResolvedInvokeOptions.js +0 -1
- package/lib/esm/common/interfaces/TokenProvider.js +0 -1
- package/lib/esm/common/interfaces/TokenRoute.js +0 -1
- package/lib/esm/common/registries/GlobalProviders.js +0 -1
- package/lib/esm/common/registries/ProviderRegistry.js +0 -1
- package/lib/esm/common/services/DIConfiguration.js +0 -1
- package/lib/esm/common/services/DILogger.js +0 -1
- package/lib/esm/common/services/InjectorService.js +0 -1
- package/lib/esm/common/utils/colors.js +0 -1
- package/lib/esm/common/utils/createContainer.js +0 -1
- package/lib/esm/common/utils/discoverHooks.js +0 -1
- package/lib/esm/common/utils/getConfiguration.js +0 -1
- package/lib/esm/common/utils/getConstructorDependencies.js +0 -1
- package/lib/esm/common/utils/providerBuilder.js +0 -1
- package/lib/esm/index.js +0 -1
- package/lib/esm/node/decorators/injectContext.js +0 -1
- package/lib/esm/node/domain/ContextLogger.js +0 -1
- package/lib/esm/node/domain/DIContext.js +0 -1
- package/lib/esm/node/fn/context.js +0 -1
- package/lib/esm/node/fn/contextLogger.js +0 -1
- package/lib/esm/node/index.js +0 -1
- package/lib/esm/node/interfaces/AlterRunInContext.js +0 -1
- package/lib/esm/node/services/DILogger.js +0 -1
- package/lib/esm/node/services/DITest.js +0 -1
- package/lib/esm/node/utils/asyncHookContext.js +0 -1
- package/lib/esm/node/utils/attachLogger.js +0 -1
- package/lib/esm/node/utils/setLoggerConfiguration.js +0 -1
- package/lib/esm/node/utils/setLoggerFormat.js +0 -1
- package/lib/esm/node/utils/setLoggerLevel.js +0 -1
- package/package.json +12 -10
- package/.barrelsby.json +0 -5
- package/lib/browser/chunks/injectable.js +0 -65
- package/lib/browser/chunks/injectable.js.map +0 -1
- package/lib/browser/common/constants/constants.js +0 -9
- package/lib/browser/common/constants/constants.js.map +0 -1
- package/lib/browser/common/decorators/autoInjectable.js +0 -26
- package/lib/browser/common/decorators/autoInjectable.js.map +0 -1
- package/lib/browser/common/decorators/configuration.js +0 -24
- package/lib/browser/common/decorators/configuration.js.map +0 -1
- package/lib/browser/common/decorators/constant.js +0 -27
- package/lib/browser/common/decorators/constant.js.map +0 -1
- package/lib/browser/common/decorators/controller.js +0 -23
- package/lib/browser/common/decorators/controller.js.map +0 -1
- package/lib/browser/common/decorators/inject.js +0 -62
- package/lib/browser/common/decorators/inject.js.map +0 -1
- package/lib/browser/common/decorators/injectable.js +0 -14
- package/lib/browser/common/decorators/injectable.js.map +0 -1
- package/lib/browser/common/decorators/intercept.js +0 -57
- package/lib/browser/common/decorators/intercept.js.map +0 -1
- package/lib/browser/common/decorators/interceptor.js +0 -11
- package/lib/browser/common/decorators/interceptor.js.map +0 -1
- package/lib/browser/common/decorators/lazyInject.js +0 -43
- package/lib/browser/common/decorators/lazyInject.js.map +0 -1
- package/lib/browser/common/decorators/module.js +0 -22
- package/lib/browser/common/decorators/module.js.map +0 -1
- package/lib/browser/common/decorators/opts.js +0 -12
- package/lib/browser/common/decorators/opts.js.map +0 -1
- package/lib/browser/common/decorators/overrideProvider.js +0 -10
- package/lib/browser/common/decorators/overrideProvider.js.map +0 -1
- package/lib/browser/common/decorators/scope.js +0 -9
- package/lib/browser/common/decorators/scope.js.map +0 -1
- package/lib/browser/common/decorators/service.js +0 -8
- package/lib/browser/common/decorators/service.js.map +0 -1
- package/lib/browser/common/decorators/useOpts.js +0 -23
- package/lib/browser/common/decorators/useOpts.js.map +0 -1
- package/lib/browser/common/decorators/value.js +0 -23
- package/lib/browser/common/decorators/value.js.map +0 -1
- package/lib/browser/common/domain/Container.js +0 -64
- package/lib/browser/common/domain/Container.js.map +0 -1
- package/lib/browser/common/domain/ControllerProvider.js +0 -35
- package/lib/browser/common/domain/ControllerProvider.js.map +0 -1
- package/lib/browser/common/domain/InjectablePropertyType.js +0 -5
- package/lib/browser/common/domain/InjectablePropertyType.js.map +0 -1
- package/lib/browser/common/domain/LocalsContainer.js +0 -13
- package/lib/browser/common/domain/LocalsContainer.js.map +0 -1
- package/lib/browser/common/domain/Provider.js +0 -144
- package/lib/browser/common/domain/Provider.js.map +0 -1
- package/lib/browser/common/domain/ProviderScope.js +0 -5
- package/lib/browser/common/domain/ProviderScope.js.map +0 -1
- package/lib/browser/common/domain/ProviderType.js +0 -5
- package/lib/browser/common/domain/ProviderType.js.map +0 -1
- package/lib/browser/common/errors/InjectionError.js +0 -31
- package/lib/browser/common/errors/InjectionError.js.map +0 -1
- package/lib/browser/common/errors/InvalidPropertyTokenError.js +0 -17
- package/lib/browser/common/errors/InvalidPropertyTokenError.js.map +0 -1
- package/lib/browser/common/fn/configuration.js +0 -13
- package/lib/browser/common/fn/configuration.js.map +0 -1
- package/lib/browser/common/fn/constant.js +0 -8
- package/lib/browser/common/fn/constant.js.map +0 -1
- package/lib/browser/common/fn/inject.js +0 -13
- package/lib/browser/common/fn/inject.js.map +0 -1
- package/lib/browser/common/fn/injectMany.js +0 -9
- package/lib/browser/common/fn/injectMany.js.map +0 -1
- package/lib/browser/common/fn/injectable.js +0 -8
- package/lib/browser/common/fn/injectable.js.map +0 -1
- package/lib/browser/common/fn/injector.js +0 -13
- package/lib/browser/common/fn/injector.js.map +0 -1
- package/lib/browser/common/fn/lazyInject.js +0 -23
- package/lib/browser/common/fn/lazyInject.js.map +0 -1
- package/lib/browser/common/fn/localsContainer.js +0 -29
- package/lib/browser/common/fn/localsContainer.js.map +0 -1
- package/lib/browser/common/fn/logger.js +0 -8
- package/lib/browser/common/fn/logger.js.map +0 -1
- package/lib/browser/common/fn/refValue.js +0 -15
- package/lib/browser/common/fn/refValue.js.map +0 -1
- package/lib/browser/common/index.js +0 -115
- package/lib/browser/common/index.js.map +0 -1
- package/lib/browser/common/registries/GlobalProviders.js +0 -102
- package/lib/browser/common/registries/GlobalProviders.js.map +0 -1
- package/lib/browser/common/registries/ProviderRegistry.js +0 -8
- package/lib/browser/common/registries/ProviderRegistry.js.map +0 -1
- package/lib/browser/common/services/DIConfiguration.js +0 -99
- package/lib/browser/common/services/DIConfiguration.js.map +0 -1
- package/lib/browser/common/services/DILogger.js +0 -8
- package/lib/browser/common/services/DILogger.js.map +0 -1
- package/lib/browser/common/services/InjectorService.js +0 -378
- package/lib/browser/common/services/InjectorService.js.map +0 -1
- package/lib/browser/common/utils/colors.js +0 -5
- package/lib/browser/common/utils/colors.js.map +0 -1
- package/lib/browser/common/utils/createContainer.js +0 -10
- package/lib/browser/common/utils/createContainer.js.map +0 -1
- package/lib/browser/common/utils/discoverHooks.js +0 -17
- package/lib/browser/common/utils/discoverHooks.js.map +0 -1
- package/lib/browser/common/utils/getConfiguration.js +0 -20
- package/lib/browser/common/utils/getConfiguration.js.map +0 -1
- package/lib/browser/common/utils/getConstructorDependencies.js +0 -12
- package/lib/browser/common/utils/getConstructorDependencies.js.map +0 -1
- package/lib/browser/common/utils/providerBuilder.js +0 -8
- package/lib/browser/common/utils/providerBuilder.js.map +0 -1
- package/lib/esm/common/constants/constants.js.map +0 -1
- package/lib/esm/common/decorators/autoInjectable.js.map +0 -1
- package/lib/esm/common/decorators/configuration.js.map +0 -1
- package/lib/esm/common/decorators/constant.js.map +0 -1
- package/lib/esm/common/decorators/controller.js.map +0 -1
- package/lib/esm/common/decorators/inject.js.map +0 -1
- package/lib/esm/common/decorators/injectable.js.map +0 -1
- package/lib/esm/common/decorators/intercept.js.map +0 -1
- package/lib/esm/common/decorators/interceptor.js.map +0 -1
- package/lib/esm/common/decorators/lazyInject.js.map +0 -1
- package/lib/esm/common/decorators/module.js.map +0 -1
- package/lib/esm/common/decorators/opts.js.map +0 -1
- package/lib/esm/common/decorators/overrideProvider.js.map +0 -1
- package/lib/esm/common/decorators/scope.js.map +0 -1
- package/lib/esm/common/decorators/service.js.map +0 -1
- package/lib/esm/common/decorators/useOpts.js.map +0 -1
- package/lib/esm/common/decorators/value.js.map +0 -1
- package/lib/esm/common/domain/Container.js.map +0 -1
- package/lib/esm/common/domain/ControllerProvider.js.map +0 -1
- package/lib/esm/common/domain/InjectablePropertyType.js.map +0 -1
- package/lib/esm/common/domain/LocalsContainer.js.map +0 -1
- package/lib/esm/common/domain/Provider.js.map +0 -1
- package/lib/esm/common/domain/ProviderScope.js.map +0 -1
- package/lib/esm/common/domain/ProviderType.js.map +0 -1
- package/lib/esm/common/errors/InjectionError.js.map +0 -1
- package/lib/esm/common/errors/InvalidPropertyTokenError.js.map +0 -1
- package/lib/esm/common/fn/configuration.js.map +0 -1
- package/lib/esm/common/fn/constant.js.map +0 -1
- package/lib/esm/common/fn/inject.js.map +0 -1
- package/lib/esm/common/fn/injectMany.js.map +0 -1
- package/lib/esm/common/fn/injectable.js.map +0 -1
- package/lib/esm/common/fn/injector.js.map +0 -1
- package/lib/esm/common/fn/lazyInject.js.map +0 -1
- package/lib/esm/common/fn/localsContainer.js.map +0 -1
- package/lib/esm/common/fn/logger.js.map +0 -1
- package/lib/esm/common/fn/refValue.js.map +0 -1
- package/lib/esm/common/index.js.map +0 -1
- package/lib/esm/common/interfaces/DIConfigurationOptions.js.map +0 -1
- package/lib/esm/common/interfaces/DILogger.js.map +0 -1
- package/lib/esm/common/interfaces/DILoggerOptions.js.map +0 -1
- package/lib/esm/common/interfaces/ImportTokenProviderOpts.js.map +0 -1
- package/lib/esm/common/interfaces/InterceptorContext.js.map +0 -1
- package/lib/esm/common/interfaces/InterceptorMethods.js.map +0 -1
- package/lib/esm/common/interfaces/InvokeOptions.js.map +0 -1
- package/lib/esm/common/interfaces/OnDestroy.js.map +0 -1
- package/lib/esm/common/interfaces/OnInit.js.map +0 -1
- package/lib/esm/common/interfaces/ProviderOpts.js.map +0 -1
- package/lib/esm/common/interfaces/RegistrySettings.js.map +0 -1
- package/lib/esm/common/interfaces/ResolvedInvokeOptions.js.map +0 -1
- package/lib/esm/common/interfaces/TokenProvider.js.map +0 -1
- package/lib/esm/common/interfaces/TokenRoute.js.map +0 -1
- package/lib/esm/common/registries/GlobalProviders.js.map +0 -1
- package/lib/esm/common/registries/ProviderRegistry.js.map +0 -1
- package/lib/esm/common/services/DIConfiguration.js.map +0 -1
- package/lib/esm/common/services/DILogger.js.map +0 -1
- package/lib/esm/common/services/InjectorService.js.map +0 -1
- package/lib/esm/common/utils/colors.js.map +0 -1
- package/lib/esm/common/utils/createContainer.js.map +0 -1
- package/lib/esm/common/utils/discoverHooks.js.map +0 -1
- package/lib/esm/common/utils/getConfiguration.js.map +0 -1
- package/lib/esm/common/utils/getConstructorDependencies.js.map +0 -1
- package/lib/esm/common/utils/providerBuilder.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/node/decorators/injectContext.js.map +0 -1
- package/lib/esm/node/domain/ContextLogger.js.map +0 -1
- package/lib/esm/node/domain/DIContext.js.map +0 -1
- package/lib/esm/node/fn/context.js.map +0 -1
- package/lib/esm/node/fn/contextLogger.js.map +0 -1
- package/lib/esm/node/index.js.map +0 -1
- package/lib/esm/node/interfaces/AlterRunInContext.js.map +0 -1
- package/lib/esm/node/services/DILogger.js.map +0 -1
- package/lib/esm/node/services/DITest.js.map +0 -1
- package/lib/esm/node/utils/asyncHookContext.js.map +0 -1
- package/lib/esm/node/utils/attachLogger.js.map +0 -1
- package/lib/esm/node/utils/setLoggerConfiguration.js.map +0 -1
- package/lib/esm/node/utils/setLoggerFormat.js.map +0 -1
- package/lib/esm/node/utils/setLoggerLevel.js.map +0 -1
- package/src/common/constants/constants.ts +0 -5
- package/src/common/decorators/autoInjectable.spec.ts +0 -135
- package/src/common/decorators/autoInjectable.ts +0 -60
- package/src/common/decorators/configuration.spec.ts +0 -45
- package/src/common/decorators/configuration.ts +0 -36
- package/src/common/decorators/constant.spec.ts +0 -67
- package/src/common/decorators/constant.ts +0 -73
- package/src/common/decorators/controller.spec.ts +0 -43
- package/src/common/decorators/controller.ts +0 -73
- package/src/common/decorators/inject.spec.ts +0 -298
- package/src/common/decorators/inject.ts +0 -150
- package/src/common/decorators/injectable.spec.ts +0 -43
- package/src/common/decorators/injectable.ts +0 -30
- package/src/common/decorators/intercept.spec.ts +0 -150
- package/src/common/decorators/intercept.ts +0 -89
- package/src/common/decorators/interceptor.ts +0 -17
- package/src/common/decorators/lazyInject.spec.ts +0 -53
- package/src/common/decorators/lazyInject.ts +0 -92
- package/src/common/decorators/module.ts +0 -52
- package/src/common/decorators/opts.ts +0 -51
- package/src/common/decorators/overrideProvider.spec.ts +0 -30
- package/src/common/decorators/overrideProvider.ts +0 -15
- package/src/common/decorators/scope.spec.ts +0 -25
- package/src/common/decorators/scope.ts +0 -13
- package/src/common/decorators/service.ts +0 -14
- package/src/common/decorators/useOpts.spec.ts +0 -90
- package/src/common/decorators/useOpts.ts +0 -64
- package/src/common/decorators/value.spec.ts +0 -59
- package/src/common/decorators/value.ts +0 -60
- package/src/common/domain/Container.spec.ts +0 -85
- package/src/common/domain/Container.ts +0 -80
- package/src/common/domain/ControllerProvider.spec.ts +0 -55
- package/src/common/domain/ControllerProvider.ts +0 -48
- package/src/common/domain/InjectablePropertyType.ts +0 -7
- package/src/common/domain/LocalsContainer.spec.ts +0 -20
- package/src/common/domain/LocalsContainer.ts +0 -11
- package/src/common/domain/Provider.spec.ts +0 -107
- package/src/common/domain/Provider.ts +0 -218
- package/src/common/domain/ProviderScope.ts +0 -5
- package/src/common/domain/ProviderType.ts +0 -8
- package/src/common/errors/InjectionError.spec.ts +0 -17
- package/src/common/errors/InjectionError.ts +0 -71
- package/src/common/errors/InvalidPropertyTokenError.ts +0 -14
- package/src/common/fn/configuration.spec.ts +0 -42
- package/src/common/fn/configuration.ts +0 -22
- package/src/common/fn/constant.spec.ts +0 -37
- package/src/common/fn/constant.ts +0 -7
- package/src/common/fn/inject.spec.ts +0 -54
- package/src/common/fn/inject.ts +0 -32
- package/src/common/fn/injectMany.ts +0 -16
- package/src/common/fn/injectable.spec.ts +0 -88
- package/src/common/fn/injectable.ts +0 -15
- package/src/common/fn/injector.ts +0 -26
- package/src/common/fn/lazyInject.spec.ts +0 -22
- package/src/common/fn/lazyInject.ts +0 -36
- package/src/common/fn/localsContainer.ts +0 -55
- package/src/common/fn/logger.ts +0 -8
- package/src/common/fn/refValue.spec.ts +0 -47
- package/src/common/fn/refValue.ts +0 -33
- package/src/common/index.ts +0 -64
- package/src/common/integration/async-factory.spec.ts +0 -60
- package/src/common/integration/di.spec.ts +0 -153
- package/src/common/integration/imports.spec.ts +0 -39
- package/src/common/integration/request.spec.ts +0 -79
- package/src/common/integration/singleton.spec.ts +0 -125
- package/src/common/interfaces/DIConfigurationOptions.ts +0 -29
- package/src/common/interfaces/DILogger.ts +0 -13
- package/src/common/interfaces/DILoggerOptions.ts +0 -54
- package/src/common/interfaces/ImportTokenProviderOpts.ts +0 -29
- package/src/common/interfaces/InterceptorContext.ts +0 -13
- package/src/common/interfaces/InterceptorMethods.ts +0 -5
- package/src/common/interfaces/InvokeOptions.ts +0 -28
- package/src/common/interfaces/OnDestroy.ts +0 -3
- package/src/common/interfaces/OnInit.ts +0 -3
- package/src/common/interfaces/ProviderOpts.ts +0 -57
- package/src/common/interfaces/RegistrySettings.ts +0 -11
- package/src/common/interfaces/ResolvedInvokeOptions.ts +0 -14
- package/src/common/interfaces/TokenProvider.ts +0 -8
- package/src/common/interfaces/TokenRoute.ts +0 -6
- package/src/common/registries/GlobalProviders.spec.ts +0 -94
- package/src/common/registries/GlobalProviders.ts +0 -132
- package/src/common/registries/ProviderRegistry.spec.ts +0 -36
- package/src/common/registries/ProviderRegistry.ts +0 -32
- package/src/common/services/DIConfiguration.spec.ts +0 -60
- package/src/common/services/DIConfiguration.ts +0 -142
- package/src/common/services/DILogger.spec.ts +0 -22
- package/src/common/services/DILogger.ts +0 -8
- package/src/common/services/InjectorService.spec.ts +0 -793
- package/src/common/services/InjectorService.ts +0 -612
- package/src/common/utils/colors.spec.ts +0 -9
- package/src/common/utils/colors.ts +0 -11
- package/src/common/utils/createContainer.spec.ts +0 -18
- package/src/common/utils/createContainer.ts +0 -14
- package/src/common/utils/discoverHooks.ts +0 -16
- package/src/common/utils/getConfiguration.spec.ts +0 -40
- package/src/common/utils/getConfiguration.ts +0 -21
- package/src/common/utils/getConstructorDependencies.ts +0 -9
- package/src/common/utils/providerBuilder.ts +0 -95
- package/src/index.ts +0 -2
- package/src/node/decorators/injectContext.spec.ts +0 -60
- package/src/node/decorators/injectContext.ts +0 -29
- package/src/node/domain/ContextLogger.spec.ts +0 -400
- package/src/node/domain/ContextLogger.ts +0 -155
- package/src/node/domain/DIContext.spec.ts +0 -105
- package/src/node/domain/DIContext.ts +0 -115
- package/src/node/fn/context.ts +0 -24
- package/src/node/fn/contextLogger.spec.ts +0 -47
- package/src/node/fn/contextLogger.ts +0 -9
- package/src/node/index.ts +0 -16
- package/src/node/integration/async-factory-invoke.spec.ts +0 -58
- package/src/node/integration/inject-context.spec.ts +0 -29
- package/src/node/integration/invoke-oninit.spec.ts +0 -25
- package/src/node/interfaces/AlterRunInContext.ts +0 -3
- package/src/node/services/DILogger.spec.ts +0 -24
- package/src/node/services/DILogger.ts +0 -6
- package/src/node/services/DITest.spec.ts +0 -109
- package/src/node/services/DITest.ts +0 -122
- package/src/node/utils/asyncHookContext.spec.ts +0 -147
- package/src/node/utils/asyncHookContext.ts +0 -48
- package/src/node/utils/attachLogger.spec.ts +0 -14
- package/src/node/utils/attachLogger.ts +0 -7
- package/src/node/utils/setLoggerConfiguration.spec.ts +0 -43
- package/src/node/utils/setLoggerConfiguration.ts +0 -7
- package/src/node/utils/setLoggerFormat.ts +0 -33
- package/src/node/utils/setLoggerLevel.ts +0 -12
- package/vite.config.mts +0 -45
- package/vitest.config.mts +0 -21
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import {classOf} from "@tsed/core/utils/classOf.js";
|
|
2
|
-
|
|
3
|
-
import {DI_USE_PARAM_OPTIONS} from "../constants/constants.js";
|
|
4
|
-
import {ProviderScope} from "../domain/ProviderScope.js";
|
|
5
|
-
import {Inject} from "./inject.js";
|
|
6
|
-
import {Scope} from "./scope.js";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Get instance options. This options depending on his invocation context.
|
|
10
|
-
*
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import {Injectable, Opts, UseOpts} from "@tsed/di";
|
|
13
|
-
*
|
|
14
|
-
* @Injectable()
|
|
15
|
-
* class MyConfigurableService {
|
|
16
|
-
* source: string;
|
|
17
|
-
* constructor(@Opts options: any = {}) {
|
|
18
|
-
* console.log("Hello ", options.source); // log: Hello Service1 then Hello Service2
|
|
19
|
-
*
|
|
20
|
-
* this.source = options.source;
|
|
21
|
-
* }
|
|
22
|
-
* }
|
|
23
|
-
*
|
|
24
|
-
* @Injectable()
|
|
25
|
-
* class MyService1 {
|
|
26
|
-
* constructor(@UseOpts({source: 'Service1'}) service: MyConfigurableService) {
|
|
27
|
-
* console.log(service.source) // log: Service1
|
|
28
|
-
* }
|
|
29
|
-
* }
|
|
30
|
-
*
|
|
31
|
-
* @Injectable()
|
|
32
|
-
* class MyService2 {
|
|
33
|
-
* constructor(@UseOpts({source: 'Service2'}) service: MyConfigurableService) {
|
|
34
|
-
* console.log(service.source) // log: Service2
|
|
35
|
-
* }
|
|
36
|
-
* }
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* ::: warning
|
|
40
|
-
* Using @@Opts@@ decorator on a constructor parameter change the Scope of the provider to `ProviderScope.INSTANCE`.
|
|
41
|
-
* :::
|
|
42
|
-
*
|
|
43
|
-
* @param target
|
|
44
|
-
* @param propertyKey
|
|
45
|
-
* @param index
|
|
46
|
-
* @decorator
|
|
47
|
-
*/
|
|
48
|
-
export function Opts(target: any, propertyKey: string | symbol | undefined, index: number) {
|
|
49
|
-
Scope(ProviderScope.INSTANCE)(classOf(target));
|
|
50
|
-
Inject(DI_USE_PARAM_OPTIONS)(target, propertyKey, index);
|
|
51
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import {Provider} from "../domain/Provider.js";
|
|
2
|
-
import type {TokenProvider} from "../interfaces/TokenProvider.js";
|
|
3
|
-
import {GlobalProviders} from "../registries/GlobalProviders.js";
|
|
4
|
-
import {OverrideProvider} from "./overrideProvider.js";
|
|
5
|
-
|
|
6
|
-
describe("OverrideProvider", () => {
|
|
7
|
-
class Test {}
|
|
8
|
-
|
|
9
|
-
class Test2 {}
|
|
10
|
-
|
|
11
|
-
beforeAll(() => {
|
|
12
|
-
vi.spyOn(GlobalProviders, "get");
|
|
13
|
-
});
|
|
14
|
-
it("should use OverrideProvider", () => {
|
|
15
|
-
// GIVEN
|
|
16
|
-
const provider = new Provider(Test);
|
|
17
|
-
|
|
18
|
-
vi.mocked(GlobalProviders.get).mockImplementation((token: TokenProvider) => {
|
|
19
|
-
if (token === Test) {
|
|
20
|
-
return provider;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
// WHEN
|
|
24
|
-
OverrideProvider(Test)(Test2);
|
|
25
|
-
|
|
26
|
-
// THEN
|
|
27
|
-
expect(provider.token).toEqual(Test);
|
|
28
|
-
expect(provider.useClass).toEqual(Test2);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import {Type} from "@tsed/core/types/Type.js";
|
|
2
|
-
|
|
3
|
-
import {GlobalProviders} from "../registries/GlobalProviders.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Override a provider which is already registered in ProviderRegistry.
|
|
7
|
-
* @returns {Function}
|
|
8
|
-
* @decorators
|
|
9
|
-
* @param originalProvider
|
|
10
|
-
*/
|
|
11
|
-
export function OverrideProvider(originalProvider: Type<any>): Function {
|
|
12
|
-
return (target: Type<any>): void => {
|
|
13
|
-
GlobalProviders.get(originalProvider)!.useClass = target;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import {Store} from "@tsed/core";
|
|
2
|
-
|
|
3
|
-
import {Scope} from "./scope.js";
|
|
4
|
-
|
|
5
|
-
class Test {}
|
|
6
|
-
|
|
7
|
-
describe("Scope", () => {
|
|
8
|
-
describe("when parameters is given", () => {
|
|
9
|
-
it("should set metadata", () => {
|
|
10
|
-
Scope("request")(Test);
|
|
11
|
-
|
|
12
|
-
expect(Store.from(Test).get("scope")).toEqual("request");
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
describe("when parameters is not given", () => {
|
|
17
|
-
beforeAll(() => {});
|
|
18
|
-
|
|
19
|
-
it("should set metadata", () => {
|
|
20
|
-
Scope()(Test);
|
|
21
|
-
|
|
22
|
-
expect(Store.from(Test).get("scope")).toEqual("request");
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {StoreSet} from "@tsed/core/decorators/storeSet.js";
|
|
2
|
-
|
|
3
|
-
import {ProviderScope} from "../domain/ProviderScope.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
* @param {"request" | "singleton" | ProviderScope} scope
|
|
8
|
-
* @returns {Function}
|
|
9
|
-
* @constructor
|
|
10
|
-
*/
|
|
11
|
-
export function Scope(scope: "request" | "singleton" | ProviderScope = ProviderScope.REQUEST) {
|
|
12
|
-
return StoreSet("scope", scope);
|
|
13
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {Injectable} from "./injectable.js";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The decorators `@Service()` declare a new service can be injected in other service or controller on there `constructor`.
|
|
5
|
-
* All services annotated with `@Service()` are constructed one time.
|
|
6
|
-
*
|
|
7
|
-
* > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.
|
|
8
|
-
*
|
|
9
|
-
* @returns {Function}
|
|
10
|
-
* @decorator
|
|
11
|
-
*/
|
|
12
|
-
export function Service(): Function {
|
|
13
|
-
return Injectable();
|
|
14
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import {descriptorOf} from "@tsed/core";
|
|
2
|
-
|
|
3
|
-
import {DITest} from "../../node/index.js";
|
|
4
|
-
import {ProviderScope} from "../domain/ProviderScope.js";
|
|
5
|
-
import {Inject} from "./inject.js";
|
|
6
|
-
import {Injectable} from "./injectable.js";
|
|
7
|
-
import {Opts} from "./opts.js";
|
|
8
|
-
import {Scope} from "./scope.js";
|
|
9
|
-
import {UseOpts} from "./useOpts.js";
|
|
10
|
-
|
|
11
|
-
describe("UseOpts", () => {
|
|
12
|
-
let testContext: any;
|
|
13
|
-
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
testContext = {};
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
beforeEach(() => DITest.create());
|
|
19
|
-
afterEach(() => DITest.reset());
|
|
20
|
-
it("should inject provider with options", async () => {
|
|
21
|
-
@Injectable()
|
|
22
|
-
class MyProvider {
|
|
23
|
-
source: any;
|
|
24
|
-
|
|
25
|
-
constructor(@Opts options: any = {}) {
|
|
26
|
-
testContext.source = options.source;
|
|
27
|
-
this.source = options.source;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@Injectable()
|
|
32
|
-
class MyService {
|
|
33
|
-
@Inject()
|
|
34
|
-
@UseOpts({
|
|
35
|
-
source: "test1"
|
|
36
|
-
})
|
|
37
|
-
service1: MyProvider;
|
|
38
|
-
|
|
39
|
-
constructor(@UseOpts({source: "test2"}) public service2: MyProvider) {}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const service = await DITest.invoke<MyService>(MyService);
|
|
43
|
-
|
|
44
|
-
expect(service.service2.source).toEqual("test2");
|
|
45
|
-
expect(service.service2).not.toEqual(service.service1);
|
|
46
|
-
|
|
47
|
-
expect(service.service1).toBeInstanceOf(MyProvider);
|
|
48
|
-
expect(service.service1.source).toEqual("test1");
|
|
49
|
-
|
|
50
|
-
expect(service.service2).toBeInstanceOf(MyProvider);
|
|
51
|
-
});
|
|
52
|
-
it("should invoke a service which use a configurable provider", async () => {
|
|
53
|
-
@Injectable()
|
|
54
|
-
class MyProvider {
|
|
55
|
-
source: any;
|
|
56
|
-
|
|
57
|
-
constructor(@Opts options: Partial<any> = {}) {
|
|
58
|
-
testContext.source = options.source;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
@Injectable()
|
|
63
|
-
class MyService {
|
|
64
|
-
constructor(@UseOpts({source: "test2"}) public service2: MyProvider) {}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
@Injectable()
|
|
68
|
-
@Scope(ProviderScope.SINGLETON)
|
|
69
|
-
class MyRepoService extends MyProvider {}
|
|
70
|
-
|
|
71
|
-
await DITest.invoke<MyRepoService>(MyRepoService);
|
|
72
|
-
});
|
|
73
|
-
it("should store metadata", () => {
|
|
74
|
-
// GIVEN
|
|
75
|
-
class Test {
|
|
76
|
-
test() {}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// WHEN
|
|
80
|
-
let actualError;
|
|
81
|
-
try {
|
|
82
|
-
UseOpts({})(Test, "test", descriptorOf(Test, "test"));
|
|
83
|
-
} catch (er) {
|
|
84
|
-
actualError = er;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// THEN
|
|
88
|
-
expect(actualError.message).toEqual("UseOpts cannot be used as method.static decorator on Test.test");
|
|
89
|
-
});
|
|
90
|
-
});
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import {UnsupportedDecoratorType} from "@tsed/core/errors/UnsupportedDecoratorType.js";
|
|
2
|
-
import {DecoratorTypes} from "@tsed/core/types/DecoratorTypes.js";
|
|
3
|
-
import {Store} from "@tsed/core/types/Store.js";
|
|
4
|
-
import {decoratorTypeOf} from "@tsed/core/utils/decoratorTypeOf.js";
|
|
5
|
-
|
|
6
|
-
import {DI_USE_OPTIONS, DI_USE_PARAM_OPTIONS} from "../constants/constants.js";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Add options to invoke the Service.
|
|
10
|
-
*
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import {Injectable, Opts, UseOpts} from "@tsed/di";
|
|
13
|
-
*
|
|
14
|
-
* @Injectable()
|
|
15
|
-
* class MyConfigurableService {
|
|
16
|
-
* source: string;
|
|
17
|
-
* constructor(@Opts options: any = {}) {
|
|
18
|
-
* console.log("Hello ", options.source); // log: Hello Service1 then Hello Service2
|
|
19
|
-
*
|
|
20
|
-
* this.source = options.source;
|
|
21
|
-
* }
|
|
22
|
-
* }
|
|
23
|
-
*
|
|
24
|
-
* @Injectable()
|
|
25
|
-
* class MyService1 {
|
|
26
|
-
* constructor(@UseOpts({source: 'Service1'}) service: MyConfigurableService) {
|
|
27
|
-
* console.log(service.source) // log: Service1
|
|
28
|
-
* }
|
|
29
|
-
* }
|
|
30
|
-
*
|
|
31
|
-
* @Injectable()
|
|
32
|
-
* class MyService2 {
|
|
33
|
-
* constructor(@UseOpts({source: 'Service2'}) service: MyConfigurableService) {
|
|
34
|
-
* console.log(service.source) // log: Service2
|
|
35
|
-
* }
|
|
36
|
-
* }
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* ::: warning
|
|
40
|
-
* Using @@Opts@@ decorator on a constructor parameter change the Scope of the provider to `ProviderScope.INSTANCE`.
|
|
41
|
-
* :::
|
|
42
|
-
*
|
|
43
|
-
* @returns {Function}
|
|
44
|
-
* @decorator
|
|
45
|
-
* @param options
|
|
46
|
-
*/
|
|
47
|
-
export function UseOpts(options: {[key: string]: any}): Function {
|
|
48
|
-
return (target: Object, propertyKey: string | symbol, index?: number): any => {
|
|
49
|
-
const bindingType = decoratorTypeOf([target, propertyKey, index]);
|
|
50
|
-
|
|
51
|
-
switch (bindingType) {
|
|
52
|
-
case DecoratorTypes.PARAM_CTOR:
|
|
53
|
-
Store.from(target).merge(`${DI_USE_PARAM_OPTIONS}:${index}`, options);
|
|
54
|
-
break;
|
|
55
|
-
|
|
56
|
-
case DecoratorTypes.PROP:
|
|
57
|
-
Store.from(target, propertyKey).set(DI_USE_OPTIONS, options);
|
|
58
|
-
break;
|
|
59
|
-
|
|
60
|
-
default:
|
|
61
|
-
throw new UnsupportedDecoratorType(UseOpts, [target, propertyKey, index]);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import {DITest} from "../../node/index.js";
|
|
2
|
-
import {configuration} from "../fn/configuration.js";
|
|
3
|
-
import {Value} from "./value.js";
|
|
4
|
-
|
|
5
|
-
describe("@Value()", () => {
|
|
6
|
-
beforeEach(() =>
|
|
7
|
-
DITest.create({
|
|
8
|
-
logger: {
|
|
9
|
-
level: "off"
|
|
10
|
-
}
|
|
11
|
-
})
|
|
12
|
-
);
|
|
13
|
-
afterEach(() => DITest.reset());
|
|
14
|
-
describe("when decorator is used as property decorator", () => {
|
|
15
|
-
it("should create a getter", async () => {
|
|
16
|
-
// WHEN
|
|
17
|
-
class Test {
|
|
18
|
-
@Value("logger.level", "default value")
|
|
19
|
-
test: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// THEN
|
|
23
|
-
|
|
24
|
-
const test = await DITest.invoke<Test>(Test);
|
|
25
|
-
|
|
26
|
-
expect(test.test).toEqual("off");
|
|
27
|
-
});
|
|
28
|
-
it("should create a getter with default value", async () => {
|
|
29
|
-
expect(configuration().get("logger.test")).toEqual(undefined);
|
|
30
|
-
|
|
31
|
-
// WHEN
|
|
32
|
-
class Test {
|
|
33
|
-
@Value("logger.test", "default value")
|
|
34
|
-
test: string;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// THEN
|
|
38
|
-
|
|
39
|
-
const test = await DITest.invoke<Test>(Test);
|
|
40
|
-
|
|
41
|
-
expect(test.test).toEqual("default value");
|
|
42
|
-
expect(configuration().get("logger.test")).toEqual(undefined);
|
|
43
|
-
});
|
|
44
|
-
it("should create a getter with native default value", async () => {
|
|
45
|
-
// WHEN
|
|
46
|
-
class Test {
|
|
47
|
-
@Value("logger.test")
|
|
48
|
-
test: string = "default prop";
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// THEN
|
|
52
|
-
|
|
53
|
-
const test = await DITest.invoke<Test>(Test);
|
|
54
|
-
|
|
55
|
-
expect(test.test).toEqual("default prop");
|
|
56
|
-
expect(configuration().get("logger.test")).toEqual("default prop");
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import {catchError} from "@tsed/core/utils/catchError.js";
|
|
2
|
-
|
|
3
|
-
import {injector} from "../fn/injector.js";
|
|
4
|
-
|
|
5
|
-
export function bindValue(target: any, propertyKey: string | symbol, expression: string, defaultValue?: any) {
|
|
6
|
-
const descriptor = {
|
|
7
|
-
get() {
|
|
8
|
-
return injector().settings.get(expression, defaultValue);
|
|
9
|
-
},
|
|
10
|
-
set(value: unknown) {
|
|
11
|
-
injector().settings.set(expression, value);
|
|
12
|
-
},
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
catchError(() => Reflect.deleteProperty(target, propertyKey));
|
|
18
|
-
catchError(() => Reflect.defineProperty(target, propertyKey, descriptor));
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Return value from Configuration.
|
|
23
|
-
*
|
|
24
|
-
* ## Example
|
|
25
|
-
*
|
|
26
|
-
* ```typescript
|
|
27
|
-
* import {Env} from "@tsed/core/domain/Env.js";
|
|
28
|
-
* import {Constant, Value} from "@tsed/di";
|
|
29
|
-
*
|
|
30
|
-
* export class MyClass {
|
|
31
|
-
*
|
|
32
|
-
* @Constant("env")
|
|
33
|
-
* env: Env;
|
|
34
|
-
*
|
|
35
|
-
* @Value("swagger.path")
|
|
36
|
-
* swaggerPath: string;
|
|
37
|
-
*
|
|
38
|
-
* @Value("swagger.path", "defaultValue")
|
|
39
|
-
* swaggerPath: string;
|
|
40
|
-
*
|
|
41
|
-
* constructor() {
|
|
42
|
-
* console.log(this.swaggerPath) // undefined. Not available on constructor
|
|
43
|
-
* }
|
|
44
|
-
*
|
|
45
|
-
* $onInit() {
|
|
46
|
-
* console.log(this.swaggerPath) // something
|
|
47
|
-
* }
|
|
48
|
-
* }
|
|
49
|
-
* ```
|
|
50
|
-
*
|
|
51
|
-
* @param expression
|
|
52
|
-
* @param defaultValue
|
|
53
|
-
* @returns {(targetClass: any, attributeName: string) => any}
|
|
54
|
-
* @decorator
|
|
55
|
-
*/
|
|
56
|
-
export function Value(expression: string, defaultValue?: unknown): PropertyDecorator {
|
|
57
|
-
return (target, propertyKey) => {
|
|
58
|
-
return bindValue(target, propertyKey, expression, defaultValue);
|
|
59
|
-
};
|
|
60
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import {Container} from "./Container.js";
|
|
2
|
-
import {Provider} from "./Provider.js";
|
|
3
|
-
import {ProviderType} from "./ProviderType.js";
|
|
4
|
-
|
|
5
|
-
describe("Container", () => {
|
|
6
|
-
describe("getProvider()", () => {
|
|
7
|
-
class Test {}
|
|
8
|
-
|
|
9
|
-
it("should return a provider", () => {
|
|
10
|
-
// GIVEN
|
|
11
|
-
const container = new Container();
|
|
12
|
-
const provider = new Provider(Test);
|
|
13
|
-
|
|
14
|
-
container.add(Test, provider);
|
|
15
|
-
|
|
16
|
-
// WHEN
|
|
17
|
-
const result = container.getProvider(Test);
|
|
18
|
-
|
|
19
|
-
// THEN
|
|
20
|
-
expect(result!).toBeInstanceOf(Provider);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe("getProviders()", () => {
|
|
24
|
-
let container: Container;
|
|
25
|
-
|
|
26
|
-
beforeEach(() => {
|
|
27
|
-
class MyMiddleware {}
|
|
28
|
-
|
|
29
|
-
class MyService {}
|
|
30
|
-
|
|
31
|
-
class MyController {}
|
|
32
|
-
|
|
33
|
-
container = new Container();
|
|
34
|
-
container.addProvider(MyMiddleware, {type: ProviderType.MIDDLEWARE});
|
|
35
|
-
container.addProvider(MyService, {type: ProviderType.PROVIDER});
|
|
36
|
-
container.addProvider(MyController, {type: ProviderType.CONTROLLER});
|
|
37
|
-
|
|
38
|
-
// await container.load();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it("should return middlewares only", () => {
|
|
42
|
-
const providers = container.getProviders(ProviderType.MIDDLEWARE);
|
|
43
|
-
|
|
44
|
-
const result = providers.find((item: any) => item.type !== ProviderType.MIDDLEWARE);
|
|
45
|
-
|
|
46
|
-
expect(providers[0].type).toEqual(ProviderType.MIDDLEWARE);
|
|
47
|
-
expect(result).toBeUndefined();
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("should return controllers only", () => {
|
|
51
|
-
const providers = container.getProviders(ProviderType.CONTROLLER);
|
|
52
|
-
|
|
53
|
-
const result = providers.find((item: any) => item.type !== ProviderType.CONTROLLER);
|
|
54
|
-
|
|
55
|
-
expect(providers[0].type).toEqual(ProviderType.CONTROLLER);
|
|
56
|
-
expect(result).toBeUndefined();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("should return all providers", () => {
|
|
60
|
-
const providers = container.getProviders();
|
|
61
|
-
const controllers = providers.filter((item: any) => item.type === ProviderType.CONTROLLER);
|
|
62
|
-
const middlewares = providers.filter((item: any) => item.type === ProviderType.MIDDLEWARE);
|
|
63
|
-
|
|
64
|
-
expect(providers.length > 0).toEqual(true);
|
|
65
|
-
expect(controllers.length > 0).toEqual(true);
|
|
66
|
-
expect(middlewares.length > 0).toEqual(true);
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
describe("addProviders()", () => {
|
|
70
|
-
it("should add providers", () => {
|
|
71
|
-
class Test {}
|
|
72
|
-
|
|
73
|
-
// GIVEN
|
|
74
|
-
const container = new Container();
|
|
75
|
-
const childContainer = new Container();
|
|
76
|
-
childContainer.addProvider(Test);
|
|
77
|
-
|
|
78
|
-
// WHEN
|
|
79
|
-
container.addProviders(childContainer);
|
|
80
|
-
|
|
81
|
-
// THEN
|
|
82
|
-
expect(container.getProvider(Test)!).toBeInstanceOf(Provider);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
});
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type {ProviderOpts} from "../interfaces/ProviderOpts.js";
|
|
2
|
-
import type {TokenProvider} from "../interfaces/TokenProvider.js";
|
|
3
|
-
import {GlobalProviders} from "../registries/GlobalProviders.js";
|
|
4
|
-
import {Provider} from "./Provider.js";
|
|
5
|
-
import type {ProviderType} from "./ProviderType.js";
|
|
6
|
-
|
|
7
|
-
export class Container extends Map<TokenProvider, Provider> {
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @param token
|
|
11
|
-
* @param settings
|
|
12
|
-
*/
|
|
13
|
-
public add(token: TokenProvider, settings: Partial<ProviderOpts> = {}): this {
|
|
14
|
-
const provider = GlobalProviders.get(token)?.clone() || new Provider(token);
|
|
15
|
-
|
|
16
|
-
Object.assign(provider, settings);
|
|
17
|
-
|
|
18
|
-
return super.set(token, provider);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Add a provider to the
|
|
23
|
-
* @param token
|
|
24
|
-
* @param settings
|
|
25
|
-
*/
|
|
26
|
-
public addProvider(token: TokenProvider, settings: Partial<ProviderOpts> = {}): this {
|
|
27
|
-
return this.add(token, settings);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* @param token
|
|
33
|
-
*/
|
|
34
|
-
public hasProvider(token: TokenProvider) {
|
|
35
|
-
return super.has(token);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Add a provider to the
|
|
40
|
-
* @param token
|
|
41
|
-
* @param provider
|
|
42
|
-
*/
|
|
43
|
-
public setProvider(token: TokenProvider, provider: Provider) {
|
|
44
|
-
return super.set(token, provider);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* The getProvider() method returns a specified element from a Map object.
|
|
49
|
-
* @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.
|
|
50
|
-
* @param token
|
|
51
|
-
*/
|
|
52
|
-
public getProvider<T extends Provider = Provider>(token: TokenProvider | undefined): T | undefined {
|
|
53
|
-
return super.get(token!) as T;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Get all providers registered in the injector container.
|
|
58
|
-
*
|
|
59
|
-
* @param type Filter the list by the given ProviderType.
|
|
60
|
-
* @returns {[TokenProvider , Provider<any>][]}
|
|
61
|
-
*/
|
|
62
|
-
public getProviders(type?: TokenProvider | ProviderType | string | string[]): Provider[] {
|
|
63
|
-
const types = ([] as (string | ProviderType)[]).concat(type as never).map(String);
|
|
64
|
-
|
|
65
|
-
return [...this].reduce((providers, [_, provider]) => {
|
|
66
|
-
if (types.includes(String(provider.type)) || !type) {
|
|
67
|
-
return [...providers, provider];
|
|
68
|
-
}
|
|
69
|
-
return providers;
|
|
70
|
-
}, []);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
public addProviders(container: Map<TokenProvider, Provider>) {
|
|
74
|
-
container.forEach((provider) => {
|
|
75
|
-
if (!this.hasProvider(provider.token)) {
|
|
76
|
-
this.setProvider(provider.token, provider.clone());
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import {ControllerProvider} from "./ControllerProvider.js";
|
|
2
|
-
import {ProviderScope} from "./ProviderScope.js";
|
|
3
|
-
|
|
4
|
-
class Test {}
|
|
5
|
-
|
|
6
|
-
describe("ControllerProvider", () => {
|
|
7
|
-
let controllerProvider: ControllerProvider;
|
|
8
|
-
|
|
9
|
-
beforeAll(() => {
|
|
10
|
-
controllerProvider = new ControllerProvider(Test);
|
|
11
|
-
controllerProvider.path = "/";
|
|
12
|
-
controllerProvider.scope = ProviderScope.REQUEST;
|
|
13
|
-
controllerProvider.middlewares = {
|
|
14
|
-
useBefore: [new Function()],
|
|
15
|
-
use: [new Function()],
|
|
16
|
-
useAfter: [new Function()]
|
|
17
|
-
};
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("should have type field to equals to controller", () => {
|
|
21
|
-
expect(controllerProvider.type).toEqual("controller");
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("should get path", () => {
|
|
25
|
-
expect(controllerProvider.path).toEqual("/");
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("should get children", () => {
|
|
29
|
-
expect(controllerProvider.children).toHaveLength(0);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it("should get a scope", () => {
|
|
33
|
-
expect(controllerProvider.scope).toEqual("request");
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it("should have children", () => {
|
|
37
|
-
expect(controllerProvider.hasChildren()).toEqual(false);
|
|
38
|
-
});
|
|
39
|
-
it("should get parent", () => {
|
|
40
|
-
expect(!!controllerProvider.parent).toBe(false);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("should have parent", () => {
|
|
44
|
-
expect(!!controllerProvider.hasParent()).toBe(false);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("should have a middlewares", () => {
|
|
48
|
-
expect(Array.isArray(controllerProvider.middlewares.use)).toBe(true);
|
|
49
|
-
expect(controllerProvider.middlewares.use![0]).toBeInstanceOf(Function);
|
|
50
|
-
expect(Array.isArray(controllerProvider.middlewares.useAfter)).toBe(true);
|
|
51
|
-
expect(controllerProvider.middlewares.useAfter![0]).toBeInstanceOf(Function);
|
|
52
|
-
expect(Array.isArray(controllerProvider.middlewares.useBefore)).toBe(true);
|
|
53
|
-
expect(controllerProvider.middlewares.useBefore![0]).toBeInstanceOf(Function);
|
|
54
|
-
});
|
|
55
|
-
});
|